Author: [log in to unmask] Date: Sun Mar 15 11:25:02 2015 New Revision: 2458 Log: Add plotter style to occupancy plots. 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 Sun Mar 15 11:25:02 2015 @@ -1,15 +1,17 @@ package org.hps.monitoring.drivers.svt; - - -import java.util.HashMap; -import java.util.List; -import java.util.Map; import hep.aida.IAnalysisFactory; import hep.aida.IHistogram1D; import hep.aida.IHistogramFactory; import hep.aida.IPlotter; import hep.aida.IPlotterFactory; +import hep.aida.IPlotterStyle; +import hep.aida.ref.plotter.style.registry.StyleRegistry; + +import java.awt.Color; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import org.lcsim.detector.tracker.silicon.HpsSiSensor; import org.lcsim.event.EventHeader; @@ -18,32 +20,34 @@ 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]> + * @author Jeremy McCormick <[log in to unmask]> + * @author Omar Moreno <[log in to unmask]> */ public class SensorOccupancyPlotsDriver extends Driver { // TODO: Add documentation // TODO: Set plot styles - - static IHistogramFactory histogramFactory = IAnalysisFactory.create().createHistogramFactory(null); - IPlotterFactory plotterFactory = IAnalysisFactory.create().createPlotterFactory(); - - protected Map<String, IPlotter> plotters = new HashMap<String, IPlotter>(); - protected Map<HpsSiSensor, IHistogram1D> occupancyPlots = new HashMap<HpsSiSensor, IHistogram1D>(); - protected Map<HpsSiSensor, int[]> occupancyMap = new HashMap<HpsSiSensor, int[]>(); + + static IHistogramFactory histogramFactory = IAnalysisFactory.create().createHistogramFactory(null); + IPlotterFactory plotterFactory = IAnalysisFactory.create().createPlotterFactory(); + static StyleRegistry styleRegistry = StyleRegistry.getStyleRegistry(); + + protected Map<String, IPlotter> plotters = new HashMap<String, IPlotter>(); + protected Map<HpsSiSensor, IHistogram1D> occupancyPlots = new HashMap<HpsSiSensor, IHistogram1D>(); + protected Map<HpsSiSensor, int[]> occupancyMap = new HashMap<HpsSiSensor, int[]>(); private List<HpsSiSensor> sensors; - + private static final String SUBDETECTOR_NAME = "Tracker"; private String rawTrackerHitCollectionName = "SVTRawTrackerHits"; private int eventCount = 0; private int eventRefreshRate = 1; - public SensorOccupancyPlotsDriver() {} + public SensorOccupancyPlotsDriver() { + } public void setRawTrackerHitCollectionName(String rawTrackerHitCollectionName) { this.rawTrackerHitCollectionName = rawTrackerHitCollectionName; @@ -55,83 +59,92 @@ private int computePlotterRegion(HpsSiSensor sensor) { - if (sensor.getLayerNumber() < 7) { - if (sensor.isTopLayer()) { - return 6*(sensor.getLayerNumber() - 1); - } else { - return 6*(sensor.getLayerNumber() - 1) + 1; - } - } else { - - if (sensor.isTopLayer()) { - if (sensor.getSide() == HpsSiSensor.POSITRON_SIDE) { - return 6*(sensor.getLayerNumber() - 7) + 2; - } else { - return 6*(sensor.getLayerNumber() - 7) + 3; - } - } else if (sensor.isBottomLayer()) { - if (sensor.getSide() == HpsSiSensor.POSITRON_SIDE) { - return 6*(sensor.getLayerNumber() - 7) + 4; - } else { - return 6*(sensor.getLayerNumber() - 7) + 5; - } - } - } - - return -1; + if (sensor.getLayerNumber() < 7) { + if (sensor.isTopLayer()) { + return 6 * (sensor.getLayerNumber() - 1); + } else { + return 6 * (sensor.getLayerNumber() - 1) + 1; + } + } else { + + if (sensor.isTopLayer()) { + if (sensor.getSide() == HpsSiSensor.POSITRON_SIDE) { + return 6 * (sensor.getLayerNumber() - 7) + 2; + } else { + return 6 * (sensor.getLayerNumber() - 7) + 3; + } + } else if (sensor.isBottomLayer()) { + if (sensor.getSide() == HpsSiSensor.POSITRON_SIDE) { + return 6 * (sensor.getLayerNumber() - 7) + 4; + } else { + return 6 * (sensor.getLayerNumber() - 7) + 5; + } + } + } + + return -1; } protected void detectorChanged(Detector detector) { - - sensors - = detector.getSubdetector(SUBDETECTOR_NAME).getDetectorElement().findDescendants(HpsSiSensor.class); - + + 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)); + 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), createPlotterStyle()); occupancyMap.put(sensor, new int[640]); - } - - for (IPlotter plotter : plotters.values()) { - plotter.show(); - } + } + + for (IPlotter plotter : plotters.values()) { + plotter.show(); + } } public void process(EventHeader event) { - - if (!event.hasCollection(RawTrackerHit.class, rawTrackerHitCollectionName)) - return; - eventCount++; - + 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) { - int[] strips = occupancyMap.get((HpsSiSensor) rawHit.getDetectorElement()); - strips[rawHit.getIdentifierFieldValue("strip")] += 1; - } + // Increment strip hit count. + for (RawTrackerHit rawHit : rawHits) { + int[] strips = occupancyMap.get((HpsSiSensor) rawHit.getDetectorElement()); + strips[rawHit.getIdentifierFieldValue("strip")] += 1; + } - // Plot strip occupancies. - if (eventCount % eventRefreshRate == 0) { - for (HpsSiSensor sensor : sensors) { - int[] strips = occupancyMap.get(sensor); - for (int i = 0; i < strips.length; i++) { - double stripOccupancy = (double) strips[i] / (double) eventCount; - if (stripOccupancy != 0) { - occupancyPlots.get(sensor).fill(i, stripOccupancy); - } - } - } - } + // Plot strip occupancies. + if (eventCount % eventRefreshRate == 0) { + for (HpsSiSensor sensor : sensors) { + int[] strips = occupancyMap.get(sensor); + for (int i = 0; i < strips.length; i++) { + double stripOccupancy = (double) strips[i] / (double) eventCount; + if (stripOccupancy != 0) { + occupancyPlots.get(sensor).fill(i, stripOccupancy); + } + } + } + } + } + + static IPlotterStyle createPlotterStyle() { + IPlotterStyle style = styleRegistry.getStore("DefaultStyleStore").getStyle("DefaultHistogram1DStyle"); + style.dataStyle().lineStyle().setVisible(false); + style.dataStyle().outlineStyle().setVisible(false); + style.dataStyle().fillStyle().setVisible(true); + style.dataStyle().fillStyle().setColor("blue"); + style.legendBoxStyle().setVisible(false); + style.dataStyle().errorBarStyle().setVisible(false); + return style; } }