Commit in hps-java/src/main on MAIN | |||
java/org/lcsim/hps/monitoring/ecal/EcalClusterPlots.java | +110 | added 1.1 | |
/EcalWindowEventPlots.java | +183 | added 1.1 | |
/EcalPedestalPlots.java | +77 | -19 | 1.5 -> 1.6 |
/EcalWindowPlots.java | +1 | -1 | 1.3 -> 1.4 |
/EcalEventMonitor.java | +5 | -8 | 1.8 -> 1.9 |
/EcalEvsX.java | +3 | -3 | 1.2 -> 1.3 |
/EcalWindowPlotsXY.java | +1 | -1 | 1.3 -> 1.4 |
/EcalMonitoringPlots.java | +8 | -1 | 1.3 -> 1.4 |
resources/org/lcsim/hps/steering/ECalTriggerWindowMonitoring.lcsim | +76 | added 1.1 | |
/ECalCalibration.lcsim | +54 | added 1.1 | |
/ECalMonitoringToFile.lcsim | +60 | added 1.1 | |
/ECalTriggerMonitoring.lcsim | +59 | added 1.1 | |
/ECalMonitoring.lcsim | +11 | -5 | 1.4 -> 1.5 |
java/org/lcsim/hps/recon/ecal/FADCConverterDriver.java | +101 | added 1.1 | |
/HPSEcalConditions.java | +25 | -5 | 1.4 -> 1.5 |
/HPSEcalCluster.java | +2 | -1 | 1.4 -> 1.5 |
/HPSEcalCTPClusterer.java | +4 | -4 | 1.2 -> 1.3 |
/HPSEcalRawConverterDriver.java | +4 | 1.6 -> 1.7 | |
java/org/lcsim/hps/evio/ECalEvioReader.java | +14 | -5 | 1.14 -> 1.15 |
+798 | -53 |
stuff? mostly ECal?
diff -N EcalClusterPlots.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ EcalClusterPlots.java 8 May 2012 15:49:31 -0000 1.1 @@ -0,0 +1,110 @@
+package org.lcsim.hps.monitoring.ecal; + +import hep.aida.IHistogram1D; +import hep.aida.IPlotter; + +import java.util.List; +import org.lcsim.event.CalorimeterHit; +import org.lcsim.event.Cluster; + +import org.lcsim.event.EventHeader; +import org.lcsim.geometry.Detector; +import org.lcsim.hps.monitoring.AIDAFrame; +import org.lcsim.hps.monitoring.Resettable; +import org.lcsim.util.Driver; +import org.lcsim.util.aida.AIDA; + +public class EcalClusterPlots extends Driver implements Resettable { + + AIDAFrame plotterFrame; + String inputCollection = "EcalClusters"; + AIDA aida = AIDA.defaultInstance(); + IPlotter plotter; + IPlotter plotter2; + IHistogram1D clusterCountPlot; + IHistogram1D clusterSizePlot; + IHistogram1D clusterEnergyPlot; + IHistogram1D clusterMaxEnergyPlot; + int eventn = 0; + + public void setInputCollection(String inputCollection) { + this.inputCollection = inputCollection; + } + + protected void detectorChanged(Detector detector) { + + plotterFrame = new AIDAFrame(); + plotterFrame.setTitle("HPS ECal Cluster Plots"); + + // Setup the plotter. + plotter = aida.analysisFactory().createPlotterFactory().create("Cluster Counts"); + plotter.setTitle("Cluster Counts"); + plotterFrame.addPlotter(plotter); + + // Setup plots. + aida.tree().cd("/"); + clusterCountPlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Cluster Count", 10, -0.5, 9.5); + clusterSizePlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Cluster Size", 10, -0.5, 9.5); + + // Create the plotter regions. + plotter.createRegions(1, 2); + plotter.region(0).plot(clusterCountPlot); + plotter.region(1).plot(clusterSizePlot); + + + // Setup the plotter. + plotter2 = aida.analysisFactory().createPlotterFactory().create("Cluster Energies"); + plotter2.setTitle("Cluster Energies"); + plotterFrame.addPlotter(plotter2); + + clusterEnergyPlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Cluster Energy", 1000, -1000, 10000); + clusterMaxEnergyPlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Maximum Cluster Energy In Event", 1000, -1000, 10000); + + // Create the plotter regions. + plotter2.createRegions(1, 2); + plotter2.region(0).plot(clusterEnergyPlot); + plotter2.region(1).plot(clusterMaxEnergyPlot); + + plotterFrame.setVisible(true); + plotterFrame.pack(); + } + + public void process(EventHeader event) { + if (event.hasCollection(Cluster.class, inputCollection)) { + List<Cluster> clusters = event.get(Cluster.class, inputCollection); + clusterCountPlot.fill(clusters.size()); + double maxEnergy = 0; + for (Cluster cluster : clusters) { + clusterEnergyPlot.fill(cluster.getEnergy()); + if (cluster.getEnergy() > maxEnergy) { + maxEnergy = cluster.getEnergy(); + } + int size = 0; + for (CalorimeterHit hit : cluster.getCalorimeterHits()) { + if (hit.getRawEnergy() != 0) { + size++; + } + } + clusterSizePlot.fill(size); + } + clusterMaxEnergyPlot.fill(maxEnergy); + } else { + clusterCountPlot.fill(0); + } + } + + public void endOfData() { + if (plotter != null) { + plotter.hide(); + plotter.destroyRegions(); + } + if (clusterCountPlot != null) { + clusterCountPlot.reset(); + } + } + + public void reset() { + plotter.hide(); + clusterCountPlot.reset(); + } +}
\ No newline at end of file
diff -N EcalWindowEventPlots.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ EcalWindowEventPlots.java 8 May 2012 15:49:31 -0000 1.1 @@ -0,0 +1,183 @@
+package org.lcsim.hps.monitoring.ecal; + +import hep.aida.*; +import hep.aida.ref.plotter.PlotterRegion; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import java.util.List; +import javax.swing.*; +import org.lcsim.detector.identifier.IIdentifier; +import org.lcsim.detector.identifier.IIdentifierHelper; +import org.lcsim.detector.identifier.Identifier; +import org.lcsim.event.CalorimeterHit; + +import org.lcsim.event.EventHeader; +import org.lcsim.event.RawTrackerHit; +import org.lcsim.event.base.BaseRawCalorimeterHit; +import org.lcsim.geometry.Detector; +import org.lcsim.hps.monitoring.AIDAFrame; +import org.lcsim.hps.monitoring.Redrawable; +import org.lcsim.hps.monitoring.Resettable; +import org.lcsim.hps.recon.ecal.HPSEcalConditions; +import org.lcsim.util.Driver; +import org.lcsim.util.aida.AIDA; + +public class EcalWindowEventPlots extends Driver implements Resettable, ActionListener { + + private String inputCollection; + private IPlotter plotter; + private AIDA aida = AIDA.defaultInstance(); + private AIDAFrame plotterFrame; +// private ICloud1D[][] plots = new ICloud1D[47][11]; + private IHistogram1D[][] plots = new IHistogram1D[47][11]; + private JLabel xLabel, yLabel; + private JComboBox xCombo; + private JComboBox yCombo; + private JButton blankButton; + private static final Integer[] xList = new Integer[46]; + private static final Integer[] yList = new Integer[10]; + int eventRefreshRate = 1; + int eventn = 0; + boolean hide = false; + int window = 100; + + public void setWindow(int window) { + this.window = window; + } + + public EcalWindowEventPlots() { + int count = 0; + for (int i = -23; i <= 23; i++) { + if (i != 0) { + xList[count] = i; + count++; + } + } + count = 0; + for (int i = -5; i <= 5; i++) { + if (i != 0) { + yList[count] = i; + count++; + } + } + } + + public void setHide(boolean hide) { + this.hide = hide; + } + + public void setInputCollection(String inputCollection) { + this.inputCollection = inputCollection; + } + + public void detectorChanged(Detector detector) { + if (inputCollection == null) { + throw new RuntimeException("The inputCollection parameter was not set."); + } + + // Setup the plotter. + plotter = aida.analysisFactory().createPlotterFactory().create(); + plotter.setTitle("HPS ECal Window Event Plots"); + plotterFrame = new AIDAFrame(); + plotterFrame.addPlotter(plotter); + + aida = AIDA.defaultInstance(); + aida.tree().cd("/"); + + for (int x = -23; x <= 23; x++) { // slot + for (int y = -5; y <= 5; y++) { // crate + //System.out.println("creating plot: " + "ECAL: Crate " + j + "; Slot " + i + " in region " + region); +// IHistogram1D hist = aida.histogram1D("ECAL: x=" + i + "; y=" + j, 1000, 0, 16); +// plots[x + 23][y + 5] = aida.cloud1D("ECAL: x=" + x + "; y=" + y); + plots[x + 23][y + 5] = aida.histogram1D("ECAL window: x=" + x + "; y=" + y, window, -0.5, window - 0.5); + + } + } + + // Create the plotter regions. + plotter.createRegion(); + + xCombo = new JComboBox(xList); + xCombo.addActionListener(this); + xLabel = new JLabel("x"); + xLabel.setLabelFor(xCombo); + plotterFrame.getControlsPanel().add(xLabel); + plotterFrame.getControlsPanel().add(xCombo); + yCombo = new JComboBox(yList); + yCombo.addActionListener(this); + yLabel = new JLabel("y"); + yLabel.setLabelFor(yCombo); + plotterFrame.getControlsPanel().add(yLabel); + plotterFrame.getControlsPanel().add(yCombo); + blankButton = new JButton("Hide histogram"); + plotterFrame.getControlsPanel().add(blankButton); + blankButton.addActionListener(this); + + plotterFrame.pack(); + +// plotter.style().statisticsBoxStyle().setVisible(false); + plotter.style().zAxisStyle().setParameter("allowZeroSuppression", "true"); + plotter.style().dataStyle().errorBarStyle().setVisible(false); + + IPlotterStyle style = plotter.region(0).style(); + plotter.region(0).plot(plots[-5 + 23][2 + 5]); + xCombo.setSelectedIndex((-5 + 23)); + yCombo.setSelectedIndex((2 + 5 - 1)); +// ((PlotterRegion) plotter.region(0)).getPlot().setAllowUserInteraction(false); +// ((PlotterRegion) plotter.region(0)).getPlot().setAllowPopupMenus(false); +// +// ((PlotterRegion) plotter.region(1)).getPlot().setAllowUserInteraction(false); +// ((PlotterRegion) plotter.region(1)).getPlot().setAllowPopupMenus(false); + + if (!hide) { + plotterFrame.setVisible(true); + } + } + + public void endOfData() { + if (plotter != null) { + plotter.hide(); + } + } + + public void reset() { + if (plotter != null) { + plotter.hide(); + plotter.destroyRegions(); + for (int x = -23; x <= 23; x++) { // slot + for (int y = -5; y <= 5; y++) { // crate + plots[x + 23][y + 5].reset(); + } + } + } + } + + public void process(EventHeader event) { + for (int x = -23; x <= 23; x++) { // slot + for (int y = -5; y <= 5; y++) { // crate + plots[x + 23][y + 5].reset(); + } + } + + if (event.hasCollection(RawTrackerHit.class, inputCollection)) { + List<RawTrackerHit> hits = event.get(RawTrackerHit.class, inputCollection); + for (RawTrackerHit hit : hits) { + int x = hit.getIdentifierFieldValue("ix"); + int y = hit.getIdentifierFieldValue("iy"); + for (int i = 0; i < window; i++) { + plots[x + 23][y + 5].fill(i, hit.getADCValues()[i]); + } + } + } + } + + @Override + public void actionPerformed(ActionEvent ae) { + Integer x, y; + x = (Integer) xCombo.getSelectedItem(); + y = (Integer) yCombo.getSelectedItem(); + plotter.region(0).clear(); + plotter.region(0).plot(plots[x + 23][y + 5]); + } +}
diff -u -r1.5 -r1.6 --- EcalPedestalPlots.java 6 May 2012 00:01:13 -0000 1.5 +++ EcalPedestalPlots.java 8 May 2012 15:49:31 -0000 1.6 @@ -1,15 +1,16 @@
package org.lcsim.hps.monitoring.ecal;
-import hep.aida.ICloud1D; -import hep.aida.IHistogram2D; -import hep.aida.IPlotter; -import hep.aida.IPlotterStyle;
+import hep.aida.*;
import hep.aida.ref.plotter.PlotterRegion; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.List; import javax.swing.*;
+import org.lcsim.detector.identifier.IIdentifier; +import org.lcsim.detector.identifier.IIdentifierHelper; +import org.lcsim.detector.identifier.Identifier; +import org.lcsim.event.CalorimeterHit;
import org.lcsim.event.EventHeader; import org.lcsim.event.RawTrackerHit;
@@ -18,6 +19,7 @@
import org.lcsim.hps.monitoring.AIDAFrame; import org.lcsim.hps.monitoring.Redrawable; import org.lcsim.hps.monitoring.Resettable;
+import org.lcsim.hps.recon.ecal.HPSEcalConditions;
import org.lcsim.util.Driver; import org.lcsim.util.aida.AIDA;
@@ -29,7 +31,8 @@
private AIDAFrame plotterFrame; private IHistogram2D meanPlot; private IHistogram2D sigmaPlot;
- private ICloud1D[][] plots = new ICloud1D[47][11];
+// private ICloud1D[][] plots = new ICloud1D[47][11];
+ private IHistogram1D[][] plots = new IHistogram1D[47][11];
private JLabel xLabel, yLabel; private JComboBox xCombo; private JComboBox yCombo;
@@ -38,6 +41,8 @@
private static final Integer[] yList = new Integer[10]; int eventRefreshRate = 1; int eventn = 0;
+ boolean hide = false; + int calWindow = 0;
public EcalPedestalPlots() { int count = 0;
@@ -56,6 +61,14 @@
} }
+ public void setCalWindow(int calWindow) { + this.calWindow = calWindow; + } + + public void setHide(boolean hide) { + this.hide = hide; + } +
public void setInputCollection(String inputCollection) { this.inputCollection = inputCollection; }
@@ -70,7 +83,6 @@
plotter.setTitle("HPS ECal Pedestal Plots"); plotterFrame = new AIDAFrame(); plotterFrame.addPlotter(plotter);
- plotterFrame.setVisible(true);
aida = AIDA.defaultInstance(); aida.tree().cd("/");
@@ -81,7 +93,13 @@
for (int y = -5; y <= 5; y++) { // crate //System.out.println("creating plot: " + "ECAL: Crate " + j + "; Slot " + i + " in region " + region); // IHistogram1D hist = aida.histogram1D("ECAL: x=" + i + "; y=" + j, 1000, 0, 16);
- plots[x + 23][y + 5] = aida.cloud1D("ECAL: x=" + x + "; y=" + y);
+// plots[x + 23][y + 5] = aida.cloud1D("ECAL: x=" + x + "; y=" + y);
+ if (calWindow == 0) {
+ plots[x + 23][y + 5] = aida.histogram1D("ECAL: x=" + x + "; y=" + y, 500, -1000, 10000);
+ } else {
+ plots[x + 23][y + 5] = aida.histogram1D("ECAL: x=" + x + "; y=" + y, 1024, -0.5, 1023.5);
+ }
+
} }
@@ -116,18 +134,39 @@
style.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow"); plotter.region(0).plot(sigmaPlot); plotter.region(1).plot(meanPlot);
- plotter.region(2).plot(plots[17][0]); - ((PlotterRegion) plotter.region(0)).getPlot().setAllowUserInteraction(false); - ((PlotterRegion) plotter.region(0)).getPlot().setAllowPopupMenus(false);
+ plotter.region(2).plot(plots[-5 + 23][2 + 5]); +// ((PlotterRegion) plotter.region(0)).getPlot().setAllowUserInteraction(false); +// ((PlotterRegion) plotter.region(0)).getPlot().setAllowPopupMenus(false); +// +// ((PlotterRegion) plotter.region(1)).getPlot().setAllowUserInteraction(false); +// ((PlotterRegion) plotter.region(1)).getPlot().setAllowPopupMenus(false);
- ((PlotterRegion) plotter.region(1)).getPlot().setAllowUserInteraction(false); - ((PlotterRegion) plotter.region(1)).getPlot().setAllowPopupMenus(false);
+ if (!hide) { + plotterFrame.setVisible(true); + }
} public void endOfData() { if (plotter != null) { plotter.hide(); }
+ if (calWindow > 0) { + for (int crate = 1; crate < 3; crate++) { + for (short slot = 0; slot < 20; slot++) { + for (short ch = 0; ch < 16; ch++) { + Long id = HPSEcalConditions.daqToPhysicalID(crate, slot, ch); + IIdentifierHelper helper = HPSEcalConditions.getHelper(); + if (id == null) { + continue; + } + IIdentifier compactId = new Identifier(id); + int x = helper.getValue(compactId, "ix"); + int y = helper.getValue(compactId, "iy"); + System.out.printf("%d\t%d\t%d\t%f\t%f\n", crate, slot, ch, plots[x + 23][y + 5].mean(), plots[x + 23][y + 5].rms()); + } + } + } + }
} public void reset() {
@@ -148,8 +187,14 @@
for (RawTrackerHit hit : hits) { int x = hit.getIdentifierFieldValue("ix"); int y = hit.getIdentifierFieldValue("iy");
- for (int i = 0; i < hit.getADCValues().length; i++) { - plots[x + 23][y + 5].fill(hit.getADCValues()[i]);
+ if (calWindow > 0) { + for (int i = 0; i < calWindow; i++) { + plots[x + 23][y + 5].fill(hit.getADCValues()[i]); + } + } else { + for (int i = 0; i < hit.getADCValues().length; i++) { + plots[x + 23][y + 5].fill(hit.getADCValues()[i]); + }
} } if (eventRefreshRate > 0 && ++eventn % eventRefreshRate == 0) {
@@ -169,6 +214,17 @@
} }
+ if (event.hasCollection(CalorimeterHit.class, inputCollection)) { + List<CalorimeterHit> hits = event.get(CalorimeterHit.class, inputCollection); + for (CalorimeterHit hit : hits) { + int x = hit.getIdentifierFieldValue("ix"); + int y = hit.getIdentifierFieldValue("iy"); + plots[x + 23][y + 5].fill(hit.getRawEnergy()); + } + if (eventRefreshRate > 0 && ++eventn % eventRefreshRate == 0) { + redraw(); + } + }
} @Override
@@ -181,8 +237,8 @@
y = (Integer) yCombo.getSelectedItem(); plotter.region(2).clear(); plotter.region(2).plot(plots[x + 23][y + 5]);
- ((PlotterRegion) plotter.region(2)).getPlot().setAllowUserInteraction(false); - ((PlotterRegion) plotter.region(2)).getPlot().setAllowPopupMenus(false);
+// ((PlotterRegion) plotter.region(2)).getPlot().setAllowUserInteraction(false); +// ((PlotterRegion) plotter.region(2)).getPlot().setAllowPopupMenus(false);
} }
@@ -191,9 +247,11 @@
sigmaPlot.reset(); meanPlot.reset(); for (int x = -23; x <= 23; x++) { // slot
- for (int y = -5; y <= 5; y++) { // crate - sigmaPlot.fill(x, y, plots[x + 23][y + 5].rms()); - meanPlot.fill(x, y, plots[x + 23][y + 5].mean());
+ for (int y = -5; y <= 5; y++) { // crate + if (plots[x + 23][y + 5].entries() > 10) { + sigmaPlot.fill(x, y, plots[x + 23][y + 5].rms()); + meanPlot.fill(x, y, plots[x + 23][y + 5].mean()); + }
} } }
diff -u -r1.3 -r1.4 --- EcalWindowPlots.java 4 May 2012 02:24:43 -0000 1.3 +++ EcalWindowPlots.java 8 May 2012 15:49:31 -0000 1.4 @@ -106,7 +106,7 @@
plotterFrame.setVisible(true); IPlotterStyle pstyle = plotter.style(); pstyle.dataStyle().errorBarStyle().setVisible(false);
- windowPlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Hit Count", window, -0.5, window - 0.5);
+ windowPlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Window Mode Data", window, -0.5, window - 0.5);
plotter.region(0).plot(windowPlot); crateCombo = new JComboBox(crateList);
diff -u -r1.8 -r1.9 --- EcalEventMonitor.java 6 May 2012 00:01:13 -0000 1.8 +++ EcalEventMonitor.java 8 May 2012 15:49:31 -0000 1.9 @@ -85,21 +85,18 @@
} public void process(EventHeader event) {
+ if (++eventn % eventRefreshRate != 0) { + return; + } + hitPlot.reset(); + clusterPlot.reset();
if (event.hasCollection(CalorimeterHit.class, inputCollectionName)) {
- if (++eventn % eventRefreshRate != 0) { - return; - } - hitPlot.reset();
List<CalorimeterHit> hits = event.get(CalorimeterHit.class, inputCollectionName); for (CalorimeterHit hit : hits) { hitPlot.fill(hit.getIdentifierFieldValue("ix"), hit.getIdentifierFieldValue("iy"), hit.getRawEnergy()); } } if (event.hasCollection(HPSEcalCluster.class, clusterCollectionName)) {
- if (++eventn % eventRefreshRate != 0) { - return; - } - clusterPlot.reset();
List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, clusterCollectionName); for (HPSEcalCluster cluster : clusters) { CalorimeterHit seedHit = cluster.getSeedHit();
diff -u -r1.2 -r1.3 --- EcalEvsX.java 6 May 2012 00:01:13 -0000 1.2 +++ EcalEvsX.java 8 May 2012 15:49:31 -0000 1.3 @@ -1,6 +1,6 @@
package org.lcsim.hps.monitoring.ecal;
-import hep.aida.ICloud2D;
+import hep.aida.IHistogram2D;
import hep.aida.IPlotter; import hep.aida.IPlotterStyle; import hep.aida.ref.plotter.PlotterRegion;
@@ -20,7 +20,7 @@
String inputCollection = "EcalClusters"; AIDA aida = AIDA.defaultInstance(); IPlotter plotter;
- ICloud2D EvsXPlot;
+ IHistogram2D EvsXPlot;
Detector detector; int eventn = 0;
@@ -45,7 +45,7 @@
// Setup plots. aida.tree().cd("/");
- EvsXPlot = aida.cloud2D(detector.getDetectorName() + " : " + inputCollection + " : E vs X");
+ EvsXPlot = aida.histogram2D(detector.getDetectorName() + " : " + inputCollection + " : E vs X",50,-400.0,400.0,200,-500,10000);
// Create the plotter regions. plotter.createRegion();
diff -u -r1.3 -r1.4 --- EcalWindowPlotsXY.java 4 May 2012 02:24:43 -0000 1.3 +++ EcalWindowPlotsXY.java 8 May 2012 15:49:31 -0000 1.4 @@ -102,7 +102,7 @@
plotterFrame.setVisible(true); IPlotterStyle pstyle = plotter.style(); pstyle.dataStyle().errorBarStyle().setVisible(false);
- windowPlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Hit Count", window, -0.5, window - 0.5);
+ windowPlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Window Mode Data", window, -0.5, window - 0.5);
plotter.region(0).plot(windowPlot); xCombo = new JComboBox(xList);
diff -u -r1.3 -r1.4 --- EcalMonitoringPlots.java 6 May 2012 00:01:13 -0000 1.3 +++ EcalMonitoringPlots.java 8 May 2012 15:49:31 -0000 1.4 @@ -25,6 +25,7 @@
IHistogram2D hitCountDrawPlot; int eventRefreshRate = 1; int eventn = 0;
+ boolean hide = false;
public EcalMonitoringPlots() { }
@@ -33,6 +34,10 @@
this.inputCollectionName = inputCollectionName; }
+ public void setHide(boolean hide) { + this.hide = hide; + } +
protected void detectorChanged(Detector detector) { // Setup the plotter. plotter = aida.analysisFactory().createPlotterFactory().create("HPS ECal Monitoring Plots");
@@ -50,7 +55,9 @@
plotter.region(0).plot(hitCountDrawPlot); ((PlotterRegion) plotter.region(0)).getPlot().setAllowUserInteraction(false); ((PlotterRegion) plotter.region(0)).getPlot().setAllowPopupMenus(false);
- plotter.show();
+ if (!hide) { + plotter.show(); + }
} public void process(EventHeader event) {
diff -N ECalTriggerWindowMonitoring.lcsim --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ECalTriggerWindowMonitoring.lcsim 8 May 2012 15:49:32 -0000 1.1 @@ -0,0 +1,76 @@
+ +<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" + xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd"> + <control> + <numberOfEvents>-1</numberOfEvents> + <printInputFiles>true</printInputFiles> + <printDriversDetailed>true</printDriversDetailed> + </control> + <execute> + <driver name="EventMarkerDriver"/> + <driver name="HPSEcalConditions"/> + <driver name="FADCConverter"/> + <driver name="EcalRawConverter"/> + <driver name="EcalClusterer"/> + <driver name="EcalIntegralPedestalPlots"/> + <driver name="EcalMonitoringPlots"/> + <driver name="EcalClusterPlots"/> + <driver name="EcalEventMonitor"/> + <driver name="EcalWindowEventPlots"/> +<!-- + <driver name="EcalPedestalPlots"/> + <driver name="EcalEvsX"/> + <driver name="EcalWindowPlots"/> + <driver name="EcalDaqPlots"/> +--> + </execute> + <drivers> + <driver name="HPSEcalConditions" type="org.lcsim.hps.recon.ecal.HPSEcalConditions"/> + <driver name="FADCConverter" type="org.lcsim.hps.recon.ecal.FADCConverterDriver"> + <threshold>80</threshold> + </driver> + <driver name="EcalRawConverter" type="org.lcsim.hps.recon.ecal.HPSEcalRawConverterDriver"> + <rawCollectionName>EcalIntegralHits</rawCollectionName> + <integralWindow>35</integralWindow> + </driver> + <driver name="EcalDaqPlots" type="org.lcsim.hps.monitoring.ecal.EcalDaqPlots"> + </driver> + <driver name="EcalMonitoringPlots" type="org.lcsim.hps.monitoring.ecal.EcalMonitoringPlots"> + <eventRefreshRate>100</eventRefreshRate> + </driver> + <driver name="EcalEventMonitor" type="org.lcsim.hps.monitoring.ecal.EcalEventMonitor"> + <eventRefreshRate>1</eventRefreshRate> + </driver> + <driver name="EcalWindowPlots" type="org.lcsim.hps.monitoring.ecal.EcalWindowPlotsXY"> + <subdetectorName>Ecal</subdetectorName> + <inputCollection>EcalReadoutHits</inputCollection> + <window>100</window> + </driver> + <driver name="EcalWindowEventPlots" type="org.lcsim.hps.monitoring.ecal.EcalWindowEventPlots"> + <inputCollection>EcalReadoutHits</inputCollection> + <window>100</window> + </driver> +<!-- <driver name="EcalPedestalPlots" type="org.lcsim.hps.monitoring.ecal.EcalPedestalPlots"> + <inputCollection>EcalCalHits</inputCollection> + <eventRefreshRate>100</eventRefreshRate> + </driver>--> + <driver name="EcalIntegralPedestalPlots" type="org.lcsim.hps.monitoring.ecal.EcalPedestalPlots"> + <inputCollection>EcalCalHits</inputCollection> + <eventRefreshRate>100</eventRefreshRate> + </driver> + <driver name="EventMarkerDriver" + type="org.lcsim.job.EventMarkerDriver"> + <eventInterval>1</eventInterval> + </driver> + <driver name="EcalClusterer" + type="org.lcsim.hps.recon.ecal.HPSEcalCTPClusterer"> + <ecalName>Ecal</ecalName> + <ecalCollectionName>EcalCalHits</ecalCollectionName> + </driver> + <driver name="EcalClusterPlots" type="org.lcsim.hps.monitoring.ecal.EcalClusterPlots"> + </driver> + <driver name="EcalEvsX" type="org.lcsim.hps.monitoring.ecal.EcalEvsX"> + <inputCollection>EcalClusters</inputCollection> + </driver> + </drivers> +</lcsim>
diff -N ECalCalibration.lcsim --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ECalCalibration.lcsim 8 May 2012 15:49:32 -0000 1.1 @@ -0,0 +1,54 @@
+ +<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" + xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd"> + <control> + <numberOfEvents>-1</numberOfEvents> + <printInputFiles>true</printInputFiles> + <printDriversDetailed>true</printDriversDetailed> + </control> + <execute> + <driver name="EventMarkerDriver"/> + <driver name="HPSEcalConditions"/> + <driver name="EcalPedestalPlots"/> + <driver name="EcalRawConverter"/> +<!-- + <driver name="EcalClusterer"/> + <driver name="EcalMonitoringPlots"/> + <driver name="EcalEventMonitor"/> + <driver name="EcalEvsX"/> + <driver name="EcalWindowPlots"/> + <driver name="EcalDaqPlots"/> +--> + </execute> + <drivers> + <driver name="HPSEcalConditions" type="org.lcsim.hps.recon.ecal.HPSEcalConditions"/> + <driver name="EcalRawConverter" type="org.lcsim.hps.recon.ecal.HPSEcalRawConverterDriver"> + <integralWindow>30</integralWindow> + </driver> + <driver name="EcalMonitoringPlots" type="org.lcsim.hps.monitoring.ecal.EcalMonitoringPlots"> + <eventRefreshRate>100</eventRefreshRate> + </driver> + <driver name="EcalEventMonitor" type="org.lcsim.hps.monitoring.ecal.EcalEventMonitor"> + <eventRefreshRate>1</eventRefreshRate> + </driver> + <driver name="EcalWindowPlots" type="org.lcsim.hps.monitoring.ecal.EcalWindowPlotsXY"> + <subdetectorName>Ecal</subdetectorName> + <inputCollection>EcalReadoutHits</inputCollection> + <window>100</window> + </driver> + <driver name="EcalPedestalPlots" type="org.lcsim.hps.monitoring.ecal.EcalPedestalPlots"> + <inputCollection>EcalReadoutHits</inputCollection> + <eventRefreshRate>100</eventRefreshRate> + <calWindow>5</calWindow> + </driver> + <driver name="EventMarkerDriver" + type="org.lcsim.job.EventMarkerDriver"> + <eventInterval>1</eventInterval> + </driver> + <driver name="EcalClusterer" + type="org.lcsim.hps.recon.ecal.HPSEcalClusterer"> + <ecalName>Ecal</ecalName> + <ecalCollectionName>EcalCalHits</ecalCollectionName> + </driver> + </drivers> +</lcsim>
diff -N ECalMonitoringToFile.lcsim --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ECalMonitoringToFile.lcsim 8 May 2012 15:49:32 -0000 1.1 @@ -0,0 +1,60 @@
+ +<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" + xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd"> + <control> + <numberOfEvents>-1</numberOfEvents> + <printInputFiles>true</printInputFiles> + <printDriversDetailed>true</printDriversDetailed> + </control> + <execute> + <driver name="EventMarkerDriver"/> + <driver name="EcalRawConverter"/> + <driver name="EcalClusterer"/> + <driver name="EcalPedestalPlots"/> + <driver name="EcalMonitoringPlots"/> +<!-- + <driver name="EcalEventMonitor"/> + <driver name="EcalDaqPlots"/ + <driver name="EcalWindowPlots"/> + <driver name="EcalEvsX"/> +--> + <driver name="AidaSaveDriver"/> + </execute> + <drivers> + <driver name="EcalRawConverter" type="org.lcsim.hps.recon.ecal.HPSEcalRawConverterDriver"> + </driver> + <driver name="EcalDaqPlots" type="org.lcsim.hps.monitoring.ecal.EcalDaqPlots"> + </driver> + <driver name="EcalMonitoringPlots" type="org.lcsim.hps.monitoring.ecal.EcalMonitoringPlots"> + <hide>true</hide> + </driver> + <driver name="EcalEventMonitor" type="org.lcsim.hps.monitoring.ecal.EcalEventMonitor"> + <eventRefreshRate>1</eventRefreshRate> + </driver> + <driver name="EcalWindowPlots" type="org.lcsim.hps.monitoring.ecal.EcalWindowPlotsXY"> + <subdetectorName>Ecal</subdetectorName> + <inputCollection>EcalReadoutHits</inputCollection> + <window>100</window> + </driver> + <driver name="EcalPedestalPlots" type="org.lcsim.hps.monitoring.ecal.EcalPedestalPlots"> + <inputCollection>EcalCalHits</inputCollection> + <hide>true</hide> + </driver> + <driver name="EventMarkerDriver" + type="org.lcsim.job.EventMarkerDriver"> + <eventInterval>1000</eventInterval> + </driver> + <driver name="EcalClusterer" + type="org.lcsim.hps.recon.ecal.HPSEcalClusterer"> + <ecalName>Ecal</ecalName> + <ecalCollectionName>EcalCalHits</ecalCollectionName> + </driver> + <driver name="EcalEvsX" type="org.lcsim.hps.monitoring.ecal.EcalEvsX"> + <inputCollection>EcalClusters</inputCollection> + </driver> + <driver name="AidaSaveDriver" + type="org.lcsim.job.AidaSaveDriver"> + <outputFileName>ecalPlots</outputFileName> + </driver> + </drivers> +</lcsim>
diff -N ECalTriggerMonitoring.lcsim --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ECalTriggerMonitoring.lcsim 8 May 2012 15:49:32 -0000 1.1 @@ -0,0 +1,59 @@
+ +<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" + xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd"> + <control> + <numberOfEvents>-1</numberOfEvents> + <printInputFiles>true</printInputFiles> + <printDriversDetailed>true</printDriversDetailed> + </control> + <execute> + <driver name="EventMarkerDriver"/> + <driver name="HPSEcalConditions"/> + <driver name="EcalRawConverter"/> + <driver name="EcalClusterer"/> + <driver name="EcalPedestalPlots"/> + <driver name="EcalMonitoringPlots"/> + <driver name="EcalClusterPlots"/> + <driver name="EcalEventMonitor"/> +<!-- + <driver name="EcalPedestalPlots"/> + <driver name="EcalEvsX"/> + <driver name="EcalWindowPlots"/> + <driver name="EcalDaqPlots"/> +--> + </execute> + <drivers> + <driver name="HPSEcalConditions" type="org.lcsim.hps.recon.ecal.HPSEcalConditions"/> + <driver name="EcalRawConverter" type="org.lcsim.hps.recon.ecal.HPSEcalRawConverterDriver"> + <rawCollectionName>EcalReadoutHits</rawCollectionName> + <integralWindow>35</integralWindow> + </driver> + <driver name="EcalDaqPlots" type="org.lcsim.hps.monitoring.ecal.EcalDaqPlots"> + </driver> + <driver name="EcalMonitoringPlots" type="org.lcsim.hps.monitoring.ecal.EcalMonitoringPlots"> + <eventRefreshRate>100</eventRefreshRate> + </driver> + <driver name="EcalEventMonitor" type="org.lcsim.hps.monitoring.ecal.EcalEventMonitor"> + <eventRefreshRate>1</eventRefreshRate> + </driver> +<!-- <driver name="EcalPedestalPlots" type="org.lcsim.hps.monitoring.ecal.EcalPedestalPlots"> + <inputCollection>EcalCalHits</inputCollection> + <eventRefreshRate>100</eventRefreshRate> + </driver>--> + <driver name="EcalPedestalPlots" type="org.lcsim.hps.monitoring.ecal.EcalPedestalPlots"> + <inputCollection>EcalCalHits</inputCollection> + <eventRefreshRate>100</eventRefreshRate> + </driver> + <driver name="EventMarkerDriver" + type="org.lcsim.job.EventMarkerDriver"> + <eventInterval>1</eventInterval> + </driver> + <driver name="EcalClusterer" + type="org.lcsim.hps.recon.ecal.HPSEcalCTPClusterer"> + <ecalName>Ecal</ecalName> + <ecalCollectionName>EcalCalHits</ecalCollectionName> + </driver> + <driver name="EcalClusterPlots" type="org.lcsim.hps.monitoring.ecal.EcalClusterPlots"> + </driver> + </drivers> +</lcsim>
diff -u -r1.4 -r1.5 --- ECalMonitoring.lcsim 6 May 2012 00:01:13 -0000 1.4 +++ ECalMonitoring.lcsim 8 May 2012 15:49:32 -0000 1.5 @@ -8,23 +8,28 @@
</control> <execute> <driver name="EventMarkerDriver"/>
+ <driver name="HPSEcalConditions"/>
<driver name="EcalRawConverter"/> <driver name="EcalClusterer"/> <driver name="EcalPedestalPlots"/> <driver name="EcalMonitoringPlots"/>
- <driver name="EcalEventMonitor"/>
<!--
- <driver name="EcalDaqPlots"/> - <driver name="EcalWindowPlots"/>
+ <driver name="EcalEventMonitor"/>
<driver name="EcalEvsX"/>
+ <driver name="EcalWindowPlots"/> + <driver name="EcalDaqPlots"/>
--> </execute> <drivers>
+ <driver name="HPSEcalConditions" type="org.lcsim.hps.recon.ecal.HPSEcalConditions"/>
<driver name="EcalRawConverter" type="org.lcsim.hps.recon.ecal.HPSEcalRawConverterDriver">
+ <integralWindow>35</integralWindow>
</driver> <driver name="EcalDaqPlots" type="org.lcsim.hps.monitoring.ecal.EcalDaqPlots"> </driver>
- <driver name="EcalMonitoringPlots" type="org.lcsim.hps.monitoring.ecal.EcalMonitoringPlots"/>
+ <driver name="EcalMonitoringPlots" type="org.lcsim.hps.monitoring.ecal.EcalMonitoringPlots"> + <eventRefreshRate>100</eventRefreshRate> + </driver>
<driver name="EcalEventMonitor" type="org.lcsim.hps.monitoring.ecal.EcalEventMonitor"> <eventRefreshRate>1</eventRefreshRate> </driver>
@@ -34,7 +39,8 @@
<window>100</window> </driver> <driver name="EcalPedestalPlots" type="org.lcsim.hps.monitoring.ecal.EcalPedestalPlots">
- <inputCollection>EcalReadoutHits</inputCollection>
+ <inputCollection>EcalCalHits</inputCollection>
+ <eventRefreshRate>100</eventRefreshRate>
</driver> <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver">
diff -N FADCConverterDriver.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ FADCConverterDriver.java 8 May 2012 15:49:32 -0000 1.1 @@ -0,0 +1,101 @@
+package org.lcsim.hps.recon.ecal; + +import java.util.ArrayList; +import java.util.List; +import org.lcsim.event.EventHeader; +import org.lcsim.event.RawTrackerHit; +import org.lcsim.event.base.BaseRawCalorimeterHit; +import org.lcsim.geometry.Detector; +import org.lcsim.util.Driver; + +/** + * + * @version $Id: FADCConverterDriver.java,v 1.1 2012/05/08 15:49:32 meeg Exp $ + */ +public class FADCConverterDriver extends Driver { + + String rawCollectionName = "EcalReadoutHits"; + String ecalReadoutName = "EcalHits"; + String ecalCollectionName = "EcalIntegralHits"; + boolean debug = false; + int numSamplesBefore = 5; + int numSamplesAfter = 30; + int threshold = 50; + + public FADCConverterDriver() { + } + + public void setThreshold(int threshold) { + this.threshold = threshold; + } + + public void setEcalReadoutName(String ecalReadoutName) { + this.ecalReadoutName = ecalReadoutName; + } + + public void setNumSamplesAfter(int numSamplesAfter) { + this.numSamplesAfter = numSamplesAfter; + } + + public void setNumSamplesBefore(int numSamplesBefore) { + this.numSamplesBefore = numSamplesBefore; + } + + public void setEcalCollectionName(String ecalCollectionName) { + this.ecalCollectionName = ecalCollectionName; + } + + public void setRawCollectionName(String rawCollectionName) { + this.rawCollectionName = rawCollectionName; + } + + @Override + public void startOfData() { + if (ecalCollectionName == null) { + throw new RuntimeException("The parameter ecalCollectionName was not set!"); + } + } + + @Override + public void detectorChanged(Detector detector) { + } + + @Override + public void process(EventHeader event) { + if (!HPSEcalConditions.pedestalsLoaded()) { + HPSEcalConditions.loadPedestals(); + } + ArrayList<BaseRawCalorimeterHit> newHits = new ArrayList<BaseRawCalorimeterHit>(); + + // Get the list of ECal hits. + if (event.hasCollection(RawTrackerHit.class, rawCollectionName)) { + List<RawTrackerHit> hits = event.get(RawTrackerHit.class, rawCollectionName); + + for (RawTrackerHit hit : hits) { + short[] window = hit.getADCValues(); + long id = hit.getCellID(); + int crystalThreshold = HPSEcalConditions.physicalToPedestal(id) + threshold; + int adcSum = 0; + int pointerOffset = 0; + int numSamplesToRead = 0; + int thresholdCrossing = 0; + for (int i = 0; i < window.length; i++) { + if (numSamplesToRead != 0) { + adcSum += window[i - pointerOffset]; + numSamplesToRead--; + if (numSamplesToRead == 0) { + newHits.add(new BaseRawCalorimeterHit(id, adcSum, thresholdCrossing)); + } + } else if ((i == 0 || window[i - 1] <= crystalThreshold) && window[i] > crystalThreshold) { + thresholdCrossing = i; + pointerOffset = Math.min(numSamplesBefore, i); + numSamplesToRead = pointerOffset + Math.min(numSamplesAfter, window.length - i - pointerOffset - 1); + adcSum = 0; + } + } + } + } + int flags = 0; + event.put(ecalCollectionName, newHits, BaseRawCalorimeterHit.class, flags, ecalReadoutName); + } +}
diff -u -r1.4 -r1.5 --- HPSEcalConditions.java 2 May 2012 20:31:38 -0000 1.4 +++ HPSEcalConditions.java 8 May 2012 15:49:32 -0000 1.5 @@ -11,13 +11,15 @@
import org.lcsim.detector.identifier.ExpandedIdentifier; import org.lcsim.detector.identifier.IExpandedIdentifier; import org.lcsim.detector.identifier.IIdentifierHelper;
+import org.lcsim.geometry.Detector; +import org.lcsim.util.Driver;
/** * * @author meeg
- * @version $Id: HPSEcalConditions.java,v 1.4 2012/05/02 20:31:38 meeg Exp $
+ * @version $Id: HPSEcalConditions.java,v 1.5 2012/05/08 15:49:32 meeg Exp $
*/
-public class HPSEcalConditions {
+public class HPSEcalConditions extends Driver {
//DAQ channel map private static HashMap<Long, Long> daqToPhysicalMap = new HashMap<Long, Long>();
@@ -30,8 +32,26 @@
//set of bad channels to ignore private static HashSet<Long> badChannelsSet = new HashSet<Long>(); private static boolean badChannelsLoaded = false;
+ private String subdetectorName = "Ecal"; + private static IIdentifierHelper helper = null;
- private HPSEcalConditions() {
+ public HPSEcalConditions() {
+ }
+
+ @Override
+ public void detectorChanged(Detector detector) {
+ if (detector.getSubdetector(subdetectorName) == null) {
+ throw new RuntimeException("Subdetector " + subdetectorName + " not found");
+ }
+ helper = detector.getSubdetector(subdetectorName).getDetectorElement().getIdentifierHelper();
+ }
+
+ public void setSubdetectorName(String subdetectorName) {
+ this.subdetectorName = subdetectorName;
+ }
+
+ public static IIdentifierHelper getHelper() {
+ return helper;
} public static boolean mapLoaded() {
@@ -201,11 +221,11 @@
public static long getDaqID(int crate, short slot, short channel) { return (((long) crate) << 32) | ((long) slot << 16) | (long) channel; }
-
+
public static Long daqToPhysicalID(int crate, short slot, short channel) { return daqToPhysicalMap.get(getDaqID(crate, slot, channel)); }
-
+
public static int getCrate(long physicalID) { return (int) (physicalID >>> 32); }
diff -u -r1.4 -r1.5 --- HPSEcalCluster.java 5 May 2012 00:15:12 -0000 1.4 +++ HPSEcalCluster.java 8 May 2012 15:49:32 -0000 1.5 @@ -11,7 +11,7 @@
* Cluster with position defined by seed hit (for 1-bit trigger) * * @author Sho Uemura <[log in to unmask]ord.edu>
- * @version $Id: HPSEcalCluster.java,v 1.4 2012/05/05 00:15:12 meeg Exp $
+ * @version $Id: HPSEcalCluster.java,v 1.5 2012/05/08 15:49:32 meeg Exp $
*/ public class HPSEcalCluster extends BasicCluster {
@@ -35,6 +35,7 @@
throw new RuntimeException("HPSEcalCluster has no hits"); } seedHit = new HPSRawCalorimeterHit(0.0, null, 0.0, cellID, hit.getType());
+ seedHit.setMetaData(hit.getMetaData());
} return seedHit; }
diff -u -r1.2 -r1.3 --- HPSEcalCTPClusterer.java 21 Mar 2012 23:26:48 -0000 1.2 +++ HPSEcalCTPClusterer.java 8 May 2012 15:49:32 -0000 1.3 @@ -25,7 +25,7 @@
* @author Jeremy McCormick <[log in to unmask]> * @author Tim Nelson <[log in to unmask]> * @author Sho Uemura <[log in to unmask]>
- * @version $Id: HPSEcalCTPClusterer.java,v 1.2 2012/03/21 23:26:48 meeg Exp $
+ * @version $Id: HPSEcalCTPClusterer.java,v 1.3 2012/05/08 15:49:32 meeg Exp $
*/ public class HPSEcalCTPClusterer extends Driver {
@@ -119,7 +119,7 @@
// Put Cluster collection into event. int flag = 1 << LCIOConstants.CLBIT_HITS;
- event.put(clusterCollectionName, createClusters(), Cluster.class, flag);
+ event.put(clusterCollectionName, createClusters(), HPSEcalCluster.class, flag);
} public void sumHits(List<CalorimeterHit> hits) {
@@ -165,10 +165,10 @@
} }
- public List<Cluster> createClusters() {
+ public List<HPSEcalCluster> createClusters() {
// boolean printClusters; // New Cluster list to be added to event.
- List<Cluster> clusters = new ArrayList<Cluster>();
+ List<HPSEcalCluster> clusters = new ArrayList<HPSEcalCluster>();
//System.out.println("New event"); //for each crystal with a nonzero hit count, test for cluster for (Long possibleCluster : hitSums.keySet()) {
diff -u -r1.6 -r1.7 --- HPSEcalRawConverterDriver.java 6 May 2012 00:01:13 -0000 1.6 +++ HPSEcalRawConverterDriver.java 8 May 2012 15:49:32 -0000 1.7 @@ -27,6 +27,10 @@
converter = new HPSEcalRawConverter(); }
+ public void setIntegralWindow(int integralWindow) { + this.integralWindow = integralWindow; + } +
public void setEcalCollectionName(String ecalCollectionName) { this.ecalCollectionName = ecalCollectionName; }
diff -u -r1.14 -r1.15 --- ECalEvioReader.java 5 May 2012 00:15:12 -0000 1.14 +++ ECalEvioReader.java 8 May 2012 15:49:32 -0000 1.15 @@ -3,16 +3,20 @@
import java.util.ArrayList; import java.util.List; import org.jlab.coda.jevio.*;
+import org.lcsim.detector.identifier.IIdentifier; +import org.lcsim.detector.identifier.Identifier;
import org.lcsim.event.EventHeader; import org.lcsim.event.RawTrackerHit;
+import org.lcsim.event.SimTrackerHit;
import org.lcsim.event.base.BaseRawCalorimeterHit; import org.lcsim.event.base.BaseRawTrackerHit;
+import org.lcsim.geometry.Detector;
import org.lcsim.hps.recon.ecal.HPSEcalConditions; /** * * @author Sho Uemura <[log in to unmask]>
- * @version $Id: ECalEvioReader.java,v 1.14 2012/05/05 00:15:12 meeg Exp $
+ * @version $Id: ECalEvioReader.java,v 1.15 2012/05/08 15:49:32 meeg Exp $
*/ public class ECalEvioReader extends EvioReader { // Names of subdetectors.
@@ -20,6 +24,7 @@
private String ecalName = "Ecal"; private int bankTag = EventConstants.ECAL_PULSE_INTEGRAL_BANK_TAG; private Class hitClass = BaseRawCalorimeterHit.class;
+ private Detector detector;
public ECalEvioReader() { hitCollectionName = "EcalReadoutHits";
@@ -33,6 +38,7 @@
public boolean makeHits(EvioEvent event, EventHeader lcsimEvent) { boolean foundHits = false; if (!HPSEcalConditions.mapLoaded()) {
+ detector = lcsimEvent.getDetector();
HPSEcalConditions.fillDaqCellMap(lcsimEvent.getDetector().getSubdetector(ecalName)); } List<Object> hits = new ArrayList<Object>();
@@ -69,7 +75,6 @@
break; default: throw new RuntimeException("Unsupported ECal format - bank tag " + slotBank.getHeader().getTag());
-
} // } }
@@ -81,6 +86,10 @@
} String readoutName = lcsimEvent.getDetector().getSubdetector(ecalName).getReadout().getName(); lcsimEvent.put(hitCollectionName, hits, hitClass, 0, readoutName);
+// for (Object hit : hits) { +// System.out.println(((RawTrackerHit) hit).getIDDecoder().getIDDescription().toString()); +// } +
return foundHits; }
@@ -96,7 +105,7 @@
System.out.println("cdata.type[" + i + "]=" + cdata.getTypes().get(i)); } }
- while (cdata.index() < cdata.getItems().size()) {
+ while (cdata.index() + 1 < cdata.getItems().size()) {
short slot = cdata.getByte(); int trigger = cdata.getInt(); long timestamp = cdata.getLong();
@@ -119,7 +128,7 @@
for (int i = 0; i < nSamples; i++) { adcValues[i] = cdata.getShort(); }
- hits.add(new BaseRawTrackerHit(id, 0, adcValues));
+ hits.add(new BaseRawTrackerHit(0, id, adcValues, new ArrayList<SimTrackerHit>(), detector.getSubdetector(ecalName).getDetectorElement().findDetectorElement(new Identifier(id)).get(0)));
} } return hits;
@@ -163,7 +172,7 @@
for (int i = 0; i < sampleCount; i++) { adcValues[i] = cdata.getShort(); }
- hits.add(new BaseRawTrackerHit(id, pulseNum, adcValues));
+ hits.add(new BaseRawTrackerHit(pulseNum, id, adcValues, new ArrayList<SimTrackerHit>(), detector.getSubdetector(ecalName).getDetectorElement().findDetectorElement(new Identifier(id)).get(0)));
} } }
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