ATLAS Offline Software
Loading...
Searching...
No Matches
DiTauDiscriminantTool.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
8
9using namespace DiTauRecTools;
10
11//=================================PUBLIC-PART==================================
12//______________________________________________________________________________
13DiTauDiscriminantTool::DiTauDiscriminantTool( const std::string& name )
14 : AsgTool(name) { }
15
16//______________________________________________________________________________
18= default;
19
20//______________________________________________________________________________
22{
23 ATH_MSG_INFO( "Initializing DiTauDiscriminantTool" );
24 ATH_MSG_DEBUG( "path to weights file: " << m_sWeightsFile );
25
27
28 // m_bIsInitialized = true;
29 return StatusCode::SUCCESS;
30}
31
33// Wrapper functions //
35StatusCode DiTauDiscriminantTool::execute(const xAOD::DiTauJet& xDiTau) const{
36
37 auto availableVariables = setIDVariables(xDiTau);
38
39 float bdtScore = m_mvaBDT->getGradBoostMVA(availableVariables);
40
41 const static SG::Decorator<float> decBDTScore(m_sBDTScoreName);
42 decBDTScore(xDiTau) = bdtScore;
43
44 ATH_MSG_DEBUG("Jet BDT score: " << bdtScore);
45 return StatusCode::SUCCESS;
46}
47
48//=================================PRIVATE-PART=================================
49//______________________________________________________________________________
50
52{
53 std::string weight_file = PathResolverFindCalibFile(m_sWeightsFile);
54
55 ATH_MSG_DEBUG("InputWeightsPath: " << weight_file);
56
57 m_mvaBDT = std::make_unique<tauRecTools::BDTHelper>();
58 ATH_CHECK(m_mvaBDT->initialize(weight_file));
59
60 return StatusCode::SUCCESS;
61}
62
63// ----------------------------------------------------------------------------
64std::map<TString, float> DiTauDiscriminantTool::setIDVariables(const xAOD::DiTauJet& xDiTau) const
65{
66 SG::ConstAccessor<float> f_core_leadAcc("f_core_lead");
67 SG::ConstAccessor<float> f_core_sublAcc("f_core_subl");
68 SG::ConstAccessor<float> f_subjet_sublAcc("f_subjet_subl");
69 SG::ConstAccessor<float> f_subjetsAcc("f_subjets");
70 SG::ConstAccessor<float> R_max_leadAcc("R_max_lead");
71 SG::ConstAccessor<float> R_max_sublAcc("R_max_subl");
72 SG::ConstAccessor<int> n_trackAcc("n_track");
73 SG::ConstAccessor<int> n_tracks_leadAcc("n_tracks_lead");
74 SG::ConstAccessor<float> R_isotrackAcc("R_isotrack");
75 SG::ConstAccessor<float> R_tracks_sublAcc("R_tracks_subl");
76 SG::ConstAccessor<float> M_core_leadAcc("m_core_lead");
77 SG::ConstAccessor<float> M_core_sublAcc("m_core_subl");
78 SG::ConstAccessor<float> M_tracks_leadAcc("m_tracks_lead");
79 SG::ConstAccessor<float> M_tracks_sublAcc("m_tracks_subl");
80 SG::ConstAccessor<float> d0_leadtrack_leadAcc("d0_leadtrack_lead");
81 SG::ConstAccessor<float> d0_leadtrack_sublAcc("d0_leadtrack_subl");
82 SG::ConstAccessor<float> f_isotracksAcc("f_isotracks");
83
84 std::map<TString, float> availableVariables;
85 availableVariables.emplace("f_core_lead", f_core_leadAcc(xDiTau));
86 availableVariables.emplace("f_core_subl", f_core_sublAcc(xDiTau));
87 availableVariables.emplace("f_subjet_subl", f_subjet_sublAcc(xDiTau));
88 availableVariables.emplace("f_subjets", f_subjetsAcc(xDiTau));
89 availableVariables.emplace("R_max_lead", R_max_leadAcc(xDiTau));
90 availableVariables.emplace("R_max_subl", R_max_sublAcc(xDiTau));
91 availableVariables.emplace("n_track", static_cast<float>(n_trackAcc(xDiTau)));
92 availableVariables.emplace("n_tracks_lead", static_cast<float>(n_tracks_leadAcc(xDiTau)));
93 availableVariables.emplace("R_isotrack", R_isotrackAcc(xDiTau));
94 availableVariables.emplace("R_tracks_subl", R_tracks_sublAcc(xDiTau));
95 availableVariables.emplace("m_core_lead", M_core_leadAcc(xDiTau));
96 availableVariables.emplace("log(m_core_lead)", std::log(M_core_leadAcc(xDiTau)));
97 availableVariables.emplace("m_core_subl", M_core_sublAcc(xDiTau));
98 availableVariables.emplace("log(m_core_subl)", std::log(M_core_sublAcc(xDiTau)));
99 availableVariables.emplace("m_tracks_lead", M_tracks_leadAcc(xDiTau));
100 availableVariables.emplace("log(m_tracks_lead)", std::log(M_tracks_leadAcc(xDiTau)));
101 availableVariables.emplace("m_tracks_subl", M_tracks_sublAcc(xDiTau));
102 availableVariables.emplace("log(m_tracks_subl)", std::log(M_tracks_sublAcc(xDiTau)));
103 availableVariables.emplace("d0_leadtrack_lead", d0_leadtrack_leadAcc(xDiTau));
104 availableVariables.emplace("log(abs(d0_leadtrack_lead))", std::log(std::abs(d0_leadtrack_leadAcc(xDiTau))));
105 availableVariables.emplace("d0_leadtrack_subl", d0_leadtrack_sublAcc(xDiTau));
106 availableVariables.emplace("log(abs(d0_leadtrack_subl))", std::log(std::abs(d0_leadtrack_sublAcc(xDiTau))));
107 availableVariables.emplace("f_isotracks", f_isotracksAcc(xDiTau));
108 availableVariables.emplace("log(f_isotracks)", std::log(f_isotracksAcc(xDiTau)));
109
110 for (const auto& [var, value]: availableVariables)
111 {
112 ATH_MSG_DEBUG(var << ": " << value);
113 }
114
115 return availableVariables;
116}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_INFO(x)
#define ATH_MSG_DEBUG(x)
Helper class to provide constant type-safe access to aux data.
std::string PathResolverFindCalibFile(const std::string &logical_file_name)
virtual StatusCode execute(const xAOD::DiTauJet &xDiTau) const override
Declare the interface that the class provides.
Gaudi::Property< std::string > m_sBDTScoreName
virtual ASG_TOOL_CLASS(DiTauDiscriminantTool, DiTauRecTools::IDiTauToolBase) public ~DiTauDiscriminantTool()
Create a proper constructor for Athena.
Gaudi::Property< std::string > m_sWeightsFile
std::unique_ptr< tauRecTools::BDTHelper > m_mvaBDT
virtual StatusCode initialize() override
Dummy implementation of the initialisation function.
std::map< TString, float > setIDVariables(const xAOD::DiTauJet &xDiTau) const
Helper class to provide constant type-safe access to aux data.
Helper class to provide type-safe access to aux data.
Definition Decorator.h:59
Implementation of boosted di-tau ID.
DiTauJet_v1 DiTauJet
Definition of the current version.
Definition DiTauJet.h:17