4 added + 11 modified, total 15 files
hps-java/src/main/java/org/lcsim/hps/monitoring
diff -N RunControlDriver.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ RunControlDriver.java 10 May 2012 15:55:55 -0000 1.1
@@ -0,0 +1,76 @@
+package org.lcsim.hps.monitoring;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import javax.swing.BoxLayout;
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import org.lcsim.event.EventHeader;
+import org.lcsim.util.Driver;
+
+/**
+ * Lightweight driver for stepping through events in offline analysis, without running the MonitoringApp.
+ * @author Sho Uemura <[log in to unmask]>
+ * @version $Id: RunControlDriver.java,v 1.1 2012/05/10 15:55:55 meeg Exp $
+ */
+public class RunControlDriver extends Driver implements ActionListener {
+
+ final JButton nextButton;
+ JButton runButton;
+ JFrame nextFrame;
+ boolean run = false;
+
+ public RunControlDriver() {
+ nextFrame = new JFrame();
+ nextFrame.setAlwaysOnTop(true);
+ nextFrame.getContentPane().setLayout(new BoxLayout(nextFrame.getContentPane(), BoxLayout.X_AXIS));
+
+ nextButton = new JButton("Next event");
+ nextButton.addActionListener(this);
+ nextFrame.add(nextButton);
+ runButton = new JButton("Run");
+ runButton.addActionListener(this);
+ nextFrame.add(runButton);
+
+ nextFrame.setVisible(true);
+ nextFrame.pack();
+ }
+
+ @Override
+ protected void process(EventHeader event) {
+ if (!run) {
+ synchronized (nextButton) {
+ try {
+ nextButton.wait();
+ } catch (InterruptedException e) {
+ }
+ }
+ }
+ }
+
+ @Override
+ protected void endOfData() {
+ nextFrame.dispose();
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent ae) {
+ if (ae.getSource() == nextButton) {
+ synchronized (nextButton) {
+ nextButton.notify();
+ }
+ }
+ if (ae.getSource() == runButton) {
+ if (!run) {
+ runButton.setText("Pause");
+ run = true;
+ synchronized (nextButton) {
+ nextButton.notify();
+ }
+ } else {
+ run = false;
+ runButton.setText("Run");
+ }
+ }
+ }
+}
hps-java/src/main/java/org/lcsim/hps/monitoring/ecal
diff -N EcalHitPlots.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ EcalHitPlots.java 10 May 2012 15:55:55 -0000 1.1
@@ -0,0 +1,102 @@
+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.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 EcalHitPlots extends Driver implements Resettable {
+
+ AIDAFrame plotterFrame;
+ String inputCollection = "EcalCalHits";
+ AIDA aida = AIDA.defaultInstance();
+ IPlotter plotter;
+ IPlotter plotter2;
+ IHistogram1D hitCountPlot;
+ IHistogram1D clusterSizePlot;
+ IHistogram1D hitEnergyPlot;
+ IHistogram1D hitMaxEnergyPlot;
+ int eventn = 0;
+
+ public void setInputCollection(String inputCollection) {
+ this.inputCollection = inputCollection;
+ }
+
+ protected void detectorChanged(Detector detector) {
+
+ plotterFrame = new AIDAFrame();
+ plotterFrame.setTitle("HPS ECal Hit Plots");
+
+ // Setup the plotter.
+ plotter = aida.analysisFactory().createPlotterFactory().create("Hit Counts");
+ plotter.setTitle("Hit Counts");
+ plotterFrame.addPlotter(plotter);
+
+ // Setup plots.
+ aida.tree().cd("/");
+ hitCountPlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Hit Count", 10, -0.5, 9.5);
+
+ // Create the plotter regions.
+ plotter.createRegion();
+ plotter.region(0).plot(hitCountPlot);
+
+
+ // Setup the plotter.
+ plotter2 = aida.analysisFactory().createPlotterFactory().create("Hit Energies");
+ plotter2.setTitle("Hit Energies");
+ plotterFrame.addPlotter(plotter2);
+
+ hitEnergyPlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Hit Energy", 1000, -100, 5000);
+ hitMaxEnergyPlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Maximum Hit Energy In Event", 1000, -100, 5000);
+
+// plotter2.style().yAxisStyle().setParameter("scale", "log");
+
+ // Create the plotter regions.
+ plotter2.createRegions(1, 2);
+ plotter2.region(0).plot(hitEnergyPlot);
+ plotter2.region(1).plot(hitMaxEnergyPlot);
+
+ plotterFrame.setVisible(true);
+ plotterFrame.pack();
+ }
+
+ public void process(EventHeader event) {
+ if (event.hasCollection(CalorimeterHit.class, inputCollection)) {
+ List<CalorimeterHit> hits = event.get(CalorimeterHit.class, inputCollection);
+ hitCountPlot.fill(hits.size());
+ double maxEnergy = 0;
+ for (CalorimeterHit hit : hits) {
+ hitEnergyPlot.fill(hit.getRawEnergy());
+ if (hit.getRawEnergy() > maxEnergy) {
+ maxEnergy = hit.getRawEnergy();
+ }
+ }
+ hitMaxEnergyPlot.fill(maxEnergy);
+ } else {
+ hitCountPlot.fill(0);
+ }
+ }
+
+ public void endOfData() {
+ if (plotter != null) {
+ plotter.hide();
+ plotter.destroyRegions();
+ }
+ if (hitCountPlot != null) {
+ hitCountPlot.reset();
+ }
+ }
+
+ public void reset() {
+ plotter.hide();
+ hitCountPlot.reset();
+ }
+}
\ No newline at end of file
hps-java/src/main/java/org/lcsim/hps/monitoring/ecal
diff -u -r1.1 -r1.2
--- EcalClusterPlots.java 8 May 2012 15:49:31 -0000 1.1
+++ EcalClusterPlots.java 10 May 2012 15:55:55 -0000 1.2
@@ -57,8 +57,10 @@
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);
+// plotter2.style().yAxisStyle().setParameter("scale", "log");
+
+ clusterEnergyPlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Cluster Energy", 1000, -100, 5000);
+ clusterMaxEnergyPlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Maximum Cluster Energy In Event", 1000, -100, 5000);
// Create the plotter regions.
plotter2.createRegions(1, 2);
hps-java/src/main/java/org/lcsim/hps/monitoring/ecal
diff -u -r1.4 -r1.5
--- EcalMonitoringPlots.java 8 May 2012 15:49:31 -0000 1.4
+++ EcalMonitoringPlots.java 10 May 2012 15:55:55 -0000 1.5
@@ -18,7 +18,7 @@
public class EcalMonitoringPlots extends Driver implements Resettable, Redrawable {
- String inputCollectionName = "EcalReadoutHits";
+ String inputCollection = "EcalReadoutHits";
AIDA aida = AIDA.defaultInstance();
IPlotter plotter;
IHistogram2D hitCountFillPlot;
@@ -30,8 +30,8 @@
public EcalMonitoringPlots() {
}
- public void setInputCollectionName(String inputCollectionName) {
- this.inputCollectionName = inputCollectionName;
+ public void setInputCollection(String inputCollection) {
+ this.inputCollection = inputCollection;
}
public void setHide(boolean hide) {
@@ -43,7 +43,7 @@
plotter = aida.analysisFactory().createPlotterFactory().create("HPS ECal Monitoring Plots");
// Setup plots.
aida.tree().cd("/");
- hitCountDrawPlot = aida.histogram2D(detector.getDetectorName() + " : " + inputCollectionName + " : Hit Count", 47, -23.5, 23.5, 11, -5.5, 5.5);
+ hitCountDrawPlot = aida.histogram2D(detector.getDetectorName() + " : " + inputCollection + " : Hit Count", 47, -23.5, 23.5, 11, -5.5, 5.5);
hitCountFillPlot = makeCopy(hitCountDrawPlot);
// Create the plotter regions.
@@ -61,8 +61,8 @@
}
public void process(EventHeader event) {
- if (event.hasCollection(BaseRawCalorimeterHit.class, inputCollectionName)) {
- List<BaseRawCalorimeterHit> hits = event.get(BaseRawCalorimeterHit.class, inputCollectionName);
+ if (event.hasCollection(BaseRawCalorimeterHit.class, inputCollection)) {
+ List<BaseRawCalorimeterHit> hits = event.get(BaseRawCalorimeterHit.class, inputCollection);
for (BaseRawCalorimeterHit hit : hits) {
hitCountFillPlot.fill(hit.getIdentifierFieldValue("ix"), hit.getIdentifierFieldValue("iy"));
}
@@ -70,8 +70,8 @@
redraw();
}
}
- if (event.hasCollection(RawTrackerHit.class, inputCollectionName)) {
- List<RawTrackerHit> hits = event.get(RawTrackerHit.class, inputCollectionName);
+ if (event.hasCollection(RawTrackerHit.class, inputCollection)) {
+ List<RawTrackerHit> hits = event.get(RawTrackerHit.class, inputCollection);
for (RawTrackerHit hit : hits) {
hitCountFillPlot.fill(hit.getIdentifierFieldValue("ix"), hit.getIdentifierFieldValue("iy"));
}
hps-java/src/main/resources/org/lcsim/hps/steering
diff -N TestRunEventDisplay.lcsim
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ TestRunEventDisplay.lcsim 10 May 2012 15:55:55 -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="RunControlDriver"/>-->
+ <driver name="EventMarkerDriver"/>
+ <driver name="SVTSetupDriver"/>
+ <driver name="EcalRawConverter"/>
+ <driver name="EcalClusterer"/>
+ <driver name="HPSSVTDAQMaps"/>
+ <driver name="RawTrackerHitMaker"/>
+<!-- <driver name="RawTrackerHitFitterDriver"/> -->
+<!-- <driver name="TrackerHitDriver"/>-->
+ <driver name="EcalEventMonitor"/>
+ <driver name="SVTEventDisplay"/>
+ <driver name="CleanupDriver"/>
+
+ </execute>
+ <drivers>
+ <driver name="RunControlDriver" type="org.lcsim.hps.monitoring.RunControlDriver"/>
+ <driver name="SVTEventDisplay" type="org.lcsim.hps.monitoring.svt.SVTSimpleEventDisplay">
+ <inputCollection>SVTRawTrackerHits</inputCollection>
+ </driver>
+ <driver name="EcalRawConverter"
+ type="org.lcsim.hps.recon.ecal.HPSEcalRawConverterDriver">
+ <ecalCollectionName>EcalCalHits</ecalCollectionName>
+ </driver>
+ <driver name="EcalClusterer"
+ type="org.lcsim.hps.recon.ecal.HPSEcalClusterer">
+ <ecalName>Ecal</ecalName>
+ <ecalCollectionName>EcalCalHits</ecalCollectionName>
+ </driver>
+ <driver name="RawTrackerHitFitterDriver"
+ type="org.lcsim.hps.recon.tracking.HPSRawTrackerHitFitterDriver">
+ <fitAlgorithm>Analytic</fitAlgorithm>
+ </driver>
+ <driver name="TrackerHitDriver" type="org.lcsim.hps.users.mgraham.DataTrackerHitDriver"/>
+ <driver name="EcalDaqPlots" type="org.lcsim.hps.monitoring.ecal.EcalDaqPlots">
+ </driver>
+ <driver name="CleanupDriver"
+ type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver">
+ <collectionNames>TrackerHits</collectionNames>
+ </driver>
+ <driver name="EcalEventMonitor" type="org.lcsim.hps.monitoring.ecal.EcalEventMonitor">
+ <eventRefreshRate>1</eventRefreshRate>
+ </driver>
+ <driver name="SVTSetupDriver" type="org.lcsim.hps.recon.tracking.HPSSVTSensorSetup"/>
+ <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver">
+ <eventInterval>1</eventInterval>
+ </driver>
+ <driver name="HPSSVTDAQMaps" type="org.lcsim.hps.recon.tracking.HPSSVTDAQMaps"/>
+ <driver name="RawTrackerHitMaker" type="org.lcsim.hps.recon.tracking.SVTDataToRawTrackerHitDriver"/>
+ </drivers>
+</lcsim>
hps-java/src/main/resources/org/lcsim/hps/steering
diff -u -r1.1 -r1.2
--- ECalTriggerWindowMonitoring.lcsim 8 May 2012 15:49:32 -0000 1.1
+++ ECalTriggerWindowMonitoring.lcsim 10 May 2012 15:55:55 -0000 1.2
@@ -7,6 +7,7 @@
<printDriversDetailed>true</printDriversDetailed>
</control>
<execute>
+ <driver name="RunControlDriver"/>
<driver name="EventMarkerDriver"/>
<driver name="HPSEcalConditions"/>
<driver name="FADCConverter"/>
@@ -14,9 +15,10 @@
<driver name="EcalClusterer"/>
<driver name="EcalIntegralPedestalPlots"/>
<driver name="EcalMonitoringPlots"/>
+ <driver name="EcalHitPlots"/>
<driver name="EcalClusterPlots"/>
- <driver name="EcalEventMonitor"/>
<driver name="EcalWindowEventPlots"/>
+ <driver name="EcalEventMonitor"/>
<!--
<driver name="EcalPedestalPlots"/>
<driver name="EcalEvsX"/>
@@ -25,6 +27,7 @@
-->
</execute>
<drivers>
+ <driver name="RunControlDriver" type="org.lcsim.hps.monitoring.RunControlDriver"/>
<driver name="HPSEcalConditions" type="org.lcsim.hps.recon.ecal.HPSEcalConditions"/>
<driver name="FADCConverter" type="org.lcsim.hps.recon.ecal.FADCConverterDriver">
<threshold>80</threshold>
@@ -32,6 +35,7 @@
<driver name="EcalRawConverter" type="org.lcsim.hps.recon.ecal.HPSEcalRawConverterDriver">
<rawCollectionName>EcalIntegralHits</rawCollectionName>
<integralWindow>35</integralWindow>
+ <gain>1.0</gain>
</driver>
<driver name="EcalDaqPlots" type="org.lcsim.hps.monitoring.ecal.EcalDaqPlots">
</driver>
@@ -69,6 +73,8 @@
</driver>
<driver name="EcalClusterPlots" type="org.lcsim.hps.monitoring.ecal.EcalClusterPlots">
</driver>
+ <driver name="EcalHitPlots" type="org.lcsim.hps.monitoring.ecal.EcalHitPlots">
+ </driver>
<driver name="EcalEvsX" type="org.lcsim.hps.monitoring.ecal.EcalEvsX">
<inputCollection>EcalClusters</inputCollection>
</driver>
hps-java/src/main/resources/org/lcsim/hps/steering
diff -u -r1.1 -r1.2
--- ECalTriggerMonitoring.lcsim 8 May 2012 15:49:32 -0000 1.1
+++ ECalTriggerMonitoring.lcsim 10 May 2012 15:55:55 -0000 1.2
@@ -13,9 +13,10 @@
<driver name="EcalClusterer"/>
<driver name="EcalPedestalPlots"/>
<driver name="EcalMonitoringPlots"/>
+ <driver name="EcalHitPlots"/>
<driver name="EcalClusterPlots"/>
- <driver name="EcalEventMonitor"/>
<!--
+ <driver name="EcalEventMonitor"/>
<driver name="EcalPedestalPlots"/>
<driver name="EcalEvsX"/>
<driver name="EcalWindowPlots"/>
@@ -27,11 +28,12 @@
<driver name="EcalRawConverter" type="org.lcsim.hps.recon.ecal.HPSEcalRawConverterDriver">
<rawCollectionName>EcalReadoutHits</rawCollectionName>
<integralWindow>35</integralWindow>
+ <gain>1.0</gain>
</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>
+ <eventRefreshRate>1</eventRefreshRate>
</driver>
<driver name="EcalEventMonitor" type="org.lcsim.hps.monitoring.ecal.EcalEventMonitor">
<eventRefreshRate>1</eventRefreshRate>
@@ -53,6 +55,8 @@
<ecalName>Ecal</ecalName>
<ecalCollectionName>EcalCalHits</ecalCollectionName>
</driver>
+ <driver name="EcalHitPlots" type="org.lcsim.hps.monitoring.ecal.EcalHitPlots">
+ </driver>
<driver name="EcalClusterPlots" type="org.lcsim.hps.monitoring.ecal.EcalClusterPlots">
</driver>
</drivers>
hps-java/src/main/resources/org/lcsim/hps/steering
diff -u -r1.5 -r1.6
--- ECalMonitoring.lcsim 8 May 2012 15:49:32 -0000 1.5
+++ ECalMonitoring.lcsim 10 May 2012 15:55:55 -0000 1.6
@@ -14,8 +14,8 @@
<driver name="EcalPedestalPlots"/>
<driver name="EcalMonitoringPlots"/>
<!--
- <driver name="EcalEventMonitor"/>
<driver name="EcalEvsX"/>
+ <driver name="EcalEventMonitor"/>
<driver name="EcalWindowPlots"/>
<driver name="EcalDaqPlots"/>
-->
@@ -52,6 +52,7 @@
<ecalCollectionName>EcalCalHits</ecalCollectionName>
</driver>
<driver name="EcalEvsX" type="org.lcsim.hps.monitoring.ecal.EcalEvsX">
+ <targetZ>350</targetZ>
<inputCollection>EcalClusters</inputCollection>
</driver>
</drivers>
hps-java/src/main/resources/org/lcsim/hps/steering
diff -u -r1.15 -r1.16
--- TestRunMonitoring.lcsim 6 May 2012 00:01:13 -0000 1.15
+++ TestRunMonitoring.lcsim 10 May 2012 15:55:55 -0000 1.16
@@ -15,12 +15,12 @@
<driver name="RawTrackerHitMaker"/>
<driver name="RawTrackerHitFitterDriver"/>
<driver name="TrackerHitDriver"/>
- <driver name="EcalDaqPlots"/>
+<!-- <driver name="EcalDaqPlots"/>-->
<driver name="EcalMonitoringPlots"/>
- <driver name="EcalEventMonitor"/>
+<!-- <driver name="EcalEventMonitor"/>-->
<driver name="SVTOccupancyPlots"/>
<driver name="SVTPulsePlots"/>
- <driver name="SVTHitRecoPlots"/>
+<!-- <driver name="SVTHitRecoPlots"/>-->
<driver name="CleanupDriver"/>
</execute>
hps-java/src/main/java/org/lcsim/hps/monitoring/svt
diff -N SVTSimpleEventDisplay.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ SVTSimpleEventDisplay.java 10 May 2012 15:55:56 -0000 1.1
@@ -0,0 +1,149 @@
+package org.lcsim.hps.monitoring.svt;
+
+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.geometry.Detector;
+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 SVTSimpleEventDisplay extends Driver {
+
+ private String inputCollection = "RawTrackerHitMaker_RawTrackerHits";
+ private String trackerName = "Tracker";
+ private AIDA aida = AIDA.defaultInstance();
+ private IPlotter plotter;
+ private Detector detector;
+ private List<SiSensor> sensors;
+ private IHistogram1D[][] plots = new IHistogram1D[2][10];
+
+ public SVTSimpleEventDisplay() {
+ }
+
+ 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) {
+
+ // 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.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;
+ }
+ }
+
+ // 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);
+ }
+ }
+ }
+
+ plotter.show();
+ }
+
+ 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++) {
+ plots[module][layer - 1].reset();
+ }
+ }
+
+ // Increment strip hit count.
+ for (RawTrackerHit hit : rawTrackerHits) {
+ SiSensor sensor = (SiSensor) hit.getDetectorElement();
+ 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].fill(hit.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.10 -r1.11
--- SVTHitPulsePlots.java 8 May 2012 16:01:33 -0000 1.10
+++ SVTHitPulsePlots.java 10 May 2012 15:55:56 -0000 1.11
@@ -71,6 +71,8 @@
plotter2 = fac.createPlotterFactory().create("HPS SVT Hit vs Channel");
plotter2.setTitle("HPS SVT Hit vs Channel");
+ plotter2.style().setParameter("hist2DStyle", "colorMap");
+ plotter2.style().dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
plotterFrame.addPlotter(plotter2);
plotters.add(plotter2);
IPlotterStyle style2 = plotter2.style();
hps-java/src/main/java/org/lcsim/hps/recon/ecal
diff -u -r1.5 -r1.6
--- HPSEcalConditions.java 8 May 2012 15:49:32 -0000 1.5
+++ HPSEcalConditions.java 10 May 2012 15:55:56 -0000 1.6
@@ -17,7 +17,7 @@
/**
*
* @author meeg
- * @version $Id: HPSEcalConditions.java,v 1.5 2012/05/08 15:49:32 meeg Exp $
+ * @version $Id: HPSEcalConditions.java,v 1.6 2012/05/10 15:55:56 meeg Exp $
*/
public class HPSEcalConditions extends Driver {
@@ -26,7 +26,7 @@
private static HashMap<Long, Long> physicalToDaqMap = new HashMap<Long, Long>();
private static boolean mapLoaded = false;
//pedestals
- private static HashMap<Long, Integer> daqToPedestalMap = new HashMap<Long, Integer>();
+ private static HashMap<Long, Double> daqToPedestalMap = new HashMap<Long, Double>();
private static HashMap<Long, Double> daqToNoiseMap = new HashMap<Long, Double>();
private static boolean pedestalsLoaded = false;
//set of bad channels to ignore
@@ -69,9 +69,9 @@
public static void loadPedestals() {
ConditionsManager conditions = ConditionsManager.defaultInstance();
try {
- Reader pedestalsReader = conditions.getRawConditions("calibECal/fadc01.ped").getReader();
+ Reader pedestalsReader = conditions.getRawConditions("calibECal/ecal01.ped").getReader();
loadPedestals(pedestalsReader, 1);
- pedestalsReader = conditions.getRawConditions("calibECal/fadc02.ped").getReader();
+ pedestalsReader = conditions.getRawConditions("calibECal/ecal02.ped").getReader();
loadPedestals(pedestalsReader, 2);
} catch (IOException e) {
throw new RuntimeException("couldn't get pedestals file", e);
@@ -104,7 +104,7 @@
} else {
short slot = Short.valueOf(lineTok.nextToken());
short channel = Short.valueOf(lineTok.nextToken());
- int pedestal = Integer.valueOf(lineTok.nextToken());
+ double pedestal = Double.valueOf(lineTok.nextToken());
double noise = Double.valueOf(lineTok.nextToken());
daqToPedestalMap.put(getDaqID(crate, slot, channel), pedestal);
daqToNoiseMap.put(getDaqID(crate, slot, channel), noise);
@@ -246,11 +246,11 @@
return daqToPhysicalMap.get(daqID);
}
- public static Integer daqToPedestal(long daqID) {
+ public static Double daqToPedestal(long daqID) {
return daqToPedestalMap.get(daqID);
}
- public static Integer physicalToPedestal(long physicalID) {
+ public static Double physicalToPedestal(long physicalID) {
return daqToPedestalMap.get(physicalToDaqMap.get(physicalID));
}
}
hps-java/src/main/java/org/lcsim/hps/recon/ecal
diff -u -r1.4 -r1.5
--- HPSEcalRawConverter.java 5 May 2012 00:15:12 -0000 1.4
+++ HPSEcalRawConverter.java 10 May 2012 15:55:56 -0000 1.5
@@ -12,20 +12,23 @@
public class HPSEcalRawConverter {
boolean debug = false;
- double period = 4.0;
- double dt = 0.0;
+ double gain = 60.0/800.0;
public HPSEcalRawConverter() {
}
- public int getPedestal(RawTrackerHit hit) {
+ public void setGain(double gain) {
+ this.gain = gain;
+ }
+
+ public double getPedestal(RawTrackerHit hit) {
if (!HPSEcalConditions.pedestalsLoaded()) {
HPSEcalConditions.loadPedestals();
}
return HPSEcalConditions.physicalToPedestal(hit.getCellID());
}
- public int getPedestal(BaseRawCalorimeterHit hit) {
+ public double getPedestal(BaseRawCalorimeterHit hit) {
if (!HPSEcalConditions.pedestalsLoaded()) {
HPSEcalConditions.loadPedestals();
}
@@ -39,7 +42,7 @@
if (debug) {
System.out.println("Summing ADC for hit: " + hit.toString());
}
- int pedestal = getPedestal(hit);
+ double pedestal = getPedestal(hit);
short sum = 0;
short samples[] = hit.getADCValues();
for (int isample = 0; isample < samples.length; ++isample) {
@@ -55,7 +58,7 @@
public CalorimeterHit HitDtoA(RawTrackerHit hit) {
double time = 0.0;
long id = hit.getCellID();
- double rawEnergy = (double) sumADC(hit);
+ double rawEnergy = gain*sumADC(hit);
double[] pos = hit.getDetectorElement().getGeometry().getPosition().v();
// double [] pos = new double[3];
// pos[0] = pvec.x();
@@ -69,7 +72,7 @@
public CalorimeterHit HitDtoA(BaseRawCalorimeterHit hit, int window) {
double time = 0.0;
long id = hit.getCellID();
- double rawEnergy = (double) hit.getAmplitude() - window * getPedestal(hit);
+ double rawEnergy = gain*(hit.getAmplitude() - window * getPedestal(hit));
// Hep3Vector pvec = hit.getDetectorElement().getGeometry().getPosition();
// double [] pos = new double[3];
// pos[0] = pvec.x();
hps-java/src/main/java/org/lcsim/hps/recon/ecal
diff -u -r1.1 -r1.2
--- FADCConverterDriver.java 8 May 2012 15:49:32 -0000 1.1
+++ FADCConverterDriver.java 10 May 2012 15:55:56 -0000 1.2
@@ -10,7 +10,7 @@
/**
*
- * @version $Id: FADCConverterDriver.java,v 1.1 2012/05/08 15:49:32 meeg Exp $
+ * @version $Id: FADCConverterDriver.java,v 1.2 2012/05/10 15:55:56 meeg Exp $
*/
public class FADCConverterDriver extends Driver {
@@ -65,7 +65,8 @@
if (!HPSEcalConditions.pedestalsLoaded()) {
HPSEcalConditions.loadPedestals();
}
- ArrayList<BaseRawCalorimeterHit> newHits = new ArrayList<BaseRawCalorimeterHit>();
+ ArrayList<BaseRawCalorimeterHit> readoutHits = new ArrayList<BaseRawCalorimeterHit>();
+ ArrayList<BaseRawCalorimeterHit> triggerHits = new ArrayList<BaseRawCalorimeterHit>();
// Get the list of ECal hits.
if (event.hasCollection(RawTrackerHit.class, rawCollectionName)) {
@@ -74,7 +75,8 @@
for (RawTrackerHit hit : hits) {
short[] window = hit.getADCValues();
long id = hit.getCellID();
- int crystalThreshold = HPSEcalConditions.physicalToPedestal(id) + threshold;
+ //do DAQ readout
+ double crystalThreshold = HPSEcalConditions.physicalToPedestal(id) + threshold;
int adcSum = 0;
int pointerOffset = 0;
int numSamplesToRead = 0;
@@ -84,7 +86,7 @@
adcSum += window[i - pointerOffset];
numSamplesToRead--;
if (numSamplesToRead == 0) {
- newHits.add(new BaseRawCalorimeterHit(id, adcSum, thresholdCrossing));
+ readoutHits.add(new BaseRawCalorimeterHit(id, adcSum, thresholdCrossing));
}
} else if ((i == 0 || window[i - 1] <= crystalThreshold) && window[i] > crystalThreshold) {
thresholdCrossing = i;
@@ -93,9 +95,10 @@
adcSum = 0;
}
}
+ //do trigger readout
}
}
int flags = 0;
- event.put(ecalCollectionName, newHits, BaseRawCalorimeterHit.class, flags, ecalReadoutName);
+ event.put(ecalCollectionName, readoutHits, BaseRawCalorimeterHit.class, flags, ecalReadoutName);
}
}
hps-java/src/main/java/org/lcsim/hps/recon/ecal
diff -u -r1.7 -r1.8
--- HPSEcalRawConverterDriver.java 8 May 2012 15:49:32 -0000 1.7
+++ HPSEcalRawConverterDriver.java 10 May 2012 15:55:56 -0000 1.8
@@ -27,6 +27,10 @@
converter = new HPSEcalRawConverter();
}
+ public void setGain(double gain) {
+ converter.setGain(gain);
+ }
+
public void setIntegralWindow(int integralWindow) {
this.integralWindow = integralWindow;
}
CVSspam 0.2.12