Author: [log in to unmask]
Date: Wed Apr 15 19:57:56 2015
New Revision: 2717
Log:
Calculate the occupancy over the whole run and not within a window.
Modified:
java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SensorOccupancyPlotsDriver.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 Wed Apr 15 19:57:56 2015
@@ -1,4 +1,10 @@
package org.hps.monitoring.drivers.svt;
+
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import hep.aida.IAnalysisFactory;
import hep.aida.IHistogram1D;
@@ -6,10 +12,8 @@
import hep.aida.IPlotter;
import hep.aida.IPlotterFactory;
import hep.aida.IPlotterStyle;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import hep.aida.ITree;
+import hep.aida.ref.rootwriter.RootFileStore;
import hep.aida.jfree.plotter.Plotter;
import hep.aida.jfree.plotter.PlotterRegion;
@@ -21,20 +25,20 @@
import org.lcsim.util.Driver;
/**
- * This Driver makes plots of sensor occupancies across a run. It is intended to be used with the
- * monitoring system.
+ * This Driver makes plots of sensor occupancies across a run. It is intended to
+ * be used with the monitoring system.
*
- * @author Jeremy McCormick <[log in to unmask]>
* @author Omar Moreno <[log in to unmask]>
*/
public class SensorOccupancyPlotsDriver extends Driver {
// TODO: Add documentation
- static {
+ static {
hep.aida.jfree.AnalysisFactory.register();
}
- static IHistogramFactory histogramFactory = IAnalysisFactory.create().createHistogramFactory(null);
+ ITree tree;
+ IHistogramFactory histogramFactory;
IPlotterFactory plotterFactory = IAnalysisFactory.create().createPlotterFactory();
protected Map<String, IPlotter> plotters = new HashMap<String, IPlotter>();
@@ -44,6 +48,8 @@
private static final String SUBDETECTOR_NAME = "Tracker";
private String rawTrackerHitCollectionName = "SVTRawTrackerHits";
+
+ String rootFile = null;
private int eventCount = 0;
private int eventRefreshRate = 1;
@@ -58,64 +64,11 @@
public void setEventRefreshRate(int eventRefreshRate) {
this.eventRefreshRate = eventRefreshRate;
}
-
- protected void detectorChanged(Detector detector) {
-
- sensors = detector.getSubdetector(SUBDETECTOR_NAME).getDetectorElement().findDescendants(HpsSiSensor.class);
-
- if (sensors.size() == 0) {
- throw new RuntimeException("No sensors were found in this detector.");
- }
-
- plotters.put("Occupancy", plotterFactory.create("Occupancy"));
- plotters.get("Occupancy").createRegions(6, 6);
-
- for (HpsSiSensor sensor : sensors) {
- occupancyPlots.put(sensor, histogramFactory.createHistogram1D(sensor.getName() + " - Occupancy", 640, 0, 640));
- plotters.get("Occupancy").region(this.computePlotterRegion(sensor))
- .plot(occupancyPlots.get(sensor), this.createOccupancyPlotStyle(sensor));
- occupancyMap.put(sensor, new int[640]);
- }
-
- for (IPlotter plotter : plotters.values()) {
- for (int regionN = 0; regionN < 36; regionN++) {
- PlotterRegion region = ((PlotterRegion) ((Plotter) plotter).region(regionN));
- region.getPanel().addMouseListener(new PopupPlotterListener(region));
- }
- plotter.show();
- }
- }
-
- public void process(EventHeader event) {
-
- if (!event.hasCollection(RawTrackerHit.class, rawTrackerHitCollectionName))
- return;
-
- eventCount++;
-
- // Get RawTrackerHit collection from event.
- List<RawTrackerHit> rawHits = event.get(RawTrackerHit.class, rawTrackerHitCollectionName);
-
- // Increment strip hit count.
- for (RawTrackerHit rawHit : rawHits) {
- occupancyMap.get((HpsSiSensor) rawHit.getDetectorElement())[rawHit.getIdentifierFieldValue("strip")]++;
- }
-
- // Plot strip occupancies.
- if (eventCount % eventRefreshRate == 0) {
- for (HpsSiSensor sensor : sensors) {
- int[] strips = occupancyMap.get(sensor);
- occupancyPlots.get(sensor).reset();
- for (int channel = 0; channel < strips.length; channel++) {
- double stripOccupancy = (double) strips[channel] / (double) eventCount;
- occupancyPlots.get(sensor).fill(channel, stripOccupancy);
- occupancyMap.get(sensor)[channel] = 0;
- }
- }
- eventCount = 0;
- }
- }
-
+
+ public void setRootFileName(String rootFile) {
+ this.rootFile = rootFile;
+ }
+
private int computePlotterRegion(HpsSiSensor sensor) {
if (sensor.getLayerNumber() < 7) {
@@ -144,6 +97,79 @@
return -1;
}
+ protected void detectorChanged(Detector detector) {
+
+ tree = IAnalysisFactory.create().createTreeFactory().create();
+ histogramFactory = IAnalysisFactory.create().createHistogramFactory(tree);
+
+ sensors = detector.getSubdetector(SUBDETECTOR_NAME).getDetectorElement().findDescendants(HpsSiSensor.class);
+
+ if (sensors.size() == 0) {
+ throw new RuntimeException("There are no sensors associated with this detector");
+ }
+
+ plotters.put("Occupancy", plotterFactory.create("Occupancy"));
+ plotters.get("Occupancy").createRegions(6, 6);
+
+ for (HpsSiSensor sensor : sensors) {
+ occupancyPlots.put(sensor, histogramFactory.createHistogram1D(sensor.getName() + " - Occupancy", 640, 0, 640));
+ plotters.get("Occupancy").region(this.computePlotterRegion(sensor))
+ .plot(occupancyPlots.get(sensor), this.createOccupancyPlotStyle(sensor));
+ occupancyMap.put(sensor, new int[640]);
+ }
+
+ for (IPlotter plotter : plotters.values()) {
+ for (int regionN = 0; regionN < 36; regionN++) {
+ PlotterRegion region = ((PlotterRegion) ((Plotter) plotter).region(regionN));
+ region.getPanel().addMouseListener(new PopupPlotterListener(region));
+ }
+ plotter.show();
+ }
+ }
+
+ public void process(EventHeader event) {
+
+ if (!event.hasCollection(RawTrackerHit.class, rawTrackerHitCollectionName))
+ return;
+
+ eventCount++;
+
+ // Get RawTrackerHit collection from event.
+ List<RawTrackerHit> rawHits = event.get(RawTrackerHit.class, rawTrackerHitCollectionName);
+
+ // Increment strip hit count.
+ for (RawTrackerHit rawHit : rawHits) {
+ occupancyMap.get((HpsSiSensor) rawHit.getDetectorElement())[rawHit.getIdentifierFieldValue("strip")]++;
+ }
+
+ // Plot strip occupancies.
+ if (eventCount % eventRefreshRate == 0) {
+ for (HpsSiSensor sensor : sensors) {
+ int[] strips = occupancyMap.get(sensor);
+ occupancyPlots.get(sensor).reset();
+ for (int channel = 0; channel < strips.length; channel++) {
+ double stripOccupancy = (double) strips[channel] / (double) eventCount;
+ occupancyPlots.get(sensor).fill(channel, stripOccupancy);
+ }
+ }
+ }
+ }
+
+ public void endOfData() {
+
+ if (rootFile == null) return;
+
+ RootFileStore store = new RootFileStore(rootFile);
+ try {
+ store.open();
+ store.add(tree);
+ store.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+
IPlotterStyle createOccupancyPlotStyle(HpsSiSensor sensor) {
// Create a default style
IPlotterStyle style = this.plotterFactory.createPlotterStyle();
@@ -180,7 +206,7 @@
style.legendBoxStyle().setVisible(false);
// Turn off the title
- style.titleStyle().setVisible(false);
+ //style.titleStyle().setVisible(false);
style.regionBoxStyle().backgroundStyle().setOpacity(.10);
if (sensor.isAxial()) style.regionBoxStyle().backgroundStyle().setColor("229, 114, 31, 1");
|