00001 // Dear emacs, this is -*-c++-*- 00002 00003 #ifndef __ASGELECTRONMULTILEPTONSELECTOR__ 00004 #define __ASGELECTRONMULTILEPTONSELECTOR__ 00005 00017 // Atlas includes 00018 #include "AsgTools/AsgTool.h" 00019 #include "ElectronPhotonSelectorTools/IAsgElectronMultiLeptonSelector.h" 00020 00021 // Include the return object and ROOT tool 00022 #include "PATCore/TAccept.h" 00023 #include "ElectronPhotonSelectorTools/TElectronMultiLeptonSelector.h" 00024 00025 00026 class AsgElectronMultiLeptonSelector : public asg::AsgTool, 00027 virtual public IAsgElectronMultiLeptonSelector 00028 { 00029 ASG_TOOL_CLASS2(AsgElectronMultiLeptonSelector, IAsgElectronMultiLeptonSelector, 00030 IAsgSelectionTool) 00031 00032 public: 00034 AsgElectronMultiLeptonSelector(std::string myname); 00035 00036 00038 virtual ~AsgElectronMultiLeptonSelector(); 00039 00040 00041 public: 00043 virtual StatusCode initialize(); 00044 00046 virtual StatusCode finalize(); 00047 00048 // Main methods for IAsgSelectionTool interface 00049 00051 const Root::TAccept& accept( const xAOD::IParticle* part ) const; 00052 00054 const Root::TAccept& accept( const xAOD::Electron* eg ) const; 00055 00057 virtual const Root::TAccept& accept( const xAOD::Electron& part ) const { 00058 return accept (&part); 00059 } 00060 00062 virtual const Root::TAccept& accept( const xAOD::IParticle& part ) const { 00063 return accept (&part); 00064 } 00065 00067 inline virtual const Root::TAccept& getTAccept( ) const 00068 { 00069 return m_rootTool->getTAccept(); 00070 } 00071 00073 virtual std::string getOperatingPointName( ) const; 00074 00075 00076 // Private member variables 00077 private: 00079 Root::TElectronMultiLeptonSelector* m_rootTool; 00080 00082 Root::TAccept m_acceptDummy; 00083 00084 }; // End: class definition 00085 00086 00087 00088 00089 00090 00091 #endif 00092