ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
PhysicsAnalysis
MuonID
MuonIDAnalysis
MuonMomentumCorrections
src
CalibratedMuonsProvider.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
// Local include(s):
5
#include "
CalibratedMuonsProvider.h
"
6
7
#include "
xAODBase/IParticleHelpers.h
"
8
#include "
xAODCore/ShallowCopy.h
"
9
10
namespace
CP
{
11
12
CalibratedMuonsProvider::CalibratedMuonsProvider
(
const
std::string&
name
, ISvcLocator* svcLoc) :
AthAlgorithm
(
name
, svcLoc) {}
13
14
StatusCode
CalibratedMuonsProvider::initialize
() {
15
ATH_CHECK
(
m_eventInfo
.initialize());
16
ATH_CHECK
(
m_inputKey
.initialize());
17
ATH_CHECK
(
m_outputKey
.initialize());
19
m_ptDecorKeys
.emplace_back(
m_outputKey
.key() +
".InnerDetectorPt"
);
20
m_ptDecorKeys
.emplace_back(
m_outputKey
.key() +
".MuonSpectrometerPt"
);
21
ATH_CHECK
(
m_ptDecorKeys
.initialize());
22
ATH_CHECK
(
m_rndNumKey
.initialize(
m_useRndNumber
));
23
ATH_CHECK
(
m_tool
.retrieve());
24
return
StatusCode::SUCCESS;
25
}
26
27
StatusCode
CalibratedMuonsProvider::execute
(
const
EventContext& ctx) {
28
SG::ReadHandle<xAOD::MuonContainer>
muons{
m_inputKey
, ctx};
29
if
(!muons.
isValid
()) {
30
ATH_MSG_FATAL
(
"No muon container found"
);
31
return
StatusCode::FAILURE;
32
}
33
34
xAOD::ShallowCopyResult_t<xAOD::MuonContainer>
output =
35
xAOD::shallowCopy
(*muons, ctx);
36
37
if
(!output.first || !output.second) {
38
ATH_MSG_FATAL
(
"Creation of shallow copy failed"
);
39
return
StatusCode::FAILURE;
40
}
41
42
if
(!
setOriginalObjectLink
(*muons, *output.first)) {
43
ATH_MSG_ERROR
(
"Failed to add original object links to shallow copy of "
<<
m_inputKey
);
44
return
StatusCode::FAILURE;
45
}
46
for
(
xAOD::Muon
* iParticle : *(output.first)) {
47
ATH_MSG_DEBUG
(
" Old pt="
<< iParticle->pt());
48
if
(
m_tool
->applyCorrection(*iParticle).code() ==
CorrectionCode::Error
)
return
StatusCode::FAILURE;
49
ATH_MSG_DEBUG
(
" New pt="
<< iParticle->pt());
50
}
51
SG::WriteHandle<xAOD::MuonContainer>
writeHandle{
m_outputKey
, ctx};
52
ATH_CHECK
(writeHandle.
recordNonConst
(std::move(output.first), std::move(output.second)));
53
// Return gracefully:
54
return
StatusCode::SUCCESS;
55
}
56
57
}
// namespace CP
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_FATAL
#define ATH_MSG_FATAL(x)
Definition
AthMsgStreamMacros.h:34
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:29
CalibratedMuonsProvider.h
IParticleHelpers.h
ShallowCopy.h
AthAlgorithm::AthAlgorithm
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
Definition
AthAlgorithm.cxx:10
CP::CalibratedMuonsProvider::execute
virtual StatusCode execute(const EventContext &ctx) override
Function executing the algorithm.
Definition
CalibratedMuonsProvider.cxx:27
CP::CalibratedMuonsProvider::initialize
virtual StatusCode initialize() override
Function initialising the algorithm.
Definition
CalibratedMuonsProvider.cxx:14
CP::CalibratedMuonsProvider::m_tool
ToolHandle< IMuonCalibrationAndSmearingTool > m_tool
Muon calibration tool.
Definition
CalibratedMuonsProvider.h:41
CP::CalibratedMuonsProvider::m_eventInfo
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfo
Definition
CalibratedMuonsProvider.h:32
CP::CalibratedMuonsProvider::m_useRndNumber
Gaudi::Property< bool > m_useRndNumber
Definition
CalibratedMuonsProvider.h:42
CP::CalibratedMuonsProvider::m_inputKey
SG::ReadHandleKey< xAOD::MuonContainer > m_inputKey
muon container
Definition
CalibratedMuonsProvider.h:34
CP::CalibratedMuonsProvider::CalibratedMuonsProvider
CalibratedMuonsProvider(const std::string &name, ISvcLocator *svcLoc)
Regular Algorithm constructor.
Definition
CalibratedMuonsProvider.cxx:12
CP::CalibratedMuonsProvider::m_outputKey
SG::WriteHandleKey< xAOD::MuonContainer > m_outputKey
Definition
CalibratedMuonsProvider.h:35
CP::CalibratedMuonsProvider::m_rndNumKey
SG::ReadDecorHandleKey< xAOD::EventInfo > m_rndNumKey
Definition
CalibratedMuonsProvider.h:43
CP::CalibratedMuonsProvider::m_ptDecorKeys
SG::WriteDecorHandleKeyArray< xAOD::MuonContainer > m_ptDecorKeys
Additionally declare the two decorations made by MCAST.
Definition
CalibratedMuonsProvider.h:38
CP::CorrectionCode::Error
@ Error
Some error happened during the object correction.
Definition
CorrectionCode.h:36
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::recordNonConst
StatusCode recordNonConst(std::unique_ptr< T > data)
Record a non-const object to the store.
CP
Select isolated Photons, Electrons and Muons.
Definition
Control/xAODRootAccess/xAODRootAccess/TEvent.h:27
xAOD::ShallowCopyResult_t
typename ShallowCopyResult< T >::type ShallowCopyResult_t
Return type of xAOD::shallowCopy.
Definition
ShallowCopy.h:68
xAOD::name
name
Definition
TriggerMenuJson_v1.cxx:29
xAOD::shallowCopy
ShallowCopyResult_t< T > shallowCopy(const T &cont, const EventContext &ctx)
Create a shallow copy of an existing container.
xAOD::setOriginalObjectLink
bool setOriginalObjectLink(const IParticle &original, IParticle ©)
This function should be used by CP tools when they make a deep copy of an object in their correctedCo...
Definition
IParticleHelpers.cxx:30
xAOD::Muon
Muon_v1 Muon
Reference the current persistent version:
Definition
Event/xAOD/xAODMuon/xAODMuon/Muon.h:13
Generated on
for ATLAS Offline Software by
1.17.0