Commit in lcsim/src/org/lcsim/recon/tracking/cheat on MAIN
CheatTrackDriver.java+29-31.4 -> 1.5
CheatTracker.java+37-41.2 -> 1.3
+66-7
2 modified files
Add smearing and error matrix

lcsim/src/org/lcsim/recon/tracking/cheat
CheatTrackDriver.java 1.4 -> 1.5
diff -u -r1.4 -r1.5
--- CheatTrackDriver.java	16 Oct 2007 18:17:48 -0000	1.4
+++ CheatTrackDriver.java	20 Nov 2007 16:34:05 -0000	1.5
@@ -16,6 +16,7 @@
 import java.util.Map;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.MCParticle;
+import org.lcsim.event.Track;
 import org.lcsim.event.base.*;
 import org.lcsim.event.SimTrackerHit;
 import hep.physics.vec.BasicHep3Vector;
@@ -30,6 +31,8 @@
     private final CheatTracker _tracker = new CheatTracker();
     String outname;
     private static final Hep3Vector origin = new BasicHep3Vector();
+    private String MCFastTracks = null;
+    private boolean smeared = false;
     
     /** Creates a new instance of CheatTrackDriver */
     public CheatTrackDriver()
@@ -40,15 +43,36 @@
     {
         outname = name;
     }
+    public CheatTrackDriver(String name, String mcfast)
+    {
+        outname = name;
+        MCFastTracks = mcfast;
+        smeared = true;
+    }
     public void setOutputName(String name)
     {
         outname = name;
     }
+    public void setMCFastName(String name)
+    {
+        MCFastTracks = name;
+        smeared = true;
+    }
 
     protected void process(EventHeader event)
     {
         double bField = event.getDetector().getFieldMap().getField(origin).z();
+        List<Track> smearedlist = null;
+        if(smeared)
+        {
+            List<List<Track>> lists = event.get(Track.class);
+            for(List<Track> slist:lists)
+            {
+                if(event.getMetaData(slist).getName().compareTo(MCFastTracks) == 0)smearedlist = slist;
+            }
+        }
         List<List<SimTrackerHit>> collections = event.get(SimTrackerHit.class);
+        List<List<BaseTrackMC>> tracks = new ArrayList<List<BaseTrackMC>>();
         for (List<SimTrackerHit> collection : collections)
         {
            List<BaseTrackerHitMC> result = _tracker.createTrackerHits(collection);
@@ -56,12 +80,14 @@
             String name = event.getMetaData(collection).getName();
             event.put(name+"CheatTrackerHits", result, BaseTrackerHitMC.class, 0);
             Map<MCParticle,BaseTrackMC> result2 = _tracker.createTracks(bField,result);
+            List<BaseTrackMC> ol = new ArrayList(result2.values());
+            tracks.add(ol);
             int flag = (1<<LCIOConstants.TRBIT_HITS);
-            event.put(name+"CheatTracks", new ArrayList(result2.values()), BaseTrackMC.class, flag);
+            event.put(name+"CheatTracks", ol, BaseTrackMC.class, flag);
+            event.getMetaData(ol).setTransient(true);
         }
 
-        List<List<BaseTrackMC>> tracks = event.get(BaseTrackMC.class);
-        Map<MCParticle, BaseTrackMC> refined = _tracker.findRefinedTracks(bField,tracks);
+        Map<MCParticle, BaseTrackMC> refined = _tracker.findRefinedTracks(bField,tracks, smearedlist);
         int flag = 1<<LCIOConstants.TRBIT_HITS;
         event.put(outname, new ArrayList(refined.values()), BaseTrackMC.class, flag );
     }

lcsim/src/org/lcsim/recon/tracking/cheat
CheatTracker.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- CheatTracker.java	16 Oct 2007 18:17:48 -0000	1.2
+++ CheatTracker.java	20 Nov 2007 16:34:05 -0000	1.3
@@ -11,12 +11,14 @@
 package org.lcsim.recon.tracking.cheat;
 import org.lcsim.event.SimTrackerHit;
 import org.lcsim.event.MCParticle;
+import org.lcsim.event.Track;
 import org.lcsim.event.base.*;
 import java.util.HashMap;
 import java.util.List;
 import java.util.ArrayList;
 import java.util.Map;
 import org.lcsim.mc.fast.tracking.DocaTrackParameters;
+import org.lcsim.mc.fast.tracking.ReconTrack;
 
 /**
  *
@@ -57,8 +59,18 @@
         }
         return out;
     }
-    public Map<MCParticle, BaseTrackMC> findRefinedTracks(double B,List<List<BaseTrackMC>> collections)
+    public Map<MCParticle, BaseTrackMC> findRefinedTracks(double B,List<List<BaseTrackMC>> collections, List<Track> smeared)
     {
+        Map<MCParticle,ReconTrack> smearmap = new HashMap<MCParticle,ReconTrack>();
+        if(smeared != null)
+        {
+            for(Track t:smeared)
+            {
+                ReconTrack rt = (ReconTrack) t;
+                MCParticle tp = (MCParticle) rt.getMCParticle();
+                smearmap.put(tp,rt);
+            }
+        }
         Map<MCParticle, BaseTrackMC> result = new HashMap<MCParticle,BaseTrackMC>();
         for (List<BaseTrackMC> clusters : collections)
         {
@@ -68,10 +80,31 @@
                 BaseTrackMC rc = result.get(p);
                 if (rc == null)
                 {
-                    result.put(p,rc = new BaseTrackMC(p));
-                    rc.setTrackParameters(cluster.getTrackParameters(), B);
+                    if(smeared == null)
+                    {
+                        result.put(p,rc = new BaseTrackMC(p));
+                        rc.setTrackParameters(cluster.getTrackParameters(), B);
+                    }
+                    else
+                    {
+                        if(smearmap.containsKey(p))
+                        {
+                            result.put(p,rc = new BaseTrackMC(p));
+                            ReconTrack smt = smearmap.get(p);
+//                            double[] zzz = {0.,0.,0.};
+//                            double[] ref = {p.getOriginX(),p.getOriginY(),p.getOriginZ()};
+//                            rc.setReferencePoint(smt.getDocaPosition(ref));
+                            rc.setCovarianceMatrix(smt.getErrorMatrix());
+                            rc.setTrackParameters(smt.getTrackParameters(), B);
+                            rc.setChisq(smt.getChi2());
+                            rc.setNDF(smt.getNDF());
+                            rc.setFitSuccess(true);
+                            rc.setRefPointIsDCA(true);
+                            rc.setTrackType(smt.getType());
+                        }
+                    }
                 }
-                rc.addHits(cluster.getTrackerHits());
+                if(rc != null)rc.addHits(cluster.getTrackerHits());
             }
         }
         return result;
CVSspam 0.2.8