Commit in hps-java/src/main/java/org/lcsim/hps/analysis/ecal on MAIN
HPSEcalTriggerPlotsDriver.java+120added 1.1
add trigger plots driver

hps-java/src/main/java/org/lcsim/hps/analysis/ecal
HPSEcalTriggerPlotsDriver.java added at 1.1
diff -N HPSEcalTriggerPlotsDriver.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ HPSEcalTriggerPlotsDriver.java	21 Oct 2011 19:56:56 -0000	1.1
@@ -0,0 +1,120 @@
+package org.lcsim.hps.analysis.ecal;
+
+import hep.aida.IHistogram2D;
+
+import java.util.List;
+
+import org.lcsim.detector.identifier.IIdentifier;
+import org.lcsim.detector.identifier.IIdentifierHelper;
+import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.EventHeader;
+import org.lcsim.geometry.IDDecoder;
+import org.lcsim.hps.recon.ecal.HPSEcalCluster;
+import org.lcsim.hps.recon.ecal.HPSRawCalorimeterHit;
+import org.lcsim.hps.util.ClockSingleton;
+import org.lcsim.util.Driver;
+import org.lcsim.util.aida.AIDA;
+
+/**
+ * Diagnostic plots for HPS ECal.
+ *
+ * @author Sho Uemura <[log in to unmask]>
+ * @version $Id: HPSEcalTriggerPlotsDriver.java,v 1.1 2011/10/21 19:56:56 meeg Exp $
+ */
+public class HPSEcalTriggerPlotsDriver extends Driver {
+
+    String ecalCollectionName = "EcalHits";
+    String clusterCollectionName = "EcalClusters";
+    AIDA aida = AIDA.defaultInstance();
+    IHistogram2D hitXYPlot;
+    IHistogram2D clusterHitXYPlot;
+    IHistogram2D seedHitXYPlot;
+    IHistogram2D triggerClusterHitXYPlot;
+    IHistogram2D triggerSeedHitXYPlot;
+    int numTriggers = 0;
+    IDDecoder dec = null;
+
+    public void setEcalCollectionName(String ecalCollectionName) {
+        this.ecalCollectionName = ecalCollectionName;
+    }
+
+    public void setClusterCollectionName(String clusterCollectionName) {
+        this.clusterCollectionName = clusterCollectionName;
+    }
+
+    public void startOfData() {
+        hitXYPlot = aida.histogram2D(
+                clusterCollectionName + " : Hits",
+                47, -23.5, 23.5, 11, -5.5, 5.5);
+        clusterHitXYPlot = aida.histogram2D(
+                clusterCollectionName + " : Crystals in clusters",
+                47, -23.5, 23.5, 11, -5.5, 5.5);
+        seedHitXYPlot = aida.histogram2D(
+                clusterCollectionName + " : Seed hits",
+                47, -23.5, 23.5, 11, -5.5, 5.5);
+        triggerClusterHitXYPlot = aida.histogram2D(
+                clusterCollectionName + " : Crystals in clusters, with trigger",
+                47, -23.5, 23.5, 11, -5.5, 5.5);
+        triggerSeedHitXYPlot = aida.histogram2D(
+                clusterCollectionName + " : Seed hits, with trigger",
+                47, -23.5, 23.5, 11, -5.5, 5.5);
+    }
+
+    public void process(EventHeader event) {
+        List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, clusterCollectionName);
+        if (clusters == null)
+            throw new RuntimeException("Missing cluster collection!");
+
+        List<CalorimeterHit> hits = event.get(CalorimeterHit.class, ecalCollectionName);
+        if (hits == null)
+            throw new RuntimeException("Missing hit collection!");
+
+        // Get ID helper.
+        IIdentifierHelper helper =
+                event.getMetaData(hits).getIDDecoder().getSubdetector().getDetectorElement().getIdentifierHelper();
+
+        for (CalorimeterHit hit : hits) {
+            IIdentifier id = hit.getIdentifier();
+            int ix = helper.unpack(id).getValue(helper.getFieldIndex("ix"));
+            int iy = helper.unpack(id).getValue(helper.getFieldIndex("iy"));
+            hitXYPlot.fill(ix, iy);
+        }
+
+        for (HPSEcalCluster clus : clusters) {
+            HPSRawCalorimeterHit seedHit = (HPSRawCalorimeterHit) clus.getSeedHit();
+            IIdentifier id = seedHit.getIdentifier();
+            int ix = helper.unpack(id).getValue(helper.getFieldIndex("ix"));
+            int iy = helper.unpack(id).getValue(helper.getFieldIndex("iy"));
+//                dec = seedHit.getIDDecoder();
+//                dec.setID(seedHit.getCellID());
+            seedHitXYPlot.fill(ix, iy);
+            for (CalorimeterHit hit : clus.getCalorimeterHits()) {
+                id = hit.getIdentifier();
+                ix = helper.unpack(id).getValue(helper.getFieldIndex("ix"));
+                iy = helper.unpack(id).getValue(helper.getFieldIndex("iy"));
+//                    dec = hit.getIDDecoder();
+//                    dec.setID(hit.getCellID());
+                clusterHitXYPlot.fill(ix, iy);
+            }
+        }
+
+        if (ClockSingleton.triggered())
+            for (HPSEcalCluster clus : clusters) {
+                HPSRawCalorimeterHit seedHit = (HPSRawCalorimeterHit) clus.getSeedHit();
+                IIdentifier id = seedHit.getIdentifier();
+                int ix = helper.unpack(id).getValue(helper.getFieldIndex("ix"));
+                int iy = helper.unpack(id).getValue(helper.getFieldIndex("iy"));
+//                dec = seedHit.getIDDecoder();
+//                dec.setID(seedHit.getCellID());
+                triggerSeedHitXYPlot.fill(ix, iy);
+                for (CalorimeterHit hit : clus.getCalorimeterHits()) {
+                    id = hit.getIdentifier();
+                    ix = helper.unpack(id).getValue(helper.getFieldIndex("ix"));
+                    iy = helper.unpack(id).getValue(helper.getFieldIndex("iy"));
+//                    dec = hit.getIDDecoder();
+//                    dec.setID(hit.getCellID());
+                    triggerClusterHitXYPlot.fill(ix, iy);
+                }
+            }
+    }
+}
CVSspam 0.2.8