Author: [log in to unmask]
Date: Tue Nov 1 07:42:04 2016
New Revision: 4552
Log:
Driver used to filter out event by trigger type.
Added:
java/trunk/users/src/main/java/org/hps/users/omoreno/TriggerFilter.java (with props)
Added: java/trunk/users/src/main/java/org/hps/users/omoreno/TriggerFilter.java
=============================================================================
--- java/trunk/users/src/main/java/org/hps/users/omoreno/TriggerFilter.java (added)
+++ java/trunk/users/src/main/java/org/hps/users/omoreno/TriggerFilter.java Tue Nov 1 07:42:04 2016
@@ -0,0 +1,116 @@
+package org.hps.users.omoreno;
+
+import java.util.List;
+
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.GenericObject;
+import org.lcsim.util.Driver;
+
+import org.hps.record.triggerbank.AbstractIntData;
+import org.hps.record.triggerbank.TIData;
+
+/**
+ * An LCSim driver used to filter out events by trigger type.
+ *
+ * @author <a href="mailto:[log in to unmask]">Omar Moreno</a>
+ */
+public class TriggerFilter extends Driver {
+
+ //----------------------//
+ // Collection Names //
+ //----------------------//
+ private static final String TRIGGER_BANK_COL_NAME = "TriggerBank";
+
+ //-------------------//
+ // Trigger flags //
+ //-------------------//
+
+ private boolean enableTriggerFilter = false;
+ private boolean filterPulserTriggers = true;
+ private boolean filterSingle0Triggers = true;
+ private boolean filterSingle1Triggers = true;
+ private boolean filterPair0Triggers = true;
+ private boolean filterPair1Triggers = true;
+
+ protected boolean triggerFound = false;
+
+ /** Enable/disable filtering by trigger. */
+ public void setEnableTriggerFilter(boolean enableTriggerFilter) {
+ this.enableTriggerFilter = enableTriggerFilter;
+ }
+
+ /** Enable/disable filtering pulser triggers. */
+ public void setFilterPulserTriggers(boolean filterPulserTriggers) {
+ this.filterPulserTriggers = filterPulserTriggers;
+ }
+
+ /** Enable/disable filtering singles0 triggers. */
+ public void setFilterSingle0Triggers(boolean filterSingle0Triggers) {
+ this.filterSingle0Triggers = filterSingle0Triggers;
+ }
+
+ /** Enable/disable filtering of singles1 triggers. */
+ public void setFilterSingle1Triggers(boolean filterSingle1Triggers) {
+ this.filterSingle1Triggers = filterSingle1Triggers;
+ }
+
+ /** Enable/disable filtering of pair0 triggers. */
+ public void setFilterPair0Triggers(boolean filterPair0Triggers) {
+ this.filterPair0Triggers = filterPair0Triggers;
+ }
+
+ /** Enable/disable filtering of pair1 triggers. */
+ public void setFilterPair1Triggers(boolean filterPair1Triggers) {
+ this.filterPair1Triggers = filterPair1Triggers;
+ }
+
+ /**
+ * Method to check if the event was due to the specified trigger filter.
+ *
+ * @param triggerBanks Collection containing trigger bank information.
+ * @return True if event was due to specified trigger, false otherwise.
+ *
+ */
+ private boolean passTriggerFilter(List<GenericObject> triggerBanks) {
+
+ // Loop through the collection of banks and get the TI banks.
+ for (GenericObject triggerBank : triggerBanks) {
+
+ // If the bank contains TI data, process it
+ if (AbstractIntData.getTag(triggerBank) == TIData.BANK_TAG) {
+
+ TIData tiData = new TIData(triggerBank);
+
+ if (filterPulserTriggers && tiData.isPulserTrigger()) {
+ return false;
+ } else if (filterSingle0Triggers && tiData.isSingle0Trigger()) {
+ return false;
+ } else if (filterSingle1Triggers && tiData.isSingle1Trigger()) {
+ return false;
+ } else if (filterPair0Triggers && tiData.isPair0Trigger()) {
+ return false;
+ } else if (filterPair1Triggers && tiData.isPair1Trigger()) {
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+
+ @Override
+ public void process(EventHeader event) {
+
+ triggerFound = false;
+ //System.out.println("Event: " + event.getEventNumber());
+ if (enableTriggerFilter && event.hasCollection(GenericObject.class, TRIGGER_BANK_COL_NAME)) {
+
+ // Get the list of trigger banks from the event
+ List<GenericObject> triggerBanks = event.get(GenericObject.class, TRIGGER_BANK_COL_NAME);
+
+ // Apply the trigger filter
+ if (passTriggerFilter(triggerBanks)) {
+ triggerFound = true;
+ }
+ }
+ }
+}
|