ATLAS Offline Software
Loading...
Searching...
No Matches
TrackAnalysisCollections.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 INDETTRACKPERFMON_TRACKANALYSISCOLLECTIONS_H
6#define INDETTRACKPERFMON_TRACKANALYSISCOLLECTIONS_H
7
14
19#include "GaudiKernel/ISvcLocator.h"
20#include "GaudiKernel/Service.h"
23
31
35
37#include <string>
38#include <vector>
39#include <memory>
40#include <unordered_map>
41#include <utility>
42
43
44namespace IDTPM {
45
47
48 public:
49
54 enum Stage : size_t { FULL, FS, InRoI, NStages };
55
57 enum Counter : size_t { ALL, SELECTED, INROI, MATCHED, NCOUNTERS };
58
60 TrackAnalysisCollections( const std::string& anaTag );
61
64
67
69 StatusCode initialize();
70
72
74 StatusCode fillEventInfo(
75 const SG::ReadHandleKey<xAOD::EventInfo>& eventInfoHandleKey,
76 const SG::ReadHandleKey< xAOD::TruthEventContainer >& truthEventHandleKey,
77 const SG::ReadHandleKey< xAOD::TruthPileupEventContainer >& truthPUEventHandleKey );
78
80 StatusCode fillTruthPartContainer(
81 const SG::ReadHandleKey< xAOD::TruthParticleContainer >& truthPartHandleKey );
82
83 StatusCode fillOfflTrackContainer(
85
86 StatusCode fillTrigTrackContainer(
88
90 StatusCode fillTestTruthVec(
91 const std::vector< const xAOD::TruthParticle* >& vec,
92 Stage stage = FULL );
93
94 StatusCode fillTestTrackVec(
95 const std::vector< const xAOD::TrackParticle* >& vec,
96 Stage stage = FULL );
97
99 StatusCode fillRefTruthVec(
100 const std::vector< const xAOD::TruthParticle* >& vec,
101 Stage stage = FULL );
102
103 StatusCode fillRefTrackVec(
104 const std::vector< const xAOD::TrackParticle* >& vec,
105 Stage stage = FULL );
106
108 StatusCode fillTruthPartVec(
109 const std::vector< const xAOD::TruthParticle* >& vec,
110 Stage stage = FULL );
111
112 StatusCode fillOfflTrackVec(
113 const std::vector< const xAOD::TrackParticle* >& vec,
114 Stage stage = FULL );
115
116 StatusCode fillTrigTrackVec(
117 const std::vector< const xAOD::TrackParticle* >& vec,
118 Stage stage = FULL );
119
121 StatusCode fillTruthVertexContainer(
122 const SG::ReadHandleKey< xAOD::TruthVertexContainer >& truthVertexHandleKey );
123
124 StatusCode fillOfflVertexContainer(
126
127 StatusCode fillTrigVertexContainer(
129
131 StatusCode fillTestTruthVertexVec(
132 const std::vector< const xAOD::TruthVertex* >& vec,
133 Stage stage = FULL );
134
135 StatusCode fillTestRecoVertexVec(
136 const std::vector< const xAOD::Vertex* >& vec,
137 Stage stage = FULL );
138
140 StatusCode fillRefTruthVertexVec(
141 const std::vector< const xAOD::TruthVertex* >& vec,
142 Stage stage = FULL );
143
144 StatusCode fillRefRecoVertexVec(
145 const std::vector< const xAOD::Vertex* >& vec,
146 Stage stage = FULL );
147
149 StatusCode fillTruthVertexVec(
150 const std::vector< const xAOD::TruthVertex* >& vec,
151 Stage stage = FULL );
152
153 StatusCode fillOfflVertexVec(
154 const std::vector< const xAOD::Vertex* >& vec,
155 Stage stage = FULL );
156
157 StatusCode fillTrigVertexVec(
158 const std::vector< const xAOD::Vertex* >& vec,
159 Stage stage = FULL );
160
162
165 bool isNewEvent() { return ( m_newChain && m_newRoi ); }
166
168 bool isNewChain() { return m_newChain; }
169
171 void newChain() { m_newChain = false; m_newRoi = true; }
172
174 bool isNewRoI() { return m_newRoi; }
175
177 void newRoI() { m_newRoi = false; }
178
180 bool empty( Stage stage = FULL );
181
183 void clear( Stage stage = FULL );
184
186 void copyFS();
187
189 std::string printInfo( Stage stage = FULL, bool printVertex = true ) const;
190
192 std::string printVertexInfo( Stage stage = FULL ) const;
193
195
197 const std::string& anaTag() { return m_anaTag; }
198
203
207
211
219
221 const std::vector< const xAOD::TruthParticle* >& testTruthVec( Stage stage = FULL );
222 const std::vector< const xAOD::TrackParticle* >& testTrackVec( Stage stage = FULL );
223
225 const std::vector< const xAOD::TruthParticle* >& refTruthVec( Stage stage = FULL );
226 const std::vector< const xAOD::TrackParticle* >& refTrackVec( Stage stage = FULL );
227
229 const std::vector< const xAOD::TruthParticle* >& truthPartVec( Stage stage = FULL ) {
230 return m_truthPartVec[ stage ]; }
231 const std::vector< const xAOD::TrackParticle* >& offlTrackVec( Stage stage = FULL ) {
232 return m_offlTrackVec[ stage ]; }
233 const std::vector< const xAOD::TrackParticle* >& trigTrackVec( Stage stage = FULL ) {
234 return m_trigTrackVec[ stage ]; }
235
237 std::vector< size_t > testTrackCounts();
238 std::vector< size_t > refTrackCounts();
239
243
247
255
257 const std::vector< const xAOD::TruthVertex* >& testTruthVertexVec( Stage stage = FULL );
258 const std::vector< const xAOD::Vertex* >& testRecoVertexVec( Stage stage = FULL );
259
261 const std::vector< const xAOD::TruthVertex* >& refTruthVertexVec( Stage stage = FULL );
262 const std::vector< const xAOD::Vertex* >& refRecoVertexVec( Stage stage = FULL );
263
265 const std::vector< const xAOD::TruthVertex* >& truthVertexVec( Stage stage = FULL ) {
266 return m_truthVertexVec[ stage ]; }
267 const std::vector< const xAOD::Vertex* >& offlVertexVec( Stage stage = FULL ) {
268 return m_offlVertexVec[ stage ]; }
269 const std::vector< const xAOD::Vertex* >& trigVertexVec( Stage stage = FULL ) {
270 return m_trigVertexVec[ stage ]; }
271
273 std::vector< size_t > testVertexCounts();
274 std::vector< size_t > refVertexCounts();
275
278
280 std::string printMatchInfo();
281
283 bool updateChainRois( const std::string& chainRoi, const std::string& roiStr );
284
285 private:
286
288 std::string m_anaTag;
289 SmartIF< ITrackAnalysisDefinitionSvc > m_trkAnaDefSvc;
291
297
302
304 std::vector<std::vector< const xAOD::TruthParticle* >> m_truthPartVec{};
305 std::vector<std::vector< const xAOD::TrackParticle* >> m_offlTrackVec{};
306 std::vector<std::vector< const xAOD::TrackParticle* >> m_trigTrackVec{};
307
312
314 std::vector<std::vector< const xAOD::TruthVertex* >> m_truthVertexVec{};
315 std::vector<std::vector< const xAOD::Vertex* >> m_offlVertexVec{};
316 std::vector<std::vector< const xAOD::Vertex* >> m_trigVertexVec{};
317
319 std::vector< const xAOD::TrackParticle* > m_nullTrackVec{};
320 std::vector< const xAOD::TruthParticle* > m_nullTruthVec{};
321 std::vector< const xAOD::TruthVertex* > m_nullTruthVertVec{};
322 std::vector< const xAOD::Vertex* > m_nullRecoVertVec{};
323
325 std::unique_ptr< ITrackMatchingLookup > m_matches;
326
328 typedef std::unordered_map< std::string, std::string > mapChainRoi_t;
330
331 }; // class TrackAnalysisCollections
332
333} // namespace IDTPM
334
335#endif // > !INDETTRACKPERFMON_TRACKANALYSISCOLLECTIONS_H
std::vector< size_t > vec
Service interface to hold (and propagate) the basic properties of each defined TrackAnalysis and of t...
Interace for TrackMatchingLookup objects (templated)
Property holding a SG store/key/clid from which a ReadHandle is made.
Handle class for reading from StoreGate.
static const Attributes_t empty
AthMessaging(IMessageSvc *msgSvc, const std::string &name)
Constructor.
const xAOD::VertexContainer * testRecoVertexContainer()
TEST = Reco.
const std::vector< const xAOD::TruthVertex * > & refTruthVertexVec(Stage stage=FULL)
get REFERENCE vertex vectors
const std::vector< const xAOD::TruthParticle * > & testTruthVec(Stage stage=FULL)
get TEST track vectors
const xAOD::TrackParticleContainer * refTrackContainer()
REFERENCE = Track.
bool isNewChain()
check if this is a new chain
StatusCode fillRefTruthVertexVec(const std::vector< const xAOD::TruthVertex * > &vec, Stage stage=FULL)
fill REFERENCE vertex vectors
StatusCode fillTruthVertexContainer(const SG::ReadHandleKey< xAOD::TruthVertexContainer > &truthVertexHandleKey)
fill FULL vertex collections and vectors
const std::vector< const xAOD::TrackParticle * > & offlTrackVec(Stage stage=FULL)
void clear(Stage stage=FULL)
Clear vectors.
const xAOD::TruthPileupEventContainer * m_truthPUEventContainer
StatusCode fillTrigTrackVec(const std::vector< const xAOD::TrackParticle * > &vec, Stage stage=FULL)
Trigger tracks.
void copyFS()
copy content of FS vectors to InRoI vectors
std::vector< size_t > refTrackCounts()
REFERENCE.
const xAOD::TruthPileupEventContainer * truthPileupEventContainer()
const xAOD::VertexContainer * trigVertexContainer()
const std::vector< const xAOD::Vertex * > & offlVertexVec(Stage stage=FULL)
const std::vector< const xAOD::TrackParticle * > & trigTrackVec(Stage stage=FULL)
const xAOD::TrackParticleContainer * trigTrackContainer()
bool isNewRoI()
check if this is a new RoI
~TrackAnalysisCollections()=default
Destructor.
StatusCode fillOfflVertexVec(const std::vector< const xAOD::Vertex * > &vec, Stage stage=FULL)
Offline tracks.
const std::vector< const xAOD::Vertex * > & refRecoVertexVec(Stage stage=FULL)
REFERENCE = Reco.
std::vector< std::vector< const xAOD::TruthParticle * > > m_truthPartVec
vectors of track/truth particles at different stages of the selection/workflow
const std::string & anaTag()
— Getter methods —
StatusCode fillTrigVertexContainer(const SG::ReadHandleKey< xAOD::VertexContainer > &handleKey)
Trigger vertices.
const xAOD::TrackParticleContainer * offlTrackContainer()
std::string printInfo(Stage stage=FULL, bool printVertex=true) const
print information about tracks in the collection(s)
std::string printMatchInfo()
print track matching information
std::vector< std::vector< const xAOD::Vertex * > > m_offlVertexVec
std::unordered_map< std::string, std::string > mapChainRoi_t
map of chainRoiNames for caching
const xAOD::TruthParticleContainer * testTruthContainer()
get full TEST track containers
StatusCode fillTruthPartVec(const std::vector< const xAOD::TruthParticle * > &vec, Stage stage=FULL)
fill truth/offline/trigger track vector (TEST or REFERENCE)
const std::vector< const xAOD::TruthParticle * > & truthPartVec(Stage stage=FULL)
get truth/offline/trigger track vector (TEST or REFERENCE)
bool updateChainRois(const std::string &chainRoi, const std::string &roiStr)
update chainRois map
bool isNewEvent()
— Utility methods —
const std::vector< const xAOD::TruthVertex * > & truthVertexVec(Stage stage=FULL)
get truth/offline/trigger vertex vector (TEST or REFERENCE)
const xAOD::TrackParticleContainer * m_trigTrackContainer
const xAOD::TruthEventContainer * truthEventContainer()
const xAOD::VertexContainer * m_trigVertexContainer
std::vector< std::vector< const xAOD::TruthVertex * > > m_truthVertexVec
vectors of reco/truth vertices at different stages of the selection/workflow
StatusCode fillRefTruthVec(const std::vector< const xAOD::TruthParticle * > &vec, Stage stage=FULL)
fill REFERENCE track vectors
StatusCode fillTruthVertexVec(const std::vector< const xAOD::TruthVertex * > &vec, Stage stage=FULL)
fill truth/offline/trigger vertex vector (TEST or REFERENCE)
StatusCode fillOfflTrackVec(const std::vector< const xAOD::TrackParticle * > &vec, Stage stage=FULL)
Offline tracks.
const xAOD::VertexContainer * m_offlVertexContainer
StatusCode fillTrigVertexVec(const std::vector< const xAOD::Vertex * > &vec, Stage stage=FULL)
Trigger tracks.
ITrackMatchingLookup & matches()
get track matching information
StatusCode fillTestTrackVec(const std::vector< const xAOD::TrackParticle * > &vec, Stage stage=FULL)
TEST = tracks.
std::vector< size_t > refVertexCounts()
REFERENCE.
StatusCode fillTestTruthVec(const std::vector< const xAOD::TruthParticle * > &vec, Stage stage=FULL)
fill TEST track vectors
StatusCode fillTruthPartContainer(const SG::ReadHandleKey< xAOD::TruthParticleContainer > &truthPartHandleKey)
fill FULL track collections and vectors
StatusCode fillEventInfo(const SG::ReadHandleKey< xAOD::EventInfo > &eventInfoHandleKey, const SG::ReadHandleKey< xAOD::TruthEventContainer > &truthEventHandleKey, const SG::ReadHandleKey< xAOD::TruthPileupEventContainer > &truthPUEventHandleKey)
— Setter methods —
const xAOD::EventInfo * eventInfo()
get event info
const xAOD::TruthParticleContainer * refTruthContainer()
get full REFERENCE track containers
const xAOD::TruthParticleContainer * m_truthPartContainer
Full track collections.
std::vector< std::vector< const xAOD::TrackParticle * > > m_offlTrackVec
StatusCode fillTrigTrackContainer(const SG::ReadHandleKey< xAOD::TrackParticleContainer > &handleKey)
Trigger track particles.
void newChain()
update before running on new chain
std::vector< std::vector< const xAOD::Vertex * > > m_trigVertexVec
std::vector< const xAOD::TruthParticle * > m_nullTruthVec
const xAOD::TrackParticleContainer * testTrackContainer()
TEST = Track.
const xAOD::TruthVertexContainer * truthVertexContainer()
get truth/offline/trigger vertex containers (TEST or REFERENCE)
std::vector< std::vector< const xAOD::TrackParticle * > > m_trigTrackVec
const xAOD::TruthVertexContainer * testTruthVertexContainer()
get full TEST vertex containers
TrackAnalysisCollections(const std::string &anaTag)
Constructor.
const xAOD::TruthVertexContainer * m_truthVertexContainer
Full vertex collections.
const std::vector< const xAOD::TruthVertex * > & testTruthVertexVec(Stage stage=FULL)
get TEST vertex vectors
const std::vector< const xAOD::TrackParticle * > & testTrackVec(Stage stage=FULL)
TEST = Track.
std::unique_ptr< ITrackMatchingLookup > m_matches
Lookup table for test-reference matching.
const xAOD::EventInfo * m_eventInfo
— Collections class variables — EventInfo, TruthEvent, and TruthPUEvent
const xAOD::TruthEventContainer * m_truthEventContainer
StatusCode fillRefRecoVertexVec(const std::vector< const xAOD::Vertex * > &vec, Stage stage=FULL)
REFERENCE = reco.
StatusCode fillRefTrackVec(const std::vector< const xAOD::TrackParticle * > &vec, Stage stage=FULL)
REFERENCE = tracks.
const std::vector< const xAOD::TruthParticle * > & refTruthVec(Stage stage=FULL)
get REFERENCE track vectors
std::vector< const xAOD::TruthVertex * > m_nullTruthVertVec
const xAOD::TrackParticleContainer * m_offlTrackContainer
std::vector< const xAOD::TrackParticle * > m_nullTrackVec
null vectors
const std::vector< const xAOD::Vertex * > & trigVertexVec(Stage stage=FULL)
const std::vector< const xAOD::Vertex * > & testRecoVertexVec(Stage stage=FULL)
TEST = Reco.
std::string m_anaTag
TrackAnalysis properties.
StatusCode fillOfflTrackContainer(const SG::ReadHandleKey< xAOD::TrackParticleContainer > &handleKey)
Offline track particles.
const xAOD::VertexContainer * offlVertexContainer()
std::string printVertexInfo(Stage stage=FULL) const
print information about vertices in the collection(s)
const xAOD::VertexContainer * refRecoVertexContainer()
REFERENCE = Reco.
std::vector< size_t > testTrackCounts()
get counts vectors for TEST/REFERENCE track vectors at all stages
StatusCode fillTestTruthVertexVec(const std::vector< const xAOD::TruthVertex * > &vec, Stage stage=FULL)
fill TEST vertex vectors
StatusCode fillOfflVertexContainer(const SG::ReadHandleKey< xAOD::VertexContainer > &handleKey)
Offline vertices.
TrackAnalysisCollections & operator=(const TrackAnalysisCollections &)=delete
= operator
const xAOD::TruthVertexContainer * refTruthVertexContainer()
get full REFERENCE vertex containers
std::vector< size_t > testVertexCounts()
get counts vectors for TEST/REFERENCE vertex vectors at all stages
Counter
Enum for counting objects at various stages.
void newRoI()
update before running on new RoI
const xAOD::TruthParticleContainer * truthPartContainer()
get truth/offline/trigger track containers (TEST or REFERENCE)
std::vector< const xAOD::Vertex * > m_nullRecoVertVec
const std::vector< const xAOD::TrackParticle * > & refTrackVec(Stage stage=FULL)
TEST = Track.
StatusCode fillTestRecoVertexVec(const std::vector< const xAOD::Vertex * > &vec, Stage stage=FULL)
TEST = reco.
SmartIF< ITrackAnalysisDefinitionSvc > m_trkAnaDefSvc
Property holding a SG store/key/clid from which a ReadHandle is made.
Athena include(s).
TruthEventContainer_v1 TruthEventContainer
Declare the latest version of the truth event container.
EventInfo_v1 EventInfo
Definition of the latest event info version.
TruthPileupEventContainer_v1 TruthPileupEventContainer
Declare the latest version of the truth event container.
TruthVertexContainer_v1 TruthVertexContainer
Declare the latest version of the truth vertex container.
VertexContainer_v1 VertexContainer
Definition of the current "Vertex container version".
TrackParticleContainer_v1 TrackParticleContainer
Definition of the current "TrackParticle container version".
TruthParticleContainer_v1 TruthParticleContainer
Declare the latest version of the truth particle container.