lcsim-contrib/src/main/java/org/lcsim/contrib/SteveMagill
diff -N MCTrPropertyDriver.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ MCTrPropertyDriver.java 12 Aug 2009 18:29:56 -0000 1.1
@@ -0,0 +1,68 @@
+package org.lcsim.contrib.SteveMagill;
+
+import java.util.*;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.LCRelation;
+import org.lcsim.util.Driver;
+import org.lcsim.event.MCParticle;
+import hep.physics.vec.Hep3Vector;
+import org.lcsim.event.Track;
+import org.lcsim.event.base.*;
+import org.lcsim.event.ReconstructedParticle;
+import org.lcsim.spacegeom.*;
+
+/**
+ * Defines tracks from MC final states
+ */
+
+public class MCTrPropertyDriver extends Driver
+{
+
+ private String _fsname;
+ private String _tname;
+
+ public MCTrPropertyDriver()
+ {
+
+ }
+
+ public void process(EventHeader event)
+ {
+ // Use LCRelation formed by FastTracking code
+ List<LCRelation> trmc = event.get(LCRelation.class,_fsname);
+ List<Track> tl = event.get(Track.class,_tname);
+ Map<MCParticle,Track> result = new HashMap<MCParticle,Track>();
+ Map<Track,SpacePoint> TrepSP = new HashMap<Track,SpacePoint>();
+ for (Track t : tl)
+ {
+ MCParticle mcp = null;
+ for (LCRelation r : trmc)
+ {
+ if (r.getFrom() == t)
+ {
+ mcp = (MCParticle) r.getTo();
+ int pch = (int) mcp.getCharge();
+ System.out.println("Particle charge = " + pch);
+ Hep3Vector trendp = mcp.getEndPoint();
+ SpacePoint endpsp = new SpacePoint(trendp);
+ TrepSP.put(t, endpsp);
+ result.put(mcp, t);
+ }
+ }
+ }
+ event.put("MCPTrMap",result);
+ event.put("TrackEndPointSP",TrepSP);
+ }
+
+ public void setTrMCRelationName(String fsname)
+ {
+ _fsname = fsname;
+ }
+
+ public void setTrackName(String tname)
+ {
+ _tname = tname;
+ }
+
+
+}