Print

Print


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;
-    }
-
 }