lcsim-contrib/src/main/java/org/lcsim/contrib/Cassell/recon
diff -N TrackMCParticleMatcher.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ TrackMCParticleMatcher.java 4 Oct 2010 13:30:22 -0000 1.1
@@ -0,0 +1,57 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+package org.lcsim.contrib.Cassell.recon;
+import org.lcsim.recon.pfa.identifier.*;
+import org.lcsim.event.LCRelation;
+import org.lcsim.event.MCParticle;
+import org.lcsim.event.Track;
+import org.lcsim.event.TrackerHit;
+import java.util.*;
+
+/**
+ *
+ * @author cassell
+ */
+public class TrackMCParticleMatcher
+{
+ List<LCRelation> lcrl;
+ public TrackMCParticleMatcher(List<LCRelation> rl)
+ {
+ lcrl = rl;
+ }
+ public MCParticle getMCParticle(Track t)
+ {
+ Map<MCParticle,Integer> counter = new HashMap<MCParticle,Integer>();
+ for(TrackerHit h:t.getTrackerHits())
+ {
+ for(LCRelation r:lcrl)
+ {
+ if((TrackerHit)(r.getFrom()) == h)
+ {
+ MCParticle p = (MCParticle)(r.getTo());
+ if(counter.containsKey(p))
+ {
+ int ic = counter.get(p) + 1;
+ counter.remove(p);
+ counter.put(p,ic);
+ }
+ else counter.put(p,1);
+ }
+ }
+ }
+ MCParticle maxmc = null;
+ int maxcnt = 0;
+ for(MCParticle p:counter.keySet())
+ {
+ if(counter.get(p) > maxcnt)
+ {
+ maxcnt = counter.get(p);
+ maxmc = p;
+ }
+ }
+ return maxmc;
+ }
+}
lcsim-contrib/src/main/java/org/lcsim/contrib/Cassell/recon
diff -N TrackMCParticleDriver.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ TrackMCParticleDriver.java 4 Oct 2010 13:30:22 -0000 1.1
@@ -0,0 +1,41 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+package org.lcsim.contrib.Cassell.recon;
+import org.lcsim.recon.pfa.identifier.*;
+import org.lcsim.event.LCRelation;
+import org.lcsim.util.Driver;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.Track;
+import org.lcsim.event.MCParticle;
+import java.util.*;
+
+/**
+ *
+ * @author cassell
+ */
+public class TrackMCParticleDriver extends Driver
+{
+ Map<Track,MCParticle> tmcmap;
+ public TrackMCParticleDriver()
+ {
+
+ }
+ protected void process(EventHeader event)
+ {
+ List<Track> tl = event.get(Track.class,"Tracks");
+ List<LCRelation> rl = event.get(LCRelation.class,"HelicalTrackMCRelations");
+ TrackMCParticleMatcher m = new TrackMCParticleMatcher(rl);
+ tmcmap = new HashMap<Track,MCParticle>();
+ for(Track t:tl)
+ {
+ tmcmap.put(t, m.getMCParticle(t));
+ }
+ }
+ public MCParticle getMCParticle(Track t)
+ {
+ return tmcmap.get(t);
+ }
+}