Commit in hps-java on MAIN
scripts/make_ecal.sh+2-21.2 -> 1.3
src/main/java/org/lcsim/hps/monitoring/svt/SVTMonitoringPlots.java+175added 1.1
                                          /SVTHitReconstructionPlots.java+1-91.11 -> 1.12
                                          /SVTSimpleEventDisplay.java+97-661.2 -> 1.3
                                          /SVTEventDisplay.java+51.5 -> 1.6
src/main/java/org/lcsim/hps/recon/tracking/HPSShaperAnalyticFitAlgorithm.java+21.7 -> 1.8
                                          /HPSSVTDAQMaps.java+121-791.8 -> 1.9
                                          /HPSRawTrackerHitFitterDriver.java-31.11 -> 1.12
                                          /HPSNearestNeighborRMS.java+8-31.5 -> 1.6
                                          /HPSSVTCalibrationConstants.java+1-11.9 -> 1.10
src/main/java/org/lcsim/hps/monitoring/ecal/EcalPedestalPlots.java+1-31.8 -> 1.9
                                           /EcalMonitoringPlots.java+11-61.7 -> 1.8
src/main/java/org/lcsim/hps/evio/TestRunEvioToLcio.java+23-101.10 -> 1.11
+447-182
1 added + 12 modified, total 13 files
new SVT monitoring plots, better T0-related cuts in NearestNeighborRMS

hps-java/scripts
make_ecal.sh 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- make_ecal.sh	2 May 2012 00:39:40 -0000	1.2
+++ make_ecal.sh	17 May 2012 18:24:10 -0000	1.3
@@ -1,8 +1,8 @@
 #!/bin/bash
 #prints the ECal physicalID-daqID conversion table, as found in daqmap/ecal.txt in hps-detectors.
 echo "#x	y	crate	slot	channel"
-topslots=( 10 13 9 14 8 15 7 16 6 17 5 18 4 -1 )
-botslots=( 10 13 9 14 8 15 7 16 6 17 5 18 -1 -2 )
+topslots=( 10 13 9 14 8 15 7 16 6 17 5 18 4 19 )
+botslots=( 10 13 9 14 8 15 7 16 6 17 5 18 4 19 )
 x=-23
 y=1
 slot=0

hps-java/src/main/java/org/lcsim/hps/monitoring/svt
SVTMonitoringPlots.java added at 1.1
diff -N SVTMonitoringPlots.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ SVTMonitoringPlots.java	17 May 2012 18:24:10 -0000	1.1
@@ -0,0 +1,175 @@
+package org.lcsim.hps.monitoring.svt;
+
+import hep.aida.*;
+import hep.aida.ref.plotter.PlotterRegion;
+import jas.hist.JASHist;
+
+import java.util.List;
+import org.lcsim.detector.tracker.silicon.SiSensor;
+
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.RawTrackerHit;
+import org.lcsim.geometry.Detector;
+import org.lcsim.hps.monitoring.AIDAFrame;
+import org.lcsim.hps.recon.tracking.HPSFittedRawTrackerHit;
+import org.lcsim.hps.recon.tracking.HPSSVTCalibrationConstants;
+import org.lcsim.hps.recon.tracking.HPSSVTDAQMaps;
+import org.lcsim.util.Driver;
+import org.lcsim.util.aida.AIDA;
+
+/**
+ * This Driver makes plots of sensor occupancies across a run. It is intended to
+ * be used with the monitoring system. It will currently only run on a test run
+ * detector, as the number of sensors, and hence plotter regions, is hardcoded
+ * to 20.
+ *
+ * @author Jeremy McCormick <[log in to unmask]>
+ * @version $Id: SensorOccupancyPlotsDriver.java,v 1.12 2012/04/13 00:06:55
+ * jeremy Exp $
+ *
+ */
+public class SVTMonitoringPlots extends Driver {
+
+    private String inputCollection = "SVTRawTrackerHits";
+    private String fitCollection = "SVTFittedRawTrackerHits";
+    private AIDA aida = AIDA.defaultInstance();
+    private AIDAFrame plotterFrame;
+    private IPlotter plotter, plotter2, plotter3;
+//    private IHistogram1D[][] plots = new IHistogram1D[2][10];
+    private IProfile1D[][] pedestalShifts = new IProfile1D[2][10];
+//    private IHistogram2D[][] pedestalShifts = new IHistogram2D[2][10];
+    private IHistogram2D[][] t0s = new IHistogram2D[2][10];
+    private IHistogram2D[][] amps = new IHistogram2D[2][10];
+
+    public SVTMonitoringPlots() {
+    }
+
+    public void setInputCollection(String inputCollection) {
+        this.inputCollection = inputCollection;
+    }
+
+    private int computePlotterRegion(int layer, int module) {
+        // Compute the sensor's x and y grid coordinates and then translate to region number.
+        int iy = (layer - 1) / 2;
+        int ix = 0;
+        if (module > 0) {
+            ix += 2;
+        }
+        if (layer % 2 == 0) {
+            ix += 1;
+        }
+        int region = ix * 5 + iy;
+        //System.out.println(sensor.getName() + "; lyr=" + layer + "; mod=" + module + " -> xy[" + ix + "][" + iy + "] -> reg="+region);
+        return region;
+    }
+
+    protected void detectorChanged(Detector detector) {
+        plotterFrame = new AIDAFrame();
+        plotterFrame.setTitle("HPS SVT Monitoring");
+
+        // Setup the plotter.
+        IAnalysisFactory fac = aida.analysisFactory();
+
+        plotter = fac.createPlotterFactory().create("Pedestal Shifts");
+        plotter.setTitle("Pedestal Shifts");
+        plotterFrame.addPlotter(plotter);
+        plotter.style().dataStyle().errorBarStyle().setVisible(false);
+        plotter.style().statisticsBoxStyle().setVisible(false);
+//        plotter.style().setParameter("hist2DStyle", "colorMap");
+//        plotter.style().dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
+//        plotter.style().zAxisStyle().setParameter("scale", "log");
+        plotter.style().dataStyle().fillStyle().setColor("red");
+        plotter.style().dataStyle().markerStyle().setShape("dot");
+        plotter.style().dataStyle().markerStyle().setSize(1);
+        plotter.createRegions(4, 5);
+
+        plotter2 = fac.createPlotterFactory().create("Fitted T0");
+        plotter2.setTitle("Fitted T0");
+        plotterFrame.addPlotter(plotter2);
+        plotter2.style().dataStyle().errorBarStyle().setVisible(false);
+        plotter2.style().statisticsBoxStyle().setVisible(false);
+        plotter2.style().setParameter("hist2DStyle", "colorMap");
+        plotter2.style().dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
+        plotter2.style().zAxisStyle().setParameter("scale", "log");
+        plotter2.style().zAxisStyle().setVisible(false);
+//        plotter2.style().dataStyle().markerStyle().setShape("dot");
+//        plotter2.style().dataStyle().markerStyle().setSize(1);
+        plotter2.createRegions(4, 5);
+
+        plotter3 = fac.createPlotterFactory().create("Fitted Amplitude");
+        plotter3.setTitle("Fitted Amplitude");
+        plotterFrame.addPlotter(plotter3);
+        plotter3.style().dataStyle().errorBarStyle().setVisible(false);
+        plotter3.style().statisticsBoxStyle().setVisible(false);
+        plotter3.style().setParameter("hist2DStyle", "colorMap");
+        plotter3.style().dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
+        plotter3.style().zAxisStyle().setParameter("scale", "log");
+        plotter3.style().zAxisStyle().setVisible(false);
+//        plotter3.style().dataStyle().markerStyle().setShape("dot");
+//        plotter3.style().dataStyle().markerStyle().setSize(1);
+        plotter3.createRegions(4, 5);
+
+        // Setup the occupancy plots.
+        aida.tree().cd("/");
+        for (int module = 0; module < 2; module++) {
+            for (int layer = 0; layer < 10; layer++) {
+                int region = computePlotterRegion(layer + 1, module);
+                pedestalShifts[module][layer] = aida.profile1D(HPSSVTDAQMaps.sensorArray[module][layer].getName() + " Pedestal Shifts", 640, -0.5, 639.5);
+//                pedestalShifts[module][layer] = aida.histogram2D(HPSSVTDAQMaps.sensorArray[module][layer].getName() + " Pedestal Shifts", 640, -0.5, 639.5, 100, -500, 500);
+                plotter.region(region).plot(pedestalShifts[module][layer]);
+                t0s[module][layer] = aida.histogram2D(HPSSVTDAQMaps.sensorArray[module][layer].getName() + " Fitted T0", 640, -0.5, 639.5, 100, -24, 48);
+                plotter2.region(region).plot(t0s[module][layer]);
+                amps[module][layer] = aida.histogram2D(HPSSVTDAQMaps.sensorArray[module][layer].getName() + " Fitted Amplitude", 640, -0.5, 639.5, 100, 0, 2000);
+                plotter3.region(region).plot(amps[module][layer]);
+//                plotter3.region(region).style().zAxisStyle().setParameter("labelVertical", "false");
+//                                for (String str : plotter3.region(region).style().zAxisStyle().availableParameterOptions("labelVertical"))
+//                                    System.out.println(str);
+
+            }
+        }
+        plotterFrame.pack();
+        plotterFrame.setVisible(true);
+    }
+
+    public void process(EventHeader event) {
+        if (event.hasCollection(RawTrackerHit.class, inputCollection)) {
+
+            // Get RawTrackerHit collection from event.
+            List<RawTrackerHit> rawTrackerHits = event.get(RawTrackerHit.class, inputCollection);
+
+            // Clear histograms.
+            for (int module = 0; module < 2; module++) {
+                for (int layer = 1; layer < 11; layer++) {
+//                    plotter.region(computePlotterRegion(layer, module)).setYLimits(pedestalShifts[module][layer - 1].minBinHeight()-100, pedestalShifts[module][layer - 1].maxBinHeight()+100);
+//                    pedestalShifts[module][layer - 1].reset();
+                }
+            }
+
+            // Increment strip hit count.
+            for (RawTrackerHit hit : rawTrackerHits) {
+                int layer = hit.getIdentifierFieldValue("layer"); // 1-10; axial layers are odd layers; stereo layers are even
+                int module = hit.getIdentifierFieldValue("module"); // 0-1; module number is top or bottom
+                double pedestal = HPSSVTCalibrationConstants.getPedestal((SiSensor) hit.getDetectorElement(), hit.getIdentifierFieldValue("strip"));
+                pedestalShifts[module][layer - 1].fill(hit.getIdentifierFieldValue("strip"), hit.getADCValues()[0] - pedestal);
+            }
+        }
+
+        if (event.hasCollection(HPSFittedRawTrackerHit.class, fitCollection)) {
+            List<HPSFittedRawTrackerHit> fits = event.get(HPSFittedRawTrackerHit.class, fitCollection);
+            for (HPSFittedRawTrackerHit fit : fits) {
+                int layer = fit.getRawTrackerHit().getIdentifierFieldValue("layer"); // 1-10; axial layers are odd layers; stereo layers are even
+                int module = fit.getRawTrackerHit().getIdentifierFieldValue("module"); // 0-1; module number is top or bottom
+                int strip = fit.getRawTrackerHit().getIdentifierFieldValue("strip");
+                t0s[module][layer - 1].fill(strip,fit.getT0());
+                amps[module][layer - 1].fill(strip,fit.getAmp());
+            }
+        }
+
+    }
+
+    public void endOfData() {
+        if (plotter != null) {
+            plotter.hide();
+        }
+    }
+}
\ No newline at end of file

hps-java/src/main/java/org/lcsim/hps/monitoring/svt
SVTHitReconstructionPlots.java 1.11 -> 1.12
diff -u -r1.11 -r1.12
--- SVTHitReconstructionPlots.java	14 May 2012 22:51:35 -0000	1.11
+++ SVTHitReconstructionPlots.java	17 May 2012 18:24:10 -0000	1.12
@@ -17,7 +17,6 @@
 import org.lcsim.hps.monitoring.AIDAFrame;
 import org.lcsim.hps.monitoring.Resettable;
 import org.lcsim.hps.recon.tracking.HPSFittedRawTrackerHit;
-import org.lcsim.hps.recon.tracking.HPSSVTCalibrationConstants;
 import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHitStrip1D;
 import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
@@ -29,7 +28,6 @@
 public class SVTHitReconstructionPlots extends Driver implements Resettable {
 
     private AIDAFrame plotterFrame;
-    private List<IPlotter> plotters = new ArrayList<IPlotter>();
     private AIDA aida = AIDA.defaultInstance();
     private String rawTrackerHitCollectionName = "SVTRawTrackerHits";
     private String fittedTrackerHitCollectionName = "SVTFittedRawTrackerHits";
@@ -66,7 +64,6 @@
         plotter = fac.createPlotterFactory().create("HPS SVT Timing Plots");
         plotter.setTitle("Timing");
         plotterFrame.addPlotter(plotter);
-        plotters.add(plotter);
         IPlotterStyle style = plotter.style();
         style.dataStyle().fillStyle().setColor("yellow");
         style.dataStyle().errorBarStyle().setVisible(false);
@@ -75,7 +72,6 @@
         plotter2 = fac.createPlotterFactory().create("HPS SVT Amplitude Plots");
         plotter2.setTitle("Amplitude");
         plotterFrame.addPlotter(plotter2);
-        plotters.add(plotter2);
         IPlotterStyle style2 = plotter2.style();
         style2.dataStyle().fillStyle().setColor("yellow");
         style2.dataStyle().errorBarStyle().setVisible(false);
@@ -85,7 +81,6 @@
         plotter3 = fac.createPlotterFactory().create("HPS SVT Raw Hit Plots");
         plotter3.setTitle("Raw Hits");
         plotterFrame.addPlotter(plotter3);
-        plotters.add(plotter3);
         IPlotterStyle style3 = plotter3.style();
         style3.dataStyle().fillStyle().setColor("yellow");
         style3.dataStyle().errorBarStyle().setVisible(false);
@@ -94,7 +89,6 @@
         plotter4 = fac.createPlotterFactory().create("HPS SVT Reco Hit Plots");
         plotter4.setTitle("Reco Hits");
         plotterFrame.addPlotter(plotter4);
-        plotters.add(plotter4);
         IPlotterStyle style4 = plotter4.style();
         style4.dataStyle().fillStyle().setColor("yellow");
         style4.dataStyle().errorBarStyle().setVisible(false);
@@ -103,7 +97,6 @@
         plotter5 = fac.createPlotterFactory().create("HPS SVT Cluster Size Plots");
         plotter5.setTitle("Cluster Size");
         plotterFrame.addPlotter(plotter5);
-        plotters.add(plotter5);
         IPlotterStyle style5 = plotter5.style();
         style5.dataStyle().fillStyle().setColor("green");
         style5.dataStyle().errorBarStyle().setVisible(false);
@@ -112,7 +105,6 @@
         plotter6 = fac.createPlotterFactory().create("HPS SVT Cluster Amp Plots");
         plotter6.setTitle("Cluster Amplitude");
         plotterFrame.addPlotter(plotter6);
-        plotters.add(plotter6);
         IPlotterStyle style6 = plotter6.style();
         style6.dataStyle().fillStyle().setColor("green");
         style6.dataStyle().errorBarStyle().setVisible(false);
@@ -120,7 +112,7 @@
 
 
         for (SiSensor sensor : sensors) {
-            IHistogram1D timingPlot = aida.histogram1D(sensor.getName() + "_timing", 50, 0, 25.0);
+            IHistogram1D timingPlot = aida.histogram1D(sensor.getName() + "_timing", 50, -25, 25.0);
             IHistogram1D amplitudePlot = aida.histogram1D(sensor.getName() + "_amplitude", 50, 0, 2000.0);
             IHistogram1D nrawPlot = aida.histogram1D(sensor.getName() + "_raw_hits", 10, 0, 9.0);
             IHistogram1D nrecoPlot = aida.histogram1D(sensor.getName() + "_reco_hits", 10, 0, 9.0);

hps-java/src/main/java/org/lcsim/hps/monitoring/svt
SVTSimpleEventDisplay.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- SVTSimpleEventDisplay.java	13 May 2012 21:38:20 -0000	1.2
+++ SVTSimpleEventDisplay.java	17 May 2012 18:24:10 -0000	1.3
@@ -3,18 +3,16 @@
 import hep.aida.IAnalysisFactory;
 import hep.aida.IHistogram1D;
 import hep.aida.IPlotter;
-import hep.aida.IPlotterStyle;
-import hep.aida.ref.plotter.PlotterRegion;
-import jas.hist.JASHist;
 
 import java.util.List;
 
-import org.lcsim.detector.identifier.IIdentifier;
-import org.lcsim.detector.identifier.IIdentifierHelper;
-import org.lcsim.detector.tracker.silicon.SiSensor;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.RawTrackerHit;
+import org.lcsim.fit.helicaltrack.HelicalTrackHit;
 import org.lcsim.geometry.Detector;
+import org.lcsim.hps.monitoring.AIDAFrame;
+import org.lcsim.hps.recon.tracking.HPSSVTDAQMaps;
+import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHit;
 import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
 
@@ -31,21 +29,36 @@
  */
 public class SVTSimpleEventDisplay extends Driver {
 
-    private String inputCollection = "RawTrackerHitMaker_RawTrackerHits";
-    private String trackerName = "Tracker";
+    private AIDAFrame plotterFrame;
+    private String inputCollection = "SVTRawTrackerHits";
+    private String trackerHitCollection = "StripClusterer_SiTrackerHitStrip1D";
+    private String helicalHitCollection = "HelicalTrackHits";
     private AIDA aida = AIDA.defaultInstance();
-    private IPlotter plotter;
-    private Detector detector;
-    private List<SiSensor> sensors;
-    private IHistogram1D[][] plots = new IHistogram1D[2][10];
+    private IPlotter plotter, plotter2, plotter3;
+    private IHistogram1D[][] rth = new IHistogram1D[2][10];
+    private IHistogram1D[][] th = new IHistogram1D[2][10];
+    private IHistogram1D[][] hth = new IHistogram1D[2][10];
+    private boolean singleEvent = true;
 
     public SVTSimpleEventDisplay() {
     }
 
+    public void setHelicalHitCollection(String helicalHitCollection) {
+        this.helicalHitCollection = helicalHitCollection;
+    }
+
+    public void setSingleEvent(boolean singleEvent) {
+        this.singleEvent = singleEvent;
+    }
+
     public void setInputCollection(String inputCollection) {
         this.inputCollection = inputCollection;
     }
 
+    public void setTrackerHitCollection(String trackerHitCollection) {
+        this.trackerHitCollection = trackerHitCollection;
+    }
+
     private int computePlotterRegion(int layer, int module) {
         // Compute the sensor's x and y grid coordinates and then translate to region number.
         int iy = (layer - 1) / 2;
@@ -62,88 +75,106 @@
     }
 
     protected void detectorChanged(Detector detector) {
+        plotterFrame = new AIDAFrame();
+        plotterFrame.setTitle("HPS SVT Event Display");
 
         // Setup the plotter.
         IAnalysisFactory fac = aida.analysisFactory();
-        plotter = fac.createPlotterFactory().create(detector.getDetectorName() + " : HPS SVT Simple Event Display");
-        IPlotterStyle pstyle = plotter.style();
-        pstyle.dataStyle().fillStyle().setColor("green");
-        pstyle.dataStyle().markerStyle().setColor("green");
-        pstyle.dataStyle().errorBarStyle().setVisible(false);
-        pstyle.statisticsBoxStyle().setVisible(false);
 
-        // Create regions.
+        plotter = fac.createPlotterFactory().create("RawTrackerHits");
+        plotter.setTitle("RawTrackerHits");
+        plotterFrame.addPlotter(plotter);
+        plotter.style().dataStyle().errorBarStyle().setVisible(false);
+        plotter.style().statisticsBoxStyle().setVisible(false);
         plotter.createRegions(4, 5);
 
-        // Cache Detector object.
-        this.detector = detector;
-
-        // Make a list of SiSensors in the SVT.
-        sensors = this.detector.getSubdetector(trackerName).getDetectorElement().findDescendants(SiSensor.class);
-
-        for (int module = 0; module < 2; module++) {
-            for (int layer = 1; layer < 11; layer++) {
-                plots[module][layer - 1] = null;
-            }
-        }
+        plotter2 = fac.createPlotterFactory().create("TrackerHits");
+        plotter2.setTitle("TrackerHits");
+        plotterFrame.addPlotter(plotter2);
+        plotter2.style().dataStyle().errorBarStyle().setVisible(false);
+        plotter2.style().statisticsBoxStyle().setVisible(false);
+        plotter2.createRegions(4, 5);
+
+        plotter3 = fac.createPlotterFactory().create("HelicalTrackHits");
+        plotter3.setTitle("HelicalTrackHits");
+        plotterFrame.addPlotter(plotter3);
+        plotter3.style().dataStyle().errorBarStyle().setVisible(false);
+        plotter3.style().statisticsBoxStyle().setVisible(false);
+        plotter3.createRegions(4, 5);
 
         // Setup the occupancy plots.
         aida.tree().cd("/");
-        for (SiSensor sensor : sensors) {
-            IIdentifierHelper helper = sensor.getIdentifierHelper();
-            IIdentifier id = sensor.getIdentifier();
-
-            int layer = helper.getValue(id, "layer"); // 1-10; axial layers are odd layers; stereo layers are even
-            int module = helper.getValue(id, "module"); // 0-1; module number is top or bottom
-
-            plots[module][layer - 1] = aida.histogram1D(sensor.getName() + " Event Display", 640, 0, 639);
-            plotter.region(computePlotterRegion(layer, module)).plot(plots[module][layer - 1]);
-            JASHist hist = ((PlotterRegion) plotter.region(computePlotterRegion(layer, module))).getPlot();
-            hist.setAllowUserInteraction(false);
-            hist.setAllowPopupMenus(false);
-        }
-
         for (int module = 0; module < 2; module++) {
-            for (int layer = 1; layer < 11; layer++) {
-                if (plots[module][layer - 1] == null) {
-                    throw new RuntimeException("Couldn't find sensor with module " + module + ", layer " + layer);
-                }
+            for (int layer = 0; layer < 10; layer++) {
+                int region = computePlotterRegion(layer + 1, module);
+                rth[module][layer] = aida.histogram1D(HPSSVTDAQMaps.sensorArray[module][layer].getName() + " RawTrackerHits", 640, -0.5, 639.5);
+                plotter.region(region).plot(rth[module][layer]);
+                th[module][layer] = aida.histogram1D(HPSSVTDAQMaps.sensorArray[module][layer].getName() + " TrackerHits", 640, -0.5, 639.5);
+                plotter2.region(region).plot(th[module][layer]);
+                hth[module][layer] = aida.histogram1D(HPSSVTDAQMaps.sensorArray[module][layer].getName() + " HelicalTrackHits", 640, -0.5, 639.5);
+                plotter3.region(region).plot(hth[module][layer]);
             }
         }
 
-        plotter.show();
+        plotterFrame.pack();
+        plotterFrame.setVisible(true);
     }
 
     public void process(EventHeader event) {
-        if (event.hasCollection(RawTrackerHit.class, inputCollection)) {
-
-            // Get RawTrackerHit collection from event.
-            List<RawTrackerHit> rawTrackerHits = event.get(RawTrackerHit.class, inputCollection);
-
-            // Clear histograms.
+        // Clear histograms.
+        if (singleEvent) {
             for (int module = 0; module < 2; module++) {
                 for (int layer = 1; layer < 11; layer++) {
-                    plots[module][layer - 1].reset();
+                    rth[module][layer - 1].reset();
+                    th[module][layer - 1].reset();
+                    hth[module][layer - 1].reset();
                 }
             }
+        }
+
+        if (event.hasCollection(RawTrackerHit.class, inputCollection)) {
+            List<RawTrackerHit> rawTrackerHits = event.get(RawTrackerHit.class, inputCollection);
 
             // Increment strip hit count.
             for (RawTrackerHit hit : rawTrackerHits) {
-                SiSensor sensor = (SiSensor) hit.getDetectorElement();
-                IIdentifierHelper helper = sensor.getIdentifierHelper();
-                IIdentifier id = sensor.getIdentifier();
+                int layer = hit.getIdentifierFieldValue("layer"); // 1-10; axial layers are odd layers; stereo layers are even
+                int module = hit.getIdentifierFieldValue("module"); // 0-1; module number is top or bottom
 
-                int layer = helper.getValue(id, "layer"); // 1-10; axial layers are odd layers; stereo layers are even
-                int module = helper.getValue(id, "module"); // 0-1; module number is top or bottom
+                rth[module][layer - 1].fill(hit.getIdentifierFieldValue("strip"));
+            }
+        }
 
-                plots[module][layer - 1].fill(hit.getIdentifierFieldValue("strip"));
+        if (event.hasCollection(SiTrackerHit.class, trackerHitCollection)) {
+            List<SiTrackerHit> trackerHits = event.get(SiTrackerHit.class, trackerHitCollection);
+
+            // Increment strip hit count.
+            for (SiTrackerHit hit : trackerHits) {
+                for (RawTrackerHit rawHit : hit.getRawHits()) {
+                    int layer = rawHit.getIdentifierFieldValue("layer"); // 1-10; axial layers are odd layers; stereo layers are even
+                    int module = rawHit.getIdentifierFieldValue("module"); // 0-1; module number is top or bottom
+
+                    th[module][layer - 1].fill(rawHit.getIdentifierFieldValue("strip"));
+                }
             }
         }
-    }
 
-    public void endOfData() {
-        if (plotter != null) {
-            plotter.hide();
+        if (event.hasCollection(HelicalTrackHit.class, helicalHitCollection)) {
+            List<HelicalTrackHit> helicalTrackerHits = event.get(HelicalTrackHit.class, helicalHitCollection);
+
+            // Increment strip hit count.
+            for (HelicalTrackHit hit : helicalTrackerHits) {
+                for (Object rawHit : hit.getRawHits()) {
+                    int layer = ((RawTrackerHit) rawHit).getIdentifierFieldValue("layer"); // 1-10; axial layers are odd layers; stereo layers are even
+                    int module = ((RawTrackerHit) rawHit).getIdentifierFieldValue("module"); // 0-1; module number is top or bottom
+
+                    hth[module][layer - 1].fill(((RawTrackerHit) rawHit).getIdentifierFieldValue("strip"));
+                }
+            }
         }
     }
+//    public void endOfData() {
+//        if (plotter != null) {
+//            plotter.hide();
+//        }
+//    }
 }
\ No newline at end of file

hps-java/src/main/java/org/lcsim/hps/monitoring/svt
SVTEventDisplay.java 1.5 -> 1.6
diff -u -r1.5 -r1.6
--- SVTEventDisplay.java	13 May 2012 21:38:20 -0000	1.5
+++ SVTEventDisplay.java	17 May 2012 18:24:10 -0000	1.6
@@ -94,6 +94,11 @@
         }
     }
 
+    @Override
+    public void endOfData() {
+        plotter.hide();
+    }
+
     private void fillPlots(HelicalTrackHit hit) {
 
 //        SiSensor sensor = (SiSensor) hit.getDetectorElement();

hps-java/src/main/java/org/lcsim/hps/recon/tracking
HPSShaperAnalyticFitAlgorithm.java 1.7 -> 1.8
diff -u -r1.7 -r1.8
--- HPSShaperAnalyticFitAlgorithm.java	14 May 2012 19:07:55 -0000	1.7
+++ HPSShaperAnalyticFitAlgorithm.java	17 May 2012 18:24:10 -0000	1.8
@@ -30,6 +30,8 @@
             }
         }
         fit.setChiSq(fitSection(samples, constants, fit, bestStart));
+//        System.out.format("%f\t%f\t%f\t%f\t%f\t%f\n",samples[0]-constants.getPedestal(),samples[1]-constants.getPedestal(),samples[2]-constants.getPedestal(),samples[3]-constants.getPedestal(),samples[4]-constants.getPedestal(),samples[5]-constants.getPedestal());
+//        System.out.println("start = "+bestStart+", "+fit);
         return fit;
     }
 

hps-java/src/main/java/org/lcsim/hps/recon/tracking
HPSSVTDAQMaps.java 1.8 -> 1.9
diff -u -r1.8 -r1.9
--- HPSSVTDAQMaps.java	17 May 2012 00:15:26 -0000	1.8
+++ HPSSVTDAQMaps.java	17 May 2012 18:24:10 -0000	1.9
@@ -1,4 +1,3 @@
-
 package org.lcsim.hps.recon.tracking;
 
 //--- java ---//
@@ -10,10 +9,10 @@
 
 //--- org.lcsim ---//
 import org.lcsim.conditions.ConditionsManager;
-import org.lcsim.conditions.ConditionsManager.ConditionsNotFoundException;
 import org.lcsim.conditions.ConditionsSet;
 import org.lcsim.detector.IDetectorElement;
 import org.lcsim.detector.identifier.IIdentifier;
+import org.lcsim.detector.identifier.IIdentifierHelper;
 import org.lcsim.detector.tracker.silicon.SiSensor;
 import org.lcsim.detector.tracker.silicon.SiTrackerIdentifierHelper;
 import org.lcsim.geometry.Detector;
@@ -26,139 +25,182 @@
  * Creates maps between SVT sensors to FPGA and Hybrid pairs and vice versa
  *
  * @author Omar Moreno
- * @version $Id: HPSSVTDAQMaps.java,v 1.8 2012/05/17 00:15:26 jeremy Exp $ 
+ * @version $Id: HPSSVTDAQMaps.java,v 1.9 2012/05/17 18:24:10 meeg Exp $
  */
 public class HPSSVTDAQMaps extends Driver {
-    
+
     String subdetectorName = "Tracker";
-    boolean debug = false; 
-    
+    boolean debug = false;
     ConditionsManager mgr = ConditionsManager.defaultInstance();
-    
     // Set of sensors
     public static Set<SiSensor> sensors = new HashSet<SiSensor>();
-    
     // Map from Sensor to Hybrid/FPGA pair
-    public static Map<SiSensor /* Sensor */, Pair<Integer /* Hybrid */, Integer /* FPGA */>>  sensorToDAQPair;
-    
+    public static Map<SiSensor /*
+             * Sensor
+             */, Pair<Integer /*
+             * Hybrid
+             */, Integer /*
+             * FPGA
+             */>> sensorToDAQPair;
     // Map from Hybrid/FPGA pair
-    public static Map<Pair<Integer /* Hybrid */, Integer /* FPGA */>, SiSensor /* Sensor */>  daqPairToSensor;
-    
+    public static Map<Pair<Integer /*
+             * Hybrid
+             */, Integer /*
+             * FPGA
+             */>, SiSensor /*
+             * Sensor
+             */> daqPairToSensor;
     // Map from SVT top layer to Hybrid/FPGA pair
-    private Map<Integer /* Layer # */, Pair<Integer /*Hybrid */, Integer /* FPGA */ >> topLayerToDAQ;
-
+    private Map<Integer /*
+             * Layer #
+             */, Pair<Integer /*
+             * Hybrid
+             */, Integer /*
+             * FPGA
+             */>> topLayerToDAQ;
     // Map from SVT bottom layer to Hybrid/FPGA pair
-    private Map<Integer /* Layer # */, Pair<Integer /*Hybrid */, Integer /* FPGA */ >> bottomLayerToDAQ;
-
+    private Map<Integer /*
+             * Layer #
+             */, Pair<Integer /*
+             * Hybrid
+             */, Integer /*
+             * FPGA
+             */>> bottomLayerToDAQ;
     // Map sensor to an SVT top layer
-    public static Map<SiSensor /* Sensor */, Integer /* Layer */> sensorToTopLayer;
-    
+    public static Map<SiSensor /*
+             * Sensor
+             */, Integer /*
+             * Layer
+             */> sensorToTopLayer;
     // Map sensor to an SVT bottom layer
-    public static Map<SiSensor /* Sensor */, Integer /* Layer */> sensorToBottomLayer;
-    
+    public static Map<SiSensor /*
+             * Sensor
+             */, Integer /*
+             * Layer
+             */> sensorToBottomLayer;
+    public static final SiSensor[][] sensorArray = new SiSensor[2][10];
+
     /**
-     *  Default Constructor. 
+     * Default Constructor.
      */
-    public HPSSVTDAQMaps()
-    {
-        sensorToDAQPair     = new HashMap<SiSensor, Pair<Integer, Integer>>(); 
-        daqPairToSensor     = new HashMap<Pair<Integer, Integer>, SiSensor>();
-        topLayerToDAQ       = new HashMap<Integer,  Pair<Integer, Integer>>();
-        bottomLayerToDAQ    = new HashMap<Integer,  Pair<Integer, Integer>>();
-        sensorToTopLayer    = new HashMap<SiSensor, Integer>();
-        sensorToBottomLayer = new HashMap<SiSensor, Integer>();      
-        
+    public HPSSVTDAQMaps() {
+        sensorToDAQPair = new HashMap<SiSensor, Pair<Integer, Integer>>();
+        daqPairToSensor = new HashMap<Pair<Integer, Integer>, SiSensor>();
+        topLayerToDAQ = new HashMap<Integer, Pair<Integer, Integer>>();
+        bottomLayerToDAQ = new HashMap<Integer, Pair<Integer, Integer>>();
+        sensorToTopLayer = new HashMap<SiSensor, Integer>();
+        sensorToBottomLayer = new HashMap<SiSensor, Integer>();
+
     }
-    
+
     /**
-     * 
-     * @param detector 
+     *
+     * @param detector
      */
     @Override
     public void detectorChanged(Detector detector) {
         // Call the sub-Driver's detectorChanged methods.
-        super.detectorChanged(detector);
-        
-        if(subdetectorName == null){
+//        super.detectorChanged(detector);
+
+        if (subdetectorName == null) {
             throw new RuntimeException("The subdetector name was not set!");
         }
-        
+
         // Get the HPS detector conditions
         // Removed this because it causes detector to be set twice when running jobs. --JM
         //try {
-		//	mgr.setDetector(detector.getDetectorName(), 0);
-		//} catch (ConditionsNotFoundException e) {
-		//	System.out.println("The conditions for " + detector.getDetectorName() + " were not found!");
-		//}
-        
+        //	mgr.setDetector(detector.getDetectorName(), 0);
+        //} catch (ConditionsNotFoundException e) {
+        //	System.out.println("The conditions for " + detector.getDetectorName() + " were not found!");
+        //}
+
         // Get the top SVT DAQ Map 
         ConditionsSet svtDAQMap = mgr.getConditions("daqmap/SVTDAQMapTop");
-        
+
         String[] daqPair;
-        
+
         // Loop over the top layers and fill the DAQ map
-        for(Object topLayer : svtDAQMap.keySet()){
-        	daqPair = svtDAQMap.getString(topLayer.toString()).split(" ");
-        	if(debug) System.out.println("Layer: " + topLayer.toString() + " Hybrid: " + daqPair[0] + " FPGA: " + daqPair[1]);
-        	topLayerToDAQ.put(Integer.parseInt(topLayer.toString()), new Pair<Integer, Integer>( Integer.parseInt(daqPair[0]), Integer.parseInt(daqPair[1])));
-        	
+        for (Object topLayer : svtDAQMap.keySet()) {
+            daqPair = svtDAQMap.getString(topLayer.toString()).split(" ");
+            if (debug) {
+                System.out.println("Layer: " + topLayer.toString() + " Hybrid: " + daqPair[0] + " FPGA: " + daqPair[1]);
+            }
+            topLayerToDAQ.put(Integer.parseInt(topLayer.toString()), new Pair<Integer, Integer>(Integer.parseInt(daqPair[0]), Integer.parseInt(daqPair[1])));
+
         }
-        
+
         // Get the bottom SVT DAQ Map
         svtDAQMap = mgr.getConditions("daqmap/SVTDAQMapBottom");
-        
+
         // Loop over the bottom layers and fill the DAQ map
-        for(Object bottomLayer : svtDAQMap.keySet()){
-        	daqPair = svtDAQMap.getString(bottomLayer.toString()).split(" ");	
-        	if(debug) System.out.println("Layer: " + bottomLayer.toString() + " Hybrid: " + daqPair[0] + " FPGA: " + daqPair[1]);
-           	bottomLayerToDAQ.put(Integer.parseInt(bottomLayer.toString()), new Pair<Integer, Integer>( Integer.parseInt(daqPair[0]), Integer.parseInt(daqPair[1])));
+        for (Object bottomLayer : svtDAQMap.keySet()) {
+            daqPair = svtDAQMap.getString(bottomLayer.toString()).split(" ");
+            if (debug) {
+                System.out.println("Layer: " + bottomLayer.toString() + " Hybrid: " + daqPair[0] + " FPGA: " + daqPair[1]);
+            }
+            bottomLayerToDAQ.put(Integer.parseInt(bottomLayer.toString()), new Pair<Integer, Integer>(Integer.parseInt(daqPair[0]), Integer.parseInt(daqPair[1])));
         }
-        
+
         // Get the SVT
-        IDetectorElement detectorElement 
-           = detector.getDetectorElement().findDetectorElement(subdetectorName);
-       
+        IDetectorElement detectorElement = detector.getDetectorElement().findDetectorElement(subdetectorName);
+
         // Get all SVT sensors
         sensors.addAll(detectorElement.findDescendants(SiSensor.class));
 
+        for (SiSensor sensor : sensors) {
+            IIdentifierHelper helper = sensor.getIdentifierHelper();
+            IIdentifier id = sensor.getIdentifier();
+
+            int layer = helper.getValue(id, "layer"); // 1-10; axial layers are odd layers; stereo layers are even
+            int module = helper.getValue(id, "module"); // 0-1; module number is top or bottom
+
+            sensorArray[module][layer - 1] = sensor;
+        }
+
+        for (int module = 0; module < 2; module++) {
+            for (int layer = 0; layer < 10; layer++) {
+                if (sensorArray[module][layer] == null) {
+                    throw new RuntimeException("Couldn't find sensor with module " + module + ", layer " + layer + 1);
+                }
+            }
+        }
+
+
         // Map sensors to hybrid and FPGA
         createDAQMaps(sensors);
-    
+
     }
-    
-    
+
     /**
-     * Create maps which relate a DAQ pair (hybrid, FPGA) to a sensor
-     * and vice versa
-     * 
-     * @param sensors
-     *      A set of all sensors in the detector
+     * Create maps which relate a DAQ pair (hybrid, FPGA) to a sensor and vice
+     * versa
+     *
+     * @param sensors A set of all sensors in the detector
      */
-    private void createDAQMaps(Set<SiSensor> sensors)
-    {
-        
+    private void createDAQMaps(Set<SiSensor> sensors) {
+
         IIdentifier sensorIdent;
         SiTrackerIdentifierHelper sensorHelper;
         Pair<Integer, Integer> daqPair;
-        
-        for(SiSensor sensor : sensors){
-        
+
+        for (SiSensor sensor : sensors) {
+
             // Get the sensor identifier
             sensorIdent = sensor.getIdentifier();
-            
+
             // Get the sensor identifier helper
             sensorHelper = (SiTrackerIdentifierHelper) sensor.getIdentifierHelper();
-            
+
             // Get the DAQ pair
             int layerNumber = sensorHelper.getLayerValue(sensorIdent);
-            if(sensorHelper.getModuleValue(sensorIdent) == 0){
+            if (sensorHelper.getModuleValue(sensorIdent) == 0) {
                 daqPair = topLayerToDAQ.get(layerNumber);
                 sensorToTopLayer.put(sensor, layerNumber);
             } else {
-            	daqPair = bottomLayerToDAQ.get(layerNumber);
-            	sensorToBottomLayer.put(sensor, layerNumber);
+                daqPair = bottomLayerToDAQ.get(layerNumber);
+                sensorToBottomLayer.put(sensor, layerNumber);
             }
-        
+
             sensorToDAQPair.put(sensor, daqPair);
             daqPairToSensor.put(daqPair, sensor);
         }

hps-java/src/main/java/org/lcsim/hps/recon/tracking
HPSRawTrackerHitFitterDriver.java 1.11 -> 1.12
diff -u -r1.11 -r1.12
--- HPSRawTrackerHitFitterDriver.java	13 May 2012 21:40:25 -0000	1.11
+++ HPSRawTrackerHitFitterDriver.java	17 May 2012 18:24:10 -0000	1.12
@@ -75,9 +75,6 @@
             if (debug) {
                 System.out.println(fit);
             }
-            if (fit.getT0() < 0.0) {
-                continue;
-            }
             fits.add(fit);
             HPSFittedRawTrackerHit hth = new HPSFittedRawTrackerHit(hit, fit);
             hits.add(hth);

hps-java/src/main/java/org/lcsim/hps/recon/tracking
HPSNearestNeighborRMS.java 1.5 -> 1.6
diff -u -r1.5 -r1.6
--- HPSNearestNeighborRMS.java	1 May 2012 17:59:22 -0000	1.5
+++ HPSNearestNeighborRMS.java	17 May 2012 18:24:10 -0000	1.6
@@ -17,8 +17,9 @@
     private double _seed_threshold;
     private double _neighbor_threshold;
     private double _cluster_threshold; 
-    private double _meanTime=48;
+    private double _meanTime=24;
     private double _timeWindow = 48;
+    private double _maxChisq = 10.0;
 
     /**
      * Instantiate NearestNeighborRMS with specified thresholds.
@@ -167,7 +168,7 @@
             clusterable.put(channel_number, signal/noiseRMS >= _neighbor_threshold);
 
             //  Add this hit to the list of seeds if it is above the seed threshold
-            if (signal/noiseRMS >= _seed_threshold&&passTimingCut(base_hit)) {
+            if (signal/noiseRMS >= _seed_threshold&&passTimingCut(base_hit) && passChisqCut(base_hit)) {
                 cluster_seeds.add(channel_number);
             }
         }
@@ -243,12 +244,16 @@
         
         boolean pass=false;
         double time=hit.getT0();
-        if((time-_meanTime)<_timeWindow)
+        if(Math.abs(time-_meanTime)<_timeWindow)
             pass = true;
         
         return pass;
     }
     
+    private boolean passChisqCut(HPSFittedRawTrackerHit hit){
+        return hit.getShapeFitParameters().getChiSq() < _maxChisq;
+    }
+    
     public int getNeighborCell(int cell, int ncells_0, int ncells_1)
     {
         int neighbor_cell = cell + ncells_0;

hps-java/src/main/java/org/lcsim/hps/recon/tracking
HPSSVTCalibrationConstants.java 1.9 -> 1.10
diff -u -r1.9 -r1.10
--- HPSSVTCalibrationConstants.java	13 May 2012 21:38:20 -0000	1.9
+++ HPSSVTCalibrationConstants.java	17 May 2012 18:24:10 -0000	1.10
@@ -185,7 +185,7 @@
         } else {
 //            System.out.println("Couldn't get Tp for sensor " + sensor.getName() + ", channel " + channel);
 //            constants.setTp(35.0);
-            constants.setTp(45.0);
+            constants.setTp(53.0);
         }
 
         return constants;

hps-java/src/main/java/org/lcsim/hps/monitoring/ecal
EcalPedestalPlots.java 1.8 -> 1.9
diff -u -r1.8 -r1.9
--- EcalPedestalPlots.java	16 May 2012 16:05:59 -0000	1.8
+++ EcalPedestalPlots.java	17 May 2012 18:24:11 -0000	1.9
@@ -173,9 +173,7 @@
     }
 
     public void endOfData() {
-        if (plotter != null) {
-            plotter.hide();
-        }
+        plotterFrame.dispose();
         if (calWindow > 0) {
             for (int crate = 1; crate < 3; crate++) {
                 for (short slot = 0; slot < 20; slot++) {

hps-java/src/main/java/org/lcsim/hps/monitoring/ecal
EcalMonitoringPlots.java 1.7 -> 1.8
diff -u -r1.7 -r1.8
--- EcalMonitoringPlots.java	16 May 2012 16:05:59 -0000	1.7
+++ EcalMonitoringPlots.java	17 May 2012 18:24:11 -0000	1.8
@@ -103,12 +103,11 @@
         }
     }
 
-//    public void endOfData() {
-//        if (plotter != null) {
-//            plotter.hide();
-//            plotter.destroyRegions();
-//        }
-//    }
+    public void endOfData() {
+        plotter.hide();
+        plotter.destroyRegions();
+    }
+
     @Override
     public void reset() {
         if (hitCountFillPlot != null) {
@@ -117,6 +116,12 @@
         if (hitCountDrawPlot != null) {
             hitCountDrawPlot.reset();
         }
+        if (clusterCountFillPlot != null) {
+            clusterCountFillPlot.reset();
+        }
+        if (clusterCountDrawPlot != null) {
+            clusterCountDrawPlot.reset();
+        }
     }
 
     @Override

hps-java/src/main/java/org/lcsim/hps/evio
TestRunEvioToLcio.java 1.10 -> 1.11
diff -u -r1.10 -r1.11
--- TestRunEvioToLcio.java	12 May 2012 23:09:05 -0000	1.10
+++ TestRunEvioToLcio.java	17 May 2012 18:24:11 -0000	1.11
@@ -11,6 +11,8 @@
 import org.apache.commons.cli.PosixParser;
 import org.jlab.coda.jevio.EvioEvent;
 import org.jlab.coda.jevio.EvioReader;
+import org.lcsim.conditions.ConditionsManager;
+import org.lcsim.conditions.ConditionsManager.ConditionsNotFoundException;
 import org.lcsim.event.EventHeader;
 import org.lcsim.hps.monitoring.HPSCalibrationListener;
 import org.lcsim.job.JobControlManager;
@@ -138,6 +140,12 @@
         jobManager.setup(steeringStream);
         jobManager.configure();
 
+        try { //TODO: figure out whether this is the right way to do this
+            ConditionsManager.defaultInstance().setDetector(detectorName, 0);
+        } catch (ConditionsNotFoundException e) {
+            throw new RuntimeException(e);
+        }
+
         // LCSim event builder.
         LCSimEventBuilder eventBuilder = new LCSimTestRunEventBuilder();
         eventBuilder.setDetectorName(detectorName);
@@ -161,6 +169,13 @@
             // write events to disk.
             fileLoop:
             while (maxEvents == 0 || nEvents < maxEvents) {
+                if (sleepTime > 0) {
+                    try {
+                        Thread.sleep(sleepTime);
+                    } catch (InterruptedException e) {
+                        throw new RuntimeException(e);
+                    }
+                }
                 EvioEvent evioEvent = null;
                 try {
                     eventLoop:
@@ -187,8 +202,7 @@
                         int seconds = data[0];
                         int nevents = data[2];
                         calibListener.endRun(seconds, nevents);
-                    } else 
-                        if (eventBuilder.isPhysicsEvent(evioEvent)) {
+                    } else if (eventBuilder.isPhysicsEvent(evioEvent)) {
                         EventHeader lcioEvent = eventBuilder.makeLCSimEvent(evioEvent);
                         jobManager.processEvent(lcioEvent);
                         if (writer != null) {
@@ -202,18 +216,17 @@
                     e.printStackTrace();
                     continue;
                 }
-                if (sleepTime > 0) {
-                    try {
-                        Thread.sleep(sleepTime);
-                    } catch (InterruptedException e) {
-                        throw new RuntimeException(e);
-                    }
-                }
                 nEvents++;
             }
             reader.close();
         }
-        System.out.println("Exiting");
+        System.out.println("No more data");
+
+        try { //TODO: this is kind of dumb
+            Thread.sleep(1000000000);
+        } catch (InterruptedException e) {
+            throw new RuntimeException(e);
+        }
 
         jobManager.finish();
         if (writer != null) {
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