00001
00002
00003 #ifndef __ASGELECTRONLIKELIHOODTOOL__
00004 #define __ASGELECTRONLIKELIHOODTOOL__
00005
00006
00007
00008 #include "AsgTools/AsgTool.h"
00009 #include "ElectronPhotonSelectorTools/TElectronLikelihoodTool.h"
00010 #include "ElectronPhotonSelectorTools/IAsgElectronLikelihoodTool.h"
00011 #include "xAODEgamma/ElectronFwd.h"
00012
00013 class AsgElectronLikelihoodTool : public asg::AsgTool,
00014 virtual public IAsgElectronLikelihoodTool
00015 {
00016 ASG_TOOL_CLASS2(AsgElectronLikelihoodTool, IAsgElectronLikelihoodTool, IAsgSelectionTool)
00017
00018 public:
00020 AsgElectronLikelihoodTool( const std::string myname);
00021
00022
00024 virtual ~AsgElectronLikelihoodTool();
00025 public:
00027 virtual StatusCode initialize();
00028
00030 virtual StatusCode finalize();
00031
00032
00033 public:
00035 const Root::TAccept& accept( const xAOD::IParticle* part ) const;
00036
00038 const Root::TAccept& accept( const xAOD::Electron* eg ) const {
00039 return accept (eg, -99);
00040 }
00041
00043 const Root::TAccept& accept( const xAOD::Egamma* eg ) const {
00044 return accept (eg, -99);
00045 }
00046
00048 const Root::TAccept& accept( const xAOD::Electron* eg, double mu ) const;
00049
00051 const Root::TAccept& accept( const xAOD::Egamma* eg, double mu ) const;
00052
00054 virtual const Root::TAccept& accept( const xAOD::IParticle& part ) const {
00055 return accept (&part);
00056 }
00057
00059 virtual const Root::TAccept& accept( const xAOD::Electron& part ) const {
00060 return accept (&part, -99);
00061 }
00062
00064 virtual const Root::TAccept& accept( const xAOD::Egamma& part ) const {
00065 return accept (&part, -99);
00066 }
00067
00069 virtual const Root::TAccept& accept( const xAOD::Electron& part, double mu ) const {
00070 return accept (&part, mu);
00071 }
00072
00074 virtual const Root::TAccept& accept( const xAOD::Egamma& part, double mu ) const {
00075 return accept (&part, mu);
00076 }
00077
00078
00079
00080 public:
00082 const Root::TResult& calculate( const xAOD::IParticle* part ) const;
00083
00085 const Root::TResult& calculate( const xAOD::Electron* eg ) const {
00086 return calculate (eg, -99);
00087 }
00088
00090 const Root::TResult& calculate( const xAOD::Egamma* eg ) const {
00091 return calculate (eg, -99);
00092 }
00093
00095 const Root::TResult& calculate( const xAOD::Electron* eg, double mu ) const;
00096
00098 const Root::TResult& calculate( const xAOD::Egamma* eg, double mu ) const;
00099
00101 inline virtual const Root::TAccept& getTAccept( ) const
00102 {
00103 return m_rootTool->getTAccept();
00104 }
00105
00106
00108 inline virtual const Root::TResult& getTResult( ) const
00109 {
00110 return m_rootTool->getTResult();
00111 }
00112
00113 virtual std::string getOperatingPointName( ) const;
00114
00115
00116 private:
00118 unsigned int getNPrimVertices() const;
00119
00121 double getFcalEt() const;
00122
00124
00125
00126
00127
00128 private:
00130 std::string m_WorkingPoint;
00131
00132
00133 std::string m_configFile;
00134
00136 Root::TElectronLikelihoodTool* m_rootTool;
00137
00139 Root::TAccept m_acceptDummy;
00140
00142 Root::TResult m_resultDummy;
00143
00144
00146 bool m_usePVCont;
00147
00149 unsigned int m_nPVdefault;
00150
00152 std::string m_primVtxContName;
00153
00155 bool m_useCaloSumsCont;
00156
00158 double m_fcalEtDefault;
00159
00161 std::string m_CaloSumsContName;
00162
00163
00165 std::string m_pdfFileName;
00166
00168 bool m_caloOnly;
00169
00170
00171
00172 };
00173
00174
00175
00176
00177
00178 #endif
00179