Print

Print


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