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.
|