3 |
|
|
4 |
|
#include "Particle.h" |
5 |
|
|
6 |
+ |
/** |
7 |
+ |
* @short electron class |
8 |
+ |
* @author Thomas Peiffer |
9 |
+ |
*/ |
10 |
+ |
|
11 |
|
class Electron : public Particle{ |
12 |
|
|
13 |
|
public: |
41 |
|
m_EcalEnergy=0; |
42 |
|
m_mvaTrigV0=0; |
43 |
|
m_mvaNonTrigV0=0; |
44 |
+ |
m_AEff=0; |
45 |
|
}; |
46 |
|
|
47 |
|
~Electron(){ |
76 |
|
float EcalEnergy() const{return m_EcalEnergy;} |
77 |
|
float mvaTrigV0() const{return m_mvaTrigV0;} |
78 |
|
float mvaNonTrigV0() const{return m_mvaNonTrigV0;} |
79 |
+ |
float AEff() const{return m_AEff;} |
80 |
|
|
81 |
|
|
82 |
|
void set_vertex_x(float x){m_vertex_x=x;} |
108 |
|
void set_EcalEnergy(float x){m_EcalEnergy=x;} |
109 |
|
void set_mvaTrigV0(float x){m_mvaTrigV0=x;} |
110 |
|
void set_mvaNonTrigV0(float x){m_mvaNonTrigV0=x;} |
111 |
+ |
void set_AEff(float x){m_AEff=x;} |
112 |
|
|
113 |
|
float gsfTrack_dxy_vertex(const float point_x, const float point_y) const{ |
114 |
|
return ( - (m_gsfTrack_vx-point_x) * m_gsfTrack_py + (m_gsfTrack_vy-point_y) * m_gsfTrack_px ) / sqrt(m_gsfTrack_px*m_gsfTrack_px+m_gsfTrack_py*m_gsfTrack_py); |
117 |
|
return (m_gsfTrack_vz-point_z) - ((m_gsfTrack_vx-point_x)*m_gsfTrack_px+(m_gsfTrack_vy-point_y)*m_gsfTrack_py)/(m_gsfTrack_px*m_gsfTrack_px+m_gsfTrack_py*m_gsfTrack_py) * m_gsfTrack_pz; |
118 |
|
} |
119 |
|
float relIso() const{ |
120 |
+ |
return ( m_chargedHadronIso + m_neutralHadronIso + m_photonIso ) / pt(); |
121 |
+ |
} |
122 |
+ |
float relIsodb() const{ |
123 |
|
return ( m_chargedHadronIso + std::max( 0.0, m_neutralHadronIso + m_photonIso - 0.5*m_puChargedHadronIso ) ) / pt(); |
124 |
|
} |
125 |
+ |
float relIsorho(const double rho) const{ |
126 |
+ |
return ( m_chargedHadronIso + std::max( 0.0, m_neutralHadronIso + m_photonIso - rho*m_AEff ) ) / pt(); |
127 |
+ |
} |
128 |
+ |
|
129 |
+ |
enum E_eleIDType{ |
130 |
+ |
e_Tight, |
131 |
+ |
e_Medium, |
132 |
+ |
e_Loose, |
133 |
+ |
e_Veto |
134 |
+ |
}; |
135 |
+ |
|
136 |
+ |
|
137 |
+ |
bool eleID(E_eleIDType type){ |
138 |
+ |
|
139 |
+ |
bool pass=false; |
140 |
+ |
|
141 |
+ |
|
142 |
+ |
float cuts_barrel[5]={0,0,0,0,0}; |
143 |
+ |
float cuts_endcap[5]={0,0,0,0,0}; |
144 |
+ |
|
145 |
+ |
if(type==e_Tight){ |
146 |
+ |
cuts_barrel[0]=0.004; cuts_barrel[1]=0.03; cuts_barrel[2]=0.01; cuts_barrel[3]=0.12; cuts_barrel[4]=0.05; |
147 |
+ |
cuts_endcap[0]=0.005; cuts_endcap[1]=0.02; cuts_endcap[2]=0.03; cuts_endcap[3]=0.10; cuts_endcap[4]=0.05; |
148 |
+ |
} |
149 |
+ |
if(type==e_Medium){ |
150 |
+ |
cuts_barrel[0]=0.004; cuts_barrel[1]=0.06; cuts_barrel[2]=0.01; cuts_barrel[3]=0.12; cuts_barrel[4]=0.05; |
151 |
+ |
cuts_endcap[0]=0.007; cuts_endcap[1]=0.03; cuts_endcap[2]=0.03; cuts_endcap[3]=0.10; cuts_endcap[4]=0.05; |
152 |
+ |
} |
153 |
+ |
if(type==e_Loose){ |
154 |
+ |
cuts_barrel[0]=0.007; cuts_barrel[1]=0.15; cuts_barrel[2]=0.01; cuts_barrel[3]=0.12; cuts_barrel[4]=0.05; |
155 |
+ |
cuts_endcap[0]=0.009; cuts_endcap[1]=0.10; cuts_endcap[2]=0.03; cuts_endcap[3]=0.10; cuts_endcap[4]=0.05; |
156 |
+ |
} |
157 |
+ |
if(type==e_Veto){ |
158 |
+ |
cuts_barrel[0]=0.007; cuts_barrel[1]=0.8; cuts_barrel[2]=0.01; cuts_barrel[3]=0.15; cuts_barrel[4]=std::numeric_limits<float>::infinity(); |
159 |
+ |
cuts_endcap[0]=0.01; cuts_endcap[1]=0.7; cuts_endcap[2]=0.03; cuts_endcap[3]=std::numeric_limits<float>::infinity(); cuts_endcap[4]=std::numeric_limits<float>::infinity(); |
160 |
+ |
} |
161 |
+ |
|
162 |
+ |
float trackMomentumAtVtx = EcalEnergy()/EoverPIn(); |
163 |
+ |
|
164 |
+ |
if(fabs(supercluster_eta())<1.4442){ |
165 |
+ |
if(dEtaIn()<cuts_barrel[0] && dPhiIn()<cuts_barrel[1] && sigmaIEtaIEta()<cuts_barrel[2] && HoverE()<cuts_barrel[3] && fabs(1./EcalEnergy()-1./trackMomentumAtVtx)<cuts_barrel[4]) pass=true; |
166 |
+ |
} |
167 |
+ |
else if( fabs(supercluster_eta())>1.5660){ |
168 |
+ |
if(dEtaIn()<cuts_endcap[0] && dPhiIn()<cuts_endcap[1] && sigmaIEtaIEta()<cuts_endcap[2] && HoverE()<cuts_endcap[3] && fabs(1./EcalEnergy()-1./trackMomentumAtVtx)<cuts_endcap[4]) pass=true; |
169 |
+ |
} |
170 |
+ |
|
171 |
+ |
return pass; |
172 |
+ |
|
173 |
+ |
} |
174 |
|
|
175 |
|
private: |
176 |
|
float m_vertex_x; |
202 |
|
float m_EcalEnergy; |
203 |
|
float m_mvaTrigV0; |
204 |
|
float m_mvaNonTrigV0; |
205 |
+ |
float m_AEff; |
206 |
|
|
207 |
|
}; |
208 |
|
|