ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
PhysicsAnalysis
TrackingID
InDetTrackSystematicsTools
src
TrackSmearingAlg.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
TrackSmearingAlg.h
"
6
#include "
xAODCore/ShallowCopy.h
"
7
#include "
StoreGate/ReadHandle.h
"
8
#include "
StoreGate/WriteHandle.h
"
9
10
namespace
InDet
{
11
StatusCode
TrackSmearingAlg::initialize
()
12
{
13
ATH_CHECK
(
m_smearingTool
.retrieve());
14
if
(!
m_biasingTool
.empty())
15
ATH_CHECK
(
m_biasingTool
.retrieve());
16
17
if
(!
m_systematicVariation
.value().empty())
18
m_systSet
=
CP::SystematicSet
({
CP::SystematicVariation
(
m_systematicVariation
)});
19
20
// The tools silently ignore unknown systematics, so catch typos here.
21
if
(
m_strictMode
&& !
m_systSet
.empty()) {
22
const
CP::SystematicVariation
& var = *
m_systSet
.begin();
23
bool
anyAffected =
m_smearingTool
->isAffectedBySystematic(var);
24
if
(!
m_biasingTool
.empty()) {
25
anyAffected |=
m_biasingTool
->isAffectedBySystematic(var);
26
}
27
if
(!anyAffected) {
28
ATH_MSG_ERROR
(
"Systematic '"
<<
m_systematicVariation
.value()
29
<<
"' is not known to the smearing or biasing tool"
);
30
return
StatusCode::FAILURE;
31
}
32
}
33
34
// Pre-register the systematic set in each tool's cache so the
35
// reentrant applyCorrection(track, syst) overload can look it up.
36
ATH_CHECK
(
m_smearingTool
->applySystematicVariation(
m_systSet
));
37
if
(!
m_biasingTool
.empty())
38
ATH_CHECK
(
m_biasingTool
->applySystematicVariation(
m_systSet
));
39
40
ATH_CHECK
(
m_inTrackKey
.initialize());
41
ATH_CHECK
(
m_outTrackKey
.initialize());
42
return
StatusCode::SUCCESS;
43
}
44
45
StatusCode
TrackSmearingAlg::execute
(
const
EventContext& ctx)
const
46
{
47
SG::ReadHandle<xAOD::TrackParticleContainer>
inTracks(
m_inTrackKey
, ctx);
48
ATH_CHECK
(inTracks.
isValid
());
49
50
auto
[outTracks, outAux] =
51
xAOD::shallowCopyContainer
(*inTracks, ctx);
52
53
for
(
xAOD::TrackParticle
* trk : *outTracks) {
54
if
(
m_smearingTool
->applyCorrection(*trk,
m_systSet
)
55
==
CP::CorrectionCode::Error
) {
56
ATH_MSG_ERROR
(
"Could not apply InDetTrackSmearingTool."
);
57
return
StatusCode::FAILURE;
58
}
59
if
(!
m_biasingTool
.empty()) {
60
if
(
m_biasingTool
->applyCorrection(*trk,
m_systSet
)
61
==
CP::CorrectionCode::Error
) {
62
ATH_MSG_ERROR
(
"Could not apply InDetTrackBiasingTool."
);
63
return
StatusCode::FAILURE;
64
}
65
}
66
}
67
68
SG::WriteHandle<xAOD::TrackParticleContainer>
outHandle(
m_outTrackKey
, ctx);
69
ATH_CHECK
(outHandle.
record
(std::move(outTracks), std::move(outAux)));
70
return
StatusCode::SUCCESS;
71
}
72
73
}
// namespace InDet
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:47
ShallowCopy.h
ReadHandle.h
Handle class for reading from StoreGate.
WriteHandle.h
Handle class for recording to StoreGate.
TrackSmearingAlg.h
CP::CorrectionCode::Error
@ Error
Some error happened during the object correction.
Definition
CorrectionCode.h:36
CP::SystematicSet
Class to wrap a set of SystematicVariations.
Definition
SystematicSet.h:31
CP::SystematicVariation
Definition
SystematicVariation.h:47
InDet::TrackSmearingAlg::m_systSet
CP::SystematicSet m_systSet
Definition
TrackSmearingAlg.h:45
InDet::TrackSmearingAlg::m_systematicVariation
Gaudi::Property< std::string > m_systematicVariation
Definition
TrackSmearingAlg.h:36
InDet::TrackSmearingAlg::m_inTrackKey
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_inTrackKey
Definition
TrackSmearingAlg.h:32
InDet::TrackSmearingAlg::m_outTrackKey
SG::WriteHandleKey< xAOD::TrackParticleContainer > m_outTrackKey
Definition
TrackSmearingAlg.h:34
InDet::TrackSmearingAlg::m_smearingTool
PublicToolHandle< IInDetTrackSmearingTool > m_smearingTool
Definition
TrackSmearingAlg.h:30
InDet::TrackSmearingAlg::m_strictMode
Gaudi::Property< bool > m_strictMode
Definition
TrackSmearingAlg.h:39
InDet::TrackSmearingAlg::execute
StatusCode execute(const EventContext &ctx) const override
Definition
TrackSmearingAlg.cxx:45
InDet::TrackSmearingAlg::m_biasingTool
PublicToolHandle< IInDetTrackBiasingTool > m_biasingTool
Definition
TrackSmearingAlg.h:31
InDet::TrackSmearingAlg::initialize
StatusCode initialize() override
Definition
TrackSmearingAlg.cxx:11
SG::ReadHandle
Definition
StoreGate/StoreGate/ReadHandle.h:66
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
SG::WriteHandle
Definition
StoreGate/StoreGate/WriteHandle.h:71
SG::WriteHandle::record
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
InDet
Primary Vertex Finder.
Definition
VP1ErrorUtils.h:36
xAOD::shallowCopyContainer
std::pair< std::unique_ptr< T >, std::unique_ptr< ShallowAuxContainer > > shallowCopyContainer(const T &cont, const EventContext &ctx)
Function making a shallow copy of a constant container.
Definition
ShallowCopy.h:200
xAOD::TrackParticle
TrackParticle_v1 TrackParticle
Reference the current persistent version:
Definition
Event/xAOD/xAODTracking/xAODTracking/TrackParticle.h:13
Generated on
for ATLAS Offline Software by
1.17.0