Commit in hps-java/src/main/java/org/lcsim/hps/recon/ecal on MAIN
TestRunRateAnalysis.java+131added 1.1
trigger and Edep/E studies for PAC

hps-java/src/main/java/org/lcsim/hps/recon/ecal
TestRunRateAnalysis.java added at 1.1
diff -N TestRunRateAnalysis.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ TestRunRateAnalysis.java	21 Jun 2012 18:54:55 -0000	1.1
@@ -0,0 +1,131 @@
+package org.lcsim.hps.recon.ecal;
+
+import hep.aida.IHistogram2D;
+import java.util.List;
+import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.MCParticle;
+import org.lcsim.event.util.ParticleTypeClassifier;
+import org.lcsim.util.Driver;
+import org.lcsim.util.aida.AIDA;
+
+/**
+ * Reads clusters and makes trigger decision using opposite quadrant criterion.
+ * Prints triggers to file if file path specified.
+ *
+ * @author Sho Uemura <[log in to unmask]>
+ * @version $Id: TestRunRateAnalysis.java,v 1.1 2012/06/21 18:54:55 meeg Exp $
+ */
+public class TestRunRateAnalysis extends Driver {
+
+    AIDA aida = AIDA.defaultInstance();
+    IHistogram2D eClusterVsP, photonEClusterVsP, electronEClusterVsP, positronEClusterVsP;
+    IHistogram2D eVsP, photonEVsP, electronEVsP, positronEVsP;
+    private String clusterCollectionName;
+    private String hitCollectionName = "EcalHits";
+    int nTriggers;
+    private double clusterEnergyLow = 10;    //
+    int deadtimelessTriggerCount;
+    int[] triggersY = new int[5];
+
+    public TestRunRateAnalysis() {
+    }
+
+    @Override
+    public void startOfData() {
+        deadtimelessTriggerCount = 0;
+
+        eClusterVsP = aida.histogram2D("All Cluster E vs. Pz", 100, 0.0, 2000.0, 100, 0.0, 2000.0);
+        photonEClusterVsP = aida.histogram2D("Photon Cluster E vs. Pz", 100, 0.0, 2000.0, 100, 0.0, 2000.0);
+        electronEClusterVsP = aida.histogram2D("Electron Cluster E vs. Pz", 100, 0.0, 2000.0, 100, 0.0, 2000.0);
+        positronEClusterVsP = aida.histogram2D("Positron Cluster E vs. Pz", 100, 0.0, 2000.0, 100, 0.0, 2000.0);
+
+        eVsP = aida.histogram2D("All E vs. Pz", 100, 0.0, 2000.0, 100, 0.0, 2000.0);
+        photonEVsP = aida.histogram2D("Photon E vs. Pz", 100, 0.0, 2000.0, 100, 0.0, 2000.0);
+        electronEVsP = aida.histogram2D("Electron E vs. Pz", 100, 0.0, 2000.0, 100, 0.0, 2000.0);
+        positronEVsP = aida.histogram2D("Positron E vs. Pz", 100, 0.0, 2000.0, 100, 0.0, 2000.0);
+    }
+
+    public void setClusterEnergyLow(double clusterEnergyLow) {
+        this.clusterEnergyLow = clusterEnergyLow;
+    }
+
+    public void setClusterCollectionName(String clusterCollectionName) {
+        this.clusterCollectionName = clusterCollectionName;
+    }
+
+    public void process(EventHeader event) {
+        //System.out.println(this.getClass().getCanonicalName() + " - process");
+
+        // MCParticles
+        List<MCParticle> mcparticles = event.get(MCParticle.class).get(0);
+
+//        if (mcparticles.size() != 1) {
+//            throw new RuntimeException("expected exactly 1 MCParticle");
+//        }
+        if (mcparticles.isEmpty()) {
+            return;
+        }
+//        MCParticle particle = mcparticles.get(0);
+
+        // Get the list of raw ECal hits.
+        List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, clusterCollectionName);
+        if (clusters == null) {
+            throw new RuntimeException("Event is missing ECal clusters collection!");
+        }
+
+        boolean trigger = false;
+
+        for (HPSEcalCluster cluster : clusters) {
+            if (cluster.getEnergy() > clusterEnergyLow && cluster.getSeedHit().getIdentifierFieldValue("ix") < 0) {
+//            if (cluster.getEnergy() > clusterEnergyLow && cluster.getSeedHit().getIdentifierFieldValue("iy")>0 && cluster.getSeedHit().getIdentifierFieldValue("ix")<0) {
+                triggersY[Math.abs(cluster.getSeedHit().getIdentifierFieldValue("iy")) - 1]++;
+                if (Math.abs(cluster.getSeedHit().getIdentifierFieldValue("iy")) > 1) {
+                    trigger = true;
+                }
+            }
+            if (cluster.getSeedHit().getIdentifierFieldValue("ix") < 0 && Math.abs(cluster.getSeedHit().getIdentifierFieldValue("iy")) > 1) {
+                for (MCParticle particle : mcparticles) {
+                    if (ParticleTypeClassifier.isElectron(particle.getPDGID())) {
+                        electronEClusterVsP.fill(1000.0 * particle.getPZ(), 1000.0 * cluster.getEnergy());
+                    } else if (ParticleTypeClassifier.isPositron(particle.getPDGID())) {
+                        positronEClusterVsP.fill(1000.0 * particle.getPZ(), 1000.0 * cluster.getEnergy());
+                    } else if (ParticleTypeClassifier.isPhoton(particle.getPDGID())) {
+                        photonEClusterVsP.fill(1000.0 * particle.getPZ(), 1000.0 * cluster.getEnergy());
+                    }
+                    eClusterVsP.fill(1000.0 * particle.getPZ(), 1000.0 * cluster.getEnergy());
+                }
+            }
+        }
+        if (trigger) {
+            deadtimelessTriggerCount++;
+        }
+
+        List<CalorimeterHit> hits = event.get(CalorimeterHit.class, hitCollectionName);
+        if (hits == null) {
+            throw new RuntimeException("Event is missing ECal hits collection!");
+        }
+        double totalE = 0;
+        for (CalorimeterHit hit : hits) {
+            totalE += hit.getRawEnergy();
+        }
+
+        for (MCParticle particle : mcparticles) {
+            if (ParticleTypeClassifier.isElectron(particle.getPDGID())) {
+                electronEVsP.fill(1000.0 * particle.getPZ(), 1000.0 * totalE);
+            } else if (ParticleTypeClassifier.isPositron(particle.getPDGID())) {
+                positronEVsP.fill(1000.0 * particle.getPZ(), 1000.0 * totalE);
+            } else if (ParticleTypeClassifier.isPhoton(particle.getPDGID())) {
+                photonEVsP.fill(1000.0 * particle.getPZ(), 1000.0 * totalE);
+            }
+            eVsP.fill(1000.0 * particle.getPZ(), 1000.0 * totalE);
+        }
+    }
+
+    @Override
+    public void endOfData() {
+        System.out.printf("Trigger count without dead time: %d\n", deadtimelessTriggerCount);
+        System.out.format("Triggers vs. Y: %d\t%d\t%d\t%d\t%d, total %d\n", triggersY[0], triggersY[1], triggersY[2], triggersY[3], triggersY[4], deadtimelessTriggerCount);
+        super.endOfData();
+    }
+}
\ No newline at end of file
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