Print

Print


Author: [log in to unmask]
Date: Thu Jul 30 12:23:03 2015
New Revision: 3311

Log:
Relax restriction on only one ReconstructedParticle per event.

Modified:
    java/trunk/analysis/src/main/java/org/hps/analysis/examples/StripSingleFeeDriver.java

Modified: java/trunk/analysis/src/main/java/org/hps/analysis/examples/StripSingleFeeDriver.java
 =============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/examples/StripSingleFeeDriver.java	(original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/examples/StripSingleFeeDriver.java	Thu Jul 30 12:23:03 2015
@@ -6,11 +6,12 @@
 import org.lcsim.util.Driver;
 
 /**
- * Simple Driver to select events containing only one Full Energy Electron
+ * Simple Driver to select events containing a clean Full Energy Electron
  * (FEE). This is defined as one ReconstructedParticle which has been identified
  * as an electron and has an energy equal to or greater than the energyCut
  * (default is 0.85) and a track which has greater than or equal the
- * numberOfHitsOnTrack (default is 6).
+ * numberOfHitsOnTrack (default is 6). By default, only one ReconstructedParticle
+ * is allowed per event.
  *
  * @author Norman A Graf
  *
@@ -21,7 +22,8 @@
 
     private double _energyCut = 0.85;
     private int _nHitsOnTrack = 6;
-    
+    private int _nReconstructedParticles = 1;
+
     private int _numberOfEventsWritten = 0;
 
     /**
@@ -33,14 +35,15 @@
     {
         boolean skipEvent = true;
         List<ReconstructedParticle> rps = event.get(ReconstructedParticle.class, "FinalStateParticles");
-        if (rps.size() == 1) {
-            ReconstructedParticle rp = rps.get(0);
-            double energy = rp.getEnergy();
-            int pdgId = rp.getParticleIDUsed().getPDG();
-            if (pdgId == 11) {
-                if (energy >= _energyCut && rp.getTracks().get(0).getTrackerHits().size() >= _nHitsOnTrack) // electron
-                {
-                    skipEvent = false;
+        if (rps.size() <= _nReconstructedParticles) {
+            for (ReconstructedParticle rp : rps) {
+                double energy = rp.getEnergy();
+                int pdgId = rp.getParticleIDUsed().getPDG();
+                if (pdgId == 11) {
+                    if (energy >= _energyCut && rp.getTracks().get(0).getTrackerHits().size() >= _nHitsOnTrack) // electron
+                    {
+                        skipEvent = false;
+                    }
                 }
             }
         }
@@ -71,10 +74,19 @@
         _nHitsOnTrack = cut;
     }
     
+    /**
+     * Events having more than the number of ReconstructedParticles will be rejected.
+     * @param cut
+     */
+    public void setNumberOfReconstructedParticles(int cut)
+    {
+      _nReconstructedParticles = cut;  
+    }
+
     @Override
     protected void endOfData()
     {
         System.out.println("Wrote " + _numberOfEventsWritten + " events");
-    }    
+    }
 
 }