ATLAS Offline Software
GNNVertexFitterTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef VKalVrt_GNNVertexFitterTool_H
6 #define VKalVrt_GNNVertexFitterTool_H
7 
12 
15 #include "GaudiKernel/ITHistSvc.h"
16 #include "GaudiKernel/ServiceHandle.h"
17 #include "GaudiKernel/ToolHandle.h"
20 #include "TMath.h"
26 #include "xAODJet/JetContainer.h"
28 #include "xAODTracking/Vertex.h"
31 
32 #include "algorithm"
33 #include "iostream"
34 #include "iterator"
35 #include "map"
36 #include "ranges"
37 #include "set"
38 #include "vector"
39 #include <numeric>
40 #include <vector>
41 
42 namespace Trk {
43 class TrkVKalVrtFitter;
44 class IVertexFitter;
45 class IVKalState;
46 class VxSecVKalVertexInfo;
47 } // namespace Trk
48 
49 namespace Rec {
50 
52  std::vector<const xAOD::TrackParticle *> listSelTracks; // Selected tracks after quality cuts
53  double beamX = 0.;
54  double beamY = 0.;
55  double beamZ = 0.;
56  double tanBeamTiltX = 0.;
57  double tanBeamTiltY = 0.;
58 };
59 
61 
62 public:
63  GNNVertexFitterTool(const std::string &type, const std::string &name, const IInterface *parent);
64  virtual ~GNNVertexFitterTool();
65 
68 
70  const xAOD::Vertex &primaryVertex, const EventContext &) const;
71 
72  // Tools
73  ToolHandle<Trk::TrkVKalVrtFitter> m_vertexFitterTool;
74 
75  // Read handles
77  "Jet GNN Deco Read Key for track link"};
79  "Jet GNN Deco Read Key for track origin"};
81  "Jet GNN Deco Read Key for vertex link"};
82  SG::ReadHandleKey<xAOD::EventInfo> m_eventInfoKey{this, "eventInfoKey", "EventInfo", "EventInfo container to use"};
83 
84  // Write handles
86  this, "jetDecorKeyJetLink", "", "WriteDecorHandleKey for adding VertexLink to Jets"};
88  this, "jetDecorKeyVertexNumber", "", "WriteDecorHandleKey for adding number of vertices within a Jet"};
89 
90  // Conditions
91  SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey{this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot"};
92 
93  // Access the Primary Vertex Info
95 
96 private:
97 
98  TLorentzVector TotalMom(const std::vector<const xAOD::TrackParticle *> &selTrk) const;
99 
100  double vrtVrtDist(const xAOD::Vertex &primVrt, const Amg::Vector3D &secVrt, const std::vector<double> &vrtErr,
101  double &signif) const;
102 
103  struct WrkVrt {
104  bool Good = true;
105  std::deque<long int> selTrk;
107  TLorentzVector vertexMom;
108  long int vertexCharge{};
109  std::vector<double> vertexCov;
110  std::vector<double> chi2PerTrk;
111  std::vector<std::vector<double>> trkAtVrt;
112  double chi2{};
113  }; // end WrkVrt
114 
126 
127  StringProperty m_gnnModel{this, "GNNModel", "GN2v01", "GNN model being used" };
128  StringProperty m_jetCollection{this, "JetCollection", "AntiKt4EMPFlowJets", "Jet Collection being used" };
129  BooleanProperty m_includePrimaryVertex {this, "includePrimaryVertex", false, "Include Primary Vertices"};
130  BooleanProperty m_removeNonHFVertices {this, "removeNonHFVertices", true, "Remove vertices with no heavy flavour tracks"};
131  BooleanProperty m_doInclusiveVertexing {this, "doInclusiveVertexing", false, "Merge all vertices so that there is at most one vertex per jet"};
132  DoubleProperty m_maxChi2{this, "maxChi2", 20, "Maximum Chi Squared"};
133  BooleanProperty m_applyCuts {this, "applyCuts", false, "Cut on vertex properties"};
134  DoubleProperty m_minLxy{this, "minLxy", 0.0, "Minimum radial distance from the PV"};
135  DoubleProperty m_maxLxy{this, "maxLxy", 1e5, "Maximum radial distance from the PV"};
136  DoubleProperty m_minSig3D{this, "minSig3D", 0, "Minimum 3D significance from the PV"};
137  DoubleProperty m_HFRatioThres{this, "HFRatio", 0.0, "The threshold for the Ratio between HF tracks and all track for a vertex"};
138  DoubleProperty m_minNTrack{this, "minNTrk", 2, "Minimum number of tracks in a vertex"};
139  double m_massPi;
140 };
141 } // namespace Rec
142 
143 #endif
144 
Rec::GNNVertexFitterTool::fitAllVertices
virtual StatusCode fitAllVertices(const xAOD::JetContainer *, xAOD::VertexContainer *, const xAOD::Vertex &primaryVertex, const EventContext &) const
Definition: GNNVertexFitterTool.cxx:101
SG::WriteDecorHandleKey
Property holding a SG store/key/clid/attr name from which a WriteDecorHandle is made.
Definition: StoreGate/StoreGate/WriteDecorHandleKey.h:89
Rec::GNNVertexFitterTool::m_maxChi2
DoubleProperty m_maxChi2
Definition: GNNVertexFitterTool.h:132
Rec::GNNVertexFitterTool::m_thePV
const xAOD::Vertex * m_thePV
Definition: GNNVertexFitterTool.h:94
ITrackSummaryTool.h
Rec::GNNVertexFitterTool::m_deco_nHFTracks
SG::AuxElement::Decorator< float > m_deco_nHFTracks
Definition: GNNVertexFitterTool.h:125
Rec::workVectorArrxAOD::beamY
double beamY
Definition: GNNVertexFitterTool.h:54
Rec::GNNVertexFitterTool::m_vertexLinksKey
SG::ReadDecorHandleKey< xAOD::JetContainer > m_vertexLinksKey
Definition: GNNVertexFitterTool.h:80
ReadDecorHandleKey.h
Property holding a SG store/key/clid/attr name from which a ReadDecorHandle is made.
Rec::GNNVertexFitterTool::m_deco_sig3D
SG::AuxElement::Decorator< float > m_deco_sig3D
Definition: GNNVertexFitterTool.h:120
Rec::GNNVertexFitterTool::m_jetWriteDecorKeyVertexLink
SG::WriteDecorHandleKey< xAOD::JetContainer > m_jetWriteDecorKeyVertexLink
Definition: GNNVertexFitterTool.h:85
Rec::workVectorArrxAOD::listSelTracks
std::vector< const xAOD::TrackParticle * > listSelTracks
Definition: GNNVertexFitterTool.h:52
Rec::GNNVertexFitterTool::m_deco_lxy
SG::AuxElement::Decorator< float > m_deco_lxy
Definition: GNNVertexFitterTool.h:119
Rec::GNNVertexFitterTool::WrkVrt::selTrk
std::deque< long int > selTrk
Definition: GNNVertexFitterTool.h:105
Rec::GNNVertexFitterTool::m_trackLinksKey
SG::ReadDecorHandleKey< xAOD::JetContainer > m_trackLinksKey
Definition: GNNVertexFitterTool.h:76
Rec::GNNVertexFitterTool::WrkVrt::trkAtVrt
std::vector< std::vector< double > > trkAtVrt
Definition: GNNVertexFitterTool.h:111
Rec::GNNVertexFitterTool::m_deco_deltaR
SG::AuxElement::Decorator< float > m_deco_deltaR
Definition: GNNVertexFitterTool.h:121
Rec::GNNVertexFitterTool::m_minSig3D
DoubleProperty m_minSig3D
Definition: GNNVertexFitterTool.h:136
Rec::GNNVertexFitterTool::m_includePrimaryVertex
BooleanProperty m_includePrimaryVertex
Definition: GNNVertexFitterTool.h:129
Rec::workVectorArrxAOD::tanBeamTiltX
double tanBeamTiltX
Definition: GNNVertexFitterTool.h:56
Rec::GNNVertexFitterTool::WrkVrt::chi2PerTrk
std::vector< double > chi2PerTrk
Definition: GNNVertexFitterTool.h:110
Rec::GNNVertexFitterTool
Definition: GNNVertexFitterTool.h:60
SG::ReadHandleKey< xAOD::EventInfo >
Rec::GNNVertexFitterTool::m_deco_charge
SG::AuxElement::Decorator< float > m_deco_charge
Definition: GNNVertexFitterTool.h:117
Rec::GNNVertexFitterTool::~GNNVertexFitterTool
virtual ~GNNVertexFitterTool()
Definition: GNNVertexFitterTool.cxx:36
Rec::GNNVertexFitterTool::m_beamSpotKey
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
Definition: GNNVertexFitterTool.h:91
TrkVKalVrtFitter.h
Rec::GNNVertexFitterTool::m_vertexFitterTool
ToolHandle< Trk::TrkVKalVrtFitter > m_vertexFitterTool
Definition: GNNVertexFitterTool.h:73
Rec::GNNVertexFitterTool::m_massPi
double m_massPi
Definition: GNNVertexFitterTool.h:139
Rec::GNNVertexFitterTool::WrkVrt::Good
bool Good
Definition: GNNVertexFitterTool.h:104
Rec::GNNVertexFitterTool::m_deco_eFrac
SG::AuxElement::Decorator< float > m_deco_eFrac
Definition: GNNVertexFitterTool.h:124
Rec::GNNVertexFitterTool::m_trackOriginsKey
SG::ReadDecorHandleKey< xAOD::JetContainer > m_trackOriginsKey
Definition: GNNVertexFitterTool.h:78
WriteDecorHandleKey.h
Property holding a SG store/key/clid/attr name from which a WriteDecorHandle is made.
SG::Decorator
Helper class to provide type-safe access to aux data.
Definition: Decorator.h:58
Rec::IGNNVertexFitterInterface
Definition: IGNNVertexFitterInterface.h:17
Rec::GNNVertexFitterTool::m_jetCollection
StringProperty m_jetCollection
Definition: GNNVertexFitterTool.h:128
Rec
Name: MuonSpContainer.h Package : offline/Reconstruction/MuonIdentification/muonEvent.
Definition: FakeTrackBuilder.h:10
Rec::GNNVertexFitterTool::initialize
StatusCode initialize()
Definition: GNNVertexFitterTool.cxx:38
Rec::GNNVertexFitterTool::finalize
StatusCode finalize()
Definition: GNNVertexFitterTool.cxx:353
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
Rec::GNNVertexFitterTool::WrkVrt::vertexCharge
long int vertexCharge
Definition: GNNVertexFitterTool.h:108
AthAlgTool.h
TrkVKalVrtCore.h
Rec::GNNVertexFitterTool::GNNVertexFitterTool
GNNVertexFitterTool(const std::string &type, const std::string &name, const IInterface *parent)
Definition: GNNVertexFitterTool.cxx:13
Rec::GNNVertexFitterTool::WrkVrt::chi2
double chi2
Definition: GNNVertexFitterTool.h:112
test_pyathena.parent
parent
Definition: test_pyathena.py:15
Rec::GNNVertexFitterTool::WrkVrt
Definition: GNNVertexFitterTool.h:103
VxSecVertexInfo.h
Rec::workVectorArrxAOD::tanBeamTiltY
double tanBeamTiltY
Definition: GNNVertexFitterTool.h:57
Rec::GNNVertexFitterTool::m_jetWriteDecorKeyVertexNumber
SG::WriteDecorHandleKey< xAOD::JetContainer > m_jetWriteDecorKeyVertexNumber
Definition: GNNVertexFitterTool.h:87
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
Vertex.h
Rec::GNNVertexFitterTool::m_doInclusiveVertexing
BooleanProperty m_doInclusiveVertexing
Definition: GNNVertexFitterTool.h:131
Rec::GNNVertexFitterTool::m_minLxy
DoubleProperty m_minLxy
Definition: GNNVertexFitterTool.h:134
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
BTaggingContainer.h
Rec::GNNVertexFitterTool::m_applyCuts
BooleanProperty m_applyCuts
Definition: GNNVertexFitterTool.h:133
Rec::workVectorArrxAOD
Definition: GNNVertexFitterTool.h:51
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
Rec::GNNVertexFitterTool::WrkVrt::vertexCov
std::vector< double > vertexCov
Definition: GNNVertexFitterTool.h:109
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
EventInfo.h
Rec::GNNVertexFitterTool::m_maxLxy
DoubleProperty m_maxLxy
Definition: GNNVertexFitterTool.h:135
InDetTrackTruthOriginDefs.h
SG::ReadCondHandleKey< InDet::BeamSpotData >
Rec::GNNVertexFitterTool::m_removeNonHFVertices
BooleanProperty m_removeNonHFVertices
Definition: GNNVertexFitterTool.h:130
Rec::GNNVertexFitterTool::WrkVrt::vertex
Amg::Vector3D vertex
Definition: GNNVertexFitterTool.h:106
Rec::GNNVertexFitterTool::m_deco_mass
SG::AuxElement::Decorator< float > m_deco_mass
Definition: GNNVertexFitterTool.h:115
Rec::GNNVertexFitterTool::TotalMom
TLorentzVector TotalMom(const std::vector< const xAOD::TrackParticle * > &selTrk) const
Definition: GNNVertexFitterTool.cxx:62
VertexContainer.h
Rec::GNNVertexFitterTool::m_HFRatioThres
DoubleProperty m_HFRatioThres
Definition: GNNVertexFitterTool.h:137
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
JetContainer.h
Rec::GNNVertexFitterTool::WrkVrt::vertexMom
TLorentzVector vertexMom
Definition: GNNVertexFitterTool.h:107
GeoPrimitivesHelpers.h
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
IGNNVertexFitterInterface.h
Rec::GNNVertexFitterTool::m_deco_vPos
SG::AuxElement::Decorator< float > m_deco_vPos
Definition: GNNVertexFitterTool.h:118
Rec::GNNVertexFitterTool::m_deco_ntrk
SG::AuxElement::Decorator< float > m_deco_ntrk
Definition: GNNVertexFitterTool.h:122
BeamSpotData.h
Rec::workVectorArrxAOD::beamX
double beamX
Definition: GNNVertexFitterTool.h:53
AthAlgTool
Definition: AthAlgTool.h:26
SG::ReadDecorHandleKey
Property holding a SG store/key/clid/attr name from which a ReadDecorHandle is made.
Definition: StoreGate/StoreGate/ReadDecorHandleKey.h:85
Rec::GNNVertexFitterTool::m_deco_pt
SG::AuxElement::Decorator< float > m_deco_pt
Definition: GNNVertexFitterTool.h:116
Rec::GNNVertexFitterTool::m_deco_lxyz
SG::AuxElement::Decorator< float > m_deco_lxyz
Definition: GNNVertexFitterTool.h:123
AnalysisMisc.h
TrackParticleContainer.h
Rec::GNNVertexFitterTool::m_gnnModel
StringProperty m_gnnModel
Definition: GNNVertexFitterTool.h:127
Rec::workVectorArrxAOD::beamZ
double beamZ
Definition: GNNVertexFitterTool.h:55
Rec::GNNVertexFitterTool::m_minNTrack
DoubleProperty m_minNTrack
Definition: GNNVertexFitterTool.h:138
Rec::GNNVertexFitterTool::m_eventInfoKey
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfoKey
Definition: GNNVertexFitterTool.h:82
Rec::GNNVertexFitterTool::vrtVrtDist
double vrtVrtDist(const xAOD::Vertex &primVrt, const Amg::Vector3D &secVrt, const std::vector< double > &vrtErr, double &signif) const
Definition: GNNVertexFitterTool.cxx:73