Print

Print


Author: [log in to unmask]
Date: Tue Jan  3 07:59:29 2017
New Revision: 4658

Log:
smears ecal timing in mc according to data

Added:
    java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/cluster/HitTMCSmearDriver.java

Added: java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/cluster/HitTMCSmearDriver.java
 =============================================================================
--- java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/cluster/HitTMCSmearDriver.java	(added)
+++ java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/cluster/HitTMCSmearDriver.java	Tue Jan  3 07:59:29 2017
@@ -0,0 +1,41 @@
+package org.hps.recon.ecal.cluster;
+
+import java.util.List;
+import java.util.Random;
+
+import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.EventHeader;
+import org.lcsim.util.Driver;
+import org.lcsim.event.base.BaseCalorimeterHit;
+
+/**
+ * This smears the MC hit time energy according to the resolution as found in the 2016 data.
+ * 
+ * @author holly
+ *
+ */
+public class HitTMCSmearDriver extends Driver {
+   
+    // Time resolution as derived for 2016 data
+    private static double calcSmear(double energy){
+        Random r = new Random();
+        double sigT = r.nextGaussian()*Math.sqrt(Math.pow(0.188/energy, 2) + Math.pow(0.152, 2));
+        return sigT;
+    }
+            
+    //Call the offset, correct the time, and set the time
+    public void process(EventHeader event) {
+            
+        //Get the hits in the event       
+        List<CalorimeterHit> hits = event.get(CalorimeterHit.class, "EcalCalHits");
+            
+        for (CalorimeterHit iHit : hits){
+            double oldT = iHit.getTime();
+            double energy = iHit.getRawEnergy();
+                            
+            double sigT = calcSmear(energy);
+            ((BaseCalorimeterHit) iHit).setTime(oldT+sigT);
+
+        }    
+    }    
+}