Author: [log in to unmask] Date: Thu Mar 12 15:58:59 2015 New Revision: 2421 Log: Use JFreeChart by default. Added plots for the amplitude and chi2 probability of a hit. 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 Thu Mar 12 15:58:59 2015 @@ -9,6 +9,7 @@ import hep.aida.IHistogram1D; import hep.aida.IPlotter; import hep.aida.IPlotterFactory; +import hep.aida.IPlotterStyle; import org.lcsim.util.Driver; import org.lcsim.detector.tracker.silicon.HpsSiSensor; @@ -17,8 +18,8 @@ import org.lcsim.event.LCRelation; import org.lcsim.event.RawTrackerHit; import org.lcsim.geometry.Detector; - import org.hps.recon.tracking.FittedRawTrackerHit; +import org.hps.recon.tracking.ShapeFitParameters; /** * Monitoring driver that will be used when 'timing in' the SVT. @@ -27,14 +28,24 @@ * @author Omar Moreno <[log in to unmask]> */ public class SvtTimingInPlots extends Driver { - + // TODO: Add documentation // TODO: Set plot styles - + + static { + 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<Integer, List<RawTrackerHit>> topRawHitsPerLayer = new HashMap<Integer, List<RawTrackerHit>>(); + protected Map<Integer, List<RawTrackerHit>> botRawHitsPerLayer = new HashMap<Integer, List<RawTrackerHit>>(); + IPlotterStyle style = null; + private int computePlotterRegion(HpsSiSensor sensor) { @@ -64,33 +75,53 @@ return -1; } - - protected void detectorChanged(Detector detector) { - + List<HpsSiSensor> sensors = detector.getSubdetector("Tracker").getDetectorElement().findDescendants(HpsSiSensor.class); - //--- t0 Plots ---// - //----------------// 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); - int index = 0; + + 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); + 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)); + 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)); + } 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)); } } - + for (IPlotter plotter : plotters.values()) { plotter.show(); } @@ -103,14 +134,23 @@ List<LCRelation> fittedHits = event.get(LCRelation.class, "SVTFittedRawTrackerHits"); - for (LCRelation fittedHit : fittedHits) { + RawTrackerHit rawHit = (RawTrackerHit) fittedHit.getFrom(); + HpsSiSensor sensor - = (HpsSiSensor) ((RawTrackerHit) fittedHit.getFrom()).getDetectorElement(); + = (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); + + } } }