Print

Print


Commit in hps-java/src/main on MAIN
java/org/lcsim/hps/monitoring/ecal/EcalClusterPlots.java+110added 1.1
                                  /EcalWindowEventPlots.java+183added 1.1
                                  /EcalPedestalPlots.java+77-191.5 -> 1.6
                                  /EcalWindowPlots.java+1-11.3 -> 1.4
                                  /EcalEventMonitor.java+5-81.8 -> 1.9
                                  /EcalEvsX.java+3-31.2 -> 1.3
                                  /EcalWindowPlotsXY.java+1-11.3 -> 1.4
                                  /EcalMonitoringPlots.java+8-11.3 -> 1.4
resources/org/lcsim/hps/steering/ECalTriggerWindowMonitoring.lcsim+76added 1.1
                                /ECalCalibration.lcsim+54added 1.1
                                /ECalMonitoringToFile.lcsim+60added 1.1
                                /ECalTriggerMonitoring.lcsim+59added 1.1
                                /ECalMonitoring.lcsim+11-51.4 -> 1.5
java/org/lcsim/hps/recon/ecal/FADCConverterDriver.java+101added 1.1
                             /HPSEcalConditions.java+25-51.4 -> 1.5
                             /HPSEcalCluster.java+2-11.4 -> 1.5
                             /HPSEcalCTPClusterer.java+4-41.2 -> 1.3
                             /HPSEcalRawConverterDriver.java+41.6 -> 1.7
java/org/lcsim/hps/evio/ECalEvioReader.java+14-51.14 -> 1.15
+798-53
7 added + 12 modified, total 19 files
stuff? mostly ECal?

hps-java/src/main/java/org/lcsim/hps/monitoring/ecal
EcalClusterPlots.java added at 1.1
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

hps-java/src/main/java/org/lcsim/hps/monitoring/ecal
EcalWindowEventPlots.java added at 1.1
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]);
+    }
+}

hps-java/src/main/java/org/lcsim/hps/monitoring/ecal
EcalPedestalPlots.java 1.5 -> 1.6
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());
+                }
             }
         }
     }

hps-java/src/main/java/org/lcsim/hps/monitoring/ecal
EcalWindowPlots.java 1.3 -> 1.4
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);

hps-java/src/main/java/org/lcsim/hps/monitoring/ecal
EcalEventMonitor.java 1.8 -> 1.9
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();

hps-java/src/main/java/org/lcsim/hps/monitoring/ecal
EcalEvsX.java 1.2 -> 1.3
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();

hps-java/src/main/java/org/lcsim/hps/monitoring/ecal
EcalWindowPlotsXY.java 1.3 -> 1.4
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);

hps-java/src/main/java/org/lcsim/hps/monitoring/ecal
EcalMonitoringPlots.java 1.3 -> 1.4
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) {

hps-java/src/main/resources/org/lcsim/hps/steering
ECalTriggerWindowMonitoring.lcsim added at 1.1
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>

hps-java/src/main/resources/org/lcsim/hps/steering
ECalCalibration.lcsim added at 1.1
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>

hps-java/src/main/resources/org/lcsim/hps/steering
ECalMonitoringToFile.lcsim added at 1.1
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>

hps-java/src/main/resources/org/lcsim/hps/steering
ECalTriggerMonitoring.lcsim added at 1.1
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>

hps-java/src/main/resources/org/lcsim/hps/steering
ECalMonitoring.lcsim 1.4 -> 1.5
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">

hps-java/src/main/java/org/lcsim/hps/recon/ecal
FADCConverterDriver.java added at 1.1
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);
+    }
+}

hps-java/src/main/java/org/lcsim/hps/recon/ecal
HPSEcalConditions.java 1.4 -> 1.5
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);
     }

hps-java/src/main/java/org/lcsim/hps/recon/ecal
HPSEcalCluster.java 1.4 -> 1.5
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;
     }

hps-java/src/main/java/org/lcsim/hps/recon/ecal
HPSEcalCTPClusterer.java 1.2 -> 1.3
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()) {

hps-java/src/main/java/org/lcsim/hps/recon/ecal
HPSEcalRawConverterDriver.java 1.6 -> 1.7
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;
     }

hps-java/src/main/java/org/lcsim/hps/evio
ECalEvioReader.java 1.14 -> 1.15
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)));
                 }
             }
         }
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