Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:25:49

0001 #include <iostream>
0002 #include <cmath>
0003 #include <climits>
0004 #include "RecoLocalCalo/HcalRecAlgos/interface/PedestalSub.h"
0005 
0006 using namespace std;
0007 
0008 PedestalSub::PedestalSub() {}
0009 
0010 PedestalSub::~PedestalSub() {}
0011 
0012 void PedestalSub::calculate(const std::vector<double>& inputCharge,
0013                             const std::vector<double>& inputPedestal,
0014                             const std::vector<double>& inputNoise,
0015                             std::vector<double>& corrCharge,
0016                             int soi,
0017                             int nTS) const {
0018   double bseCorr = PedestalSub::getCorrection(inputCharge, inputPedestal, inputNoise, soi, nTS);
0019   for (auto i = 0; i < nTS; i++) {
0020     corrCharge.push_back(inputCharge[i] - inputPedestal[i] - bseCorr);
0021   }
0022 }
0023 
0024 double PedestalSub::getCorrection(const std::vector<double>& inputCharge,
0025                                   const std::vector<double>& inputPedestal,
0026                                   const std::vector<double>& inputNoise,
0027                                   int soi,
0028                                   int nTS) const {
0029   double baseline = 0;
0030 
0031   for (auto i = 0; i < nTS; i++) {
0032     if (i == soi || i == (soi + 1))
0033       continue;
0034     if ((inputCharge[i] - inputPedestal[i]) < 3 * inputNoise[i]) {
0035       baseline += (inputCharge[i] - inputPedestal[i]);
0036     } else {
0037       baseline += 3 * inputNoise[i];
0038     }
0039   }
0040   baseline /= (nTS - 2);
0041   return baseline;
0042 }