lcsim/src/org/lcsim/contrib/Cassell/recon/Cheat
diff -N TraceOrigin.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ TraceOrigin.java 13 Sep 2007 14:33:43 -0000 1.1
@@ -0,0 +1,38 @@
+package org.lcsim.contrib.Cassell.recon.Cheat;
+import java.util.*;
+import org.lcsim.event.MCParticle;
+
+/**
+ * Trace the origin of a MCParticle to a Final state MCParticle
+ *
+ * Ron Cassell
+ */
+public class TraceOrigin
+{
+ List<MCParticle> fs;
+ public TraceOrigin(List<MCParticle> fsp)
+ {
+ fs = fsp;
+ }
+ public MCParticle traceit(MCParticle p)
+ {
+ MCParticle rp = null;
+//
+// If the particle is in the final state list, we're done
+//
+ if(fs.contains(p))return p;
+//
+// If not, check its parent. No need to go farther than single parent case
+//
+ MCParticle pp = p;
+ while( pp.getParents().size() == 1)
+ {
+ pp = pp.getParents().get(0);
+ if(fs.contains(pp))return pp;
+ }
+//
+// Didn't find one, return null
+//
+ return rp;
+ }
+}