lcsim/src/org/lcsim/recon/tracking/cheat
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
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;
+ }
+
+}