00001 // -*- c++ -*- 00002 #pragma once 00003 00004 #include "AsgTools/IAsgTool.h" 00005 #include "PATInterfaces/CorrectionCode.h" 00006 #include "PATInterfaces/ISystematicsTool.h" 00007 #include "xAODTracking/TrackParticleContainer.h" 00008 00009 namespace InDet { 00010 00015 00016 class IInDetTrackBiasingTool 00017 : public virtual asg::IAsgTool 00018 , public virtual CP::ISystematicsTool 00019 { 00020 00021 ASG_TOOL_INTERFACE( InDet::IInDetTrackBiasingTool ) 00022 00023 public: 00024 virtual StatusCode initialize() = 0; 00025 virtual void prepare() = 0; 00026 virtual StatusCode finalize() = 0; 00027 00029 virtual CP::CorrectionCode applyCorrection(xAOD::TrackParticle& track) = 0; 00030 virtual CP::CorrectionCode correctedCopy( const xAOD::TrackParticle& in, 00031 xAOD::TrackParticle*& out ) = 0; 00032 virtual CP::CorrectionCode applyContainerCorrection( xAOD::TrackParticleContainer& cont ) = 0; 00033 00034 // implement the CP::ISystematicTool interface 00036 virtual bool isAffectedBySystematic( const CP::SystematicVariation& ) const = 0; 00038 virtual CP::SystematicSet affectingSystematics() const = 0; 00040 virtual CP::SystematicSet recommendedSystematics() const = 0; 00042 virtual CP::SystematicCode applySystematicVariation( const CP::SystematicSet& ) = 0; 00043 00044 00045 }; // class IInDetTrackBiasingTool 00046 00047 } // namespace InDet