ATLAS Offline Software
Loading...
Searching...
No Matches
TauTrackRNNClassifier.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef TAURECTOOLS_TAUTRACKRNNCLASSIFIER_H
6#define TAURECTOOLS_TAUTRACKRNNCLASSIFIER_H
7
8// ASG include(s)
9#include "AsgTools/AsgTool.h"
13
14// xAOD include(s)
15#include "xAODTau/TauJet.h"
18
19// local include(s)
23
24#include <memory>
25
32
33namespace tauRecTools
34{
35
36class TrackRNN;
37
38// We currently allow several input types
39// The "ValueMap" is for simple rank-1 inputs
40typedef std::map<std::string, double> ValueMap;
41// The "VectorMap" is for sequence inputs
42typedef std::map<std::string, std::vector<double> > VectorMap;
43
44typedef std::map<std::string, ValueMap> NodeMap;
45typedef std::map<std::string, VectorMap> SeqNodeMap;
46
47//______________________________________________________________________________
49 : public TauRecToolBase
50{
51public:
52
54
55 TauTrackRNNClassifier(const std::string& name="TauTrackRNNClassifier");
57
58 // retrieve all track classifier sub tools
59 virtual StatusCode initialize() override;
60
61 // pass all tracks in the tau cone to all track classifier sub tools
63 virtual StatusCode executeTool(xAOD::TauJet& pTau,
64 const EventContext& ctx,
65 xAOD::TauTrackContainer& tauTrackContainer) const override;
66
67 private:
68
69 StatusCode classifyLRTTracks(std::vector<xAOD::TauTrack*>& vTracks, xAOD::TauJet& xTau) const;
70
71 ToolHandleArray<TrackRNN> m_vClassifier {this, "Classifiers", {}};
72
73 SG::ReadHandleKey<xAOD::VertexContainer> m_vertexContainerKey {this, "Key_vertexInputContainer", "PrimaryVertices", "Vertex container key"};
74
75 Gaudi::Property<bool> m_classifyLRT{this, "classifyLRT", true};
76 Gaudi::Property<bool> m_classifyLRTWithDedicated{this, "classifyLRTWithDedicated", false};
77 Gaudi::Property<bool> m_classifyOnlyCoreTracks{this, "ClassifyOnlyCoreTracks", false};
78 Gaudi::Property<bool> m_skipBadTracks{this, "SkipBadTracks", false};
79
80}; // class TauTrackRNNClassifier
81
82//______________________________________________________________________________
84 : public TauRecToolBase
85{
90
91 public:
92
93 TrackRNN(const std::string& name);
94 ~TrackRNN();
95
96 // configure the MVA object and build a general map to store variables
97 // for possible MVA inputs. Only Variables defined in the root weights file
98 // are passed to the MVA object
99 virtual StatusCode initialize() override;
100
101 // executes MVA object to get the RNN scores and set classification flags
102 StatusCode classifyTracks(std::vector<xAOD::TauTrack*>& vTracks,
103 xAOD::TauJet& xTau,
104 const xAOD::VertexContainer* vertexContainer,
105 const xAOD::TauTrackContainer& tauTrackContainer,
106 bool skipTracks=false) const;
107
108private:
109 // set RNN input variables in the corresponding map entries
110 StatusCode calculateVars(const std::vector<xAOD::TauTrack*>& vTracks,
111 const xAOD::TauJet& xTau,
112 const xAOD::VertexContainer* vertexContainer,
113 VectorMap& valueMap) const;
114
115 // properties
116 Gaudi::Property<std::string> m_inputWeightsPath{this, "InputWeightsPath", ""};
117 Gaudi::Property<unsigned int> m_nMaxNtracks{this, "MaxNtracks", 0};
118 Gaudi::Property<bool> m_removeDuplicateChargedTracks {this, "removeDuplicateChargedTracks", false};
119
120 std::unique_ptr<lwtDev::LightweightGraph> m_RNNClassifier;
121
122}; // class TrackRNN
123
124} // namespace tauRecTools
125
126#endif // TAURECTOOLS_TAUTRACKRNNCLASSIFIER_H
#define ASG_TOOL_CLASS2(CLASSNAME, INT1, INT2)
Property holding a SG store/key/clid from which a ReadHandle is made.
The base class for all tau tools.
Property holding a SG store/key/clid from which a ReadHandle is made.
TauRecToolBase(const std::string &name)
virtual StatusCode executeTool(xAOD::TauJet &, const EventContext &) const override
Execute - called for each tau candidate.
ToolHandleArray< TrackRNN > m_vClassifier
SG::ReadHandleKey< xAOD::VertexContainer > m_vertexContainerKey
TauTrackRNNClassifier(const std::string &name="TauTrackRNNClassifier")
Gaudi::Property< bool > m_classifyLRTWithDedicated
virtual StatusCode initialize() override
Tool initializer.
virtual StatusCode executeTool(xAOD::TauJet &pTau, const EventContext &ctx, xAOD::TauTrackContainer &tauTrackContainer) const override
StatusCode classifyLRTTracks(std::vector< xAOD::TauTrack * > &vTracks, xAOD::TauJet &xTau) const
Gaudi::Property< bool > m_classifyOnlyCoreTracks
Gaudi::Property< unsigned int > m_nMaxNtracks
Gaudi::Property< bool > m_removeDuplicateChargedTracks
virtual StatusCode initialize() override
Tool initializer.
Gaudi::Property< std::string > m_inputWeightsPath
StatusCode calculateVars(const std::vector< xAOD::TauTrack * > &vTracks, const xAOD::TauJet &xTau, const xAOD::VertexContainer *vertexContainer, VectorMap &valueMap) const
ASG_TOOL_CLASS2(TrackRNN, TauRecToolBase, ITauToolBase) public ~TrackRNN()
Create a proper constructor for Athena.
std::unique_ptr< lwtDev::LightweightGraph > m_RNNClassifier
StatusCode classifyTracks(std::vector< xAOD::TauTrack * > &vTracks, xAOD::TauJet &xTau, const xAOD::VertexContainer *vertexContainer, const xAOD::TauTrackContainer &tauTrackContainer, bool skipTracks=false) const
Implementation of a TrackClassifier based on an RNN.
Definition BDTHelper.cxx:12
std::map< std::string, std::vector< double > > VectorMap
std::map< std::string, double > ValueMap
std::map< std::string, ValueMap > NodeMap
std::map< std::string, VectorMap > SeqNodeMap
VertexContainer_v1 VertexContainer
Definition of the current "Vertex container version".
TauJet_v3 TauJet
Definition of the current "tau version".
Definition TauJet.h:17
TauTrackContainer_v1 TauTrackContainer
Definition of the current TauTrack container version.