Print

Print


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%================================================%");
-    }    
+    }
+    
+    
+    
 }