ATLAS Offline Software
MVATrackVertexAssociationTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef MVATRACKVERTEXASSOCIATIONTOOL_H
6 #define MVATRACKVERTEXASSOCIATIONTOOL_H
7 
8 // Includes from this package
11 
12 // FrameWork includes
13 #include "AsgTools/AsgTool.h"
15 #include "AthLinks/ElementLink.h"
18 
19 // EDM includes
23 #include "xAODTracking/VertexFwd.h"
25 
26 // lwtnn includes
27 #include "lwtnn/LightweightNeuralNetwork.hh"
28 #include "lwtnn/LightweightGraph.hh"
29 
30 // STL includes
31 #include <map>
32 #include <memory>
33 
34 namespace CP {
35 
37 {
39 
40 
41  // Public methods:
43 public:
44 
45  MVATrackVertexAssociationTool(const std::string& name);
46 
47  virtual StatusCode initialize() override;
48 
49  virtual bool isCompatible(const xAOD::TrackParticle& trk, const xAOD::Vertex& vx) const override;
50  virtual bool isCompatible(const xAOD::TrackParticle& trk) const override;
51 
52  virtual xAOD::TrackVertexAssociationMap getMatchMap(std::vector<const xAOD::TrackParticle*>& trk_list, std::vector<const xAOD::Vertex*>& vx_list) const override;
53  virtual xAOD::TrackVertexAssociationMap getMatchMap(const xAOD::TrackParticleContainer& trk_cont, const xAOD::VertexContainer& vx_cont) const override;
54 
56  virtual const xAOD::Vertex* getUniqueMatchVertex(const xAOD::TrackParticle& trk, std::vector<const xAOD::Vertex*>& vx_list) const override;
57 
58  virtual xAOD::TrackVertexAssociationMap getUniqueMatchMap(std::vector<const xAOD::TrackParticle*>& trk_list, std::vector<const xAOD::Vertex*>& vx_list) const override;
59  virtual xAOD::TrackVertexAssociationMap getUniqueMatchMap(const xAOD::TrackParticleContainer& trk_cont, const xAOD::VertexContainer& vx_cont) const override;
60 
62  // Private methods:
64 private:
65 
66  bool isMatch(const xAOD::TrackParticle& trk, const xAOD::Vertex& vx, float& mvaOutput, const xAOD::EventInfo* evtInfo = nullptr) const;
67 
68  template <typename T, typename V>
69  xAOD::TrackVertexAssociationMap getMatchMapInternal(const T& trk_list, const V& vx_list) const;
70 
71  template <typename T, typename V>
72  xAOD::TrackVertexAssociationMap getUniqueMatchMapInternal(const T& trk_list, const V& vx_list) const;
73 
74  template <typename T>
75  const xAOD::Vertex* getUniqueMatchVertexInternal(const xAOD::TrackParticle& trk, const T& vx_list) const;
76 
78  float evaluateNetwork(const xAOD::TrackParticle& trk, const xAOD::Vertex& vx, const xAOD::EventInfo& evt) const;
79 
80 
82  // Private data:
84 private:
87 
89  Gaudi::Property<std::string> m_fileName{this, "NetworkFileName", "" };
90 
92  Gaudi::Property<std::vector<std::string>> m_inputNames{this, "InputNames", {},
93  "Vector of the network's input variable names (std::vector<std::string>)." };
94 
96  Gaudi::Property<std::vector<int>> m_inputTypes{this,"InputTypes", {},
97  "Vector of the network's input variable evaluator types (std::vector<CP::MVAEvaluatorInput::Input>)."};
98 
100  Gaudi::Property<std::string> m_outputName{this, "OutputNodeName", "",
101  "Name of the output node to cut on for TVA."} ;
102 
104  Gaudi::Property<bool> m_isSequential{this, "IsSequential", true,
105  "Is the network sequential (true) or functional (false)."};
106 
108  Gaudi::Property<std::string> m_wp{this, "WorkingPoint", "Tight", "TVA working point to apply."};
109 
111  Gaudi::Property<float> m_cut{this, "OutputCut" , -1.0,
112  "TVA cut value on the output value (set manually with \"Custom\" WP)."};
113 
115  Gaudi::Property<bool> m_usePathResolver{this, "UsePathResolver", true,
116  "Use the PathResolver for finding the input lwtnn network file."};
117 
119  Gaudi::Property<std::string> m_hardScatterDeco{this, "HardScatterLinkDeco", "hardScatterVertexLink",
120  "The decoration name of the ElementLink to the hardscatter vertex (found on xAOD::EventInfo)"};
121 
123 
124 private:
125 
128 
131 
134 
136  SG::ReadHandleKey<xAOD::EventInfo> m_eventInfo {this, "EventInfo", "EventInfo", "EventInfo key"};
137 
140  "Overwrriten in the configuration step by the <HardScatterLinkDeco> property"};
141 
143  std::string m_inputNodeName = "";
144 
146  std::unique_ptr<lwt::LightweightNeuralNetwork> m_network;
147  std::unique_ptr<lwt::LightweightGraph> m_graph;
148 
150 
151 };
152 
153 } // namespace CP
154 
155 #endif // MVATRACKVERTEXASSOCIATIONTOOL_H
CP::MVATrackVertexAssociationTool::m_eventInfo
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfo
EventInfo key.
Definition: MVATrackVertexAssociationTool.h:136
CP::MVATrackVertexAssociationTool::m_inputMap
MVAInputEvaluator::InputSelectionMap m_inputMap
Input variable name/type map.
Definition: MVATrackVertexAssociationTool.h:130
asg::AsgTool
Base class for the dual-use tool implementation classes.
Definition: AsgTool.h:47
PropertyWrapper.h
VertexContainerFwd.h
CP::ITrackVertexAssociationTool
Definition: ITrackVertexAssociationTool.h:24
CP::MVATrackVertexAssociationTool::m_isSequential
Gaudi::Property< bool > m_isSequential
Is the network sequential or functional.
Definition: MVATrackVertexAssociationTool.h:104
CP::MVATrackVertexAssociationTool::initializeNetwork
StatusCode initializeNetwork()
Definition: MVATrackVertexAssociationTool.cxx:226
LArG4FSStartPointFilter.evt
evt
Definition: LArG4FSStartPointFilter.py:42
xAOD::TrackVertexAssociationMap
std::map< const xAOD::Vertex *, xAOD::TrackVertexAssociationList > TrackVertexAssociationMap
Definition: TrackVertexAssociationMap.h:19
SG::ReadHandleKey< xAOD::EventInfo >
CP::MVATrackVertexAssociationTool::m_inputNames
Gaudi::Property< std::vector< std::string > > m_inputNames
Vector of input variable names.
Definition: MVATrackVertexAssociationTool.h:92
CP::MVAInputEvaluator
Definition: MVAInputEvaluator.h:19
CP
Select isolated Photons, Electrons and Muons.
Definition: Control/xAODRootAccess/xAODRootAccess/TEvent.h:48
CP::MVATrackVertexAssociationTool::m_outputName
Gaudi::Property< std::string > m_outputName
Name of the output node to cut on.
Definition: MVATrackVertexAssociationTool.h:100
CP::MVATrackVertexAssociationTool::getMatchMapInternal
xAOD::TrackVertexAssociationMap getMatchMapInternal(const T &trk_list, const V &vx_list) const
Definition: MVATrackVertexAssociationTool.cxx:158
CP::MVATrackVertexAssociationTool::initialize
virtual StatusCode initialize() override
Dummy implementation of the initialisation function.
Definition: MVATrackVertexAssociationTool.cxx:39
ReadDecorHandleKey.h
Property holding a SG store/key/clid/attr name from which a ReadDecorHandle is made.
CP::MVATrackVertexAssociationTool::getUniqueMatchMap
virtual xAOD::TrackVertexAssociationMap getUniqueMatchMap(std::vector< const xAOD::TrackParticle * > &trk_list, std::vector< const xAOD::Vertex * > &vx_list) const override
This functions related to the previous functions, will return a 2D vector to store the best matched t...
Definition: MVATrackVertexAssociationTool.cxx:118
CP::MVATrackVertexAssociationTool::getUniqueMatchVertex
virtual const xAOD::Vertex * getUniqueMatchVertex(const xAOD::TrackParticle &trk, std::vector< const xAOD::Vertex * > &vx_list) const override
Definition: MVATrackVertexAssociationTool.cxx:105
CP::MVATrackVertexAssociationTool::m_cut
Gaudi::Property< float > m_cut
TVA cut value on the output discriminant.
Definition: MVATrackVertexAssociationTool.h:111
CP::MVATrackVertexAssociationTool::m_network
std::unique_ptr< lwt::LightweightNeuralNetwork > m_network
Network as implemented using lwtnn.
Definition: MVATrackVertexAssociationTool.h:146
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ReadHandleKey.h
Property holding a SG store/key/clid from which a ReadHandle is made.
CP::MVATrackVertexAssociationTool
Definition: MVATrackVertexAssociationTool.h:37
CP::MVATrackVertexAssociationTool::getUniqueMatchMapInternal
xAOD::TrackVertexAssociationMap getUniqueMatchMapInternal(const T &trk_list, const V &vx_list) const
Definition: MVATrackVertexAssociationTool.cxx:202
ITrackVertexAssociationTool.h
DataVector< xAOD::TrackParticle_v1 >
CP::MVATrackVertexAssociationTool::m_wp
Gaudi::Property< std::string > m_wp
TVA working point.
Definition: MVATrackVertexAssociationTool.h:108
CP::MVATrackVertexAssociationTool::m_inputTypes
Gaudi::Property< std::vector< int > > m_inputTypes
Vector of input variable types.
Definition: MVATrackVertexAssociationTool.h:96
CP::MVAInputEvaluator::InputSelectionMap
std::map< std::string, Input > InputSelectionMap
Definition: MVAInputEvaluator.h:65
CP::MVATrackVertexAssociationTool::m_fileName
Gaudi::Property< std::string > m_fileName
Input lwtnn network file.
Definition: MVATrackVertexAssociationTool.h:89
CP::MVATrackVertexAssociationTool::m_inputNodeName
std::string m_inputNodeName
Name of the input node (for functional modes)
Definition: MVATrackVertexAssociationTool.h:143
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
CP::MVATrackVertexAssociationTool::m_hardScatterDecoKey
SG::ReadDecorHandleKey< xAOD::EventInfo > m_hardScatterDecoKey
Hardscatter vertex link key.
Definition: MVATrackVertexAssociationTool.h:139
CP::MVATrackVertexAssociationTool::getMatchMap
virtual xAOD::TrackVertexAssociationMap getMatchMap(std::vector< const xAOD::TrackParticle * > &trk_list, std::vector< const xAOD::Vertex * > &vx_list) const override
Definition: MVATrackVertexAssociationTool.cxx:97
VertexFwd.h
EventInfo.h
xAOD::EventInfo_v1
Class describing the basic event information.
Definition: EventInfo_v1.h:43
CP::MVATrackVertexAssociationTool::m_inputEval
MVAInputEvaluator m_inputEval
Input variable evaluator.
Definition: MVATrackVertexAssociationTool.h:133
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
CP::MVATrackVertexAssociationTool::MVATrackVertexAssociationTool
MVATrackVertexAssociationTool(const std::string &name)
Definition: MVATrackVertexAssociationTool.cxx:36
CP::MVATrackVertexAssociationTool::isMatch
bool isMatch(const xAOD::TrackParticle &trk, const xAOD::Vertex &vx, float &mvaOutput, const xAOD::EventInfo *evtInfo=nullptr) const
Definition: MVATrackVertexAssociationTool.cxx:130
ASG_TOOL_CLASS
#define ASG_TOOL_CLASS(CLASSNAME, INT1)
Definition: AsgToolMacros.h:68
CP::MVATrackVertexAssociationTool::evaluateNetwork
float evaluateNetwork(const xAOD::TrackParticle &trk, const xAOD::Vertex &vx, const xAOD::EventInfo &evt) const
Definition: MVATrackVertexAssociationTool.cxx:276
TrackParticleFwd.h
MVAInputEvaluator.h
CP::MVATrackVertexAssociationTool::isCompatible
virtual bool isCompatible(const xAOD::TrackParticle &trk, const xAOD::Vertex &vx) const override
This function just return the decision of whether the track is matched to the Vertex Not sure whether...
Definition: MVATrackVertexAssociationTool.cxx:77
CP::MVATrackVertexAssociationTool::getUniqueMatchVertexInternal
const xAOD::Vertex * getUniqueMatchVertexInternal(const xAOD::TrackParticle &trk, const T &vx_list) const
Definition: MVATrackVertexAssociationTool.cxx:178
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
SG::ReadDecorHandleKey
Property holding a SG store/key/clid/attr name from which a ReadDecorHandle is made.
Definition: StoreGate/StoreGate/ReadDecorHandleKey.h:85
AsgTool.h
CP::MVATrackVertexAssociationTool::getUniqueMatchVertexLink
virtual ElementLink< xAOD::VertexContainer > getUniqueMatchVertexLink(const xAOD::TrackParticle &trk, const xAOD::VertexContainer &vx_cont) const override
This functions will return the best matched vertex.
Definition: MVATrackVertexAssociationTool.cxx:109
CP::MVATrackVertexAssociationTool::m_usePathResolver
Gaudi::Property< bool > m_usePathResolver
Use the PathResolver to find our input file.
Definition: MVATrackVertexAssociationTool.h:115
TrackParticleContainerFwd.h
CP::MVATrackVertexAssociationTool::m_graph
std::unique_ptr< lwt::LightweightGraph > m_graph
Definition: MVATrackVertexAssociationTool.h:147
CP::MVATrackVertexAssociationTool::m_hardScatterDeco
Gaudi::Property< std::string > m_hardScatterDeco
The decoration name of the ElementLink to the hardscatter vertex (found on xAOD::EventInfo)
Definition: MVATrackVertexAssociationTool.h:119