00001
00002
00003 #ifndef __ASGELECTRONISEMSELECTOR__
00004 #define __ASGELECTRONISEMSELECTOR__
00005
00019
00020 #include "AsgTools/AsgTool.h"
00021
00022
00023 #include "ElectronPhotonSelectorTools/IAsgElectronIsEMSelector.h"
00024
00025 #include "PATCore/TAccept.h"
00026 #include "ElectronPhotonSelectorTools/TElectronIsEMSelector.h"
00027 #include <string>
00028
00029 class AsgElectronIsEMSelector : public asg::AsgTool,
00030 virtual public IAsgElectronIsEMSelector
00031 {
00032
00033 ASG_TOOL_CLASS3(AsgElectronIsEMSelector, IAsgElectronIsEMSelector,
00034 IAsgEGammaIsEMSelector,IAsgSelectionTool)
00035
00036 public:
00038 AsgElectronIsEMSelector(std::string myname);
00039
00041 virtual ~AsgElectronIsEMSelector();
00042
00044 virtual StatusCode initialize();
00045
00047 virtual StatusCode finalize();
00048
00049
00050
00051
00053 virtual const Root::TAccept& accept( const xAOD::IParticle* part ) const ;
00054
00056 virtual const Root::TAccept& accept( const xAOD::IParticle& part ) const {
00057 return accept(&part);
00058 }
00059
00061 virtual const Root::TAccept& accept( const xAOD::Egamma* part) const ;
00062
00064 virtual const Root::TAccept& accept( const xAOD::Egamma& part) const {
00065 return accept(&part);
00066 }
00067
00069 virtual const Root::TAccept& accept( const xAOD::Photon* part ) const ;
00070
00072 virtual const Root::TAccept& accept( const xAOD::Photon& part ) const {
00073 return accept(&part);
00074 }
00075
00077 virtual const Root::TAccept& accept( const xAOD::Electron* part ) const ;
00078
00080 virtual const Root::TAccept& accept( const xAOD::Electron& part ) const{
00081 return accept(&part);
00082 }
00083
00085 unsigned int IsemValue() const {return m_rootTool->isEM(); };
00086
00088 virtual std::string getOperatingPointName( ) const;
00089
00090
00091 StatusCode execute(const xAOD::Egamma* eg) const;
00092
00094 virtual const Root::TAccept& getTAccept( ) const{
00095 return m_rootTool->getTAccept();
00096 }
00097
00098
00099
00100 private:
00101
00102 unsigned int calocuts_electrons(const xAOD::Egamma* eg,
00103 float eta2, double et,
00104 double trigEtTh,
00105 unsigned int iflag) const;
00106
00107 unsigned int TrackCut(const xAOD::Electron* eg,
00108 float eta2, double et, double energy,
00109 unsigned int iflag) const;
00110
00112 std::string m_WorkingPoint;
00113
00115 std::string m_configFile;
00116
00118 Root::TElectronIsEMSelector* m_rootTool;
00119
00121 bool m_useF3core;
00122
00124 Root::TAccept m_acceptDummy;
00125
00127 bool m_caloOnly;
00128 float m_trigEtTh;
00129
00130
00131 };
00132
00133
00134 #endif
00135