Print

Print


Author: [log in to unmask]
Date: Tue May 19 15:44:41 2015
New Revision: 3003

Log:
make plots

Modified:
    java/trunk/users/src/main/java/org/hps/users/meeg/SVTSmallHitsDriver.java

Modified: java/trunk/users/src/main/java/org/hps/users/meeg/SVTSmallHitsDriver.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/meeg/SVTSmallHitsDriver.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/meeg/SVTSmallHitsDriver.java	Tue May 19 15:44:41 2015
@@ -1,5 +1,9 @@
 package org.hps.users.meeg;
 
+import hep.aida.IAnalysisFactory;
+import hep.aida.IHistogram1D;
+import hep.aida.IHistogram2D;
+import hep.aida.IPlotterFactory;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -8,7 +12,9 @@
 import org.lcsim.detector.tracker.silicon.HpsSiSensor;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.RawTrackerHit;
+import org.lcsim.geometry.Detector;
 import org.lcsim.util.Driver;
+import org.lcsim.util.aida.AIDA;
 
 /**
  *
@@ -16,9 +22,12 @@
  */
 public class SVTSmallHitsDriver extends Driver {
 
+    private AIDA aida = AIDA.defaultInstance();
+
     private String rawTrackerHitCollectionName = "SVTRawTrackerHits";
     private long previousTimestamp = 0;
     private boolean printADCValues = false;
+    private boolean printEvents = false;
     Map<HpsSiSensor, Set<Integer>> hitMap;
     double dtSumWith = 0;
     double dtSumWithout = 0;
@@ -27,12 +36,32 @@
     int nWith = 0;
     int nWithout = 0;
 
+    IHistogram1D trigDt, trigDtWithSmallHits, smallHitFracDt, smallHitCount1D;
+    IHistogram2D smallHitsDt2D;
+
     public void setPrintADCValues(boolean printADCValues) {
         this.printADCValues = printADCValues;
     }
 
+    public void setPrintEvents(boolean printEvents) {
+        this.printEvents = printEvents;
+    }
+
+    protected void detectorChanged(Detector detector) {
+        aida.tree().cd("/");
+
+        trigDt = aida.histogram1D("trigger dt", 1000, 0, 5e5);
+        smallHitCount1D = aida.histogram1D("small hit count", 100, 0, 100);
+        trigDtWithSmallHits = aida.histogram1D("trigger dt, events with small hits", 1000, 0, 5e5);
+        smallHitsDt2D = aida.histogram2D("small hit count vs. trigger dt", 1000, 0, 5e5, 100, 0, 100);
+        smallHitFracDt = aida.histogram1D("fraction of events with small hits vs. dt", 1000, 0, 5e5);
+
+    }
+
     @Override
     protected void process(EventHeader event) {
+        int dt = (int) (event.getTimeStamp() - previousTimestamp);
+
         if (event.hasCollection(RawTrackerHit.class, rawTrackerHitCollectionName)) {
             // Get RawTrackerHit collection from event.
             List<RawTrackerHit> rawTrackerHits = event.get(RawTrackerHit.class, rawTrackerHitCollectionName);
@@ -68,24 +97,31 @@
                     smallHitCounts.put(sensor.getName(), count + 1);
                 }
             }
+            trigDt.fill(dt);
+            smallHitCount1D.fill(smallHitCount);
+            smallHitsDt2D.fill(dt, smallHitCount);
             if (smallHitCount > 3) {
-                dtSumWith += event.getTimeStamp() - previousTimestamp;
+                trigDtWithSmallHits.fill(dt);
+                dtSumWith += dt;
                 nHitsWith += smallHitCount;
                 nWith++;
             } else {
-                dtSumWithout += event.getTimeStamp() - previousTimestamp;
+                dtSumWithout += dt;
                 nHitsWithout += smallHitCount;
                 nWithout++;
             }
-            System.out.format("%f ns with small hits (%d events with %f small hits),\t%f ns without small hits (%d events with %f small hits)\n", dtSumWith / nWith, nWith, nHitsWith / nWith, dtSumWithout / nWithout, nWithout, nHitsWithout / nWithout);
-
-            System.out.format("%d %d %d %d ", event.getEventNumber(), event.getTimeStamp(), event.getTimeStamp() - previousTimestamp, smallHitCount);
+            if (printEvents) {
+                System.out.format("%f ns with small hits (%d events with %f small hits),\t%f ns without small hits (%d events with %f small hits)\n", dtSumWith / nWith, nWith, nHitsWith / nWith, dtSumWithout / nWithout, nWithout, nHitsWithout / nWithout);
+                System.out.format("%d %d %d %d ", event.getEventNumber(), event.getTimeStamp(), event.getTimeStamp() - previousTimestamp, smallHitCount);
+            }
 
             previousTimestamp = event.getTimeStamp();
-            for (String sensorName : smallHitCounts.keySet()) {
-                System.out.format("%s:%d ", sensorName, smallHitCounts.get(sensorName));
+            if (printEvents) {
+                for (String sensorName : smallHitCounts.keySet()) {
+                    System.out.format("%s:%d ", sensorName, smallHitCounts.get(sensorName));
+                }
+                System.out.println();
             }
-            System.out.println();
         }
     }
 
@@ -106,4 +142,12 @@
         return true;
     }
 
+    public void endOfData() {
+        if (trigDt != null) {
+            smallHitFracDt.reset();
+            for (int i = 0; i < trigDt.axis().bins(); i++) {
+                smallHitFracDt.fill(trigDt.axis().binCenter(i), trigDtWithSmallHits.binHeight(i) / trigDt.binHeight(i));
+            }
+        }
+    }
 }