Commit in lcsim/src/org/lcsim/recon/util on MAIN
RemoveUnusedTrackerHits.java+63added 1.1
Driver to remove all tracker hits that are not associated with a track

lcsim/src/org/lcsim/recon/util
RemoveUnusedTrackerHits.java added at 1.1
diff -N RemoveUnusedTrackerHits.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ RemoveUnusedTrackerHits.java	26 Jul 2012 17:31:01 -0000	1.1
@@ -0,0 +1,63 @@
+package org.lcsim.recon.util;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.Track;
+import org.lcsim.event.TrackerHit;
+import org.lcsim.util.Driver;
+
+/**
+ * Driver to filter and remove all tracker hits from a given track collection that
+ * did not contribute to any track. In addition, allows to clear the RawTrackerHit
+ * lists to allow writing out events without those collections.
+ * 
+ * @author <a href="mailto:[log in to unmask]">Christian Grefe</a>
+ * 
+ */
+public class RemoveUnusedTrackerHits extends Driver {
+
+	protected String trackHitCollection;
+	protected String trackCollection;
+	protected boolean clearRawTrackerHits;
+	
+	public RemoveUnusedTrackerHits() {
+		trackHitCollection = "HelicalTrackHits";
+		trackCollection = EventHeader.TRACKS;
+		clearRawTrackerHits = true;
+	}
+	
+	public void setTrackCollection(String trackCollection) {
+		this.trackCollection = trackCollection;
+	}
+	
+	public void setTrackHitCollection(String trackHitCollection) {
+		this.trackHitCollection = trackHitCollection;
+	}
+	
+	public void setClearRawTrackerHits(boolean clearRawTrackerHits) {
+		this.clearRawTrackerHits = clearRawTrackerHits;
+	}
+	
+	@Override
+	protected void process(EventHeader event) {
+		List<TrackerHit> trackerHits = event.get(TrackerHit.class, trackHitCollection);
+		List<Track> tracks = event.get(Track.class, trackCollection);
+		List<TrackerHit> unusedTrackerHits = new ArrayList<TrackerHit>();
+		unusedTrackerHits.addAll(trackerHits);
+		
+		for (Track track : tracks) {
+			unusedTrackerHits.removeAll(track.getTrackerHits());
+		}
+		
+		trackerHits.removeAll(unusedTrackerHits);
+		
+		if (clearRawTrackerHits) {
+			for (TrackerHit hit : trackerHits) {
+				hit.getRawHits().clear();
+			}
+		}
+	}
+	
+}
CVSspam 0.2.12


Use REPLY-ALL to reply to list

To unsubscribe from the LCD-CVS list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCD-CVS&A=1