1 added + 12 modified, total 13 files
hps-java/scripts
diff -u -r1.2 -r1.3
--- make_ecal.sh 2 May 2012 00:39:40 -0000 1.2
+++ make_ecal.sh 17 May 2012 18:24:10 -0000 1.3
@@ -1,8 +1,8 @@
#!/bin/bash
#prints the ECal physicalID-daqID conversion table, as found in daqmap/ecal.txt in hps-detectors.
echo "#x y crate slot channel"
-topslots=( 10 13 9 14 8 15 7 16 6 17 5 18 4 -1 )
-botslots=( 10 13 9 14 8 15 7 16 6 17 5 18 -1 -2 )
+topslots=( 10 13 9 14 8 15 7 16 6 17 5 18 4 19 )
+botslots=( 10 13 9 14 8 15 7 16 6 17 5 18 4 19 )
x=-23
y=1
slot=0
hps-java/src/main/java/org/lcsim/hps/monitoring/svt
diff -N SVTMonitoringPlots.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ SVTMonitoringPlots.java 17 May 2012 18:24:10 -0000 1.1
@@ -0,0 +1,175 @@
+package org.lcsim.hps.monitoring.svt;
+
+import hep.aida.*;
+import hep.aida.ref.plotter.PlotterRegion;
+import jas.hist.JASHist;
+
+import java.util.List;
+import org.lcsim.detector.tracker.silicon.SiSensor;
+
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.RawTrackerHit;
+import org.lcsim.geometry.Detector;
+import org.lcsim.hps.monitoring.AIDAFrame;
+import org.lcsim.hps.recon.tracking.HPSFittedRawTrackerHit;
+import org.lcsim.hps.recon.tracking.HPSSVTCalibrationConstants;
+import org.lcsim.hps.recon.tracking.HPSSVTDAQMaps;
+import org.lcsim.util.Driver;
+import org.lcsim.util.aida.AIDA;
+
+/**
+ * This Driver makes plots of sensor occupancies across a run. It is intended to
+ * be used with the monitoring system. It will currently only run on a test run
+ * detector, as the number of sensors, and hence plotter regions, is hardcoded
+ * to 20.
+ *
+ * @author Jeremy McCormick <[log in to unmask]>
+ * @version $Id: SensorOccupancyPlotsDriver.java,v 1.12 2012/04/13 00:06:55
+ * jeremy Exp $
+ *
+ */
+public class SVTMonitoringPlots extends Driver {
+
+ private String inputCollection = "SVTRawTrackerHits";
+ private String fitCollection = "SVTFittedRawTrackerHits";
+ private AIDA aida = AIDA.defaultInstance();
+ private AIDAFrame plotterFrame;
+ private IPlotter plotter, plotter2, plotter3;
+// private IHistogram1D[][] plots = new IHistogram1D[2][10];
+ private IProfile1D[][] pedestalShifts = new IProfile1D[2][10];
+// private IHistogram2D[][] pedestalShifts = new IHistogram2D[2][10];
+ private IHistogram2D[][] t0s = new IHistogram2D[2][10];
+ private IHistogram2D[][] amps = new IHistogram2D[2][10];
+
+ public SVTMonitoringPlots() {
+ }
+
+ public void setInputCollection(String inputCollection) {
+ this.inputCollection = inputCollection;
+ }
+
+ private int computePlotterRegion(int layer, int module) {
+ // Compute the sensor's x and y grid coordinates and then translate to region number.
+ int iy = (layer - 1) / 2;
+ int ix = 0;
+ if (module > 0) {
+ ix += 2;
+ }
+ if (layer % 2 == 0) {
+ ix += 1;
+ }
+ int region = ix * 5 + iy;
+ //System.out.println(sensor.getName() + "; lyr=" + layer + "; mod=" + module + " -> xy[" + ix + "][" + iy + "] -> reg="+region);
+ return region;
+ }
+
+ protected void detectorChanged(Detector detector) {
+ plotterFrame = new AIDAFrame();
+ plotterFrame.setTitle("HPS SVT Monitoring");
+
+ // Setup the plotter.
+ IAnalysisFactory fac = aida.analysisFactory();
+
+ plotter = fac.createPlotterFactory().create("Pedestal Shifts");
+ plotter.setTitle("Pedestal Shifts");
+ plotterFrame.addPlotter(plotter);
+ plotter.style().dataStyle().errorBarStyle().setVisible(false);
+ plotter.style().statisticsBoxStyle().setVisible(false);
+// plotter.style().setParameter("hist2DStyle", "colorMap");
+// plotter.style().dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
+// plotter.style().zAxisStyle().setParameter("scale", "log");
+ plotter.style().dataStyle().fillStyle().setColor("red");
+ plotter.style().dataStyle().markerStyle().setShape("dot");
+ plotter.style().dataStyle().markerStyle().setSize(1);
+ plotter.createRegions(4, 5);
+
+ plotter2 = fac.createPlotterFactory().create("Fitted T0");
+ plotter2.setTitle("Fitted T0");
+ plotterFrame.addPlotter(plotter2);
+ plotter2.style().dataStyle().errorBarStyle().setVisible(false);
+ plotter2.style().statisticsBoxStyle().setVisible(false);
+ plotter2.style().setParameter("hist2DStyle", "colorMap");
+ plotter2.style().dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
+ plotter2.style().zAxisStyle().setParameter("scale", "log");
+ plotter2.style().zAxisStyle().setVisible(false);
+// plotter2.style().dataStyle().markerStyle().setShape("dot");
+// plotter2.style().dataStyle().markerStyle().setSize(1);
+ plotter2.createRegions(4, 5);
+
+ plotter3 = fac.createPlotterFactory().create("Fitted Amplitude");
+ plotter3.setTitle("Fitted Amplitude");
+ plotterFrame.addPlotter(plotter3);
+ plotter3.style().dataStyle().errorBarStyle().setVisible(false);
+ plotter3.style().statisticsBoxStyle().setVisible(false);
+ plotter3.style().setParameter("hist2DStyle", "colorMap");
+ plotter3.style().dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
+ plotter3.style().zAxisStyle().setParameter("scale", "log");
+ plotter3.style().zAxisStyle().setVisible(false);
+// plotter3.style().dataStyle().markerStyle().setShape("dot");
+// plotter3.style().dataStyle().markerStyle().setSize(1);
+ plotter3.createRegions(4, 5);
+
+ // Setup the occupancy plots.
+ aida.tree().cd("/");
+ for (int module = 0; module < 2; module++) {
+ for (int layer = 0; layer < 10; layer++) {
+ int region = computePlotterRegion(layer + 1, module);
+ pedestalShifts[module][layer] = aida.profile1D(HPSSVTDAQMaps.sensorArray[module][layer].getName() + " Pedestal Shifts", 640, -0.5, 639.5);
+// pedestalShifts[module][layer] = aida.histogram2D(HPSSVTDAQMaps.sensorArray[module][layer].getName() + " Pedestal Shifts", 640, -0.5, 639.5, 100, -500, 500);
+ plotter.region(region).plot(pedestalShifts[module][layer]);
+ t0s[module][layer] = aida.histogram2D(HPSSVTDAQMaps.sensorArray[module][layer].getName() + " Fitted T0", 640, -0.5, 639.5, 100, -24, 48);
+ plotter2.region(region).plot(t0s[module][layer]);
+ amps[module][layer] = aida.histogram2D(HPSSVTDAQMaps.sensorArray[module][layer].getName() + " Fitted Amplitude", 640, -0.5, 639.5, 100, 0, 2000);
+ plotter3.region(region).plot(amps[module][layer]);
+// plotter3.region(region).style().zAxisStyle().setParameter("labelVertical", "false");
+// for (String str : plotter3.region(region).style().zAxisStyle().availableParameterOptions("labelVertical"))
+// System.out.println(str);
+
+ }
+ }
+ plotterFrame.pack();
+ plotterFrame.setVisible(true);
+ }
+
+ public void process(EventHeader event) {
+ if (event.hasCollection(RawTrackerHit.class, inputCollection)) {
+
+ // Get RawTrackerHit collection from event.
+ List<RawTrackerHit> rawTrackerHits = event.get(RawTrackerHit.class, inputCollection);
+
+ // Clear histograms.
+ for (int module = 0; module < 2; module++) {
+ for (int layer = 1; layer < 11; layer++) {
+// plotter.region(computePlotterRegion(layer, module)).setYLimits(pedestalShifts[module][layer - 1].minBinHeight()-100, pedestalShifts[module][layer - 1].maxBinHeight()+100);
+// pedestalShifts[module][layer - 1].reset();
+ }
+ }
+
+ // Increment strip hit count.
+ for (RawTrackerHit hit : rawTrackerHits) {
+ int layer = hit.getIdentifierFieldValue("layer"); // 1-10; axial layers are odd layers; stereo layers are even
+ int module = hit.getIdentifierFieldValue("module"); // 0-1; module number is top or bottom
+ double pedestal = HPSSVTCalibrationConstants.getPedestal((SiSensor) hit.getDetectorElement(), hit.getIdentifierFieldValue("strip"));
+ pedestalShifts[module][layer - 1].fill(hit.getIdentifierFieldValue("strip"), hit.getADCValues()[0] - pedestal);
+ }
+ }
+
+ if (event.hasCollection(HPSFittedRawTrackerHit.class, fitCollection)) {
+ List<HPSFittedRawTrackerHit> fits = event.get(HPSFittedRawTrackerHit.class, fitCollection);
+ for (HPSFittedRawTrackerHit fit : fits) {
+ int layer = fit.getRawTrackerHit().getIdentifierFieldValue("layer"); // 1-10; axial layers are odd layers; stereo layers are even
+ int module = fit.getRawTrackerHit().getIdentifierFieldValue("module"); // 0-1; module number is top or bottom
+ int strip = fit.getRawTrackerHit().getIdentifierFieldValue("strip");
+ t0s[module][layer - 1].fill(strip,fit.getT0());
+ amps[module][layer - 1].fill(strip,fit.getAmp());
+ }
+ }
+
+ }
+
+ public void endOfData() {
+ if (plotter != null) {
+ plotter.hide();
+ }
+ }
+}
\ No newline at end of file
hps-java/src/main/java/org/lcsim/hps/monitoring/svt
diff -u -r1.11 -r1.12
--- SVTHitReconstructionPlots.java 14 May 2012 22:51:35 -0000 1.11
+++ SVTHitReconstructionPlots.java 17 May 2012 18:24:10 -0000 1.12
@@ -17,7 +17,6 @@
import org.lcsim.hps.monitoring.AIDAFrame;
import org.lcsim.hps.monitoring.Resettable;
import org.lcsim.hps.recon.tracking.HPSFittedRawTrackerHit;
-import org.lcsim.hps.recon.tracking.HPSSVTCalibrationConstants;
import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHitStrip1D;
import org.lcsim.util.Driver;
import org.lcsim.util.aida.AIDA;
@@ -29,7 +28,6 @@
public class SVTHitReconstructionPlots extends Driver implements Resettable {
private AIDAFrame plotterFrame;
- private List<IPlotter> plotters = new ArrayList<IPlotter>();
private AIDA aida = AIDA.defaultInstance();
private String rawTrackerHitCollectionName = "SVTRawTrackerHits";
private String fittedTrackerHitCollectionName = "SVTFittedRawTrackerHits";
@@ -66,7 +64,6 @@
plotter = fac.createPlotterFactory().create("HPS SVT Timing Plots");
plotter.setTitle("Timing");
plotterFrame.addPlotter(plotter);
- plotters.add(plotter);
IPlotterStyle style = plotter.style();
style.dataStyle().fillStyle().setColor("yellow");
style.dataStyle().errorBarStyle().setVisible(false);
@@ -75,7 +72,6 @@
plotter2 = fac.createPlotterFactory().create("HPS SVT Amplitude Plots");
plotter2.setTitle("Amplitude");
plotterFrame.addPlotter(plotter2);
- plotters.add(plotter2);
IPlotterStyle style2 = plotter2.style();
style2.dataStyle().fillStyle().setColor("yellow");
style2.dataStyle().errorBarStyle().setVisible(false);
@@ -85,7 +81,6 @@
plotter3 = fac.createPlotterFactory().create("HPS SVT Raw Hit Plots");
plotter3.setTitle("Raw Hits");
plotterFrame.addPlotter(plotter3);
- plotters.add(plotter3);
IPlotterStyle style3 = plotter3.style();
style3.dataStyle().fillStyle().setColor("yellow");
style3.dataStyle().errorBarStyle().setVisible(false);
@@ -94,7 +89,6 @@
plotter4 = fac.createPlotterFactory().create("HPS SVT Reco Hit Plots");
plotter4.setTitle("Reco Hits");
plotterFrame.addPlotter(plotter4);
- plotters.add(plotter4);
IPlotterStyle style4 = plotter4.style();
style4.dataStyle().fillStyle().setColor("yellow");
style4.dataStyle().errorBarStyle().setVisible(false);
@@ -103,7 +97,6 @@
plotter5 = fac.createPlotterFactory().create("HPS SVT Cluster Size Plots");
plotter5.setTitle("Cluster Size");
plotterFrame.addPlotter(plotter5);
- plotters.add(plotter5);
IPlotterStyle style5 = plotter5.style();
style5.dataStyle().fillStyle().setColor("green");
style5.dataStyle().errorBarStyle().setVisible(false);
@@ -112,7 +105,6 @@
plotter6 = fac.createPlotterFactory().create("HPS SVT Cluster Amp Plots");
plotter6.setTitle("Cluster Amplitude");
plotterFrame.addPlotter(plotter6);
- plotters.add(plotter6);
IPlotterStyle style6 = plotter6.style();
style6.dataStyle().fillStyle().setColor("green");
style6.dataStyle().errorBarStyle().setVisible(false);
@@ -120,7 +112,7 @@
for (SiSensor sensor : sensors) {
- IHistogram1D timingPlot = aida.histogram1D(sensor.getName() + "_timing", 50, 0, 25.0);
+ IHistogram1D timingPlot = aida.histogram1D(sensor.getName() + "_timing", 50, -25, 25.0);
IHistogram1D amplitudePlot = aida.histogram1D(sensor.getName() + "_amplitude", 50, 0, 2000.0);
IHistogram1D nrawPlot = aida.histogram1D(sensor.getName() + "_raw_hits", 10, 0, 9.0);
IHistogram1D nrecoPlot = aida.histogram1D(sensor.getName() + "_reco_hits", 10, 0, 9.0);
hps-java/src/main/java/org/lcsim/hps/monitoring/svt
diff -u -r1.2 -r1.3
--- SVTSimpleEventDisplay.java 13 May 2012 21:38:20 -0000 1.2
+++ SVTSimpleEventDisplay.java 17 May 2012 18:24:10 -0000 1.3
@@ -3,18 +3,16 @@
import hep.aida.IAnalysisFactory;
import hep.aida.IHistogram1D;
import hep.aida.IPlotter;
-import hep.aida.IPlotterStyle;
-import hep.aida.ref.plotter.PlotterRegion;
-import jas.hist.JASHist;
import java.util.List;
-import org.lcsim.detector.identifier.IIdentifier;
-import org.lcsim.detector.identifier.IIdentifierHelper;
-import org.lcsim.detector.tracker.silicon.SiSensor;
import org.lcsim.event.EventHeader;
import org.lcsim.event.RawTrackerHit;
+import org.lcsim.fit.helicaltrack.HelicalTrackHit;
import org.lcsim.geometry.Detector;
+import org.lcsim.hps.monitoring.AIDAFrame;
+import org.lcsim.hps.recon.tracking.HPSSVTDAQMaps;
+import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHit;
import org.lcsim.util.Driver;
import org.lcsim.util.aida.AIDA;
@@ -31,21 +29,36 @@
*/
public class SVTSimpleEventDisplay extends Driver {
- private String inputCollection = "RawTrackerHitMaker_RawTrackerHits";
- private String trackerName = "Tracker";
+ private AIDAFrame plotterFrame;
+ private String inputCollection = "SVTRawTrackerHits";
+ private String trackerHitCollection = "StripClusterer_SiTrackerHitStrip1D";
+ private String helicalHitCollection = "HelicalTrackHits";
private AIDA aida = AIDA.defaultInstance();
- private IPlotter plotter;
- private Detector detector;
- private List<SiSensor> sensors;
- private IHistogram1D[][] plots = new IHistogram1D[2][10];
+ private IPlotter plotter, plotter2, plotter3;
+ private IHistogram1D[][] rth = new IHistogram1D[2][10];
+ private IHistogram1D[][] th = new IHistogram1D[2][10];
+ private IHistogram1D[][] hth = new IHistogram1D[2][10];
+ private boolean singleEvent = true;
public SVTSimpleEventDisplay() {
}
+ public void setHelicalHitCollection(String helicalHitCollection) {
+ this.helicalHitCollection = helicalHitCollection;
+ }
+
+ public void setSingleEvent(boolean singleEvent) {
+ this.singleEvent = singleEvent;
+ }
+
public void setInputCollection(String inputCollection) {
this.inputCollection = inputCollection;
}
+ public void setTrackerHitCollection(String trackerHitCollection) {
+ this.trackerHitCollection = trackerHitCollection;
+ }
+
private int computePlotterRegion(int layer, int module) {
// Compute the sensor's x and y grid coordinates and then translate to region number.
int iy = (layer - 1) / 2;
@@ -62,88 +75,106 @@
}
protected void detectorChanged(Detector detector) {
+ plotterFrame = new AIDAFrame();
+ plotterFrame.setTitle("HPS SVT Event Display");
// Setup the plotter.
IAnalysisFactory fac = aida.analysisFactory();
- plotter = fac.createPlotterFactory().create(detector.getDetectorName() + " : HPS SVT Simple Event Display");
- IPlotterStyle pstyle = plotter.style();
- pstyle.dataStyle().fillStyle().setColor("green");
- pstyle.dataStyle().markerStyle().setColor("green");
- pstyle.dataStyle().errorBarStyle().setVisible(false);
- pstyle.statisticsBoxStyle().setVisible(false);
- // Create regions.
+ plotter = fac.createPlotterFactory().create("RawTrackerHits");
+ plotter.setTitle("RawTrackerHits");
+ plotterFrame.addPlotter(plotter);
+ plotter.style().dataStyle().errorBarStyle().setVisible(false);
+ plotter.style().statisticsBoxStyle().setVisible(false);
plotter.createRegions(4, 5);
- // Cache Detector object.
- this.detector = detector;
-
- // Make a list of SiSensors in the SVT.
- sensors = this.detector.getSubdetector(trackerName).getDetectorElement().findDescendants(SiSensor.class);
-
- for (int module = 0; module < 2; module++) {
- for (int layer = 1; layer < 11; layer++) {
- plots[module][layer - 1] = null;
- }
- }
+ plotter2 = fac.createPlotterFactory().create("TrackerHits");
+ plotter2.setTitle("TrackerHits");
+ plotterFrame.addPlotter(plotter2);
+ plotter2.style().dataStyle().errorBarStyle().setVisible(false);
+ plotter2.style().statisticsBoxStyle().setVisible(false);
+ plotter2.createRegions(4, 5);
+
+ plotter3 = fac.createPlotterFactory().create("HelicalTrackHits");
+ plotter3.setTitle("HelicalTrackHits");
+ plotterFrame.addPlotter(plotter3);
+ plotter3.style().dataStyle().errorBarStyle().setVisible(false);
+ plotter3.style().statisticsBoxStyle().setVisible(false);
+ plotter3.createRegions(4, 5);
// Setup the occupancy plots.
aida.tree().cd("/");
- for (SiSensor sensor : sensors) {
- IIdentifierHelper helper = sensor.getIdentifierHelper();
- IIdentifier id = sensor.getIdentifier();
-
- int layer = helper.getValue(id, "layer"); // 1-10; axial layers are odd layers; stereo layers are even
- int module = helper.getValue(id, "module"); // 0-1; module number is top or bottom
-
- plots[module][layer - 1] = aida.histogram1D(sensor.getName() + " Event Display", 640, 0, 639);
- plotter.region(computePlotterRegion(layer, module)).plot(plots[module][layer - 1]);
- JASHist hist = ((PlotterRegion) plotter.region(computePlotterRegion(layer, module))).getPlot();
- hist.setAllowUserInteraction(false);
- hist.setAllowPopupMenus(false);
- }
-
for (int module = 0; module < 2; module++) {
- for (int layer = 1; layer < 11; layer++) {
- if (plots[module][layer - 1] == null) {
- throw new RuntimeException("Couldn't find sensor with module " + module + ", layer " + layer);
- }
+ for (int layer = 0; layer < 10; layer++) {
+ int region = computePlotterRegion(layer + 1, module);
+ rth[module][layer] = aida.histogram1D(HPSSVTDAQMaps.sensorArray[module][layer].getName() + " RawTrackerHits", 640, -0.5, 639.5);
+ plotter.region(region).plot(rth[module][layer]);
+ th[module][layer] = aida.histogram1D(HPSSVTDAQMaps.sensorArray[module][layer].getName() + " TrackerHits", 640, -0.5, 639.5);
+ plotter2.region(region).plot(th[module][layer]);
+ hth[module][layer] = aida.histogram1D(HPSSVTDAQMaps.sensorArray[module][layer].getName() + " HelicalTrackHits", 640, -0.5, 639.5);
+ plotter3.region(region).plot(hth[module][layer]);
}
}
- plotter.show();
+ plotterFrame.pack();
+ plotterFrame.setVisible(true);
}
public void process(EventHeader event) {
- if (event.hasCollection(RawTrackerHit.class, inputCollection)) {
-
- // Get RawTrackerHit collection from event.
- List<RawTrackerHit> rawTrackerHits = event.get(RawTrackerHit.class, inputCollection);
-
- // Clear histograms.
+ // Clear histograms.
+ if (singleEvent) {
for (int module = 0; module < 2; module++) {
for (int layer = 1; layer < 11; layer++) {
- plots[module][layer - 1].reset();
+ rth[module][layer - 1].reset();
+ th[module][layer - 1].reset();
+ hth[module][layer - 1].reset();
}
}
+ }
+
+ if (event.hasCollection(RawTrackerHit.class, inputCollection)) {
+ List<RawTrackerHit> rawTrackerHits = event.get(RawTrackerHit.class, inputCollection);
// Increment strip hit count.
for (RawTrackerHit hit : rawTrackerHits) {
- SiSensor sensor = (SiSensor) hit.getDetectorElement();
- IIdentifierHelper helper = sensor.getIdentifierHelper();
- IIdentifier id = sensor.getIdentifier();
+ int layer = hit.getIdentifierFieldValue("layer"); // 1-10; axial layers are odd layers; stereo layers are even
+ int module = hit.getIdentifierFieldValue("module"); // 0-1; module number is top or bottom
- int layer = helper.getValue(id, "layer"); // 1-10; axial layers are odd layers; stereo layers are even
- int module = helper.getValue(id, "module"); // 0-1; module number is top or bottom
+ rth[module][layer - 1].fill(hit.getIdentifierFieldValue("strip"));
+ }
+ }
- plots[module][layer - 1].fill(hit.getIdentifierFieldValue("strip"));
+ if (event.hasCollection(SiTrackerHit.class, trackerHitCollection)) {
+ List<SiTrackerHit> trackerHits = event.get(SiTrackerHit.class, trackerHitCollection);
+
+ // Increment strip hit count.
+ for (SiTrackerHit hit : trackerHits) {
+ for (RawTrackerHit rawHit : hit.getRawHits()) {
+ int layer = rawHit.getIdentifierFieldValue("layer"); // 1-10; axial layers are odd layers; stereo layers are even
+ int module = rawHit.getIdentifierFieldValue("module"); // 0-1; module number is top or bottom
+
+ th[module][layer - 1].fill(rawHit.getIdentifierFieldValue("strip"));
+ }
}
}
- }
- public void endOfData() {
- if (plotter != null) {
- plotter.hide();
+ if (event.hasCollection(HelicalTrackHit.class, helicalHitCollection)) {
+ List<HelicalTrackHit> helicalTrackerHits = event.get(HelicalTrackHit.class, helicalHitCollection);
+
+ // Increment strip hit count.
+ for (HelicalTrackHit hit : helicalTrackerHits) {
+ for (Object rawHit : hit.getRawHits()) {
+ int layer = ((RawTrackerHit) rawHit).getIdentifierFieldValue("layer"); // 1-10; axial layers are odd layers; stereo layers are even
+ int module = ((RawTrackerHit) rawHit).getIdentifierFieldValue("module"); // 0-1; module number is top or bottom
+
+ hth[module][layer - 1].fill(((RawTrackerHit) rawHit).getIdentifierFieldValue("strip"));
+ }
+ }
}
}
+// public void endOfData() {
+// if (plotter != null) {
+// plotter.hide();
+// }
+// }
}
\ No newline at end of file
hps-java/src/main/java/org/lcsim/hps/monitoring/svt
diff -u -r1.5 -r1.6
--- SVTEventDisplay.java 13 May 2012 21:38:20 -0000 1.5
+++ SVTEventDisplay.java 17 May 2012 18:24:10 -0000 1.6
@@ -94,6 +94,11 @@
}
}
+ @Override
+ public void endOfData() {
+ plotter.hide();
+ }
+
private void fillPlots(HelicalTrackHit hit) {
// SiSensor sensor = (SiSensor) hit.getDetectorElement();
hps-java/src/main/java/org/lcsim/hps/recon/tracking
diff -u -r1.7 -r1.8
--- HPSShaperAnalyticFitAlgorithm.java 14 May 2012 19:07:55 -0000 1.7
+++ HPSShaperAnalyticFitAlgorithm.java 17 May 2012 18:24:10 -0000 1.8
@@ -30,6 +30,8 @@
}
}
fit.setChiSq(fitSection(samples, constants, fit, bestStart));
+// System.out.format("%f\t%f\t%f\t%f\t%f\t%f\n",samples[0]-constants.getPedestal(),samples[1]-constants.getPedestal(),samples[2]-constants.getPedestal(),samples[3]-constants.getPedestal(),samples[4]-constants.getPedestal(),samples[5]-constants.getPedestal());
+// System.out.println("start = "+bestStart+", "+fit);
return fit;
}
hps-java/src/main/java/org/lcsim/hps/recon/tracking
diff -u -r1.8 -r1.9
--- HPSSVTDAQMaps.java 17 May 2012 00:15:26 -0000 1.8
+++ HPSSVTDAQMaps.java 17 May 2012 18:24:10 -0000 1.9
@@ -1,4 +1,3 @@
-
package org.lcsim.hps.recon.tracking;
//--- java ---//
@@ -10,10 +9,10 @@
//--- org.lcsim ---//
import org.lcsim.conditions.ConditionsManager;
-import org.lcsim.conditions.ConditionsManager.ConditionsNotFoundException;
import org.lcsim.conditions.ConditionsSet;
import org.lcsim.detector.IDetectorElement;
import org.lcsim.detector.identifier.IIdentifier;
+import org.lcsim.detector.identifier.IIdentifierHelper;
import org.lcsim.detector.tracker.silicon.SiSensor;
import org.lcsim.detector.tracker.silicon.SiTrackerIdentifierHelper;
import org.lcsim.geometry.Detector;
@@ -26,139 +25,182 @@
* Creates maps between SVT sensors to FPGA and Hybrid pairs and vice versa
*
* @author Omar Moreno
- * @version $Id: HPSSVTDAQMaps.java,v 1.8 2012/05/17 00:15:26 jeremy Exp $
+ * @version $Id: HPSSVTDAQMaps.java,v 1.9 2012/05/17 18:24:10 meeg Exp $
*/
public class HPSSVTDAQMaps extends Driver {
-
+
String subdetectorName = "Tracker";
- boolean debug = false;
-
+ boolean debug = false;
ConditionsManager mgr = ConditionsManager.defaultInstance();
-
// Set of sensors
public static Set<SiSensor> sensors = new HashSet<SiSensor>();
-
// Map from Sensor to Hybrid/FPGA pair
- public static Map<SiSensor /* Sensor */, Pair<Integer /* Hybrid */, Integer /* FPGA */>> sensorToDAQPair;
-
+ public static Map<SiSensor /*
+ * Sensor
+ */, Pair<Integer /*
+ * Hybrid
+ */, Integer /*
+ * FPGA
+ */>> sensorToDAQPair;
// Map from Hybrid/FPGA pair
- public static Map<Pair<Integer /* Hybrid */, Integer /* FPGA */>, SiSensor /* Sensor */> daqPairToSensor;
-
+ public static Map<Pair<Integer /*
+ * Hybrid
+ */, Integer /*
+ * FPGA
+ */>, SiSensor /*
+ * Sensor
+ */> daqPairToSensor;
// Map from SVT top layer to Hybrid/FPGA pair
- private Map<Integer /* Layer # */, Pair<Integer /*Hybrid */, Integer /* FPGA */ >> topLayerToDAQ;
-
+ private Map<Integer /*
+ * Layer #
+ */, Pair<Integer /*
+ * Hybrid
+ */, Integer /*
+ * FPGA
+ */>> topLayerToDAQ;
// Map from SVT bottom layer to Hybrid/FPGA pair
- private Map<Integer /* Layer # */, Pair<Integer /*Hybrid */, Integer /* FPGA */ >> bottomLayerToDAQ;
-
+ private Map<Integer /*
+ * Layer #
+ */, Pair<Integer /*
+ * Hybrid
+ */, Integer /*
+ * FPGA
+ */>> bottomLayerToDAQ;
// Map sensor to an SVT top layer
- public static Map<SiSensor /* Sensor */, Integer /* Layer */> sensorToTopLayer;
-
+ public static Map<SiSensor /*
+ * Sensor
+ */, Integer /*
+ * Layer
+ */> sensorToTopLayer;
// Map sensor to an SVT bottom layer
- public static Map<SiSensor /* Sensor */, Integer /* Layer */> sensorToBottomLayer;
-
+ public static Map<SiSensor /*
+ * Sensor
+ */, Integer /*
+ * Layer
+ */> sensorToBottomLayer;
+ public static final SiSensor[][] sensorArray = new SiSensor[2][10];
+
/**
- * Default Constructor.
+ * Default Constructor.
*/
- public HPSSVTDAQMaps()
- {
- sensorToDAQPair = new HashMap<SiSensor, Pair<Integer, Integer>>();
- daqPairToSensor = new HashMap<Pair<Integer, Integer>, SiSensor>();
- topLayerToDAQ = new HashMap<Integer, Pair<Integer, Integer>>();
- bottomLayerToDAQ = new HashMap<Integer, Pair<Integer, Integer>>();
- sensorToTopLayer = new HashMap<SiSensor, Integer>();
- sensorToBottomLayer = new HashMap<SiSensor, Integer>();
-
+ public HPSSVTDAQMaps() {
+ sensorToDAQPair = new HashMap<SiSensor, Pair<Integer, Integer>>();
+ daqPairToSensor = new HashMap<Pair<Integer, Integer>, SiSensor>();
+ topLayerToDAQ = new HashMap<Integer, Pair<Integer, Integer>>();
+ bottomLayerToDAQ = new HashMap<Integer, Pair<Integer, Integer>>();
+ sensorToTopLayer = new HashMap<SiSensor, Integer>();
+ sensorToBottomLayer = new HashMap<SiSensor, Integer>();
+
}
-
+
/**
- *
- * @param detector
+ *
+ * @param detector
*/
@Override
public void detectorChanged(Detector detector) {
// Call the sub-Driver's detectorChanged methods.
- super.detectorChanged(detector);
-
- if(subdetectorName == null){
+// super.detectorChanged(detector);
+
+ if (subdetectorName == null) {
throw new RuntimeException("The subdetector name was not set!");
}
-
+
// Get the HPS detector conditions
// Removed this because it causes detector to be set twice when running jobs. --JM
//try {
- // mgr.setDetector(detector.getDetectorName(), 0);
- //} catch (ConditionsNotFoundException e) {
- // System.out.println("The conditions for " + detector.getDetectorName() + " were not found!");
- //}
-
+ // mgr.setDetector(detector.getDetectorName(), 0);
+ //} catch (ConditionsNotFoundException e) {
+ // System.out.println("The conditions for " + detector.getDetectorName() + " were not found!");
+ //}
+
// Get the top SVT DAQ Map
ConditionsSet svtDAQMap = mgr.getConditions("daqmap/SVTDAQMapTop");
-
+
String[] daqPair;
-
+
// Loop over the top layers and fill the DAQ map
- for(Object topLayer : svtDAQMap.keySet()){
- daqPair = svtDAQMap.getString(topLayer.toString()).split(" ");
- if(debug) System.out.println("Layer: " + topLayer.toString() + " Hybrid: " + daqPair[0] + " FPGA: " + daqPair[1]);
- topLayerToDAQ.put(Integer.parseInt(topLayer.toString()), new Pair<Integer, Integer>( Integer.parseInt(daqPair[0]), Integer.parseInt(daqPair[1])));
-
+ for (Object topLayer : svtDAQMap.keySet()) {
+ daqPair = svtDAQMap.getString(topLayer.toString()).split(" ");
+ if (debug) {
+ System.out.println("Layer: " + topLayer.toString() + " Hybrid: " + daqPair[0] + " FPGA: " + daqPair[1]);
+ }
+ topLayerToDAQ.put(Integer.parseInt(topLayer.toString()), new Pair<Integer, Integer>(Integer.parseInt(daqPair[0]), Integer.parseInt(daqPair[1])));
+
}
-
+
// Get the bottom SVT DAQ Map
svtDAQMap = mgr.getConditions("daqmap/SVTDAQMapBottom");
-
+
// Loop over the bottom layers and fill the DAQ map
- for(Object bottomLayer : svtDAQMap.keySet()){
- daqPair = svtDAQMap.getString(bottomLayer.toString()).split(" ");
- if(debug) System.out.println("Layer: " + bottomLayer.toString() + " Hybrid: " + daqPair[0] + " FPGA: " + daqPair[1]);
- bottomLayerToDAQ.put(Integer.parseInt(bottomLayer.toString()), new Pair<Integer, Integer>( Integer.parseInt(daqPair[0]), Integer.parseInt(daqPair[1])));
+ for (Object bottomLayer : svtDAQMap.keySet()) {
+ daqPair = svtDAQMap.getString(bottomLayer.toString()).split(" ");
+ if (debug) {
+ System.out.println("Layer: " + bottomLayer.toString() + " Hybrid: " + daqPair[0] + " FPGA: " + daqPair[1]);
+ }
+ bottomLayerToDAQ.put(Integer.parseInt(bottomLayer.toString()), new Pair<Integer, Integer>(Integer.parseInt(daqPair[0]), Integer.parseInt(daqPair[1])));
}
-
+
// Get the SVT
- IDetectorElement detectorElement
- = detector.getDetectorElement().findDetectorElement(subdetectorName);
-
+ IDetectorElement detectorElement = detector.getDetectorElement().findDetectorElement(subdetectorName);
+
// Get all SVT sensors
sensors.addAll(detectorElement.findDescendants(SiSensor.class));
+ for (SiSensor sensor : sensors) {
+ IIdentifierHelper helper = sensor.getIdentifierHelper();
+ IIdentifier id = sensor.getIdentifier();
+
+ int layer = helper.getValue(id, "layer"); // 1-10; axial layers are odd layers; stereo layers are even
+ int module = helper.getValue(id, "module"); // 0-1; module number is top or bottom
+
+ sensorArray[module][layer - 1] = sensor;
+ }
+
+ for (int module = 0; module < 2; module++) {
+ for (int layer = 0; layer < 10; layer++) {
+ if (sensorArray[module][layer] == null) {
+ throw new RuntimeException("Couldn't find sensor with module " + module + ", layer " + layer + 1);
+ }
+ }
+ }
+
+
// Map sensors to hybrid and FPGA
createDAQMaps(sensors);
-
+
}
-
-
+
/**
- * Create maps which relate a DAQ pair (hybrid, FPGA) to a sensor
- * and vice versa
- *
- * @param sensors
- * A set of all sensors in the detector
+ * Create maps which relate a DAQ pair (hybrid, FPGA) to a sensor and vice
+ * versa
+ *
+ * @param sensors A set of all sensors in the detector
*/
- private void createDAQMaps(Set<SiSensor> sensors)
- {
-
+ private void createDAQMaps(Set<SiSensor> sensors) {
+
IIdentifier sensorIdent;
SiTrackerIdentifierHelper sensorHelper;
Pair<Integer, Integer> daqPair;
-
- for(SiSensor sensor : sensors){
-
+
+ for (SiSensor sensor : sensors) {
+
// Get the sensor identifier
sensorIdent = sensor.getIdentifier();
-
+
// Get the sensor identifier helper
sensorHelper = (SiTrackerIdentifierHelper) sensor.getIdentifierHelper();
-
+
// Get the DAQ pair
int layerNumber = sensorHelper.getLayerValue(sensorIdent);
- if(sensorHelper.getModuleValue(sensorIdent) == 0){
+ if (sensorHelper.getModuleValue(sensorIdent) == 0) {
daqPair = topLayerToDAQ.get(layerNumber);
sensorToTopLayer.put(sensor, layerNumber);
} else {
- daqPair = bottomLayerToDAQ.get(layerNumber);
- sensorToBottomLayer.put(sensor, layerNumber);
+ daqPair = bottomLayerToDAQ.get(layerNumber);
+ sensorToBottomLayer.put(sensor, layerNumber);
}
-
+
sensorToDAQPair.put(sensor, daqPair);
daqPairToSensor.put(daqPair, sensor);
}
hps-java/src/main/java/org/lcsim/hps/recon/tracking
diff -u -r1.11 -r1.12
--- HPSRawTrackerHitFitterDriver.java 13 May 2012 21:40:25 -0000 1.11
+++ HPSRawTrackerHitFitterDriver.java 17 May 2012 18:24:10 -0000 1.12
@@ -75,9 +75,6 @@
if (debug) {
System.out.println(fit);
}
- if (fit.getT0() < 0.0) {
- continue;
- }
fits.add(fit);
HPSFittedRawTrackerHit hth = new HPSFittedRawTrackerHit(hit, fit);
hits.add(hth);
hps-java/src/main/java/org/lcsim/hps/recon/tracking
diff -u -r1.5 -r1.6
--- HPSNearestNeighborRMS.java 1 May 2012 17:59:22 -0000 1.5
+++ HPSNearestNeighborRMS.java 17 May 2012 18:24:10 -0000 1.6
@@ -17,8 +17,9 @@
private double _seed_threshold;
private double _neighbor_threshold;
private double _cluster_threshold;
- private double _meanTime=48;
+ private double _meanTime=24;
private double _timeWindow = 48;
+ private double _maxChisq = 10.0;
/**
* Instantiate NearestNeighborRMS with specified thresholds.
@@ -167,7 +168,7 @@
clusterable.put(channel_number, signal/noiseRMS >= _neighbor_threshold);
// Add this hit to the list of seeds if it is above the seed threshold
- if (signal/noiseRMS >= _seed_threshold&&passTimingCut(base_hit)) {
+ if (signal/noiseRMS >= _seed_threshold&&passTimingCut(base_hit) && passChisqCut(base_hit)) {
cluster_seeds.add(channel_number);
}
}
@@ -243,12 +244,16 @@
boolean pass=false;
double time=hit.getT0();
- if((time-_meanTime)<_timeWindow)
+ if(Math.abs(time-_meanTime)<_timeWindow)
pass = true;
return pass;
}
+ private boolean passChisqCut(HPSFittedRawTrackerHit hit){
+ return hit.getShapeFitParameters().getChiSq() < _maxChisq;
+ }
+
public int getNeighborCell(int cell, int ncells_0, int ncells_1)
{
int neighbor_cell = cell + ncells_0;
hps-java/src/main/java/org/lcsim/hps/recon/tracking
diff -u -r1.9 -r1.10
--- HPSSVTCalibrationConstants.java 13 May 2012 21:38:20 -0000 1.9
+++ HPSSVTCalibrationConstants.java 17 May 2012 18:24:10 -0000 1.10
@@ -185,7 +185,7 @@
} else {
// System.out.println("Couldn't get Tp for sensor " + sensor.getName() + ", channel " + channel);
// constants.setTp(35.0);
- constants.setTp(45.0);
+ constants.setTp(53.0);
}
return constants;
hps-java/src/main/java/org/lcsim/hps/monitoring/ecal
diff -u -r1.8 -r1.9
--- EcalPedestalPlots.java 16 May 2012 16:05:59 -0000 1.8
+++ EcalPedestalPlots.java 17 May 2012 18:24:11 -0000 1.9
@@ -173,9 +173,7 @@
}
public void endOfData() {
- if (plotter != null) {
- plotter.hide();
- }
+ plotterFrame.dispose();
if (calWindow > 0) {
for (int crate = 1; crate < 3; crate++) {
for (short slot = 0; slot < 20; slot++) {
hps-java/src/main/java/org/lcsim/hps/monitoring/ecal
diff -u -r1.7 -r1.8
--- EcalMonitoringPlots.java 16 May 2012 16:05:59 -0000 1.7
+++ EcalMonitoringPlots.java 17 May 2012 18:24:11 -0000 1.8
@@ -103,12 +103,11 @@
}
}
-// public void endOfData() {
-// if (plotter != null) {
-// plotter.hide();
-// plotter.destroyRegions();
-// }
-// }
+ public void endOfData() {
+ plotter.hide();
+ plotter.destroyRegions();
+ }
+
@Override
public void reset() {
if (hitCountFillPlot != null) {
@@ -117,6 +116,12 @@
if (hitCountDrawPlot != null) {
hitCountDrawPlot.reset();
}
+ if (clusterCountFillPlot != null) {
+ clusterCountFillPlot.reset();
+ }
+ if (clusterCountDrawPlot != null) {
+ clusterCountDrawPlot.reset();
+ }
}
@Override
hps-java/src/main/java/org/lcsim/hps/evio
diff -u -r1.10 -r1.11
--- TestRunEvioToLcio.java 12 May 2012 23:09:05 -0000 1.10
+++ TestRunEvioToLcio.java 17 May 2012 18:24:11 -0000 1.11
@@ -11,6 +11,8 @@
import org.apache.commons.cli.PosixParser;
import org.jlab.coda.jevio.EvioEvent;
import org.jlab.coda.jevio.EvioReader;
+import org.lcsim.conditions.ConditionsManager;
+import org.lcsim.conditions.ConditionsManager.ConditionsNotFoundException;
import org.lcsim.event.EventHeader;
import org.lcsim.hps.monitoring.HPSCalibrationListener;
import org.lcsim.job.JobControlManager;
@@ -138,6 +140,12 @@
jobManager.setup(steeringStream);
jobManager.configure();
+ try { //TODO: figure out whether this is the right way to do this
+ ConditionsManager.defaultInstance().setDetector(detectorName, 0);
+ } catch (ConditionsNotFoundException e) {
+ throw new RuntimeException(e);
+ }
+
// LCSim event builder.
LCSimEventBuilder eventBuilder = new LCSimTestRunEventBuilder();
eventBuilder.setDetectorName(detectorName);
@@ -161,6 +169,13 @@
// write events to disk.
fileLoop:
while (maxEvents == 0 || nEvents < maxEvents) {
+ if (sleepTime > 0) {
+ try {
+ Thread.sleep(sleepTime);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ }
EvioEvent evioEvent = null;
try {
eventLoop:
@@ -187,8 +202,7 @@
int seconds = data[0];
int nevents = data[2];
calibListener.endRun(seconds, nevents);
- } else
- if (eventBuilder.isPhysicsEvent(evioEvent)) {
+ } else if (eventBuilder.isPhysicsEvent(evioEvent)) {
EventHeader lcioEvent = eventBuilder.makeLCSimEvent(evioEvent);
jobManager.processEvent(lcioEvent);
if (writer != null) {
@@ -202,18 +216,17 @@
e.printStackTrace();
continue;
}
- if (sleepTime > 0) {
- try {
- Thread.sleep(sleepTime);
- } catch (InterruptedException e) {
- throw new RuntimeException(e);
- }
- }
nEvents++;
}
reader.close();
}
- System.out.println("Exiting");
+ System.out.println("No more data");
+
+ try { //TODO: this is kind of dumb
+ Thread.sleep(1000000000);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
jobManager.finish();
if (writer != null) {
CVSspam 0.2.12