Print

Print


Author: [log in to unmask]
Date: Tue Mar  1 18:20:12 2016
New Revision: 4275

Log:
clean up monitoring plots

Added:
    java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTPulseFitPlots.java
Modified:
    java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SensorOccupancyPlotsDriver.java
    java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtHitPlots.java
    java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackTimePlots.java
    java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackingReconPlots.java
    java/trunk/steering-files/src/main/resources/org/hps/steering/monitoring/SvtOnlineMonitoring.lcsim

Added: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTPulseFitPlots.java
 =============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTPulseFitPlots.java	(added)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTPulseFitPlots.java	Tue Mar  1 18:20:12 2016
@@ -0,0 +1,157 @@
+package org.hps.monitoring.drivers.svt;
+
+import hep.aida.IAnalysisFactory;
+import hep.aida.IHistogram1D;
+import hep.aida.IHistogram2D;
+import hep.aida.IHistogramFactory;
+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.jfree.plotter.PlotterRegion;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.hps.conditions.database.DatabaseConditionsManager;
+import org.hps.conditions.svt.SvtTimingConstants;
+import org.hps.readout.svt.HPSSVTConstants;
+import static org.hps.readout.svt.HPSSVTConstants.SAMPLING_INTERVAL;
+import org.hps.recon.tracking.FittedRawTrackerHit;
+import org.hps.recon.tracking.SvtPlotUtils;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
+import org.lcsim.event.EventHeader;
+import org.lcsim.geometry.Detector;
+import org.lcsim.recon.cat.util.Const;
+import org.lcsim.util.Driver;
+import org.lcsim.util.aida.AIDA;
+
+/**
+ *
+ * @author mgraham
+ */
+public class SVTPulseFitPlots extends Driver {
+
+    static {
+        hep.aida.jfree.AnalysisFactory.register();
+    }
+
+    private String fittedTrackerHitCollectionName = "SVTFittedRawTrackerHits";
+    private static ITree tree = null;
+    private final IAnalysisFactory analysisFactory = AIDA.defaultInstance().analysisFactory();
+    private final IPlotterFactory plotterFactory = analysisFactory.createPlotterFactory("SVT Pulse Fits");
+
+    private static final Map<String, IHistogram1D> t0Plots = new HashMap<String, IHistogram1D>();
+    private static final Map<String, IHistogram1D> ampPlots = new HashMap<String, IHistogram1D>();
+    private static final Map<String, IHistogram1D> chiprobPlots = new HashMap<String, IHistogram1D>();
+    private static final Map<String, IHistogram2D> t0aPlots = new HashMap<String, IHistogram2D>();
+    private static final Map<String, IHistogram2D> shapePlots = new HashMap<String, IHistogram2D>();
+
+    protected Map<String, IPlotter> plotters = new HashMap<String, IPlotter>();
+
+    private static final String subdetectorName = "Tracker";
+    private SvtTimingConstants timingConstants;
+
+    @Override
+    protected void detectorChanged(Detector detector) {
+        timingConstants = DatabaseConditionsManager.getInstance().getCachedConditions(SvtTimingConstants.SvtTimingConstantsCollection.class, "svt_timing_constants").getCachedData().get(0);
+
+        List<HpsSiSensor> sensors = detector.getSubdetector(subdetectorName).getDetectorElement().findDescendants(HpsSiSensor.class);
+
+        plotters.put("Timing", plotterFactory.create("Timing"));
+        plotters.get("Timing").createRegions(6, 6);
+
+        plotters.put("Amplitude", plotterFactory.create("Amplitude"));
+        plotters.get("Amplitude").createRegions(6, 6);
+
+        plotters.put("Chisq", plotterFactory.create("Chisq"));
+        plotters.get("Chisq").createRegions(6, 6);
+
+        plotters.put("A vs. T0", plotterFactory.create("A vs. T0"));
+        plotters.get("A vs. T0").createRegions(6, 6);
+
+        plotters.put("Pulse shape", plotterFactory.create("Pulse shape"));
+        plotters.get("Pulse shape").createRegions(6, 6);
+
+        tree = analysisFactory.createTreeFactory().create();
+        IHistogramFactory histogramFactory = analysisFactory.createHistogramFactory(tree);
+
+        // Setup the occupancy plots.
+        for (HpsSiSensor sensor : sensors) {
+
+            t0Plots.put(sensor.getName(), histogramFactory.createHistogram1D(sensor.getName() + "_timing", 50, -100, 100.0));
+            plotters.get("Timing").region(SvtPlotUtils.computePlotterRegion(sensor)).plot(t0Plots.get(sensor.getName()), this.createStyle(sensor, "Hit time [ns]", ""));
+            ampPlots.put(sensor.getName(), histogramFactory.createHistogram1D(sensor.getName() + "_amplitude", 50, 0, 2000.0));
+            plotters.get("Amplitude").region(SvtPlotUtils.computePlotterRegion(sensor)).plot(ampPlots.get(sensor.getName()), this.createStyle(sensor, "Hit amplitude [ADC]", ""));
+            chiprobPlots.put(sensor.getName(), histogramFactory.createHistogram1D(sensor.getName() + "_chiprob", 100, 0, 1.0));
+            plotters.get("Chisq").region(SvtPlotUtils.computePlotterRegion(sensor)).plot(chiprobPlots.get(sensor.getName()), this.createStyle(sensor, "Chisq probability", ""));
+            t0aPlots.put(sensor.getName(), histogramFactory.createHistogram2D(sensor.getName() + " A vs. T0", 100, -100, 100, 100, 0, 2000));
+            plotters.get("A vs. T0").region(SvtPlotUtils.computePlotterRegion(sensor)).plot(t0aPlots.get(sensor.getName()), this.createStyle(sensor, "Hit time [ns]", "Hit amplitude [ADC]"));
+            shapePlots.put(sensor.getName(), histogramFactory.createHistogram2D(sensor.getName() + " Shape", 200, -1 * SAMPLING_INTERVAL, 6 * SAMPLING_INTERVAL, 100, -0.5, 1.5));
+            plotters.get("Pulse shape").region(SvtPlotUtils.computePlotterRegion(sensor)).plot(shapePlots.get(sensor.getName()), this.createStyle(sensor, "Time after hit [ns]", "Normalized amplitude"));
+        }
+
+        for (IPlotter plotter : plotters.values()) {
+            for (int regionN = 0; regionN < plotter.numberOfRegions(); regionN++) {
+                PlotterRegion region = ((PlotterRegion) ((Plotter) plotter).region(regionN));
+                if (region.getPlottedObjects().isEmpty()) {
+                    continue;
+                }
+                region.getPanel().addMouseListener(new PopupPlotterListener(region));
+            }
+            plotter.show();
+        }
+    }
+
+    IPlotterStyle createStyle(HpsSiSensor sensor, String xAxisTitle, String yAxisTitle) {
+        IPlotterStyle style = SvtPlotUtils.createStyle(plotterFactory, xAxisTitle, yAxisTitle);
+
+        if (sensor.isTopLayer()) {
+            style.dataStyle().fillStyle().setColor("31, 137, 229, 1");
+            style.dataStyle().outlineStyle().setColor("31, 137, 229, 1");
+        } else {
+            style.dataStyle().fillStyle().setColor("93, 228, 47, 1");
+            style.dataStyle().outlineStyle().setColor("93, 228, 47, 1");
+        }
+
+        return style;
+    }
+
+    public SVTPulseFitPlots() {
+    }
+
+    public void setFittedTrackerHitCollectionName(String fittedTrackerHitCollectionName) {
+        this.fittedTrackerHitCollectionName = fittedTrackerHitCollectionName;
+    }
+
+    @Override
+    public void process(EventHeader event) {
+        List<FittedRawTrackerHit> fittedrawHits = event.get(FittedRawTrackerHit.class, fittedTrackerHitCollectionName);
+        for (FittedRawTrackerHit fit : fittedrawHits) {
+            HpsSiSensor sensor = (HpsSiSensor) fit.getRawTrackerHit().getDetectorElement();
+            int strip = fit.getRawTrackerHit().getIdentifierFieldValue("strip");
+            double fittedAmp = fit.getAmp();
+            double fittedT0 = fit.getT0();
+
+            double tof = fit.getRawTrackerHit().getDetectorElement().getGeometry().getPosition().magnitude() / (Const.SPEED_OF_LIGHT * Const.nanosecond);
+            double offset = timingConstants.getOffsetTime()
+                    + (((event.getTimeStamp() - 4 * timingConstants.getOffsetPhase()) % 24) - 12)
+                    + sensor.getShapeFitParameters(strip)[HpsSiSensor.T0_INDEX]
+                    + sensor.getT0Shift()
+                    + tof;
+
+            t0Plots.get(sensor.getName()).fill(fittedT0);
+            ampPlots.get(sensor.getName()).fill(fittedAmp);
+            chiprobPlots.get(sensor.getName()).fill(fit.getShapeFitParameters().getChiProb());
+
+            t0aPlots.get(sensor.getName()).fill(fit.getT0(), fit.getAmp());
+            if (fit.getAmp() > 4 * sensor.getNoise(strip, 0)) {
+                for (int i = 0; i < fit.getRawTrackerHit().getADCValues().length; i++) {
+                    shapePlots.get(sensor.getName()).fill((i * HPSSVTConstants.SAMPLING_INTERVAL - fit.getT0() - offset),
+                            (fit.getRawTrackerHit().getADCValues()[i] - sensor.getPedestal(strip, i)) / fit.getAmp());
+                }
+            }
+        }
+    }
+
+}

Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SensorOccupancyPlotsDriver.java
 =============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SensorOccupancyPlotsDriver.java	(original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SensorOccupancyPlotsDriver.java	Tue Mar  1 18:20:12 2016
@@ -13,8 +13,8 @@
 import hep.aida.IPlotterRegion;
 import hep.aida.IPlotterStyle;
 import hep.aida.ITree;
-import hep.aida.ref.plotter.Plotter;
-import hep.aida.ref.plotter.PlotterRegion;
+import hep.aida.jfree.plotter.Plotter;
+import hep.aida.jfree.plotter.PlotterRegion;
 import hep.aida.ref.rootwriter.RootFileStore;
 import hep.physics.vec.Hep3Vector;
 
@@ -413,7 +413,7 @@
             occupancyMap.put(sensor.getName(), new int[640]);
 
             if (enableMaxSamplePlots) {
-                maxSamplePositionPlots.put(sensor.getName(), histogramFactory.createHistogram1D(sensor.getName() + " - Max Sample Number", 6, 0, 6));
+                maxSamplePositionPlots.put(sensor.getName(), histogramFactory.createHistogram1D(sensor.getName() + " - Max Sample Number", 6, -0.5, 5.5));
                 plotters.get("Max Sample Number").region(SvtPlotUtils.computePlotterRegion(sensor))
                         .plot(maxSamplePositionPlots.get(sensor.getName()),
                                 this.createOccupancyPlotStyle("Max Sample Number", sensor, false));
@@ -422,12 +422,11 @@
 
         for (IPlotter plotter : plotters.values()) {
             for (int regionN = 0; regionN < plotter.numberOfRegions(); regionN++) {
-                //Plotter l;
-                //PlotterRegion region = ((PlotterRegion) ((Plotter) plotter).region(regionN));
-                //if (region..getPlottedObjects().isEmpty()) {
-                //    continue;
-                //}
-                //region.getPanel().addMouseListener(new PopupPlotterListener(region));
+                PlotterRegion region = ((PlotterRegion) ((Plotter) plotter).region(regionN));
+                if (region.getPlottedObjects().isEmpty()) {
+                    continue;
+                }
+                region.getPanel().addMouseListener(new PopupPlotterListener(region));
             }
             plotter.show();
         }

Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtHitPlots.java
 =============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtHitPlots.java	(original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtHitPlots.java	Tue Mar  1 18:20:12 2016
@@ -31,7 +31,7 @@
  *
  * @author Omar Moreno <[log in to unmask]>
  * @author Per Hansson Adrian <[log in to unmask]>
- * 
+ *
  */
 public class SvtHitPlots extends Driver {
 
@@ -42,25 +42,25 @@
 
     // Plotting
     private static ITree tree = null;
-    private IAnalysisFactory analysisFactory = AIDA.defaultInstance().analysisFactory();
-    private IPlotterFactory plotterFactory = analysisFactory.createPlotterFactory("SVT Hits");
+    private final IAnalysisFactory analysisFactory = AIDA.defaultInstance().analysisFactory();
+    private final IPlotterFactory plotterFactory = analysisFactory.createPlotterFactory("SVT Hits");
     private IHistogramFactory histogramFactory = null;
     protected Map<String, IPlotter> plotters = new HashMap<String, IPlotter>();
 
     // Histogram Maps
-    private static Map<String, IHistogram1D> hitsPerSensorPlots = new HashMap<String, IHistogram1D>();
-    private static Map<String, int[]> hitsPerSensor = new HashMap<String, int[]>();
-    private static Map<String, IHistogram1D> layersHitPlots = new HashMap<String, IHistogram1D>();
-    private static Map<String, IHistogram1D> hitCountPlots = new HashMap<String, IHistogram1D>();
-    private static Map<String, IHistogram1D> firstSamplePlots = new HashMap<String, IHistogram1D>();
-    private static Map<String, IHistogram1D> firstSamplePlotsNoise = new HashMap<String, IHistogram1D>();
-    private static Map<String, IHistogram2D> firstSamplePlotsNoisePerChannel = new HashMap<String, IHistogram2D>();
+    private static final Map<String, IHistogram1D> hitsPerSensorPlots = new HashMap<String, IHistogram1D>();
+    private static final Map<String, int[]> hitsPerSensor = new HashMap<String, int[]>();
+    private static final Map<String, IHistogram1D> layersHitPlots = new HashMap<String, IHistogram1D>();
+    private static final Map<String, IHistogram1D> hitCountPlots = new HashMap<String, IHistogram1D>();
+    private static final Map<String, IHistogram1D> firstSamplePlots = new HashMap<String, IHistogram1D>();
+//    private static Map<String, IHistogram1D> firstSamplePlotsNoise = new HashMap<String, IHistogram1D>();
+    private static final Map<String, IHistogram2D> firstSamplePlotsNoisePerChannel = new HashMap<String, IHistogram2D>();
 
     private List<HpsSiSensor> sensors;
 
     private static final String SUBDETECTOR_NAME = "Tracker";
-    private String rawTrackerHitCollectionName = "SVTRawTrackerHits";
-    
+    private final String rawTrackerHitCollectionName = "SVTRawTrackerHits";
+
     // Counters
     double eventCount = 0;
     double totalHitCount = 0;
@@ -85,34 +85,6 @@
 
     public void setSaveRootFile(boolean save) {
         saveRootFile = save;
-    }
-
-
-    private int computePlotterRegion(HpsSiSensor sensor) {
-
-        if (sensor.getLayerNumber() < 7) {
-            if (sensor.isTopLayer()) {
-                return 6 * (sensor.getLayerNumber() - 1);
-            } else {
-                return 6 * (sensor.getLayerNumber() - 1) + 1;
-            }
-        } else {
-
-            if (sensor.isTopLayer()) {
-                if (sensor.getSide() == HpsSiSensor.POSITRON_SIDE) {
-                    return 6 * (sensor.getLayerNumber() - 7) + 2;
-                } else {
-                    return 6 * (sensor.getLayerNumber() - 7) + 3;
-                }
-            } else if (sensor.isBottomLayer()) {
-                if (sensor.getSide() == HpsSiSensor.POSITRON_SIDE) {
-                    return 6 * (sensor.getLayerNumber() - 7) + 4;
-                } else {
-                    return 6 * (sensor.getLayerNumber() - 7) + 5;
-                }
-            }
-        }
-        return -1;
     }
 
     /**
@@ -158,9 +130,10 @@
         for (HpsSiSensor sensor : sensors) {
             hitsPerSensorPlots.get(sensor.getName()).reset();
             firstSamplePlots.get(sensor.getName()).reset();
-            firstSamplePlotsNoise.get(sensor.getName()).reset();
-            if(doPerChannelSamplePlots)
+//            firstSamplePlotsNoise.get(sensor.getName()).reset();
+            if (doPerChannelSamplePlots) {
                 firstSamplePlotsNoisePerChannel.get(sensor.getName()).reset();
+            }
         }
 
         for (IHistogram1D histogram : layersHitPlots.values()) {
@@ -173,12 +146,13 @@
 
     }
 
+    @Override
     protected void detectorChanged(Detector detector) {
 
         // Get the HpsSiSensor objects from the geometry
         sensors = detector.getSubdetector(SUBDETECTOR_NAME).getDetectorElement().findDescendants(HpsSiSensor.class);
 
-        if (sensors.size() == 0) {
+        if (sensors.isEmpty()) {
             throw new RuntimeException("No sensors were found in this detector.");
         }
 
@@ -228,63 +202,63 @@
         plotters.put("First sample distributions (pedestal shifts)", plotterFactory.create("First sample distributions (pedestal shifts)"));
         plotters.get("First sample distributions (pedestal shifts)").createRegions(6, 6);
 
-        plotters.put("First sample distributions (pedestal shifts, MAX_SAMPLE>=4)", plotterFactory.create("First sample distributions (pedestal shifts, MAX_SAMPLE>=4)"));
-        plotters.get("First sample distributions (pedestal shifts, MAX_SAMPLE>=4)").createRegions(6, 6);
-        
-        if(doPerChannelSamplePlots) {
-            plotters.put("First sample channel distributions (pedestal shifts, MAX_SAMPLE>=4)", plotterFactory.create("First sample channel distributions (pedestal shifts, MAX_SAMPLE>=4)"));
-            plotters.get("First sample channel distributions (pedestal shifts, MAX_SAMPLE>=4)").createRegions(6, 6);
-        }
-
-        
+//        plotters.put("First sample distributions (pedestal shifts, MAX_SAMPLE>=4)", plotterFactory.create("First sample distributions (pedestal shifts, MAX_SAMPLE>=4)"));
+//        plotters.get("First sample distributions (pedestal shifts, MAX_SAMPLE>=4)").createRegions(6, 6);
+        if (doPerChannelSamplePlots) {
+            plotters.put("First sample channel distributions (pedestal shifts)", plotterFactory.create("First sample channel distributions (pedestal shifts)"));
+            plotters.get("First sample channel distributions (pedestal shifts)").createRegions(6, 6);
+        }
+
         for (HpsSiSensor sensor : sensors) {
             firstSamplePlots.put(sensor.getName(),
                     histogramFactory.createHistogram1D(sensor.getName() + " - first sample", 100, -500.0, 2000.0));
-            plotters.get("First sample distributions (pedestal shifts)").region(this.computePlotterRegion(sensor))
+            plotters.get("First sample distributions (pedestal shifts)").region(SvtPlotUtils.computePlotterRegion(sensor))
                     .plot(firstSamplePlots.get(sensor.getName()), this.createStyle(sensor, "First sample - pedestal [ADC counts]", ""));
-            firstSamplePlotsNoise.put(sensor.getName(),
-                    histogramFactory.createHistogram1D(sensor.getName() + " - first sample (MAX_SAMPLE>=4)", 100, -500.0, 2000.0));
-            plotters.get("First sample distributions (pedestal shifts, MAX_SAMPLE>=4)").region(this.computePlotterRegion(sensor))
-                    .plot(firstSamplePlotsNoise.get(sensor.getName()), this.createStyle(sensor, "First sample - pedestal (MAX_SAMPLE>=4) [ADC counts]", ""));
-
-            if( doPerChannelSamplePlots ) {
+//            firstSamplePlotsNoise.put(sensor.getName(),
+//                    histogramFactory.createHistogram1D(sensor.getName() + " - first sample (MAX_SAMPLE>=4)", 100, -500.0, 2000.0));
+//            plotters.get("First sample distributions (pedestal shifts, MAX_SAMPLE>=4)").region(SvtPlotUtils.computePlotterRegion(sensor))
+//                    .plot(firstSamplePlotsNoise.get(sensor.getName()), this.createStyle(sensor, "First sample - pedestal (MAX_SAMPLE>=4) [ADC counts]", ""));
+
+            if (doPerChannelSamplePlots) {
                 firstSamplePlotsNoisePerChannel.put(sensor.getName(),
-                        histogramFactory.createHistogram2D(sensor.getName() + " channels - first sample (MAX_SAMPLE>=4)", 640, -0.5,639.5, 20, -500.0, 500.0));
-                plotters.get("First sample channel distributions (pedestal shifts, MAX_SAMPLE>=4)").region(this.computePlotterRegion(sensor))
-                .plot(firstSamplePlotsNoisePerChannel.get(sensor.getName()), this.createStyle(sensor, "First sample channels - pedestal (MAX_SAMPLE>=4) [ADC counts]", ""));
-            }
-        
-        
+                        histogramFactory.createHistogram2D(sensor.getName() + " channels - first sample", 640, -0.5, 639.5, 20, -500.0, 500.0));
+                plotters.get("First sample channel distributions (pedestal shifts)").region(SvtPlotUtils.computePlotterRegion(sensor))
+                        .plot(firstSamplePlotsNoisePerChannel.get(sensor.getName()), this.createStyle(sensor, "First sample channels - pedestal [ADC counts]", ""));
+            }
+
         }
 
         for (IPlotter plotter : plotters.values()) {
             for (int regionN = 0; regionN < plotter.numberOfRegions(); regionN++) {
                 PlotterRegion region = ((PlotterRegion) ((Plotter) plotter).region(regionN));
-                if (region.getPlottedObjects().size() == 0) {
+                if (region.getPlottedObjects().isEmpty()) {
                     continue;
                 }
                 region.getPanel().addMouseListener(new PopupPlotterListener(region));
             }
-            if(showPlots)
+            if (showPlots) {
                 plotter.show();
-        }
-    }
-
+            }
+        }
+    }
+
+    @Override
     public void process(EventHeader event) {
 
         if (!event.hasCollection(RawTrackerHit.class, rawTrackerHitCollectionName)) {
             return;
         }
 
-        if(debug && ((int) eventCount % 100 == 0) )
+        if (debug && ((int) eventCount % 100 == 0)) {
             System.out.println(this.getClass().getSimpleName() + ": processed " + String.valueOf(eventCount) + " events");
-        
+        }
+
         eventCount++;
-        
-
-        if(outputRootFilename.isEmpty())
-            outputRootFilename = "run" + String.valueOf( event.getRunNumber());
-        
+
+        if (outputRootFilename.isEmpty()) {
+            outputRootFilename = "run" + String.valueOf(event.getRunNumber());
+        }
+
         // Get RawTrackerHit collection from event.
         List<RawTrackerHit> rawHits = event.get(RawTrackerHit.class, rawTrackerHitCollectionName);
 
@@ -296,7 +270,7 @@
         for (RawTrackerHit rawHit : rawHits) {
             HpsSiSensor sensor = (HpsSiSensor) rawHit.getDetectorElement();
             int channel = rawHit.getIdentifierFieldValue("strip");
-            double pedestal = sensor.getPedestal(channel,0);
+            double pedestal = sensor.getPedestal(channel, 0);
             // Find the sample with maximum ADC count
             int maxSample = 0;
             double maxSampleValue = 0;
@@ -309,15 +283,17 @@
 
             hitsPerSensor.get(sensor.getName())[0]++;
             firstSamplePlots.get(sensor.getName()).fill(rawHit.getADCValues()[0] - pedestal);
-            if (maxSampleCutForNoise >=0 && maxSample >= maxSampleCutForNoise) {
-                    firstSamplePlotsNoise.get(sensor.getName()).fill(rawHit.getADCValues()[0] - pedestal);
-                    if( doPerChannelSamplePlots ) 
-                        firstSamplePlotsNoisePerChannel.get(sensor.getName()).fill(channel, rawHit.getADCValues()[0] - pedestal);
-            } else {
-                firstSamplePlotsNoise.get(sensor.getName()).fill(rawHit.getADCValues()[0] - pedestal);
-                if( doPerChannelSamplePlots ) 
-                    firstSamplePlotsNoisePerChannel.get(sensor.getName()).fill(channel, rawHit.getADCValues()[0] - pedestal);
-            }
+//            if (maxSampleCutForNoise >= 0 && maxSample >= maxSampleCutForNoise) {
+//                firstSamplePlotsNoise.get(sensor.getName()).fill(rawHit.getADCValues()[0] - pedestal);
+            if (doPerChannelSamplePlots) {
+                firstSamplePlotsNoisePerChannel.get(sensor.getName()).fill(channel, rawHit.getADCValues()[0] - pedestal);
+            }
+//            } else {
+//                firstSamplePlotsNoise.get(sensor.getName()).fill(rawHit.getADCValues()[0] - pedestal);
+//                if (doPerChannelSamplePlots) {
+//                    firstSamplePlotsNoisePerChannel.get(sensor.getName()).fill(channel, rawHit.getADCValues()[0] - pedestal);
+//                }
+//            }
         }
 
         int[] topLayersHit = new int[12];
@@ -376,8 +352,8 @@
         System.out.println("% Total Top SVT Hits/Event: " + totalTopHitCount / eventCount);
         System.out.println("% Total Bottom SVT Hits/Event: " + totalBotHitCount / eventCount);
         System.out.println("\n%================================================%");
-        
-        if(saveRootFile) {
+
+        if (saveRootFile) {
             String rootFileName = outputRootFilename.isEmpty() ? "svthitplots.root" : outputRootFilename + "_svthitplots.root";
             RootFileStore rootFileStore = new RootFileStore(rootFileName);
             try {
@@ -388,12 +364,11 @@
                 e.printStackTrace();
             }
         }
-        
+
     }
 
     public void setShowPlots(boolean showPlots) {
         this.showPlots = showPlots;
     }
 
-
 }

Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackTimePlots.java
 =============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackTimePlots.java	(original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackTimePlots.java	Tue Mar  1 18:20:12 2016
@@ -7,17 +7,14 @@
 import hep.aida.IPlotterStyle;
 import hep.aida.ref.plotter.style.registry.IStyleStore;
 import hep.aida.ref.plotter.style.registry.StyleRegistry;
-
 import java.util.List;
 
 import static org.hps.monitoring.drivers.trackrecon.PlotAndFitUtilities.plot;
 
-import org.hps.record.triggerbank.AbstractIntData;
-import org.hps.record.triggerbank.TestRunTriggerData;
 import org.lcsim.detector.tracker.silicon.DopedSilicon;
 import org.lcsim.detector.tracker.silicon.HpsSiSensor;
 import org.lcsim.event.EventHeader;
-import org.lcsim.event.GenericObject;
+import org.lcsim.event.RawTrackerHit;
 import org.lcsim.event.Track;
 import org.lcsim.event.TrackerHit;
 import org.lcsim.fit.helicaltrack.HelicalTrackCross;
@@ -116,7 +113,7 @@
 
         for (int i = 0; i < nlayers; i++) {
             int region = computePlotterRegion(i);
-            trackHit2D[i] = aida.histogram2D("Layer " + i + " trackHit vs dt", 75, -50, 100.0, 50, -20, 20.0);
+            trackHit2D[i] = aida.histogram2D("Layer " + i + " trigger phase vs dt", 80, -20, 20.0, 6, 0, 24.0);
             plot(plotter5, trackHit2D[i], style2d, region);
             trackHitDtChan[i] = aida.histogram2D("Layer " + i + " dt vs position", 200, -20, 20, 50, -20, 20.0);
             plot(plotter6, trackHitDtChan[i], style2d, region);
@@ -124,23 +121,23 @@
         plotter.show();
         plotter3.show();
         plotter4.show();
-//         plotter5.show();"Track Time vs. dt"
-//        plotter6.show(); "Track dt vs. Channel"
+        plotter5.show();//"Track Time vs. dt"
+        plotter6.show();// "Track dt vs. Channel"
 
         for (int module = 0; module < 2; module++) {
-            trackT0[module] = aida.histogram1D((module == 0 ? "Top" : "Bottom") + " Track Time", 75, -50, 100.0);
+            trackT0[module] = aida.histogram1D((module == 0 ? "Top" : "Bottom") + " Track Time", 80, -20, 20.0);
             plot(plotter2, trackT0[module], null, module);
-            trackTrigTime[module] = aida.histogram2D((module == 0 ? "Top" : "Bottom") + " Track Time vs. Trig Time", 75, -50, 100.0, 6, -2, 22);
+            trackTrigTime[module] = aida.histogram2D((module == 0 ? "Top" : "Bottom") + " Track Time vs. Trig Time", 80, -20, 20.0, 6, 0, 24);
             plot(plotter2, trackTrigTime[module], style2d, module + 2);
 
             trackTimeRange[module] = aida.histogram1D((module == 0 ? "Top" : "Bottom") + " Track Hit Time Range", 75, 0, 30.0);
             plot(plotter7, trackTimeRange[module], null, module);
-            trackTimeMinMax[module] = aida.histogram2D((module == 0 ? "Top" : "Bottom") + " First and Last Track Hit Times", 75, -50, 100.0, 75, -50, 100.0);
+            trackTimeMinMax[module] = aida.histogram2D((module == 0 ? "Top" : "Bottom") + " First and Last Track Hit Times", 80, -20, 20.0, 80, -20, 20.0);
             plot(plotter7, trackTimeMinMax[module], style2d, module + 2);
         }
 
         plotter2.show();
-//        plotter7.show(); //"Track Hit Time Range"
+        plotter7.show(); //"Track Hit Time Range"
     }
 
     public void setHitCollection(String hitCollection) {
@@ -166,7 +163,7 @@
 
         List<Track> tracks = event.get(Track.class, trackCollectionName);
         for (Track track : tracks) {
-            int trackModule = -1;
+            int trackModule;
             if (track.getTrackerHits().get(0).getPosition()[2] > 0) {
                 trackModule = 0;
             } else {
@@ -179,7 +176,8 @@
             for (TrackerHit hitCross : track.getTrackerHits()) {
                 for (HelicalTrackStrip hit : ((HelicalTrackCross) hitCross).getStrips()) {
                     int layer = hit.layer();
-                    trackHitT0[trackModule][layer - 1].fill(hit.dEdx() / DopedSilicon.ENERGY_EHPAIR);
+                    int module = ((RawTrackerHit) hit.rawhits().get(0)).getIdentifierFieldValue("module");
+                    trackHitT0[module][layer - 1].fill(hit.dEdx() / DopedSilicon.ENERGY_EHPAIR);
                     trackTime += hit.time();
                     hitCount++;
                     if (hit.time() > maxTime) {
@@ -202,8 +200,9 @@
             for (TrackerHit hitCross : track.getTrackerHits()) {
                 for (HelicalTrackStrip hit : ((HelicalTrackCross) hitCross).getStrips()) {
                     int layer = hit.layer();
-                    trackHitDt[trackModule][layer - 1].fill(hit.time() - trackTime);
-                    trackHit2D[layer - 1].fill(trackTime, hit.time() - trackTime);
+                    int module = ((RawTrackerHit) hit.rawhits().get(0)).getIdentifierFieldValue("module");
+                    trackHitDt[module][layer - 1].fill(hit.time() - trackTime);
+                    trackHit2D[layer - 1].fill(hit.time() - trackTime, event.getTimeStamp() % 24);
                     trackHitDtChan[layer - 1].fill(hit.umeas(), hit.time() - trackTime);
                 }
             }

Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackingReconPlots.java
 =============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackingReconPlots.java	(original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackingReconPlots.java	Tue Mar  1 18:20:12 2016
@@ -273,7 +273,7 @@
             HpsHelicalTrackFit hpstrk = new HpsHelicalTrackFit(ht);
             double svt_l12 = 900.00;//mm ~approximately...this doesn't matter much
             double ecal_face = 1393.00;//mm ~approximately ... this matters!  Should use typical shower depth...or, once have cluster match, use that value of Z
-            TrackState stateAtEcal = TrackUtils.extrapolateTrackUsingFieldMap(trk, svt_l12, ecal_face, 5.0, event.getDetector().getFieldMap());
+            TrackState stateAtEcal = TrackUtils.getTrackStateAtECal(trk);
             Hep3Vector posAtEcal = new BasicHep3Vector(stateAtEcal.getReferencePoint());
             //Hep3Vector posAtEcal = hpstrk.getPositionAtZMap(svt_l12, ecal_face, 5.0, event.getDetector().getFieldMap())[0];
             List<Cluster> clusters = event.get(Cluster.class, ecalCollectionName);
@@ -287,11 +287,11 @@
                     Hep3Vector clusterPos = new BasicHep3Vector(clust.getPosition());
                     double zCluster = clusterPos.z();
                     //improve the extrapolation...use the reconstructed cluster z-position
-                    stateAtEcal = TrackUtils.extrapolateTrackUsingFieldMap(trk, svt_l12, zCluster, 5.0, event.getDetector().getFieldMap());
-                    posAtEcal = new BasicHep3Vector(stateAtEcal.getReferencePoint());
+//                    stateAtEcal = TrackUtils.extrapolateTrackUsingFieldMap(trk, svt_l12, zCluster, 5.0, event.getDetector().getFieldMap());
+//                    posAtEcal = new BasicHep3Vector(stateAtEcal.getReferencePoint());
                     double eOverP = clust.getEnergy() / pmag;
-                    double dx = posAtEcal.x() - clusterPos.x();
-                    double dy = posAtEcal.y() - clusterPos.y();
+                    double dx = posAtEcal.y() - clusterPos.x();
+                    double dy = posAtEcal.z() - clusterPos.y();
                     heOverP.fill(eOverP);
                     hdelXECal.fill(dx);
                     hdelYECal.fill(dy);

Modified: java/trunk/steering-files/src/main/resources/org/hps/steering/monitoring/SvtOnlineMonitoring.lcsim
 =============================================================================
--- java/trunk/steering-files/src/main/resources/org/hps/steering/monitoring/SvtOnlineMonitoring.lcsim	(original)
+++ java/trunk/steering-files/src/main/resources/org/hps/steering/monitoring/SvtOnlineMonitoring.lcsim	Tue Mar  1 18:20:12 2016
@@ -10,6 +10,7 @@
         <driver name="PedestalPlots" />-->
         <driver name="SensorOccupancy" />
         <driver name="RawTrackerHitFitterDriver" />
+        <!--<driver name="SVTPulseFitPlots" />--> 
         <driver name="TrackerHitDriver" />
         <driver name="ClusterPlots" /> 
         <driver name="CleanupDriver" />
@@ -26,10 +27,10 @@
        </driver>
         <driver name="SvtHitPlots" type="org.hps.monitoring.drivers.svt.SvtHitPlots">
             <doPerChannelsSampleplots>true</doPerChannelsSampleplots>
-            <saveRootFile>false</saveRootFile>
+            <!--<saveRootFile>false</saveRootFile>-->
         </driver>
-        <driver name="SamplesPlots" type="org.hps.monitoring.drivers.svt.SamplesPlots" />
-        <driver name="PedestalPlots" type="org.hps.monitoring.drivers.svt.PedestalPlots" />
+        <!--<driver name="SamplesPlots" type="org.hps.monitoring.drivers.svt.SamplesPlots" />-->
+        <!--<driver name="PedestalPlots" type="org.hps.monitoring.drivers.svt.PedestalPlots" />-->
         <driver name="RawTrackerHitFitterDriver" type="org.hps.recon.tracking.RawTrackerHitFitterDriver">
             <fitAlgorithm>Linear</fitAlgorithm>
             <useTimestamps>false</useTimestamps>
@@ -45,6 +46,7 @@
             <neighborDeltaT>8.0</neighborDeltaT>
             <debug>false</debug>
         </driver>
+        <!--<driver name="SVTPulseFitPlots" type="org.hps.monitoring.drivers.svt.SVTPulseFitPlots" />-->
         <driver name="ClusterPlots" type="org.hps.monitoring.drivers.svt.SvtClusterPlots">
             <saveRootFile>false</saveRootFile>
         </driver>