10 """ Electron MVA wrapper class. 13 def __init__(self, name, tag, categoryCuts, xmls, variablesFile, debug=False):
18 self.
xmls = ROOT.vector(ROOT.string)()
24 '''returns a tuple mva_value, category 25 ele: a reco::GsfElectron 28 rho: energy density in the event 29 debug: enable debugging mode. 33 event.getByLabel(('slimmedElectrons'), ele_handle) 34 event.getByLabel(('fixedGridRhoFastjetAll'), rho_handle) 36 electrons = ele_handle.product() 37 rho = rho_handle.product() 39 mva, category = electron_mva_id(electron[0], rho) 43 ROOT.gInterpreter.Declare(
'#include "RecoEgamma/ElectronIdentification/interface/ElectronMVAEstimatorRun2.h"')
44 ROOT.gSystem.Load(
"libRecoEgammaElectronIdentification")
45 categoryCutStrings = ROOT.vector(ROOT.string)()
47 categoryCutStrings.push_back(x)
52 category = ctypes.c_int(0)
53 mva = self.
estimator.mvaValue(ele, rho[0], category)
54 return mva, category.value
58 '''Working Points. Keeps track of the cuts associated to a given flavour of the MVA ID 59 for each working point and allows to test the working points''' 61 def __init__(self, name, tag, working_points, logistic_transform=False):
68 new_definitions = dict()
69 for wpname, definitions
in working_points.items():
70 new_definitions[wpname] = dict()
71 for name, cut
in definitions.cuts.items():
72 categ_id =
int(name.lstrip(
'cutCategory'))
73 cut = cut.replace(
'pt',
'x')
74 formula = ROOT.TFormula(
'_'.
join([self.
name, wpname, name]), cut)
75 new_definitions[wpname][categ_id] = formula
76 return new_definitions
78 def passed(self, ele, mva, category, wp):
79 '''return true if ele passes wp''' 82 mva = 2.0/(1.0+
exp(-2.0*mva))-1
83 return mva > threshold
89 import EleMVA_6CategoriesCuts, mvaVariablesFile, mvaVariablesFileRun3, mvaVariablesFileRun3NonIso, EleMVA_3CategoriesCuts
91 from RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_iso_V2_cff \
92 import mvaWeightFiles
as Fall17_iso_V2_weightFiles
93 from RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_noIso_V2_cff \
94 import mvaWeightFiles
as Fall17_noIso_V2_weightFiles
95 from RecoEgamma.ElectronIdentification.Identification.mvaElectronID_RunIIIWinter22_iso_V1_cff \
96 import mvaWeightFiles
as RunIIIWinter22_iso_V1_weightFiles
97 from RecoEgamma.ElectronIdentification.Identification.mvaElectronID_RunIIIWinter22_noIso_V1_cff \
98 import mvaWeightFiles
as RunIIIWinter22_noIso_V1_weightFiles
99 from RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring16_GeneralPurpose_V1_cff \
100 import mvaSpring16WeightFiles_V1
as mvaSpring16GPWeightFiles_V1
101 from RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring16_HZZ_V1_cff \
102 import mvaSpring16WeightFiles_V1
as mvaSpring16HZZWeightFiles_V1
103 from RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Winter22_HZZ_V1_cff \
104 import mvaWeightFiles
as mvaWinter22HZZWeightFiles_V1
106 from RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring16_GeneralPurpose_V1_cff \
107 import workingPoints
as mvaSpring16GP_V1_workingPoints
108 from RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring16_HZZ_V1_cff \
109 import workingPoints
as mvaSpring16HZZ_V1_workingPoints
110 from RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_iso_V2_cff \
111 import workingPoints
as Fall17_iso_V2_workingPoints
112 from RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_noIso_V2_cff \
113 import workingPoints
as Fall17_noIso_V2_workingPoints
114 from RecoEgamma.ElectronIdentification.Identification.mvaElectronID_RunIIIWinter22_iso_V1_cff \
115 import workingPoints
as RunIIIWinter22_iso_V1_workingPoints
116 from RecoEgamma.ElectronIdentification.Identification.mvaElectronID_RunIIIWinter22_noIso_V1_cff \
117 import workingPoints
as RunIIIWinter22_noIso_V1_workingPoints
118 from RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Winter22_HZZ_V1_cff \
119 import workingPoints
as Winter22_HZZ_V1_workingPoints
124 "RunIIIWinter22IsoV1" :
ElectronMVAID(
"ElectronMVAEstimatorRun2",
"RunIIIWinter22IsoV1",
125 EleMVA_6CategoriesCuts, RunIIIWinter22_iso_V1_weightFiles, mvaVariablesFileRun3),
126 "RunIIIWinter22NoIsoV1" :
ElectronMVAID(
"ElectronMVAEstimatorRun2",
"RunIIIWinter22NoIsoV1",
127 EleMVA_6CategoriesCuts, RunIIIWinter22_noIso_V1_weightFiles, mvaVariablesFileRun3NonIso),
128 "Fall17IsoV2" :
ElectronMVAID(
"ElectronMVAEstimatorRun2",
"Fall17IsoV2",
129 EleMVA_6CategoriesCuts, Fall17_iso_V2_weightFiles, mvaVariablesFile),
130 "Fall17NoIsoV2" :
ElectronMVAID(
"ElectronMVAEstimatorRun2",
"Fall17NoIsoV2",
131 EleMVA_6CategoriesCuts, Fall17_noIso_V2_weightFiles, mvaVariablesFile),
132 "Spring16HZZV1" :
ElectronMVAID(
"ElectronMVAEstimatorRun2",
"Spring16HZZV1",
133 EleMVA_6CategoriesCuts, mvaSpring16HZZWeightFiles_V1, mvaVariablesFile),
134 "Spring16GPV1" :
ElectronMVAID(
"ElectronMVAEstimatorRun2",
"Spring16GeneralPurposeV1",
135 EleMVA_3CategoriesCuts, mvaSpring16GPWeightFiles_V1, mvaVariablesFile),
136 "Winter22HZZV1" :
ElectronMVAID(
"ElectronMVAEstimatorRun2",
"Winter22HZZV1",
137 EleMVA_6CategoriesCuts, mvaWinter22HZZWeightFiles_V1, mvaVariablesFileRun3),
141 "RunIIIWinter22IsoV1" :
WorkingPoints(
"ElectronMVAEstimatorRun2",
"RunIIIWinter22IsoV1",
142 RunIIIWinter22_iso_V1_workingPoints),
143 "RunIIIWinter22NoIsoV1" :
WorkingPoints(
"ElectronMVAEstimatorRun2",
"RunIIIWinter22NoIsoV1",
144 RunIIIWinter22_noIso_V1_workingPoints),
145 "Fall17IsoV2" :
WorkingPoints(
"ElectronMVAEstimatorRun2",
"Fall17IsoV2",
146 Fall17_iso_V2_workingPoints),
147 "Fall17NoIsoV2" :
WorkingPoints(
"ElectronMVAEstimatorRun2",
"Fall17NoIsoV2",
148 Fall17_noIso_V2_workingPoints),
149 "Spring16HZZV1" :
WorkingPoints(
"ElectronMVAEstimatorRun2",
"Spring16HZZV1",
150 mvaSpring16HZZ_V1_workingPoints, logistic_transform=
True),
151 "Spring16GPV1" :
WorkingPoints(
"ElectronMVAEstimatorRun2",
"Spring16GeneralPurposeV1",
152 mvaSpring16GP_V1_workingPoints, logistic_transform=
True),
153 "Winter22HZZV1" :
WorkingPoints(
"ElectronMVAEstimatorRun2",
"Winter22HZZV1",
154 Winter22_HZZ_V1_workingPoints),
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
def __call__(self, ele, rho, debug=False)
static std::string join(char **cmd)
def _reformat_cut_definitions(self, working_points)
def __init__(self, name, tag, categoryCuts, xmls, variablesFile, debug=False)
deadvectors [0] push_back({0.0175431, 0.538005, 6.80997, 13.29})
def __init__(self, name, tag, working_points, logistic_transform=False)
def passed(self, ele, mva, category, wp)