00001 // Dear emacs, this is -*-c++-*- 00002 00003 #ifndef __IASGPHOTONISEMSELECTOR__ 00004 #define __IASGPHOTONISEMSELECTOR__ 00005 00016 // Include the interfaces 00017 #include "PATCore/IAsgSelectionTool.h" 00018 #include "ElectronPhotonSelectorTools/IAsgEGammaIsEMSelector.h" 00019 #include "ElectronPhotonSelectorTools/egammaPIDdefs.h" 00020 00021 // Forward declarations 00022 namespace Root{ 00023 class TAccept; 00024 } 00025 #include "xAODEgamma/EgammaFwd.h" 00026 #include "xAODEgamma/PhotonFwd.h" 00027 #include "xAODEgamma/ElectronFwd.h" 00028 00029 class IAsgPhotonIsEMSelector : virtual public IAsgEGammaIsEMSelector 00030 { 00031 00032 ASG_TOOL_INTERFACE(IAsgPhotonIsEMSelector) 00033 00034 public: 00035 00037 virtual ~IAsgPhotonIsEMSelector() {}; 00038 00040 virtual const Root::TAccept& accept( const xAOD::IParticle* part ) const = 0; 00041 00043 virtual const Root::TAccept& accept( const xAOD::IParticle& part ) const = 0; 00044 00046 virtual const Root::TAccept& accept( const xAOD::Egamma* part) const = 0; 00047 00049 virtual const Root::TAccept& accept( const xAOD::Egamma& part) const = 0; 00050 00052 virtual const Root::TAccept& accept( const xAOD::Photon* part ) const = 0; 00053 00055 virtual const Root::TAccept& accept( const xAOD::Photon& part ) const = 0; 00056 00058 virtual const Root::TAccept& accept( const xAOD::Electron* part ) const = 0; 00059 00061 virtual const Root::TAccept& accept( const xAOD::Electron& part ) const = 0; 00062 00063 00065 00066 virtual StatusCode execute(const xAOD::Egamma* eg) const =0; 00067 00068 virtual unsigned int IsemValue() const =0; 00069 00071 virtual std::string getOperatingPointName( ) const =0; 00072 00073 }; // End: class definition 00074 00075 00076 #endif 00077