00001 #ifndef MCAST_IMUONCALIBRATIONANDSMEARINGTOOL_H
00002 #define MCAST_IMUONCALIBRATIONANDSMEARINGTOOL_H
00003
00004
00005 #include "AsgTools/IAsgTool.h"
00006
00007
00008 #include "xAODMuon/Muon.h"
00009
00010
00011 #include "PATInterfaces/CorrectionCode.h"
00012 #include "PATInterfaces/ISystematicsTool.h"
00013 #include "PATInterfaces/SystematicCode.h"
00014 #include "PATInterfaces/SystematicRegistry.h"
00015 #include "PATInterfaces/SystematicSet.h"
00016 #include "PATInterfaces/SystematicVariation.h"
00017
00018 namespace CP {
00019
00020 class IMuonCalibrationAndSmearingTool : public virtual asg::IAsgTool, virtual public CP::ISystematicsTool {
00021
00022
00023 ASG_TOOL_INTERFACE( CP::IMuonCalibrationAndSmearingTool )
00024
00025 public:
00026
00027 virtual CorrectionCode applyCorrection( xAOD::Muon& mu ) = 0;
00028
00029 virtual CorrectionCode correctedCopy( const xAOD::Muon& input, xAOD::Muon*& output ) = 0;
00030
00031 virtual bool isAffectedBySystematic( const SystematicVariation& systematic ) const = 0;
00032
00033 virtual SystematicSet affectingSystematics() const = 0;
00034
00035 virtual SystematicSet recommendedSystematics() const = 0;
00036
00037 virtual SystematicCode applySystematicVariation ( const SystematicSet& systConfig ) = 0;
00038
00039 virtual void setRandomSeed( unsigned seed ) = 0;
00040
00041 virtual double expectedResolution( const std::string& DetType, xAOD::Muon& mu, const bool mc ) const=0;
00042
00043 virtual double expectedResolution( const int DetType, xAOD::Muon& mu, const bool mc) const=0;
00044
00045 virtual CorrectionCode applyStatCombination( const ElementLink< xAOD::TrackParticleContainer >& inDetTrackParticle,
00046 const ElementLink< xAOD::TrackParticleContainer >& extrTrackParticle ,
00047 int charge,
00048 AmgVector(5)& parsCB,
00049 AmgSymMatrix(5)& covCB,
00050 double& chi2) = 0;
00051 virtual CorrectionCode applyStatCombination( xAOD::Muon& mu ) =0 ;
00052
00053 virtual void setUseStatCombination(bool flag) = 0;
00054
00055 virtual CorrectionCode applySagittaBiasCorrectionAuto(const int DetType,xAOD::Muon& mu,bool isMC,const unsigned int SytCase)=0;
00056 virtual CorrectionCode CorrectForCharge(double p2,double& pt,int q, bool isMC)=0;
00057 virtual CorrectionCode applyiSagittaBiasCorrection(const unsigned int SgCorrType, xAOD::Muon& mu,unsigned int iter,bool stop,bool isMC)=0;
00058
00059
00060 };
00061
00062 }
00063
00064 #endif // MCAST_IMUONCALIBRATIONANDSMEARINGTOOL_H