Commit in lcsim/src/org/lcsim/contrib/Cassell/recon/Cheat on MAIN
AddSmearing.java+80added 1.1
CheatReconDriver.java+9-31.7 -> 1.8
+89-3
1 added + 1 modified, total 2 files
Restructure to avoid MCFast infinite loop

lcsim/src/org/lcsim/contrib/Cassell/recon/Cheat
AddSmearing.java added at 1.1
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
CheatReconDriver.java 1.7 -> 1.8
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
 //
CVSspam 0.2.8