Author: [log in to unmask]
Date: Fri May 15 21:34:37 2015
New Revision: 2984
Log:
option to drop events with small hits
Modified:
java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SensorOccupancyPlotsDriver.java
java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtClusterPlots.java
java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtHitPlots.java
java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtPlotUtils.java
Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SensorOccupancyPlotsDriver.java
=============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SensorOccupancyPlotsDriver.java (original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SensorOccupancyPlotsDriver.java Fri May 15 21:34:37 2015
@@ -17,6 +17,8 @@
import hep.aida.jfree.plotter.PlotterRegion;
import hep.aida.ref.rootwriter.RootFileStore;
import hep.physics.vec.Hep3Vector;
+import java.util.HashSet;
+import java.util.Set;
import org.hps.monitoring.subsys.StatusCode;
import org.hps.monitoring.subsys.Subsystem;
import org.hps.monitoring.subsys.SystemStatus;
@@ -96,11 +98,17 @@
private double minPeakOccupancy = 0.0001;
private double maxPeakOccupancy = 0.01;
+ private boolean dropSmallHitEvents = true;
+
public SensorOccupancyPlotsDriver() {
maxSampleStatus = new SystemStatusImpl(Subsystem.SVT, "Checks that SVT is timed in (max sample plot)", true);
maxSampleStatus.setStatus(StatusCode.UNKNOWN, "Status is unknown.");
occupancyStatus = new SystemStatusImpl(Subsystem.SVT, "Checks SVT occupancy", true);
occupancyStatus.setStatus(StatusCode.UNKNOWN, "Status is unknown.");
+ }
+
+ public void setDropSmallHitEvents(boolean dropSmallHitEvents) {
+ this.dropSmallHitEvents = dropSmallHitEvents;
}
public void setRawTrackerHitCollectionName(String rawTrackerHitCollectionName) {
@@ -447,6 +455,10 @@
}
// Get RawTrackerHit collection from event.
List<RawTrackerHit> rawHits = event.get(RawTrackerHit.class, rawTrackerHitCollectionName);
+
+ if (SvtPlotUtils.countSmallHits(rawHits) > 3) {
+ return;
+ }
if (resetPeriod > 0 && eventCount > resetPeriod) { //reset occupancy numbers after resetPeriod events
eventCount = 0;
Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtClusterPlots.java
=============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtClusterPlots.java (original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtClusterPlots.java Fri May 15 21:34:37 2015
@@ -16,6 +16,8 @@
import hep.aida.jfree.plotter.Plotter;
import hep.aida.jfree.plotter.PlotterRegion;
import hep.aida.ref.rootwriter.RootFileStore;
+import java.util.HashSet;
+import java.util.Set;
import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.event.EventHeader;
@@ -67,6 +69,12 @@
private String fittedHitsCollectionName = "SVTFittedRawTrackerHits";
private int runNumber = -1;
+
+ private boolean dropSmallHitEvents = true;
+
+ public void setDropSmallHitEvents(boolean dropSmallHitEvents) {
+ this.dropSmallHitEvents = dropSmallHitEvents;
+ }
private int computePlotterRegion(HpsSiSensor sensor) {
@@ -240,7 +248,7 @@
histogramFactory.createHistogram2D("Top Cluster Time vs. Trigger Phase", 100, -50, 50, 6, -2, 22));
plotters.get("SVT-trigger timing top-bottom").region(0).plot(hitTimeTrigTimePlots.get("Top"), this.createStyle(null, "Cluster Time [ns]", "Trigger Phase[ns]"));
hitTimeTrigTimePlots.put("Bottom",
- histogramFactory.createHistogram2D("Top Cluster Time vs. Trigger Phase", 100, -50, 50, 6, -2, 22));
+ histogramFactory.createHistogram2D("Bottom Cluster Time vs. Trigger Phase", 100, -50, 50, 6, -2, 22));
plotters.get("SVT-trigger timing top-bottom").region(1).plot(hitTimeTrigTimePlots.get("Bottom"), this.createStyle(null, "Cluster Time [ns]", "Trigger Phase[ns]"));
plotters.put("SVT-trigger timing by phase", plotterFactory.create("SVT-trigger timing by phase"));
@@ -285,6 +293,15 @@
return;
}
+ if (event.hasCollection(RawTrackerHit.class, "SVTRawTrackerHits")) {
+ // Get RawTrackerHit collection from event.
+ List<RawTrackerHit> rawHits = event.get(RawTrackerHit.class, "SVTRawTrackerHits");
+
+ if (SvtPlotUtils.countSmallHits(rawHits) > 3) {
+ return;
+ }
+ }
+
// Get the list of clusters in the event
List<SiTrackerHitStrip1D> clusters = event.get(SiTrackerHitStrip1D.class, clusterCollectionName);
Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtHitPlots.java
=============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtHitPlots.java (original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtHitPlots.java Fri May 15 21:34:37 2015
@@ -11,8 +11,10 @@
import hep.aida.jfree.plotter.PlotterRegion;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.util.Driver;
@@ -52,12 +54,18 @@
private static final String SUBDETECTOR_NAME = "Tracker";
private String rawTrackerHitCollectionName = "SVTRawTrackerHits";
-
+
// Counters
double eventCount = 0;
double totalHitCount = 0;
double totalTopHitCount = 0;
double totalBotHitCount = 0;
+
+ private boolean dropSmallHitEvents = true;
+
+ public void setDropSmallHitEvents(boolean dropSmallHitEvents) {
+ this.dropSmallHitEvents = dropSmallHitEvents;
+ }
private int computePlotterRegion(HpsSiSensor sensor) {
@@ -225,6 +233,10 @@
// Get RawTrackerHit collection from event.
List<RawTrackerHit> rawHits = event.get(RawTrackerHit.class, rawTrackerHitCollectionName);
+ if (SvtPlotUtils.countSmallHits(rawHits) > 3) {
+ return;
+ }
+
this.clearHitMaps();
for (RawTrackerHit rawHit : rawHits) {
HpsSiSensor sensor = (HpsSiSensor) rawHit.getDetectorElement();
Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtPlotUtils.java
=============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtPlotUtils.java (original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtPlotUtils.java Fri May 15 21:34:37 2015
@@ -2,6 +2,11 @@
import hep.aida.IPlotterFactory;
import hep.aida.IPlotterStyle;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.event.RawTrackerHit;
@@ -95,4 +100,44 @@
return style;
}
+
+ public static int countSmallHits(List<RawTrackerHit> rawHits) {
+ int smallHitCount = 0;
+ Map<HpsSiSensor, Set<Integer>> hitMap = new HashMap<HpsSiSensor, Set<Integer>>();
+
+ for (RawTrackerHit hit : rawHits) {
+ HpsSiSensor sensor = (HpsSiSensor) hit.getDetectorElement();
+ Set<Integer> hitStrips = hitMap.get(sensor);
+ if (hitStrips == null) {
+ hitStrips = new HashSet<Integer>();
+ hitMap.put(sensor, hitStrips);
+ }
+ int strip = hit.getIdentifierFieldValue("strip");
+ hitStrips.add(strip);
+ }
+
+ for (RawTrackerHit hit : rawHits) {
+ if (isSmallHit(hitMap, hit)) {
+ smallHitCount++;
+ }
+ }
+ return smallHitCount;
+ }
+
+ public static boolean isSmallHit(Map<HpsSiSensor, Set<Integer>> hitMap, RawTrackerHit hit) {
+ HpsSiSensor sensor = (HpsSiSensor) hit.getDetectorElement();
+ int strip = hit.getIdentifierFieldValue("strip");
+ double pedestal = sensor.getPedestal(strip, 0);
+ double noise = sensor.getNoise(strip, 0);
+
+ if (hitMap.get(sensor) != null && (hitMap.get(sensor).contains(strip - 1) || hitMap.get(sensor).contains(strip + 1))) {
+ return false;
+ }
+ for (int i = 0; i < 6; i++) {
+ if (hit.getADCValues()[i] > pedestal + 4.0 * noise) {
+ return false;
+ }
+ }
+ return true;
+ }
}
|