Author: [log in to unmask] Date: Fri Oct 2 19:01:06 2015 New Revision: 3758 Log: adding filters for all non-Pair1 triggers that also keep all EPICS and Scaler events Added: java/trunk/recon/src/main/java/org/hps/recon/filtering/Pair0TriggerFilterDriver.java java/trunk/recon/src/main/java/org/hps/recon/filtering/Single0TriggerFilterDriver.java java/trunk/recon/src/main/java/org/hps/recon/filtering/Single1TriggerFilterDriver.java java/trunk/steering-files/src/main/resources/org/hps/steering/production/Pair0TriggerFilter.lcsim java/trunk/steering-files/src/main/resources/org/hps/steering/production/Single0TriggerFilter.lcsim java/trunk/steering-files/src/main/resources/org/hps/steering/production/Single1TriggerFilter.lcsim Added: java/trunk/recon/src/main/java/org/hps/recon/filtering/Pair0TriggerFilterDriver.java ============================================================================= --- java/trunk/recon/src/main/java/org/hps/recon/filtering/Pair0TriggerFilterDriver.java (added) +++ java/trunk/recon/src/main/java/org/hps/recon/filtering/Pair0TriggerFilterDriver.java Fri Oct 2 19:01:06 2015 @@ -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 Pair0TriggerFilterDriver 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.isPair0Trigger()) return; + } + + // 5. Else, drop event: + throw new Driver.NextEventException(); + } +} Added: java/trunk/recon/src/main/java/org/hps/recon/filtering/Single0TriggerFilterDriver.java ============================================================================= --- java/trunk/recon/src/main/java/org/hps/recon/filtering/Single0TriggerFilterDriver.java (added) +++ java/trunk/recon/src/main/java/org/hps/recon/filtering/Single0TriggerFilterDriver.java Fri Oct 2 19:01:06 2015 @@ -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 single-0 triggered events. + * Also keep EPICS events, and Scaler events. + * Drop all other events. + * + * @author baltzell + * + */ +public class Single0TriggerFilterDriver 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 Single-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.isSingle0Trigger()) return; + } + + // 5. Else, drop event: + throw new Driver.NextEventException(); + } +} Added: java/trunk/recon/src/main/java/org/hps/recon/filtering/Single1TriggerFilterDriver.java ============================================================================= --- java/trunk/recon/src/main/java/org/hps/recon/filtering/Single1TriggerFilterDriver.java (added) +++ java/trunk/recon/src/main/java/org/hps/recon/filtering/Single1TriggerFilterDriver.java Fri Oct 2 19:01:06 2015 @@ -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 single-1 triggered events. + * Also keep EPICS events, and Scaler events. + * Drop all other events. + * + * @author baltzell + * + */ +public class Single1TriggerFilterDriver 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 Single-1 trigger: + for (GenericObject gob : event.get(GenericObject.class,"TriggerBank")) + { + if (!(AbstractIntData.getTag(gob) == TIData.BANK_TAG)) continue; + TIData tid = new TIData(gob); + if (tid.isSingle1Trigger()) return; + } + + // 5. Else, drop event: + throw new Driver.NextEventException(); + } +} Added: java/trunk/steering-files/src/main/resources/org/hps/steering/production/Pair0TriggerFilter.lcsim ============================================================================= --- java/trunk/steering-files/src/main/resources/org/hps/steering/production/Pair0TriggerFilter.lcsim (added) +++ java/trunk/steering-files/src/main/resources/org/hps/steering/production/Pair0TriggerFilter.lcsim Fri Oct 2 19:01:06 2015 @@ -0,0 +1,16 @@ +<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" + xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd"> + + <execute> + <driver name="Skimmer"/> + <driver name="LCIOWriter"/> + </execute> + + <drivers> + <driver name="Skimmer" type="org.hps.recon.filtering.Pair0TriggerFilterDriver"> + </driver> + <driver name="LCIOWriter" type="org.lcsim.util.loop.LCIODriver"> + <outputFilePath>${outputFile}.slcio</outputFilePath> + </driver> + </drivers> +</lcsim> Added: java/trunk/steering-files/src/main/resources/org/hps/steering/production/Single0TriggerFilter.lcsim ============================================================================= --- java/trunk/steering-files/src/main/resources/org/hps/steering/production/Single0TriggerFilter.lcsim (added) +++ java/trunk/steering-files/src/main/resources/org/hps/steering/production/Single0TriggerFilter.lcsim Fri Oct 2 19:01:06 2015 @@ -0,0 +1,16 @@ +<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" + xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd"> + + <execute> + <driver name="Skimmer"/> + <driver name="LCIOWriter"/> + </execute> + + <drivers> + <driver name="Skimmer" type="org.hps.recon.filtering.Single0TriggerFilterDriver"> + </driver> + <driver name="LCIOWriter" type="org.lcsim.util.loop.LCIODriver"> + <outputFilePath>${outputFile}.slcio</outputFilePath> + </driver> + </drivers> +</lcsim> Added: java/trunk/steering-files/src/main/resources/org/hps/steering/production/Single1TriggerFilter.lcsim ============================================================================= --- java/trunk/steering-files/src/main/resources/org/hps/steering/production/Single1TriggerFilter.lcsim (added) +++ java/trunk/steering-files/src/main/resources/org/hps/steering/production/Single1TriggerFilter.lcsim Fri Oct 2 19:01:06 2015 @@ -0,0 +1,16 @@ +<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" + xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd"> + + <execute> + <driver name="Skimmer"/> + <driver name="LCIOWriter"/> + </execute> + + <drivers> + <driver name="Skimmer" type="org.hps.recon.filtering.Single1TriggerFilterDriver"> + </driver> + <driver name="LCIOWriter" type="org.lcsim.util.loop.LCIODriver"> + <outputFilePath>${outputFile}.slcio</outputFilePath> + </driver> + </drivers> +</lcsim>