90 unsigned int runNumber = 428648;
96 std::optional<SG::WriteDecorHandle<xAOD::ElectronContainer, double>> SF;
97 std::optional<SG::WriteDecorHandle<xAOD::ElectronContainer, double>> TotalUp;
98 std::optional<SG::WriteDecorHandle<xAOD::ElectronContainer, double>>
100 std::optional<SG::WriteDecorHandle<xAOD::ElectronContainer, double>> uncorrUp;
101 std::optional<SG::WriteDecorHandle<xAOD::ElectronContainer, double>>
103 std::optional<SG::WriteDecorHandle<xAOD::ElectronContainer, int>> HistIndex;
104 std::optional<SG::WriteDecorHandle<xAOD::ElectronContainer, int>> HistBin;
116 SF.emplace(
m_SF, ctx);
128 toys.emplace(
m_toys, ctx);
137 if (std::abs(el->eta()) > 2.469 || el->pt() < 10000) {
141 SF.value()(*el) = result.SF;
142 TotalUp.value()(*el) = result.SF + result.Total;
143 TotalDown.value()(*el) = result.SF - result.Total;
145 uncorrUp.value()(*el) = result.SF + result.UnCorr;
146 uncorrDown.value()(*el) = result.SF - result.UnCorr;
147 HistIndex.value()(*el) = result.histIndex;
148 HistBin.value()(*el) = result.histBinNum;
149 corrUp.value()(*el) = result.Corr;
150 corrDown.value()(*el) = result.Corr;
153 toys.value()(*el) = result.toys;
160 double cluster_eta(-9999.9);
163 ATH_MSG_ERROR(
"ERROR no cluster associated to the Electron \n");
164 return StatusCode::FAILURE;
170 cluster_eta = cluster->
eta();
172 cluster_eta = cluster->
etaBE(2);
177 const double energy = cluster->
e();
178 const double parEta = el->eta();
179 const double coshEta = std::cosh(parEta);
180 double et = (coshEta != 0.) ? energy / coshEta : 0.;
187 const int status =
m_pimpl->calculate(
193 return StatusCode::FAILURE;
197 ATH_MSG_INFO(
"--------------------------------------------");
198 ATH_MSG_INFO(
"Electron pt : " << el->pt() <<
" eta " << el->eta());
199 ATH_MSG_INFO(
"SF = " << result.SF <<
" +- " << result.Total);
201 ATH_MSG_INFO(
"SF = " << result.SF <<
" +- " << result.UnCorr
203 ATH_MSG_INFO(
"At histo " << result.histIndex <<
" at bin "
204 << result.histBinNum);
206 for (
double res : result.Corr) {
212 for (
double res : result.toys) {
217 SF.value()(*el) = result.SF;
218 TotalUp.value()(*el) = result.SF + result.Total;
219 TotalDown.value()(*el) = result.SF - result.Total;
221 uncorrUp.value()(*el) = result.SF + result.UnCorr;
222 uncorrDown.value()(*el) = result.SF - result.UnCorr;
223 HistIndex.value()(*el) = result.histIndex;
224 HistBin.value()(*el) = result.histBinNum;
225 const size_t corrsize = result.Corr.size();
226 std::vector<double> up(corrsize, 0);
227 std::vector<double> down(corrsize, 0);
228 for (
size_t i = 0; i < corrsize; ++i) {
229 up[i] = result.SF + result.Corr[i];
230 down[i] = result.SF - result.Corr[i];
232 corrUp.value()(*el) = std::move(up);
233 corrDown.value()(*el) = std::move(down);
236 toys.value()(*el) = std::move(result.toys);
241 return StatusCode::SUCCESS;