Commit in lcsim/src/org/lcsim/contrib/SteveMagill on MAIN
PerfectTrackDriver.java+71added 1.1


lcsim/src/org/lcsim/contrib/SteveMagill
PerfectTrackDriver.java added at 1.1
diff -N PerfectTrackDriver.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ PerfectTrackDriver.java	23 Apr 2007 20:03:33 -0000	1.1
@@ -0,0 +1,71 @@
+package org.lcsim.contrib.SteveMagill;
+
+import java.util.*;
+import org.lcsim.event.EventHeader;
+import org.lcsim.util.Driver;
+// import org.lcsim.event.Cluster;
+import org.lcsim.event.MCParticle;
+// import org.lcsim.event.CalorimeterHit;
+// import org.lcsim.event.SimCalorimeterHit;
+// import org.lcsim.recon.cluster.util.BasicCluster;
+//import org.lcsim.geometry.util.CalorimeterIDDecoder;
+// import hep.physics.vec.Hep3Vector;
+import org.lcsim.event.Track;
+// import org.lcsim.util.hitmap.HitMap;
+import org.lcsim.event.base.*;
+import org.lcsim.event.ReconstructedParticle;
+
+/**
+ *  Defines perfect particle flow objects - perfect charged particles, perfect photons and perfect neutral hadrons
+ */
+
+public class PerfectTrackDriver extends Driver
+{
+  public PerfectTrackDriver() 
+  {
+  }
+
+  private String _particlenames;
+  private String _tracknames;
+  
+  public void process(EventHeader event) 
+  {
+      //  Start from the MCReconstructedParticle list and check for charge status
+//      List<MCReconstructedParticle> mcrecps = event.get(MCReconstructedParticle.class, _particlenames);
+      List<ReconstructedParticle> recps = event.get(ReconstructedParticle.class, _particlenames);
+      List<PerfectTrack> perftrks = new ArrayList<PerfectTrack>();
+      Map<MCParticle,PerfectTrack> result = new HashMap<MCParticle,PerfectTrack>();
+//      for (MCReconstructedParticle mcrecp : mcrecps)
+      for (ReconstructedParticle recp : recps)
+      {
+          int pch = (int) recp.getCharge();
+//          System.out.println("Particle charge = " + pch);
+          if (pch != 0)
+          {
+              List<ReconstructedParticle> rppl = recp.getParticles();
+//              System.out.println("No of particles in this PP  = " + rppl.size());
+              if (rppl.size()>0)
+              {
+                  MCReconstructedParticle mcrp = (MCReconstructedParticle) rppl.get(0);
+                  MCParticle mcob = mcrp.getMCParticle();
+                  PerfectTrack perftrk = result.get(mcob);
+                  if (perftrk == null) result.put(mcob, perftrk = new PerfectTrack(mcob));
+                  perftrks.add(perftrk);
+              } else
+              {
+                  System.out.println("No MC Particles in Perfect Particle");
+              }
+          }
+      }
+      event.put(_tracknames,perftrks);
+  }
+
+  public void setParticleNames(String names)
+  {
+      _particlenames = names;
+  }
+  public void setTrackNames(String tnames)
+  {
+      _tracknames = tnames;
+  }
+}
CVSspam 0.2.8