ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Tracking
TrkAlgorithms
TrkTrackCollectionMerger
src
AddTrackSummaryAlg.cxx
Go to the documentation of this file.
1
// Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
2
3
#include "
TrkTrackCollectionMerger/AddTrackSummaryAlg.h
"
4
5
namespace
Trk
{
6
7
AddTrackSummaryAlg::AddTrackSummaryAlg
(
const
std::string& name, ISvcLocator* pSvcLocator)
8
:
AthReentrantAlgorithm
(name, pSvcLocator)
9
{}
10
11
StatusCode
AddTrackSummaryAlg::initialize
() {
12
ATH_MSG_DEBUG
(
"Initializing "
<< name());
13
14
// Check configuration
15
ATH_CHECK
(
m_inputTrackCollection
.initialize());
16
ATH_CHECK
(
m_outputTrackCollection
.initialize());
17
ATH_CHECK
(
m_trackSummaryTool
.retrieve());
18
19
ATH_MSG_INFO
(
"Will add TrackSummary to: "
<<
m_inputTrackCollection
.key());
20
ATH_MSG_INFO
(
"Output collection: "
<<
m_outputTrackCollection
.key());
21
22
return
StatusCode::SUCCESS;
23
}
24
25
StatusCode
AddTrackSummaryAlg::execute
(
const
EventContext& ctx)
const
{
26
ATH_MSG_DEBUG
(
"Executing "
<< name());
27
28
// Retrieve the input track collection
29
SG::ReadHandle<TrackCollection>
inputTracks(
m_inputTrackCollection
, ctx);
30
if
(!inputTracks.
isValid
()) {
31
ATH_MSG_ERROR
(
"Failed to retrieve track collection: "
<<
m_inputTrackCollection
.key());
32
return
StatusCode::FAILURE;
33
}
34
35
ATH_MSG_DEBUG
(
"Retrieved "
<< inputTracks->size() <<
" tracks from "
<<
m_inputTrackCollection
.key());
36
37
// Create output collection - use VIEW to avoid copying track objects
38
auto
outputTracks = std::make_unique<ConstDataVector<TrackCollection>>(
SG::VIEW_ELEMENTS
);
39
outputTracks->reserve(inputTracks->size());
40
41
// Loop through tracks and add summary to those missing it
42
int
tracksProcessed = 0;
43
int
tracksAlreadyHaveSummary = 0;
44
45
for
(
const
Trk::Track
* track : *inputTracks) {
46
if
(!track) {
47
ATH_MSG_WARNING
(
"Null track pointer in collection"
);
48
continue
;
49
}
50
51
// Check if track already has a summary
52
if
(!track->trackSummary()) {
53
bool
doSummary =
true
;
54
55
const
Trk::Perigee
* per = track->perigeeParameters();
56
if
(per) {
57
const
float
pt = per->
momentum
().perp();
58
const
float
eta
= per->
momentum
().eta();
59
60
if
(
m_minPt
> 0.0 && pt <
m_minPt
) doSummary =
false
;
61
if
(
m_maxAbsEta
< 90.0 && std::abs(
eta
) >
m_maxAbsEta
) doSummary =
false
;
62
}
63
64
// Create and attach the summary (updateTrackSummary modifies track in-place)
65
// This is thread-safe because each event gets its own copy of tracks
66
if
(doSummary){
67
m_trackSummaryTool
->updateTrackSummary(ctx, *
const_cast<
Trk::Track
*
>
(track));
68
++tracksProcessed;
69
70
// Verify the summary was actually created
71
if
(!track->trackSummary()) {
72
ATH_MSG_ERROR
(
"Failed to create TrackSummary for track!"
);
73
return
StatusCode::FAILURE;
74
}
75
}
76
}
else
{
77
++tracksAlreadyHaveSummary;
78
}
79
80
// Add track pointer to output collection
81
outputTracks->push_back(track);
82
}
83
84
ATH_MSG_DEBUG
(
"Processed "
<< tracksProcessed <<
" tracks. "
<< tracksAlreadyHaveSummary <<
" tracks already had summary"
);
85
86
// Record output collection
87
SG::WriteHandle<ConstDataVector<TrackCollection>
> outputHandle(
m_outputTrackCollection
, ctx);
88
ATH_CHECK
(outputHandle.
record
(std::move(outputTracks)));
89
90
return
StatusCode::SUCCESS;
91
}
92
93
}
// namespace Trk
94
AddTrackSummaryAlg.h
eta
Scalar eta() const
pseudorapidity method
Definition
AmgMatrixBasePlugin.h:83
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition
AthMsgStreamMacros.h:33
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition
AthMsgStreamMacros.h:31
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition
AthMsgStreamMacros.h:32
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:29
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition
AthReentrantAlgorithm.h:74
SG::ReadHandle
Definition
StoreGate/StoreGate/ReadHandle.h:67
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
SG::WriteHandle
Definition
StoreGate/StoreGate/WriteHandle.h:73
SG::WriteHandle::record
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
Trk::AddTrackSummaryAlg::AddTrackSummaryAlg
AddTrackSummaryAlg(const std::string &name, ISvcLocator *pSvcLocator)
Definition
AddTrackSummaryAlg.cxx:7
Trk::AddTrackSummaryAlg::initialize
virtual StatusCode initialize() override
Definition
AddTrackSummaryAlg.cxx:11
Trk::AddTrackSummaryAlg::m_outputTrackCollection
SG::WriteHandleKey< ConstDataVector< TrackCollection > > m_outputTrackCollection
Output track collection with summaries added.
Definition
AddTrackSummaryAlg.h:38
Trk::AddTrackSummaryAlg::m_minPt
Gaudi::Property< float > m_minPt
Definition
AddTrackSummaryAlg.h:46
Trk::AddTrackSummaryAlg::execute
virtual StatusCode execute(const EventContext &ctx) const override
Definition
AddTrackSummaryAlg.cxx:25
Trk::AddTrackSummaryAlg::m_inputTrackCollection
SG::ReadHandleKey< TrackCollection > m_inputTrackCollection
Input track collection (read-only).
Definition
AddTrackSummaryAlg.h:34
Trk::AddTrackSummaryAlg::m_maxAbsEta
Gaudi::Property< float > m_maxAbsEta
Definition
AddTrackSummaryAlg.h:47
Trk::AddTrackSummaryAlg::m_trackSummaryTool
ToolHandle< Trk::ITrackSummaryTool > m_trackSummaryTool
Track summary tool.
Definition
AddTrackSummaryAlg.h:42
Trk::ParametersBase::momentum
const Amg::Vector3D & momentum() const
Access method for the momentum.
Trk::Track
The ATLAS Track class.
Definition
Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
SG::VIEW_ELEMENTS
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
Definition
OwnershipPolicy.h:18
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition
FakeTrackBuilder.h:9
Trk::Perigee
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
Definition
Tracking/TrkEvent/TrkParameters/TrkParameters/TrackParameters.h:33
Generated on
for ATLAS Offline Software by
1.17.0