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