10 """ Electron MVA wrapper class.
13 def __init__(self, name, tag, categoryCuts, xmls, variablesFile, debug=False):
18 self.
xmls = ROOT.vector(ROOT.string)()
19 for x
in xmls: self.xmls.push_back(x)
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.gSystem.Load(
"libRecoEgammaElectronIdentification")
44 categoryCutStrings = ROOT.vector(ROOT.string)()
46 categoryCutStrings.push_back(x)
51 category = ctypes.c_int(0)
52 mva = self.estimator.mvaValue(ele, rho[0], category)
53 return mva, category.value
57 '''Working Points. Keeps track of the cuts associated to a given flavour of the MVA ID
58 for each working point and allows to test the working points'''
60 def __init__(self, name, tag, working_points, logistic_transform=False):
67 new_definitions = dict()
68 for wpname, definitions
in working_points.iteritems():
69 new_definitions[wpname] = dict()
70 for name, cut
in definitions.cuts.iteritems():
71 categ_id = int(name.lstrip(
'cutCategory'))
72 cut = cut.replace(
'pt',
'x')
73 formula = ROOT.TFormula(
'_'.
join([self.
name, wpname, name]), cut)
74 new_definitions[wpname][categ_id] = formula
75 return new_definitions
77 def passed(self, ele, mva, category, wp):
78 '''return true if ele passes wp'''
81 mva = 2.0/(1.0+
exp(-2.0*mva))-1
82 return mva > threshold
88 import EleMVA_6CategoriesCuts, mvaVariablesFile, EleMVA_3CategoriesCuts
90 from RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_iso_V2_cff \
91 import mvaWeightFiles
as Fall17_iso_V2_weightFiles
92 from RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_noIso_V2_cff \
93 import mvaWeightFiles
as Fall17_noIso_V2_weightFiles
94 from RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring16_GeneralPurpose_V1_cff \
95 import mvaSpring16WeightFiles_V1
as mvaSpring16GPWeightFiles_V1
96 from RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring16_HZZ_V1_cff \
97 import mvaSpring16WeightFiles_V1
as mvaSpring16HZZWeightFiles_V1
99 from RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring16_GeneralPurpose_V1_cff \
100 import workingPoints
as mvaSpring16GP_V1_workingPoints
101 from RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring16_HZZ_V1_cff \
102 import workingPoints
as mvaSpring16HZZ_V1_workingPoints
103 from RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_iso_V2_cff \
104 import workingPoints
as Fall17_iso_V2_workingPoints
105 from RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_noIso_V2_cff \
106 import workingPoints
as Fall17_noIso_V2_workingPoints
111 "Fall17IsoV2" :
ElectronMVAID(
"ElectronMVAEstimatorRun2",
"Fall17IsoV2",
112 EleMVA_6CategoriesCuts, Fall17_iso_V2_weightFiles, mvaVariablesFile),
113 "Fall17NoIsoV2" :
ElectronMVAID(
"ElectronMVAEstimatorRun2",
"Fall17NoIsoV2",
114 EleMVA_6CategoriesCuts, Fall17_noIso_V2_weightFiles, mvaVariablesFile),
115 "Spring16HZZV1" :
ElectronMVAID(
"ElectronMVAEstimatorRun2",
"Spring16HZZV1",
116 EleMVA_6CategoriesCuts, mvaSpring16HZZWeightFiles_V1, mvaVariablesFile),
117 "Spring16GPV1" :
ElectronMVAID(
"ElectronMVAEstimatorRun2",
"Spring16GeneralPurposeV1",
118 EleMVA_3CategoriesCuts, mvaSpring16GPWeightFiles_V1, mvaVariablesFile),
122 "Fall17IsoV2" :
WorkingPoints(
"ElectronMVAEstimatorRun2",
"Fall17IsoV2",
123 Fall17_iso_V2_workingPoints),
124 "Fall17NoIsoV2" :
WorkingPoints(
"ElectronMVAEstimatorRun2",
"Fall17NoIsoV2",
125 Fall17_noIso_V2_workingPoints),
126 "Spring16HZZV1" :
WorkingPoints(
"ElectronMVAEstimatorRun2",
"Spring16HZZV1",
127 mvaSpring16HZZ_V1_workingPoints, logistic_transform=
True),
128 "Spring16GPV1" :
WorkingPoints(
"ElectronMVAEstimatorRun2",
"Spring16GeneralPurposeV1",
129 mvaSpring16GP_V1_workingPoints, logistic_transform=
True),
Exp< T >::type exp(const T &t)
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
def _reformat_cut_definitions
static std::string join(char **cmd)