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(
"NonTrigSpring15",
"VLoose")
36 elif id ==
"POG_MVA_ID_Spring15_NonTrig_VLooseIdEmu":
return self.
mvaIDRun2(
"NonTrigSpring15",
"VLooseIdEmu")
37 elif id ==
"POG_MVA_ID_Spring15_NonTrig_VLooseIdIsoEmu":
return self.
mvaIDRun2(
"NonTrigSpring15",
"VLooseIdIsoEmu")
38 elif id ==
"POG_MVA_ID_Spring15_NonTrig_Tight":
return self.
mvaIDRun2(
"NonTrigSpring15",
"Tight")
39 elif id ==
"MVA_ID_NonTrig_Phys14Fix_HZZ":
return self.
mvaIDRun2(
"NonTrigPhys14Fix",
"HZZ")
40 elif id.startswith(
"POG_Cuts_ID_"):
41 return self.
cutBasedId(id.replace(
"POG_Cuts_ID_",
"POG_"))
42 for ID
in self.electronIDs():
45 raise RuntimeError(
"Electron id '%s' not yet implemented in Electron.py" % id)
49 showerShapes =
"full5x5"
50 wp = wp.replace(
"_full5x5",
"")
51 elif showerShapes ==
"auto":
52 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:
53 showerShapes =
"full5x5"
55 'dEtaIn' :
abs(self.physObj.deltaEtaSuperClusterTrackAtVtx()),
56 'dPhiIn' :
abs(self.physObj.deltaPhiSuperClusterTrackAtVtx()),
57 'sigmaIEtaIEta' : self.physObj.full5x5_sigmaIetaIeta()
if showerShapes ==
"full5x5" else self.physObj.sigmaIetaIeta(),
58 'H/E' : self.physObj.hadronicOverEm(),
60 '1/E-1/p' :
abs(1.0/self.physObj.ecalEnergy() - self.physObj.eSuperClusterOverP()/self.physObj.ecalEnergy())
if self.physObj.ecalEnergy()>0.
else 9e9,
61 'conversionVeto' : self.physObj.passConversionVeto(),
62 'missingHits' : self.physObj.gsfTrack().hitPattern().numberOfHits(ROOT.reco.HitPattern.MISSING_INNER_HITS),
64 'dz' :
abs(self.
dz()),
68 '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])],
69 '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])],
70 '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])],
71 '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])],
75 '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])],
76 '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])],
77 '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])],
78 '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])],
79 '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 ])],
80 '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 ])],
81 '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 ])],
82 '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])],
84 '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])],
85 '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])],
86 '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])],
87 '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])],
89 '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])],
90 '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])],
91 '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])],
92 '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])],
94 '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])],
95 '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])],
96 '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])],
97 '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])],
98 '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])],
99 '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])],
100 '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])],
101 '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])],
104 WP_conversion_veto = {
107 'POG_CSA14_25ns_v1_ConvVeto_Veto' : WP[
'POG_CSA14_25ns_v1_Veto' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [3, 4])],
108 'POG_CSA14_25ns_v1_ConvVeto_Loose' : WP[
'POG_CSA14_25ns_v1_Loose' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [2, 2])],
109 'POG_CSA14_25ns_v1_ConvVeto_Medium' : WP[
'POG_CSA14_25ns_v1_Medium']+[(
'conversionVeto', [
True,
True]), (
'missingHits', [2, 2])],
110 'POG_CSA14_25ns_v1_ConvVeto_Tight' : WP[
'POG_CSA14_25ns_v1_Tight' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [2, 2])],
111 'POG_CSA14_50ns_v1_ConvVeto_Veto' : WP[
'POG_CSA14_50ns_v1_Veto' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [3, 4])],
112 'POG_CSA14_50ns_v1_ConvVeto_Loose' : WP[
'POG_CSA14_50ns_v1_Loose' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [2, 2])],
113 'POG_CSA14_50ns_v1_ConvVeto_Medium' : WP[
'POG_CSA14_50ns_v1_Medium']+[(
'conversionVeto', [
True,
True]), (
'missingHits', [2, 2])],
114 'POG_CSA14_50ns_v1_ConvVeto_Tight' : WP[
'POG_CSA14_50ns_v1_Tight' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [2, 2])],
116 'POG_PHYS14_25ns_v1_ConvVeto_Veto' : WP[
'POG_PHYS14_25ns_v1_Veto' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [3, 4])],
117 'POG_PHYS14_25ns_v1_ConvVeto_Loose' : WP[
'POG_PHYS14_25ns_v1_Loose' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [2, 2])],
118 'POG_PHYS14_25ns_v1_ConvVeto_Medium' : WP[
'POG_PHYS14_25ns_v1_Medium']+[(
'conversionVeto', [
True,
True]), (
'missingHits', [2, 2])],
119 'POG_PHYS14_25ns_v1_ConvVeto_Tight' : WP[
'POG_PHYS14_25ns_v1_Tight' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [2, 2])],
121 'POG_PHYS14_25ns_v2_ConvVeto_Veto' : WP[
'POG_PHYS14_25ns_v2_Veto' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [3, 4])],
122 'POG_PHYS14_25ns_v2_ConvVeto_Loose' : WP[
'POG_PHYS14_25ns_v2_Loose' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [2, 2])],
123 'POG_PHYS14_25ns_v2_ConvVeto_Medium' : WP[
'POG_PHYS14_25ns_v2_Medium']+[(
'conversionVeto', [
True,
True]), (
'missingHits', [2, 2])],
124 'POG_PHYS14_25ns_v2_ConvVeto_Tight' : WP[
'POG_PHYS14_25ns_v2_Tight' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [2, 2])],
126 'POG_SPRING15_50ns_v2_ConvVeto_Veto' : WP[
'POG_SPRING15_50ns_v2_Veto' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [3, 4])],
127 'POG_SPRING15_50ns_v2_ConvVeto_Loose' : WP[
'POG_SPRING15_50ns_v2_Loose' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [3, 2])],
128 'POG_SPRING15_50ns_v2_ConvVeto_Medium' : WP[
'POG_SPRING15_50ns_v2_Medium']+[(
'conversionVeto', [
True,
True]), (
'missingHits', [3, 2])],
129 'POG_SPRING15_50ns_v2_ConvVeto_Tight' : WP[
'POG_SPRING15_50ns_v2_Tight' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [3, 2])],
130 'POG_SPRING15_25ns_v1_ConvVeto_Veto' : WP[
'POG_SPRING15_25ns_v1_Veto' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [3, 4])],
131 'POG_SPRING15_25ns_v1_ConvVeto_Loose' : WP[
'POG_SPRING15_25ns_v1_Loose' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [3, 2])],
132 'POG_SPRING15_25ns_v1_ConvVeto_Medium' : WP[
'POG_SPRING15_25ns_v1_Medium']+[(
'conversionVeto', [
True,
True]), (
'missingHits', [3, 2])],
133 'POG_SPRING15_25ns_v1_ConvVeto_Tight' : WP[
'POG_SPRING15_25ns_v1_Tight' ]+[(
'conversionVeto', [
True,
True]), (
'missingHits', [3, 2])],
136 WP.update(WP_conversion_veto)
138 WP_conversion_veto_DxyDz = {
140 'POG_PHYS14_25ns_v1_ConvVetoDxyDz_Veto' : WP[
'POG_PHYS14_25ns_v1_ConvVeto_Veto' ]+[(
'dxy',[0.060279, 0.273097]), (
'dz',[0.800538, 0.885860])],
141 'POG_PHYS14_25ns_v1_ConvVetoDxyDz_Loose' : WP[
'POG_PHYS14_25ns_v1_ConvVeto_Loose' ]+[(
'dxy',[0.022664, 0.097358]), (
'dz',[0.173670, 0.198444])],
142 'POG_PHYS14_25ns_v1_ConvVetoDxyDz_Medium' : WP[
'POG_PHYS14_25ns_v1_ConvVeto_Medium']+[(
'dxy',[0.011811, 0.051682]), (
'dz',[0.070775, 0.180720])],
143 'POG_PHYS14_25ns_v1_ConvVetoDxyDz_Tight' : WP[
'POG_PHYS14_25ns_v1_ConvVeto_Tight' ]+[(
'dxy',[0.009924, 0.027261]), (
'dz',[0.015310, 0.147154])],
145 'POG_PHYS14_25ns_v2_ConvVetoDxyDz_Veto' : WP[
'POG_PHYS14_25ns_v2_ConvVeto_Veto' ]+[(
'dxy',[0.094095, 0.342293]), (
'dz',[0.713070, 0.953461])],
146 'POG_PHYS14_25ns_v2_ConvVetoDxyDz_Loose' : WP[
'POG_PHYS14_25ns_v2_ConvVeto_Loose' ]+[(
'dxy',[0.035904, 0.099266]), (
'dz',[0.075496, 0.197897])],
147 'POG_PHYS14_25ns_v2_ConvVetoDxyDz_Medium' : WP[
'POG_PHYS14_25ns_v2_ConvVeto_Medium']+[(
'dxy',[0.012235, 0.036719]), (
'dz',[0.042020, 0.138142])],
148 'POG_PHYS14_25ns_v2_ConvVetoDxyDz_Tight' : WP[
'POG_PHYS14_25ns_v2_ConvVeto_Tight' ]+[(
'dxy',[0.008790, 0.027984]), (
'dz',[0.021226, 0.133431])],
150 'POG_SPRING15_50ns_v2_ConvVetoDxyDz_Veto' : WP[
'POG_SPRING15_50ns_v2_ConvVeto_Veto' ]+[(
'dxy',[0.0621, 0.2790]), (
'dz',[0.613, 0.947])],
151 'POG_SPRING15_50ns_v2_ConvVetoDxyDz_Loose' : WP[
'POG_SPRING15_50ns_v2_ConvVeto_Loose' ]+[(
'dxy',[0.0227, 0.2420]), (
'dz',[0.379, 0.921])],
152 'POG_SPRING15_50ns_v2_ConvVetoDxyDz_Medium' : WP[
'POG_SPRING15_50ns_v2_ConvVeto_Medium']+[(
'dxy',[0.0151, 0.0535]), (
'dz',[0.238, 0.572])],
153 'POG_SPRING15_50ns_v2_ConvVetoDxyDz_Tight' : WP[
'POG_SPRING15_50ns_v2_ConvVeto_Tight' ]+[(
'dxy',[0.0144, 0.0377]), (
'dz',[0.170, 0.571])],
154 'POG_SPRING15_25ns_v1_ConvVetoDxyDz_Veto' : WP[
'POG_SPRING15_25ns_v1_ConvVeto_Veto' ]+[(
'dxy',[0.0564, 0.2220]), (
'dz',[0.472, 0.921])],
155 'POG_SPRING15_25ns_v1_ConvVetoDxyDz_Loose' : WP[
'POG_SPRING15_25ns_v1_ConvVeto_Loose' ]+[(
'dxy',[0.0261, 0.1180]), (
'dz',[0.410, 0.822])],
156 'POG_SPRING15_25ns_v1_ConvVetoDxyDz_Medium' : WP[
'POG_SPRING15_25ns_v1_ConvVeto_Medium']+[(
'dxy',[0.0118, 0.0739]), (
'dz',[0.373, 0.602])],
157 'POG_SPRING15_25ns_v1_ConvVetoDxyDz_Tight' : WP[
'POG_SPRING15_25ns_v1_ConvVeto_Tight' ]+[(
'dxy',[0.0111, 0.0351]), (
'dz',[0.0466,0.417])],
160 WP.update(WP_conversion_veto_DxyDz)
164 raise RuntimeError(
"Working point '%s' not yet implemented in Electron.py" % wp)
165 for (cut_name,(cut_eb,cut_ee))
in WP[wp]:
166 if cut_name ==
'conversionVeto':
167 if (cut_eb
if self.physObj.isEB()
else cut_ee)
and not vars[cut_name]:
169 elif vars[cut_name] >= (cut_eb
if self.physObj.isEB()
else cut_ee):
181 if self.
associatedVertex ==
None:
raise RuntimeError(
"You need to set electron.associatedVertex before calling any MVA")
182 if self.
rho ==
None:
raise RuntimeError(
"You need to set electron.rho before calling any MVA")
188 if self.
associatedVertex ==
None:
raise RuntimeError(
"You need to set electron.associatedVertex before calling any MVA")
189 if self.
rho ==
None:
raise RuntimeError(
"You need to set electron.rho before calling any MVA")
195 if self.
associatedVertex ==
None:
raise RuntimeError(
"You need to set electron.associatedVertex before calling any MVA")
196 if self.
rho ==
None:
raise RuntimeError(
"You need to set electron.rho before calling any MVA")
202 if name
not in ElectronMVAID_ByName:
raise RuntimeError(
"Unknown electron run2 mva id %s (known ones are: %s)\n" % (name, ElectronMVAID_ByName.keys()))
203 if self.
associatedVertex ==
None:
raise RuntimeError(
"You need to set electron.associatedVertex before calling any MVA")
204 if self.
rho ==
None:
raise RuntimeError(
"You need to set electron.rho before calling any MVA")
209 eta =
abs(self.superCluster().
eta())
211 if (eta < 0.8) :
return self.
mvaTrigV0(full5x5) > +0.00;
212 elif (eta < 1.479):
return self.
mvaTrigV0(full5x5) > +0.10;
213 else :
return self.
mvaTrigV0(full5x5) > +0.62;
215 if (eta < 0.8) :
return self.
mvaTrigV0(full5x5) > +0.94;
216 elif (eta < 1.479):
return self.
mvaTrigV0(full5x5) > +0.85;
217 else :
return self.
mvaTrigV0(full5x5) > +0.92;
220 eta =
abs(self.superCluster().
eta())
222 if (eta < 0.8) :
return self.
mvaNonTrigV0(full5x5) > +0.47;
223 elif (eta < 1.479):
return self.
mvaNonTrigV0(full5x5) > +0.004;
226 if (eta < 0.8) :
return self.
mvaNonTrigV0(full5x5) > -0.34;
227 elif (eta < 1.479):
return self.
mvaNonTrigV0(full5x5) > -0.65;
231 eta =
abs(self.superCluster().
eta())
232 if name ==
"NonTrigPhys14":
234 if (eta < 0.8) :
return self.
mvaRun2(name) > +0.35;
235 elif (eta < 1.479):
return self.
mvaRun2(name) > +0.20;
236 else :
return self.
mvaRun2(name) > -0.52;
238 if (eta < 0.8) :
return self.
mvaRun2(name) > -0.11;
239 elif (eta < 1.479):
return self.
mvaRun2(name) > -0.35;
240 else :
return self.
mvaRun2(name) > -0.55;
242 if (eta < 0.8) :
return self.
mvaRun2(name) > 0.73;
243 elif (eta < 1.479):
return self.
mvaRun2(name) > 0.57;
244 else :
return self.
mvaRun2(name) > 0.05;
245 else:
raise RuntimeError(
"Ele MVA ID Working point not found")
246 else:
raise RuntimeError(
"Ele MVA ID type not found")
251 if R == 0.3:
return self.physObj.pfIsolationVariables().sumChargedHadronPt
252 elif R == 0.4:
return self.physObj.chargedHadronIso()
253 raise RuntimeError(
"Electron chargedHadronIso missing for R=%s" % R)
256 if R == 0.3:
return self.physObj.pfIsolationVariables().sumNeutralHadronEt
257 elif R == 0.4:
return self.physObj.neutralHadronIso()
258 raise RuntimeError(
"Electron neutralHadronIso missing for R=%s" % R)
261 if R == 0.3:
return self.physObj.pfIsolationVariables().sumPhotonEt
262 elif R == 0.4:
return self.physObj.photonIso()
263 raise RuntimeError(
"Electron photonIso missing for R=%s" % R)
266 if R == 0.3:
return self.physObj.pfIsolationVariables().sumChargedParticlePt
267 raise RuntimeError(
"Electron chargedAllIso missing for R=%s" % R)
270 raise RuntimeError(
"Electron chargedAllIso missing")
273 if R == 0.3:
return self.physObj.pfIsolationVariables().sumPUPt
274 elif R == 0.4:
return self.physObj.puChargedHadronIso()
275 raise RuntimeError(
"Electron chargedHadronIso missing for R=%s" % R)
280 Calculate Isolation, subtract FSR, apply specific PU corrections"
283 if hasattr(self,
'fsrPhotons'):
284 for gamma
in self.fsrPhotons:
285 dr =
deltaR(gamma.eta(), gamma.phi(), self.physObj.eta(), self.physObj.phi())
286 if (self.isEB()
or dr > 0.08)
and dr < R:
287 photonIso =
max(photonIso-gamma.pt(),0.0)
288 if puCorr ==
"deltaBeta":
290 elif puCorr ==
"rhoArea":
291 offset = self.
rho*getattr(self,
"EffectiveArea"+(str(R).
replace(
".",
"")))
292 elif puCorr
in [
"none",
"None",
None]:
295 raise RuntimeError(
"Unsupported PU correction scheme %s" % puCorr)
299 def dxy(self, vertex=None):
301 Computed using vertex (or self.associatedVertex if vertex not specified),
306 return self.gsfTrack().
dxy( vertex.position() )
309 '''returns the uncertainty on dxy (from gsf track)'''
310 return self.gsfTrack().dxyError()
313 return ROOT.reco.Candidate.p4(self.physObj)
318 def dz(self, vertex=None):
320 Computed using vertex (or self.associatedVertex if vertex not specified),
325 return self.gsfTrack().
dz( vertex.position() )
328 '''returns the uncertainty on dxz (from gsf track)'''
329 return self.gsfTrack().dzError()
333 if hasattr(self.gsfTrack(),
"trackerExpectedHitsInner") :
334 return self.gsfTrack().trackerExpectedHitsInner().numberOfLostHits()
336 return self.gsfTrack().hitPattern().numberOfHits(ROOT.reco.HitPattern.MISSING_INNER_HITS)
tuple ElectronMVAID_NonTrig
tuple ElectronMVAID_TrigNoIP
Abs< T >::type abs(const T &t)
double deltaR(double eta1, double eta2, double phi1, double phi2)