Print

Print


Author: [log in to unmask]
Date: Wed Apr 15 22:42:10 2015
New Revision: 2718

Log:
Style all plots and add plots of the max sample number.

Modified:
    java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtTimingInPlots.java

Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtTimingInPlots.java
 =============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtTimingInPlots.java	(original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtTimingInPlots.java	Wed Apr 15 22:42:10 2015
@@ -1,5 +1,6 @@
 package org.hps.monitoring.drivers.svt;
 
+import java.io.IOException;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map; 
@@ -11,12 +12,14 @@
 import hep.aida.IPlotter;
 import hep.aida.IPlotterFactory;
 import hep.aida.IPlotterStyle;
-
+import hep.aida.ITree;
 import hep.aida.jfree.plotter.Plotter;
+import hep.aida.ref.rootwriter.RootFileStore;
 
 import org.lcsim.util.Driver; 
 import org.lcsim.detector.tracker.silicon.HpsSiSensor;
 import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.LCRelation;
 import org.lcsim.event.RawTrackerHit;
@@ -39,19 +42,28 @@
         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>(); 
     protected Map<SiSensor, IHistogram1D> t0Plots = new HashMap<SiSensor, IHistogram1D>(); 
     protected Map<SiSensor, IHistogram1D> amplitudePlots = new HashMap<SiSensor, IHistogram1D>(); 
     protected Map<SiSensor, IHistogram1D> chi2Plots = new HashMap<SiSensor, IHistogram1D>(); 
-    protected Map<SiSensor, IHistogram1D> maxSampleNumberPlots = new HashMap<SiSensor, IHistogram1D>(); 
+    protected Map<SiSensor, IHistogram1D> maxSampleNumberPerSensorPlots = new HashMap<SiSensor, IHistogram1D>(); 
+    protected Map<SiSensor, IHistogram1D> maxSampleNumberPerSensorOppPlots = new HashMap<SiSensor, IHistogram1D>(); 
+    protected Map<String, IHistogram1D>   maxSampleNumberPerVolumePlots = new HashMap<String, IHistogram1D>();
+    protected IHistogram1D maxSampleNumberPlot = null; 
     protected Map<SiSensor, IHistogram2D> t0vAmpPlots = new HashMap<SiSensor, IHistogram2D>(); 
     protected Map<SiSensor, IHistogram2D> t0vChi2Plots = new HashMap<SiSensor, IHistogram2D>(); 
-    protected Map<SiSensor, IHistogram2D> chi2vAmpPlots = new HashMap<SiSensor, IHistogram2D>(); 
-    
-    IPlotterStyle style = null; 
-    
+    protected Map<SiSensor, IHistogram2D> chi2vAmpPlots = new HashMap<SiSensor, IHistogram2D>();
+    
+    String rootFile = "default.root";
+   
+    boolean batchMode = false; 
+    
+    public void setBatchMode(boolean batchMode) { 
+        this.batchMode = batchMode; 
+    }
     
     private int computePlotterRegion(HpsSiSensor sensor) {
 
@@ -83,6 +95,9 @@
     
     protected void detectorChanged(Detector detector) {
       
+        tree = IAnalysisFactory.create().createTreeFactory().create();
+        histogramFactory = IAnalysisFactory.create().createHistogramFactory(tree);
+        
         List<HpsSiSensor> sensors 
             = detector.getSubdetector("Tracker").getDetectorElement().findDescendants(HpsSiSensor.class);
     
@@ -109,7 +124,16 @@
 
         plotters.put("L4-L6 Max Sample Number", plotterFactory.create("L4-L6 Max Sample Number"));
         plotters.get("L4-L6 Max Sample Number").createRegions(6,4);
-    
+
+        plotters.put("L1-L3 Max Sample Number - Opposite", plotterFactory.create("L1-L3 Max Sample Number - Opposite"));
+        plotters.get("L1-L3 Max Sample Number - Opposite").createRegions(6,2);
+
+        plotters.put("L4-L6 Max Sample Number - Opposite", plotterFactory.create("L4-L6 Max Sample Number - Opposite"));
+        plotters.get("L4-L6 Max Sample Number - Opposite").createRegions(6,4);
+       
+        plotters.put("Max Sample Per Volume", plotterFactory.create("Max Sample Per Volume"));
+        plotters.get("Max Sample Per Volume").createRegions(1,2);
+        
         plotters.put("L1-L3 t0 vs Amplitude", plotterFactory.create("L1-L3 t0 vs Amplitude"));
         plotters.get("L1-L3 t0 vs Amplitude").createRegions(6, 2);
         
@@ -127,53 +151,66 @@
         
         plotters.put("L4-L6 Chi^2 Prob. vs Amplitude", plotterFactory.create("L4-L6 Chi^2 Prob. vs Amplitude"));
         plotters.get("L4-L6 Chi^2 Prob. vs Amplitude").createRegions(6, 4);
-
+       
         for (HpsSiSensor sensor : sensors) {
 
+            
             t0Plots.put(sensor,histogramFactory.createHistogram1D(sensor.getName() + " - t0",75, -50, 100.0));
             amplitudePlots.put(sensor, histogramFactory.createHistogram1D(sensor.getName() + " - Amplitude", 200, 0, 2000));
             chi2Plots.put(sensor, histogramFactory.createHistogram1D(sensor.getName() + " - Chi^2 Probability", 20, 0, 1));
             t0vAmpPlots.put(sensor, histogramFactory.createHistogram2D(sensor.getName() + " - t0 v Amplitude", 75, -50, 100.0, 200, 0, 2000));
             t0vChi2Plots.put(sensor, histogramFactory.createHistogram2D(sensor.getName() + " - t0 v Chi^2 Probability", 75, -50, 100.0, 20, 0, 1));
             chi2vAmpPlots.put(sensor, histogramFactory.createHistogram2D(sensor.getName() + " - Chi2 v Amplitude", 20, 0, 1, 200, 0, 2000));
-            maxSampleNumberPlots.put(sensor, histogramFactory.createHistogram1D(sensor.getName() + " - Max Sample Number", 6, 0, 6));
+            maxSampleNumberPerSensorPlots.put(sensor, histogramFactory.createHistogram1D(sensor.getName() + " - Max Sample Number", 6, 0, 6));
+            maxSampleNumberPerSensorOppPlots.put(sensor, histogramFactory.createHistogram1D(sensor.getName() + " - Max Sample Number - Opposite", 6, 0, 6));
             
             if (sensor.getLayerNumber() < 7) {
                 plotters.get("L1-L3 t0").region(this.computePlotterRegion(sensor))
-                                        .plot(t0Plots.get(sensor));
+                                        .plot(t0Plots.get(sensor), this.createStyle("t0 [ns]", ""));
                 plotters.get("L1-L3 Amplitude").region(this.computePlotterRegion(sensor))
-                                               .plot(amplitudePlots.get(sensor));
+                                               .plot(amplitudePlots.get(sensor), this.createStyle("Amplitude [ADC Counts] ", ""));
                 plotters.get("L1-L3 Chi^2 Probability").region(this.computePlotterRegion(sensor))
-                                               .plot(chi2Plots.get(sensor));
+                                               .plot(chi2Plots.get(sensor), this.createStyle("#chi^{2} Probability", ""));
                 plotters.get("L1-L3 t0 vs Amplitude").region(this.computePlotterRegion(sensor))
-                                                     .plot(t0vAmpPlots.get(sensor));
+                                                     .plot(t0vAmpPlots.get(sensor), this.createStyle("t0 [ns]", "Amplitude [ADC Counts]"));
                 plotters.get("L1-L3 t0 vs Chi^2 Prob.").region(this.computePlotterRegion(sensor))
-                                                     .plot(t0vChi2Plots.get(sensor));
+                                                     .plot(t0vChi2Plots.get(sensor), this.createStyle("t0 [ns]", "#chi^{2} Probability"));
                 plotters.get("L1-L3 Chi^2 Prob. vs Amplitude").region(this.computePlotterRegion(sensor))
-                                                     .plot(chi2vAmpPlots.get(sensor));
+                                                     .plot(chi2vAmpPlots.get(sensor), this.createStyle("#chi^{2} Probability","Amplitude [ADC Counts]"));
                plotters.get("L1-L3 Max Sample Number").region(this.computePlotterRegion(sensor))
-                                                      .plot(maxSampleNumberPlots.get(sensor));
+                                                      .plot(maxSampleNumberPerSensorPlots.get(sensor), this.createStyle("Max Sample Number", ""));
+               plotters.get("L1-L3 Max Sample Number - Opposite").region(this.computePlotterRegion(sensor))
+                                                      .plot(maxSampleNumberPerSensorOppPlots.get(sensor),this.createStyle("Max Sample Number", ""));
             } else {
                 plotters.get("L4-L6 t0").region(this.computePlotterRegion(sensor))
-                                        .plot(t0Plots.get(sensor));
+                                        .plot(t0Plots.get(sensor), this.createStyle("t0 [ns]", ""));
                 plotters.get("L4-L6 Amplitude").region(this.computePlotterRegion(sensor))
-                                               .plot(amplitudePlots.get(sensor));
+                                               .plot(amplitudePlots.get(sensor), this.createStyle("Amplitude [ADC Counts] ", ""));
                 plotters.get("L4-L6 Chi^2 Probability").region(this.computePlotterRegion(sensor))
-                                                       .plot(chi2Plots.get(sensor));
+                                                       .plot(chi2Plots.get(sensor),  this.createStyle("#chi^{2} Probability", ""));
                 plotters.get("L4-L6 t0 vs Amplitude").region(this.computePlotterRegion(sensor))
-                                                     .plot(t0vAmpPlots.get(sensor));
+                                                     .plot(t0vAmpPlots.get(sensor), this.createStyle("t0 [ns]", "Amplitude [ADC Counts]"));
                 plotters.get("L4-L6 t0 vs Chi^2 Prob.").region(this.computePlotterRegion(sensor))
-                                                       .plot(t0vChi2Plots.get(sensor));
+                                                       .plot(t0vChi2Plots.get(sensor), this.createStyle("t0 [ns]", "#chi^{2} Probability"));
                 plotters.get("L4-L6 Chi^2 Prob. vs Amplitude").region(this.computePlotterRegion(sensor))
-                                                              .plot(chi2vAmpPlots.get(sensor));
+                                                              .plot(chi2vAmpPlots.get(sensor), this.createStyle("#chi^{2} Probability","Amplitude [ADC Counts]"));
                 plotters.get("L4-L6 Max Sample Number").region(this.computePlotterRegion(sensor))
-                                                       .plot(maxSampleNumberPlots.get(sensor));
+                                                       .plot(maxSampleNumberPerSensorPlots.get(sensor), this.createStyle("Max Sample Number", ""));
+                plotters.get("L4-L6 Max Sample Number - Opposite").region(this.computePlotterRegion(sensor))
+                                                       .plot(maxSampleNumberPerSensorOppPlots.get(sensor), this.createStyle("Max Sample Number", ""));
             }
         }
-        
-        for (IPlotter plotter : plotters.values()) { 
-            //((Plotter) plotter).panel().;
-            plotter.show();
+       
+       maxSampleNumberPerVolumePlots.put("Top", histogramFactory.createHistogram1D("SVT Top - Max Sample Number", 6, 0, 6));
+       maxSampleNumberPerVolumePlots.put("Bottom", histogramFactory.createHistogram1D("SVT Bottom - Max Sample Number", 6, 0, 6));
+       plotters.get("Max Sample Per Volume").region(0).plot(maxSampleNumberPerVolumePlots.get("Top"));
+       plotters.get("Max Sample Per Volume").region(1).plot(maxSampleNumberPerVolumePlots.get("Bottom"));
+       
+
+       if (batchMode) return;
+        
+       for (IPlotter plotter : plotters.values()) { 
+           plotter.show();
         }
     }
     
@@ -202,7 +239,16 @@
                     maxSampleNumber = sampleN; 
                 }
             }
-            maxSampleNumberPlots.get(sensor).fill(maxSampleNumber);
+
+            // WARNING: This is only meant to be used when running with clusters
+            //          which are purely top clusters
+            if (sensor.isTopLayer()) { 
+                maxSampleNumberPerSensorPlots.get(sensor).fill(maxSampleNumber);
+                maxSampleNumberPerVolumePlots.get("Top").fill(maxSampleNumber);
+            } else { 
+                maxSampleNumberPerSensorOppPlots.get(sensor).fill(maxSampleNumber);
+                maxSampleNumberPerVolumePlots.get("Bottom").fill(maxSampleNumber);
+            }
             
             double t0 = FittedRawTrackerHit.getT0(fittedHit);
             t0Plots.get(sensor).fill(t0);
@@ -222,6 +268,53 @@
     
     @Override
     public void endOfData() { 
-        
-    }
+        RootFileStore store = new RootFileStore(rootFile);
+        try {
+            //tree.commit();
+            store.open();
+            store.add(tree);
+            store.close(); 
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+    
+    IPlotterStyle createStyle(String xAxisTitle, String yAxisTitle) { 
+       
+        // Create a default style
+        IPlotterStyle style = this.plotterFactory.createPlotterStyle();
+        
+        // Set the style of the X axis
+        style.xAxisStyle().setLabel(xAxisTitle);
+        style.xAxisStyle().labelStyle().setFontSize(14);
+        style.xAxisStyle().setVisible(true);
+        
+        // Set the style of the Y axis
+        style.yAxisStyle().setLabel(yAxisTitle);
+        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);
+        style.dataStyle().fillStyle().setColor("31, 137, 229, 1");
+        style.dataStyle().outlineStyle().setColor("31, 137, 229, 1");
+        style.dataStyle().errorBarStyle().setVisible(false);
+        
+        // Turn off the legend
+        style.legendBoxStyle().setVisible(false);
+       
+        // Turn off the title
+        style.titleStyle().setVisible(false);
+        
+        return style;
+    }
+    
+    
 }