ATLAS Offline Software
Loading...
Searching...
No Matches
MSVtxValidationAlg.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 MSVTXVALIDATIONALG_H
6#define MSVTXVALIDATIONALG_H
7
8#include <memory>
9#include <vector>
10#include <string>
11
12#include <TLorentzVector.h>
13#include <TH1.h>
14#include <TMath.h>
15
19
20#include "GaudiKernel/ToolHandle.h"
21#include "GaudiKernel/ITHistSvc.h"
22#include "GaudiKernel/SystemOfUnits.h"
23
26
36
42
43
44namespace defaults {
45 inline constexpr int Int = -99999;
46 inline constexpr float Float = -99999.;
47}
48
49
51 public:
52 // using the AthHistogramAlgorithm constructor which creates a THistSvc, whose pointer is accessible via histSvc()
54
55 virtual StatusCode initialize() override final;
56 virtual StatusCode execute() override final;
57 virtual StatusCode finalize() override final;
58
59 private:
60 // ================
61 // input containers
62 // ================
63 SG::ReadHandleKey<xAOD::EventInfo> m_evtKey{this, "EvtKey", "EventInfo"};
64 SG::ReadHandleKey<xAOD::TruthParticleContainer> m_TruthParticleKey{this, "TruthParticleKey", "TruthParticles"};
65 SG::ReadHandleKey<xAOD::TruthVertexContainer> m_TruthVertexKey{this, "TruthVertexKey", "TruthVertices"};
66 SG::ReadHandleKey<xAOD::TrackParticleContainer> m_TrackParticleKey{this, "TrackParticleKey", "InDetTrackParticles"};
67 SG::ReadHandleKey<xAOD::JetContainer> m_JetKey{this, "JetKey", "HLT_AntiKt4EMTopoJets_nojcalib"};
70 SG::ReadHandleKey<xAOD::MuonSegmentContainer> m_MuonSegKey{this, "MuonSegmentsKey", "MuonSegments"};
71 SG::ReadHandleKey<xAOD::TrackParticleContainer> m_TrackletKey{this, "TrackletKey", "MSonlyTracklets"};
72 SG::ReadHandleKey<xAOD::VertexContainer> m_MSVtxKey{this, "MSVertexKey", "MSDisplacedVertex"};
73
74 // ========
75 // triggers
76 // ========
77 // Tool names are passed from the python configuration
78 PublicToolHandle<Trig::TrigDecisionTool> m_trigDec{this, "TrigDecisionTool", "", "TrigDecisionTool (optional)"};
79 PublicToolHandle<Trig::R3MatchingTool> m_matchingTool{this, "R3MatchingTool", "", "R3MatchingTool (optional)"};
80 // struct for easy passing of trigger decisions
81 struct TriggerInfo {
82 std::string triggerString;
83 std::vector<std::string> names;
84 std::vector<bool> passed;
85 };
86 // jet trigger configuration
87 Gaudi::Property<std::string> m_triggerStringJets{this, "TriggerString", "HLT_j400.*"}; // accepts single trigger name, comma separated list of trigger names, or regex
88 Gaudi::Property<float> m_jetTriggerMatchingDR{this, "jetTriggerMatching", 0.1, "max dR distance for jet trigger matching"};
89
90
91 // Algorithm properties
92 Gaudi::Property<bool> m_isMC{this, "isMC", true, "is the input data simulated (MC) or real data?"};
93 Gaudi::Property<bool> m_readTriggers{this, "readTriggers", false, "should trigger information be read?"};
94 // what variables to fill
95 Gaudi::Property<bool> m_dumpTruthParticles{this, "dumpTruthParticles", false, "dump truth particles to the tree"};
96 Gaudi::Property<bool> m_dumpTruthVertices{this, "dumpTruthVertices", false, "dump truth vertices to the tree"};
97 Gaudi::Property<bool> m_fillMET{this, "fillMET", false, "add met information to the tree"};
98 Gaudi::Property<bool> m_fillJets{this, "fillJets", false, "add jet information to the tree"};
99 Gaudi::Property<bool> m_computeActiveVertices{this, "computeActiveVertices", false, "extracts active vertices in the vicinity of a jet by looping through truth particles. Requires isMC."};
100 Gaudi::Property<bool> m_computeVertexIso{this, "computeVertexIso", false, "add vertex isolation variables to the tree"};
101 // truth particles
102 Gaudi::Property<int> m_pdgId_portal{this, "pdgId_portal", 25, "Truth portal PDGId"};
103 Gaudi::Property<int> m_pdgId_llp{this, "pdgId_llp", 35, "Truth LLP PDGId"};
104 Gaudi::Property<bool> m_llp_genStableChildren{this, "llp_genStableChildren", false, "Restricts the TruthParticle-LLP linking to generator stable children rather than detector stable children"};
105 // isolation variables
106 Gaudi::Property<float> m_trackIso_pT{this, "trackIso_pT", 5.0*Gaudi::Units::GeV, "minimum track pT [GeV] to be considered for isolation"};
107 Gaudi::Property<float> m_softTrackIso_R{this, "softTrackIso_R", 0.2, "cone radius around vertex to sum up track pT"};
108 Gaudi::Property<float> m_jetIso_pT{this, "jetIso_pT", 20.0*Gaudi::Units::GeV, "minimum jet pT [GeV] to be considered for isolation"};
109 Gaudi::Property<float> m_jetIso_LogRatio{this, "jetIso_LogRatio", 0.5, "max log ECal/HCal ratio for jet to be considered for isolation"};
110
111 // ================
112 // filling routines
113 // ================
114 StatusCode fillTruth(const EventContext& ctx);
115 StatusCode fillTruthVertex(const EventContext& ctx);
116 StatusCode fillTruthParticle(const EventContext& ctx);
117 StatusCode fillJet(const EventContext& ctx);
118 StatusCode fillMet(const EventContext& ctx);
119 StatusCode fillMuons(const EventContext& ctx);
120 StatusCode fillTracklets(const EventContext& ctx);
121 StatusCode fillMSVtx(const EventContext& ctx);
122 // filling helpers
123 StatusCode fillLLP(std::vector<const xAOD::TruthParticle*>& llps);
124 void fillHits(const xAOD::Vertex* vtx, const std::string& decorator_str, MuonVal::VectorBranch<int>& branch);
125 TriggerInfo getTriggerDecisions(std::string triggerString);
126 template <typename T>
127 bool getTriggerMatchingDecision(const T* object, TriggerInfo& triggerInfo, float dRmatching);
128 StatusCode fillActiveVertices(const EventContext& ctx, const xAOD::Jet* jet);
129 StatusCode fillMSVtxIsolation(const xAOD::Vertex* msVtx, const xAOD::TrackParticleContainer* tracks, const xAOD::JetContainer* jets);
130
131
132 // ========================================================================
133 // tree and branches
134 // n-tuple branches with kinematics filled in units of GeV
135 // additional variables are added to IParticleFourMomBranch in initialize()
136 // ========================================================================
137 MuonVal::MuonTesterTree m_tree{"MSVtxValidTree", "MSVtxValidation"};
138 using ParticleBranchPtr_t = std::shared_ptr<MuonVal::IParticleFourMomBranch>;
139
140 // truth vertex
141 // taken from https://geant4.kek.jp/lxr/source/processes/hadronic/management/include/G4HadronicProcessType.hh#L46
142 std::unordered_set<int> m_hadronicProcessEnum = {111, 116, 121, 131, 132, 141, 151, 152, 161, 165, 166, 167, 210, 310};
143 // taken from https://geant4.kek.jp/lxr/source/processes/electromagnetic/utils/include/G4EmProcessSubType.hh#L43
144 std::unordered_set<int> m_emProcessEnum = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,21,22,23,24,25,26,30,31,40,49};
146 MuonVal::VectorBranch<int>& m_truthVtx_status{m_tree.newVector<int>("truthVtx_status")};
147 MuonVal::VectorBranch<int>& m_truthVtx_interactionType{m_tree.newVector<int>("truthVtx_ interactionType")}; // 0 for hadronic, 1 for EM, -1 for other
148 MuonVal::VectorBranch<int>& m_truthVtx_NchildrenDirect{m_tree.newVector<int>("truthVtx_NchildrenDirect")}; // number of outgoing particles from the vertex
149 MuonVal::VectorBranch<int>& m_truthVtx_Nchildren{m_tree.newVector<int>("truthVtx_Nchildren")}; // number of detector stable decay products
150 MuonVal::VectorBranch<int>& m_truthVtx_NchildrenCharged{m_tree.newVector<int>("truthVtx_NchildrenCharged")}; // number of charged detector stable decay products
151 MuonVal::MatrixBranch<int>& m_truthVtx_truthParticle_link{m_tree.newMatrix<int>("truthVtx_truthParticle_link")};
152
153 // truth particles
155 MuonVal::VectorBranch<int>& m_truthParticle_llpVtx_link{m_tree.newVector<int>("truthParticle_llpVtx_link")};
156 std::unique_ptr<std::vector<int>> m_truthParticle_llpVtx_link_tmp = std::make_unique<std::vector<int>>(); // temporary vector to hold the vertex link information before filling the branch
157 MuonVal::VectorBranch<int>& m_truthParticle_actVtx_link{m_tree.newVector<int>("truthParticle_actVtx_link")};
158 std::unique_ptr<std::vector<int>> m_truthParticle_actVtx_link_tmp = std::make_unique<std::vector<int>>();
159 MuonVal::VectorBranch<int>& m_truthParticle_truthVtx_link{m_tree.newVector<int>("truthParticle_truthVtx_link")};
160 std::unique_ptr<std::vector<int>> m_truthParticle_truthVtx_link_tmp = std::make_unique<std::vector<int>>();
161
162 // portal particle
165
166 // truth LLPs and their children
169 MuonVal::VectorBranch<int>& m_llp_Nchildren{m_tree.newVector<int>("llp_Nchildren")};
170 MuonVal::VectorBranch<int>& m_llp_NchildrenCharged{m_tree.newVector<int>("llp_NchildrenCharged")};
171
172 // truth displaced vertex
175 MuonVal::VectorBranch<float>& m_llpVtx_Lxy{m_tree.newVector<float>("llpVtx_Lxy")};
176 MuonVal::VectorBranch<float>& m_llpVtx_ctau{m_tree.newVector<float>("llpVtx_ctau")};
177 MuonVal::MatrixBranch<int>& m_llpVtx_truthParticle_link{m_tree.newMatrix<int>("llpVtx_truthParticle_link")};
178
179 // reconstructed MS vertex
182 MuonVal::VectorBranch<float>& m_msVtx_chi2{m_tree.newVector<float>("msVtx_chi2")};
183 MuonVal::VectorBranch<int>& m_msVtx_nDoF{m_tree.newVector<int>("msVtx_nDoF")};
184 MuonVal::VectorBranch<int>& m_msVtx_Ntrklet{m_tree.newVector<int>("msVtx_Ntrklet")};
185 // hits near the vertex
186 MuonVal::VectorBranch<int>& m_msVtx_nMDT{m_tree.newVector<int>("msVtx_nMDT")};
187 MuonVal::VectorBranch<int>& m_msVtx_nMDT_inwards{m_tree.newVector<int>("msVtx_nMDT_inwards")};
188 MuonVal::VectorBranch<int>& m_msVtx_nMDT_I{m_tree.newVector<int>("msVtx_nMDT_I")};
189 MuonVal::VectorBranch<int>& m_msVtx_nMDT_E{m_tree.newVector<int>("msVtx_nMDT_E")};
190 MuonVal::VectorBranch<int>& m_msVtx_nMDT_M{m_tree.newVector<int>("msVtx_nMDT_M")};
191 MuonVal::VectorBranch<int>& m_msVtx_nMDT_O{m_tree.newVector<int>("msVtx_nMDT_O")};
192 MuonVal::VectorBranch<int>& m_msVtx_nRPC{m_tree.newVector<int>("msVtx_nRPC")};
193 MuonVal::VectorBranch<int>& m_msVtx_nRPC_inwards{m_tree.newVector<int>("msVtx_nRPC_inwards")};
194 MuonVal::VectorBranch<int>& m_msVtx_nRPC_I{m_tree.newVector<int>("msVtx_nRPC_I")};
195 MuonVal::VectorBranch<int>& m_msVtx_nRPC_E{m_tree.newVector<int>("msVtx_nRPC_E")};
196 MuonVal::VectorBranch<int>& m_msVtx_nRPC_M{m_tree.newVector<int>("msVtx_nRPC_M")};
197 MuonVal::VectorBranch<int>& m_msVtx_nRPC_O{m_tree.newVector<int>("msVtx_nRPC_O")};
198 MuonVal::VectorBranch<int>& m_msVtx_nTGC{m_tree.newVector<int>("msVtx_nTGC")};
199 MuonVal::VectorBranch<int>& m_msVtx_nTGC_inwards{m_tree.newVector<int>("msVtx_nTGC_inwards")};
200 MuonVal::VectorBranch<int>& m_msVtx_nTGC_I{m_tree.newVector<int>("msVtx_nTGC_I")};
201 MuonVal::VectorBranch<int>& m_msVtx_nTGC_E{m_tree.newVector<int>("msVtx_nTGC_E")};
202 MuonVal::VectorBranch<int>& m_msVtx_nTGC_M{m_tree.newVector<int>("msVtx_nTGC_M")};
203 MuonVal::VectorBranch<int>& m_msVtx_nTGC_O{m_tree.newVector<int>("msVtx_nTGC_O")};
204 // vertex isolation variables
205 MuonVal::VectorBranch<float>& m_msVtx_isoTracks_mindR{m_tree.newVector<float>("msVtx_isoTracks_mindR")};
206 MuonVal::VectorBranch<float>& m_msVtx_isoTracks_pTsum{m_tree.newVector<float>("msVtx_isoTracks_pTsum")};
207 MuonVal::VectorBranch<float>& m_msVtx_isoJets_mindR{m_tree.newVector<float>("msVtx_isoJets_mindR")};
208
209 // tracklets
213 MuonVal::VectorBranch<float>& m_trklet_d0{m_tree.newVector<float>("trklet_d0")};
214 MuonVal::VectorBranch<float>& m_trklet_z0{m_tree.newVector<float>("trklet_z0")};
215 MuonVal::VectorBranch<float>& m_trklet_theta{m_tree.newVector<float>("trklet_theta")};
216 MuonVal::VectorBranch<float>& m_trklet_eta{m_tree.newVector<float>("trklet_eta")};
217 MuonVal::VectorBranch<float>& m_trklet_phi{m_tree.newVector<float>("trklet_phi")};
218 MuonVal::VectorBranch<float>& m_trklet_qOverP{m_tree.newVector<float>("trklet_qOverP")};
219 MuonVal::VectorBranch<float>& m_trklet_q{m_tree.newVector<float>("trklet_q")};
220 MuonVal::VectorBranch<int>& m_trklet_vtxLink{m_tree.newVector<int>("trklet_vtxLink")};
221
222 // muon segments
223 std::shared_ptr<MuonPRDTest::SegmentVariables> m_muonSeg{nullptr};
224
225 // muons
227
228 // jet
231 MuonVal::VectorBranch<int>& m_jet_triggers{m_tree.newVector<int>("jet_triggers")};
232 MuonVal::VectorBranch<int>& m_jet_NactVtx{m_tree.newVector<int>("jet_NactVtx")};
233 MuonVal::MatrixBranch<int>& m_jet_actVtx_link{m_tree.newMatrix<int>("jet_actVtx_link")};
234
235 // active vertices associated to jets
237 MuonVal::VectorBranch<int>& m_actVtx_NChildren{m_tree.newVector<int>("actVtx_NChildren")};
238 MuonVal::VectorBranch<int>& m_actVtx_chainDepth{m_tree.newVector<int>("actVtx_chainDepth")};
239 MuonVal::VectorBranch<float>& m_actVtx_energy{m_tree.newVector<float>("actVtx_energy")};
240 MuonVal::VectorBranch<float>& m_actVtx_mass{m_tree.newVector<float>("actVtx_mass")};
241 MuonVal::VectorBranch<float>& m_actVtx_pT{m_tree.newVector<float>("actVtx_pT")};
242 MuonVal::VectorBranch<float>& m_actVtx_scalarPtSum{m_tree.newVector<float>("actVtx_scalarPtSum")};
243 MuonVal::VectorBranch<int>& m_actVtx_jet_link{m_tree.newVector<int>("actVtx_jet_link")};
244 MuonVal::VectorBranch<float>& m_actVtx_jet_dEta{m_tree.newVector<float>("actVtx_jet_dEta")};
245 MuonVal::VectorBranch<float>& m_actVtx_jet_dPhi{m_tree.newVector<float>("actVtx_jet_dPhi")};
246 MuonVal::MatrixBranch<int>& m_actVtx_truthParticle_link{m_tree.newMatrix<int>("actVtx_truthParticle_link")};
247
248 // met
254
255
256 // ==========
257 // histograms
258 // ==========
259 TH1F* m_h_LLP1LLP2dR{nullptr};
260 TH1F* m_h_diLLPMass{nullptr};
261 TH1F* m_h_leadLLPLxy{nullptr};
262 TH1F* m_h_leadLLPLz{nullptr};
263 TH1F* m_h_leadLLPctau{nullptr};
264 TH1F* m_h_leadLLPpt{nullptr};
265 TH1F* m_h_subleadLLPLxy{nullptr};
266 TH1F* m_h_subleadLLPLz{nullptr};
267 TH1F* m_h_subleadLLPctau{nullptr};
268 TH1F* m_h_subleadLLPpt{nullptr};
269};
270
271#endif // MSVTXVALIDATIONALG_H
Property holding a SG store/key/clid from which a ReadHandle is made.
Handle class for reading from StoreGate.
AthHistogramAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:
MuonVal::VectorBranch< int > & m_msVtx_nTGC_M
Gaudi::Property< bool > m_fillMET
MuonVal::VectorBranch< int > & m_trklet_vtxLink
MuonVal::VectorBranch< float > & m_trklet_qOverP
Gaudi::Property< bool > m_dumpTruthVertices
MuonVal::VectorBranch< float > & m_trklet_theta
Gaudi::Property< bool > m_fillJets
MuonVal::ScalarBranch< float > & m_met
MuonVal::MatrixBranch< int > & m_llpVtx_truthParticle_link
MuonVal::ThreeVectorBranch m_llpVtx_pos
MuonVal::MatrixBranch< int > & m_jet_actVtx_link
MuonVal::VectorBranch< float > & m_msVtx_chi2
std::shared_ptr< MuonPRDTest::SegmentVariables > m_muonSeg
MuonVal::VectorBranch< float > & m_llpVtx_Lxy
MuonVal::VectorBranch< int > & m_jet_triggers
StatusCode fillActiveVertices(const EventContext &ctx, const xAOD::Jet *jet)
SG::ReadHandleKey< xAOD::VertexContainer > m_MSVtxKey
MuonVal::VectorBranch< float > & m_msVtx_isoTracks_pTsum
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_TruthParticleKey
MuonVal::VectorBranch< float > & m_trklet_z0
MuonVal::VectorBranch< int > & m_msVtx_nTGC_I
MuonVal::ThreeVectorBranch m_actVtx_pos
MuonVal::VectorBranch< float > & m_msVtx_isoTracks_mindR
Gaudi::Property< float > m_jetIso_pT
MuonVal::ThreeVectorBranch m_trklet_pos
std::unique_ptr< std::vector< int > > m_truthParticle_actVtx_link_tmp
MuonVal::VectorBranch< int > & m_msVtx_nMDT_I
bool getTriggerMatchingDecision(const T *object, TriggerInfo &triggerInfo, float dRmatching)
MuonVal::ScalarBranch< int > & m_msVtx_N
MuonVal::MatrixBranch< int > & m_truthVtx_truthParticle_link
std::unique_ptr< std::vector< int > > m_truthParticle_llpVtx_link_tmp
virtual StatusCode initialize() override final
SG::ReadHandleKey< xAOD::MuonContainer > m_MuonKey
Gaudi::Property< bool > m_dumpTruthParticles
MuonVal::VectorBranch< int > & m_msVtx_nRPC_E
ParticleBranchPtr_t m_portal
StatusCode fillTruthVertex(const EventContext &ctx)
MuonVal::VectorBranch< float > & m_actVtx_pT
StatusCode fillMSVtx(const EventContext &ctx)
SG::ReadHandleKey< xAOD::EventInfo > m_evtKey
MuonVal::ScalarBranch< float > & m_met_x
Gaudi::Property< float > m_jetTriggerMatchingDR
MuonVal::VectorBranch< int > & m_msVtx_nRPC_inwards
MuonVal::VectorBranch< int > & m_msVtx_nTGC_O
Gaudi::Property< bool > m_computeActiveVertices
ParticleBranchPtr_t m_truthParticle
MuonVal::VectorBranch< int > & m_msVtx_nMDT_inwards
Gaudi::Property< float > m_jetIso_LogRatio
Gaudi::Property< int > m_pdgId_portal
PublicToolHandle< Trig::R3MatchingTool > m_matchingTool
MuonVal::VectorBranch< int > & m_truthParticle_llpVtx_link
MuonVal::VectorBranch< float > & m_actVtx_energy
MuonVal::VectorBranch< int > & m_llp_NchildrenCharged
MuonVal::MuonTesterTree m_tree
MuonVal::ScalarBranch< int > & m_trklet_N
virtual StatusCode finalize() override final
Gaudi::Property< bool > m_llp_genStableChildren
SG::ReadHandleKey< xAOD::JetContainer > m_JetKey
MuonVal::VectorBranch< float > & m_actVtx_jet_dEta
std::unordered_set< int > m_emProcessEnum
MuonVal::VectorBranch< int > & m_truthParticle_truthVtx_link
MuonVal::ThreeVectorBranch m_msVtx_pos
virtual StatusCode execute() override final
StatusCode fillMSVtxIsolation(const xAOD::Vertex *msVtx, const xAOD::TrackParticleContainer *tracks, const xAOD::JetContainer *jets)
MuonVal::VectorBranch< int > & m_msVtx_nMDT_M
MuonVal::VectorBranch< int > & m_msVtx_nMDT
MuonVal::VectorBranch< int > & m_msVtx_nDoF
std::unordered_set< int > m_hadronicProcessEnum
MuonVal::ScalarBranch< int > & m_jet_N
MuonVal::VectorBranch< int > & m_msVtx_nRPC_I
MuonVal::ScalarBranch< float > & m_sumEt
MuonVal::VectorBranch< int > & m_msVtx_Ntrklet
StatusCode fillMet(const EventContext &ctx)
MuonVal::VectorBranch< int > & m_msVtx_nRPC_O
MuonVal::VectorBranch< int > & m_truthVtx_status
MuonVal::VectorBranch< float > & m_msVtx_isoJets_mindR
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_TrackletKey
TriggerInfo getTriggerDecisions(std::string triggerString)
StatusCode fillMuons(const EventContext &ctx)
StatusCode fillTruth(const EventContext &ctx)
MuonVal::VectorBranch< int > & m_msVtx_nRPC
SG::ReadHandleKey< xAOD::TruthVertexContainer > m_TruthVertexKey
MuonVal::VectorBranch< int > & m_truthVtx_NchildrenCharged
MuonVal::ScalarBranch< float > & m_met_phi
MuonVal::ScalarBranch< int > & m_llp_N
Gaudi::Property< bool > m_computeVertexIso
Gaudi::Property< float > m_softTrackIso_R
ParticleBranchPtr_t m_muon
MuonVal::VectorBranch< int > & m_truthParticle_actVtx_link
StatusCode fillLLP(std::vector< const xAOD::TruthParticle * > &llps)
SG::ReadHandleKey< xAOD::MissingETContainer > m_MetKey
MuonVal::VectorBranch< int > & m_msVtx_nMDT_E
MuonVal::VectorBranch< int > & m_msVtx_nTGC_inwards
MuonVal::ThreeVectorBranch m_trklet_mom
MuonVal::MatrixBranch< int > & m_actVtx_truthParticle_link
MuonVal::VectorBranch< float > & m_trklet_phi
Gaudi::Property< float > m_trackIso_pT
MuonVal::VectorBranch< float > & m_trklet_q
MuonVal::VectorBranch< float > & m_llpVtx_ctau
MuonVal::VectorBranch< int > & m_jet_NactVtx
MuonVal::ScalarBranch< int > & m_llpVtx_N
MuonVal::ScalarBranch< int > & m_portal_N
MuonVal::ThreeVectorBranch m_truthVtx_pos
MuonVal::ScalarBranch< float > & m_met_y
StatusCode fillJet(const EventContext &ctx)
ParticleBranchPtr_t m_llp
AthHistogramAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:
MuonVal::VectorBranch< float > & m_actVtx_mass
MuonVal::VectorBranch< float > & m_actVtx_jet_dPhi
MuonVal::VectorBranch< int > & m_msVtx_nTGC_E
SG::ReadHandleKey< xAOD::MuonSegmentContainer > m_MuonSegKey
MuonVal::VectorBranch< int > & m_actVtx_chainDepth
PublicToolHandle< Trig::TrigDecisionTool > m_trigDec
Gaudi::Property< int > m_pdgId_llp
void fillHits(const xAOD::Vertex *vtx, const std::string &decorator_str, MuonVal::VectorBranch< int > &branch)
Gaudi::Property< bool > m_isMC
Gaudi::Property< std::string > m_triggerStringJets
StatusCode fillTracklets(const EventContext &ctx)
MuonVal::VectorBranch< int > & m_msVtx_nMDT_O
std::shared_ptr< MuonVal::IParticleFourMomBranch > ParticleBranchPtr_t
MuonVal::VectorBranch< int > & m_msVtx_nRPC_M
MuonVal::VectorBranch< int > & m_msVtx_nTGC
MuonVal::VectorBranch< int > & m_actVtx_NChildren
Gaudi::Property< bool > m_readTriggers
StatusCode fillTruthParticle(const EventContext &ctx)
MuonVal::VectorBranch< int > & m_truthVtx_Nchildren
MuonVal::VectorBranch< int > & m_truthVtx_NchildrenDirect
std::unique_ptr< std::vector< int > > m_truthParticle_truthVtx_link_tmp
MuonVal::VectorBranch< int > & m_llp_Nchildren
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_TrackParticleKey
MuonVal::VectorBranch< int > & m_truthVtx_interactionType
MuonVal::VectorBranch< int > & m_actVtx_jet_link
MuonVal::VectorBranch< float > & m_trklet_eta
MuonVal::VectorBranch< float > & m_actVtx_scalarPtSum
ParticleBranchPtr_t m_jet
MuonVal::VectorBranch< float > & m_trklet_d0
Property holding a SG store/key/clid from which a ReadHandle is made.
This class contains trigger related information.
Definition TriggerInfo.h:77
constexpr int Int
constexpr float Float
Jet_v1 Jet
Definition of the current "jet version".
Vertex_v1 Vertex
Define the latest version of the vertex class.
TrackParticleContainer_v1 TrackParticleContainer
Definition of the current "TrackParticle container version".
JetContainer_v1 JetContainer
Definition of the current "jet container version".
std::vector< std::string > names