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();
|