Author: [log in to unmask] Date: Tue Mar 31 13:12:18 2015 New Revision: 2636 Log: Fix a bug present when calculating occupancies. Set different data styles for top and bottom layers. Also use different background styles depending on whether a sensor is axial or stereo. 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/SvtHitPlots.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 Tue Mar 31 13:12:18 2015 @@ -6,9 +6,7 @@ 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; @@ -22,7 +20,7 @@ /** * 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]> */ @@ -30,10 +28,12 @@ // TODO: Add documentation // TODO: Set plot styles - + static { + hep.aida.jfree.AnalysisFactory.register(); + } + 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>(); @@ -55,6 +55,59 @@ 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()) { + 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; + } } private int computePlotterRegion(HpsSiSensor sensor) { @@ -84,67 +137,48 @@ return -1; } - - 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."); + + IPlotterStyle createOccupancyPlotStyle(HpsSiSensor sensor) { + // Create a default style + IPlotterStyle style = this.plotterFactory.createPlotterStyle(); + + // Set the style of the X axis + style.xAxisStyle().setLabel("Channel"); + style.xAxisStyle().labelStyle().setFontSize(14); + style.xAxisStyle().setVisible(true); + + // Set the style of the Y axis + style.yAxisStyle().setLabel("Occupancy"); + style.yAxisStyle().labelStyle().setFontSize(14); + style.yAxisStyle().setVisible(true); + + // Turn off the histogram grid + style.gridStyle().setVisible(false); + + // Set the style of the data + style.dataStyle().lineStyle().setVisible(false); + style.dataStyle().outlineStyle().setVisible(true); + style.dataStyle().outlineStyle().setThickness(3); + style.dataStyle().fillStyle().setVisible(true); + style.dataStyle().fillStyle().setOpacity(.10); + if (sensor.isTopLayer()) { + style.dataStyle().fillStyle().setColor("31, 137, 229, 1"); + style.dataStyle().outlineStyle().setColor("31, 137, 229, 1"); + } else { + style.dataStyle().fillStyle().setColor("93, 228, 47, 1"); + style.dataStyle().outlineStyle().setColor("93, 228, 47, 1"); } - - 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), createPlotterStyle()); - occupancyMap.put(sensor, new int[640]); - } - - for (IPlotter plotter : plotters.values()) { - 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) { - 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); - } - } - } - } - } - - 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.dataStyle().errorBarStyle().setVisible(false); + + // Turn off the legend style.legendBoxStyle().setVisible(false); - style.dataStyle().errorBarStyle().setVisible(false); + + // Turn off the title + style.titleStyle().setVisible(false); + + style.regionBoxStyle().backgroundStyle().setOpacity(.10); + if (sensor.isAxial()) style.regionBoxStyle().backgroundStyle().setColor("229, 114, 31, 1"); + return style; } } 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 Tue Mar 31 13:12:18 2015 @@ -5,6 +5,8 @@ import hep.aida.IHistogramFactory; import hep.aida.IPlotter; import hep.aida.IPlotterFactory; +import hep.aida.IPlotterStyle; +import hep.aida.ref.plotter.PlotterStyle; import java.util.HashMap; import java.util.List; @@ -100,7 +102,7 @@ hitsPerSensorPlots.put(sensor, histogramFactory.createHistogram1D(sensor.getName() + " - Raw Hits", 10, 0, 10)); plotters.get("Raw hits per sensor").region(this.computePlotterRegion(sensor)) - .plot(hitsPerSensorPlots.get(sensor)); + .plot(hitsPerSensorPlots.get(sensor), this.createPlotterStyle()); hitsPerSensor.put(sensor, new int[1]); } @@ -190,6 +192,11 @@ layersHitPlots.get("Bottom").fill(totalBotLayersHit); } + + private IPlotterStyle createPlotterStyle() { + IPlotterStyle style = plotterFactory.createPlotterStyle(); + return style; + } @Override protected void endOfData() { @@ -201,5 +208,8 @@ System.out.println("% Total Top SVT Hits/Event: " + totalTopHitCount/eventCount); System.out.println("% Total Bottom SVT Hits/Event: " + totalBotHitCount/eventCount); System.out.println("\n%================================================%"); - } + } + + + }