Print

Print


Author: [log in to unmask]
Date: Mon Nov  9 13:19:04 2015
New Revision: 3940

Log:
Added a simple driver to count the instances of each trigger type in a data file.

Added:
    java/trunk/users/src/main/java/org/hps/users/kmccarty/CountTriggersDriver.java

Added: java/trunk/users/src/main/java/org/hps/users/kmccarty/CountTriggersDriver.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/kmccarty/CountTriggersDriver.java	(added)
+++ java/trunk/users/src/main/java/org/hps/users/kmccarty/CountTriggersDriver.java	Mon Nov  9 13:19:04 2015
@@ -0,0 +1,79 @@
+package org.hps.users.kmccarty;
+
+import java.util.List;
+
+import org.hps.record.triggerbank.AbstractIntData;
+import org.hps.record.triggerbank.TIData;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.GenericObject;
+import org.lcsim.util.Driver;
+
+/**
+ * Class <code>CountTriggersDriver</code> counts the number times the
+ * TI trigger bit was active for each trigger type and outputs the
+ * result in text at the end of the data processing run.
+ * 
+ * @author Kyle McCarty <[log in to unmask]>
+ */
+public class CountTriggersDriver extends Driver {
+	// Store programmable parameters.
+	private String bankCollectionName = "TriggerBank";
+	
+	// Track the number of triggers seen for each trigger type.
+	private int[] triggers = new int[6];
+	private static final int PULSER   = 0;
+	private static final int SINGLES0 = 1;
+	private static final int SINGLES1 = 2;
+	private static final int PAIR0    = 3;
+	private static final int PAIR1    = 4;
+	private static final int COSMIC   = 5;
+	
+	/**
+	 * Outputs the total number of triggers seen for each trigger type.
+	 */
+	@Override
+	public void endOfData() {
+		System.out.println("Trigger Counts:");
+		System.out.printf("Singles 0 :: %d%n", triggers[SINGLES0]);
+		System.out.printf("Singles 1 :: %d%n", triggers[SINGLES1]);
+		System.out.printf("Pair 0    :: %d%n", triggers[PAIR0]);
+		System.out.printf("Pair 1    :: %d%n", triggers[PAIR1]);
+		System.out.printf("Pulser    :: %d%n", triggers[PULSER]);
+		System.out.printf("Cosmic    :: %d%n", triggers[COSMIC]);
+	}
+	
+	/**
+	 * Checks whether a trigger of each given type was seen by the TI
+	 * for each event and increments the total trigger count for that
+	 * type as appropriate.
+	 */
+	@Override
+	public void process(EventHeader event) {
+		// Extract the TI bank from the data stream.
+		TIData tiBank = null;
+		if(event.hasCollection(GenericObject.class, bankCollectionName)) {
+			// Get the bank list.
+			List<GenericObject> bankList = event.get(GenericObject.class, bankCollectionName);
+			
+			// Search through the banks and get the TI bank.
+			for(GenericObject obj : bankList) {
+				if(AbstractIntData.getTag(obj) == TIData.BANK_TAG) {
+					tiBank = new TIData(obj);
+				}
+			}
+		}
+		
+		// If there is no TI bank, the event can not be processed.
+		if(tiBank == null) {
+			return;
+		}
+		
+		// Otherwise, increment the relevant trigger counts.
+		if(tiBank.isPulserTrigger()) { triggers[PULSER]++; }
+		else if(tiBank.isSingle0Trigger()) { triggers[SINGLES0]++; }
+		else if(tiBank.isSingle1Trigger()) { triggers[SINGLES1]++; }
+		else if(tiBank.isPair0Trigger()) { triggers[PAIR0]++; }
+		else if(tiBank.isPair1Trigger()) { triggers[PAIR1]++; }
+		else if(tiBank.isCalibTrigger()) { triggers[COSMIC]++; }
+	}
+}