00001
00002
00003
00004
00005
00006
00007
00008 #ifndef IMUONEFFICIENCYSCALEFACTORS_H_
00009 #define IMUONEFFICIENCYSCALEFACTORS_H_
00010
00011
00012 #include "AsgTools/IAsgTool.h"
00013
00014
00015 #include "xAODMuon/Muon.h"
00016 #include <xAODEventInfo/EventInfo.h>
00017
00018
00019 #include "PATInterfaces/CorrectionCode.h"
00020 #include "PATInterfaces/ISystematicsTool.h"
00021
00022
00023 #include <string>
00024 #include <vector>
00025 #include <map>
00026
00101 namespace CP {
00102
00103 class IMuonEfficiencyScaleFactors: public virtual asg::IAsgTool, public virtual CP::ISystematicsTool {
00109
00110 ASG_TOOL_INTERFACE (CP::IMuonEfficiencyScaleFactors)
00111
00112 public:
00114 virtual StatusCode initialize()= 0;
00115
00117 virtual CorrectionCode getEfficiencyScaleFactor(const xAOD::Muon& mu, float& sf, const xAOD::EventInfo* info = 0) const = 0;
00119 virtual CorrectionCode applyEfficiencyScaleFactor(const xAOD::Muon& mu, const xAOD::EventInfo* info = 0) const = 0;
00120
00122
00127
00128 virtual CorrectionCode getEfficiencyScaleFactorReplicas(const xAOD::Muon& mu, std::vector<float> & sf_err, const xAOD::EventInfo* info = 0) const = 0;
00130 virtual CorrectionCode applyEfficiencyScaleFactorReplicas(const xAOD::Muon& mu, int nreplicas = 50, const xAOD::EventInfo* info = 0) const = 0;
00131
00133
00134 virtual CorrectionCode getDataEfficiency(const xAOD::Muon& mu, float& eff, const xAOD::EventInfo* info = 0) const = 0;
00136 virtual CorrectionCode applyDataEfficiency(const xAOD::Muon& mu, const xAOD::EventInfo* info = 0) const= 0;
00137
00139 virtual CorrectionCode getMCEfficiency(const xAOD::Muon &mu, float& eff, const xAOD::EventInfo* info = 0) const=0;
00140
00141 virtual CorrectionCode applyMCEfficiency(const xAOD::Muon &mu, const xAOD::EventInfo* info = 0) const =0;
00142
00143 virtual ~IMuonEfficiencyScaleFactors() {
00144 }
00145
00146 };
00147
00148
00149 }
00150
00151 #endif