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>
|