Commit in lcsim/src/org/lcsim/contrib/Cassell/recon/Cheat on MAIN
CheatReconDriver.java+10-11.5 -> 1.6
PPRParticleDriver.java+29-11.5 -> 1.6
PPRReconParticleConstructor.java+18-21.4 -> 1.5
+57-4
3 modified files
Add smearing and error matrix to the tracks

lcsim/src/org/lcsim/contrib/Cassell/recon/Cheat
CheatReconDriver.java 1.5 -> 1.6
diff -u -r1.5 -r1.6
--- CheatReconDriver.java	8 Nov 2007 23:18:22 -0000	1.5
+++ CheatReconDriver.java	20 Nov 2007 16:34:49 -0000	1.6
@@ -28,6 +28,7 @@
 import org.lcsim.geometry.Detector;
 import org.lcsim.geometry.compact.Subdetector;
 import org.lcsim.detector.solids.Tube;
+import org.lcsim.mc.fast.tracking.MCFastTracking;
 import java.util.HashMap;
 import java.util.List;
 import java.util.ArrayList;
@@ -55,6 +56,7 @@
     String outTname;
     String outFSTname;
     String outCname;
+    String outFastMC = "FastMCTracks";
     String[] diginames = {"EcalBarrDigiHits", "EcalEndcapDigiHits","HcalBarrDigiHits", "HcalEndcapDigiHits"};
 //
 //  Default parameters for defining "trackable" track
@@ -89,9 +91,16 @@
         cfs.setCollectionName(inFSname);
         add(cfs);
 //
+//     Make FastMC smeared tracks
+//
+        MCFastTracking mcft = new MCFastTracking();
+        mcft.setFSList("MCParticle");
+        mcft.setOutputList(outFastMC);
+        add(mcft);
+//
 //     Make cheating TrackerHit Clusters
 //
-        add(new CheatTrackDriver(inTname));
+        add(new CheatTrackDriver(inTname,outFastMC));
 //
 //     Make CalorimeterHit Cheat Clusters
 //

lcsim/src/org/lcsim/contrib/Cassell/recon/Cheat
PPRParticleDriver.java 1.5 -> 1.6
diff -u -r1.5 -r1.6
--- PPRParticleDriver.java	16 Oct 2007 18:19:08 -0000	1.5
+++ PPRParticleDriver.java	20 Nov 2007 16:34:49 -0000	1.6
@@ -13,9 +13,13 @@
 import org.lcsim.util.Driver;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.HashMap;
 import org.lcsim.event.EventHeader;
+import org.lcsim.event.Track;
 import org.lcsim.event.ReconstructedParticle;
 import org.lcsim.event.base.MCReconstructedParticle;
+import org.lcsim.mc.fast.tracking.ReconTrack;
 
 /**
  *
@@ -30,6 +34,7 @@
     int minThits = 3;
     int minChits = 3;
     PPRReconParticleConstructor crpc;
+    String fastMC = "FastMCTracks";
     /** Creates a new instance of PPRParticleDriver */
     public PPRParticleDriver(String in,String out)
     {
@@ -61,9 +66,32 @@
         crpc = new PPRReconParticleConstructor();
         crpc.setMinTrackerHits(minThits);
         crpc.setMinCalorimeterHits(minChits);
+        Map<MCParticle,ReconTrack> rtl = null;
+        List<List<Track>> all = event.get(Track.class);
+        for(List<Track> tl:all)
+        {
+            if(event.getMetaData(tl).getName().compareTo(fastMC) == 0)
+            {
+                rtl = new HashMap<MCParticle,ReconTrack>();
+                for(Track t:tl)
+                {
+                    ReconTrack rt = (ReconTrack) t;
+                    MCParticle pp = (MCParticle) rt.getMCParticle();
+                    rtl.put(pp,rt);
+                }
+            }
+        }
         for(MCReconstructedParticle p:rl)
         {
-            ReconstructedParticle rp = crpc.makeReconParticle(p.getMCParticle(),p.getClusters(),p.getTracks());
+            ReconTrack rt = null;
+            if(rtl != null)
+            {
+                if(rtl.containsKey(p.getMCParticle()))
+                {
+                    rt = rtl.get(p.getMCParticle());
+                }
+            }
+            ReconstructedParticle rp = crpc.makeReconParticle(p.getMCParticle(),p.getClusters(),p.getTracks(),rt);
             if(rp.getEnergy() > 0.)
             {
                 rp.addParticle(p);

lcsim/src/org/lcsim/contrib/Cassell/recon/Cheat
PPRReconParticleConstructor.java 1.4 -> 1.5
diff -u -r1.4 -r1.5
--- PPRReconParticleConstructor.java	16 Oct 2007 18:19:08 -0000	1.4
+++ PPRReconParticleConstructor.java	20 Nov 2007 16:34:49 -0000	1.5
@@ -21,6 +21,7 @@
 import org.lcsim.recon.cluster.util.Clusterer;
 import org.lcsim.recon.cluster.util.DetailedNeutralHadronClusterEnergyCalculator;
 import org.lcsim.recon.cluster.util.PhotonClusterEnergyCalculator;
+import org.lcsim.mc.fast.tracking.ReconTrack;
 
 /**
  *
@@ -54,6 +55,11 @@
     public ReconstructedParticle makeReconParticle(
         MCParticle p,List<Cluster> lc,List<Track> lt)
     {
+        return makeReconParticle(p,lc,lt,null);
+    }
+    public ReconstructedParticle makeReconParticle(
+        MCParticle p,List<Cluster> lc,List<Track> lt,ReconTrack rt)
+    {
         if(scalc == null)scalc = new PhotonClusterEnergyCalculator();
         if(calc == null)calc = new DetailedNeutralHadronClusterEnergyCalculator();
         double E = 0.;
@@ -79,12 +85,22 @@
             }
             if(nthits >= minTrkhits)
             {
-                mom = p.getMomentum();
+                Hep3Vector ref;
+                if(rt == null)
+                {
+                    mom = p.getMomentum();
+                    ref = p.getOrigin();
+                }
+                else
+                {
+                    mom = rt.getDocaMomentumVec(p.getOrigin());
+                    ref = rt.getDocaPositionVec(p.getOrigin());
+                }
                 E = Math.sqrt(mom.magnitude()*mom.magnitude() + cmass*cmass);
                 BaseReconstructedParticle rp = new BaseReconstructedParticle(E,mom);
                 rp.setMass(cmass);
                 rp.setCharge(p.getCharge());
-                rp.setReferencePoint(p.getOrigin());
+                rp.setReferencePoint(ref);
                 ParticleID id = new CheatParticleID(p.getPDGID());
                 rp.setParticleIdUsed(id);
                 rp.addParticleID(id);
CVSspam 0.2.8