Print

Print


Commit in java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/exec on MAIN
EventDisplayDriver.java+81added 502
Add a simple Driver for running the ECAL Event Display only.

java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/exec
EventDisplayDriver.java added at 502
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/exec/EventDisplayDriver.java	                        (rev 0)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/exec/EventDisplayDriver.java	2014-04-17 21:23:14 UTC (rev 502)
@@ -0,0 +1,81 @@
+package org.hps.monitoring.ecal.exec;
+
+import java.util.List;
+
+import org.hps.monitoring.ecal.event.Cluster;
+import org.hps.monitoring.ecal.event.EcalHit;
+import org.hps.monitoring.ecal.ui.PEventViewer;
+import org.hps.recon.ecal.HPSEcalCluster;
+import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.EventHeader;
+import org.lcsim.geometry.Detector;
+import org.lcsim.util.Driver;
+
+/**
+ * This is a <code>Driver</code> for running the ECAL Event Display.
+ * @author Jeremy McCormick <[log in to unmask]>
+ */
+public class EventDisplayDriver extends Driver {
+
+    String inputCollection = "EcalCalHits";
+    String clusterCollection = "EcalClusters";
+    int eventRefreshRate = 1;
+    int eventn = 0;
+    private PEventViewer viewer;
+
+    public EventDisplayDriver() {
+    }
+
+    public void setInputCollection(String inputCollection) {
+        this.inputCollection = inputCollection;
+    }
+
+    public void setEventRefreshRate(int eventRefreshRate) {
+        this.eventRefreshRate = eventRefreshRate;
+    }
+
+    @Override
+    public void detectorChanged(Detector detector) {
+        viewer = new PEventViewer();
+        viewer.setVisible(true);
+    }
+
+    @Override
+    public void endOfData() {
+        viewer.setVisible(false);
+    }
+
+    @Override
+    public void process(EventHeader event) {
+
+        if (++eventn % eventRefreshRate != 0) {
+            return;
+        }
+
+        viewer.resetDisplay();
+        viewer.updateDisplay();
+
+        Cluster eventDisplayCluster;
+
+        if (event.hasCollection(CalorimeterHit.class, inputCollection)) {
+            List<CalorimeterHit> hits = event.get(CalorimeterHit.class, inputCollection);
+            for (CalorimeterHit hit : hits) {
+                viewer.addHit(new EcalHit(hit.getIdentifierFieldValue("ix"), hit.getIdentifierFieldValue("iy"), hit.getRawEnergy()));
+            }
+        }
+        if (event.hasCollection(HPSEcalCluster.class, clusterCollection)) {
+            List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, clusterCollection);
+            for (HPSEcalCluster cluster : clusters) {
+                CalorimeterHit seedHit = cluster.getSeedHit();
+                eventDisplayCluster = new Cluster(seedHit.getIdentifierFieldValue("ix"), seedHit.getIdentifierFieldValue("iy"), cluster.getEnergy());
+                for (CalorimeterHit hit : cluster.getCalorimeterHits()) {
+                    if (hit.getRawEnergy() != 0)
+                        eventDisplayCluster.addComponentHit(hit.getIdentifierFieldValue("ix"), hit.getIdentifierFieldValue("iy"));
+                }
+                viewer.addCluster(eventDisplayCluster);
+            }
+        }
+
+        viewer.updateDisplay();
+    }
+}
SVNspam 0.1