Author: [log in to unmask] Date: Tue Jun 2 10:55:59 2015 New Revision: 3077 Log: Simple Driver to strip "golden" events for reconstruction monitoring Added: java/trunk/analysis/src/main/java/org/hps/analysis/examples/StripGoldenEventsDriver.java - copied, changed from r3074, java/trunk/analysis/src/main/java/org/hps/analysis/examples/StripEventDriver.java Copied: java/trunk/analysis/src/main/java/org/hps/analysis/examples/StripGoldenEventsDriver.java (from r3074, java/trunk/analysis/src/main/java/org/hps/analysis/examples/StripEventDriver.java) ============================================================================= --- java/trunk/analysis/src/main/java/org/hps/analysis/examples/StripEventDriver.java (original) +++ java/trunk/analysis/src/main/java/org/hps/analysis/examples/StripGoldenEventsDriver.java Tue Jun 2 10:55:59 2015 @@ -1,54 +1,61 @@ package org.hps.analysis.examples; import java.util.List; +import org.lcsim.event.Cluster; import org.lcsim.event.EventHeader; +import org.lcsim.event.ReconstructedParticle; import org.lcsim.event.Track; import org.lcsim.event.Vertex; import org.lcsim.util.Driver; /** - * + * Class to strip off "golden events" + * Currently defined as e+ e- with six-hit tracks and nothing else in the event * @author Norman A Graf * * @version $Id: */ -public class StripEventDriver extends Driver +public class StripGoldenEventsDriver extends Driver { - private int _minNumberOfTracks = 0; - private int _minNumberOfHitsOnTrack = 0; private int _numberOfEventsWritten = 0; - private int _minNumberOfUnconstrainedV0Vertices = 0; @Override protected void process(EventHeader event) { + // select "golden" events with two tracks, two clusters and e+ e- boolean skipEvent = false; - int nTracks = 0; - - if (event.hasCollection(Track.class, "MatchedTracks")) { - nTracks = event.get(Track.class, "MatchedTracks").size(); - if (nTracks >= _minNumberOfTracks) { - List<Track> tracks = event.get(Track.class, "MatchedTracks"); - for (Track t : tracks) { - int nhits = t.getTrackerHits().size(); - if (nhits < _minNumberOfHitsOnTrack) { + if (event.hasCollection(Vertex.class, "UnconstrainedV0Vertices")) { + List<ReconstructedParticle> vertices = event.get(ReconstructedParticle.class, "UnconstrainedV0Vertices"); + if (vertices.size() > 1 || vertices.isEmpty()) { + skipEvent = true; + } else { + ReconstructedParticle vtx = vertices.get(0); + //this always has 2 tracks. + List<ReconstructedParticle> rps = vtx.getParticles(); + for (ReconstructedParticle rp : rps) { + List<Track> trks = rp.getTracks(); + // require each track to have six hits + if (trks.get(0).getTrackerHits().size() != 6) { skipEvent = true; } } - } else { - skipEvent = true; + // require no other tracks in the event + if (event.get(Track.class, "MatchedTracks").size() > 2) { + skipEvent = true; + } + // require no other clusters in the event + if (event.get(Cluster.class, "EcalClusters").size() > 2) { + skipEvent = true; + } } - } - if (event.hasCollection(Vertex.class, "UnconstrainedV0Vertices")) { - int nVertices = event.get(Vertex.class, "UnconstrainedV0Vertices").size(); - if (nVertices < _minNumberOfUnconstrainedV0Vertices) { - skipEvent = true; - } + } else { + skipEvent = true; } if (skipEvent) { throw new Driver.NextEventException(); } else { + System.out.println(event.getRunNumber() + " " + event.getEventNumber()); _numberOfEventsWritten++; } } @@ -58,20 +65,4 @@ { System.out.println("Wrote " + _numberOfEventsWritten + " events"); } - - public void setMinNumberOfTracks(int nTracks) - { - _minNumberOfTracks = nTracks; - } - - public void setMinNumberOfHitsOnTrack(int nHits) - { - _minNumberOfHitsOnTrack = nHits; - } - - public void setMinNumberOfUnconstrainedV0Vertices(int nVertices) - { - _minNumberOfUnconstrainedV0Vertices = nVertices; - } - }