00001 // Dear emacs, this is -*- c++ -*- 00002 // $Id: IInDetTrackSmearingTool.h 299883 2014-03-28 17:34:16Z krasznaa $ 00003 00004 #ifndef INDETTRACKSMEARINGTOOL_IINDETTRACKSMEARINGTOOL_H 00005 #define INDETTRACKSMEARINGTOOL_IINDETTRACKSMEARINGTOOL_H 00006 00007 // Framework include(s): 00008 #include "AsgTools/IAsgTool.h" 00009 #include "PATInterfaces/ISystematicsTool.h" 00010 #include "PATInterfaces/SystematicVariation.h" 00011 #include "PATInterfaces/CorrectionCode.h" 00012 00013 // EDM include(s): 00014 #include "xAODTracking/TrackParticleContainer.h" 00015 00016 // Local include(s): 00017 00018 namespace InDet { 00019 00029 class IInDetTrackSmearingTool 00030 : public virtual asg::IAsgTool 00031 , public virtual CP::ISystematicsTool 00032 { 00033 00035 ASG_TOOL_INTERFACE( InDet::IInDetTrackSmearingTool ) 00036 00037 public: 00038 // implement the CP::CorrectionTool interface 00039 00041 virtual CP::CorrectionCode applyCorrection( xAOD::TrackParticle& ID ) = 0; 00042 virtual CP::CorrectionCode correctedCopy( const xAOD::TrackParticle&, xAOD::TrackParticle*& ) = 0; 00043 virtual CP::CorrectionCode applyContainerCorrection( xAOD::TrackParticleContainer& ) = 0; 00044 00045 // implement the CP::ISystematicTool interface 00046 00048 virtual bool isAffectedBySystematic( const CP::SystematicVariation& ) const = 0; 00050 virtual CP::SystematicSet affectingSystematics() const = 0; 00052 virtual CP::SystematicSet recommendedSystematics() const = 0; 00053 00055 virtual CP::SystematicCode applySystematicVariation( const CP::SystematicSet& ) = 0; 00056 00057 00058 }; 00059 00060 } 00061 00062 #endif