Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 11:58:08

0001 #include "CalibCalorimetry/HcalAlgos/interface/HcalTimeSlew.h"
0002 #include <cmath>
0003 #include <iostream>
0004 
0005 void HcalTimeSlew::addM2ParameterSet(float tzero, float slope, float tmax) {
0006   parametersM2_.emplace_back(tzero, slope, tmax);
0007 }
0008 
0009 void HcalTimeSlew::addM3ParameterSet(double cap,
0010                                      double tspar0,
0011                                      double tspar1,
0012                                      double tspar2,
0013                                      double tspar0_siPM,
0014                                      double tspar1_siPM,
0015                                      double tspar2_siPM) {
0016   parametersM3_.emplace_back(cap, tspar0, tspar1, tspar2, tspar0_siPM, tspar1_siPM, tspar2_siPM);
0017 }
0018 
0019 // Used by M2/Simulation
0020 float HcalTimeSlew::delay(float fC, BiasSetting bias) const {
0021   float rawDelay = parametersM2_[bias].tzero + parametersM2_[bias].slope * std::log(fC);
0022   return (rawDelay < 0) ? (0) : ((rawDelay > parametersM2_[bias].tmax) ? (parametersM2_[bias].tmax) : (rawDelay));
0023 }
0024 
0025 // Used by M3
0026 double HcalTimeSlew::delay(double fC, ParaSource source, BiasSetting bias, bool isHPD) const {
0027   double rawDelay = 0.0;
0028   if (source == TestStand) {
0029     return HcalTimeSlew::delay(fC, bias);
0030   } else if (isHPD) {
0031     rawDelay = std::fmin(
0032         parametersM3_[source].cap,
0033         parametersM3_[source].tspar0 + parametersM3_[source].tspar1 * std::log(fC + parametersM3_[source].tspar2));
0034   } else {
0035     rawDelay = parametersM3_[source].cap + parametersM3_[source].tspar0_siPM;
0036   }
0037   return rawDelay;
0038 }