Author: [log in to unmask] Date: Fri Sep 18 18:01:17 2015 New Revision: 3645 Log: update filters Added: java/trunk/recon/src/main/java/org/hps/recon/filtering/EventFlagFilter.java - copied, changed from r3619, java/trunk/recon/src/main/java/org/hps/recon/filtering/TriggerTypeFilter.java java/trunk/recon/src/main/java/org/hps/recon/filtering/SingleTrackFilter.java - copied, changed from r3260, java/trunk/recon/src/main/java/org/hps/recon/filtering/MinimumHitsFilter.java Modified: java/trunk/recon/src/main/java/org/hps/recon/filtering/EcalSinglesFilter.java java/trunk/steering-files/src/main/resources/org/hps/steering/users/meeg/PairsSkimmer.lcsim Modified: java/trunk/recon/src/main/java/org/hps/recon/filtering/EcalSinglesFilter.java ============================================================================= --- java/trunk/recon/src/main/java/org/hps/recon/filtering/EcalSinglesFilter.java (original) +++ java/trunk/recon/src/main/java/org/hps/recon/filtering/EcalSinglesFilter.java Fri Sep 18 18:01:17 2015 @@ -21,7 +21,7 @@ private int minSize = 3; private int maxSize = 7; private double minT = 42.0; - private double maxT = 59.0; + private double maxT = 49.0; private double minE = 0.7; private double maxE = 1.05; Copied: java/trunk/recon/src/main/java/org/hps/recon/filtering/EventFlagFilter.java (from r3619, java/trunk/recon/src/main/java/org/hps/recon/filtering/TriggerTypeFilter.java) ============================================================================= --- java/trunk/recon/src/main/java/org/hps/recon/filtering/TriggerTypeFilter.java (original) +++ java/trunk/recon/src/main/java/org/hps/recon/filtering/EventFlagFilter.java Fri Sep 18 18:01:17 2015 @@ -1,62 +1,32 @@ package org.hps.recon.filtering; -import org.hps.record.triggerbank.AbstractIntData; -import org.hps.record.triggerbank.TIData; import org.lcsim.event.EventHeader; -import org.lcsim.event.GenericObject; /** - * Accept events with the desired trigger bit. + * Accept only events where all of the specified flags have a value of 1. * * @author Sho Uemura <[log in to unmask]> * @version $Id: $ */ -public class TriggerTypeFilter extends EventReconFilter { +public class EventFlagFilter extends EventReconFilter { - TriggerType triggerType = TriggerType.all; + String[] flagNames = null; - public enum TriggerType { - - all, singles0, singles1, pairs0, pairs1 - } - - public void setTriggerType(String triggerType) { - this.triggerType = TriggerType.valueOf(triggerType); + public void setFlagNames(String[] flagNames) { + this.flagNames = flagNames; } @Override public void process(EventHeader event) { incrementEventProcessed(); - if (event.hasCollection(GenericObject.class, "TriggerBank")) { - for (GenericObject data : event.get(GenericObject.class, "TriggerBank")) { - if (AbstractIntData.getTag(data) == TIData.BANK_TAG) { - TIData triggerData = new TIData(data); - if (!matchTriggerType(triggerData))//only process singles0 triggers... - { - skipEvent(); - } + if (flagNames != null) { + for (int i = 0; i < flagNames.length; i++) { + int[] flag = event.getIntegerParameters().get(flagNames[i]); + if (flag == null || flag[0] == 0) { + skipEvent(); } } - } else { - skipEvent(); } incrementEventPassed(); } - - public boolean matchTriggerType(TIData triggerData) { - switch (triggerType) { - case all: - return true; - case singles0: - return triggerData.isSingle0Trigger(); - case singles1: - return triggerData.isSingle1Trigger(); - case pairs0: - return triggerData.isPair0Trigger(); - case pairs1: - return triggerData.isPair1Trigger(); - default: - return false; - } - } } Copied: java/trunk/recon/src/main/java/org/hps/recon/filtering/SingleTrackFilter.java (from r3260, java/trunk/recon/src/main/java/org/hps/recon/filtering/MinimumHitsFilter.java) ============================================================================= --- java/trunk/recon/src/main/java/org/hps/recon/filtering/MinimumHitsFilter.java (original) +++ java/trunk/recon/src/main/java/org/hps/recon/filtering/SingleTrackFilter.java Fri Sep 18 18:01:17 2015 @@ -2,74 +2,60 @@ import java.util.List; - //===> import org.hps.conditions.deprecated.SvtUtils; -import org.lcsim.detector.identifier.IIdentifier; -import org.lcsim.detector.tracker.silicon.ChargeCarrier; -import org.lcsim.detector.tracker.silicon.HpsSiSensor; -import org.lcsim.detector.tracker.silicon.SiSensor; -import org.lcsim.detector.tracker.silicon.SiSensorElectrodes; -import org.lcsim.detector.tracker.silicon.SiTrackerIdentifierHelper; import org.lcsim.event.EventHeader; import org.lcsim.event.RawTrackerHit; +import org.lcsim.event.TrackerHit; /** - * - * @author mgraham + * + * @author meeg */ -public class MinimumHitsFilter extends EventReconFilter{ - - private int minSiLayers=10; - private String rawTrackerHitCollectionName="SVTRawTrackerHits"; - +public class SingleTrackFilter extends EventReconFilter { + + private String helicalTrackHitCollectionName = "HelicalTrackHits"; + @Override - public void process(EventHeader event){ + public void process(EventHeader event) { incrementEventProcessed(); - if(!event.hasCollection(RawTrackerHit.class, rawTrackerHitCollectionName)) - skipEvent(); - - List<RawTrackerHit> rawHits=event.get(RawTrackerHit.class, rawTrackerHitCollectionName); - - int totalTopHit=0; - int totalBotHit=0; - - int nlayersTopHit=0; - int nlayersBotHit=0; - int[] layersTop={0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0}; - int[] layersBot={0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0}; - - for(RawTrackerHit hit : rawHits){ - int layerNumber=hit.getLayerNumber(); - boolean isTop=isHitOnTop(hit); - if(isTop){ - totalTopHit++; - layersTop[layerNumber-1]++; - } else{ - totalBotHit++; - layersBot[layerNumber-1]++; - } - - } - //require hits in the first minSiLayers for both top and bottom planes - for(int i=0;i<minSiLayers;i++){ - if(layersTop[i]==0)skipEvent(); - if(layersBot[i]==0)skipEvent(); + if (!event.hasCollection(TrackerHit.class, helicalTrackHitCollectionName)) { + return; } + int[] topHits = {0, 0, 0, 0, 0, 0}; + int[] botHits = {0, 0, 0, 0, 0, 0}; + List<TrackerHit> hth = event.get(TrackerHit.class, helicalTrackHitCollectionName); + for (TrackerHit hit : hth) { + int layer = ((RawTrackerHit) hit.getRawHits().get(0)).getLayerNumber(); + int module = layer / 2 + 1; + if (hit.getPosition()[1] > 0) { + topHits[module - 1]++; + } else { + botHits[module - 1]++; + } + } + + boolean topOne = true, topNone = true; + boolean botOne = true, botNone = true; + + for (int i = 0; i < 6; i++) { + if (topHits[i] != 0) { + topNone = false; + } + if (topHits[i] != 1) { + topOne = false; + } + if (botHits[i] != 0) { + botNone = false; + } + if (botHits[i] != 1) { + botOne = false; + } + } + + if (!((topOne && botNone) || (botOne && topNone))) { + skipEvent(); + } incrementEventPassed(); } - - - private boolean isHitOnTop(RawTrackerHit hit){ - HpsSiSensor sensor=(HpsSiSensor) hit.getDetectorElement(); - IIdentifier id=hit.getIdentifier(); - SiTrackerIdentifierHelper _sid_helper=(SiTrackerIdentifierHelper) sensor.getIdentifierHelper(); - - ChargeCarrier carrier=ChargeCarrier.getCarrier(_sid_helper.getSideValue(id)); - SiSensorElectrodes electrodes=((SiSensor) hit.getDetectorElement()).getReadoutElectrodes(carrier); - //===> if(!SvtUtils.getInstance().isTopLayer(sensor)) - if(!sensor.isTopLayer()) - return false; - return true; - } } Modified: java/trunk/steering-files/src/main/resources/org/hps/steering/users/meeg/PairsSkimmer.lcsim ============================================================================= --- java/trunk/steering-files/src/main/resources/org/hps/steering/users/meeg/PairsSkimmer.lcsim (original) +++ java/trunk/steering-files/src/main/resources/org/hps/steering/users/meeg/PairsSkimmer.lcsim Fri Sep 18 18:01:17 2015 @@ -11,8 +11,8 @@ <driver name="ReconParticleCleanupDriver"/> - <driver name="SVTSmallHitsFilter"/> - <driver name="EcalPairsFilter"/> + <driver name="EventFlagFilter"/> + <!--<driver name="EcalPairsFilter"/>--> <driver name="CollectionSizeFilter"/> <driver name="LCIOWriter"/> @@ -26,9 +26,13 @@ <readoutCollections>SVTRawTrackerHits</readoutCollections> </driver> - <driver name="ReconParticleCleanupDriver" type="org.hps.users.meeg.ReconParticleCleanupDriver"/> + <driver name="ReconParticleCleanupDriver" type="org.hps.users.meeg.ReconParticleCleanupDriver"> + <maxTrackDt>5.0</maxTrackDt> + </driver> - <driver name="SVTSmallHitsFilter" type="org.hps.recon.filtering.SVTSmallHitsFilter"/> + <driver name="EventFlagFilter" type="org.hps.recon.filtering.EventFlagFilter"> + <flagNames>svt_bias_good svt_position_good svt_burstmode_noise_good</flagNames> + </driver> <driver name="EcalPairsFilter" type="org.hps.recon.filtering.EcalPairsFilter"/> <driver name="CollectionSizeFilter" type="org.hps.recon.filtering.CollectionSizeFilter"> <collectionName>UnconstrainedV0Candidates</collectionName>