1 from PhysicsTools.Heppy.physicsobjects.Lepton
import Lepton
9 '''Initializing tightIdResult to None. The user is responsible
10 for setting this attribute externally if he wants to use the tightId
12 super(Electron, self).
__init__(*args, **kwargs)
25 if id
is None or id ==
"":
return True
27 if rho ==
None and hasattr(self,
'rho')
and self.
rho !=
None: rho = self.
rho
28 if id ==
"POG_MVA_ID_NonTrig":
return self.
mvaIDLoose()
29 elif id ==
"POG_MVA_ID_Trig":
return self.
mvaIDTight()
30 elif id ==
"POG_MVA_ID_NonTrig_full5x5":
return self.
mvaIDLoose(full5x5=
True)
31 elif id ==
"POG_MVA_ID_Trig_full5x5":
return self.
mvaIDTight(full5x5=
True)
32 elif id ==
"POG_MVA_ID_Phys14_NonTrig_VLoose":
return self.
mvaIDRun2(
"NonTrigPhys14",
"VLoose")
33 elif id ==
"POG_MVA_ID_Phys14_NonTrig_Loose":
return self.
mvaIDRun2(
"NonTrigPhys14",
"Loose")
34 elif id ==
"POG_MVA_ID_Phys14_NonTrig_Tight":
return self.
mvaIDRun2(
"NonTrigPhys14",
"Tight")
35 elif id ==
"POG_MVA_ID_Spring15_NonTrig_VLoose":
return self.
mvaIDRun2(
"NonTrigSpring15MiniAOD",
"VLoose")
36 elif id ==
"POG_MVA_ID_Spring15_NonTrig_VLooseIdEmu":
return self.
mvaIDRun2(
"NonTrigSpring15MiniAOD",
"VLooseIdEmu")
37 elif id ==
"POG_MVA_ID_Spring15_NonTrig_VLooseIdIsoEmu":
return self.
mvaIDRun2(
"NonTrigSpring15MiniAOD",
"VLooseIdIsoEmu")
38 elif id ==
"POG_MVA_ID_Spring15_NonTrig_Tight":
return self.
mvaIDRun2(
"NonTrigSpring15MiniAOD",
"Tight")
39 elif id ==
"MVA_ID_NonTrig_Phys14Fix_HZZ":
return self.
mvaIDRun2(
"NonTrigPhys14Fix",
"HZZ")
40 elif id ==
"MVA_ID_NonTrig_Spring15_HZZ":
return self.
mvaIDRun2(
"NonTrigSpring15MiniAOD",
"HZZ")
41 elif id.startswith(
"POG_Cuts_ID_"):
42 return self.
cutBasedId(id.replace(
"POG_Cuts_ID_",
"POG_"))
43 for ID
in self.electronIDs():
46 raise RuntimeError(
"Electron id '%s' not yet implemented in Electron.py" % id)
50 showerShapes =
"full5x5"
51 wp = wp.replace(
"_full5x5",
"")
52 elif showerShapes ==
"auto":
53 if "POG_CSA14_25ns_v1" in wp
or "POG_CSA14_50ns_v1" in wp
or "POG_PHYS14_25ns_v1" in wp
or "POG_PHYS14_25ns_v1_ConvVeto" in wp
or "POG_PHYS14_25ns_v1_ConvVetoDxyDz" in wp
or "POG_PHYS14_25ns_v2" in wp
or "POG_PHYS14_25ns_v2_ConvVeto" in wp
or "POG_PHYS14_25ns_v2_ConvVetoDxyDz" in wp
or "POG_SPRING15_25ns_v1" in wp
or "POG_SPRING15_25ns_v1_ConvVeto" in wp
or "POG_SPRING15_25ns_v1_ConvVetoDxyDz" in wp
or "POG_SPRING15_50ns_v2" in wp
or "POG_SPRING15_50ns_v2_ConvVeto" in wp
or "POG_SPRING15_50ns_v2_ConvVetoDxyDz" in wp:
54 showerShapes =
"full5x5"
56 'dEtaIn' :
abs(self.physObj.deltaEtaSuperClusterTrackAtVtx()),
57 'dPhiIn' :
abs(self.physObj.deltaPhiSuperClusterTrackAtVtx()),
58 'sigmaIEtaIEta' : self.physObj.full5x5_sigmaIetaIeta()
if showerShapes ==
"full5x5" else self.physObj.sigmaIetaIeta(),
59 'H/E' : self.physObj.hadronicOverEm(),
61 '1/E-1/p' :
abs(1.0/self.physObj.ecalEnergy() - self.physObj.eSuperClusterOverP()/self.physObj.ecalEnergy())
if self.physObj.ecalEnergy()>0.
else 9e9,
62 'conversionVeto' : self.physObj.passConversionVeto(),
63 'missingHits' : self.physObj.gsfTrack().hitPattern().numberOfHits(ROOT.reco.HitPattern.MISSING_INNER_HITS),
65 'dz' :
abs(self.
dz()),
69 'POG_2012_Veto' : [(
'dEtaIn', [0.007, 0.01]), (
'dPhiIn', [0.8, 0.7 ]), (
'sigmaIEtaIEta', [0.01, 0.03]), (
'H/E', [0.15, 9e9]), (
'1/E-1/p', [9e9, 9e9])],
70 'POG_2012_Loose' : [(
'dEtaIn', [0.007, 0.009]), (
'dPhiIn', [0.15, 0.1 ]), (
'sigmaIEtaIEta', [0.01, 0.03]), (
'H/E', [0.12, 0.1]), (
'1/E-1/p', [0.05, 0.05])],
71 'POG_2012_Medium' : [(
'dEtaIn', [0.004, 0.007]), (
'dPhiIn', [0.06, 0.03]), (
'sigmaIEtaIEta', [0.01, 0.03]), (
'H/E', [0.12, 0.1]), (
'1/E-1/p', [0.05, 0.05])],
72 'POG_2012_Tight' : [(
'dEtaIn', [0.004, 0.005]), (
'dPhiIn', [0.03, 0.02]), (
'sigmaIEtaIEta', [0.01, 0.03]), (
'H/E', [0.12, 0.1]), (
'1/E-1/p', [0.05, 0.05])],
76 'POG_CSA14_25ns_v1_Veto' : [(
'dEtaIn', [0.017938, 0.014569]), (
'dPhiIn', [0.182958, 0.230914]), (
'sigmaIEtaIEta', [0.012708, 0.036384]), (
'H/E', [0.335015, 0.200792]), (
'1/E-1/p', [0.198287, 0.146856])],
77 'POG_CSA14_25ns_v1_Loose' : [(
'dEtaIn', [0.014928, 0.013045]), (
'dPhiIn', [0.141050, 0.149017]), (
'sigmaIEtaIEta', [0.011304, 0.035536]), (
'H/E', [0.127690, 0.107898]), (
'1/E-1/p', [0.097806, 0.102261])],
78 'POG_CSA14_25ns_v1_Medium' : [(
'dEtaIn', [0.013071, 0.010006]), (
'dPhiIn', [0.132113, 0.052321]), (
'sigmaIEtaIEta', [0.010726, 0.032882]), (
'H/E', [0.109761, 0.101755]), (
'1/E-1/p', [0.032639, 0.041427])],
79 'POG_CSA14_25ns_v1_Tight' : [(
'dEtaIn', [0.012671, 0.008823]), (
'dPhiIn', [0.025218, 0.027286]), (
'sigmaIEtaIEta', [0.010061, 0.030222]), (
'H/E', [0.065085, 0.090710]), (
'1/E-1/p', [0.027873, 0.019404])],
80 'POG_CSA14_50ns_v1_Veto' : [(
'dEtaIn', [0.021, 0.028]), (
'dPhiIn', [0.25 , 0.23 ]), (
'sigmaIEtaIEta', [0.012, 0.035]), (
'H/E', [0.24 , 0.19 ]), (
'1/E-1/p', [0.32 , 0.13 ])],
81 'POG_CSA14_50ns_v1_Loose' : [(
'dEtaIn', [0.016, 0.025]), (
'dPhiIn', [0.080, 0.097]), (
'sigmaIEtaIEta', [0.012, 0.032]), (
'H/E', [0.15 , 0.12 ]), (
'1/E-1/p', [0.11 , 0.11 ])],
82 'POG_CSA14_50ns_v1_Medium' : [(
'dEtaIn', [0.015, 0.023]), (
'dPhiIn', [0.051, 0.056]), (
'sigmaIEtaIEta', [0.010, 0.030]), (
'H/E', [0.10 , 0.099]), (
'1/E-1/p', [0.053, 0.11 ])],
83 'POG_CSA14_50ns_v1_Tight' : [(
'dEtaIn', [0.012, 0.019]), (
'dPhiIn', [0.024, 0.043]), (
'sigmaIEtaIEta', [0.010, 0.029]), (
'H/E', [0.074, 0.080]), (
'1/E-1/p', [0.026, 0.076])],
85 'POG_PHYS14_25ns_v1_Veto' : [(
'dEtaIn', [0.016315, 0.010671]), (
'dPhiIn', [0.252044, 0.245263]), (
'sigmaIEtaIEta', [0.011100 , 0.033987]), (
'H/E', [0.345843, 0.134691]), (
'1/E-1/p', [0.248070, 0.157160])],
86 'POG_PHYS14_25ns_v1_Loose' : [(
'dEtaIn', [0.012442, 0.010654]), (
'dPhiIn', [0.072624, 0.145129]), (
'sigmaIEtaIEta', [0.010557 , 0.032602]), (
'H/E', [0.121476, 0.131862]), (
'1/E-1/p', [0.221803, 0.142283])],
87 'POG_PHYS14_25ns_v1_Medium' : [(
'dEtaIn', [0.007641, 0.009285]), (
'dPhiIn', [0.032643, 0.042447]), (
'sigmaIEtaIEta', [0.010399 , 0.029524]), (
'H/E', [0.060662, 0.104263]), (
'1/E-1/p', [0.153897, 0.137468])],
88 'POG_PHYS14_25ns_v1_Tight' : [(
'dEtaIn', [0.006574, 0.005681]), (
'dPhiIn', [0.022868, 0.032046]), (
'sigmaIEtaIEta', [0.010181 , 0.028766]), (
'H/E', [0.037553, 0.081902]), (
'1/E-1/p', [0.131191, 0.106055])],
90 'POG_PHYS14_25ns_v2_Veto' : [(
'dEtaIn', [0.013625, 0.011932]), (
'dPhiIn', [0.230374, 0.255450]), (
'sigmaIEtaIEta', [0.011586 , 0.031849]), (
'H/E', [0.181130, 0.223870]), (
'1/E-1/p', [0.295751, 0.155501])],
91 'POG_PHYS14_25ns_v2_Loose' : [(
'dEtaIn', [0.009277, 0.009833]), (
'dPhiIn', [0.094739, 0.149934]), (
'sigmaIEtaIEta', [0.010331 , 0.031838]), (
'H/E', [0.093068, 0.115754]), (
'1/E-1/p', [0.189968, 0.140662])],
92 'POG_PHYS14_25ns_v2_Medium' : [(
'dEtaIn', [0.008925, 0.007429]), (
'dPhiIn', [0.035973, 0.067879]), (
'sigmaIEtaIEta', [0.009996 , 0.030135]), (
'H/E', [0.050537, 0.086782]), (
'1/E-1/p', [0.091942, 0.100683])],
93 'POG_PHYS14_25ns_v2_Tight' : [(
'dEtaIn', [0.006046, 0.007057]), (
'dPhiIn', [0.028092, 0.030159]), (
'sigmaIEtaIEta', [0.009947 , 0.028237]), (
'H/E', [0.045772, 0.067778]), (
'1/E-1/p', [0.020118, 0.098919])],
95 'POG_SPRING15_50ns_v2_Veto' : [(
'dEtaIn', [0.01260, 0.01090]), (
'dPhiIn', [0.1070, 0.2190]), (
'sigmaIEtaIEta', [0.0120, 0.0339]), (
'H/E', [0.1860, 0.0962]), (
'1/E-1/p', [0.2390, 0.141])],
96 'POG_SPRING15_50ns_v2_Loose' : [(
'dEtaIn', [0.00976, 0.00952]), (
'dPhiIn', [0.0929, 0.1810]), (
'sigmaIEtaIEta', [0.0105, 0.0318]), (
'H/E', [0.0765, 0.0824]), (
'1/E-1/p', [0.1840, 0.125])],
97 'POG_SPRING15_50ns_v2_Medium' : [(
'dEtaIn', [0.00940, 0.00773]), (
'dPhiIn', [0.0296, 0.1480]), (
'sigmaIEtaIEta', [0.0101, 0.0287]), (
'H/E', [0.0372, 0.0546]), (
'1/E-1/p', [0.1180, 0.104])],
98 'POG_SPRING15_50ns_v2_Tight' : [(
'dEtaIn', [0.00864, 0.00762]), (
'dPhiIn', [0.0291, 0.0439]), (
'sigmaIEtaIEta', [0.0101, 0.0287]), (
'H/E', [0.0372, 0.0544]), (
'1/E-1/p', [0.0116, 0.010])],
99 'POG_SPRING15_25ns_v1_Veto' : [(
'dEtaIn', [0.01520, 0.01130]), (
'dPhiIn', [0.2160, 0.2370]), (
'sigmaIEtaIEta', [0.0114, 0.0352]), (
'H/E', [0.1810, 0.1160]), (
'1/E-1/p', [0.2070, 0.17400])],
100 'POG_SPRING15_25ns_v1_Loose' : [(
'dEtaIn', [0.01050, 0.00814]), (
'dPhiIn', [0.1150, 0.1820]), (
'sigmaIEtaIEta', [0.0103, 0.0301]), (
'H/E', [0.1040, 0.0897]), (
'1/E-1/p', [0.1020, 0.12600])],
101 'POG_SPRING15_25ns_v1_Medium' : [(
'dEtaIn', [0.01030, 0.00733]), (
'dPhiIn', [0.0336, 0.1140]), (
'sigmaIEtaIEta', [0.0101, 0.0283]), (
'H/E', [0.0876, 0.0678]), (
'1/E-1/p', [0.0174, 0.08980])],
102 'POG_SPRING15_25ns_v1_Tight' : [(
'dEtaIn', [0.00926, 0.00724]), (
'dPhiIn', [0.0336, 0.0918]), (
'sigmaIEtaIEta', [0.0101, 0.0279]), (
'H/E', [0.0597, 0.0615]), (
'1/E-1/p', [0.0120, 0.00999])],
105 WP_conversion_veto = {
108 'POG_CSA14_25ns_v1_ConvVeto_Veto' : WP[
'POG_CSA14_25ns_v1_Veto' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [3, 4])],
109 'POG_CSA14_25ns_v1_ConvVeto_Loose' : WP[
'POG_CSA14_25ns_v1_Loose' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [2, 2])],
110 'POG_CSA14_25ns_v1_ConvVeto_Medium' : WP[
'POG_CSA14_25ns_v1_Medium']+[(
'conversionVeto', [
True,
True]), (
'missingHits', [2, 2])],
111 'POG_CSA14_25ns_v1_ConvVeto_Tight' : WP[
'POG_CSA14_25ns_v1_Tight' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [2, 2])],
112 'POG_CSA14_50ns_v1_ConvVeto_Veto' : WP[
'POG_CSA14_50ns_v1_Veto' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [3, 4])],
113 'POG_CSA14_50ns_v1_ConvVeto_Loose' : WP[
'POG_CSA14_50ns_v1_Loose' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [2, 2])],
114 'POG_CSA14_50ns_v1_ConvVeto_Medium' : WP[
'POG_CSA14_50ns_v1_Medium']+[(
'conversionVeto', [
True,
True]), (
'missingHits', [2, 2])],
115 'POG_CSA14_50ns_v1_ConvVeto_Tight' : WP[
'POG_CSA14_50ns_v1_Tight' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [2, 2])],
117 'POG_PHYS14_25ns_v1_ConvVeto_Veto' : WP[
'POG_PHYS14_25ns_v1_Veto' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [3, 4])],
118 'POG_PHYS14_25ns_v1_ConvVeto_Loose' : WP[
'POG_PHYS14_25ns_v1_Loose' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [2, 2])],
119 'POG_PHYS14_25ns_v1_ConvVeto_Medium' : WP[
'POG_PHYS14_25ns_v1_Medium']+[(
'conversionVeto', [
True,
True]), (
'missingHits', [2, 2])],
120 'POG_PHYS14_25ns_v1_ConvVeto_Tight' : WP[
'POG_PHYS14_25ns_v1_Tight' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [2, 2])],
122 'POG_PHYS14_25ns_v2_ConvVeto_Veto' : WP[
'POG_PHYS14_25ns_v2_Veto' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [3, 4])],
123 'POG_PHYS14_25ns_v2_ConvVeto_Loose' : WP[
'POG_PHYS14_25ns_v2_Loose' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [2, 2])],
124 'POG_PHYS14_25ns_v2_ConvVeto_Medium' : WP[
'POG_PHYS14_25ns_v2_Medium']+[(
'conversionVeto', [
True,
True]), (
'missingHits', [2, 2])],
125 'POG_PHYS14_25ns_v2_ConvVeto_Tight' : WP[
'POG_PHYS14_25ns_v2_Tight' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [2, 2])],
127 'POG_SPRING15_50ns_v2_ConvVeto_Veto' : WP[
'POG_SPRING15_50ns_v2_Veto' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [3, 4])],
128 'POG_SPRING15_50ns_v2_ConvVeto_Loose' : WP[
'POG_SPRING15_50ns_v2_Loose' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [3, 2])],
129 'POG_SPRING15_50ns_v2_ConvVeto_Medium' : WP[
'POG_SPRING15_50ns_v2_Medium']+[(
'conversionVeto', [
True,
True]), (
'missingHits', [3, 2])],
130 'POG_SPRING15_50ns_v2_ConvVeto_Tight' : WP[
'POG_SPRING15_50ns_v2_Tight' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [3, 2])],
131 'POG_SPRING15_25ns_v1_ConvVeto_Veto' : WP[
'POG_SPRING15_25ns_v1_Veto' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [3, 4])],
132 'POG_SPRING15_25ns_v1_ConvVeto_Loose' : WP[
'POG_SPRING15_25ns_v1_Loose' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [3, 2])],
133 'POG_SPRING15_25ns_v1_ConvVeto_Medium' : WP[
'POG_SPRING15_25ns_v1_Medium']+[(
'conversionVeto', [
True,
True]), (
'missingHits', [3, 2])],
134 'POG_SPRING15_25ns_v1_ConvVeto_Tight' : WP[
'POG_SPRING15_25ns_v1_Tight' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [3, 2])],
137 WP.update(WP_conversion_veto)
139 WP_conversion_veto_DxyDz = {
141 'POG_PHYS14_25ns_v1_ConvVetoDxyDz_Veto' : WP[
'POG_PHYS14_25ns_v1_ConvVeto_Veto' ]+[(
'dxy',[0.060279, 0.273097]), (
'dz',[0.800538, 0.885860])],
142 'POG_PHYS14_25ns_v1_ConvVetoDxyDz_Loose' : WP[
'POG_PHYS14_25ns_v1_ConvVeto_Loose' ]+[(
'dxy',[0.022664, 0.097358]), (
'dz',[0.173670, 0.198444])],
143 'POG_PHYS14_25ns_v1_ConvVetoDxyDz_Medium' : WP[
'POG_PHYS14_25ns_v1_ConvVeto_Medium']+[(
'dxy',[0.011811, 0.051682]), (
'dz',[0.070775, 0.180720])],
144 'POG_PHYS14_25ns_v1_ConvVetoDxyDz_Tight' : WP[
'POG_PHYS14_25ns_v1_ConvVeto_Tight' ]+[(
'dxy',[0.009924, 0.027261]), (
'dz',[0.015310, 0.147154])],
146 'POG_PHYS14_25ns_v2_ConvVetoDxyDz_Veto' : WP[
'POG_PHYS14_25ns_v2_ConvVeto_Veto' ]+[(
'dxy',[0.094095, 0.342293]), (
'dz',[0.713070, 0.953461])],
147 'POG_PHYS14_25ns_v2_ConvVetoDxyDz_Loose' : WP[
'POG_PHYS14_25ns_v2_ConvVeto_Loose' ]+[(
'dxy',[0.035904, 0.099266]), (
'dz',[0.075496, 0.197897])],
148 'POG_PHYS14_25ns_v2_ConvVetoDxyDz_Medium' : WP[
'POG_PHYS14_25ns_v2_ConvVeto_Medium']+[(
'dxy',[0.012235, 0.036719]), (
'dz',[0.042020, 0.138142])],
149 'POG_PHYS14_25ns_v2_ConvVetoDxyDz_Tight' : WP[
'POG_PHYS14_25ns_v2_ConvVeto_Tight' ]+[(
'dxy',[0.008790, 0.027984]), (
'dz',[0.021226, 0.133431])],
151 'POG_SPRING15_50ns_v2_ConvVetoDxyDz_Veto' : WP[
'POG_SPRING15_50ns_v2_ConvVeto_Veto' ]+[(
'dxy',[0.0621, 0.2790]), (
'dz',[0.613, 0.947])],
152 'POG_SPRING15_50ns_v2_ConvVetoDxyDz_Loose' : WP[
'POG_SPRING15_50ns_v2_ConvVeto_Loose' ]+[(
'dxy',[0.0227, 0.2420]), (
'dz',[0.379, 0.921])],
153 'POG_SPRING15_50ns_v2_ConvVetoDxyDz_Medium' : WP[
'POG_SPRING15_50ns_v2_ConvVeto_Medium']+[(
'dxy',[0.0151, 0.0535]), (
'dz',[0.238, 0.572])],
154 'POG_SPRING15_50ns_v2_ConvVetoDxyDz_Tight' : WP[
'POG_SPRING15_50ns_v2_ConvVeto_Tight' ]+[(
'dxy',[0.0144, 0.0377]), (
'dz',[0.170, 0.571])],
155 'POG_SPRING15_25ns_v1_ConvVetoDxyDz_Veto' : WP[
'POG_SPRING15_25ns_v1_ConvVeto_Veto' ]+[(
'dxy',[0.0564, 0.2220]), (
'dz',[0.472, 0.921])],
156 'POG_SPRING15_25ns_v1_ConvVetoDxyDz_Loose' : WP[
'POG_SPRING15_25ns_v1_ConvVeto_Loose' ]+[(
'dxy',[0.0261, 0.1180]), (
'dz',[0.410, 0.822])],
157 'POG_SPRING15_25ns_v1_ConvVetoDxyDz_Medium' : WP[
'POG_SPRING15_25ns_v1_ConvVeto_Medium']+[(
'dxy',[0.0118, 0.0739]), (
'dz',[0.373, 0.602])],
158 'POG_SPRING15_25ns_v1_ConvVetoDxyDz_Tight' : WP[
'POG_SPRING15_25ns_v1_ConvVeto_Tight' ]+[(
'dxy',[0.0111, 0.0351]), (
'dz',[0.0466,0.417])],
161 WP.update(WP_conversion_veto_DxyDz)
165 raise RuntimeError(
"Working point '%s' not yet implemented in Electron.py" % wp)
166 for (cut_name,(cut_eb,cut_ee))
in WP[wp]:
167 if cut_name ==
'conversionVeto':
168 if (cut_eb
if self.physObj.isEB()
else cut_ee)
and not vars[cut_name]:
170 elif vars[cut_name] >= (cut_eb
if self.physObj.isEB()
else cut_ee):
182 if self.
associatedVertex ==
None:
raise RuntimeError(
"You need to set electron.associatedVertex before calling any MVA")
183 if self.
rho ==
None:
raise RuntimeError(
"You need to set electron.rho before calling any MVA")
189 if self.
associatedVertex ==
None:
raise RuntimeError(
"You need to set electron.associatedVertex before calling any MVA")
190 if self.
rho ==
None:
raise RuntimeError(
"You need to set electron.rho before calling any MVA")
196 if self.
associatedVertex ==
None:
raise RuntimeError(
"You need to set electron.associatedVertex before calling any MVA")
197 if self.
rho ==
None:
raise RuntimeError(
"You need to set electron.rho before calling any MVA")
203 if name ==
"NonTrigSpring15MiniAOD" and self.physObj.hasUserFloat(
"ElectronMVAEstimatorRun2Spring15NonTrig25nsV1Values"):
204 self.
_mvaRun2[name] = self.physObj.userFloat(
"ElectronMVAEstimatorRun2Spring15NonTrig25nsV1Values")
206 if name
not in ElectronMVAID_ByName:
raise RuntimeError,
"Unknown electron run2 mva id %s (known ones are: %s)\n" % (name, ElectronMVAID_ByName.keys())
207 if self.
associatedVertex ==
None:
raise RuntimeError,
"You need to set electron.associatedVertex before calling any MVA"
208 if self.
rho ==
None:
raise RuntimeError,
"You need to set electron.rho before calling any MVA"
217 eta =
abs(self.superCluster().
eta())
219 if (eta < 0.8) :
return self.
mvaTrigV0(full5x5) > +0.00;
220 elif (eta < 1.479):
return self.
mvaTrigV0(full5x5) > +0.10;
221 else :
return self.
mvaTrigV0(full5x5) > +0.62;
223 if (eta < 0.8) :
return self.
mvaTrigV0(full5x5) > +0.94;
224 elif (eta < 1.479):
return self.
mvaTrigV0(full5x5) > +0.85;
225 else :
return self.
mvaTrigV0(full5x5) > +0.92;
228 eta =
abs(self.superCluster().
eta())
230 if (eta < 0.8) :
return self.
mvaNonTrigV0(full5x5) > +0.47;
231 elif (eta < 1.479):
return self.
mvaNonTrigV0(full5x5) > +0.004;
234 if (eta < 0.8) :
return self.
mvaNonTrigV0(full5x5) > -0.34;
235 elif (eta < 1.479):
return self.
mvaNonTrigV0(full5x5) > -0.65;
239 eta =
abs(self.superCluster().
eta())
240 if name ==
"NonTrigPhys14":
242 if (eta < 0.8) :
return self.
mvaRun2(name) > +0.35;
243 elif (eta < 1.479):
return self.
mvaRun2(name) > +0.20;
244 else :
return self.
mvaRun2(name) > -0.52;
246 if (eta < 0.8) :
return self.
mvaRun2(name) > -0.11;
247 elif (eta < 1.479):
return self.
mvaRun2(name) > -0.35;
248 else :
return self.
mvaRun2(name) > -0.55;
250 if (eta < 0.8) :
return self.
mvaRun2(name) > 0.73;
251 elif (eta < 1.479):
return self.
mvaRun2(name) > 0.57;
252 else :
return self.
mvaRun2(name) > 0.05;
253 else:
raise RuntimeError,
"Ele MVA ID Working point not found"
254 elif name ==
"NonTrigPhys14Fix":
257 if eta < 0.8 :
return self.
mvaRun2(name) > -0.586;
258 elif eta < 1.479:
return self.
mvaRun2(name) > -0.712;
259 else :
return self.
mvaRun2(name) > -0.662;
261 if eta < 0.8 :
return self.
mvaRun2(name) > -0.652;
262 elif eta < 1.479:
return self.
mvaRun2(name) > -0.701;
263 else :
return self.
mvaRun2(name) > -0.350;
264 else:
raise RuntimeError,
"Ele MVA ID Working point not found"
265 elif name
in (
"NonTrigSpring15",
"NonTrigSpring15MiniAOD"):
268 if (eta < 0.8) :
return self.
mvaRun2(name) > -0.11;
269 elif (eta < 1.479):
return self.
mvaRun2(name) > -0.55;
270 else :
return self.
mvaRun2(name) > -0.60;
272 if (eta < 0.8) :
return self.
mvaRun2(name) > -0.16;
273 elif (eta < 1.479):
return self.
mvaRun2(name) > -0.65;
274 else :
return self.
mvaRun2(name) > -0.74;
275 elif wp==
"VLooseIdEmu":
276 if (eta < 0.8) :
return self.
mvaRun2(name) > -0.70;
277 elif (eta < 1.479):
return self.
mvaRun2(name) > -0.83;
278 else :
return self.
mvaRun2(name) > -0.92;
279 elif wp==
"VLooseIdIsoEmu":
280 if (eta < 0.8) :
return self.
mvaRun2(name) > -0.155;
281 elif (eta < 1.479):
return self.
mvaRun2(name) > -0.56;
282 else :
return self.
mvaRun2(name) > -0.76;
284 if (eta < 0.8) :
return self.
mvaRun2(name) > 0.87;
285 elif (eta < 1.479):
return self.
mvaRun2(name) > 0.60;
286 else :
return self.
mvaRun2(name) > 0.17;
289 if eta < 0.8 :
return self.
mvaRun2(name) > -0.265;
290 elif eta < 1.479:
return self.
mvaRun2(name) > -0.556;
291 else :
return self.
mvaRun2(name) > -0.551;
293 if eta < 0.8 :
return self.
mvaRun2(name) > -0.072;
294 elif eta < 1.479:
return self.
mvaRun2(name) > -0.286;
295 else :
return self.
mvaRun2(name) > -0.267;
298 if eta < 0.8:
return self.
mvaRun2(name) > 0.967083
299 elif eta < 1.479:
return self.
mvaRun2(name) > 0.929117
300 else:
return self.
mvaRun2(name) > 0.726311
302 if eta < 0.8:
return self.
mvaRun2(name) > 0.287435
303 elif eta < 1.479:
return self.
mvaRun2(name) > 0.221846
304 else:
return self.
mvaRun2(name) > -0.303263
307 if eta < 0.8:
return self.
mvaRun2(name) > 0.913286
308 elif eta < 1.479:
return self.
mvaRun2(name) > 0.805013
309 else:
return self.
mvaRun2(name) > 0.358969
311 if eta < 0.8:
return self.
mvaRun2(name) > -0.083313
312 elif eta < 1.479:
return self.
mvaRun2(name) > -0.235222
313 else:
return self.
mvaRun2(name) > -0.67099
314 else:
raise RuntimeError,
"Ele MVA ID Working point not found"
315 else:
raise RuntimeError,
"Ele MVA ID type not found"
320 if R == 0.3:
return self.physObj.pfIsolationVariables().sumChargedHadronPt
321 elif R == 0.4:
return self.physObj.chargedHadronIso()
322 raise RuntimeError(
"Electron chargedHadronIso missing for R=%s" % R)
325 if R == 0.3:
return self.physObj.pfIsolationVariables().sumNeutralHadronEt
326 elif R == 0.4:
return self.physObj.neutralHadronIso()
327 raise RuntimeError(
"Electron neutralHadronIso missing for R=%s" % R)
330 if R == 0.3:
return self.physObj.pfIsolationVariables().sumPhotonEt
331 elif R == 0.4:
return self.physObj.photonIso()
332 raise RuntimeError(
"Electron photonIso missing for R=%s" % R)
335 if R == 0.3:
return self.physObj.pfIsolationVariables().sumChargedParticlePt
336 raise RuntimeError(
"Electron chargedAllIso missing for R=%s" % R)
339 raise RuntimeError(
"Electron chargedAllIso missing")
342 if R == 0.3:
return self.physObj.pfIsolationVariables().sumPUPt
343 elif R == 0.4:
return self.physObj.puChargedHadronIso()
344 raise RuntimeError(
"Electron chargedHadronIso missing for R=%s" % R)
349 Calculate Isolation, subtract FSR, apply specific PU corrections"
352 if hasattr(self,
'fsrPhotons'):
353 for gamma
in self.fsrPhotons:
354 dr =
deltaR(gamma.eta(), gamma.phi(), self.physObj.eta(), self.physObj.phi())
355 if (self.isEB()
or dr > 0.08)
and dr < R:
356 photonIso =
max(photonIso-gamma.pt(),0.0)
357 if puCorr ==
"deltaBeta":
359 elif puCorr ==
"rhoArea":
360 offset = self.
rho*getattr(self,
"EffectiveArea"+(str(R).
replace(
".",
"")))
361 elif puCorr
in [
"none",
"None",
None]:
364 raise RuntimeError(
"Unsupported PU correction scheme %s" % puCorr)
368 def dxy(self, vertex=None):
370 Computed using vertex (or self.associatedVertex if vertex not specified),
375 return self.gsfTrack().
dxy( vertex.position() )
378 '''returns the uncertainty on dxy (from gsf track)'''
379 return self.gsfTrack().dxyError()
382 return ROOT.reco.Candidate.p4(self.physObj)
387 def dz(self, vertex=None):
389 Computed using vertex (or self.associatedVertex if vertex not specified),
394 return self.gsfTrack().
dz( vertex.position() )
397 '''returns the uncertainty on dxz (from gsf track)'''
398 return self.gsfTrack().dzError()
402 if hasattr(self.gsfTrack(),
"trackerExpectedHitsInner") :
403 return self.gsfTrack().trackerExpectedHitsInner().numberOfLostHits()
405 return self.gsfTrack().hitPattern().numberOfHits(ROOT.reco.HitPattern.MISSING_INNER_HITS)
408 raw = self.physObj.candidateP4Kind()
409 return raw
in (0,1,2)
412 return self.p4Error(self.candidateP4Kind())*self.pt()/self.p()
if self.
validCandidateP4Kind()
else None
tuple ElectronMVAID_NonTrig
tuple ElectronMVAID_TrigNoIP
Abs< T >::type abs(const T &t)
double deltaR(double eta1, double eta2, double phi1, double phi2)