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);
+
+ }
+ }
+}
|