Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
TauDecayModeNNClassifier.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef TAURECTOOLS_TAUDECAYMODENNCLASSIFIER_H
6 #define TAURECTOOLS_TAUDECAYMODENNCLASSIFIER_H
7 
8 // base class include(s)
10 
12 
13 // xAOD include(s)
14 #include "xAODTau/TauJet.h"
15 
16 // lwtnn include(s)
17 #include "lwtnn/LightweightGraph.hh"
18 #include "lwtnn/parse_json.hh"
19 #include "lwtnn/Exceptions.hh"
20 
21 // standard library include(s)
22 #include <memory>
23 #include <vector>
24 #include <set>
25 #include <map>
26 
35 {
36 public:
38 
39  explicit TauDecayModeNNClassifier(const std::string &name = "TauDecayModeNNClassifier");
40  virtual ~TauDecayModeNNClassifier();
41 
42  virtual StatusCode initialize() override;
43  virtual StatusCode execute(xAOD::TauJet &xTau) const override;
44 
45 private:
47  Gaudi::Property<std::string> m_outputName{this, "OutputName", "NNDecayMode"};
48  Gaudi::Property<std::string> m_probPrefix{this, "ProbPrefix", "NNDecayModeProb_"};
49  Gaudi::Property<std::string> m_weightFile{this, "WeightFile", ""};
50  Gaudi::Property<std::size_t> m_maxTauTracks{this, "MaxTauTracks", 3};
51  Gaudi::Property<std::size_t> m_maxNeutralPFOs{this, "MaxNeutralPFOs", 8};
52  Gaudi::Property<std::size_t> m_maxShotPFOs{this, "MaxShotPFOs", 6};
53  Gaudi::Property<std::size_t> m_maxConvTracks{this, "MaxConvTracks", 4};
54  Gaudi::Property<float> m_neutralPFOPtCut{this, "NeutralPFOPtCut", 1.5};
55  Gaudi::Property<bool> m_ensureTrackConsistency{this, "EnsureTrackConsistency", true};
56  Gaudi::Property<bool> m_decorateProb{this, "DecorateProb", true};
57 
66  virtual StatusCode getInputs(const xAOD::TauJet &xTau,
67  std::map<std::string, std::map<std::string, std::vector<double>>> &inputSeqMap) const;
69  std::unique_ptr<const lwt::LightweightGraph> m_lwtGraph;
70 };
71 
72 namespace tauRecTools
73 {
78  {
79  public:
81  static const std::size_t nClasses = 5;
82  static const std::set<std::string> sCommonP4Vars;
83  static const std::set<std::string> sTrackIPVars;
84  static const std::set<std::string> sNeutralPFOVars;
85  static const std::array<std::string, nClasses> sModeNames;
86  static float deltaPhi(const TLorentzVector &p4, const TLorentzVector &p4_tau);
87  static float deltaEta(const TLorentzVector &p4, const TLorentzVector &p4_tau);
88  static float deltaPhiECal(const TLorentzVector &p4, const std::pair<float, bool> &tau_phiTrkECal);
89  static float deltaEtaECal(const TLorentzVector &p4, const std::pair<float, bool> &tau_etaTrkECal);
98  template <typename T>
99  static T pfoAttr(const xAOD::PFO *pfo, const xAOD::PFODetails::PFOAttributes &attr);
100  };
101 
106  {
107  public:
109  static float Log10Robust(const float val, const float min_val = 0.);
119  template <typename T>
120  static void sortAndKeep(std::vector<T> &vec, const std::size_t n_obj);
129  template <typename T>
130  static void initMapKeys(std::map<std::string, T> &empty_map, const std::set<std::string> &keys);
131  };
132 } // namespace tauRecTools
133 
134 #endif // TAURECTOOLS_TAUDECAYMODENNCLASSIFIER_H
tauRecTools::TauDecayModeNNVariable::deltaEtaECal
static float deltaEtaECal(const TLorentzVector &p4, const std::pair< float, bool > &tau_etaTrkECal)
Definition: TauDecayModeNNClassifier.cxx:362
tauRecTools::TauDecayModeNNVariable::TauDecayModeNNVariable
TauDecayModeNNVariable()=delete
PropertyWrapper.h
TauDecayModeNNClassifier::getInputs
virtual StatusCode getInputs(const xAOD::TauJet &xTau, std::map< std::string, std::map< std::string, std::vector< double >>> &inputSeqMap) const
retrieve the input variables from a TauJet
Definition: TauDecayModeNNClassifier.cxx:156
tauRecTools::TauDecayModeNNVariable::nClasses
static const std::size_t nClasses
Definition: TauDecayModeNNClassifier.h:81
xAOD::PFODetails::PFOAttributes
PFOAttributes
Definition: Event/xAOD/xAODPFlow/xAODPFlow/PFODefs.h:28
TauDecayModeNNClassifier::m_ensureTrackConsistency
Gaudi::Property< bool > m_ensureTrackConsistency
Definition: TauDecayModeNNClassifier.h:55
ASG_TOOL_CLASS2
#define ASG_TOOL_CLASS2(CLASSNAME, INT1, INT2)
Definition: AsgToolMacros.h:77
tauRecTools::TauDecayModeNNVariable::pfoAttr
static T pfoAttr(const xAOD::PFO *pfo, const xAOD::PFODetails::PFOAttributes &attr)
retrieve the PFO attributes
TauDecayModeNNClassifier::m_weightFile
Gaudi::Property< std::string > m_weightFile
Definition: TauDecayModeNNClassifier.h:49
tauRecTools::TauDecayModeNNVariable::deltaEta
static float deltaEta(const TLorentzVector &p4, const TLorentzVector &p4_tau)
Definition: TauDecayModeNNClassifier.cxx:351
TauRecToolBase.h
TauRecToolBase
The base class for all tau tools.
Definition: TauRecToolBase.h:21
tauRecTools::TauDecayModeNNVariable::deltaPhi
static float deltaPhi(const TLorentzVector &p4, const TLorentzVector &p4_tau)
Definition: TauDecayModeNNClassifier.cxx:346
tauRecTools::TauDecayModeNNVariable::sNeutralPFOVars
static const std::set< std::string > sNeutralPFOVars
Definition: TauDecayModeNNClassifier.h:84
TauDecayModeNNClassifier::~TauDecayModeNNClassifier
virtual ~TauDecayModeNNClassifier()
Definition: TauDecayModeNNClassifier.cxx:32
vec
std::vector< size_t > vec
Definition: CombinationsGeneratorTest.cxx:9
TauDecayModeNNClassifier::m_probPrefix
Gaudi::Property< std::string > m_probPrefix
Definition: TauDecayModeNNClassifier.h:48
TauDecayModeNNClassifier::TauDecayModeNNClassifier
TauDecayModeNNClassifier(const std::string &name="TauDecayModeNNClassifier")
Definition: TauDecayModeNNClassifier.cxx:27
tauRecTools::TauDecayModeNNVariable
A closely related class that calculates the input variables.
Definition: TauDecayModeNNClassifier.h:78
TauDecayModeNNClassifier::m_maxNeutralPFOs
Gaudi::Property< std::size_t > m_maxNeutralPFOs
Definition: TauDecayModeNNClassifier.h:51
tauRecTools::TauDecayModeNNHelper
A closely related class that provides helper functions.
Definition: TauDecayModeNNClassifier.h:106
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
tauRecTools::TauDecayModeNNHelper::sortAndKeep
static void sortAndKeep(std::vector< T > &vec, const std::size_t n_obj)
sort the objects and only keep the leading N objects in the vector
Definition: TauDecayModeNNClassifier.cxx:385
xAOD::TauJet_v3
Class describing a tau jet.
Definition: TauJet_v3.h:41
tauRecTools::TauDecayModeNNVariable::sTrackIPVars
static const std::set< std::string > sTrackIPVars
Definition: TauDecayModeNNClassifier.h:83
TauDecayModeNNClassifier
Tau decay mode classifier using a neural network.
Definition: TauDecayModeNNClassifier.h:35
tauRecTools::TauDecayModeNNHelper::initMapKeys
static void initMapKeys(std::map< std::string, T > &empty_map, const std::set< std::string > &keys)
initialise the map with a set of defined keys
Definition: TauDecayModeNNClassifier.cxx:396
xAOD::PFO_v1
Class describing a particle flow object.
Definition: PFO_v1.h:35
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
ITauToolBase
The base class for all tau tools.
Definition: ITauToolBase.h:30
TauDecayModeNNClassifier::m_outputName
Gaudi::Property< std::string > m_outputName
properties of the tool
Definition: TauDecayModeNNClassifier.h:47
TauDecayModeNNClassifier::m_maxTauTracks
Gaudi::Property< std::size_t > m_maxTauTracks
Definition: TauDecayModeNNClassifier.h:50
TauDecayModeNNClassifier::m_neutralPFOPtCut
Gaudi::Property< float > m_neutralPFOPtCut
Definition: TauDecayModeNNClassifier.h:54
TauDecayModeNNClassifier::m_lwtGraph
std::unique_ptr< const lwt::LightweightGraph > m_lwtGraph
lwtnn graph
Definition: TauDecayModeNNClassifier.h:69
tauRecTools::TauDecayModeNNVariable::sCommonP4Vars
static const std::set< std::string > sCommonP4Vars
Definition: TauDecayModeNNClassifier.h:82
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
TauJet.h
TauDecayModeNNClassifier::execute
virtual StatusCode execute(xAOD::TauJet &xTau) const override
Execute - called for each tau candidate.
Definition: TauDecayModeNNClassifier.cxx:76
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
tauRecTools
Implementation of a TrackClassifier based on an RNN.
Definition: BDTHelper.cxx:12
TauDecayModeNNClassifier::m_maxShotPFOs
Gaudi::Property< std::size_t > m_maxShotPFOs
Definition: TauDecayModeNNClassifier.h:52
tauRecTools::TauDecayModeNNHelper::TauDecayModeNNHelper
TauDecayModeNNHelper()=delete
TauDecayModeNNClassifier::m_decorateProb
Gaudi::Property< bool > m_decorateProb
Definition: TauDecayModeNNClassifier.h:56
TauDecayModeNNClassifier::initialize
virtual StatusCode initialize() override
Tool initializer.
Definition: TauDecayModeNNClassifier.cxx:36
tauRecTools::TauDecayModeNNHelper::Log10Robust
static float Log10Robust(const float val, const float min_val=0.)
Definition: TauDecayModeNNClassifier.cxx:379
TauDecayModeNNClassifier::m_maxConvTracks
Gaudi::Property< std::size_t > m_maxConvTracks
Definition: TauDecayModeNNClassifier.h:53
tauRecTools::TauDecayModeNNVariable::deltaPhiECal
static float deltaPhiECal(const TLorentzVector &p4, const std::pair< float, bool > &tau_phiTrkECal)
Definition: TauDecayModeNNClassifier.cxx:356
tauRecTools::TauDecayModeNNVariable::sModeNames
static const std::array< std::string, nClasses > sModeNames
Definition: TauDecayModeNNClassifier.h:85