-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathElectron.h
110 lines (81 loc) · 3.37 KB
/
Electron.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#include "math.h"
#include "TMath.h"
#include "../src/SusyEvent.h"
bool isLooseElectron(susy::Electron ele, vector<susy::SuperCluster> superClusters, double rho, double d0) {
if((int)ele.superClusterIndex >= (int)superClusters.size() || (int)ele.superClusterIndex < 0) return false;
float ele_eta = fabs(superClusters[ele.superClusterIndex].position.Eta());
float ea;
if(ele_eta < 1.0) ea = 0.13;
else if(ele_eta < 1.479) ea = 0.14;
else if(ele_eta < 2.0) ea = 0.07;
else if(ele_eta < 2.2) ea = 0.09;
else if(ele_eta < 2.3) ea = 0.11;
else if(ele_eta < 2.4) ea = 0.11;
else ea = 0.14;
float ele_iso = max(0., (ele.photonIso + ele.neutralHadronIso - rho*ea));
ele_iso += ele.chargedHadronIso;
bool inCrack = ele_eta > 1.4442 && ele_eta < 1.566;
bool passes = ele_eta < 2.5 &&
!inCrack &&
ele.momentum.Pt() > 10. &&
ele.mvaTrig > 0.5 &&
fabs(d0) < 0.04 &&
ele_iso / ele.momentum.Pt() < 0.2 &&
ele.passConversionVeto &&
ele.nMissingHits <= 0;
return passes;
}
bool isIsolatedElectron(susy::Electron ele, vector<susy::SuperCluster> superClusters, double rho) {
if((int)ele.superClusterIndex >= (int)superClusters.size() || (int)ele.superClusterIndex < 0) return false;
float ele_eta = fabs(superClusters[ele.superClusterIndex].position.Eta());
float ea;
if(ele_eta < 1.0) ea = 0.13;
else if(ele_eta < 1.479) ea = 0.14;
else if(ele_eta < 2.0) ea = 0.07;
else if(ele_eta < 2.2) ea = 0.09;
else if(ele_eta < 2.3) ea = 0.11;
else if(ele_eta < 2.4) ea = 0.11;
else ea = 0.14;
float ele_iso = max(0., (ele.photonIso + ele.neutralHadronIso - rho*ea));
ele_iso += ele.chargedHadronIso;
return (ele_iso / ele.momentum.Pt() < 0.1);
}
bool isAntiIsolatedElectron(susy::Electron ele, vector<susy::SuperCluster> superClusters, double rho) {
if((int)ele.superClusterIndex >= (int)superClusters.size() || (int)ele.superClusterIndex < 0) return false;
float ele_eta = fabs(superClusters[ele.superClusterIndex].position.Eta());
float ea;
if(ele_eta < 1.0) ea = 0.13;
else if(ele_eta < 1.479) ea = 0.14;
else if(ele_eta < 2.0) ea = 0.07;
else if(ele_eta < 2.2) ea = 0.09;
else if(ele_eta < 2.3) ea = 0.11;
else if(ele_eta < 2.4) ea = 0.11;
else ea = 0.14;
float ele_iso = max(0., (ele.photonIso + ele.neutralHadronIso - rho*ea));
ele_iso += ele.chargedHadronIso;
float relIso = ele_iso / ele.momentum.Pt();
return (relIso >= 0.25 * 0.9 && relIso < 1.); // hard-cut on -10%, and require 0.25 in CreateHistograms.h
}
bool isTightElectron(susy::Electron ele, vector<susy::SuperCluster> superClusters, double rho, double d0, double dz) {
if((int)ele.superClusterIndex >= (int)superClusters.size() || (int)ele.superClusterIndex < 0) return false;
float ele_eta = fabs(superClusters[ele.superClusterIndex].position.Eta());
float ea;
if(ele_eta < 1.0) ea = 0.13;
else if(ele_eta < 1.479) ea = 0.14;
else if(ele_eta < 2.0) ea = 0.07;
else if(ele_eta < 2.2) ea = 0.09;
else if(ele_eta < 2.3) ea = 0.11;
else if(ele_eta < 2.4) ea = 0.11;
else ea = 0.14;
float ele_iso = max(0., (ele.photonIso + ele.neutralHadronIso - rho*ea));
ele_iso += ele.chargedHadronIso;
bool inCrack = ele_eta > 1.4442 && ele_eta < 1.566;
bool passes = ele_eta < 2.5 &&
!inCrack &&
ele.momentum.Pt() > 30. &&
fabs(d0) < 0.02 &&
fabs(dz) < 1.0 &&
ele.passConversionVeto &&
ele.nMissingHits <= 0;
return passes;
}