Print

Print


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;
     }
 }