1 import FWCore.ParameterSet.Config
as cms
2 from Configuration.Eras.Modifier_run2_miniAOD_80XLegacy_cff
import run2_miniAOD_80XLegacy
3 from Configuration.Eras.Modifier_run2_nanoAOD_92X_cff
import run2_nanoAOD_92X
4 from Configuration.Eras.Modifier_run2_nanoAOD_94XMiniAODv1_cff
import run2_nanoAOD_94XMiniAODv1
5 from Configuration.Eras.Modifier_run2_nanoAOD_94XMiniAODv2_cff
import run2_nanoAOD_94XMiniAODv2
6 from Configuration.Eras.Modifier_run2_nanoAOD_94X2016_cff
import run2_nanoAOD_94X2016
9 from math
import ceil,log
12 slimmedElectronsUpdated = cms.EDProducer(
"PATElectronUpdater",
13 src = cms.InputTag(
"slimmedElectrons"),
14 vertices = cms.InputTag(
"offlineSlimmedPrimaryVertices"),
15 computeMiniIso = cms.bool(
False),
16 pfCandsForMiniIso = cms.InputTag(
"packedPFCandidates"),
17 miniIsoParamsB = PhysicsTools.PatAlgos.producersLayer1.electronProducer_cfi.patElectrons.miniIsoParamsB,
18 miniIsoParamsE = PhysicsTools.PatAlgos.producersLayer1.electronProducer_cfi.patElectrons.miniIsoParamsE,
20 run2_miniAOD_80XLegacy.toModify( slimmedElectronsUpdated, computeMiniIso =
True )
22 electron_id_modules_WorkingPoints_nanoAOD = cms.PSet(
23 modules = cms.vstring(
24 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Fall17_94X_V1_cff',
25 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Fall17_94X_V2_cff',
26 'RecoEgamma.ElectronIdentification.Identification.heepElectronID_HEEPV70_cff',
27 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_iso_V1_cff',
28 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_noIso_V1_cff',
29 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_iso_V2_cff',
30 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_noIso_V2_cff',
32 WorkingPoints = cms.vstring(
33 "egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-veto",
34 "egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-loose",
35 "egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-medium",
36 "egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-tight",
39 run2_miniAOD_80XLegacy.toModify(electron_id_modules_WorkingPoints_nanoAOD,
40 modules = cms.vstring(
41 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Summer16_80X_V1_cff',
42 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronHLTPreselecition_Summer16_V1_cff',
43 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Spring15_25ns_V1_cff',
44 'RecoEgamma.ElectronIdentification.Identification.heepElectronID_HEEPV70_cff',
45 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring16_GeneralPurpose_V1_cff',
46 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring16_HZZ_V1_cff',
48 WorkingPoints = cms.vstring(
49 "egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-loose",
50 "egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-medium",
51 "egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-tight",
54 run2_nanoAOD_94X2016.toModify(electron_id_modules_WorkingPoints_nanoAOD,
55 modules = cms.vstring(
56 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Summer16_80X_V1_cff',
57 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronHLTPreselecition_Summer16_V1_cff',
58 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Spring15_25ns_V1_cff',
59 'RecoEgamma.ElectronIdentification.Identification.heepElectronID_HEEPV70_cff',
61 WorkingPoints = cms.vstring(
62 "egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-veto",
63 "egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-loose",
64 "egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-medium",
65 "egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-tight",
72 for modname
in modules:
73 ids= __import__(modname, globals(), locals(), [
'idName',
'cutFlow'])
75 _id = getattr(ids,name)
76 if hasattr(_id,
'idName')
and hasattr(_id,
'cutFlow'):
77 if (len(WorkingPoints)>0
and _id.idName==WorkingPoints[0].
split(
':')[-1]):
78 docstring =
'VID compressed bitmap (%s), %d bits per cut'%(
','.
join([cut.cutName.value()
for cut
in _id.cutFlow]),
int(ceil(
log(len(WorkingPoints)+1,2))))
81 bitmapVIDForEle = cms.EDProducer(
"EleVIDNestedWPBitmapProducer",
82 src = cms.InputTag(
"slimmedElectrons"),
83 WorkingPoints = electron_id_modules_WorkingPoints_nanoAOD.WorkingPoints,
87 bitmapVIDForEleSpring15 = bitmapVIDForEle.clone()
88 bitmapVIDForEleSpring15.WorkingPoints = cms.vstring(
89 "egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-veto",
90 "egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-loose",
91 "egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-medium",
96 for modifier
in run2_miniAOD_80XLegacy, run2_nanoAOD_92X:
97 modifier.toModify(bitmapVIDForEle, src =
"slimmedElectronsUpdated")
98 run2_miniAOD_80XLegacy.toModify(bitmapVIDForEleSpring15, src =
"slimmedElectronsUpdated")
100 isoForEle = cms.EDProducer(
"EleIsoValueMapProducer",
101 src = cms.InputTag(
"slimmedElectrons"),
102 relative = cms.bool(
False),
103 rho_MiniIso = cms.InputTag(
"fixedGridRhoFastjetAll"),
104 rho_PFIso = cms.InputTag(
"fixedGridRhoFastjetAll"),
105 EAFile_MiniIso = cms.FileInPath(
"RecoEgamma/ElectronIdentification/data/Fall17/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_94X.txt"),
106 EAFile_PFIso = cms.FileInPath(
"RecoEgamma/ElectronIdentification/data/Fall17/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_94X.txt"),
108 run2_miniAOD_80XLegacy.toModify(isoForEle, src =
"slimmedElectronsUpdated",
109 EAFile_MiniIso =
"RecoEgamma/ElectronIdentification/data/Spring15/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_25ns.txt",
110 EAFile_PFIso =
"RecoEgamma/ElectronIdentification/data/Summer16/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_80X.txt")
111 run2_nanoAOD_94X2016.toModify(isoForEle,
112 EAFile_MiniIso =
"RecoEgamma/ElectronIdentification/data/Spring15/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_25ns.txt",
113 EAFile_PFIso =
"RecoEgamma/ElectronIdentification/data/Summer16/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_80X.txt")
114 run2_nanoAOD_92X.toModify(isoForEle, src =
"slimmedElectronsUpdated")
116 ptRatioRelForEle = cms.EDProducer(
"ElectronJetVarProducer",
117 srcJet = cms.InputTag(
"updatedJets"),
118 srcLep = cms.InputTag(
"slimmedElectrons"),
119 srcVtx = cms.InputTag(
"offlineSlimmedPrimaryVertices"),
121 run2_miniAOD_80XLegacy.toModify(ptRatioRelForEle, srcLep =
"slimmedElectronsUpdated")
122 run2_nanoAOD_92X.toModify(ptRatioRelForEle, srcLep =
"slimmedElectronsUpdated")
124 import EgammaAnalysis.ElectronTools.calibratedElectronsRun2_cfi
125 calibratedPatElectrons80X = EgammaAnalysis.ElectronTools.calibratedElectronsRun2_cfi.calibratedPatElectrons.clone(
126 electrons = cms.InputTag(
"slimmedElectronsUpdated"),
127 correctionFile = cms.string(
"PhysicsTools/NanoAOD/data/80X_ichepV1_2016_ele"),
128 semiDeterministic = cms.bool(
True)
130 energyCorrForEle80X = cms.EDProducer(
"ElectronEnergyVarProducer",
131 srcRaw = cms.InputTag(
"slimmedElectronsUpdated"),
132 srcCorr = cms.InputTag(
"calibratedPatElectrons80X"),
134 import RecoEgamma.EgammaTools.calibratedEgammas_cff
135 calibratedPatElectrons94X = RecoEgamma.EgammaTools.calibratedEgammas_cff.calibratedPatElectrons.clone(
136 produceCalibratedObjs =
False,
137 correctionFile = cms.string(
"EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2017_17Nov2017_v1_ele_unc"),
140 slimmedElectronsWithUserData = cms.EDProducer(
"PATElectronUserDataEmbedder",
141 src = cms.InputTag(
"slimmedElectrons"),
142 userFloats = cms.PSet(
143 mvaFall17V1Iso = cms.InputTag(
"electronMVAValueMapProducer:ElectronMVAEstimatorRun2Fall17IsoV1Values"),
144 mvaFall17V1noIso = cms.InputTag(
"electronMVAValueMapProducer:ElectronMVAEstimatorRun2Fall17NoIsoV1Values"),
145 mvaFall17V2Iso = cms.InputTag(
"electronMVAValueMapProducer:ElectronMVAEstimatorRun2Fall17IsoV2Values"),
146 mvaFall17V2noIso = cms.InputTag(
"electronMVAValueMapProducer:ElectronMVAEstimatorRun2Fall17NoIsoV2Values"),
147 miniIsoChg = cms.InputTag(
"isoForEle:miniIsoChg"),
148 miniIsoAll = cms.InputTag(
"isoForEle:miniIsoAll"),
149 PFIsoChg = cms.InputTag(
"isoForEle:PFIsoChg"),
150 PFIsoAll = cms.InputTag(
"isoForEle:PFIsoAll"),
151 PFIsoAll04 = cms.InputTag(
"isoForEle:PFIsoAll04"),
152 ptRatio = cms.InputTag(
"ptRatioRelForEle:ptRatio"),
153 ptRel = cms.InputTag(
"ptRatioRelForEle:ptRel"),
154 jetNDauChargedMVASel = cms.InputTag(
"ptRatioRelForEle:jetNDauChargedMVASel"),
155 dr03TkSumPtHEEP = cms.InputTag(
"heepIDVarValueMaps",
"eleTrkPtIso")
157 userIntFromBools = cms.PSet(
159 mvaFall17V1Iso_WP90 = cms.InputTag(
"egmGsfElectronIDs:mvaEleID-Fall17-iso-V1-wp90"),
160 mvaFall17V1Iso_WP80 = cms.InputTag(
"egmGsfElectronIDs:mvaEleID-Fall17-iso-V1-wp80"),
161 mvaFall17V1Iso_WPL = cms.InputTag(
"egmGsfElectronIDs:mvaEleID-Fall17-iso-V1-wpLoose"),
162 mvaFall17V1noIso_WP90 = cms.InputTag(
"egmGsfElectronIDs:mvaEleID-Fall17-noIso-V1-wp90"),
163 mvaFall17V1noIso_WP80 = cms.InputTag(
"egmGsfElectronIDs:mvaEleID-Fall17-noIso-V1-wp80"),
164 mvaFall17V1noIso_WPL = cms.InputTag(
"egmGsfElectronIDs:mvaEleID-Fall17-noIso-V1-wpLoose"),
166 mvaFall17V2Iso_WP90 = cms.InputTag(
"egmGsfElectronIDs:mvaEleID-Fall17-iso-V2-wp90"),
167 mvaFall17V2Iso_WP80 = cms.InputTag(
"egmGsfElectronIDs:mvaEleID-Fall17-iso-V2-wp80"),
168 mvaFall17V2Iso_WPL = cms.InputTag(
"egmGsfElectronIDs:mvaEleID-Fall17-iso-V2-wpLoose"),
169 mvaFall17V2noIso_WP90 = cms.InputTag(
"egmGsfElectronIDs:mvaEleID-Fall17-noIso-V2-wp90"),
170 mvaFall17V2noIso_WP80 = cms.InputTag(
"egmGsfElectronIDs:mvaEleID-Fall17-noIso-V2-wp80"),
171 mvaFall17V2noIso_WPL = cms.InputTag(
"egmGsfElectronIDs:mvaEleID-Fall17-noIso-V2-wpLoose"),
173 cutbasedID_Fall17_V1_veto = cms.InputTag(
"egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V1-veto"),
174 cutbasedID_Fall17_V1_loose = cms.InputTag(
"egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V1-loose"),
175 cutbasedID_Fall17_V1_medium = cms.InputTag(
"egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V1-medium"),
176 cutbasedID_Fall17_V1_tight = cms.InputTag(
"egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V1-tight"),
177 cutbasedID_veto = cms.InputTag(
"egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-veto"),
178 cutbasedID_loose = cms.InputTag(
"egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-loose"),
179 cutbasedID_medium = cms.InputTag(
"egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-medium"),
180 cutbasedID_tight = cms.InputTag(
"egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-tight"),
181 cutbasedID_HEEP = cms.InputTag(
"egmGsfElectronIDs:heepElectronID-HEEPV70"),
184 VIDNestedWPBitmap = cms.InputTag(
"bitmapVIDForEle"),
186 userCands = cms.PSet(
187 jetForLepJetVar = cms.InputTag(
"ptRatioRelForEle:jetForLepJetVar")
190 run2_miniAOD_80XLegacy.toModify(slimmedElectronsWithUserData, src =
"slimmedElectronsUpdated")
191 run2_nanoAOD_92X.toModify(slimmedElectronsWithUserData, src =
"slimmedElectronsUpdated")
192 run2_miniAOD_80XLegacy.toModify(slimmedElectronsWithUserData.userFloats,
193 mvaSpring16GP = cms.InputTag(
"electronMVAValueMapProducer:ElectronMVAEstimatorRun2Spring16GeneralPurposeV1Values"),
194 mvaSpring16HZZ = cms.InputTag(
"electronMVAValueMapProducer:ElectronMVAEstimatorRun2Spring16HZZV1Values"),
195 mvaFall17V1Iso =
None,
196 mvaFall17V1noIso =
None,
197 mvaFall17V2Iso =
None,
198 mvaFall17V2noIso =
None,
199 eCorr = cms.InputTag(
"energyCorrForEle80X",
"eCorr")
201 run2_nanoAOD_94X2016.toModify(slimmedElectronsWithUserData.userFloats,
202 mvaFall17V1Iso =
None,
203 mvaFall17V1noIso =
None,
204 mvaFall17V2Iso =
None,
205 mvaFall17V2noIso =
None,
207 run2_nanoAOD_94XMiniAODv1.toModify(slimmedElectronsWithUserData.userFloats,
208 ecalTrkEnergyErrPostCorrNew = cms.InputTag(
"calibratedPatElectrons94X",
"ecalTrkEnergyErrPostCorr"),
209 ecalTrkEnergyPreCorrNew = cms.InputTag(
"calibratedPatElectrons94X",
"ecalTrkEnergyPreCorr"),
210 ecalTrkEnergyPostCorrNew = cms.InputTag(
"calibratedPatElectrons94X",
"ecalTrkEnergyPostCorr"),
216 run2_nanoAOD_94XMiniAODv2.toModify(slimmedElectronsWithUserData.userFloats,
217 ecalTrkEnergyErrPostCorrNew = cms.InputTag(
"calibratedPatElectrons94X",
"ecalTrkEnergyErrPostCorr"),
218 ecalTrkEnergyPreCorrNew = cms.InputTag(
"calibratedPatElectrons94X",
"ecalTrkEnergyPreCorr"),
219 ecalTrkEnergyPostCorrNew = cms.InputTag(
"calibratedPatElectrons94X",
"ecalTrkEnergyPostCorr"),
222 run2_miniAOD_80XLegacy.toReplaceWith(slimmedElectronsWithUserData.userIntFromBools,
224 mvaSpring16GP_WP90 = cms.InputTag(
"egmGsfElectronIDs:mvaEleID-Spring16-GeneralPurpose-V1-wp90"),
225 mvaSpring16GP_WP80 = cms.InputTag(
"egmGsfElectronIDs:mvaEleID-Spring16-GeneralPurpose-V1-wp80"),
226 mvaSpring16HZZ_WPL = cms.InputTag(
"egmGsfElectronIDs:mvaEleID-Spring16-HZZ-V1-wpLoose"),
227 cutbasedID_veto = cms.InputTag(
"egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-veto"),
228 cutbasedID_loose = cms.InputTag(
"egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-loose"),
229 cutbasedID_medium = cms.InputTag(
"egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-medium"),
230 cutbasedID_tight = cms.InputTag(
"egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-tight"),
231 cutbasedID_HLT = cms.InputTag(
"egmGsfElectronIDs:cutBasedElectronHLTPreselection-Summer16-V1"),
232 cutbasedID_HEEP = cms.InputTag(
"egmGsfElectronIDs:heepElectronID-HEEPV70"),
233 cutbasedID_Spring15_veto = cms.InputTag(
"egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-veto"),
234 cutbasedID_Spring15_loose = cms.InputTag(
"egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-loose"),
235 cutbasedID_Spring15_medium = cms.InputTag(
"egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-medium"),
236 cutbasedID_Spring15_tight = cms.InputTag(
"egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-tight"),
239 run2_nanoAOD_94X2016.toReplaceWith(slimmedElectronsWithUserData.userIntFromBools,
242 cutbasedID_veto = cms.InputTag(
"egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-veto"),
243 cutbasedID_loose = cms.InputTag(
"egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-loose"),
244 cutbasedID_medium = cms.InputTag(
"egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-medium"),
245 cutbasedID_tight = cms.InputTag(
"egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-tight"),
246 cutbasedID_HLT = cms.InputTag(
"egmGsfElectronIDs:cutBasedElectronHLTPreselection-Summer16-V1"),
247 cutbasedID_Spring15_veto = cms.InputTag(
"egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-veto"),
248 cutbasedID_Spring15_loose = cms.InputTag(
"egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-loose"),
249 cutbasedID_Spring15_medium = cms.InputTag(
"egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-medium"),
250 cutbasedID_Spring15_tight = cms.InputTag(
"egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-tight"),
253 for modifier
in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016:
254 modifier.toModify(slimmedElectronsWithUserData.userInts,
255 VIDNestedWPBitmapSpring15 = cms.InputTag(
"bitmapVIDForEleSpring15"),
258 finalElectrons = cms.EDFilter(
"PATElectronRefSelector",
259 src = cms.InputTag(
"slimmedElectronsWithUserData"),
260 cut = cms.string(
"pt > 5 ")
263 electronMVATTH= cms.EDProducer(
"EleBaseMVAValueMapProducer",
264 src = cms.InputTag(
"linkedObjects",
"electrons"),
265 weightFile = cms.FileInPath(
"PhysicsTools/NanoAOD/data/el_BDTG_94X.weights.xml"),
266 name = cms.string(
"electronMVATTH"),
267 isClassifier = cms.bool(
True),
268 variablesOrder = cms.vstring([
"LepGood_pt",
"LepGood_eta",
"LepGood_jetNDauChargedMVASel",
"LepGood_miniRelIsoCharged",
"LepGood_miniRelIsoNeutral",
"LepGood_jetPtRelv2",
"LepGood_jetBTagCSV",
"LepGood_jetPtRatio",
"LepGood_sip3d",
"LepGood_dxy",
"LepGood_dz",
"LepGood_mvaIdFall17noIso"]),
269 variables = cms.PSet(
270 LepGood_pt = cms.string(
"pt"),
271 LepGood_eta = cms.string(
"eta"),
272 LepGood_jetNDauChargedMVASel = cms.string(
"?userCand('jetForLepJetVar').isNonnull()?userFloat('jetNDauChargedMVASel'):0"),
273 LepGood_miniRelIsoCharged = cms.string(
"userFloat('miniIsoChg')/pt"),
274 LepGood_miniRelIsoNeutral = cms.string(
"(userFloat('miniIsoAll')-userFloat('miniIsoChg'))/pt"),
275 LepGood_jetPtRelv2 = cms.string(
"?userCand('jetForLepJetVar').isNonnull()?userFloat('ptRel'):0"),
276 LepGood_jetPtRatio = cms.string(
"?userCand('jetForLepJetVar').isNonnull()?min(userFloat('ptRatio'),1.5):1.0/(1.0+userFloat('PFIsoAll04')/pt)"),
277 LepGood_jetBTagCSV = cms.string(
"?userCand('jetForLepJetVar').isNonnull()?max(userCand('jetForLepJetVar').bDiscriminator('pfCombinedInclusiveSecondaryVertexV2BJetTags'),0.0):0.0"),
278 LepGood_sip3d = cms.string(
"abs(dB('PV3D')/edB('PV3D'))"),
279 LepGood_dxy = cms.string(
"log(abs(dB('PV2D')))"),
280 LepGood_dz = cms.string(
"log(abs(dB('PVDZ')))"),
281 LepGood_mvaIdFall17noIso = cms.string(
"userFloat('mvaFall17V1noIso')"),
284 for modifier
in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016:
285 modifier.toModify(electronMVATTH.variables,
286 LepGood_jetPtRatio = cms.string(
"?userCand('jetForLepJetVar').isNonnull()?min(userFloat('ptRatio'),1.5):1"),
287 LepGood_mvaIdSpring16HZZ = cms.string(
"userFloat('%s')" % (
'mvaSpring16HZZ' if modifier == run2_miniAOD_80XLegacy
else 'ElectronMVAEstimatorRun2Spring16HZZV1Values')),
288 LepGood_mvaIdFall17noIso =
None)
289 modifier.toModify(electronMVATTH,
290 weightFile =
"PhysicsTools/NanoAOD/data/el_BDTG.weights.xml",
291 variablesOrder = [
"LepGood_pt",
"LepGood_eta",
"LepGood_jetNDauChargedMVASel",
"LepGood_miniRelIsoCharged",
"LepGood_miniRelIsoNeutral",
"LepGood_jetPtRelv2",
"LepGood_jetPtRatio",
"LepGood_jetBTagCSV",
"LepGood_sip3d",
"LepGood_dxy",
"LepGood_dz",
"LepGood_mvaIdSpring16HZZ"])
293 electronTable = cms.EDProducer(
"SimpleCandidateFlatTableProducer",
294 src = cms.InputTag(
"linkedObjects",
"electrons"),
295 cut = cms.string(
""),
296 name= cms.string(
"Electron"),
297 doc = cms.string(
"slimmedElectrons after basic selection (" + finalElectrons.cut.value()+
")"),
298 singleton = cms.bool(
False),
299 extension = cms.bool(
False),
300 variables = cms.PSet(CandVars,
301 jetIdx =
Var(
"?hasUserCand('jet')?userCand('jet').key():-1", int, doc=
"index of the associated jet (-1 if none)"),
302 photonIdx =
Var(
"?overlaps('photons').size()>0?overlaps('photons')[0].key():-1", int, doc=
"index of the associated photon (-1 if none)"),
303 energyErr =
Var(
"p4Error('P4_COMBINATION')",float,doc=
"energy error of the cluster-track combination",precision=6),
304 dz =
Var(
"dB('PVDZ')",float,doc=
"dz (with sign) wrt first PV, in cm",precision=10),
305 dzErr =
Var(
"abs(edB('PVDZ'))",float,doc=
"dz uncertainty, in cm",precision=6),
306 dxy =
Var(
"dB('PV2D')",float,doc=
"dxy (with sign) wrt first PV, in cm",precision=10),
307 dxyErr =
Var(
"edB('PV2D')",float,doc=
"dxy uncertainty, in cm",precision=6),
308 ip3d =
Var(
"abs(dB('PV3D'))",float,doc=
"3D impact parameter wrt first PV, in cm",precision=10),
309 sip3d =
Var(
"abs(dB('PV3D')/edB('PV3D'))",float,doc=
"3D impact parameter significance wrt first PV, in cm",precision=10),
310 deltaEtaSC =
Var(
"superCluster().eta()-eta()",float,doc=
"delta eta (SC,ele) with sign",precision=10),
311 r9 =
Var(
"full5x5_r9()",float,doc=
"R9 of the supercluster, calculated with full 5x5 region",precision=10),
312 sieie =
Var(
"full5x5_sigmaIetaIeta()",float,doc=
"sigma_IetaIeta of the supercluster, calculated with full 5x5 region",precision=10),
313 eInvMinusPInv =
Var(
"(1-eSuperClusterOverP())/ecalEnergy()",float,doc=
"1/E_SC - 1/p_trk",precision=10),
315 mvaFall17V1Iso =
Var(
"userFloat('mvaFall17V1Iso')",float,doc=
"MVA Iso ID V1 score"),
316 mvaFall17V1Iso_WP80 =
Var(
"userInt('mvaFall17V1Iso_WP80')",bool,doc=
"MVA Iso ID V1 WP80"),
317 mvaFall17V1Iso_WP90 =
Var(
"userInt('mvaFall17V1Iso_WP90')",bool,doc=
"MVA Iso ID V1 WP90"),
318 mvaFall17V1Iso_WPL =
Var(
"userInt('mvaFall17V1Iso_WPL')",bool,doc=
"MVA Iso ID V1 loose WP"),
319 mvaFall17V1noIso =
Var(
"userFloat('mvaFall17V1noIso')",float,doc=
"MVA noIso ID V1 score"),
320 mvaFall17V1noIso_WP80 =
Var(
"userInt('mvaFall17V1noIso_WP80')",bool,doc=
"MVA noIso ID V1 WP80"),
321 mvaFall17V1noIso_WP90 =
Var(
"userInt('mvaFall17V1noIso_WP90')",bool,doc=
"MVA noIso ID V1 WP90"),
322 mvaFall17V1noIso_WPL =
Var(
"userInt('mvaFall17V1noIso_WPL')",bool,doc=
"MVA noIso ID V1 loose WP"),
324 mvaFall17V2Iso =
Var(
"userFloat('mvaFall17V2Iso')",float,doc=
"MVA Iso ID V2 score"),
325 mvaFall17V2Iso_WP80 =
Var(
"userInt('mvaFall17V2Iso_WP80')",bool,doc=
"MVA Iso ID V2 WP80"),
326 mvaFall17V2Iso_WP90 =
Var(
"userInt('mvaFall17V2Iso_WP90')",bool,doc=
"MVA Iso ID V2 WP90"),
327 mvaFall17V2Iso_WPL =
Var(
"userInt('mvaFall17V2Iso_WPL')",bool,doc=
"MVA Iso ID V2 loose WP"),
328 mvaFall17V2noIso =
Var(
"userFloat('mvaFall17V2noIso')",float,doc=
"MVA noIso ID V2 score"),
329 mvaFall17V2noIso_WP80 =
Var(
"userInt('mvaFall17V2noIso_WP80')",bool,doc=
"MVA noIso ID V2 WP80"),
330 mvaFall17V2noIso_WP90 =
Var(
"userInt('mvaFall17V2noIso_WP90')",bool,doc=
"MVA noIso ID V2 WP90"),
331 mvaFall17V2noIso_WPL =
Var(
"userInt('mvaFall17V2noIso_WPL')",bool,doc=
"MVA noIso ID V2 loose WP"),
333 cutBased =
Var(
"userInt('cutbasedID_veto')+userInt('cutbasedID_loose')+userInt('cutbasedID_medium')+userInt('cutbasedID_tight')",int,doc=
"cut-based ID (0:fail, 1:veto, 2:loose, 3:medium, 4:tight)"),
334 cutBased_Fall17_V1 =
Var(
"userInt('cutbasedID_Fall17_V1_veto')+userInt('cutbasedID_Fall17_V1_loose')+userInt('cutbasedID_Fall17_V1_medium')+userInt('cutbasedID_Fall17_V1_tight')",int,doc=
"cut-based ID Fall17 V1 (0:fail, 1:veto, 2:loose, 3:medium, 4:tight)"),
335 vidNestedWPBitmap =
Var(
"userInt('VIDNestedWPBitmap')",int,doc=_bitmapVIDForEle_docstring),
336 cutBased_HEEP =
Var(
"userInt('cutbasedID_HEEP')",bool,doc=
"cut-based HEEP ID"),
337 miniPFRelIso_chg =
Var(
"userFloat('miniIsoChg')/pt",float,doc=
"mini PF relative isolation, charged component"),
338 miniPFRelIso_all =
Var(
"userFloat('miniIsoAll')/pt",float,doc=
"mini PF relative isolation, total (with scaled rho*EA PU corrections)"),
339 pfRelIso03_chg =
Var(
"userFloat('PFIsoChg')/pt",float,doc=
"PF relative isolation dR=0.3, charged component"),
340 pfRelIso03_all =
Var(
"userFloat('PFIsoAll')/pt",float,doc=
"PF relative isolation dR=0.3, total (with rho*EA PU corrections)"),
341 jetRelIso =
Var(
"?userCand('jetForLepJetVar').isNonnull()?(1./userFloat('ptRatio'))-1.:userFloat('PFIsoAll04')/pt",float,doc=
"Relative isolation in matched jet (1/ptRatio-1, pfRelIso04_all if no matched jet)",precision=8),
342 dr03TkSumPt =
Var(
"?pt>35?dr03TkSumPt():0",float,doc=
"Non-PF track isolation within a delta R cone of 0.3 with electron pt > 35 GeV",precision=8),
343 dr03TkSumPtHEEP =
Var(
"?pt>35?userFloat('dr03TkSumPtHEEP'):0",float,doc=
"Non-PF track isolation within a delta R cone of 0.3 with electron pt > 35 GeV used in HEEP ID",precision=8),
344 dr03EcalRecHitSumEt =
Var(
"?pt>35?dr03EcalRecHitSumEt():0",float,doc=
"Non-PF Ecal isolation within a delta R cone of 0.3 with electron pt > 35 GeV",precision=8),
345 dr03HcalDepth1TowerSumEt =
Var(
"?pt>35?dr03HcalDepth1TowerSumEt():0",float,doc=
"Non-PF Hcal isolation within a delta R cone of 0.3 with electron pt > 35 GeV",precision=8),
346 hoe =
Var(
"hadronicOverEm()",float,doc=
"H over E",precision=8),
347 tightCharge =
Var(
"isGsfCtfScPixChargeConsistent() + isGsfScPixChargeConsistent()",int,doc=
"Tight charge criteria (0:none, 1:isGsfScPixChargeConsistent, 2:isGsfCtfScPixChargeConsistent)"),
348 convVeto =
Var(
"passConversionVeto()",bool,doc=
"pass conversion veto"),
349 lostHits =
Var(
"gsfTrack.hitPattern.numberOfLostHits('MISSING_INNER_HITS')",
"uint8",doc=
"number of missing inner hits"),
350 isPFcand =
Var(
"pfCandidateRef().isNonnull()",bool,doc=
"electron is PF candidate"),
352 externalVariables = cms.PSet(
353 mvaTTH =
ExtVar(cms.InputTag(
"electronMVATTH"),float, doc=
"TTH MVA lepton ID score",precision=14),
357 for modifier
in run2_nanoAOD_94X2016,:
358 modifier.toModify(electronTable.variables,
359 pt =
Var(
"pt*userFloat('ecalTrkEnergyPostCorr')/userFloat('ecalTrkEnergyPreCorr')", float, precision=-1, doc=
"p_{T}"),
360 energyErr =
Var(
"userFloat('ecalTrkEnergyErrPostCorr')", float, precision=6, doc=
"energy error of the cluster-track combination"),
361 eCorr =
Var(
"userFloat('ecalTrkEnergyPostCorr')/userFloat('ecalTrkEnergyPreCorr')", float, doc=
"ratio of the calibrated energy/miniaod energy"),
367 for modifier
in run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2,:
368 modifier.toModify(electronTable.variables,
369 pt =
Var(
"pt*userFloat('ecalTrkEnergyPostCorrNew')/userFloat('ecalTrkEnergyPreCorrNew')", float, precision=-1, doc=
"p_{T}"),
370 energyErr =
Var(
"userFloat('ecalTrkEnergyErrPostCorrNew')", float, precision=6, doc=
"energy error of the cluster-track combination"),
371 eCorr =
Var(
"userFloat('ecalTrkEnergyPostCorrNew')/userFloat('ecalTrkEnergyPreCorrNew')", float, doc=
"ratio of the calibrated energy/miniaod energy"),
374 run2_nanoAOD_94X2016.toModify(electronTable.variables,
375 jetRelIso =
Var(
"(1./userFloat('ptRatio'))-1.",float,doc=
"Relative isolation in matched jet (1/ptRatio-1, 0 if no matched jet (2016 definition))",precision=8),
376 cutBased =
Var(
"userInt('cutbasedID_veto')+userInt('cutbasedID_loose')+userInt('cutbasedID_medium')+userInt('cutbasedID_tight')",int,doc=
"cut-based Summer16 ID (0:fail, 1:veto, 2:loose, 3:medium, 4:tight)"),
377 cutBased_Fall17_V1 =
Var(
"electronID('cutBasedElectronID-Fall17-94X-V1-veto')+electronID('cutBasedElectronID-Fall17-94X-V1-loose')+electronID('cutBasedElectronID-Fall17-94X-V1-medium')+electronID('cutBasedElectronID-Fall17-94X-V1-tight')",int,doc=
"cut-based Fall17 ID (0:fail, 1:veto, 2:loose, 3:medium, 4:tight)"),
378 cutBased_HLTPreSel =
Var(
"userInt('cutbasedID_HLT')",int,doc=
"cut-based HLT pre-selection ID"),
379 cutBased_HEEP =
Var(
"electronID('heepElectronID-HEEPV70')",bool,doc=
"cut-based HEEP ID"),
380 cutBased_Spring15 =
Var(
"userInt('cutbasedID_Spring15_veto')+userInt('cutbasedID_Spring15_loose')+userInt('cutbasedID_Spring15_medium')+userInt('cutbasedID_Spring15_tight')",int,doc=
"cut-based Spring15 ID (0:fail, 1:veto, 2:loose, 3:medium, 4:tight)"),
381 mvaSpring16GP =
Var(
"userFloat('ElectronMVAEstimatorRun2Spring16GeneralPurposeV1Values')",float,doc=
"MVA Spring16 general-purpose ID score"),
382 mvaSpring16GP_WP80 =
Var(
"electronID('mvaEleID-Spring16-GeneralPurpose-V1-wp80')",bool,doc=
"MVA Spring16 general-purpose ID WP80"),
383 mvaSpring16GP_WP90 =
Var(
"electronID('mvaEleID-Spring16-GeneralPurpose-V1-wp90')",bool,doc=
"MVA Spring16 general-purpose ID WP90"),
384 mvaSpring16HZZ =
Var(
"userFloat('ElectronMVAEstimatorRun2Spring16HZZV1Values')",float,doc=
"MVA Spring16 HZZ ID score"),
385 mvaSpring16HZZ_WPL =
Var(
"electronID('mvaEleID-Spring16-HZZ-V1-wpLoose')",bool,doc=
"MVA Spring16 HZZ ID loose WP"),
386 mvaFall17V1Iso =
Var(
"userFloat('ElectronMVAEstimatorRun2Fall17IsoV1Values')",float,doc=
"MVA Fall17 V1 Iso ID score"),
387 mvaFall17V1Iso_WP80 =
Var(
"electronID('mvaEleID-Fall17-iso-V1-wp80')",bool,doc=
"MVA Fall17 V1 Iso ID WP80"),
388 mvaFall17V1Iso_WP90 =
Var(
"electronID('mvaEleID-Fall17-iso-V1-wp90')",bool,doc=
"MVA Fall17 V1 Iso ID WP90"),
389 mvaFall17V1Iso_WPL =
Var(
"electronID('mvaEleID-Fall17-iso-V1-wpLoose')",bool,doc=
"MVA Fall17 V1 Iso ID loose WP"),
390 mvaFall17V1noIso =
Var(
"userFloat('ElectronMVAEstimatorRun2Fall17NoIsoV1Values')",float,doc=
"MVA Fall17 V1 noIso ID score"),
391 mvaFall17V1noIso_WP80 =
Var(
"electronID('mvaEleID-Fall17-noIso-V1-wp80')",bool,doc=
"MVA Fall17 V1 noIso ID WP80"),
392 mvaFall17V1noIso_WP90 =
Var(
"electronID('mvaEleID-Fall17-noIso-V1-wp90')",bool,doc=
"MVA Fall17 V1 noIso ID WP90"),
393 mvaFall17V1noIso_WPL =
Var(
"electronID('mvaEleID-Fall17-noIso-V1-wpLoose')",bool,doc=
"MVA Fall17 V1 noIso ID loose WP"),
394 mvaFall17V2Iso =
None,
395 mvaFall17V2Iso_WP80 =
None,
396 mvaFall17V2Iso_WP90 =
None,
397 mvaFall17V2Iso_WPL =
None,
398 mvaFall17V2noIso =
None,
399 mvaFall17V2noIso_WP80 =
None,
400 mvaFall17V2noIso_WP90 =
None,
401 mvaFall17V2noIso_WPL =
None,
402 vidNestedWPBitmapSpring15 =
Var(
"userInt('VIDNestedWPBitmapSpring15')",int,doc=_bitmapVIDForEleSpring15_docstring),
404 run2_miniAOD_80XLegacy.toModify(electronTable.variables,
405 jetRelIso =
Var(
"(1./userFloat('ptRatio'))-1.",float,doc=
"Relative isolation in matched jet (1/ptRatio-1, 0 if no matched jet (2016 definition))",precision=8),
406 cutBased =
Var(
"userInt('cutbasedID_veto')+userInt('cutbasedID_loose')+userInt('cutbasedID_medium')+userInt('cutbasedID_tight')",int,doc=
"cut-based Summer16 ID (0:fail, 1:veto, 2:loose, 3:medium, 4:tight)"),
407 cutBased_HLTPreSel =
Var(
"userInt('cutbasedID_HLT')",int,doc=
"cut-based HLT pre-selection ID"),
408 cutBased_Spring15 =
Var(
"userInt('cutbasedID_Spring15_veto')+userInt('cutbasedID_Spring15_loose')+userInt('cutbasedID_Spring15_medium')+userInt('cutbasedID_Spring15_tight')",int,doc=
"cut-based Spring15 ID (0:fail, 1:veto, 2:loose, 3:medium, 4:tight)"),
409 mvaSpring16GP =
Var(
"userFloat('mvaSpring16GP')",float,doc=
"MVA general-purpose ID score"),
410 mvaSpring16GP_WP80 =
Var(
"userInt('mvaSpring16GP_WP80')",bool,doc=
"MVA general-purpose ID WP80"),
411 mvaSpring16GP_WP90 =
Var(
"userInt('mvaSpring16GP_WP90')",bool,doc=
"MVA general-purpose ID WP90"),
412 mvaSpring16HZZ =
Var(
"userFloat('mvaSpring16HZZ')",float,doc=
"MVA HZZ ID score"),
413 mvaSpring16HZZ_WPL =
Var(
"userInt('mvaSpring16HZZ_WPL')",bool,doc=
"MVA HZZ ID loose WP"),
415 mvaFall17V1Iso =
None,
416 mvaFall17V1Iso_WP80 =
None,
417 mvaFall17V1Iso_WP90 =
None,
418 mvaFall17V1Iso_WPL =
None,
419 mvaFall17V1noIso =
None,
420 mvaFall17V1noIso_WP80 =
None,
421 mvaFall17V1noIso_WP90 =
None,
422 mvaFall17V1noIso_WPL =
None,
424 mvaFall17V2Iso =
None,
425 mvaFall17V2Iso_WP80 =
None,
426 mvaFall17V2Iso_WP90 =
None,
427 mvaFall17V2Iso_WPL =
None,
428 mvaFall17V2noIso =
None,
429 mvaFall17V2noIso_WP80 =
None,
430 mvaFall17V2noIso_WP90 =
None,
431 mvaFall17V2noIso_WPL =
None,
433 cutBased_Fall17_V1 =
None,
434 vidNestedWPBitmapSpring15 =
Var(
"userInt('VIDNestedWPBitmapSpring15')",int,doc=_bitmapVIDForEleSpring15_docstring),
436 pt =
Var(
"pt*userFloat('eCorr')", float, precision=-1, doc=
"p_{T} after energy correction & smearing"),
437 energyErr =
Var(
"p4Error('P4_COMBINATION')*userFloat('eCorr')",float,doc=
"energy error of the cluster-track combination",precision=6),
438 eCorr =
Var(
"userFloat('eCorr')",float,doc=
"ratio of the calibrated energy/miniaod energy"),
441 electronsMCMatchForTable = cms.EDProducer(
"MCMatcher",
442 src = electronTable.src,
443 matched = cms.InputTag(
"finalGenParticles"),
444 mcPdgId = cms.vint32(11,22),
445 checkCharge = cms.bool(
False),
446 mcStatus = cms.vint32(1),
447 maxDeltaR = cms.double(0.3),
448 maxDPtRel = cms.double(0.5),
449 resolveAmbiguities = cms.bool(
True),
450 resolveByMatchQuality = cms.bool(
True),
453 electronMCTable = cms.EDProducer(
"CandMCMatchTableProducer",
454 src = electronTable.src,
455 mcMap = cms.InputTag(
"electronsMCMatchForTable"),
456 objName = electronTable.name,
457 objType = electronTable.name,
458 branchName = cms.string(
"genPart"),
459 docString = cms.string(
"MC matching to status==1 electrons or photons"),
462 electronSequence = cms.Sequence(bitmapVIDForEle + isoForEle + ptRatioRelForEle + slimmedElectronsWithUserData + finalElectrons)
463 electronTables = cms.Sequence (electronMVATTH + electronTable)
464 electronMC = cms.Sequence(electronsMCMatchForTable + electronMCTable)
466 _withUpdate_sequence = cms.Sequence(slimmedElectronsUpdated + electronSequence.copy())
467 run2_nanoAOD_92X.toReplaceWith(electronSequence, _withUpdate_sequence)
469 _withUpdateAnd80XScale_sequence = _withUpdate_sequence.copy()
470 _withUpdateAnd80XScale_sequence.replace(slimmedElectronsWithUserData, calibratedPatElectrons80X + energyCorrForEle80X + bitmapVIDForEleSpring15 + slimmedElectronsWithUserData)
471 run2_miniAOD_80XLegacy.toReplaceWith(electronSequence, _withUpdateAnd80XScale_sequence)
473 _with94XScale_sequence = electronSequence.copy()
474 _with94XScale_sequence.replace(slimmedElectronsWithUserData, calibratedPatElectrons94X + slimmedElectronsWithUserData)
475 run2_nanoAOD_94XMiniAODv1.toReplaceWith(electronSequence, _with94XScale_sequence)
476 run2_nanoAOD_94XMiniAODv2.toReplaceWith(electronSequence, _with94XScale_sequence)
478 _with_bitmapVIDForEleSpring15_sequence = electronSequence.copy()
479 _with_bitmapVIDForEleSpring15_sequence.replace(slimmedElectronsWithUserData, bitmapVIDForEleSpring15 + slimmedElectronsWithUserData)
480 run2_nanoAOD_94X2016.toReplaceWith(electronSequence, _with_bitmapVIDForEleSpring15_sequence)
def ExtVar(tag, valtype, compression=None, doc=None, mcOnly=False, precision=-1)
def _get_bitmapVIDForEle_docstring(modules, WorkingPoints)
def Var(expr, valtype, compression=None, doc=None, mcOnly=False, precision=-1)
static std::string join(char **cmd)