Print

Print


Author: [log in to unmask]
Date: Wed Jun  3 18:30:36 2015
New Revision: 3085

Log:
discard tracks with uncorrected hits

Modified:
    java/trunk/tracking/src/main/java/org/hps/recon/tracking/TrackerReconDriver.java

Modified: java/trunk/tracking/src/main/java/org/hps/recon/tracking/TrackerReconDriver.java
 =============================================================================
--- java/trunk/tracking/src/main/java/org/hps/recon/tracking/TrackerReconDriver.java	(original)
+++ java/trunk/tracking/src/main/java/org/hps/recon/tracking/TrackerReconDriver.java	Wed Jun  3 18:30:36 2015
@@ -2,11 +2,12 @@
 
 import hep.physics.vec.BasicHep3Vector;
 import hep.physics.vec.Hep3Vector;
-
+import hep.physics.vec.VecOp;
+import java.util.Iterator;
 import java.util.List;
-
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.Track;
+import org.lcsim.event.TrackerHit;
 import org.lcsim.event.base.BaseTrack;
 import org.lcsim.fit.helicaltrack.HelicalTrackHit;
 import org.lcsim.geometry.Detector;
@@ -192,6 +193,23 @@
 
         // Set the type of track to indicate B-field in Y e.g. for swimming in Wired.
         List<Track> tracks = event.get(Track.class, trackCollectionName);
+        Iterator<Track> iter = tracks.iterator();
+        while (iter.hasNext()) {
+            Track track = iter.next();
+            boolean badTrack = false;
+            for (TrackerHit hit : track.getTrackerHits()) {
+                HelicalTrackHit hth = (HelicalTrackHit) hit;
+                double correction = VecOp.sub(hth.getCorrectedPosition(), new BasicHep3Vector(hth.getPosition())).magnitude();
+                double chisq = hth.chisq();
+                if (correction < 1e-6) {
+                    this.getLogger().warning(String.format("Bad HelicalTrackHit on track (correction distance %f, chisq penalty %f) - discarding track\n", correction, chisq));
+                    badTrack = true;
+                }
+            }
+            if (badTrack) {
+                iter.remove();
+            }
+        }
         setTrackType(tracks);
 
         // Increment number of events.