00001 // -*- c++ -*- 00002 #pragma once 00003 00004 #include "AsgTools/IAsgTool.h" 00005 #include "PATInterfaces/ISystematicsTool.h" 00006 #include "xAODTracking/TrackParticle.h" 00007 #include <string> 00008 00009 namespace InDet { 00010 00011 class InDetTrackTruthOriginTool; 00012 00017 00018 class IInDetTrackTruthFilterTool 00019 : public virtual asg::IAsgTool 00020 , public virtual CP::ISystematicsTool 00021 { 00022 00023 public: 00024 ASG_TOOL_INTERFACE( InDet::IInDetTrackTruthFilterTool ) 00025 00026 virtual StatusCode initialize() = 0; 00027 virtual void prepare() = 0; // not sure if/why this function is necessary - felix 00028 virtual StatusCode finalize() = 0; 00029 00030 virtual bool accept(const xAOD::TrackParticle* track) const = 0; 00031 virtual bool selectTrack(const xAOD::TrackParticle* track) const __attribute__ ((deprecated("use accept(track) instead"))) = 0; // an old name for the above 00032 00033 00034 // implement the CP::ISystematicTool interface 00035 00037 virtual bool isAffectedBySystematic( const CP::SystematicVariation& ) const = 0; 00039 virtual CP::SystematicSet affectingSystematics() const = 0; 00041 virtual CP::SystematicSet recommendedSystematics() const = 0; 00043 virtual CP::SystematicCode applySystematicVariation( const CP::SystematicSet& ) = 0; 00044 00045 00046 }; // class IInDetTrackTruthFilterTool 00047 00048 } // namespace InDet