Author: [log in to unmask] Date: Tue Mar 31 14:36:51 2015 New Revision: 2637 Log: Add a plot of the maximum sample number in a sample set. 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 Tue Mar 31 14:36:51 2015 @@ -37,159 +37,183 @@ hep.aida.jfree.AnalysisFactory.register(); } - static IHistogramFactory histogramFactory = IAnalysisFactory.create().createHistogramFactory(null); - 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, 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; - - + static IHistogramFactory histogramFactory = IAnalysisFactory.create().createHistogramFactory(null); + 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, 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; + + private int computePlotterRegion(HpsSiSensor sensor) { - if (sensor.getLayerNumber() < 7) { - if (sensor.isTopLayer()) { - return 2*(sensor.getLayerNumber() - 1); - } else { - return 2*(sensor.getLayerNumber() - 1) + 1; - } - } else { - - if (sensor.isTopLayer()) { - if (sensor.getSide() == HpsSiSensor.POSITRON_SIDE) { - return 4*(sensor.getLayerNumber() - 7); - } else { - return 4*(sensor.getLayerNumber() - 7) + 1; - } - } else if (sensor.isBottomLayer()) { - if (sensor.getSide() == HpsSiSensor.POSITRON_SIDE) { - return 4*(sensor.getLayerNumber() - 7) + 2; - } else { - return 4*(sensor.getLayerNumber() - 7) + 3; - } - } - } - - return -1; + if (sensor.getLayerNumber() < 7) { + if (sensor.isTopLayer()) { + return 2*(sensor.getLayerNumber() - 1); + } else { + return 2*(sensor.getLayerNumber() - 1) + 1; + } + } else { + + if (sensor.isTopLayer()) { + if (sensor.getSide() == HpsSiSensor.POSITRON_SIDE) { + return 4*(sensor.getLayerNumber() - 7); + } else { + return 4*(sensor.getLayerNumber() - 7) + 1; + } + } else if (sensor.isBottomLayer()) { + if (sensor.getSide() == HpsSiSensor.POSITRON_SIDE) { + return 4*(sensor.getLayerNumber() - 7) + 2; + } else { + return 4*(sensor.getLayerNumber() - 7) + 3; + } + } + } + + return -1; } - - protected void detectorChanged(Detector detector) { - - List<HpsSiSensor> sensors - = detector.getSubdetector("Tracker").getDetectorElement().findDescendants(HpsSiSensor.class); - - plotters.put("L1-L3 t0", plotterFactory.create("L1-L3 t0")); - plotters.get("L1-L3 t0").createRegions(6,2); - - plotters.put("L4-L6 t0", plotterFactory.create("L4-L6 t0")); - plotters.get("L4-L6 t0").createRegions(6,4); - - plotters.put("L1-L3 Amplitude", plotterFactory.create("L1-L3 Amplitude")); - plotters.get("L1-L3 Amplitude").createRegions(6,2); - - plotters.put("L4-L6 Amplitude", plotterFactory.create("L4-L6 Amplitude")); - plotters.get("L4-L6 Amplitude").createRegions(6,4); - - plotters.put("L1-L3 Chi^2 Probability", plotterFactory.create("L1-L3 Chi^2 Probability")); - plotters.get("L1-L3 Chi^2 Probability").createRegions(6,2); - - plotters.put("L4-L6 Chi^2 Probability", plotterFactory.create("L1-L3 Chi^2 Probability")); - plotters.get("L4-L6 Chi^2 Probability").createRegions(6,4); - - plotters.put("L1-L3 t0 vs Amplitude", plotterFactory.create("L1-L3 t0 vs Amplitude")); - plotters.get("L1-L3 t0 vs Amplitude").createRegions(6, 2); - - plotters.put("L4-L6 t0 vs Amplitude", plotterFactory.create("L4-L6 t0 vs Amplitude")); - plotters.get("L4-L6 t0 vs Amplitude").createRegions(6, 4); - - plotters.put("L1-L3 t0 vs Chi^2 Prob.", plotterFactory.create("L1-L3 t0 vs Chi^2 Prob.")); - plotters.get("L1-L3 t0 vs Chi^2 Prob.").createRegions(6, 2); - - plotters.put("L4-L6 t0 vs Chi^2 Prob.", plotterFactory.create("L4-L6 t0 vs Chi^2 Prob.")); - plotters.get("L4-L6 t0 vs Chi^2 Prob.").createRegions(6, 4); - - plotters.put("L1-L3 Chi^2 Prob. vs Amplitude", plotterFactory.create("L1-L3 Chi^2 Prob. vs Amplitude")); - plotters.get("L1-L3 Chi^2 Prob. vs Amplitude").createRegions(6, 2); - - 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)); - - if (sensor.getLayerNumber() < 7) { - plotters.get("L1-L3 t0").region(this.computePlotterRegion(sensor)) - .plot(t0Plots.get(sensor)); - plotters.get("L1-L3 Amplitude").region(this.computePlotterRegion(sensor)) - .plot(amplitudePlots.get(sensor)); - plotters.get("L1-L3 Chi^2 Probability").region(this.computePlotterRegion(sensor)) - .plot(chi2Plots.get(sensor)); - plotters.get("L1-L3 t0 vs Amplitude").region(this.computePlotterRegion(sensor)) - .plot(t0vAmpPlots.get(sensor)); - plotters.get("L1-L3 t0 vs Chi^2 Prob.").region(this.computePlotterRegion(sensor)) - .plot(t0vChi2Plots.get(sensor)); - plotters.get("L1-L3 Chi^2 Prob. vs Amplitude").region(this.computePlotterRegion(sensor)) - .plot(chi2vAmpPlots.get(sensor)); - - } else { - plotters.get("L4-L6 t0").region(this.computePlotterRegion(sensor)) - .plot(t0Plots.get(sensor)); - plotters.get("L4-L6 Amplitude").region(this.computePlotterRegion(sensor)) - .plot(amplitudePlots.get(sensor)); - plotters.get("L4-L6 Chi^2 Probability").region(this.computePlotterRegion(sensor)) - .plot(chi2Plots.get(sensor)); - plotters.get("L4-L6 t0 vs Amplitude").region(this.computePlotterRegion(sensor)) - .plot(t0vAmpPlots.get(sensor)); - plotters.get("L4-L6 t0 vs Chi^2 Prob.").region(this.computePlotterRegion(sensor)) - .plot(t0vChi2Plots.get(sensor)); - plotters.get("L4-L6 Chi^2 Prob. vs Amplitude").region(this.computePlotterRegion(sensor)) - .plot(chi2vAmpPlots.get(sensor)); - } - } - - for (IPlotter plotter : plotters.values()) { - plotter.show(); - } - } - - public void process(EventHeader event) { - - if (!event.hasCollection(LCRelation.class, "SVTFittedRawTrackerHits")) - return; - - List<LCRelation> fittedHits = event.get(LCRelation.class, "SVTFittedRawTrackerHits"); - - for (LCRelation fittedHit : fittedHits) { - - RawTrackerHit rawHit = (RawTrackerHit) fittedHit.getFrom(); - - HpsSiSensor sensor - = (HpsSiSensor) rawHit.getDetectorElement(); - - double t0 = FittedRawTrackerHit.getT0(fittedHit); - t0Plots.get(sensor).fill(t0); - - double amplitude = FittedRawTrackerHit.getAmp(fittedHit); - amplitudePlots.get(sensor).fill(amplitude); - - double chi2Prob = ShapeFitParameters.getChiProb(FittedRawTrackerHit.getShapeFitParameters(fittedHit)); - chi2Plots.get(sensor).fill(chi2Prob); - - t0vAmpPlots.get(sensor).fill(t0, amplitude); - t0vChi2Plots.get(sensor).fill(t0, chi2Prob); - chi2vAmpPlots.get(sensor).fill(chi2Prob, amplitude); - - } - } + + protected void detectorChanged(Detector detector) { + + List<HpsSiSensor> sensors + = detector.getSubdetector("Tracker").getDetectorElement().findDescendants(HpsSiSensor.class); + + plotters.put("L1-L3 t0", plotterFactory.create("L1-L3 t0")); + plotters.get("L1-L3 t0").createRegions(6,2); + + plotters.put("L4-L6 t0", plotterFactory.create("L4-L6 t0")); + plotters.get("L4-L6 t0").createRegions(6,4); + + plotters.put("L1-L3 Amplitude", plotterFactory.create("L1-L3 Amplitude")); + plotters.get("L1-L3 Amplitude").createRegions(6,2); + + plotters.put("L4-L6 Amplitude", plotterFactory.create("L4-L6 Amplitude")); + plotters.get("L4-L6 Amplitude").createRegions(6,4); + + plotters.put("L1-L3 Chi^2 Probability", plotterFactory.create("L1-L3 Chi^2 Probability")); + plotters.get("L1-L3 Chi^2 Probability").createRegions(6,2); + + plotters.put("L4-L6 Chi^2 Probability", plotterFactory.create("L1-L3 Chi^2 Probability")); + plotters.get("L4-L6 Chi^2 Probability").createRegions(6,4); + + plotters.put("L1-L3 Max Sample Number", plotterFactory.create("L1-L3 Max Sample Number")); + plotters.get("L1-L3 Max Sample Number").createRegions(6,2); + + 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 t0 vs Amplitude", plotterFactory.create("L1-L3 t0 vs Amplitude")); + plotters.get("L1-L3 t0 vs Amplitude").createRegions(6, 2); + + plotters.put("L4-L6 t0 vs Amplitude", plotterFactory.create("L4-L6 t0 vs Amplitude")); + plotters.get("L4-L6 t0 vs Amplitude").createRegions(6, 4); + + plotters.put("L1-L3 t0 vs Chi^2 Prob.", plotterFactory.create("L1-L3 t0 vs Chi^2 Prob.")); + plotters.get("L1-L3 t0 vs Chi^2 Prob.").createRegions(6, 2); + + plotters.put("L4-L6 t0 vs Chi^2 Prob.", plotterFactory.create("L4-L6 t0 vs Chi^2 Prob.")); + plotters.get("L4-L6 t0 vs Chi^2 Prob.").createRegions(6, 4); + + plotters.put("L1-L3 Chi^2 Prob. vs Amplitude", plotterFactory.create("L1-L3 Chi^2 Prob. vs Amplitude")); + plotters.get("L1-L3 Chi^2 Prob. vs Amplitude").createRegions(6, 2); + + 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)); + + if (sensor.getLayerNumber() < 7) { + plotters.get("L1-L3 t0").region(this.computePlotterRegion(sensor)) + .plot(t0Plots.get(sensor)); + plotters.get("L1-L3 Amplitude").region(this.computePlotterRegion(sensor)) + .plot(amplitudePlots.get(sensor)); + plotters.get("L1-L3 Chi^2 Probability").region(this.computePlotterRegion(sensor)) + .plot(chi2Plots.get(sensor)); + plotters.get("L1-L3 t0 vs Amplitude").region(this.computePlotterRegion(sensor)) + .plot(t0vAmpPlots.get(sensor)); + plotters.get("L1-L3 t0 vs Chi^2 Prob.").region(this.computePlotterRegion(sensor)) + .plot(t0vChi2Plots.get(sensor)); + plotters.get("L1-L3 Chi^2 Prob. vs Amplitude").region(this.computePlotterRegion(sensor)) + .plot(chi2vAmpPlots.get(sensor)); + plotters.get("L1-L3 Max Sample Number").region(this.computePlotterRegion(sensor)) + .plot(maxSampleNumberPlots.get(sensor)); + } else { + plotters.get("L4-L6 t0").region(this.computePlotterRegion(sensor)) + .plot(t0Plots.get(sensor)); + plotters.get("L4-L6 Amplitude").region(this.computePlotterRegion(sensor)) + .plot(amplitudePlots.get(sensor)); + plotters.get("L4-L6 Chi^2 Probability").region(this.computePlotterRegion(sensor)) + .plot(chi2Plots.get(sensor)); + plotters.get("L4-L6 t0 vs Amplitude").region(this.computePlotterRegion(sensor)) + .plot(t0vAmpPlots.get(sensor)); + plotters.get("L4-L6 t0 vs Chi^2 Prob.").region(this.computePlotterRegion(sensor)) + .plot(t0vChi2Plots.get(sensor)); + plotters.get("L4-L6 Chi^2 Prob. vs Amplitude").region(this.computePlotterRegion(sensor)) + .plot(chi2vAmpPlots.get(sensor)); + plotters.get("L4-L6 Max Sample Number").region(this.computePlotterRegion(sensor)) + .plot(maxSampleNumberPlots.get(sensor)); + } + } + + for (IPlotter plotter : plotters.values()) { + plotter.show(); + } + } + + public void process(EventHeader event) { + + if (!event.hasCollection(LCRelation.class, "SVTFittedRawTrackerHits")) + return; + + List<LCRelation> fittedHits = event.get(LCRelation.class, "SVTFittedRawTrackerHits"); + + for (LCRelation fittedHit : fittedHits) { + + RawTrackerHit rawHit = (RawTrackerHit) fittedHit.getFrom(); + + HpsSiSensor sensor + = (HpsSiSensor) rawHit.getDetectorElement(); + + + short[] adcValues = rawHit.getADCValues(); + + int maxAmplitude = 0; + int maxSampleNumber = -1; + for (int sampleN = 0; sampleN < 6; sampleN++) { + if (adcValues[sampleN] > maxAmplitude) { + maxAmplitude = adcValues[sampleN]; + maxSampleNumber = sampleN; + } + } + maxSampleNumberPlots.get(sensor).fill(maxSampleNumber); + + double t0 = FittedRawTrackerHit.getT0(fittedHit); + t0Plots.get(sensor).fill(t0); + + double amplitude = FittedRawTrackerHit.getAmp(fittedHit); + amplitudePlots.get(sensor).fill(amplitude); + + double chi2Prob = ShapeFitParameters.getChiProb(FittedRawTrackerHit.getShapeFitParameters(fittedHit)); + chi2Plots.get(sensor).fill(chi2Prob); + + t0vAmpPlots.get(sensor).fill(t0, amplitude); + t0vChi2Plots.get(sensor).fill(t0, chi2Prob); + chi2vAmpPlots.get(sensor).fill(chi2Prob, amplitude); + + } + } }