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>