Author: [log in to unmask] Date: Mon Dec 7 15:43:29 2015 New Revision: 4021 Log: fix bug so that it actually does something. Modified: java/trunk/recon/src/main/java/org/hps/recon/filtering/SvtHitMultiplicityFilter.java Modified: java/trunk/recon/src/main/java/org/hps/recon/filtering/SvtHitMultiplicityFilter.java ============================================================================= --- java/trunk/recon/src/main/java/org/hps/recon/filtering/SvtHitMultiplicityFilter.java (original) +++ java/trunk/recon/src/main/java/org/hps/recon/filtering/SvtHitMultiplicityFilter.java Mon Dec 7 15:43:29 2015 @@ -7,7 +7,10 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; +import org.lcsim.detector.tracker.silicon.HpsSiSensor; import org.lcsim.event.EventHeader; import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHitStrip1D; @@ -20,9 +23,14 @@ */ public class SvtHitMultiplicityFilter extends EventReconFilter { - private final static String stripClusterCollectionName = "StripClusterer_SiTrackerHitStrip1D"; + Logger logger = Logger.getLogger(SvtHitMultiplicityFilter.class.getSimpleName()); + private final static String stripClusterCollectionName = "StripClusterer_SiTrackerHitStrip1D"; private int hitsPerSensor = 1; - + private int minHitsPerHalf = 3; + + public SvtHitMultiplicityFilter() { + logger.setLevel(Level.WARNING); + } @Override protected void process(EventHeader event) { @@ -39,16 +47,29 @@ Map<String, List<SiTrackerHitStrip1D> > sensorHitMap= new HashMap< String, List<SiTrackerHitStrip1D> >(); + int nhits[] = {0,0}; + for(SiTrackerHitStrip1D cluster : stripClusters) { String sensorName = cluster.getRawHits().get(0).getDetectorElement().getName(); + boolean isTop = ((HpsSiSensor) cluster.getRawHits().get(0).getDetectorElement()).isTopLayer(); + if(isTop) + nhits[0]++; + else + nhits[1]++; - List<SiTrackerHitStrip1D> hits = sensorHitMap.get(sensorName); - if(hits == null) { + List<SiTrackerHitStrip1D> hits; + if(sensorHitMap.containsKey(sensorName)) + hits = sensorHitMap.get(sensorName); + else { hits = new ArrayList<SiTrackerHitStrip1D>(); + sensorHitMap.put(sensorName, hits); } hits.add(cluster); } + // if none of the halves contains the required nr of hits, skip the event + if( nhits[0] < minHitsPerHalf && nhits[1] < minHitsPerHalf) + skipEvent(); // go through and check that the number of hits for each layer is what's required for(Map.Entry<String, List<SiTrackerHitStrip1D>> entry : sensorHitMap.entrySet()) { @@ -57,8 +78,14 @@ } - - + + StringBuffer sb = new StringBuffer(); + sb.append("Event with " + stripClusters.size() + " hits passed:\n"); + for(SiTrackerHitStrip1D hit : stripClusters) { + sb.append(hit.getPositionAsVector().toString() + " " + hit.getRawHits().get(0).getDetectorElement().getName() + "\n"); + } + logger.info(sb.toString()); + incrementEventPassed();