File indexing completed on 2023-03-17 10:41:51
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
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
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 }