lcsim/src/org/lcsim/contrib/Cassell/recon/Cheat
diff -N AddSmearing.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ AddSmearing.java 26 Nov 2007 19:40:44 -0000 1.1
@@ -0,0 +1,80 @@
+/*
+ * AddSmearing.java
+ *
+ * Created on November 26, 2007, 9:31 AM
+ *
+ * To change this template, choose Tools | Options and locate the template under
+ * the Source Creation and Management node. Right-click the template and choose
+ * Open. You can then make changes to the template in the Source Editor.
+ */
+
+package org.lcsim.contrib.Cassell.recon.Cheat;
+import org.lcsim.event.EventHeader;
+import org.lcsim.util.Driver;
+import org.lcsim.event.MCParticle;
+import org.lcsim.event.Track;
+import org.lcsim.event.base.BaseTrackMC;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import org.lcsim.mc.fast.tracking.ReconTrack;
+import hep.physics.vec.Hep3Vector;
+import hep.physics.vec.BasicHep3Vector;
+import org.lcsim.util.lcio.LCIOConstants;
+
+/**
+ *
+ * @author cassell
+ */
+public class AddSmearing extends Driver
+{
+ String inTracks;
+ String smearedTracks;
+ String outTracks;
+ private static final Hep3Vector origin = new BasicHep3Vector();
+
+ /** Creates a new instance of AddSmearing */
+ public AddSmearing(String in, String smear, String out)
+ {
+ inTracks = in;
+ smearedTracks = smear;
+ outTracks = out;
+ }
+ public void process(EventHeader event)
+ {
+ double bField = event.getDetector().getFieldMap().getField(origin).z();
+ List<Track> inl = event.get(Track.class,inTracks);
+ List<Track> sml = event.get(Track.class,smearedTracks);
+ List<Track> outl = new ArrayList<Track>();
+ Map<MCParticle,ReconTrack> tm = new HashMap<MCParticle,ReconTrack>();
+ for(Track t:sml)
+ {
+ ReconTrack rt = (ReconTrack) t;
+ MCParticle p = (MCParticle) rt.getMCParticle();
+ tm.put(p,rt);
+ }
+ for(Track t:inl)
+ {
+ BaseTrackMC bt = (BaseTrackMC) t;
+ MCParticle p = bt.getMCParticle();
+ if(tm.containsKey(p))
+ {
+ ReconTrack smt = tm.get(p);
+ BaseTrackMC rc = new BaseTrackMC(p);
+ rc.setCovarianceMatrix(smt.getErrorMatrix());
+ rc.setTrackParameters(smt.getTrackParameters(), bField);
+ rc.setChisq(smt.getChi2());
+ rc.setNDF(smt.getNDF());
+ rc.setFitSuccess(true);
+ rc.setRefPointIsDCA(true);
+ rc.setTrackType(smt.getType());
+ rc.addHits(bt.getTrackerHits());
+ outl.add(rc);
+ }
+ }
+ int flag = (1<<LCIOConstants.TRBIT_HITS);
+ event.put(outTracks,outl,Track.class,flag);
+ }
+
+}
lcsim/src/org/lcsim/contrib/Cassell/recon/Cheat
diff -u -r1.7 -r1.8
--- CheatReconDriver.java 26 Nov 2007 02:34:31 -0000 1.7
+++ CheatReconDriver.java 26 Nov 2007 19:40:44 -0000 1.8
@@ -46,6 +46,8 @@
private AIDA aida = AIDA.defaultInstance();
String inFSname = "GenFinalStateParticles";
String inTname = "RefinedCheatTracks";
+ String tempTname = "TempCheatTracks";
+ String tempPname = "TempCheatParticles";
String inCname = "RefinedCheatClusters";
String outRname;
String outVRname;
@@ -91,16 +93,20 @@
cfs.setCollectionName(inFSname);
add(cfs);
//
+// Make cheating TrackerHit Clusters
+//
+ add(new CheatTrackDriver(tempTname, tempPname));
+//
// Make FastMC smeared tracks
//
MCFastTracking mcft = new MCFastTracking();
- //mcft.setFSList("MCParticle"); // This does nothing except make MCFastTracking break in a confusing way, so I commented it out -- Mat.
+ mcft.setFSList(tempPname);
mcft.setOutputList(outFastMC);
add(mcft);
//
-// Make cheating TrackerHit Clusters
+// Add smearing and error matrix to tracks
//
- add(new CheatTrackDriver(inTname,outFastMC));
+ add(new AddSmearing(tempTname,outFastMC,inTname));
//
// Make CalorimeterHit Cheat Clusters
//