24#ifndef XAOD_STANDALONE
36 return StatusCode::FAILURE;
39 if (
m_isPHYSLITE && taukey.find(
"AnalysisTauJets")==std::string::npos){
40 ATH_MSG_ERROR(
"You are running on PHYSLITE derivation. Please change the Taus container to 'AnalysisTauJets'");
41 return StatusCode::FAILURE;
46 if (containerToBeCopied !=
nullptr) {
47 taus = containerToBeCopied;
53 copy = shallowcopy.first;
54 copyaux = shallowcopy.second;
60 ATH_MSG_DEBUG(
"Not retrieving tau collecton, using existing one provided by user");
64 for (
const auto tau : *copy) {
72 return StatusCode::SUCCESS;
79 ATH_MSG_VERBOSE(
"Starting FillTau on tau with pT = " << input.pt()/1000 <<
" GeV" );
80 ATH_MSG_VERBOSE(
"TAU pT before smearing " << input.pt()/1000 <<
" GeV");
87 if (std::abs(input.eta()) <= 2.5 && input.nTracks() > 0) {
108 return StatusCode::SUCCESS;
118 if (input.pt() <= ptcut)
return false;
120 if (std::abs(input.eta()) >= etacut)
return false;
132 const bool triggerSF,
133 const std::string& trigExpr)
163 const bool triggerSF,
164 const std::string& trigExpr)
169 StatusCode ret =
m_tauEffTool->applySystematicVariation(systConfig);
170 if (ret != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure TauEfficiencyCorrectionsTool for systematic var. " << systConfig.
name() ); }
173 ret = tool->applySystematicVariation(systConfig);
174 if (ret != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure " << tool->name() <<
" for systematic var. " << systConfig.
name()); }
181 if (ret != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure TauEfficiencyCorrectionsTool back to default"); }
185 if (ret != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure " << tool->name() <<
" back to default"); }
200 ATH_MSG_WARNING(
"The trigger item requested (" << trigExpr <<
") is not supported! Please check. Setting SF to 1.");
205 std::vector<std::string> chains;
206 for (
auto part : std::views::split(map_it->second,
',')) chains.emplace_back(&*part.begin(), std::ranges::distance(part));
208 for (
const std::string& chain : chains)
220 ATH_MSG_ERROR(
"Some problem found to retrieve SF for trigger item requested (" << trigExpr <<
")");
235 ATH_MSG_WARNING(
"Tau does not have Overlap Removal decision set. You should only call GetTotalTauSF with taus that have been passed through OR. SF will NOT be applied!");
254 StatusCode ret =
m_tauEffTool->applySystematicVariation(systConfig);
255 if (ret != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure TauEfficiencyCorrectionsTool for systematic var. " << systConfig.
name() ); }
258 ret = tool->applySystematicVariation(systConfig);
259 if (ret != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure " << tool->name() <<
" for systematic var. " << systConfig.
name()); }
266 if (ret != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure TauEfficiencyCorrectionsTool back to default"); }
270 if (ret != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure " << tool->name() <<
" back to default"); }
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_WARNING(x)
ServiceHandle< StoreGateSvc > & evtStore()
@ Ok
The correction was done successfully.
Class to wrap a set of SystematicVariations.
std::string name() const
returns: the systematics joined into a single string.
asg::AnaToolHandle< TauAnalysisTools::ITauSelectionTool > m_tauSelToolBaseline
StatusCode FillTau(xAOD::TauJet &input) override final
bool IsSignalTau(const xAOD::TauJet &input, const float ptcut, const float etacut) const override final
asg::AnaToolHandle< TauAnalysisTools::ITauSelectionTool > m_tauSelTool
asg::AnaToolHandle< TauAnalysisTools::ITauEfficiencyCorrectionsTool > m_tauEffTool
bool isData() const override final
double GetSignalTauSFsys(const xAOD::TauJet &tau, const CP::SystematicSet &systConfig, const bool idSF=true, const bool triggerSF=true, const std::string &trigExpr="tau25_medium1_tracktwo") override final
asg::AnaToolHandle< Trig::IMatchingTool > m_trigMatchingTool
StatusCode GetTaus(xAOD::TauJetContainer *©, xAOD::ShallowAuxContainer *©aux, const bool recordSG=true, const std::string &taukey="TauJets", const xAOD::TauJetContainer *containerToBeCopied=nullptr) override final
std::map< std::string, std::string > m_tau_trig_support
double GetTauTriggerEfficiencySF(const xAOD::TauJet &tau, const std::string &trigExpr="tau25_medium1_tracktwo") override final
double GetSignalTauSF(const xAOD::TauJet &tau, const bool idSF=true, const bool triggerSF=true, const std::string &trigExpr="tau25_medium1_tracktwo") override final
double GetTotalTauSF(const xAOD::TauJetContainer &taus, const bool idSF=true, const bool triggerSF=true, const std::string &trigExpr="tau25_medium1_tracktwo") override final
CP::SystematicSet m_currentSyst
double GetTotalTauSFsys(const xAOD::TauJetContainer &taus, const CP::SystematicSet &systConfig, const bool idSF=true, const bool triggerSF=true, const std::string &trigExpr="tau25_medium1_tracktwo") override final
asg::AnaToolHandle< TauAnalysisTools::ITauSmearingTool > m_tauSmearingTool
asg::AnaToolHandle< TauAnalysisTools::ITauTruthMatchingTool > m_tauTruthMatch
std::vector< asg::AnaToolHandle< TauAnalysisTools::ITauEfficiencyCorrectionsTool > > m_tauTrigEffTool
Class creating a shallow copy of an existing auxiliary container.
bool match(std::string s1, std::string s2)
match the individual directories of two strings
static const SG::Decorator< double > dec_effscalefact("effscalefact")
static const SG::Decorator< char > dec_baseline("baseline")
static const SG::ConstAccessor< char > acc_signal("signal")
static const SG::ConstAccessor< char > acc_baseline("baseline")
static const SG::ConstAccessor< char > acc_passOR("passOR")
static const SG::Decorator< char > dec_signal("signal")
static const SG::Decorator< char > dec_selected("selected")
std::pair< std::unique_ptr< T >, std::unique_ptr< ShallowAuxContainer > > shallowCopyContainer(const T &cont, const EventContext &ctx)
Function making a shallow copy of a constant container.
TauJet_v3 TauJet
Definition of the current "tau version".
bool setOriginalObjectLink(const IParticle &original, IParticle ©)
This function should be used by CP tools when they make a deep copy of an object in their correctedCo...
setBGCode setTAP setLVL2ErrorBits bool
TauJetContainer_v3 TauJetContainer
Definition of the current "taujet container version".