From edaf061838a5ceb137ed0d59e8b1b5f54f9742d8 Mon Sep 17 00:00:00 2001 From: Oliver Majersky <oliver.majersky@cern.ch> Date: Mon, 22 Mar 2021 15:05:54 +0100 Subject: [PATCH] Re-enable nominal boosted tagging SF computation in AnalysisTop. --- .../TopAnalysis/Root/EventSaverFlatNtuple.cxx | 14 ++++------- .../Root/TopBoostedTaggingCPTools.cxx | 23 ++++++++++--------- 2 files changed, 17 insertions(+), 20 deletions(-) diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/Root/EventSaverFlatNtuple.cxx b/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/Root/EventSaverFlatNtuple.cxx index 5c27a50c2828..1098fb3020b3 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/Root/EventSaverFlatNtuple.cxx +++ b/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/Root/EventSaverFlatNtuple.cxx @@ -1090,7 +1090,7 @@ namespace top { systematicTree->makeOutputVariable(m_ljet_tagSF[taggerName], "ljet_tagSF_" + taggerName); } - if (systematicTree->name() == nominalTTreeName || systematicTree->name() == nominalLooseTTreeName) { + if ((systematicTree->name() == nominalTTreeName || systematicTree->name() == nominalLooseTTreeName) && m_config->applyBoostedJetTaggersUncertainties()) { for (const std::string& taggerName : m_boostedJetTaggersNamesCalibrated) { systematicTree->makeOutputVariable(m_ljet_tagSFSysVars[taggerName],"ljet_tagSF_" + taggerName + "_variations"); } @@ -3208,7 +3208,7 @@ namespace top { m_ljet_truthLabel.resize(nLargeRJets); for (const std::string& taggerName : m_boostedJetTaggersNamesCalibrated) { m_ljet_tagSF[taggerName].resize(nLargeRJets); - if (event.m_hashValue == m_config->nominalHashValue()) { + if (event.m_hashValue == m_config->nominalHashValue() && m_config->applyBoostedJetTaggersUncertainties()) { m_ljet_tagSFSysVars[taggerName].resize(nLargeRJets); } } @@ -3236,17 +3236,13 @@ namespace top { const std::string& taggerName = tagSF.first; const std::string& sfNameNominal = tagSF.second; - m_ljet_tagSF[taggerName][i] = jetPtr->isAvailable<float>(sfNameNominal) ? jetPtr->auxdata<float>(sfNameNominal) : -999; + m_ljet_tagSF[taggerName][i] = jetPtr->auxdata<float>(sfNameNominal); - if (event.m_hashValue == m_config->nominalHashValue()) { + if (event.m_hashValue == m_config->nominalHashValue() && m_config->applyBoostedJetTaggersUncertainties()) { const std::vector<std::string>& sysNames = m_config->boostedTaggersSFSysNames().at(taggerName); m_ljet_tagSFSysVars[taggerName][i].resize(sysNames.size()); for(size_t iname = 0; iname<sysNames.size();iname++) { - if (jetPtr->isAvailable<float>(sysNames[iname])) { - m_ljet_tagSFSysVars[taggerName][i][iname] = jetPtr->auxdata<float>(sysNames[iname]); - } else { - m_ljet_tagSFSysVars[taggerName][i][iname] = -999; - } + m_ljet_tagSFSysVars[taggerName][i][iname] = jetPtr->auxdata<float>(sysNames[iname]); } // end loop over SF variations in nominal TTree } // end if nominal TTree } // end loop over taggers diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopCPTools/Root/TopBoostedTaggingCPTools.cxx b/PhysicsAnalysis/TopPhys/xAOD/TopCPTools/Root/TopBoostedTaggingCPTools.cxx index 3ddc2502f3f1..69c9e2d029df 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopCPTools/Root/TopBoostedTaggingCPTools.cxx +++ b/PhysicsAnalysis/TopPhys/xAOD/TopCPTools/Root/TopBoostedTaggingCPTools.cxx @@ -48,8 +48,7 @@ namespace top { } initTaggersMaps(); - if (m_config->applyBoostedJetTaggersUncertainties()) - initSFsMaps(); + initSFsMaps(); top::check(std::find(std::begin(m_jetCollections),std::end(m_jetCollections),m_config->sgKeyLargeRJets())!=std::end(m_jetCollections), "Error in BoostedTaggingCPTools: boosted jet taggers are not available for this large-R jet collection."); @@ -84,21 +83,23 @@ namespace top { top::check(m_taggers[taggerName].initialize(), "Failed to initialize " + taggerName); // initialize SF uncertainty tools for supported WPs - if (m_config->isMC() && m_config->applyBoostedJetTaggersUncertainties()) { + if (m_config->isMC()) { std::string jet_def = m_config->sgKeyLargeRJets(); jet_def.erase(jet_def.length() - 4); // jet collection name sans 'Jets' suffix const std::string name = "JetSFuncert_" + taggerName; try { const std::string& cfg = m_taggerSFsConfigs.at(taggerName); - JetUncertaintiesTool* jet_SF_tmp = new JetUncertaintiesTool(name); - - top::check(jet_SF_tmp->setProperty("JetDefinition", jet_def), "Failed to set JetDefinition for " + name); - top::check(jet_SF_tmp->setProperty("MCType", "MC16"), "Failed to set MCType for " + name); - top::check(jet_SF_tmp->setProperty("ConfigFile", cfg), "Failed to set ConfigFile for " + name); - top::check(jet_SF_tmp->setProperty("IsData", false), "Failed to set IsData for " + name); - top::check(jet_SF_tmp->initialize(), "Failed to initialize " + name); - m_tagSFuncertTool[taggerName] = jet_SF_tmp; + if (m_config->applyBoostedJetTaggersUncertainties()) { + JetUncertaintiesTool* jet_SF_tmp = new JetUncertaintiesTool(name); + + top::check(jet_SF_tmp->setProperty("JetDefinition", jet_def), "Failed to set JetDefinition for " + name); + top::check(jet_SF_tmp->setProperty("MCType", "MC16"), "Failed to set MCType for " + name); + top::check(jet_SF_tmp->setProperty("ConfigFile", cfg), "Failed to set ConfigFile for " + name); + top::check(jet_SF_tmp->setProperty("IsData", false), "Failed to set IsData for " + name); + top::check(jet_SF_tmp->initialize(), "Failed to initialize " + name); + m_tagSFuncertTool[taggerName] = jet_SF_tmp; + } m_config->setCalibBoostedJetTagger(taggerName, m_taggerSFsNames[taggerName]); } catch (std::out_of_range& e) { // skip taggers which do not yet have SFs available -- GitLab