Commit in hps-java/src/main on MAIN
java/org/lcsim/hps/monitoring/RunControlDriver.java+76added 1.1
java/org/lcsim/hps/monitoring/ecal/EcalHitPlots.java+102added 1.1
                                  /EcalClusterPlots.java+4-21.1 -> 1.2
                                  /EcalMonitoringPlots.java+8-81.4 -> 1.5
resources/org/lcsim/hps/steering/TestRunEventDisplay.lcsim+59added 1.1
                                /ECalTriggerWindowMonitoring.lcsim+7-11.1 -> 1.2
                                /ECalTriggerMonitoring.lcsim+6-21.1 -> 1.2
                                /ECalMonitoring.lcsim+2-11.5 -> 1.6
                                /TestRunMonitoring.lcsim+3-31.15 -> 1.16
java/org/lcsim/hps/monitoring/svt/SVTSimpleEventDisplay.java+149added 1.1
                                 /SVTHitPulsePlots.java+21.10 -> 1.11
java/org/lcsim/hps/recon/ecal/HPSEcalConditions.java+7-71.5 -> 1.6
                             /HPSEcalRawConverter.java+10-71.4 -> 1.5
                             /FADCConverterDriver.java+8-51.1 -> 1.2
                             /HPSEcalRawConverterDriver.java+41.7 -> 1.8
+447-36
4 added + 11 modified, total 15 files
messing with monitoring drivers?

hps-java/src/main/java/org/lcsim/hps/monitoring
RunControlDriver.java added at 1.1
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
EcalHitPlots.java added at 1.1
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
EcalClusterPlots.java 1.1 -> 1.2
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
EcalMonitoringPlots.java 1.4 -> 1.5
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
TestRunEventDisplay.lcsim added at 1.1
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
ECalTriggerWindowMonitoring.lcsim 1.1 -> 1.2
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
ECalTriggerMonitoring.lcsim 1.1 -> 1.2
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
ECalMonitoring.lcsim 1.5 -> 1.6
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
TestRunMonitoring.lcsim 1.15 -> 1.16
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
SVTSimpleEventDisplay.java added at 1.1
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
SVTHitPulsePlots.java 1.10 -> 1.11
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
HPSEcalConditions.java 1.5 -> 1.6
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
HPSEcalRawConverter.java 1.4 -> 1.5
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
FADCConverterDriver.java 1.1 -> 1.2
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
HPSEcalRawConverterDriver.java 1.7 -> 1.8
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


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