Author: [log in to unmask] Date: Thu Jul 16 11:48:29 2015 New Revision: 3261 Log: more filters; add maxSize option for collection size Added: java/trunk/recon/src/main/java/org/hps/recon/filtering/EcalSinglesFilter.java - copied, changed from r3257, java/trunk/recon/src/main/java/org/hps/recon/filtering/EcalPairsFilter.java java/trunk/recon/src/main/java/org/hps/recon/filtering/TriggerTypeFilter.java - copied, changed from r3257, java/trunk/recon/src/main/java/org/hps/recon/filtering/EcalPairsFilter.java Modified: java/trunk/recon/src/main/java/org/hps/recon/filtering/CollectionSizeFilter.java Modified: java/trunk/recon/src/main/java/org/hps/recon/filtering/CollectionSizeFilter.java ============================================================================= --- java/trunk/recon/src/main/java/org/hps/recon/filtering/CollectionSizeFilter.java (original) +++ java/trunk/recon/src/main/java/org/hps/recon/filtering/CollectionSizeFilter.java Thu Jul 16 11:48:29 2015 @@ -4,8 +4,8 @@ import org.lcsim.event.EventHeader; /** - * Accept events where the specified collection exists and is of at least the - * required size. + * Accept events where the specified collection exists and is of the required + * size range. * * @author Sho Uemura <[log in to unmask]> * @version $Id: $ @@ -14,6 +14,7 @@ private String collectionName = "UnconstrainedV0Candidates"; private int minSize = 1; + private int maxSize = Integer.MAX_VALUE; public void setCollectionName(String collectionName) { this.collectionName = collectionName; @@ -23,12 +24,16 @@ this.minSize = minSize; } + public void setMaxSize(int maxSize) { + this.maxSize = maxSize; + } + @Override public void process(EventHeader event) { incrementEventProcessed(); if (event.hasCollection(Object.class, collectionName)) { List<Object> collection = event.get(Object.class, collectionName); - if (collection.size() < minSize) { + if (collection.size() < minSize || collection.size() > maxSize) { skipEvent(); } } else { Copied: java/trunk/recon/src/main/java/org/hps/recon/filtering/EcalSinglesFilter.java (from r3257, java/trunk/recon/src/main/java/org/hps/recon/filtering/EcalPairsFilter.java) ============================================================================= --- java/trunk/recon/src/main/java/org/hps/recon/filtering/EcalPairsFilter.java (original) +++ java/trunk/recon/src/main/java/org/hps/recon/filtering/EcalSinglesFilter.java Thu Jul 16 11:48:29 2015 @@ -1,30 +1,72 @@ package org.hps.recon.filtering; -import java.util.ArrayList; -import java.util.Collections; import java.util.List; import org.hps.recon.ecal.cluster.ClusterUtilities; import org.lcsim.event.Cluster; import org.lcsim.event.EventHeader; /** - * Accept events containing a pair of ECal clusters within a set time - * coincidence. + * Accept events containing an ECal cluster passing cuts. * * @author Sho Uemura <[log in to unmask]> * @version $Id: $ */ -public class EcalPairsFilter extends EventReconFilter { +public class EcalSinglesFilter extends EventReconFilter { private String clusterCollectionName = "EcalClusters"; - private double maxDt = 5.0; + private double minX = -500; + private double maxX = 500; + private double minY = -500; + private double maxY = 500; + private int minSize = 3; + private int maxSize = 7; + private double minT = 42.0; + private double maxT = 59.0; + private double minE = 0.7; + private double maxE = 1.05; public void setClusterCollectionName(String clusterCollectionName) { this.clusterCollectionName = clusterCollectionName; } - public void setMaxDt(double maxDt) { - this.maxDt = maxDt; + public void setMinX(double minX) { + this.minX = minX; + } + + public void setMaxX(double maxX) { + this.maxX = maxX; + } + + public void setMinY(double minY) { + this.minY = minY; + } + + public void setMaxY(double maxY) { + this.maxY = maxY; + } + + public void setMinSize(int minSize) { + this.minSize = minSize; + } + + public void setMaxSize(int maxSize) { + this.maxSize = maxSize; + } + + public void setMinT(double minT) { + this.minT = minT; + } + + public void setMaxT(double maxT) { + this.maxT = maxT; + } + + public void setMinE(double minE) { + this.minE = minE; + } + + public void setMaxE(double maxE) { + this.maxE = maxE; } @Override @@ -32,27 +74,32 @@ incrementEventProcessed(); if (event.hasCollection(Cluster.class, clusterCollectionName)) { List<Cluster> clusters = event.get(Cluster.class, clusterCollectionName); - if (clusters.size() < 2) { - skipEvent(); - } - List<Double> clusterTimes = new ArrayList<Double>(); + boolean acceptEvent = false; for (Cluster cluster : clusters) { - clusterTimes.add(ClusterUtilities.getSeedHitTime(cluster)); - } - Collections.sort(clusterTimes); - boolean acceptEvent = false; - for (int i = 0; i < clusterTimes.size() - 1; i++) { - double dt = clusterTimes.get(i + 1) - clusterTimes.get(i); -// System.out.println(dt); - if (dt < maxDt) { - acceptEvent = true; + int clusterSize = cluster.getCalorimeterHits().size(); + double clusterTime = ClusterUtilities.getSeedHitTime(cluster); + if (clusterSize <= minSize || clusterSize >= maxSize) { + continue; } + if (clusterTime < minT || clusterTime > maxT) { + continue; + } + if (cluster.getEnergy() < minE || cluster.getEnergy() > maxE) { + continue; + } + if (cluster.getPosition()[0] < minX || cluster.getPosition()[0] > maxX) { + continue; + } + if (cluster.getPosition()[1] < minY || cluster.getPosition()[1] > maxY) { + continue; + } + acceptEvent = true; } if (!acceptEvent) { skipEvent(); } } else { - skipEvent(); + skipEvent(); } incrementEventPassed(); } Copied: java/trunk/recon/src/main/java/org/hps/recon/filtering/TriggerTypeFilter.java (from r3257, java/trunk/recon/src/main/java/org/hps/recon/filtering/EcalPairsFilter.java) ============================================================================= --- java/trunk/recon/src/main/java/org/hps/recon/filtering/EcalPairsFilter.java (original) +++ java/trunk/recon/src/main/java/org/hps/recon/filtering/TriggerTypeFilter.java Thu Jul 16 11:48:29 2015 @@ -1,59 +1,62 @@ package org.hps.recon.filtering; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import org.hps.recon.ecal.cluster.ClusterUtilities; -import org.lcsim.event.Cluster; +import org.hps.recon.ecal.triggerbank.AbstractIntData; +import org.hps.recon.ecal.triggerbank.TIData; import org.lcsim.event.EventHeader; +import org.lcsim.event.GenericObject; /** - * Accept events containing a pair of ECal clusters within a set time - * coincidence. + * Accept events with the desired trigger bit. * * @author Sho Uemura <[log in to unmask]> * @version $Id: $ */ -public class EcalPairsFilter extends EventReconFilter { +public class TriggerTypeFilter extends EventReconFilter { - private String clusterCollectionName = "EcalClusters"; - private double maxDt = 5.0; + TriggerType triggerType = TriggerType.all; - public void setClusterCollectionName(String clusterCollectionName) { - this.clusterCollectionName = clusterCollectionName; + public enum TriggerType { + + all, singles0, singles1, pairs0, pairs1 } - public void setMaxDt(double maxDt) { - this.maxDt = maxDt; + public void setTriggerType(String triggerType) { + this.triggerType = TriggerType.valueOf(triggerType); } @Override public void process(EventHeader event) { incrementEventProcessed(); - if (event.hasCollection(Cluster.class, clusterCollectionName)) { - List<Cluster> clusters = event.get(Cluster.class, clusterCollectionName); - if (clusters.size() < 2) { - skipEvent(); - } - List<Double> clusterTimes = new ArrayList<Double>(); - for (Cluster cluster : clusters) { - clusterTimes.add(ClusterUtilities.getSeedHitTime(cluster)); - } - Collections.sort(clusterTimes); - boolean acceptEvent = false; - for (int i = 0; i < clusterTimes.size() - 1; i++) { - double dt = clusterTimes.get(i + 1) - clusterTimes.get(i); -// System.out.println(dt); - if (dt < maxDt) { - acceptEvent = true; + 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 (!acceptEvent) { - skipEvent(); - } } else { - skipEvent(); + 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; + } + } }