Commit in lcsim-contrib/src/main/java/org/lcsim/contrib/jeremym on MAIN
HitTimeAnalDriver.java+97added 1.1
simple CalHit time analysis

lcsim-contrib/src/main/java/org/lcsim/contrib/jeremym
HitTimeAnalDriver.java added at 1.1
diff -N HitTimeAnalDriver.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ HitTimeAnalDriver.java	8 Aug 2011 22:32:26 -0000	1.1
@@ -0,0 +1,97 @@
+package org.lcsim.contrib.jeremym;
+
+import hep.aida.ICloud1D;
+import hep.aida.IHistogram1D;
+
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.SimCalorimeterHit;
+import org.lcsim.util.Driver;
+import org.lcsim.util.aida.AIDA;
+
+public class HitTimeAnalDriver extends Driver
+{
+    String calColl = "HcalBarrelHits";
+    AIDA aida = AIDA.defaultInstance();
+    
+    boolean singleHitPlots = true;
+    
+    ICloud1D timePlot;
+    ICloud1D contribCountPlot;
+    ICloud1D contribTimePlot;
+    IHistogram1D promptContribTimePlot;
+   
+    public void setCalCollectionName(String calColl)
+    {
+        this.calColl = calColl;
+    }
+    
+    public void setSingleHitPlots(boolean singleHitPlots)
+    {
+        this.singleHitPlots = singleHitPlots;
+    }
+        
+    public void startOfData()
+    {
+        timePlot = aida.cloud1D(calColl + " : Time");
+        contribCountPlot = aida.cloud1D(calColl + " : Contrib Count");
+        contribTimePlot = aida.cloud1D(calColl + " : Time Contribs");
+        promptContribTimePlot  = aida.histogram1D(calColl + " : Time Contribs < 200 ns", 600, 0., 200.);
+    }
+        
+    static class TimeComparator implements Comparator<CalorimeterHit>
+    {
+        public int compare(CalorimeterHit hit1, CalorimeterHit hit2)
+        {
+            double t1 = hit1.getTime();
+            double t2 = hit2.getTime();
+            if (t1 < t2)
+            {
+                return -1;
+            }
+            else if (t1 == t2)
+            {
+                return 0;
+            }
+            else
+            {
+                return 1;
+            }
+        }
+    }
+    
+    TimeComparator tcompare = new TimeComparator();
+        
+    public void process(EventHeader event)
+    {
+        List<CalorimeterHit> hits = event.get(CalorimeterHit.class, calColl);        
+        Collections.sort(hits, tcompare);
+        for (CalorimeterHit hit : hits)
+        {
+            timePlot.fill(hit.getTime());
+        }
+        
+        for (int i=0, n=hits.size(); i<n; i++)
+        {
+            SimCalorimeterHit hit = (SimCalorimeterHit)hits.get(i);
+            int contribCount = hit.getMCParticleCount();
+            contribCountPlot.fill(contribCount);
+            for (int j=0; j<contribCount; j++)
+            {
+                promptContribTimePlot.fill(hit.getContributedTime(j)); // Hit contribs < 200 ns.
+                contribTimePlot.fill(hit.getContributedTime(j));
+                
+                // Single hit plots.
+                if (singleHitPlots)
+                {
+                    aida.cloud1D(calColl + " : Hit " + i + " Contrib Times ").fill(hit.getContributedTime(j));                    
+                    aida.cloud1D(calColl + " : Hit " + i + " Contrib Times with PDG " + hit.getPDG(j)).fill(hit.getContributedTime(j));
+                }
+            }
+        }
+    }
+}
CVSspam 0.2.8