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