00001 // -*- c++ -*- 00002 #pragma once 00003 00004 #include "AsgTools/IAsgTool.h" 00005 #include "PATInterfaces/ISystematicsTool.h" 00006 #include "xAODTracking/TrackParticleFwd.h" 00007 #include "xAODJet/JetContainer.h" 00008 #include <string> 00009 00010 namespace InDet { 00011 00015 00016 class IJetTrackFilterTool 00017 : public virtual asg::IAsgTool 00018 , public virtual CP::ISystematicsTool 00019 { 00020 00021 public: 00022 ASG_TOOL_INTERFACE( InDet::IJetTrackFilterTool ) 00023 00024 virtual StatusCode initialize() = 0; 00025 virtual void prepare() = 0; // not sure if/why this function is necessary - felix 00026 virtual StatusCode finalize() = 0; 00027 00028 virtual bool accept( const xAOD::TrackParticle*, const xAOD::Jet* ) const = 0; 00029 virtual bool accept( const xAOD::TrackParticle*, const xAOD::JetContainer* ) const = 0; 00030 00031 // implement the CP::ISystematicTool interface 00032 00034 virtual bool isAffectedBySystematic( const CP::SystematicVariation& ) const = 0; 00036 virtual CP::SystematicSet affectingSystematics() const = 0; 00038 virtual CP::SystematicSet recommendedSystematics() const = 0; 00040 virtual CP::SystematicCode applySystematicVariation( const CP::SystematicSet& ) = 0; 00041 00042 00043 }; // class IJetTrackFilterTool 00044 00045 } // namespace InDet