File indexing completed on 2023-03-17 11:18:52
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 }