4#ifndef MUONEFFICIENCYCORRECITONS_EFFICIENCYSCALEFACTOR_H_
5#define MUONEFFICIENCYCORRECITONS_EFFICIENCYSCALEFACTOR_H_
25#include <TDirectory.h>
39namespace ADD_CMODE(CP) {
41 class MuonEfficiencyScaleFactors;
42 class EfficiencyScaleFactor :
public columnar::ColumnarTool<> {
54 const std::string &
file,
55 const std::string &time_unit);
64 const MuonEfficiencyScaleFactors& ref_tool,
65 const std::string&
file,
66 const std::string& time_unit,
67 const std::string& syst_name,
68 int syst_type_bitmap);
76 bool CheckConsistency();
83 std::string GetBinName(
int bin)
const;
86 int nOverFlowBins()
const;
88 bool isOverFlowBin(
int b)
const;
96 bool SetSystematicBin(
int bin);
98 bool separateBinSyst()
const;
99 bool IsUpVariation()
const;
128 void DebugPrint()
const;
134 std::string sysname(
bool with_direction =
true)
const;
138 unsigned int firstRun()
const;
140 unsigned int lastRun()
const;
143 bool coversRunNumber(
unsigned int run)
const;
146 void setFirstLastRun(
unsigned int first,
unsigned int last);
149 typedef std::vector<std::unique_ptr<HistHandler>> SFReplicaVec;
152 bool ReadFromFile(
const std::string &
file,
const std::string& time_unit);
153 std::unique_ptr<HistHandler> ReadHistFromFile(
columnar::ColumnarTool<>* parent,
const std::string& name, TFile* f,
const std::string& time_unit);
161 CP::CorrectionCode GetContentReplicasFromHist(EfficiencyScaleFactor::SFReplicaVec &replicas,
const xAOD::Muon& mu, std::vector<float> & SF,
bool add_kine_syst);
169 void GenerateReplicas(
int nrep,
int seed);
170 void GenerateReplicasFromHist(
HistHandler*
h,
int nrep,
int seed, EfficiencyScaleFactor::SFReplicaVec &repVector);
175 MuonEfficiencyType m_measurement;
176 std::string m_syst_name;
184 bool m_respond_to_kineDepSyst;
186 bool m_separateBinSyst;
188 std::unique_ptr<HistHandler> m_sf;
189 std::unique_ptr<HistHandler> m_eff;
190 std::unique_ptr<HistHandler> m_mc_eff;
196 std::unique_ptr<FloatDecorator> m_sf_decor;
197 std::unique_ptr<FloatDecorator> m_eff_decor;
198 std::unique_ptr<FloatDecorator> m_mc_eff_decor;
200 std::unique_ptr<FloatVectorDecorator> m_sf_rep_decor;
201 std::unique_ptr<FloatVectorDecorator> m_eff_rep_decor;
202 std::unique_ptr<FloatVectorDecorator> m_mc_eff_rep_decor;
206 std::unique_ptr<IKinematicSystHandler> m_sf_KineDepsys;
210 SFReplicaVec m_sf_replicas;
211 SFReplicaVec m_eff_replicas;
212 SFReplicaVec m_mc_eff_replicas;
215 std::shared_ptr<EfficiencyScaleFactor> m_NominalFallBack;
222 float m_default_eff_ttva;
224 mutable std::atomic<unsigned int> m_warnsPrinted;
225 static const unsigned int m_warningLimit;
227 unsigned int m_firstRun;
228 unsigned int m_lastRun;
ElementLink & operator=(const ElementLink &)=default
Header file for AthHistogramAlgorithm.
Return value from object correction CP tools.
Class to wrap a set of SystematicVariations.
Select isolated Photons, Electrons and Muons.
SG::Decorator< T, ALLOC > Decorator
Helper class to provide type-safe access to aux data, specialized for JaggedVecElt.
ObjectId< MuonDef > MuonId
AccessorTemplate< MuonDef, CT, ColumnAccessMode::input, CM > MuonAccessor
Muon_v1 Muon
Reference the current persistent version:
int run(int argc, char *argv[])