Print

Print


Author: [log in to unmask]
Date: Wed Nov  9 10:05:02 2016
New Revision: 4565

Log:
Driver to strip MC WAB conversions in the tracker

Added:
    java/trunk/analysis/src/main/java/org/hps/analysis/wab/
    java/trunk/analysis/src/main/java/org/hps/analysis/wab/StripMcWabConversionDriver.java

Added: java/trunk/analysis/src/main/java/org/hps/analysis/wab/StripMcWabConversionDriver.java
 =============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/wab/StripMcWabConversionDriver.java	(added)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/wab/StripMcWabConversionDriver.java	Wed Nov  9 10:05:02 2016
@@ -0,0 +1,53 @@
+package org.hps.analysis.wab;
+
+import java.util.List;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.MCParticle;
+import org.lcsim.event.MCParticle.SimulatorStatus;
+import org.lcsim.util.Driver;
+
+/**
+ * Driver to select events in which the bremsstrahlung photon has converted in
+ * the tracker. Input files should be WAB events, i.e. events with just the
+ * incoming electron as particle 0 and the photon as particle 1
+ *
+ * @author Norman A Graf
+ *
+ * @version $Id:
+ */
+public class StripMcWabConversionDriver extends Driver
+{
+
+    private int _numberOfEventsWritten = 0;
+    private int _numberOfEventsRead = 0;
+
+    protected void process(EventHeader event)
+    {
+        _numberOfEventsRead++;
+        boolean skipEvent = true;
+        List<MCParticle> mclist = event.getMCParticles();
+        //
+        // HPS Wide angle bremsstrahlung events list the electron first, followed by the bremsstrahlung photon.
+        // If that changes, so will the next line.
+        // TODO add some selection code here to recognize MC WAB events in mixed files.
+        // assert that particle 0 is electron, particle 1 is photon
+        // assert that sum of particle 0 and 1 has the beam energy and is directed along the beam direction
+        //
+        MCParticle brem = mclist.get(1);
+        SimulatorStatus stat = brem.getSimulatorStatus();
+        // select events in which the photon converted in the tracker
+        if (stat.isDecayedInTracker()) {
+            skipEvent = false;
+        }
+        if (skipEvent) {
+            throw new Driver.NextEventException();
+        } else {
+            _numberOfEventsWritten++;
+        }
+    }
+
+    protected void endOfData()
+    {
+        System.out.println("Wrote " + _numberOfEventsWritten + " events of " + _numberOfEventsRead + " read.");
+    }
+}