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