Print

Print


Author: [log in to unmask]
Date: Tue May  5 02:08:39 2015
New Revision: 2901

Log:
adding more monitoring plots, using t0 shift calibration

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/SvtClusterPlots.java
    java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtHitPlots.java
    java/trunk/steering-files/src/main/resources/org/hps/steering/monitoring/LooseTrackingAndReconMonitoring.lcsim
    java/trunk/steering-files/src/main/resources/org/hps/steering/monitoring/SvtOnlineMonitoring.lcsim
    java/trunk/steering-files/src/main/resources/org/hps/steering/monitoring/TrackingAndReconMonitoring.lcsim
    java/trunk/steering-files/src/main/resources/org/hps/steering/recon/EngineeringRun2015FullRecon.lcsim

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 May  5 02:08:39 2015
@@ -294,12 +294,12 @@
         // and the global strip position
         this.createStripPositionMap();
         
-        // If the tree already exist, clear all existing plots of any old data
-        // they might contain.
-        if (tree != null) { 
-            this.resetPlots();
-            return; 
-        }
+//        // If the tree already exist, clear all existing plots of any old data
+//        // they might contain.
+//        if (tree != null) { 
+//            this.resetPlots();
+//            return; 
+//        }
        
         tree = analysisFactory.createTreeFactory().create();
         histogramFactory = analysisFactory.createHistogramFactory(tree);

Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtClusterPlots.java
 =============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtClusterPlots.java	(original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtClusterPlots.java	Tue May  5 02:08:39 2015
@@ -7,6 +7,7 @@
 
 import hep.aida.IAnalysisFactory;
 import hep.aida.IHistogram1D;
+import hep.aida.IHistogram2D;
 import hep.aida.IHistogramFactory;
 import hep.aida.IPlotter;
 import hep.aida.IPlotterFactory;
@@ -24,261 +25,293 @@
 import org.lcsim.util.Driver;
 
 import org.hps.recon.tracking.FittedRawTrackerHit;
+import org.lcsim.detector.tracker.silicon.DopedSilicon;
 import org.lcsim.util.aida.AIDA;
 
 /**
- *  Monitoring driver that looks at the SVT cluster charge.
- * 
+ * Monitoring driver that looks at the SVT cluster charge.
+ *
  * @author Omar Moreno <[log in to unmask]>
  *
  */
 public class SvtClusterPlots extends Driver {
-    
+
     // TODO: Add documentation
-
     static {
         hep.aida.jfree.AnalysisFactory.register();
     }
-   
+
     // Plotting
     private static ITree tree = null;
     private IAnalysisFactory analysisFactory = AIDA.defaultInstance().analysisFactory();
-	private IPlotterFactory plotterFactory = analysisFactory.createPlotterFactory("SVT Clusters");
-    private IHistogramFactory histogramFactory = null; 
-	private static Map<String, IPlotter> plotters = new HashMap<String, IPlotter>(); 
-   
-	// Histogram Maps
-	private static Map<String, IHistogram1D> clusterChargePlots = new HashMap<String, IHistogram1D>();
-	private static Map<String, IHistogram1D> singleHitClusterChargePlots = new HashMap<String, IHistogram1D>();
-   
+    private IPlotterFactory plotterFactory = analysisFactory.createPlotterFactory("SVT Clusters");
+    private IHistogramFactory histogramFactory = null;
+    private static Map<String, IPlotter> plotters = new HashMap<String, IPlotter>();
+
+    // Histogram Maps
+    private static Map<String, IHistogram1D> clusterChargePlots = new HashMap<String, IHistogram1D>();
+    private static Map<String, IHistogram1D> singleHitClusterChargePlots = new HashMap<String, IHistogram1D>();
+    private static Map<String, IHistogram1D> clusterTimePlots = new HashMap<String, IHistogram1D>();
+    private static Map<String, IHistogram2D> hitTimeTrigTimePlots = new HashMap<String, IHistogram2D>();
+
     private List<HpsSiSensor> sensors;
-    private Map<RawTrackerHit, FittedRawTrackerHit> fittedRawTrackerHitMap 
-        = new HashMap<RawTrackerHit, FittedRawTrackerHit>();
-	
+    private Map<RawTrackerHit, FittedRawTrackerHit> fittedRawTrackerHitMap
+            = new HashMap<RawTrackerHit, FittedRawTrackerHit>();
+
     // Detector name
     private static final String SUBDETECTOR_NAME = "Tracker";
-    
+
     // Collections
     private String clusterCollectionName = "StripClusterer_SiTrackerHitStrip1D";
     private String fittedHitsCollectionName = "SVTFittedRawTrackerHits";
-    
-    private int runNumber = -1; 
-	
+
+    private int runNumber = -1;
+
     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; 
-    }
-    
-    IPlotterStyle createStyle(HpsSiSensor sensor, String xAxisTitle, String yAxisTitle) { 
-    
+        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;
+    }
+
+    IPlotterStyle createStyle(HpsSiSensor sensor, 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(false);
         style.dataStyle().outlineStyle().setThickness(4);
         style.dataStyle().fillStyle().setVisible(true);
         style.dataStyle().fillStyle().setOpacity(.30);
-       
-        if (sensor == null) { 
+
+        if (sensor == null) {
             style.dataStyle().fillStyle().setColor("255, 38, 38, 1");
             style.dataStyle().outlineStyle().setColor("255, 38, 38, 1");
             style.dataStyle().fillStyle().setOpacity(.70);
-        } else if (sensor.isTopLayer()) { 
+        } else if (sensor.isTopLayer()) {
             style.dataStyle().fillStyle().setColor("31, 137, 229, 1");
             style.dataStyle().outlineStyle().setColor("31, 137, 229, 1");
-        } else if (sensor.isBottomLayer()){ 
+        } else if (sensor.isBottomLayer()) {
             style.dataStyle().fillStyle().setColor("93, 228, 47, 1");
             style.dataStyle().outlineStyle().setColor("93, 228, 47, 1");
         }
         style.dataStyle().errorBarStyle().setVisible(false);
-       
+
         style.regionBoxStyle().backgroundStyle().setOpacity(.20);
-        if (sensor != null && sensor.isAxial()) {  
+        if (sensor != null && sensor.isAxial()) {
             style.regionBoxStyle().backgroundStyle().setColor("246, 246, 34, 1");
         }
-            
+
         // Turn off the legend
         style.legendBoxStyle().setVisible(false);
-       
+
         return style;
     }
-    
+
     /**
-     *  Clear all histograms of it's current data.
+     * Clear all histograms of it's current data.
      */
-    private void resetPlots() { 
+    private void resetPlots() {
 
         // Clear the fitted raw hit map of old values
         fittedRawTrackerHitMap.clear();
-        
+
         // Since all plots are mapped to the name of a sensor, loop 
         // through the sensors, get the corresponding plots and clear them.
-        for (HpsSiSensor sensor : sensors) { 
-           clusterChargePlots.get(sensor.getName()).reset();
-           singleHitClusterChargePlots.get(sensor.getName()).reset();
-        }
-    }
-    
+        for (HpsSiSensor sensor : sensors) {
+            clusterChargePlots.get(sensor.getName()).reset();
+            singleHitClusterChargePlots.get(sensor.getName()).reset();
+            clusterTimePlots.get(sensor.getName()).reset();
+        }
+
+        for (IHistogram2D histogram : hitTimeTrigTimePlots.values()) {
+            histogram.reset();
+        }
+    }
+
     /**
-     *  Method that creates a map between a fitted raw hit and it's corresponding raw fit
-     *  
+     * Method that creates a map between a fitted raw hit and it's corresponding
+     * raw fit
+     *
      * @param fittedHits : List of fitted hits to map
      */
-    private void mapFittedRawHits(List<FittedRawTrackerHit> fittedHits) { 
-        
+    private void mapFittedRawHits(List<FittedRawTrackerHit> fittedHits) {
+
         // Clear the fitted raw hit map of old values
         fittedRawTrackerHitMap.clear();
-       
+
         // Loop through all fitted hits and map them to their corresponding raw hits
-        for (FittedRawTrackerHit fittedHit : fittedHits) { 
+        for (FittedRawTrackerHit fittedHit : fittedHits) {
             fittedRawTrackerHitMap.put(fittedHit.getRawTrackerHit(), fittedHit);
         }
     }
-  
+
     /**
-     * 
+     *
      * @param rawHit
      * @return
      */
-    private FittedRawTrackerHit getFittedHit(RawTrackerHit rawHit) { 
+    private FittedRawTrackerHit getFittedHit(RawTrackerHit rawHit) {
         return fittedRawTrackerHitMap.get(rawHit);
     }
-    
-    
+
     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) {
             throw new RuntimeException("No sensors were found in this detector.");
         }
-        
-        // If the tree already exist, clear all existing plots of any old data
-        // they might contain.
-        if (tree != null) { 
-            this.resetPlots();
-            return; 
-        }
-        
+
+//        // If the tree already exist, clear all existing plots of any old data
+//        // they might contain.
+//        if (tree != null) {
+//            this.resetPlots();
+//            return;
+//        }
         tree = analysisFactory.createTreeFactory().create();
         histogramFactory = analysisFactory.createHistogramFactory(tree);
-        
+
         plotters.put("Cluster Amplitude", plotterFactory.create("Cluster Amplitude"));
         plotters.get("Cluster Amplitude").createRegions(6, 6);
-   
-        for (HpsSiSensor sensor : sensors) { 
-        
-            clusterChargePlots.put(sensor.getName(), 
+
+        plotters.put("Cluster Time", plotterFactory.create("Cluster Time"));
+        plotters.get("Cluster Time").createRegions(6, 6);
+
+        for (HpsSiSensor sensor : sensors) {
+
+            clusterChargePlots.put(sensor.getName(),
                     histogramFactory.createHistogram1D(sensor.getName() + " - Cluster Charge", 100, 0, 5000));
             plotters.get("Cluster Amplitude").region(this.computePlotterRegion(sensor))
-                                             .plot(clusterChargePlots.get(sensor.getName()), this.createStyle(sensor, "Cluster Amplitude [ADC Counts]", ""));
-        
-            singleHitClusterChargePlots.put(sensor.getName(), 
+                    .plot(clusterChargePlots.get(sensor.getName()), this.createStyle(sensor, "Cluster Amplitude [ADC Counts]", ""));
+
+            singleHitClusterChargePlots.put(sensor.getName(),
                     histogramFactory.createHistogram1D(sensor.getName() + " - Single Hit Cluster Charge", 100, 0, 5000));
             plotters.get("Cluster Amplitude").region(this.computePlotterRegion(sensor))
-                                             .plot(singleHitClusterChargePlots.get(sensor.getName()), this.createStyle(null, "Cluster Amplitude [ADC Counts]", ""));
-        }
-    
-		for (IPlotter plotter : plotters.values()) { 
-			plotter.show();
-			for (int regionN = 0; regionN < plotter.numberOfRegions(); regionN++) { 
-			    PlotterRegion region = ((PlotterRegion) ((Plotter) plotter).region(regionN));
-			    if (region.getPlottedObjects().size() == 0) continue;
+                    .plot(singleHitClusterChargePlots.get(sensor.getName()), this.createStyle(null, "Cluster Amplitude [ADC Counts]", ""));
+
+            clusterTimePlots.put(sensor.getName(),
+                    histogramFactory.createHistogram1D(sensor.getName() + " - Cluster Time", 100, -50, 50));
+            plotters.get("Cluster Time").region(this.computePlotterRegion(sensor))
+                    .plot(clusterTimePlots.get(sensor.getName()), this.createStyle(null, "Cluster Time [ns]", ""));
+        }
+
+        plotters.put("SVT-trigger timing", plotterFactory.create("SVT-trigger timing"));
+        plotters.get("SVT-trigger timing").createRegions(1, 2);
+
+        hitTimeTrigTimePlots.put("Top",
+                histogramFactory.createHistogram2D("Top Cluster Time vs. Trigger Phase", 100, -50, 50, 6, -2, 22));
+        plotters.get("SVT-trigger timing").region(0).plot(hitTimeTrigTimePlots.get("Top"), this.createStyle(null, "Cluster Time [ns]", "Trigger Phase[ns]"));
+        hitTimeTrigTimePlots.put("Bottom",
+                histogramFactory.createHistogram2D("Top Cluster Time vs. Trigger Phase", 100, -50, 50, 6, -2, 22));
+        plotters.get("SVT-trigger timing").region(1).plot(hitTimeTrigTimePlots.get("Bottom"), this.createStyle(null, "Cluster Time [ns]", "Trigger Phase[ns]"));
+
+        for (IPlotter plotter : plotters.values()) {
+            plotter.show();
+            for (int regionN = 0; regionN < plotter.numberOfRegions(); regionN++) {
+                PlotterRegion region = ((PlotterRegion) ((Plotter) plotter).region(regionN));
+                if (region.getPlottedObjects().size() == 0) {
+                    continue;
+                }
                 region.getPanel().addMouseListener(new PopupPlotterListener(region));
-			}
-		}
-    }
-    
-    public void process(EventHeader event) { 
-     
-        if (runNumber == -1) runNumber = event.getRunNumber();
-        
+            }
+        }
+    }
+
+    public void process(EventHeader event) {
+
+        if (runNumber == -1) {
+            runNumber = event.getRunNumber();
+        }
+
         // If the event doesn't contain fitted raw hits, skip it
-        if (!event.hasCollection(FittedRawTrackerHit.class, fittedHitsCollectionName)) return;
-        
+        if (!event.hasCollection(FittedRawTrackerHit.class, fittedHitsCollectionName)) {
+            return;
+        }
+
         // Get the list of fitted hits from the event
         List<FittedRawTrackerHit> fittedHits = event.get(FittedRawTrackerHit.class, fittedHitsCollectionName);
-        
+
         // Map the fitted hits to their corresponding raw hits
         this.mapFittedRawHits(fittedHits);
-        
+
         // If the event doesn't contain any clusters, skip it
-        if (!event.hasCollection(SiTrackerHitStrip1D.class, clusterCollectionName)) return;
-        
+        if (!event.hasCollection(SiTrackerHitStrip1D.class, clusterCollectionName)) {
+            return;
+        }
+
         // Get the list of clusters in the event
         List<SiTrackerHitStrip1D> clusters = event.get(SiTrackerHitStrip1D.class, clusterCollectionName);
-       
-        for (SiTrackerHitStrip1D cluster : clusters) { 
-            
+
+        for (SiTrackerHitStrip1D cluster : clusters) {
+
             // Get the sensor associated with this cluster
             HpsSiSensor sensor = (HpsSiSensor) cluster.getSensor();
-            
-            // Get the raw hits composing this cluster and use them to calculate the amplitude of the hit
-            double amplitude = 0;
-            for (RawTrackerHit rawHit : cluster.getRawHits()) {
-                
-                // Add the amplitude of that channel to the total amplitude
-                amplitude += this.getFittedHit(rawHit).getAmp();
-            }
-            
+
             // Fill all plots
-            clusterChargePlots.get(sensor.getName()).fill(amplitude);
-            
-            if (cluster.getRawHits().size() == 1) { 
-                singleHitClusterChargePlots.get(sensor.getName()).fill(amplitude);
-            } 
-        }
-    }
-    
-    public void endOfData() { 
-        
+            clusterChargePlots.get(sensor.getName()).fill(cluster.getdEdx() / DopedSilicon.ENERGY_EHPAIR);
+
+            if (cluster.getRawHits().size() == 1) {
+                singleHitClusterChargePlots.get(sensor.getName()).fill(cluster.getdEdx() / DopedSilicon.ENERGY_EHPAIR);
+            }
+
+            clusterTimePlots.get(sensor.getName()).fill(cluster.getTime());
+
+            if (sensor.isTopLayer()) {
+                hitTimeTrigTimePlots.get("Top").fill(cluster.getTime(), event.getTimeStamp() % 24);
+            } else {
+                hitTimeTrigTimePlots.get("Bottom").fill(cluster.getTime(), event.getTimeStamp() % 24);
+            }
+        }
+    }
+
+    public void endOfData() {
+
         String rootFile = "run" + runNumber + "_cluster_analysis.root";
         RootFileStore store = new RootFileStore(rootFile);
         try {
             store.open();
             store.add(tree);
-            store.close(); 
+            store.close();
         } catch (IOException e) {
             e.printStackTrace();
         }
     }
-    
+
 }

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 May  5 02:08:39 2015
@@ -170,6 +170,7 @@
         // through the sensors, get the corresponding plots and clear them.
         for (HpsSiSensor sensor : sensors) {
             hitsPerSensorPlots.get(sensor.getName()).reset();
+            firstSamplePlots.get(sensor.getName()).reset();
         }
 
         for (IHistogram1D histogram : layersHitPlots.values()) {
@@ -191,12 +192,12 @@
             throw new RuntimeException("No sensors were found in this detector.");
         }
 
-        // If the tree already exist, clear all existing plots of any old data
-        // they might contain.
-        if (tree != null) {
-            this.resetPlots();
-            return;
-        }
+//        // If the tree already exist, clear all existing plots of any old data
+//        // they might contain.
+//        if (tree != null) {
+//            this.resetPlots();
+//            return;
+//        }
 
         tree = analysisFactory.createTreeFactory().create();
         histogramFactory = analysisFactory.createHistogramFactory(tree);
@@ -233,7 +234,7 @@
         plotters.get("Raw hit counts/Event").region(1).plot(hitCountPlots.get("SVT top raw hit counts/Event"), this.createStyle("Number of Raw Hits in Top Volume", ""));
         hitCountPlots.put("SVT bottom raw hit counts/Event",
                 histogramFactory.createHistogram1D("SVT bottom raw hit counts", 100, 0, 100));
-        plotters.get("Raw hit counts/Event").region(2).plot(hitCountPlots.get("SVT bottom raw hit counts/Event"), this.createStyle("Number of Raw Bits in the Bottom Volume", ""));
+        plotters.get("Raw hit counts/Event").region(3).plot(hitCountPlots.get("SVT bottom raw hit counts/Event"), this.createStyle("Number of Raw Bits in the Bottom Volume", ""));
 
         plotters.put("First sample distributions (pedestal shifts)", plotterFactory.create("First sample distributions (pedestal shifts)"));
         plotters.get("First sample distributions (pedestal shifts)").createRegions(6, 6);
@@ -271,7 +272,7 @@
         for (RawTrackerHit rawHit : rawHits) {
             HpsSiSensor sensor = (HpsSiSensor) rawHit.getDetectorElement();
             hitsPerSensor.get(sensor.getName())[0]++;
-            firstSamplePlots.get(sensor.getName()).fill(rawHit.getADCValues()[0]-sensor.getPedestal(rawHit.getIdentifierFieldValue("strip"), 0));
+            firstSamplePlots.get(sensor.getName()).fill(rawHit.getADCValues()[0] - sensor.getPedestal(rawHit.getIdentifierFieldValue("strip"), 0));
         }
 
         int[] topLayersHit = new int[12];

Modified: java/trunk/steering-files/src/main/resources/org/hps/steering/monitoring/LooseTrackingAndReconMonitoring.lcsim
 =============================================================================
--- java/trunk/steering-files/src/main/resources/org/hps/steering/monitoring/LooseTrackingAndReconMonitoring.lcsim	(original)
+++ java/trunk/steering-files/src/main/resources/org/hps/steering/monitoring/LooseTrackingAndReconMonitoring.lcsim	Tue May  5 02:08:39 2015
@@ -31,7 +31,7 @@
         <driver name="RawTrackerHitFitterDriver" type="org.hps.recon.tracking.RawTrackerHitFitterDriver">
             <fitAlgorithm>Pileup</fitAlgorithm>
             <useTimestamps>false</useTimestamps>
-            <correctT0Shift>false</correctT0Shift>
+            <correctT0Shift>true</correctT0Shift>
             <useTruthTime>false</useTruthTime>
             <subtractTOF>true</subtractTOF>
             <subtractTriggerTime>true</subtractTriggerTime>

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 May  5 02:08:39 2015
@@ -24,11 +24,14 @@
         <driver name="SvtHitPlots" type="org.hps.monitoring.drivers.svt.SvtHitPlots" />
         <driver name="SamplesPlots" type="org.hps.monitoring.drivers.svt.SamplesPlots" />
         <driver name="RawTrackerHitFitterDriver" type="org.hps.recon.tracking.RawTrackerHitFitterDriver">
-            <fitAlgorithm>Analytic</fitAlgorithm>
+            <fitAlgorithm>Linear</fitAlgorithm>
             <useTimestamps>false</useTimestamps>
-            <correctT0Shift>false</correctT0Shift>
+            <correctT0Shift>true</correctT0Shift>
             <useTruthTime>false</useTruthTime>
             <subtractTOF>true</subtractTOF>
+            <subtractTriggerTime>true</subtractTriggerTime>
+            <correctChanT0>true</correctChanT0>
+            <timeOffset>51.0</timeOffset>
             <debug>false</debug>
         </driver>
         <driver name="TrackerHitDriver" type="org.hps.recon.tracking.DataTrackerHitDriver">

Modified: java/trunk/steering-files/src/main/resources/org/hps/steering/monitoring/TrackingAndReconMonitoring.lcsim
 =============================================================================
--- java/trunk/steering-files/src/main/resources/org/hps/steering/monitoring/TrackingAndReconMonitoring.lcsim	(original)
+++ java/trunk/steering-files/src/main/resources/org/hps/steering/monitoring/TrackingAndReconMonitoring.lcsim	Tue May  5 02:08:39 2015
@@ -35,7 +35,7 @@
         <driver name="RawTrackerHitFitterDriver" type="org.hps.recon.tracking.RawTrackerHitFitterDriver">
             <fitAlgorithm>Pileup</fitAlgorithm>
             <useTimestamps>false</useTimestamps>
-            <correctT0Shift>false</correctT0Shift>
+            <correctT0Shift>true</correctT0Shift>
             <useTruthTime>false</useTruthTime>
             <subtractTOF>true</subtractTOF>
             <subtractTriggerTime>true</subtractTriggerTime>

Modified: java/trunk/steering-files/src/main/resources/org/hps/steering/recon/EngineeringRun2015FullRecon.lcsim
 =============================================================================
--- java/trunk/steering-files/src/main/resources/org/hps/steering/recon/EngineeringRun2015FullRecon.lcsim	(original)
+++ java/trunk/steering-files/src/main/resources/org/hps/steering/recon/EngineeringRun2015FullRecon.lcsim	Tue May  5 02:08:39 2015
@@ -1,9 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">
 <!-- 
   Offline reconstruction for 2015 (engineering run with SVT+ECal) data.
   @author Sho Uemura <[log in to unmask]>
 -->
-<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" 
-       xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">
     <execute>
         <driver name="EventMarkerDriver"/>
         <driver name="RawTrackerHitFitterDriver" />
@@ -28,7 +28,7 @@
         <driver name="RawTrackerHitFitterDriver" type="org.hps.recon.tracking.RawTrackerHitFitterDriver">
             <fitAlgorithm>Pileup</fitAlgorithm>
             <useTimestamps>false</useTimestamps>
-            <correctT0Shift>false</correctT0Shift>
+            <correctT0Shift>true</correctT0Shift>
             <useTruthTime>false</useTruthTime>
             <subtractTOF>true</subtractTOF>
             <subtractTriggerTime>true</subtractTriggerTime>
@@ -43,6 +43,7 @@
             <debug>false</debug>
             <clusterTimeCut>12.0</clusterTimeCut>
             <maxDt>16.0</maxDt>
+            <!--<clusterAmplitudeCut>600.0</clusterAmplitudeCut>-->
             <maxSeperation>20.0</maxSeperation>
             <tolerance>1.0</tolerance>
         </driver>