00001 // Dear emacs, this is -*-c++-*- 00002 00003 #ifndef __IASGELECTRONISEMSELECTOR__ 00004 #define __IASGELECTRONISEMSELECTOR__ 00005 00016 // Include the interfaces 00017 #include "PATCore/IAsgSelectionTool.h" 00018 #include "ElectronPhotonSelectorTools/IAsgEGammaIsEMSelector.h" 00019 #include "ElectronPhotonSelectorTools/egammaPIDdefs.h" 00020 // Forward declarations 00021 namespace Root{ 00022 class TAccept; 00023 } 00024 #include "xAODEgamma/ElectronFwd.h" 00025 #include "xAODEgamma/PhotonFwd.h" 00026 #include "xAODEgamma/EgammaFwd.h" 00027 00028 class IAsgElectronIsEMSelector : virtual public IAsgEGammaIsEMSelector 00029 { 00030 00031 ASG_TOOL_INTERFACE(IAsgElectronIsEMSelector) 00032 00033 public: 00034 00036 virtual ~IAsgElectronIsEMSelector() {}; 00037 00039 virtual const Root::TAccept& accept( const xAOD::IParticle* part ) const = 0; 00040 00042 virtual const Root::TAccept& accept( const xAOD::IParticle& part ) const = 0; 00043 00045 virtual const Root::TAccept& accept( const xAOD::Egamma* part) const = 0; 00046 00048 virtual const Root::TAccept& accept( const xAOD::Egamma& part) const = 0; 00049 00051 virtual const Root::TAccept& accept( const xAOD::Photon* part ) const = 0; 00052 00054 virtual const Root::TAccept& accept( const xAOD::Photon& part ) const = 0; 00055 00057 virtual const Root::TAccept& accept( const xAOD::Electron* part ) const = 0; 00058 00060 virtual const Root::TAccept& accept( const xAOD::Electron& part ) const = 0; 00061 00062 00064 00065 00066 //The main execute method 00067 virtual StatusCode execute(const xAOD::Egamma* eg) const =0; 00068 00070 virtual unsigned int IsemValue() const = 0; 00071 00073 virtual std::string getOperatingPointName( ) const =0; 00074 00075 00076 00077 }; // End: class definition 00078 00079 00080 #endif 00081