00001
00002
00003
00004
00005
00006
00007 #ifndef ___Atlfast_trigobjs__
00008 #define ___Atlfast_trigobjs__
00009
00010
00011 #include "GaudiKernel/SmartDataPtr.h"
00012
00013 #include <cmath>
00014 #include <cstdlib>
00015
00016
00017
00018
00019
00020
00021
00022 namespace TrigObj {
00023 const float etaMaxElec = xxx.x;
00024 const float etaMaxPhoton = xxx.x;
00025 const float etaMaxMuon = xxx.x;
00026 const float etaMaxEMu_E = xxx.x;
00027 const float etaMaxEMu_M = xxx.x;
00028 const float ptMinEM1 = xxx.x;
00029 const float ptMinEM2Elec = xxx.x;
00030 const float ptMinEM2Phot = xxx.x;
00031 const float ptMinMU1Isol = xxx.x;
00032 const float ptMinMU2Isol = xxx.x;
00033 const float ptMinMU1NIsol = xxx.x;
00034 const float ptMinMU2NIsol = xxx.x;
00035 const float ptMinEMUElec = xxx.x;
00036 const float ptMinEMUMuon = xxx.x;
00037
00038 class IsolatedElectron {
00039 public:
00040 IsolatedElectron() m_em1(0), m_em2(0), m_emu(0){}
00041 bool operator() ( ReconstructedParticle* a) {
00042 if( abs(a->eta()) <= etaMaxElec) return false;
00043 float pt=a->pt();
00044 if( pt> ptMinEM1) ++m_em1;
00045 if( pt> ptMinEM2) ++m_em2;
00046 if( pt> ptMinEMU) ++m_emu;
00047 return true;
00048 }
00049 bool em1(){return m_em1>1;}
00050 bool em2(){return m_em2;}
00051 int emu(){return m_emu;}
00052 private:
00053 bool m_em1;
00054 int m_em2;
00055 int m_emu;
00056 };
00057
00058 class IsolatedPhoton {
00059 public:
00060 Photon() m_ph1(0), m_em2(0) {}
00061 bool operator() ( ReconstructedParticle* a) {
00062 if( abs(a->eta()) <= etaMaxPhoton) return false;
00063 float pt=a->pt();
00064 if( pt> ptMinPH1) ++m_ph1;
00065 if( pt> ptMinEM2) ++m_em2;
00066 return true;
00067 }
00068 bool em1(){return m_ph1>1;}
00069 int em2(){return m_em2;}
00070 private:
00071 int m_ph1;
00072 int m_em2;
00073 };
00074
00075 class IsolatedMuon {
00076 public:
00077 IsolatedMuon(int lumi) m_lumi(lumi), m_mu1(0), m_mu2(0) {}
00078 bool operator() ( ReconstructedParticle* a) {
00079 if( abs(a->eta()) <= etaMaxMuon) return;
00080 float pt=a->pt();
00081 if( pt> ptMinMU1Isol) ++m_mu1;
00082 if( highLumi() && pt> ptMinMU2Isol) ++m_mu2;
00083 return true;
00084 }
00085 bool mu1(){return m_mu1>1;}
00086 bool mu2(){return m_mu2>1;}
00087 private:
00088 bool highLumi(){return m_lumi==2;}
00089 int m_lumi;
00090 int m_mu1;
00091 int m_mu2;
00092 };
00093 class NonIsolatedMuonTrig {
00094 public:
00095 NonIsolatedMuon(int lumi) m_lumi(lumi), m_mu1(0), m_mu2(0) {}
00096 bool operator() ( ReconstructedParticle* a) {
00097 etaMuon=abs(a->eta())
00098 if( etaMuon <= etaMaxMuon){
00099 float pt=a->pt();
00100 if( pt> ptMinMU1NIsol) ++m_mu1;
00101 if( highlumi() && pt> ptMinMU2NIsol) ++m_mu2;
00102 return true;
00103 }
00104 if(etaMuon<=etaMaxEMu_M) ++m_emu;
00105
00106
00107 }
00108
00109 bool mu1(){return m_mu1>1;}
00110 bool mu2(){return m_mu2>2;}
00111 private:
00112 bool highLumi(){return m_lumi==2;}
00113 int m_lumi;
00114 int m_mu1;
00115 int m_mu2;
00116 };
00117 }
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127