Author: [log in to unmask] Date: Wed Apr 29 17:10:23 2015 New Revision: 2863 Log: Add a trigger filter. Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SensorOccupancyPlotsDriver.java Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SensorOccupancyPlotsDriver.java ============================================================================= --- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SensorOccupancyPlotsDriver.java (original) +++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SensorOccupancyPlotsDriver.java Wed Apr 29 17:10:23 2015 @@ -23,9 +23,13 @@ import org.lcsim.detector.tracker.silicon.SiStrips; import org.lcsim.detector.ITransform3D; import org.lcsim.event.EventHeader; +import org.lcsim.event.GenericObject; import org.lcsim.event.RawTrackerHit; import org.lcsim.geometry.Detector; import org.lcsim.util.Driver; + +import org.hps.recon.ecal.triggerbank.AbstractIntData; +import org.hps.recon.ecal.triggerbank.TIData; /** * This Driver makes plots of SVT sensor occupancies across a run. @@ -57,6 +61,7 @@ private static final String SUBDETECTOR_NAME = "Tracker"; private String rawTrackerHitCollectionName = "SVTRawTrackerHits"; + private String triggerBankCollectionName = "TriggerBank"; String rootFile = null; @@ -68,6 +73,12 @@ private boolean enablePositionPlots = false; private boolean enableMaxSamplePlots = false; + private boolean enableTriggerFilter = false; + private boolean filterPulserTriggers = false; + private boolean filterSingle0Triggers = false; + private boolean filterSingle1Triggers = false; + private boolean filterPair0Triggers = false; + private boolean filterPair1Triggers = false; public SensorOccupancyPlotsDriver() { } @@ -87,7 +98,31 @@ public void setEnableMaxSamplePlots(boolean enableMaxSamplePlots) { this.enableMaxSamplePlots = enableMaxSamplePlots; } - + + public void setEnableTriggerFilter(boolean enableTriggerFilter) { + this.enableTriggerFilter = enableTriggerFilter; + } + + public void setFilterPulserTriggers(boolean filterPulserTriggers) { + this.filterPulserTriggers = filterPulserTriggers; + } + + public void setFilterSingle0Triggers(boolean filterSingle0Triggers) { + this.filterSingle0Triggers = filterSingle0Triggers; + } + + public void setFilterSingle1Triggers(boolean filterSingle1Triggers) { + this.filterSingle1Triggers = filterSingle1Triggers; + } + + public void setFilterPair0Triggers(boolean filterPair0Triggers) { + this.filterPair0Triggers = filterPair0Triggers; + } + + public void setFilterPair1Triggers(boolean filterPair1Triggers) { + this.filterPair1Triggers = filterPair1Triggers; + } + public void setMaxSamplePosition(int maxSamplePosition) { this.maxSamplePosition = maxSamplePosition; } @@ -316,12 +351,47 @@ } } + 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; + } + public void process(EventHeader event) { - + // Get the run number from the event and store it. This will be used // when writing the plots out to a ROOT file if (runNumber == -1) runNumber = event.getRunNumber(); + if (enableTriggerFilter && event.hasCollection(GenericObject.class, triggerBankCollectionName)) { + + // Get the list of trigger banks from the event + List<GenericObject> triggerBanks = event.get(GenericObject.class, triggerBankCollectionName); + + // Apply the trigger filter + if (!passTriggerFilter(triggerBanks)) return; + } + // If the event doesn't have a collection of RawTrackerHit's, skip it. if (!event.hasCollection(RawTrackerHit.class, rawTrackerHitCollectionName)) return; // Get RawTrackerHit collection from event.