00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef IMUONTRIGGERSCALEFACTORS_H_
00012 #define IMUONTRIGGERSCALEFACTORS_H_
00013
00014 #include "AsgTools/IAsgTool.h"
00015 #include "PATInterfaces/CorrectionCode.h"
00016 #include "PATInterfaces/ISystematicsTool.h"
00017 #include "xAODMuon/Muon.h"
00018 #include "xAODMuon/MuonContainer.h"
00019
00020 #include "PATInterfaces/CorrectionCode.h"
00021 #include <string>
00022 #include <vector>
00023 #include <map>
00024
00025 namespace TrigMuonEff {
00026
00030 struct Configuration {
00031 mutable bool isData;
00032 bool setByUser;
00033 int replicaIndex;
00034 int runNumber;
00035 std::string trigger;
00036 std::string period;
00037 std::string binning;
00039 Configuration(const bool isData_ = true,
00040 const bool setByUser_ = false,
00041 const int replicaIndex_ = -1,
00042 const int runNumber_ = 0,
00043 const std::string& trigger_ = "",
00044 const std::string& period_ = "",
00045 const std::string& binning_ = "") :
00046 isData(isData_),
00047 setByUser(setByUser_),
00048 replicaIndex(replicaIndex_),
00049 runNumber(runNumber_),
00050 trigger(trigger_),
00051 period(period_),
00052 binning(binning_) {}
00053 };
00054
00059 typedef enum DataPeriod {
00060 period_undefined = -1, perUnDefined = -1,
00061
00062
00063 period_2015_AC = 0, per2015AC = 0,
00064 period_2015_D = 1, per2015D = 1,
00065 period_2015_E = 2, per2015E = 2,
00066 period_2015_F = 3, per2015F = 3,
00067 period_2015_G = 4, per2015G = 4,
00068 period_2015_H = 5, per2015H = 5,
00069 period_2015_I = 6, per2015I = 6,
00070 period_2015_J = 7, per2015J = 7,
00071
00072 period_2016_A = 8, per2016A = 8,
00073 period_2016_B = 9, per2016B = 9,
00074 period_2016_C = 10, per2016C = 10,
00075 period_2016_D1D3 = 11, per2016D1D3 = 11,
00076 period_2016_D4D8 = 12, per2016D4D8 = 12,
00077 period_2016_E = 13, per2016E = 13,
00078 period_2016_F = 14, per2016F = 14,
00079 period_2016_G = 15, per2016G = 15,
00080 period_2016_I = 16, per2016I = 16,
00081 period_2016_K = 17, per2016K = 17,
00082 period_2016_L = 18, per2016L = 18,
00083
00084 period_runnumber_zero = -2
00085 } SFDataPeriod;
00086 }
00087
00092 namespace CP {
00093
00094 class IMuonTriggerScaleFactors : public virtual asg::IAsgTool, virtual public CP::ISystematicsTool {
00095
00096
00097 ASG_TOOL_INTERFACE( CP::IMuonTriggerScaleFactors )
00098
00099 public:
00100 virtual StatusCode initialize(void) = 0;
00101
00102 virtual CorrectionCode setRunNumber(Int_t runNumber) = 0;
00103
00104
00105 virtual CorrectionCode getTriggerScaleFactor(const xAOD::MuonContainer& mucont,
00106 Double_t& triggersf,
00107 const std::string& trigger) = 0;
00108
00109 virtual CorrectionCode getTriggerEfficiency(const xAOD::Muon& mu,
00110 Double_t& efficiency,
00111 const std::string& trigger,
00112 Bool_t dataType) = 0;
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122 };
00123
00124 }
00125
00126 #endif