ATLAS Offline Software
Loading...
Searching...
No Matches
MuonEfficiencyScaleFactors.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4
5#ifndef MUONEFFICIENCYSCALEFACTORS_H_
6#define MUONEFFICIENCYSCALEFACTORS_H_
7
12
13#include "AsgTools/ToolHandle.h"
14#include "AsgTools/AsgTool.h"
17
23
24#include <string>
25#include <memory>
26#include <map>
27#include <unordered_map>
28namespace ADD_CMODE(CP) {
29 class MuonEfficiencyScaleFactors: virtual public CP::IMuonEfficiencyScaleFactors, public asg::AsgTool, public columnar::ColumnarTool<>{
30
31 public:
32 MuonEfficiencyScaleFactors(const std::string& name);
33
34 virtual ~MuonEfficiencyScaleFactors();
35 //Proper constructor for Athena
37
38
39 virtual StatusCode initialize() override;
40
42 virtual CP::CorrectionCode getEfficiencyScaleFactor(const xAOD::Muon& mu, float& sf, const xAOD::EventInfo* info = 0) const override;
43 CP::CorrectionCode getEfficiencyScaleFactor(columnar::MuonId mu, float& sf, columnar::EventInfoId info) const;
44 virtual CP::CorrectionCode applyEfficiencyScaleFactor(const xAOD::Muon& mu, const xAOD::EventInfo* info = 0) const override;
46 virtual CP::CorrectionCode getEfficiencyScaleFactorReplicas(const xAOD::Muon& mu, std::vector<float> & sf_err, const xAOD::EventInfo* info = 0) const override;
47 virtual CP::CorrectionCode applyEfficiencyScaleFactorReplicas(const xAOD::Muon& mu, int nreplicas = 50, const xAOD::EventInfo* info = 0) const override;
48
50 virtual bool isAffectedBySystematic(const CP::SystematicVariation& systematic) const override;
51
53 virtual CP::SystematicSet affectingSystematics() const override;
54
56 virtual CP::SystematicSet recommendedSystematics() const override;
57
58 virtual StatusCode applySystematicVariation(const CP::SystematicSet& systConfig) override;
59
61 virtual CP::CorrectionCode getDataEfficiency(const xAOD::Muon& mu, float& eff, const xAOD::EventInfo* info = 0) const override;
62 virtual CP::CorrectionCode applyDataEfficiency(const xAOD::Muon& mu, const xAOD::EventInfo* info = 0) const override;
63
64 virtual CP::CorrectionCode getDataEfficiencyReplicas(const xAOD::Muon& mu, std::vector<float> & sf_err, const xAOD::EventInfo* info = 0) const;
65 virtual CP::CorrectionCode applyDataEfficiencyReplicas(const xAOD::Muon& mu, int nreplicas = 50, const xAOD::EventInfo* info = 0) const;
66
68 virtual CP::CorrectionCode getMCEfficiency(const xAOD::Muon& mu, float& eff, const xAOD::EventInfo* info = 0) const override;
69 virtual CP::CorrectionCode applyMCEfficiency(const xAOD::Muon& mu, const xAOD::EventInfo* info = 0) const override;
70
71 virtual CP::CorrectionCode getMCEfficiencyReplicas(const xAOD::Muon& mu, std::vector<float> & sf_err, const xAOD::EventInfo* info = 0) const;
72 virtual CP::CorrectionCode applyMCEfficiencyReplicas(const xAOD::Muon& mu, int nreplicas = 50, const xAOD::EventInfo* info = 0) const;
73
74 virtual int getUnCorrelatedSystBin(const xAOD::Muon& mu) const override;
75 virtual std::string getUncorrelatedSysBinName(unsigned int Bin) const override;
76 virtual std::string getUncorrelatedSysBinName(const CP::SystematicSet& systConfig) const override;
77
78
79 private:
80 unsigned int getRandomRunNumber(const xAOD::EventInfo* info) const;
81 unsigned int getRandomRunNumber(columnar::EventInfoId info) const;
83 StatusCode LoadInputs();
84
85 SG::ReadHandleKey<xAOD::EventInfo> m_eventInfo{this, "EventInfoContName", "EventInfo", "event info key"};
86
91 std::map<std::string, unsigned int> lookUpSystematics();
92 public:
96
97
102 std::string filename_Central()const;
106 std::string filename_Calo()const;
111 std::string filename_HighEta()const;
112
115 std::string filename_LowPt()const;
116 std::string filename_LowPtCalo()const;
118 std::string filename_LRTCentral() const;
119 std::string filename_LRTLowPt() const;
120
123 float lowPtTransition() const;
124
126 MuonEfficiencyType measurement() const;
127
132
134 std::string sf_decoration() const;
135 std::string data_effi_decoration() const;
136 std::string mc_effi_decoration() const;
137
138 std::string sf_replica_decoration() const;
139 std::string data_effi_replica_decoration() const;
140 std::string mc_effi_replica_deocration() const;
141
145 size_t getPosition(const EffiCollection* coll) const;
146
148 size_t getNCollections() const;
150 bool uncorrelate_sys() const;
151
155 const std::string& close_by_jet_decoration() const;
157 bool use_2D_iso_corrections() const;
159 bool use_lrt() const;
160
161
162 private:
164 std::string resolve_file_location(const std::string &filename)const;
165
166
168 std::string m_wp;
169
171 std::vector<std::unique_ptr<EffiCollection>> m_sf_sets;
172
174 EffiCollection* m_current_sf;
175
176 std::string m_custom_dir;
177 std::string m_custom_file_Combined;
178 std::string m_custom_file_Calo;
179 std::string m_custom_file_HighEta;
180 std::string m_custom_file_LowPt;
181 std::string m_custom_file_LowPtCalo;
182 std::string m_custom_file_LRTCombined;
183 std::string m_custom_file_LRTLowPt;
184
185 // Decorate the data-monteCarlo & scale-factors
186 // to the muon. Decoration names can be set flexile
187 std::string m_efficiency_decoration_name_data;
188 std::string m_efficiency_decoration_name_mc;
189 std::string m_sf_decoration_name;
190
192 std::string m_calibration_version;
193
194
196 float m_lowpt_threshold;
198 std::string m_iso_jet_dR;
199 bool m_use2DIsoCorr;
200 CP::SystematicSet m_affectingSys;
203 std::unordered_map<CP::SystematicSet, EffiCollection*> m_filtered_sys_sets;
204
205 bool m_init;
206 bool m_seperateSystBins;
207 bool m_breakDownSyst;
208 bool m_applyKineDepSys;
210 bool m_useLRT;
211
212 MuonEfficiencyType m_Type;
213
214 // a struct holding all columnar accessors, as those interfere
215 // with the root dictionaries.
216 struct Accessors;
217 std::unique_ptr<Accessors> m_accessors;
218
219 public:
220
221 void callSingleEvent (columnar::MuonRange muons, columnar::EventInfoId event) const;
222 virtual void callEvents (columnar::EventContextRange events) const override;
223 };
224
225} /* namespace ADD_CMODE(CP) */
226
227#endif /* MUONEFFICIENCYSCALEFACTORS_H_ */
#define ASG_TOOL_CLASS3(CLASSNAME, INT1, INT2, INT3)
Property holding a SG store/key/clid from which a ReadHandle is made.
Return value from object correction CP tools.
interface for all CP tools supporting systematic variations within a reentrant algorithm
Interface for all CP tools supporting systematic variations.
Class to wrap a set of SystematicVariations.
Property holding a SG store/key/clid from which a ReadHandle is made.
Base class for the dual-use tool implementation classes.
Definition AsgTool.h:47
the base class for all columnar components
ObjectId< MuonDef > MuonId
Definition MuonDef.h:22
ObjectRange< EventContextDef > EventContextRange
ObjectRange< MuonDef > MuonRange
Definition MuonDef.h:21
ObjectId< EventInfoDef > EventInfoId
EventInfo_v1 EventInfo
Definition of the latest event info version.
Muon_v1 Muon
Reference the current persistent version:
Definition Muon.h:13
void initialize()