00001 // Dear emacs, this is -*-c++-*- 00002 00003 #ifndef __IASGELECTRONLIKELIHOODSELECTOR__ 00004 #define __IASGELECTRONLIKELIHOODSELECTOR__ 00005 00014 // CONSIDER MERGING THIS WITH IASGELECTRONMULTILEPTONSELECTOR, SINCE THE INTERFACE 00015 // IS EXACTLY THE SAME. LEAVING THEM SEPERATE FOR NOW IN CASE THEY DIVERGE 00016 00017 // Include the interfaces 00018 #include "PATCore/IAsgSelectionTool.h" 00019 // Forward declarations 00020 namespace Root{ 00021 class TAccept; 00022 class TResult; 00023 } 00024 #include "xAODEgamma/ElectronFwd.h" 00025 #include "xAODEgamma/EgammaFwd.h" 00026 00027 class IAsgElectronLikelihoodTool : virtual public IAsgSelectionTool 00028 { 00029 00030 ASG_TOOL_INTERFACE(IAsgElectronLikelihoodTool) 00031 00032 public: 00033 00035 virtual ~IAsgElectronLikelihoodTool() {}; 00036 00037 00039 virtual const Root::TAccept& accept( const xAOD::IParticle* part ) const = 0; 00040 00042 virtual const Root::TAccept& accept( const xAOD::Electron* 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::Electron* part, double mu ) const = 0; 00049 00051 virtual const Root::TAccept& accept( const xAOD::Egamma* part, double mu ) const = 0; 00052 00053 00055 virtual const Root::TAccept& accept( const xAOD::IParticle& 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::Egamma& part ) const = 0; 00062 00064 virtual const Root::TAccept& accept( const xAOD::Electron& part, double mu ) const = 0; 00065 00067 virtual const Root::TAccept& accept( const xAOD::Egamma& part, double mu ) const = 0; 00068 00069 00071 virtual const Root::TResult& calculate( const xAOD::IParticle* part ) const = 0; 00072 00074 virtual const Root::TResult& calculate( const xAOD::Electron* eg ) const = 0; 00075 00077 virtual const Root::TResult& calculate( const xAOD::Egamma* eg ) const = 0; 00078 00080 virtual const Root::TResult& calculate( const xAOD::Electron* eg, double mu ) const = 0; 00081 00083 virtual const Root::TResult& calculate( const xAOD::Egamma* eg, double mu ) const = 0; 00084 00085 00087 virtual const Root::TResult& getTResult( ) const=0; 00088 00090 virtual std::string getOperatingPointName( ) const =0; 00091 00092 //virtual const Root::TAccept& getTAccept( ) const =0; // in base 00093 00094 }; // End: class definition 00095 00096 00097 #endif 00098