00001
00002
00003 #ifndef IEGAMMA_CALIB_TOOL_H_
00004 #define IEGAMMA_CALIB_TOOL_H_
00005
00006 #include "AsgTools/IAsgTool.h"
00007
00008 #include "xAODEgamma/ElectronFwd.h"
00009 #include "xAODEgamma/PhotonFwd.h"
00010 #include "xAODEgamma/EgammaFwd.h"
00011 #include "PATInterfaces/CorrectionCode.h"
00012 #include "PATInterfaces/ISystematicsTool.h"
00013
00014 #include "PATCore/PATCoreEnums.h"
00015
00016
00017 namespace EgammaCalibPeriodRunNumbersExample {
00018 const int run_2016 = 297730;
00019 const int run_2015 = 252604;
00020 struct ROOT6_NamespaceAutoloadHook{};
00021 }
00022
00023
00024 namespace CP {
00025
00026 class IEgammaCalibrationAndSmearingTool : public CP::ISystematicsTool{
00028 ASG_TOOL_INTERFACE( IEgammaCalibrationAndSmearingTool )
00029 public:
00030
00031 virtual ~IEgammaCalibrationAndSmearingTool() {};
00032
00033 virtual StatusCode initialize() = 0;
00034
00035
00036 virtual CP::CorrectionCode applyCorrection(xAOD::Egamma &) = 0;
00037
00038
00039 virtual CP::CorrectionCode correctedCopy(const xAOD::Electron&, xAOD::Electron*&) = 0;
00040 virtual CP::CorrectionCode correctedCopy(const xAOD::Photon&, xAOD::Photon*&) = 0;
00041
00042
00043 virtual void setRandomSeed(unsigned seed) = 0;
00044
00045 virtual double resolution( double energy, double cl_eta, double cl_etaCalo,
00046 PATCore::ParticleType::Type ptype = PATCore::ParticleType::Electron, bool withCT=false) const = 0;
00047 virtual double getResolution(const xAOD::Egamma& particle, bool withCT=true) const = 0;
00048 };
00049
00050 }
00051 #endif