Commit in hps-java on MAIN | |||
scripts/make_ecal.sh | +2 | -2 | 1.2 -> 1.3 |
src/main/java/org/lcsim/hps/monitoring/svt/SVTMonitoringPlots.java | +175 | added 1.1 | |
/SVTHitReconstructionPlots.java | +1 | -9 | 1.11 -> 1.12 |
/SVTSimpleEventDisplay.java | +97 | -66 | 1.2 -> 1.3 |
/SVTEventDisplay.java | +5 | 1.5 -> 1.6 | |
src/main/java/org/lcsim/hps/recon/tracking/HPSShaperAnalyticFitAlgorithm.java | +2 | 1.7 -> 1.8 | |
/HPSSVTDAQMaps.java | +121 | -79 | 1.8 -> 1.9 |
/HPSRawTrackerHitFitterDriver.java | -3 | 1.11 -> 1.12 | |
/HPSNearestNeighborRMS.java | +8 | -3 | 1.5 -> 1.6 |
/HPSSVTCalibrationConstants.java | +1 | -1 | 1.9 -> 1.10 |
src/main/java/org/lcsim/hps/monitoring/ecal/EcalPedestalPlots.java | +1 | -3 | 1.8 -> 1.9 |
/EcalMonitoringPlots.java | +11 | -6 | 1.7 -> 1.8 |
src/main/java/org/lcsim/hps/evio/TestRunEvioToLcio.java | +23 | -10 | 1.10 -> 1.11 |
+447 | -182 |
new SVT monitoring plots, better T0-related cuts in NearestNeighborRMS
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
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
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);
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
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();
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; }
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); }
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);
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;
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;
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++) {
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
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) {
Use REPLY-ALL to reply to list
To unsubscribe from the LCD-CVS list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCD-CVS&A=1