19 m_tauEffCorrTool(
"TauAnalysisTools::TauEfficiencyCorrectionsTool"),
20 m_tauEffCorrToolLoose(
"TauAnalysisTools::TauEfficiencyCorrectionsToolLoose"),
22 m_systNominal(
CP::SystematicSet()) {
27 ATH_MSG_INFO(
" top::TauScaleFactorCalculator initialize");
30 "Failed to retrieve tau efficiency corrections tool");
42 return StatusCode::SUCCESS;
47 for (
auto currentSystematic : *
m_config->systSgKeyMapTaus()) {
50 "failed to retrieve taus");
55 for (
auto tauPtr : *taus) {
57 bool passSelection(
false);
58 if (tauPtr->isAvailable<
char>(
"passPreORSelection")) {
59 if (tauPtr->auxdataConst<
char>(
"passPreORSelection") == 1) {
63 if (tauPtr->isAvailable<
char>(
"passPreORSelectionLoose")) {
64 if (tauPtr->auxdataConst<
char>(
"passPreORSelectionLoose") == 1) {
70 if (!passSelection)
continue;
80 "Failed to set tau efficiency correction"
81 " tool to nominal value");
83 "Failed to set (loose) tau efficiency correction"
84 " tool to nominal value");
86 double nominalSF(0.0), nominalSFLoose(0.0);
89 "Failed to get nominal tau SF");
92 "Failed to get nominal (loose) tau SF");
95 tauPtr->auxdecor<
float>(
"TAU_SF_NOMINAL") = nominalSF;
96 tauPtr->auxdecor<
float>(
"TAU_SF_NOMINAL_loose") = nominalSFLoose;
99 if (currentSystematic.first ==
m_config->nominalHashValue()) {
101 double SF(0.0), SF_loose(0.0);
102 const std::string decoration_name =
i.first;
103 const std::string decoration_name_loose =
i.first +
"_loose";
105 "Failed to set tau efficiency correction"
106 " tool to nominal value");
108 "Failed to set (loose) tau efficiency correction"
109 " tool to nominal value");
111 "Failed to get nominal tau SF");
114 "Failed to get nominal (loose) tau SF");
115 tauPtr->auxdecor<
float>(decoration_name) =
SF;
116 tauPtr->auxdecor<
float>(decoration_name_loose) = SF_loose;
123 return StatusCode::SUCCESS;