ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
PhysicsAnalysis
Algorithms
MuonAnalysisAlgorithms
Root
MuonEfficiencyScaleFactorAlg.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3
*/
4
6
7
8
9
//
10
// includes
11
//
12
13
#include <
MuonAnalysisAlgorithms/MuonEfficiencyScaleFactorAlg.h
>
14
15
//
16
// method implementations
17
//
18
19
namespace
CP
20
{
21
22
StatusCode MuonEfficiencyScaleFactorAlg ::
23
initialize ()
24
{
25
if
(
m_scaleFactorDecoration
.empty() &&
m_mcEfficiencyDecoration
.empty() &&
m_dataEfficiencyDecoration
.empty())
26
{
27
ANA_MSG_ERROR
(
"no scale factor or efficiency decoration name set"
);
28
return
StatusCode::FAILURE;
29
}
30
31
ANA_CHECK
(
m_efficiencyScaleFactorTool
.retrieve());
32
ANA_CHECK
(
m_muonHandle
.initialize (
m_systematicsList
));
33
ANA_CHECK
(
m_preselection
.initialize (
m_systematicsList
,
m_muonHandle
,
SG::AllowEmpty
));
34
ANA_CHECK
(
m_eventInfoHandle
.initialize (
m_systematicsList
));
35
ANA_CHECK
(
m_scaleFactorDecoration
.initialize (
m_systematicsList
,
m_muonHandle
,
SG::AllowEmpty
));
36
ANA_CHECK
(
m_mcEfficiencyDecoration
.initialize (
m_systematicsList
,
m_muonHandle
,
SG::AllowEmpty
));
37
ANA_CHECK
(
m_dataEfficiencyDecoration
.initialize (
m_systematicsList
,
m_muonHandle
,
SG::AllowEmpty
));
38
ANA_CHECK
(
m_systematicsList
.addSystematics (*
m_efficiencyScaleFactorTool
));
39
ANA_CHECK
(
m_systematicsList
.initialize());
40
ANA_CHECK
(
m_outOfValidity
.initialize());
41
42
return
StatusCode::SUCCESS;
43
}
44
45
46
47
StatusCode MuonEfficiencyScaleFactorAlg ::
48
execute (
const
EventContext& ctx)
49
{
50
for
(
const
auto
& sys :
m_systematicsList
.systematicsVector())
51
{
52
ANA_CHECK
(
m_efficiencyScaleFactorTool
->applySystematicVariation (sys));
53
const
xAOD::MuonContainer
*muons =
nullptr
;
54
ANA_CHECK
(
m_muonHandle
.retrieve (muons, sys, ctx));
55
const
xAOD::EventInfo
*eventInfo =
nullptr
;
56
ANA_CHECK
(
m_eventInfoHandle
.retrieve (eventInfo, sys, ctx));
57
for
(
const
xAOD::Muon
*
muon
: *muons)
58
{
59
if
(
m_preselection
.getBool (*
muon
, sys))
60
{
61
if
(
m_scaleFactorDecoration
) {
62
float
sf = 0;
63
ANA_CHECK_CORRECTION
(
m_outOfValidity
, *
muon
,
m_efficiencyScaleFactorTool
->getEfficiencyScaleFactor (*
muon
, sf, eventInfo));
64
m_scaleFactorDecoration
.set (*
muon
, sf, sys);
65
}
66
67
if
(
m_mcEfficiencyDecoration
) {
68
float
eff = 0;
69
ANA_CHECK_CORRECTION
(
m_outOfValidity
, *
muon
,
m_efficiencyScaleFactorTool
->getMCEfficiency (*
muon
, eff, eventInfo));
70
m_mcEfficiencyDecoration
.set (*
muon
, eff, sys);
71
}
72
73
if
(
m_dataEfficiencyDecoration
) {
74
float
eff = 0;
75
ANA_CHECK_CORRECTION
(
m_outOfValidity
, *
muon
,
m_efficiencyScaleFactorTool
->getDataEfficiency (*
muon
, eff, eventInfo));
76
m_dataEfficiencyDecoration
.set (*
muon
, eff, sys);
77
}
78
}
else
79
{
80
if
(
m_scaleFactorDecoration
) {
81
m_scaleFactorDecoration
.set (*
muon
,
invalidScaleFactor
(), sys);
82
}
83
84
if
(
m_mcEfficiencyDecoration
) {
85
m_mcEfficiencyDecoration
.set (*
muon
,
invalidEfficiency
(), sys);
86
}
87
88
if
(
m_dataEfficiencyDecoration
) {
89
m_dataEfficiencyDecoration
.set (*
muon
,
invalidEfficiency
(), sys);
90
}
91
}
92
}
93
}
94
95
return
StatusCode::SUCCESS;
96
}
97
}
ANA_MSG_ERROR
#define ANA_MSG_ERROR(xmsg,...)
Macro printing error messages.
Definition
Control/AthToolSupport/AsgMessaging/AsgMessaging/MessageCheck.h:295
ANA_CHECK
#define ANA_CHECK(EXP)
check whether the given expression was successful
Definition
Control/AthToolSupport/AsgMessaging/AsgMessaging/MessageCheck.h:325
MuonEfficiencyScaleFactorAlg.h
ANA_CHECK_CORRECTION
#define ANA_CHECK_CORRECTION(helper, object, expr)
a helper check macro to work with OutOfValidityHelper
Definition
OutOfValidityHelper.h:131
CP::MuonEfficiencyScaleFactorAlg::m_preselection
SysReadSelectionHandle m_preselection
the preselection we apply to our input
Definition
MuonEfficiencyScaleFactorAlg.h:55
CP::MuonEfficiencyScaleFactorAlg::m_systematicsList
SysListHandle m_systematicsList
the systematics list we run
Definition
MuonEfficiencyScaleFactorAlg.h:41
CP::MuonEfficiencyScaleFactorAlg::m_efficiencyScaleFactorTool
ToolHandle< IMuonEfficiencyScaleFactors > m_efficiencyScaleFactorTool
the smearing tool
Definition
MuonEfficiencyScaleFactorAlg.h:37
CP::MuonEfficiencyScaleFactorAlg::m_scaleFactorDecoration
SysWriteDecorHandle< float > m_scaleFactorDecoration
the decoration for the muon scale factor
Definition
MuonEfficiencyScaleFactorAlg.h:64
CP::MuonEfficiencyScaleFactorAlg::m_outOfValidity
OutOfValidityHelper m_outOfValidity
the helper for OutOfValidity results
Definition
MuonEfficiencyScaleFactorAlg.h:60
CP::MuonEfficiencyScaleFactorAlg::m_dataEfficiencyDecoration
SysWriteDecorHandle< float > m_dataEfficiencyDecoration
the decoration for the muon data efficiency
Definition
MuonEfficiencyScaleFactorAlg.h:74
CP::MuonEfficiencyScaleFactorAlg::m_eventInfoHandle
SysReadHandle< xAOD::EventInfo > m_eventInfoHandle
the EventInfo collection we use
Definition
MuonEfficiencyScaleFactorAlg.h:50
CP::MuonEfficiencyScaleFactorAlg::m_muonHandle
SysReadHandle< xAOD::MuonContainer > m_muonHandle
the muon collection we run on
Definition
MuonEfficiencyScaleFactorAlg.h:45
CP::MuonEfficiencyScaleFactorAlg::m_mcEfficiencyDecoration
SysWriteDecorHandle< float > m_mcEfficiencyDecoration
the decoration for the muon mc efficiency
Definition
MuonEfficiencyScaleFactorAlg.h:69
CP
Select isolated Photons, Electrons and Muons.
Definition
Control/xAODRootAccess/xAODRootAccess/TEvent.h:27
CP::invalidEfficiency
constexpr float invalidEfficiency()
the decoration value to use if there is no valid efficiency decoration
Definition
SysWriteDecorHandle.h:35
CP::invalidScaleFactor
constexpr float invalidScaleFactor()
the decoration value to use if there is no valid scale factor decoration
Definition
SysWriteDecorHandle.h:31
SG::AllowEmpty
@ AllowEmpty
Definition
StoreGate/StoreGate/VarHandleKey.h:27
xAOD::EventInfo
EventInfo_v1 EventInfo
Definition of the latest event info version.
Definition
IEventInfoCnvTool.h:16
xAOD::Muon
Muon_v1 Muon
Reference the current persistent version:
Definition
Event/xAOD/xAODMuon/xAODMuon/Muon.h:13
xAOD::muon
@ muon
Definition
TrackingPrimitives.h:196
xAOD::MuonContainer
MuonContainer_v1 MuonContainer
Definition of the current "Muon container version".
Definition
Event/xAOD/xAODMuon/xAODMuon/MuonContainer.h:14
Generated on
for ATLAS Offline Software by
1.17.0