Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #include "CalibCalorimetry/HcalAlgos/interface/HcalSiPMRadiationDamage.h"
0002 
0003 #include <vector>
0004 #include <cmath>
0005 
0006 //default constructor

0007 HcalSiPMRadiationDamage::HcalSiPMRadiationDamage()
0008     : temperatureBase_(0.0), temperatureNew_(0.0), intlumiOffset_(0.0), depVsTemp_(0.0), intlumiToNeutrons_(0.0) {}
0009 
0010 HcalSiPMRadiationDamage::HcalSiPMRadiationDamage(std::vector<double> darkCurrentBase, const edm::ParameterSet& p)
0011     : darkCurrentBase_(darkCurrentBase),
0012       temperatureBase_(p.getParameter<double>("temperatureBase")),
0013       temperatureNew_(p.getParameter<double>("temperatureNew")),
0014       intlumiOffset_(p.getParameter<double>("intlumiOffset")),
0015       depVsTemp_(p.getParameter<double>("depVsTemp")),
0016       intlumiToNeutrons_(p.getParameter<double>("intlumiToNeutrons")),
0017       depVsNeutrons_(p.getParameter<std::vector<double>>("depVsNeutrons")) {}
0018 
0019 //accounts for both lumi dependence and temp dependence

0020 double HcalSiPMRadiationDamage::getDarkCurrent(double intlumi, unsigned index) const {
0021   intlumi -= intlumiOffset_;
0022   if (intlumi <= 0)
0023     return darkCurrentBase_.at(index);
0024   double darkCurrentNewLumi = darkCurrentBase_.at(index) + depVsNeutrons_.at(index) * (intlumi * intlumiToNeutrons_);
0025   double darkCurrentNewTemp = darkCurrentNewLumi * std::exp(depVsTemp_ * (temperatureNew_ - temperatureBase_));
0026   return darkCurrentNewTemp;
0027 }