lcsim-contrib/src/main/java/org/lcsim/contrib/SteveMagill
diff -N MCFSTrackDriver.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ MCFSTrackDriver.java 12 Aug 2009 20:34:36 -0000 1.1
@@ -0,0 +1,64 @@
+package org.lcsim.contrib.SteveMagill;
+
+import java.util.*;
+import org.lcsim.event.EventHeader;
+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 MCFSTrackDriver extends Driver
+{
+
+ private String _tracknames;
+ private String _fsnames;
+// private String outputListName = ("MCTestTracks");
+
+ public MCFSTrackDriver()
+ {
+
+ }
+
+ public void process(EventHeader event)
+ {
+ // Start from the MCParticle list and check for charge status
+ List<MCParticle> mcps = event.get(MCParticle.class,_fsnames);
+ List<PerfectTrack> perftrks = new ArrayList<PerfectTrack>();
+ Map<MCParticle,PerfectTrack> result = new HashMap<MCParticle,PerfectTrack>();
+ Map<PerfectTrack,SpacePoint> TrepSP = new HashMap<PerfectTrack,SpacePoint>();
+ for (MCParticle mcp : mcps)
+ {
+ int pch = (int) mcp.getCharge();
+// System.out.println("Particle charge = " + pch);
+ if (pch != 0)
+ {
+ PerfectTrack perftrk = result.get(mcp);
+ if (perftrk == null) result.put(mcp, perftrk = new PerfectTrack(mcp));
+ perftrks.add(perftrk);
+ Hep3Vector trendp = mcp.getEndPoint();
+ SpacePoint endpsp = new SpacePoint(trendp);
+ TrepSP.put(perftrk, endpsp);
+ }
+ }
+ event.put(_tracknames,perftrks);
+ event.put("MCPTrMap",result);
+ event.put("TrackEndPointSP",TrepSP);
+// event.put(outputListName, perftrks, Track.class, 0);
+ }
+
+ public void setMCFSNames(String fsnames)
+ {
+ _fsnames = fsnames;
+ }
+ public void setTrackNames(String tnames)
+ {
+ _tracknames = tnames;
+ }
+}