Author: [log in to unmask]
Date: Thu Sep 3 12:29:41 2015
New Revision: 3511
Log:
Example analysis Driver showing how to use SVT track collections and how to filter out unwanted ones.
Added:
java/trunk/analysis/src/main/java/org/hps/analysis/examples/SvtTrackAnalysis.java (with props)
Added: java/trunk/analysis/src/main/java/org/hps/analysis/examples/SvtTrackAnalysis.java
=============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/examples/SvtTrackAnalysis.java (added)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/examples/SvtTrackAnalysis.java Thu Sep 3 12:29:41 2015
@@ -0,0 +1,89 @@
+package org.hps.analysis.examples;
+
+import java.util.List;
+
+import org.hps.recon.tracking.StrategyType;
+import org.hps.recon.tracking.TrackType;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.Track;
+import org.lcsim.util.Driver;
+
+/**
+ * Example analysis {@link Driver} showing how to use SVT track collections
+ * and how to filter out unwanted ones.
+ *
+ * @author <a href="mailto:[log in to unmask]">Omar Moreno</a>
+ */
+public class SvtTrackAnalysis extends Driver {
+
+ // Collections
+ private String matchedTracksColName = "MatchedTracks";
+ private String tracksS456ColName = "Tracks_s345_c2_e16";
+ private String tracksS123C4ColName = "Tracks_s123_c4_e56";
+ private String tracksS123C5ColName = "Tracks_s123_c5_e46";
+
+ @Override
+ public void process(EventHeader event) {
+
+ // Check if an event has a specific collection and if it doesn't,
+ // skip it The default track collection is still "MatchedTracks"
+ // and refers to tracks found using the strategy seed 345,
+ // confirm 2, extend 16.
+ if (!event.hasCollection(Track.class, matchedTracksColName)) return;
+
+ // Once the collection has been confirmed to exist in the event,
+ // you can retrieve a reference to the collection from the event
+ // as follows.
+ List<Track> tracks = event.get(Track.class, matchedTracksColName);
+
+ // The track collection can be iterated over and each track can
+ // then be analyzed
+ for (Track track : tracks) {
+ // Analysis Code goes here ...
+ }
+
+ // The other collections can be retrieved in a similar manner
+
+ if (!event.hasCollection(Track.class, tracksS456ColName)) return;
+ tracks = event.get(Track.class, tracksS456ColName);
+
+ // Analysis goes here ...
+
+ if (!event.hasCollection(Track.class, tracksS123C4ColName)) return;
+ tracks = event.get(Track.class, tracksS123C4ColName);
+
+ // Analysis goes here ...
+
+ if (!event.hasCollection(Track.class, tracksS123C5ColName)) return;
+ tracks = event.get(Track.class, tracksS123C5ColName);
+
+ // Analysis goes here ...
+
+ //
+ // If looking at all track collections, a filter can be used to look
+ // at only specific tracks
+ //
+
+ // Check if the event has a LCIO Track collection to begin
+ if (!event.hasCollection(Track.class));
+
+ // Get all LCIO Track collections from an event
+ List<List<Track>> trackCollections = event.get(Track.class);
+
+ // Iterate over all track collections
+ for (List<Track> trackCollection : trackCollections) {
+
+ // Check if the collection has tracks. If it does not, skip it.
+ if (trackCollection.isEmpty()) continue;
+
+ // Use the track type to check if the tracks are from the
+ // collections of interest
+
+ if (TrackType.getType(StrategyType.MATCHED_TRACKS) != trackCollection.get(0).getType()) continue;
+
+ for (Track track : trackCollection) {
+ // Analysis code goes here ...
+ }
+ }
+ }
+}
|