1 import FWCore.ParameterSet.Config
as cms
14 from PhysicsTools.PatAlgos.tools.jetCollectionTools
import GenJetAdder, RecoJetAdder
20 bTagCSVV2 = [
'pfCombinedInclusiveSecondaryVertexV2BJetTags']
21 bTagDeepCSV = [
'pfDeepCSVJetTags:probb',
'pfDeepCSVJetTags:probbb',
'pfDeepCSVJetTags:probc']
23 'pfDeepFlavourJetTags:probb',
'pfDeepFlavourJetTags:probbb',
'pfDeepFlavourJetTags:problepb',
24 'pfDeepFlavourJetTags:probc',
'pfDeepFlavourJetTags:probuds',
'pfDeepFlavourJetTags:probg'
27 bTagDiscriminatorsForAK4 = bTagCSVV2+bTagDeepCSV+bTagDeepJet+_pfParticleNetAK4JetTagsAll
32 btagHbb = [
'pfBoostedDoubleSecondaryVertexAK8BJetTags']
34 'pfDeepDoubleBvLJetTags:probHbb',
35 'pfDeepDoubleCvLJetTags:probHcc',
36 'pfDeepDoubleCvBJetTags:probHcc',
37 'pfMassIndependentDeepDoubleBvLJetTags:probHbb',
38 'pfMassIndependentDeepDoubleCvLJetTags:probHcc',
39 'pfMassIndependentDeepDoubleCvBJetTags:probHcc'
42 'pfMassIndependentDeepDoubleBvLV2JetTags:probHbb',
43 'pfMassIndependentDeepDoubleCvLV2JetTags:probHcc',
44 'pfMassIndependentDeepDoubleCvBV2JetTags:probHcc'
59 config_genjets = list(
filter(
lambda k: k[
'enabled'], config_genjets))
66 "doc" :
"AK6 Gen jets (made with visible genparticles) with pt > 3 GeV",
80 "inputCollection" :
"slimmedCaloJets",
81 "genJetsCollection":
"AK4GenJetsNoNu",
86 "inputCollection" :
"",
87 "genJetsCollection":
"AK4GenJetsNoNu",
93 "inputCollection" :
"",
94 "genJetsCollection":
"AK4GenJetsNoNu",
95 "bTagDiscriminators": bTagDiscriminatorsForAK4,
101 "inputCollection" :
"",
102 "genJetsCollection":
"AK8GenJetsNoNu",
106 config_recojets = list(
filter(
lambda k: k[
'enabled'], config_recojets))
110 nanoInfo_recojets = {
113 "doc" :
"AK4 Calo jets with JECs applied",
117 "doc" :
"AK4 PF jets",
122 "doc" :
"AK4 PF Puppi",
130 "doc" :
"AK8 PF jets",
135 GENJETVARS = cms.PSet(P4Vars,
136 nConstituents = jetTable.variables.nConstituents,
138 PFJETVARS = cms.PSet(P4Vars,
139 rawFactor =
Var(
"1.-jecFactor('Uncorrected')",float,doc=
"1 - Factor to get back to raw pT",precision=6),
140 area = jetTable.variables.area,
141 chHEF = jetTable.variables.chHEF,
142 neHEF = jetTable.variables.neHEF,
143 chEmEF = jetTable.variables.chEmEF,
144 neEmEF = jetTable.variables.neEmEF,
145 muEF = jetTable.variables.muEF,
146 hfHEF =
Var(
"HFHadronEnergyFraction()",float,doc =
"hadronic energy fraction in HF",precision = 6),
147 hfEmEF =
Var(
"HFEMEnergyFraction()",float,doc =
"electromagnetic energy fraction in HF",precision = 6),
148 nMuons = jetTable.variables.nMuons,
149 nElectrons = jetTable.variables.nElectrons,
150 nConstituents = jetTable.variables.nConstituents,
151 nConstChHads =
Var(
"chargedHadronMultiplicity()",int,doc=
"number of charged hadrons in the jet"),
152 nConstNeuHads =
Var(
"neutralHadronMultiplicity()",int,doc=
"number of neutral hadrons in the jet"),
153 nConstHFHads =
Var(
"HFHadronMultiplicity()", int,doc=
"number of HF hadrons in the jet"),
154 nConstHFEMs =
Var(
"HFEMMultiplicity()",int,doc=
"number of HF EMs in the jet"),
155 nConstMuons =
Var(
"muonMultiplicity()",int,doc=
"number of muons in the jet"),
156 nConstElecs =
Var(
"electronMultiplicity()",int,doc=
"number of electrons in the jet"),
157 nConstPhotons =
Var(
"photonMultiplicity()",int,doc=
"number of photons in the jet"),
160 puId_dR2Mean =
Var(
"?(pt>10)?userFloat('puId_dR2Mean'):-1",float,doc=
"pT^2-weighted average square distance of jet constituents from the jet axis (PileUp ID BDT input variable)", precision= 6),
161 puId_majW =
Var(
"?(pt>10)?userFloat('puId_majW'):-1",float,doc=
"major axis of jet ellipsoid in eta-phi plane (PileUp ID BDT input variable)", precision= 6),
162 puId_minW =
Var(
"?(pt>10)?userFloat('puId_minW'):-1",float,doc=
"minor axis of jet ellipsoid in eta-phi plane (PileUp ID BDT input variable)", precision= 6),
163 puId_frac01 =
Var(
"?(pt>10)?userFloat('puId_frac01'):-1",float,doc=
"fraction of constituents' pT contained within dR <0.1 (PileUp ID BDT input variable)", precision= 6),
164 puId_frac02 =
Var(
"?(pt>10)?userFloat('puId_frac02'):-1",float,doc=
"fraction of constituents' pT contained within 0.1< dR <0.2 (PileUp ID BDT input variable)", precision= 6),
165 puId_frac03 =
Var(
"?(pt>10)?userFloat('puId_frac03'):-1",float,doc=
"fraction of constituents' pT contained within 0.2< dR <0.3 (PileUp ID BDT input variable)", precision= 6),
166 puId_frac04 =
Var(
"?(pt>10)?userFloat('puId_frac04'):-1",float,doc=
"fraction of constituents' pT contained within 0.3< dR <0.4 (PileUp ID BDT input variable)", precision= 6),
167 puId_ptD =
Var(
"?(pt>10)?userFloat('puId_ptD'):-1",float,doc=
"pT-weighted average pT of constituents (PileUp ID BDT input variable)", precision= 6),
168 puId_beta =
Var(
"?(pt>10)?userFloat('puId_beta'):-1",float,doc=
"fraction of pT of charged constituents associated to PV (PileUp ID BDT input variable)", precision= 6),
169 puId_pull =
Var(
"?(pt>10)?userFloat('puId_pull'):-1",float,doc=
"magnitude of pull vector (PileUp ID BDT input variable)", precision= 6),
170 puId_jetR =
Var(
"?(pt>10)?userFloat('puId_jetR'):-1",float,doc=
"fraction of jet pT carried by the leading constituent (PileUp ID BDT input variable)", precision= 6),
171 puId_jetRchg =
Var(
"?(pt>10)?userFloat('puId_jetRchg'):-1",float,doc=
"fraction of jet pT carried by the leading charged constituent (PileUp ID BDT input variable)", precision= 6),
172 puId_nCharged =
Var(
"?(pt>10)?userInt('puId_nCharged'):-1",int,doc=
"number of charged constituents (PileUp ID BDT input variable)"),
175 qgl_axis2 =
Var(
"?(pt>10)?userFloat('qgl_axis2'):-1",float,doc=
"ellipse minor jet axis (Quark vs Gluon likelihood input variable)", precision= 6),
176 qgl_ptD =
Var(
"?(pt>10)?userFloat('qgl_ptD'):-1",float,doc=
"pT-weighted average pT of constituents (Quark vs Gluon likelihood input variable)", precision= 6),
177 qgl_mult =
Var(
"?(pt>10)?userInt('qgl_mult'):-1", int,doc=
"PF candidates multiplicity (Quark vs Gluon likelihood input variable)"),
180 btagDeepB =
Var(
"?(pt>15)&&((bDiscriminator('pfDeepCSVJetTags:probb')+bDiscriminator('pfDeepCSVJetTags:probbb'))>=0)?bDiscriminator('pfDeepCSVJetTags:probb')+bDiscriminator('pfDeepCSVJetTags:probbb'):-1",float,doc=
"DeepCSV b+bb tag discriminator",precision=10),
181 btagCSVV2 =
Var(
"?pt>15?bDiscriminator('pfCombinedInclusiveSecondaryVertexV2BJetTags'):-1",float,doc=
" pfCombinedInclusiveSecondaryVertexV2 b-tag discriminator (aka CSVV2)",precision=10),
182 btagDeepCvL =
Var(
"?(pt>15)&&(bDiscriminator('pfDeepCSVJetTags:probc')>=0)?bDiscriminator('pfDeepCSVJetTags:probc')/(bDiscriminator('pfDeepCSVJetTags:probc')+bDiscriminator('pfDeepCSVJetTags:probudsg')):-1", float,doc=
"DeepCSV c vs udsg discriminator",precision=10),
183 btagDeepCvB =
Var(
"?(pt>15)&&bDiscriminator('pfDeepCSVJetTags:probc')>=0?bDiscriminator('pfDeepCSVJetTags:probc')/(bDiscriminator('pfDeepCSVJetTags:probc')+bDiscriminator('pfDeepCSVJetTags:probb')+bDiscriminator('pfDeepCSVJetTags:probbb')):-1",float,doc=
"DeepCSV c vs b+bb discriminator",precision=10),
185 DEEPJETVARS = cms.PSet(
186 btagDeepFlavB =
Var(
"?pt>15?bDiscriminator('pfDeepFlavourJetTags:probb')+bDiscriminator('pfDeepFlavourJetTags:probbb')+bDiscriminator('pfDeepFlavourJetTags:problepb'):-1",float,doc=
"DeepJet b+bb+lepb tag discriminator",precision=10),
187 btagDeepFlavC =
Var(
"?pt>15?bDiscriminator('pfDeepFlavourJetTags:probc'):-1",float,doc=
"DeepFlavour charm tag raw score",precision=10),
188 btagDeepFlavG =
Var(
"?pt>15?bDiscriminator('pfDeepFlavourJetTags:probg'):-1",float,doc=
"DeepFlavour gluon tag raw score",precision=10),
189 btagDeepFlavUDS =
Var(
"?pt>15?bDiscriminator('pfDeepFlavourJetTags:probuds'):-1",float,doc=
"DeepFlavour uds tag raw score",precision=10),
190 btagDeepFlavCvL =
Var(
"?(pt>15)&&(bDiscriminator('pfDeepFlavourJetTags:probc')+bDiscriminator('pfDeepFlavourJetTags:probuds')+bDiscriminator('pfDeepFlavourJetTags:probg'))>0?bDiscriminator('pfDeepFlavourJetTags:probc')/(bDiscriminator('pfDeepFlavourJetTags:probc')+bDiscriminator('pfDeepFlavourJetTags:probuds')+bDiscriminator('pfDeepFlavourJetTags:probg')):-1",float,doc=
"DeepJet c vs uds+g discriminator",precision=10),
191 btagDeepFlavCvB =
Var(
"?(pt>15)&&(bDiscriminator('pfDeepFlavourJetTags:probc')+bDiscriminator('pfDeepFlavourJetTags:probb')+bDiscriminator('pfDeepFlavourJetTags:probbb')+bDiscriminator('pfDeepFlavourJetTags:problepb'))>0?bDiscriminator('pfDeepFlavourJetTags:probc')/(bDiscriminator('pfDeepFlavourJetTags:probc')+bDiscriminator('pfDeepFlavourJetTags:probb')+bDiscriminator('pfDeepFlavourJetTags:probbb')+bDiscriminator('pfDeepFlavourJetTags:problepb')):-1",float,doc=
"DeepJet c vs b+bb+lepb discriminator",precision=10),
192 btagDeepFlavQG =
Var(
"?(pt>15)&&(bDiscriminator('pfDeepFlavourJetTags:probg')+bDiscriminator('pfDeepFlavourJetTags:probuds'))>0?bDiscriminator('pfDeepFlavourJetTags:probg')/(bDiscriminator('pfDeepFlavourJetTags:probg')+bDiscriminator('pfDeepFlavourJetTags:probuds')):-1",float,doc=
"DeepJet g vs uds discriminator",precision=10),
194 PARTICLENETAK4VARS = cms.PSet(
195 particleNetAK4_B =
Var(
"?pt>15?bDiscriminator('pfParticleNetAK4DiscriminatorsJetTags:BvsAll'):-1",float,doc=
"ParticleNetAK4 tagger b vs all (udsg, c) discriminator",precision=10),
196 particleNetAK4_CvsL =
Var(
"?pt>15?bDiscriminator('pfParticleNetAK4DiscriminatorsJetTags:CvsL'):-1",float,doc=
"ParticleNetAK4 tagger c vs udsg discriminator",precision=10),
197 particleNetAK4_CvsB =
Var(
"?pt>15?bDiscriminator('pfParticleNetAK4DiscriminatorsJetTags:CvsB'):-1",float,doc=
"ParticleNetAK4 tagger c vs b discriminator",precision=10),
198 particleNetAK4_QvsG =
Var(
"?pt>15?bDiscriminator('pfParticleNetAK4DiscriminatorsJetTags:QvsG'):-1",float,doc=
"ParticleNetAK4 tagger uds vs g discriminator",precision=10),
199 particleNetAK4_puIdDisc =
Var(
"?pt>15?1-bDiscriminator('pfParticleNetAK4JetTags:probpu'):-1",float,doc=
"ParticleNetAK4 tagger pileup jet discriminator",precision=10),
202 CALOJETVARS = cms.PSet(P4Vars,
203 area = jetTable.variables.area,
204 rawFactor = jetTable.variables.rawFactor,
205 emf =
Var(
"emEnergyFraction()", float, doc =
"electromagnetic energy fraction", precision = 10),
216 def AddJetID(proc, jetName="", jetSrc="", jetTableName="", jetSequenceName=""):
218 Setup modules to calculate PF jet ID
221 isPUPPIJet =
True if "Puppi" in jetName
else False
223 looseJetId =
"looseJetId{}".
format(jetName)
224 setattr(proc, looseJetId, proc.looseJetId.clone(
226 filterParams = proc.looseJetId.filterParams.clone(
232 tightJetId =
"tightJetId{}".
format(jetName)
233 setattr(proc, tightJetId, proc.tightJetId.clone(
235 filterParams = proc.tightJetId.filterParams.clone(
236 version =
"RUN2UL{}".
format(
"PUPPI" if isPUPPIJet
else "CHS")
241 tightJetIdLepVeto =
"tightJetIdLepVeto{}".
format(jetName)
242 setattr(proc, tightJetIdLepVeto, proc.tightJetIdLepVeto.clone(
244 filterParams = proc.tightJetIdLepVeto.filterParams.clone(
245 version =
"RUN2UL{}".
format(
"PUPPI" if isPUPPIJet
else "CHS")
250 for modifier
in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016:
251 modifier.toModify(getattr(proc, tightJetId).filterParams, version =
"WINTER16" )
252 modifier.toModify(getattr(proc, tightJetIdLepVeto).filterParams, version =
"WINTER16" )
253 for modifier
in run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2:
254 modifier.toModify(getattr(proc, tightJetId).filterParams, version =
"WINTER17{}".
format(
"PUPPI" if isPUPPIJet
else ""))
255 modifier.toModify(getattr(proc, tightJetIdLepVeto).filterParams, version =
"WINTER17{}".
format(
"PUPPI" if isPUPPIJet
else ""))
256 run2_nanoAOD_102Xv1.toModify(getattr(proc, tightJetId).filterParams, version =
"SUMMER18{}".
format(
"PUPPI" if isPUPPIJet
else "") )
257 run2_nanoAOD_102Xv1.toModify(getattr(proc, tightJetIdLepVeto).filterParams, version =
"SUMMER18{}".
format(
"PUPPI" if isPUPPIJet
else "") )
262 patJetWithUserData =
"{}WithUserData".
format(jetSrc)
263 getattr(proc, patJetWithUserData).userInts.tightId = cms.InputTag(tightJetId)
264 getattr(proc, patJetWithUserData).userInts.tightIdLepVeto = cms.InputTag(tightJetIdLepVeto)
265 for modifier
in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016:
266 modifier.toModify(getattr(proc, patJetWithUserData).userInts, looseId = cms.InputTag(looseJetId))
271 getattr(proc, jetTableName).variables.jetId =
Var(
"userInt('tightId')*2+4*userInt('tightIdLepVeto')",int,doc=
"Jet ID flags bit1 is loose (always false in 2017 since it does not exist), bit2 is tight, bit3 is tightLepVeto")
272 for modifier
in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016:
273 modifier.toModify(getattr(proc, jetTableName).variables, jetId =
Var(
"userInt('tightIdLepVeto')*4+userInt('tightId')*2+userInt('looseId')",int, doc=
"Jet ID flags bit1 is loose, bit2 is tight, bit3 is tightLepVeto"))
276 getattr(proc,jetSequenceName).
insert(getattr(proc,jetSequenceName).
index(getattr(proc, jetSrc))+1, getattr(proc, tightJetId))
277 getattr(proc,jetSequenceName).
insert(getattr(proc,jetSequenceName).
index(getattr(proc, tightJetId))+1, getattr(proc, tightJetIdLepVeto))
279 setattr(proc,
"_"+jetSequenceName+
"_2016", getattr(proc,jetSequenceName).
copy())
280 getattr(proc,
"_"+jetSequenceName+
"_2016").
insert(getattr(proc,
"_"+jetSequenceName+
"_2016").
index(getattr(proc, tightJetId)), getattr(proc, looseJetId))
281 for modifier
in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016:
282 modifier.toReplaceWith(getattr(proc,jetSequenceName), getattr(proc,
"_"+jetSequenceName+
"_2016"))
288 Setup modules to calculate pileup jet ID input variables for PF jet
294 puJetIdVarsCalculator =
"puJetIdCalculator{}".
format(jetName)
295 setattr(proc, puJetIdVarsCalculator, pileupJetIdCalculator.clone(
297 vertexes =
"offlineSlimmedPrimaryVertices",
298 inputIsCorrected =
True,
300 usePuppi =
True if "Puppi" in jetName
else False
303 getattr(proc,jetSequenceName).
insert(getattr(proc,jetSequenceName).
index(getattr(proc, jetSrc))+1, getattr(proc, puJetIdVarsCalculator))
308 puJetIDVar =
"puJetIDVar{}".
format(jetName)
309 setattr(proc, puJetIDVar, cms.EDProducer(
"PileupJetIDVarProducer",
310 srcJet = cms.InputTag(jetSrc),
311 srcPileupJetId = cms.InputTag(puJetIdVarsCalculator)
314 getattr(proc,jetSequenceName).
insert(getattr(proc,jetSequenceName).
index(getattr(proc, puJetIdVarsCalculator))+1, getattr(proc, puJetIDVar))
319 patJetWithUserData =
"{}WithUserData".
format(jetSrc)
320 getattr(proc,patJetWithUserData).userFloats.puId_dR2Mean = cms.InputTag(
"{}:dR2Mean".
format(puJetIDVar))
321 getattr(proc,patJetWithUserData).userFloats.puId_majW = cms.InputTag(
"{}:majW".
format(puJetIDVar))
322 getattr(proc,patJetWithUserData).userFloats.puId_minW = cms.InputTag(
"{}:minW".
format(puJetIDVar))
323 getattr(proc,patJetWithUserData).userFloats.puId_frac01 = cms.InputTag(
"{}:frac01".
format(puJetIDVar))
324 getattr(proc,patJetWithUserData).userFloats.puId_frac02 = cms.InputTag(
"{}:frac02".
format(puJetIDVar))
325 getattr(proc,patJetWithUserData).userFloats.puId_frac03 = cms.InputTag(
"{}:frac03".
format(puJetIDVar))
326 getattr(proc,patJetWithUserData).userFloats.puId_frac04 = cms.InputTag(
"{}:frac04".
format(puJetIDVar))
327 getattr(proc,patJetWithUserData).userFloats.puId_ptD = cms.InputTag(
"{}:ptD".
format(puJetIDVar))
328 getattr(proc,patJetWithUserData).userFloats.puId_beta = cms.InputTag(
"{}:beta".
format(puJetIDVar))
329 getattr(proc,patJetWithUserData).userFloats.puId_pull = cms.InputTag(
"{}:pull".
format(puJetIDVar))
330 getattr(proc,patJetWithUserData).userFloats.puId_jetR = cms.InputTag(
"{}:jetR".
format(puJetIDVar))
331 getattr(proc,patJetWithUserData).userFloats.puId_jetRchg = cms.InputTag(
"{}:jetRchg".
format(puJetIDVar))
332 getattr(proc,patJetWithUserData).userInts.puId_nCharged = cms.InputTag(
"{}:nCharged".
format(puJetIDVar))
337 getattr(proc,jetTableName).variables.puId_dR2Mean = PUIDVARS.puId_dR2Mean
338 getattr(proc,jetTableName).variables.puId_majW = PUIDVARS.puId_majW
339 getattr(proc,jetTableName).variables.puId_minW = PUIDVARS.puId_minW
340 getattr(proc,jetTableName).variables.puId_frac01 = PUIDVARS.puId_frac01
341 getattr(proc,jetTableName).variables.puId_frac02 = PUIDVARS.puId_frac02
342 getattr(proc,jetTableName).variables.puId_frac03 = PUIDVARS.puId_frac03
343 getattr(proc,jetTableName).variables.puId_frac04 = PUIDVARS.puId_frac04
344 getattr(proc,jetTableName).variables.puId_ptD = PUIDVARS.puId_ptD
345 getattr(proc,jetTableName).variables.puId_beta = PUIDVARS.puId_beta
346 getattr(proc,jetTableName).variables.puId_pull = PUIDVARS.puId_pull
347 getattr(proc,jetTableName).variables.puId_jetR = PUIDVARS.puId_jetR
348 getattr(proc,jetTableName).variables.puId_jetRchg = PUIDVARS.puId_jetRchg
349 getattr(proc,jetTableName).variables.puId_nCharged = PUIDVARS.puId_nCharged
353 def AddQGLTaggerVars(proc, jetName="", jetSrc="", jetTableName="", jetSequenceName="", calculateQGLVars=False):
355 Schedule the QGTagger module to calculate input variables to the QG likelihood
358 QGLTagger=
"qgtagger{}".
format(jetName)
359 patJetWithUserData=
"{}WithUserData".
format(jetSrc)
362 setattr(proc, QGLTagger, qgtagger.clone(
370 getattr(proc,patJetWithUserData).userFloats.qgl_axis2 = cms.InputTag(QGLTagger+
":axis2")
371 getattr(proc,patJetWithUserData).userFloats.qgl_ptD = cms.InputTag(QGLTagger+
":ptD")
372 getattr(proc,patJetWithUserData).userInts.qgl_mult = cms.InputTag(QGLTagger+
":mult")
377 getattr(proc,jetTableName).variables.qgl_axis2 = QGLVARS.qgl_axis2
378 getattr(proc,jetTableName).variables.qgl_ptD = QGLVARS.qgl_ptD
379 getattr(proc,jetTableName).variables.qgl_mult = QGLVARS.qgl_mult
382 getattr(proc,jetSequenceName).
insert(getattr(proc,jetSequenceName).
index(getattr(proc, jetSrc))+1, getattr(proc, QGLTagger))
388 Store b-tagging scores from various algortihm
391 getattr(proc, jetTableName).variables.btagDeepB = BTAGVARS.btagDeepB
392 getattr(proc, jetTableName).variables.btagCSVV2 = BTAGVARS.btagCSVV2
393 getattr(proc, jetTableName).variables.btagDeepCvL = BTAGVARS.btagDeepCvL
394 getattr(proc, jetTableName).variables.btagDeepCvB = BTAGVARS.btagDeepCvB
395 getattr(proc, jetTableName).variables.btagDeepFlavB = DEEPJETVARS.btagDeepFlavB
396 getattr(proc, jetTableName).variables.btagDeepFlavCvL = DEEPJETVARS.btagDeepFlavCvL
397 getattr(proc, jetTableName).variables.btagDeepFlavCvB = DEEPJETVARS.btagDeepFlavCvB
403 Store DeepJet raw score in jetTable for gluon and light quark
406 getattr(proc, jetTableName).variables.btagDeepFlavG = DEEPJETVARS.btagDeepFlavG
407 getattr(proc, jetTableName).variables.btagDeepFlavUDS = DEEPJETVARS.btagDeepFlavUDS
408 getattr(proc, jetTableName).variables.btagDeepFlavQG = DEEPJETVARS.btagDeepFlavQG
414 Store ParticleNetAK4 scores in jetTable
417 getattr(proc, jetTableName).variables.particleNetAK4_B = PARTICLENETAK4VARS.particleNetAK4_B
418 getattr(proc, jetTableName).variables.particleNetAK4_CvsL = PARTICLENETAK4VARS.particleNetAK4_CvsL
419 getattr(proc, jetTableName).variables.particleNetAK4_CvsB = PARTICLENETAK4VARS.particleNetAK4_CvsB
420 getattr(proc, jetTableName).variables.particleNetAK4_QvsG = PARTICLENETAK4VARS.particleNetAK4_QvsG
421 getattr(proc, jetTableName).variables.particleNetAK4_puIdDisc = PARTICLENETAK4VARS.particleNetAK4_puIdDisc
427 Add patJet into custom nanoAOD
430 jetName = recoJetInfo.jetUpper
431 payload = recoJetInfo.jetCorrPayload
432 doPF = recoJetInfo.doPF
433 doCalo = recoJetInfo.doCalo
434 patJetFinalColl = recoJetInfo.patJetFinalCollection
436 nanoInfoForJet = nanoInfo_recojets[recoJetInfo.jet]
437 jetTablePrefix = nanoInfoForJet[
"name"]
438 jetTableDoc = nanoInfoForJet[
"doc"]
439 ptcut = nanoInfoForJet[
"ptcut"]
if "ptcut" in nanoInfoForJet
else ""
440 doPUIDVar = nanoInfoForJet[
"doPUIDVar"]
if "doPUIDVar" in nanoInfoForJet
else False
441 doQGL = nanoInfoForJet[
"doQGL"]
if "doQGL" in nanoInfoForJet
else False
442 doBTag = nanoInfoForJet[
"doBTag"]
if "doBTag" in nanoInfoForJet
else False
445 jetName, payload, patJetFinalColl, jetTablePrefix, jetTableDoc, doPF, doCalo,
446 ptcut=ptcut, doPUIDVar=doPUIDVar, doQGL=doQGL, doBTag=doBTag, runOnMC=runOnMC
451 def SavePatJets(proc, jetName, payload, patJetFinalColl, jetTablePrefix, jetTableDoc,
452 doPF, doCalo, ptcut="", doPUIDVar=False, doQGL=False, doBTag=False, runOnMC=False):
454 Schedule modules for a given patJet collection and save its variables into custom NanoAOD
460 jetCorrFactors =
"jetCorrFactorsNano{}".
format(jetName)
461 setattr(proc, jetCorrFactors, jetCorrFactorsNano.clone(
462 src = patJetFinalColl,
470 srcJets =
"updatedJets{}".
format(jetName)
471 setattr(proc, srcJets, updatedJets.clone(
472 jetSource = patJetFinalColl,
473 jetCorrFactorsSource = [jetCorrFactors],
480 srcJetsWithUserData =
"updatedJets{}WithUserData".
format(jetName)
481 setattr(proc, srcJetsWithUserData, cms.EDProducer(
"PATJetUserDataEmbedder",
482 src = cms.InputTag(srcJets),
483 userFloats = cms.PSet(),
484 userInts = cms.PSet(),
491 finalJetsCutDefault =
"(pt >= 8)"
493 finalJetsCutDefault =
"(pt >= 8) || ((pt < 8) && (genJetFwdRef().backRef().isNonnull()))"
495 finalJetsForTable =
"finalJets{}".
format(jetName)
496 setattr(proc, finalJetsForTable, finalJets.clone(
497 src = srcJetsWithUserData,
498 cut = ptcut
if ptcut !=
"" else finalJetsCutDefault
505 tableContent = PFJETVARS
507 tableContent = CALOJETVARS
509 jetTableCutDefault =
""
511 jetTableDocDefault = jetTableDoc +
" with JECs applied. Jets with pt > 8 GeV are stored."
513 jetTableDocDefault +=
"For jets with pt < 8 GeV, only those matched to gen jets are stored."
515 jetTable =
"jet{}Table".
format(jetName)
516 setattr(proc,jetTable, cms.EDProducer(
"SimpleCandidateFlatTableProducer",
517 src = cms.InputTag(finalJetsForTable),
518 cut = cms.string(jetTableCutDefault),
519 name = cms.string(jetTablePrefix),
520 doc = cms.string(jetTableDocDefault),
521 singleton = cms.bool(
False),
522 extension = cms.bool(
False),
523 variables = cms.PSet(tableContent)
526 getattr(proc,jetTable).variables.pt.precision=10
531 jetMCTable =
"jet{}MCTable".
format(jetName)
532 setattr(proc, jetMCTable, cms.EDProducer(
"SimpleCandidateFlatTableProducer",
533 src = cms.InputTag(finalJetsForTable),
534 cut = getattr(proc,jetTable).cut,
535 name = cms.string(jetTablePrefix),
536 singleton = cms.bool(
False),
537 extension = cms.bool(
True),
538 variables = cms.PSet(
539 partonFlavour =
Var(
"partonFlavour()", int, doc=
"flavour from parton matching"),
540 hadronFlavour =
Var(
"hadronFlavour()", int, doc=
"flavour from hadron ghost clustering"),
541 genJetIdx =
Var(
"?genJetFwdRef().backRef().isNonnull()?genJetFwdRef().backRef().key():-1", int, doc=
"index of matched gen jet"),
549 jetSequenceName =
"jet{}Sequence".
format(jetName)
550 setattr(proc, jetSequenceName, cms.Sequence(
551 getattr(proc,jetCorrFactors)+
552 getattr(proc,srcJets)+
553 getattr(proc,srcJetsWithUserData)+
554 getattr(proc,finalJetsForTable)
561 jetTableSequenceName =
"jet{}TablesSequence".
format(jetName)
562 setattr(proc, jetTableSequenceName, cms.Sequence(getattr(proc,jetTable)))
564 jetTableSequenceMCName =
"jet{}MCTablesSequence".
format(jetName)
565 setattr(proc, jetTableSequenceMCName, cms.Sequence(getattr(proc,jetMCTable)))
568 proc.nanoSequenceMC += getattr(proc,jetSequenceName)
569 proc.nanoSequenceMC += getattr(proc,jetTableSequenceName)
570 proc.nanoSequenceMC += getattr(proc,jetTableSequenceMCName)
572 proc.nanoSequence += getattr(proc,jetSequenceName)
573 proc.nanoSequence += getattr(proc,jetTableSequenceName)
579 proc =
AddJetID(proc, jetName=jetName, jetSrc=srcJets, jetTableName=jetTable, jetSequenceName=jetSequenceName)
581 proc =
AddPileUpJetIDVars(proc, jetName=jetName, jetSrc=srcJets, jetTableName=jetTable, jetSequenceName=jetSequenceName)
583 proc =
AddQGLTaggerVars(proc,jetName=jetName, jetSrc=srcJets, jetTableName=jetTable, jetSequenceName=jetSequenceName, calculateQGLVars=
True)
598 Recluster AK4 CHS jets and replace slimmedJets
599 that is used as default to save AK4 CHS jets
602 print(
"custom_jme_cff::ReclusterAK4CHSJets: Recluster AK4 PF CHS jets")
609 "inputCollection" :
"",
610 "genJetsCollection":
"AK4GenJetsNoNu",
611 "bTagDiscriminators": bTagDiscriminatorsForAK4,
614 recoJetInfo = recoJA.addRecoJetCollection(proc, **cfg)
616 jetName = recoJetInfo.jetUpper
617 patJetFinalColl = recoJetInfo.patJetFinalCollection
623 proc.jetCorrFactorsNano.src=patJetFinalColl
624 proc.updatedJets.jetSource=patJetFinalColl
631 finalJetsCut =
"(pt >= 8) || ((pt < 8) && (genJetFwdRef().backRef().isNonnull()))"
633 finalJetsCut =
"(pt >= 8)"
635 proc.finalJets.cut = finalJetsCut
639 proc.corrT1METJetTable.cut =
"pt>=8 && pt<15 && abs(eta)<9.9"
645 proc.jetTable.cut = jetTableCut
646 proc.jetMCTable.cut = jetTableCut
651 jetTableDoc =
"AK4 PF CHS jets with JECs applied. Jets with pt > 8 GeV are stored."
653 jetTableDoc +=
"For jets with pt < 8 GeV, only those matched to AK4 Gen jets are stored."
654 proc.jetTable.doc = jetTableDoc
659 proc.jetTable.variables.hfHEF = PFJETVARS.hfHEF
660 proc.jetTable.variables.hfEmEF = PFJETVARS.hfEmEF
661 proc.jetTable.variables.nConstChHads = PFJETVARS.nConstChHads
662 proc.jetTable.variables.nConstNeuHads = PFJETVARS.nConstNeuHads
663 proc.jetTable.variables.nConstHFHads = PFJETVARS.nConstHFHads
664 proc.jetTable.variables.nConstHFEMs = PFJETVARS.nConstHFEMs
665 proc.jetTable.variables.nConstMuons = PFJETVARS.nConstMuons
666 proc.jetTable.variables.nConstElecs = PFJETVARS.nConstElecs
667 proc.jetTable.variables.nConstPhotons = PFJETVARS.nConstPhotons
672 pileupJetId80X =
"pileupJetId80X"
673 setattr(proc, pileupJetId80X, pileupJetId.clone(
674 jets =
"updatedJets",
675 algos = cms.VPSet(_chsalgos_81x),
676 inputIsCorrected =
True,
678 vertexes =
"offlineSlimmedPrimaryVertices"
681 proc.jetSequence.insert(proc.jetSequence.index(proc.pileupJetId94X), getattr(proc, pileupJetId80X))
683 proc.updatedJetsWithUserData.userInts.puId80XfullId = cms.InputTag(
'pileupJetId80X:fullId')
684 run2_jme_2016.toModify(proc.updatedJetsWithUserData.userFloats, puId80XDisc = cms.InputTag(
"pileupJetId80X:fullDiscriminant"))
686 proc.jetTable.variables.puId =
Var(
"userInt('puId80XfullId')", int, doc=
"Pilup ID flags with 80X (2016) training")
687 run2_jme_2016.toModify(proc.jetTable.variables, puIdDisc =
Var(
"userFloat('puId80XDisc')",float,doc=
"Pilup ID discriminant with 80X (2016) training",precision=10))
694 jetSrc =
"updatedJets",
695 jetTableName =
"jetTable",
696 jetSequenceName =
"jetSequence"
702 proc.updatedJetsWithUserData.userFloats.qgl_axis2 = cms.InputTag(
"qgtagger:axis2")
703 proc.updatedJetsWithUserData.userFloats.qgl_ptD = cms.InputTag(
"qgtagger:ptD")
704 proc.updatedJetsWithUserData.userInts.qgl_mult = cms.InputTag(
"qgtagger:mult")
708 proc.jetTable.variables.qgl_axis2 = QGLVARS.qgl_axis2
709 proc.jetTable.variables.qgl_ptD = QGLVARS.qgl_ptD
710 proc.jetTable.variables.qgl_mult = QGLVARS.qgl_mult
714 proc.jetTable.variables.btagDeepB = BTAGVARS.btagDeepB
715 proc.jetTable.variables.btagCSVV2 = BTAGVARS.btagCSVV2
716 proc.jetTable.variables.btagDeepCvL = BTAGVARS.btagDeepCvL
717 proc.jetTable.variables.btagDeepCvB = BTAGVARS.btagDeepCvB
721 proc.jetTable.variables.btagDeepFlavB = DEEPJETVARS.btagDeepFlavB
722 proc.jetTable.variables.btagDeepFlavCvL = DEEPJETVARS.btagDeepFlavCvL
723 proc.jetTable.variables.btagDeepFlavCvB = DEEPJETVARS.btagDeepFlavCvB
727 proc.jetTable.variables.btagDeepFlavG = DEEPJETVARS.btagDeepFlavG
728 proc.jetTable.variables.btagDeepFlavUDS = DEEPJETVARS.btagDeepFlavUDS
729 proc.jetTable.variables.btagDeepFlavQG = DEEPJETVARS.btagDeepFlavQG
733 proc.jetTable.variables.particleNetAK4_B = PARTICLENETAK4VARS.particleNetAK4_B
734 proc.jetTable.variables.particleNetAK4_CvsL = PARTICLENETAK4VARS.particleNetAK4_CvsL
735 proc.jetTable.variables.particleNetAK4_CvsB = PARTICLENETAK4VARS.particleNetAK4_CvsB
736 proc.jetTable.variables.particleNetAK4_QvsG = PARTICLENETAK4VARS.particleNetAK4_QvsG
737 proc.jetTable.variables.particleNetAK4_puIdDisc = PARTICLENETAK4VARS.particleNetAK4_puIdDisc
741 hfJetShowerShapeforCustomNanoAOD =
"hfJetShowerShapeforCustomNanoAOD"
742 setattr(proc, hfJetShowerShapeforCustomNanoAOD, hfJetShowerShapeforNanoAOD.clone(jets=
"updatedJets",vertices=
"offlineSlimmedPrimaryVertices") )
743 proc.jetSequence.insert(proc.jetSequence.index(proc.updatedJetsWithUserData), getattr(proc, hfJetShowerShapeforCustomNanoAOD))
744 proc.updatedJetsWithUserData.userFloats.hfsigmaEtaEta = cms.InputTag(
'hfJetShowerShapeforCustomNanoAOD:sigmaEtaEta')
745 proc.updatedJetsWithUserData.userFloats.hfsigmaPhiPhi = cms.InputTag(
'hfJetShowerShapeforCustomNanoAOD:sigmaPhiPhi')
746 proc.updatedJetsWithUserData.userInts.hfcentralEtaStripSize = cms.InputTag(
'hfJetShowerShapeforCustomNanoAOD:centralEtaStripSize')
747 proc.updatedJetsWithUserData.userInts.hfadjacentEtaStripsSize = cms.InputTag(
'hfJetShowerShapeforCustomNanoAOD:adjacentEtaStripsSize')
748 proc.jetTable.variables.hfsigmaEtaEta =
Var(
"userFloat('hfsigmaEtaEta')",float,doc=
"sigmaEtaEta for HF jets (noise discriminating variable)",precision=10)
749 proc.jetTable.variables.hfsigmaPhiPhi =
Var(
"userFloat('hfsigmaPhiPhi')",float,doc=
"sigmaPhiPhi for HF jets (noise discriminating variable)",precision=10)
750 proc.jetTable.variables.hfcentralEtaStripSize =
Var(
"userInt('hfcentralEtaStripSize')", int, doc=
"eta size of the central tower strip in HF (noise discriminating variable) ")
751 proc.jetTable.variables.hfadjacentEtaStripsSize =
Var(
"userInt('hfadjacentEtaStripsSize')", int, doc=
"eta size of the strips next to the central tower strip in HF (noise discriminating variable) ")
757 Store a separate AK8 Puppi jet collection for JEC studies.
758 Only minimal info are stored
760 print(
"custom_jme_cff::AddNewAK8PuppiJetsForJEC: Make a new AK8 PF Puppi jet collection for JEC studies")
766 "jet" :
"ak8pfpuppi",
767 "inputCollection" :
"",
768 "genJetsCollection":
"AK8GenJetsNoNu",
771 recoJetInfo = recoJA.addRecoJetCollection(proc, **cfg)
773 jetName = recoJetInfo.jetUpper
774 payload = recoJetInfo.jetCorrPayload
776 patJetFinalColl = recoJetInfo.patJetFinalCollection
777 jetTablePrefix =
"FatJetForJEC"
778 jetTableDoc =
"AK8 PF Puppi jets with JECs applied. Reclustered for JEC studies so only minimal info stored."
782 jetName, payload, patJetFinalColl, jetTablePrefix, jetTableDoc, doPF=
True,
783 doCalo=
False, ptcut=ptcut, doPUIDVar=
False, doQGL=
False, doBTag=
False, runOnMC=runOnMC
790 Store an AK8 CHS jet collection for JEC studies.
792 print(
"custom_jme_cff::AddNewAK8CHSJets: Make a new AK8 PF CHS jet collection for JEC studies")
799 "inputCollection" :
"",
800 "genJetsCollection":
"AK8GenJetsNoNu",
803 recoJetInfo = recoJA.addRecoJetCollection(proc, **cfg)
805 jetName = recoJetInfo.jetUpper
806 payload = recoJetInfo.jetCorrPayload
808 patJetFinalColl = recoJetInfo.patJetFinalCollection
809 jetTablePrefix =
"FatJetCHS"
810 jetTableDoc =
"AK8 PF CHS jets with JECs applied. Reclustered for JEC studies so only minimal info stored."
814 jetName, payload, patJetFinalColl, jetTablePrefix, jetTableDoc, doPF=
True,
815 doCalo=
False, ptcut=ptcut, doPUIDVar=
False, doQGL=
False, doBTag=
False, runOnMC=runOnMC
822 Add more variables for AK8 PFPUPPI jets
829 proc.fatJetTable.variables.chHEF =
Var(
"?isPFJet()?chargedHadronEnergyFraction():-1", float, doc=
"charged Hadron Energy Fraction", precision = 6)
830 proc.fatJetTable.variables.neHEF =
Var(
"?isPFJet()?neutralHadronEnergyFraction():-1", float, doc=
"neutral Hadron Energy Fraction", precision = 6)
831 proc.fatJetTable.variables.chEmEF =
Var(
"?isPFJet()?chargedEmEnergyFraction():-1", float, doc=
"charged Electromagnetic Energy Fraction", precision = 6)
832 proc.fatJetTable.variables.neEmEF =
Var(
"?isPFJet()?neutralEmEnergyFraction():-1", float, doc=
"neutral Electromagnetic Energy Fraction", precision = 6)
833 proc.fatJetTable.variables.muEF =
Var(
"?isPFJet()?muonEnergyFraction():-1", float, doc=
"muon Energy Fraction", precision = 6)
834 proc.fatJetTable.variables.hfHEF =
Var(
"?isPFJet()?HFHadronEnergyFraction():-1", float, doc=
"energy fraction in forward hadronic calorimeter", precision = 6)
835 proc.fatJetTable.variables.hfEmEF =
Var(
"?isPFJet()?HFEMEnergyFraction():-1", float, doc=
"energy fraction in forward EM calorimeter", precision = 6)
836 proc.fatJetTable.variables.nConstChHads =
Var(
"?isPFJet()?chargedHadronMultiplicity():-1",int, doc=
"number of charged hadrons in the jet")
837 proc.fatJetTable.variables.nConstNeuHads =
Var(
"?isPFJet()?neutralHadronMultiplicity():-1",int, doc=
"number of neutral hadrons in the jet")
838 proc.fatJetTable.variables.nConstHFHads =
Var(
"?isPFJet()?HFHadronMultiplicity():-1", int, doc=
"number of HF Hadrons in the jet")
839 proc.fatJetTable.variables.nConstHFEMs =
Var(
"?isPFJet()?HFEMMultiplicity():-1", int, doc=
"number of HF EMs in the jet")
840 proc.fatJetTable.variables.nConstMuons =
Var(
"?isPFJet()?muonMultiplicity():-1", int, doc=
"number of muons in the jet")
841 proc.fatJetTable.variables.nConstElecs =
Var(
"?isPFJet()?electronMultiplicity():-1", int, doc=
"number of electrons in the jet")
842 proc.fatJetTable.variables.nConstPhotons =
Var(
"?isPFJet()?photonMultiplicity():-1", int, doc=
"number of photons in the jet")
854 Add genJet into custom nanoAOD
857 genJetName = genJetInfo.jetUpper
858 genJetAlgo = genJetInfo.jetAlgo
859 genJetSize = genJetInfo.jetSize
860 genJetSizeNr = genJetInfo.jetSizeNr
861 genJetFinalColl =
"{}{}{}".
format(genJetAlgo.upper(), genJetSize,
"GenJetsNoNu")
862 genJetTablePrefix = nanoInfo_genjets[genJetInfo.jet][
"name"]
863 genJetTableDoc = nanoInfo_genjets[genJetInfo.jet][
"doc"]
865 SaveGenJets(proc, genJetName, genJetAlgo, genJetSizeNr, genJetFinalColl, genJetTablePrefix, genJetTableDoc, runOnMC=
False)
869 def SaveGenJets(proc, genJetName, genJetAlgo, genJetSizeNr, genJetFinalColl, genJetTablePrefix, genJetTableDoc, runOnMC=False):
871 Schedule modules for a given genJet collection and save its variables into custom NanoAOD
874 genJetTableThisJet =
"jet{}Table".
format(genJetName)
875 setattr(proc, genJetTableThisJet, genJetTable.clone(
876 src = genJetFinalColl,
878 name = genJetTablePrefix,
879 doc = genJetTableDoc,
880 variables = GENJETVARS
884 genJetFlavourAssociationThisJet =
"genJet{}FlavourAssociation".
format(genJetName)
885 setattr(proc, genJetFlavourAssociationThisJet, genJetFlavourAssociation.clone(
886 jets = getattr(proc,genJetTableThisJet).src,
887 jetAlgorithm = supportedJetAlgos[genJetAlgo],
888 rParam = genJetSizeNr,
892 genJetFlavourTableThisJet =
"genJet{}FlavourTable".
format(genJetName)
893 setattr(proc, genJetFlavourTableThisJet, genJetFlavourTable.clone(
894 name = getattr(proc,genJetTableThisJet).name,
895 src = getattr(proc,genJetTableThisJet).src,
896 cut = getattr(proc,genJetTableThisJet).cut,
897 jetFlavourInfos = genJetFlavourAssociationThisJet,
901 genJetSequenceName =
"genJet{}Sequence".
format(genJetName)
902 setattr(proc, genJetSequenceName, cms.Sequence(
903 getattr(proc,genJetTableThisJet)+
904 getattr(proc,genJetFlavourAssociationThisJet)+
905 getattr(proc,genJetFlavourTableThisJet)
908 proc.nanoSequenceMC.insert(proc.nanoSequenceMC.index(proc.jetMC)+1, getattr(proc,genJetSequenceName))
914 Recluster AK4 Gen jets and replace
915 slimmedGenJets that is used as default
916 to save AK4 Gen jets in NanoAODs.
918 print(
"custom_jme_cff::ReclusterAK4GenJets: Recluster AK4 Gen jets")
926 genJetInfo = genJA.addGenJetCollection(proc, **cfg)
928 genJetName = genJetInfo.jetUpper
929 genJetAlgo = genJetInfo.jetAlgo
930 genJetSize = genJetInfo.jetSize
931 genJetSizeNr = genJetInfo.jetSizeNr
932 selectedGenJets =
"{}{}{}".
format(genJetAlgo.upper(), genJetSize,
"GenJetsNoNu")
938 proc.genJetTable.src = selectedGenJets
939 proc.genJetTable.cut =
""
940 proc.genJetTable.doc =
"AK4 Gen jets (made with visible genparticles) with pt > 3 GeV"
942 genJetFlavourAssociationThisJet =
"genJet{}FlavourAssociation".
format(genJetName)
943 setattr(proc, genJetFlavourAssociationThisJet, genJetFlavourAssociation.clone(
944 jets = proc.genJetTable.src,
945 jetAlgorithm = supportedJetAlgos[genJetAlgo],
946 rParam = genJetSizeNr,
949 proc.jetMC.insert(proc.jetMC.index(proc.genJetFlavourTable), getattr(proc, genJetFlavourAssociationThisJet))
954 Make a separate AK8 Gen jet collection for JEC studies.
956 print(
"custom_jme_cff::AddNewAK8GenJetsForJEC: Add new AK8 Gen jets for JEC studies")
964 genJetInfo = genJA.addGenJetCollection(proc, **cfg)
966 genJetName = genJetInfo.jetUpper
967 genJetAlgo = genJetInfo.jetAlgo
968 genJetSize = genJetInfo.jetSize
969 genJetSizeNr = genJetInfo.jetSizeNr
970 genJetFinalColl =
"{}{}{}".
format(genJetAlgo.upper(), genJetSize,
"GenJetsNoNu")
971 genJetTablePrefix =
"GenJetAK8ForJEC"
972 genJetTableDoc =
"AK8 Gen jets (made with visible genparticles) with pt > 3 GeV. Reclustered for JEC studies."
974 SaveGenJets(proc, genJetName, genJetAlgo, genJetSizeNr, genJetFinalColl, genJetTablePrefix, genJetTableDoc, runOnMC=
False)
979 proc.genJetTable.variables.nConstituents = GENJETVARS.nConstituents
983 proc.genJetAK8Table.variables.nConstituents = GENJETVARS.nConstituents
993 Remove default pt cuts for all jets set in jets_cff.py
996 proc.finalJets.cut =
""
997 proc.finalJetsAK8.cut =
""
998 proc.genJetTable.cut =
""
999 proc.genJetFlavourTable.cut =
""
1000 proc.genJetAK8Table.cut =
""
1001 proc.genJetAK8FlavourTable.cut =
""
1022 genJA = GenJetAdder()
1040 for jetConfig
in config_genjets:
1041 cfg = { k : v
for k, v
in jetConfig.items()
if k !=
"enabled"}
1042 genJetInfo = genJA.addGenJetCollection(process, **cfg)
1050 recoJA = RecoJetAdder(runOnMC=runOnMC)
1070 for jetConfig
in config_recojets:
1071 cfg = { k : v
for k, v
in jetConfig.items()
if k !=
"enabled"}
1072 recoJetInfo = recoJA.addRecoJetCollection(process, **cfg)
1079 process.puTable.savePtHatMax =
True
1085 process.genWeightsTable.keepAllPSWeights =
True