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