00001 // Dear emacs, this is -*-c++-*- 00002 00003 #ifndef __IASGFORWARDELECTRONISEMSELECTOR__ 00004 #define __IASGFORWARDELECTRONISEMSELECTOR__ 00005 00016 // Include the interfaces 00017 #include "PATCore/IAsgSelectionTool.h" 00018 #include "ElectronPhotonSelectorTools/IAsgEGammaIsEMSelector.h" 00019 // Include the return object and the underlying ROOT tool 00020 #include "ElectronPhotonSelectorTools/egammaPIDdefs.h" 00021 00022 // Forward declarations 00023 namespace Root{ 00024 class TAccept; 00025 } 00026 #include "xAODEgamma/ElectronFwd.h" 00027 #include "xAODEgamma/PhotonFwd.h" 00028 #include "xAODEgamma/EgammaFwd.h" 00029 00030 class IAsgForwardElectronIsEMSelector : virtual public IAsgEGammaIsEMSelector 00031 { 00032 00033 ASG_TOOL_INTERFACE(IAsgForwardElectronIsEMSelector) 00034 00035 public: 00036 00038 virtual ~IAsgForwardElectronIsEMSelector() {}; 00039 00041 virtual const Root::TAccept& accept( const xAOD::IParticle* part ) const = 0; 00042 00044 virtual const Root::TAccept& accept( const xAOD::IParticle& part ) const = 0; 00045 00047 virtual const Root::TAccept& accept( const xAOD::Egamma* part) const = 0; 00048 00050 virtual const Root::TAccept& accept( const xAOD::Egamma& part) const = 0; 00051 00053 virtual const Root::TAccept& accept( const xAOD::Photon* part ) const = 0; 00054 00056 virtual const Root::TAccept& accept( const xAOD::Photon& part ) const = 0; 00057 00059 virtual const Root::TAccept& accept( const xAOD::Electron* part ) const = 0; 00060 00062 virtual const Root::TAccept& accept( const xAOD::Electron& part ) const = 0; 00063 00064 00066 00067 00068 //The main execute method 00069 virtual StatusCode execute(const xAOD::Egamma* eg) const =0; 00070 00072 virtual unsigned int IsemValue() const = 0; 00073 00075 virtual std::string getOperatingPointName( ) const =0; 00076 00077 00078 00079 }; // End: class definition 00080 00081 00082 #endif 00083