1 |
peiffer |
1.1 |
#ifndef Electron_H
|
2 |
|
|
#define Electron_H
|
3 |
|
|
|
4 |
|
|
#include "Particle.h"
|
5 |
|
|
|
6 |
peiffer |
1.3 |
/**
|
7 |
|
|
* @short electron class
|
8 |
|
|
* @author Thomas Peiffer
|
9 |
|
|
*/
|
10 |
|
|
|
11 |
peiffer |
1.1 |
class Electron : public Particle{
|
12 |
|
|
|
13 |
|
|
public:
|
14 |
|
|
Electron(){
|
15 |
|
|
m_vertex_x=0;
|
16 |
|
|
m_vertex_y=0;
|
17 |
|
|
m_vertex_z=0;
|
18 |
|
|
m_supercluster_eta=0;
|
19 |
|
|
m_supercluster_phi=0;
|
20 |
|
|
m_dB=0;
|
21 |
|
|
// m_particleIso=0;
|
22 |
|
|
m_neutralHadronIso=0;
|
23 |
|
|
m_chargedHadronIso=0;
|
24 |
|
|
m_photonIso=0;
|
25 |
|
|
m_trackIso=0;
|
26 |
|
|
m_puChargedHadronIso=0;
|
27 |
|
|
m_gsfTrack_trackerExpectedHitsInner_numberOfLostHits=0;
|
28 |
|
|
m_gsfTrack_px=0;
|
29 |
|
|
m_gsfTrack_py=0;
|
30 |
|
|
m_gsfTrack_pz=0;
|
31 |
|
|
m_gsfTrack_vx=0;
|
32 |
|
|
m_gsfTrack_vy=0;
|
33 |
|
|
m_gsfTrack_vz=0;
|
34 |
|
|
m_passconversionveto=false;
|
35 |
|
|
m_dEtaIn=0;
|
36 |
|
|
m_dPhiIn=0;
|
37 |
|
|
m_sigmaIEtaIEta=0;
|
38 |
|
|
m_HoverE=0;
|
39 |
|
|
m_fbrem=0;
|
40 |
|
|
m_EoverPIn=0;
|
41 |
|
|
m_EcalEnergy=0;
|
42 |
|
|
m_mvaTrigV0=0;
|
43 |
|
|
m_mvaNonTrigV0=0;
|
44 |
peiffer |
1.5 |
m_AEff=0;
|
45 |
peiffer |
1.1 |
};
|
46 |
|
|
|
47 |
|
|
~Electron(){
|
48 |
|
|
};
|
49 |
|
|
|
50 |
peiffer |
1.2 |
float vertex_x() const{return m_vertex_x;}
|
51 |
|
|
float vertex_y() const{return m_vertex_y;}
|
52 |
|
|
float vertex_z() const{return m_vertex_z;}
|
53 |
|
|
float supercluster_eta() const{return m_supercluster_eta;}
|
54 |
|
|
float supercluster_phi() const{return m_supercluster_phi;}
|
55 |
|
|
float dB() const{return m_dB;}
|
56 |
|
|
//float particleIso() const{return m_particleIso;}
|
57 |
|
|
float neutralHadronIso() const{return m_neutralHadronIso;}
|
58 |
|
|
float chargedHadronIso() const{return m_chargedHadronIso;}
|
59 |
|
|
float photonIso() const{return m_photonIso;}
|
60 |
|
|
float trackIso() const{return m_trackIso;}
|
61 |
|
|
float puChargedHadronIso() const{return m_puChargedHadronIso;}
|
62 |
|
|
int gsfTrack_trackerExpectedHitsInner_numberOfLostHits() const{return m_gsfTrack_trackerExpectedHitsInner_numberOfLostHits;}
|
63 |
|
|
float gsfTrack_px() const{return m_gsfTrack_px;}
|
64 |
|
|
float gsfTrack_py() const{return m_gsfTrack_py;}
|
65 |
|
|
float gsfTrack_pz() const{return m_gsfTrack_pz;}
|
66 |
|
|
float gsfTrack_vx() const{return m_gsfTrack_vx;}
|
67 |
|
|
float gsfTrack_vy() const{return m_gsfTrack_vy;}
|
68 |
|
|
float gsfTrack_vz() const{return m_gsfTrack_vz;}
|
69 |
|
|
bool passconversionveto() const{return m_passconversionveto;}
|
70 |
|
|
float dEtaIn() const{return m_dEtaIn;}
|
71 |
|
|
float dPhiIn() const{return m_dPhiIn;}
|
72 |
|
|
float sigmaIEtaIEta() const{return m_sigmaIEtaIEta;}
|
73 |
|
|
float HoverE() const{return m_HoverE;}
|
74 |
|
|
float fbrem() const{return m_fbrem;}
|
75 |
|
|
float EoverPIn() const{return m_EoverPIn;}
|
76 |
|
|
float EcalEnergy() const{return m_EcalEnergy;}
|
77 |
|
|
float mvaTrigV0() const{return m_mvaTrigV0;}
|
78 |
|
|
float mvaNonTrigV0() const{return m_mvaNonTrigV0;}
|
79 |
peiffer |
1.5 |
float AEff() const{return m_AEff;}
|
80 |
peiffer |
1.1 |
|
81 |
|
|
|
82 |
|
|
void set_vertex_x(float x){m_vertex_x=x;}
|
83 |
|
|
void set_vertex_y(float x){m_vertex_y=x;}
|
84 |
|
|
void set_vertex_z(float x){m_vertex_z=x;}
|
85 |
|
|
void set_supercluster_eta(float x){m_supercluster_eta=x;}
|
86 |
|
|
void set_supercluster_phi(float x){m_supercluster_phi=x;}
|
87 |
|
|
void set_dB(float x){m_dB=x;}
|
88 |
|
|
//void set_particleIso(float x){m_particleIso=x;}
|
89 |
|
|
void set_neutralHadronIso(float x){m_neutralHadronIso=x;}
|
90 |
|
|
void set_chargedHadronIso(float x){m_chargedHadronIso=x;}
|
91 |
|
|
void set_photonIso(float x){m_photonIso=x;}
|
92 |
|
|
void set_trackIso(float x){m_trackIso=x;}
|
93 |
|
|
void set_puChargedHadronIso(float x){m_puChargedHadronIso=x;}
|
94 |
|
|
void set_gsfTrack_trackerExpectedHitsInner_numberOfLostHits(int x){m_gsfTrack_trackerExpectedHitsInner_numberOfLostHits=x;}
|
95 |
|
|
void set_gsfTrack_px(float x){m_gsfTrack_px=x;}
|
96 |
|
|
void set_gsfTrack_py(float x){m_gsfTrack_py=x;}
|
97 |
|
|
void set_gsfTrack_pz(float x){m_gsfTrack_pz=x;}
|
98 |
|
|
void set_gsfTrack_vx(float x){m_gsfTrack_vx=x;}
|
99 |
|
|
void set_gsfTrack_vy(float x){m_gsfTrack_vy=x;}
|
100 |
|
|
void set_gsfTrack_vz(float x){m_gsfTrack_vz=x;}
|
101 |
|
|
void set_passconversionveto(bool x){m_passconversionveto=x;}
|
102 |
|
|
void set_dEtaIn(float x){m_dEtaIn=x;}
|
103 |
|
|
void set_dPhiIn(float x){m_dPhiIn=x;}
|
104 |
|
|
void set_sigmaIEtaIEta(float x){m_sigmaIEtaIEta=x;}
|
105 |
|
|
void set_HoverE(float x){m_HoverE=x;}
|
106 |
|
|
void set_fbrem(float x){m_fbrem=x;}
|
107 |
|
|
void set_EoverPIn(float x){m_EoverPIn=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 |
peiffer |
1.5 |
void set_AEff(float x){m_AEff=x;}
|
112 |
peiffer |
1.1 |
|
113 |
peiffer |
1.2 |
float gsfTrack_dxy_vertex(const float point_x, const float point_y) const{
|
114 |
peiffer |
1.1 |
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);
|
115 |
|
|
};
|
116 |
peiffer |
1.2 |
float gsfTrack_dz_vertex(const float point_x, const float point_y, const float point_z) const{
|
117 |
peiffer |
1.1 |
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 |
peiffer |
1.2 |
float relIso() const{
|
120 |
peiffer |
1.5 |
return ( m_chargedHadronIso + m_neutralHadronIso + m_photonIso ) / pt();
|
121 |
|
|
}
|
122 |
|
|
float relIsodb() const{
|
123 |
peiffer |
1.1 |
return ( m_chargedHadronIso + std::max( 0.0, m_neutralHadronIso + m_photonIso - 0.5*m_puChargedHadronIso ) ) / pt();
|
124 |
|
|
}
|
125 |
peiffer |
1.5 |
float relIsorho(const double rho) const{
|
126 |
|
|
return ( m_chargedHadronIso + std::max( 0.0, m_neutralHadronIso + m_photonIso - rho*m_AEff ) ) / pt();
|
127 |
|
|
}
|
128 |
peiffer |
1.1 |
|
129 |
peiffer |
1.4 |
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 |
peiffer |
1.1 |
private:
|
176 |
|
|
float m_vertex_x;
|
177 |
|
|
float m_vertex_y;
|
178 |
|
|
float m_vertex_z;
|
179 |
|
|
float m_supercluster_eta;
|
180 |
|
|
float m_supercluster_phi;
|
181 |
|
|
float m_dB;
|
182 |
|
|
//float m_particleIso;
|
183 |
|
|
float m_neutralHadronIso;
|
184 |
|
|
float m_chargedHadronIso;
|
185 |
|
|
float m_photonIso;
|
186 |
|
|
float m_trackIso;
|
187 |
|
|
float m_puChargedHadronIso;
|
188 |
|
|
int m_gsfTrack_trackerExpectedHitsInner_numberOfLostHits;
|
189 |
|
|
float m_gsfTrack_px;
|
190 |
|
|
float m_gsfTrack_py;
|
191 |
|
|
float m_gsfTrack_pz;
|
192 |
|
|
float m_gsfTrack_vx;
|
193 |
|
|
float m_gsfTrack_vy;
|
194 |
|
|
float m_gsfTrack_vz;
|
195 |
|
|
bool m_passconversionveto;
|
196 |
|
|
float m_dEtaIn;
|
197 |
|
|
float m_dPhiIn;
|
198 |
|
|
float m_sigmaIEtaIEta;
|
199 |
|
|
float m_HoverE;
|
200 |
|
|
float m_fbrem;
|
201 |
|
|
float m_EoverPIn;
|
202 |
|
|
float m_EcalEnergy;
|
203 |
|
|
float m_mvaTrigV0;
|
204 |
|
|
float m_mvaNonTrigV0;
|
205 |
peiffer |
1.5 |
float m_AEff;
|
206 |
peiffer |
1.1 |
|
207 |
|
|
};
|
208 |
|
|
|
209 |
|
|
#endif
|