Commit in lcsim/src/org/lcsim/recon/tracking/cheat on MAIN
CheatTrackDriver.java+63added 1.1
CheatTracker.java+70added 1.1
+133
2 added files
Simple Tracking Cheater

lcsim/src/org/lcsim/recon/tracking/cheat
CheatTrackDriver.java added at 1.1
diff -N CheatTrackDriver.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ CheatTrackDriver.java	15 Feb 2007 18:29:51 -0000	1.1
@@ -0,0 +1,63 @@
+/*
+ * CheatTrackDriver.java
+ *
+ * Created on February 9, 2007, 11:17 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.recon.tracking.cheat;
+import org.lcsim.util.Driver;
+import org.lcsim.util.lcio.LCIOConstants;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.MCParticle;
+import org.lcsim.event.base.*;
+import org.lcsim.event.SimTrackerHit;
+
+/**
+ *
+ * @author cassell
+ */
+public class CheatTrackDriver extends Driver
+{
+    private final CheatTracker _tracker = new CheatTracker();
+    
+    /** Creates a new instance of CheatTrackDriver */
+    public CheatTrackDriver()
+    {
+    }
+
+    protected void process(EventHeader event)
+    {
+        List<List<SimTrackerHit>> collections = event.get(SimTrackerHit.class);
+        for (List<SimTrackerHit> collection : collections)
+        {
+            List<BaseTrackerHitMC> result = _tracker.createTrackerHits(collection);
+            
+            String name = event.getMetaData(collection).getName();
+            if (result.size() > 0) event.put(name+"CheatTrackerHits", result, BaseTrackerHitMC.class, 0);
+            Map<MCParticle,BaseTrackMC> result2 = _tracker.createTracks(result);
+            int flag = (1<<LCIOConstants.TRBIT_HITS);
+            if (result2.size() > 0) event.put(name+"CheatTracks", new ArrayList(result2.values()), BaseTrackMC.class, flag);
+        }
+
+        List<List<BaseTrackMC>> tracks = event.get(BaseTrackMC.class);
+        Map<MCParticle, BaseTrackMC> refined = _tracker.findRefinedTracks(tracks);
+        if (refined.size() > 0) 
+        {
+            int flag = 1<<LCIOConstants.TRBIT_HITS;
+            event.put("RefinedCheatTracks", new ArrayList(refined.values()), BaseTrackMC.class, flag );
+       }
+    }
+
+    public String toString()
+    {
+        return "CheatTrackDriver";
+    }
+    
+}

lcsim/src/org/lcsim/recon/tracking/cheat
CheatTracker.java added at 1.1
diff -N CheatTracker.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ CheatTracker.java	15 Feb 2007 18:29:51 -0000	1.1
@@ -0,0 +1,70 @@
+/*
+ * CheatTracker.java
+ *
+ * Created on February 9, 2007, 10:53 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.recon.tracking.cheat;
+import org.lcsim.event.SimTrackerHit;
+import org.lcsim.event.MCParticle;
+import org.lcsim.event.base.*;
+import java.util.HashMap;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+
+/**
+ *
+ * @author cassell
+ */
+public class CheatTracker
+{
+
+    double[] cov = new double[6];
+    /** Creates a new instance of CheatTracker */
+    public CheatTracker()
+    {
+    }
+    public Map<MCParticle,BaseTrackMC> createTracks(List<BaseTrackerHitMC> l)
+    {
+        Map<MCParticle,BaseTrackMC> map = new HashMap<MCParticle,BaseTrackMC>();
+        for(BaseTrackerHitMC h:l)
+        {
+            MCParticle p = h.mcParticles().get(0);
+            BaseTrackMC cl = map.get(p);
+            if(cl == null)map.put(p,cl = new BaseTrackMC(p));
+            cl.addHit(h);
+        }
+        return map;
+    }
+    public List<BaseTrackerHitMC> createTrackerHits(List<SimTrackerHit> l)
+    {
+        List<BaseTrackerHitMC> out = new ArrayList<BaseTrackerHitMC>();
+        for(SimTrackerHit h:l)
+        {
+            BaseTrackerHitMC oh = new BaseTrackerHitMC(h.getPoint(),cov,h.getTime(),h.getdEdx(),0,h.getMCParticle());
+            out.add(oh);
+        }
+        return out;
+    }
+    public Map<MCParticle, BaseTrackMC> findRefinedTracks(List<List<BaseTrackMC>> collections)
+    {
+        Map<MCParticle, BaseTrackMC> result = new HashMap<MCParticle,BaseTrackMC>();
+        for (List<BaseTrackMC> clusters : collections)
+        {
+            for (BaseTrackMC cluster : clusters)
+            {
+                MCParticle p = cluster.getMCParticle();
+                BaseTrackMC rc = result.get(p);
+                if (rc == null) result.put(p,rc = new BaseTrackMC(p));
+                rc.addHits(cluster.getTrackerHits());
+            }
+        }
+        return result;
+    }
+    
+}
CVSspam 0.2.8