Author: [log in to unmask] Date: Thu Oct 27 15:23:56 2016 New Revision: 4546 Log: added Pair1TriggerFilterDriver (which is referenced in the V0 skim steering file) Added: java/trunk/recon/src/main/java/org/hps/recon/filtering/Pair1TriggerFilterDriver.java (with props) Added: java/trunk/recon/src/main/java/org/hps/recon/filtering/Pair1TriggerFilterDriver.java ============================================================================= --- java/trunk/recon/src/main/java/org/hps/recon/filtering/Pair1TriggerFilterDriver.java (added) +++ java/trunk/recon/src/main/java/org/hps/recon/filtering/Pair1TriggerFilterDriver.java Thu Oct 27 15:23:56 2016 @@ -0,0 +1,43 @@ +package org.hps.recon.filtering; + +import org.lcsim.event.EventHeader; +import org.lcsim.event.GenericObject; +import org.lcsim.util.Driver; +import org.hps.record.epics.EpicsData; +import org.hps.record.scalers.ScalerData; +import org.hps.record.triggerbank.AbstractIntData; +import org.hps.record.triggerbank.TIData; +/** + * Keep pair-0 triggered events. + * Also keep EPICS events, and Scaler events. + * Drop all other events. + * + * @author baltzell + * + */ +public class Pair1TriggerFilterDriver extends Driver +{ + public void process(EventHeader event) { + + // 1. keep all events with EPICS data (could also use event tag = 31): + if (EpicsData.read(event) != null) return; + + // 2. keep all events with Scaler data: + if (ScalerData.read(event) != null) return; + + // 3. drop event if it doesn't have a TriggerBank + if (!event.hasCollection(GenericObject.class,"TriggerBank")) + throw new Driver.NextEventException(); + + // 4. keep event if it was from a Pair-0 trigger: + for (GenericObject gob : event.get(GenericObject.class,"TriggerBank")) + { + if (!(AbstractIntData.getTag(gob) == TIData.BANK_TAG)) continue; + TIData tid = new TIData(gob); + if (tid.isPair1Trigger()) return; + } + + // 5. Else, drop event: + throw new Driver.NextEventException(); + } +}