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' 28 bTagDiscriminatorsForAK4 = bTagCSVV2+bTagDeepCSV+bTagDeepJet+_pfParticleNetAK4JetTagsAll
33 btagHbb = [
'pfBoostedDoubleSecondaryVertexAK8BJetTags']
35 'pfDeepDoubleBvLJetTags:probHbb',
36 'pfDeepDoubleCvLJetTags:probHcc',
37 'pfDeepDoubleCvBJetTags:probHcc',
38 'pfMassIndependentDeepDoubleBvLJetTags:probHbb',
39 'pfMassIndependentDeepDoubleCvLJetTags:probHcc',
40 'pfMassIndependentDeepDoubleCvBJetTags:probHcc' 43 'pfMassIndependentDeepDoubleBvLV2JetTags:probHbb',
44 'pfMassIndependentDeepDoubleCvLV2JetTags:probHcc',
45 'pfMassIndependentDeepDoubleCvBV2JetTags:probHcc' 60 config_genjets =
list(
filter(
lambda k: k[
'enabled'], config_genjets))
67 "doc" :
"AK6 Gen jets (made with visible genparticles) with pt > 3 GeV",
81 "inputCollection" :
"slimmedCaloJets",
82 "genJetsCollection":
"AK4GenJetsNoNu",
87 "inputCollection" :
"",
88 "genJetsCollection":
"AK4GenJetsNoNu",
94 "inputCollection" :
"",
95 "genJetsCollection":
"AK4GenJetsNoNu",
96 "bTagDiscriminators": bTagDiscriminatorsForAK4,
102 "inputCollection" :
"",
103 "genJetsCollection":
"AK8GenJetsNoNu",
107 config_recojets =
list(
filter(
lambda k: k[
'enabled'], config_recojets))
111 nanoInfo_recojets = {
114 "doc" :
"AK4 Calo jets with JECs applied",
118 "doc" :
"AK4 PF jets",
123 "doc" :
"AK4 PF Puppi",
131 "doc" :
"AK8 PF jets",
136 GENJETVARS = cms.PSet(P4Vars,
137 nConstituents = jetTable.variables.nConstituents,
139 PFJETVARS = cms.PSet(P4Vars,
140 rawFactor =
Var(
"1.-jecFactor('Uncorrected')",float,doc=
"1 - Factor to get back to raw pT",precision=6),
141 area = jetTable.variables.area,
142 chHEF = jetTable.variables.chHEF,
143 neHEF = jetTable.variables.neHEF,
144 chEmEF = jetTable.variables.chEmEF,
145 neEmEF = jetTable.variables.neEmEF,
146 muEF = jetTable.variables.muEF,
147 hfHEF =
Var(
"HFHadronEnergyFraction()",float,doc =
"hadronic energy fraction in HF",precision = 6),
148 hfEmEF =
Var(
"HFEMEnergyFraction()",float,doc =
"electromagnetic energy fraction in HF",precision = 6),
149 nMuons = jetTable.variables.nMuons,
150 nElectrons = jetTable.variables.nElectrons,
151 nConstituents = jetTable.variables.nConstituents,
152 nConstChHads =
Var(
"chargedHadronMultiplicity()",int,doc=
"number of charged hadrons in the jet"),
153 nConstNeuHads =
Var(
"neutralHadronMultiplicity()",int,doc=
"number of neutral hadrons in the jet"),
154 nConstHFHads =
Var(
"HFHadronMultiplicity()", int,doc=
"number of HF hadrons in the jet"),
155 nConstHFEMs =
Var(
"HFEMMultiplicity()",int,doc=
"number of HF EMs in the jet"),
156 nConstMuons =
Var(
"muonMultiplicity()",int,doc=
"number of muons in the jet"),
157 nConstElecs =
Var(
"electronMultiplicity()",int,doc=
"number of electrons in the jet"),
158 nConstPhotons =
Var(
"photonMultiplicity()",int,doc=
"number of photons in the jet"),
161 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),
162 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),
163 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),
164 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),
165 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),
166 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),
167 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),
168 puId_ptD =
Var(
"?(pt>10)?userFloat('puId_ptD'):-1",float,doc=
"pT-weighted average pT of constituents (PileUp ID BDT input variable)", precision= 6),
169 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),
170 puId_pull =
Var(
"?(pt>10)?userFloat('puId_pull'):-1",float,doc=
"magnitude of pull vector (PileUp ID BDT input variable)", precision= 6),
171 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),
172 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),
173 puId_nCharged =
Var(
"?(pt>10)?userInt('puId_nCharged'):-1",int,doc=
"number of charged constituents (PileUp ID BDT input variable)"),
176 qgl_axis2 =
Var(
"?(pt>10)?userFloat('qgl_axis2'):-1",float,doc=
"ellipse minor jet axis (Quark vs Gluon likelihood input variable)", precision= 6),
177 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),
178 qgl_mult =
Var(
"?(pt>10)?userInt('qgl_mult'):-1", int,doc=
"PF candidates multiplicity (Quark vs Gluon likelihood input variable)"),
181 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),
182 btagCSVV2 =
Var(
"?pt>15?bDiscriminator('pfCombinedInclusiveSecondaryVertexV2BJetTags'):-1",float,doc=
" pfCombinedInclusiveSecondaryVertexV2 b-tag discriminator (aka CSVV2)",precision=10),
183 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),
184 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),
186 DEEPJETVARS = cms.PSet(
187 btagDeepFlavB =
Var(
"?pt>15?bDiscriminator('pfDeepFlavourJetTags:probb')+bDiscriminator('pfDeepFlavourJetTags:probbb')+bDiscriminator('pfDeepFlavourJetTags:problepb'):-1",float,doc=
"DeepJet b+bb+lepb tag discriminator",precision=10),
188 btagDeepFlavC =
Var(
"?pt>15?bDiscriminator('pfDeepFlavourJetTags:probc'):-1",float,doc=
"DeepFlavour charm tag raw score",precision=10),
189 btagDeepFlavG =
Var(
"?pt>15?bDiscriminator('pfDeepFlavourJetTags:probg'):-1",float,doc=
"DeepFlavour gluon tag raw score",precision=10),
190 btagDeepFlavUDS =
Var(
"?pt>15?bDiscriminator('pfDeepFlavourJetTags:probuds'):-1",float,doc=
"DeepFlavour uds tag raw score",precision=10),
191 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),
192 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),
193 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),
195 PARTICLENETAK4VARS = cms.PSet(
196 particleNetAK4_B =
Var(
"?pt>15?bDiscriminator('pfParticleNetAK4DiscriminatorsJetTags:BvsAll'):-1",float,doc=
"ParticleNetAK4 tagger b vs all (udsg, c) discriminator",precision=10),
197 particleNetAK4_CvsL =
Var(
"?pt>15?bDiscriminator('pfParticleNetAK4DiscriminatorsJetTags:CvsL'):-1",float,doc=
"ParticleNetAK4 tagger c vs udsg discriminator",precision=10),
198 particleNetAK4_CvsB =
Var(
"?pt>15?bDiscriminator('pfParticleNetAK4DiscriminatorsJetTags:CvsB'):-1",float,doc=
"ParticleNetAK4 tagger c vs b discriminator",precision=10),
199 particleNetAK4_QvsG =
Var(
"?pt>15?bDiscriminator('pfParticleNetAK4DiscriminatorsJetTags:QvsG'):-1",float,doc=
"ParticleNetAK4 tagger uds vs g discriminator",precision=10),
200 particleNetAK4_puIdDisc =
Var(
"?pt>15?1-bDiscriminator('pfParticleNetAK4JetTags:probpu'):-1",float,doc=
"ParticleNetAK4 tagger pileup jet discriminator",precision=10),
203 CALOJETVARS = cms.PSet(P4Vars,
204 area = jetTable.variables.area,
205 rawFactor = jetTable.variables.rawFactor,
206 emf =
Var(
"emEnergyFraction()", float, doc =
"electromagnetic energy fraction", precision = 10),
217 def AddJetID(proc, jetName="", jetSrc="", jetTableName="", jetSequenceName=""):
219 Setup modules to calculate PF jet ID 222 isPUPPIJet =
True if "Puppi" in jetName
else False 224 looseJetId =
"looseJetId{}".
format(jetName)
225 setattr(proc, looseJetId, proc.looseJetId.clone(
227 filterParams = proc.looseJetId.filterParams.clone(
233 tightJetId =
"tightJetId{}".
format(jetName)
234 setattr(proc, tightJetId, proc.tightJetId.clone(
236 filterParams = proc.tightJetId.filterParams.clone(
237 version =
"RUN2UL{}".
format(
"PUPPI" if isPUPPIJet
else "CHS")
242 tightJetIdLepVeto =
"tightJetIdLepVeto{}".
format(jetName)
243 setattr(proc, tightJetIdLepVeto, proc.tightJetIdLepVeto.clone(
245 filterParams = proc.tightJetIdLepVeto.filterParams.clone(
246 version =
"RUN2UL{}".
format(
"PUPPI" if isPUPPIJet
else "CHS")
251 for modifier
in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016:
252 modifier.toModify(getattr(proc, tightJetId).filterParams, version =
"WINTER16" )
253 modifier.toModify(getattr(proc, tightJetIdLepVeto).filterParams, version =
"WINTER16" )
254 for modifier
in run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2:
255 modifier.toModify(getattr(proc, tightJetId).filterParams, version =
"WINTER17{}".
format(
"PUPPI" if isPUPPIJet
else ""))
256 modifier.toModify(getattr(proc, tightJetIdLepVeto).filterParams, version =
"WINTER17{}".
format(
"PUPPI" if isPUPPIJet
else ""))
257 run2_nanoAOD_102Xv1.toModify(getattr(proc, tightJetId).filterParams, version =
"SUMMER18{}".
format(
"PUPPI" if isPUPPIJet
else "") )
258 run2_nanoAOD_102Xv1.toModify(getattr(proc, tightJetIdLepVeto).filterParams, version =
"SUMMER18{}".
format(
"PUPPI" if isPUPPIJet
else "") )
263 patJetWithUserData =
"{}WithUserData".
format(jetSrc)
264 getattr(proc, patJetWithUserData).userInts.tightId = cms.InputTag(tightJetId)
265 getattr(proc, patJetWithUserData).userInts.tightIdLepVeto = cms.InputTag(tightJetIdLepVeto)
266 for modifier
in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016:
267 modifier.toModify(getattr(proc, patJetWithUserData).userInts, looseId = cms.InputTag(looseJetId))
272 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")
273 for modifier
in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016:
274 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"))
277 getattr(proc,jetSequenceName).
insert(getattr(proc,jetSequenceName).
index(getattr(proc, jetSrc))+1, getattr(proc, tightJetId))
278 getattr(proc,jetSequenceName).
insert(getattr(proc,jetSequenceName).
index(getattr(proc, tightJetId))+1, getattr(proc, tightJetIdLepVeto))
280 setattr(proc,
"_"+jetSequenceName+
"_2016", getattr(proc,jetSequenceName).
copy())
281 getattr(proc,
"_"+jetSequenceName+
"_2016").
insert(getattr(proc,
"_"+jetSequenceName+
"_2016").
index(getattr(proc, tightJetId)), getattr(proc, looseJetId))
282 for modifier
in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016:
283 modifier.toReplaceWith(getattr(proc,jetSequenceName), getattr(proc,
"_"+jetSequenceName+
"_2016"))
289 Setup modules to calculate pileup jet ID input variables for PF jet 295 puJetIdVarsCalculator =
"puJetIdCalculator{}".
format(jetName)
296 setattr(proc, puJetIdVarsCalculator, pileupJetIdCalculator.clone(
298 vertexes =
"offlineSlimmedPrimaryVertices",
299 inputIsCorrected =
True,
301 usePuppi =
True if "Puppi" in jetName
else False 304 getattr(proc,jetSequenceName).
insert(getattr(proc,jetSequenceName).
index(getattr(proc, jetSrc))+1, getattr(proc, puJetIdVarsCalculator))
309 puJetIDVar =
"puJetIDVar{}".
format(jetName)
310 setattr(proc, puJetIDVar, cms.EDProducer(
"PileupJetIDVarProducer",
311 srcJet = cms.InputTag(jetSrc),
312 srcPileupJetId = cms.InputTag(puJetIdVarsCalculator)
315 getattr(proc,jetSequenceName).
insert(getattr(proc,jetSequenceName).
index(getattr(proc, puJetIdVarsCalculator))+1, getattr(proc, puJetIDVar))
320 patJetWithUserData =
"{}WithUserData".
format(jetSrc)
321 getattr(proc,patJetWithUserData).userFloats.puId_dR2Mean = cms.InputTag(
"{}:dR2Mean".
format(puJetIDVar))
322 getattr(proc,patJetWithUserData).userFloats.puId_majW = cms.InputTag(
"{}:majW".
format(puJetIDVar))
323 getattr(proc,patJetWithUserData).userFloats.puId_minW = cms.InputTag(
"{}:minW".
format(puJetIDVar))
324 getattr(proc,patJetWithUserData).userFloats.puId_frac01 = cms.InputTag(
"{}:frac01".
format(puJetIDVar))
325 getattr(proc,patJetWithUserData).userFloats.puId_frac02 = cms.InputTag(
"{}:frac02".
format(puJetIDVar))
326 getattr(proc,patJetWithUserData).userFloats.puId_frac03 = cms.InputTag(
"{}:frac03".
format(puJetIDVar))
327 getattr(proc,patJetWithUserData).userFloats.puId_frac04 = cms.InputTag(
"{}:frac04".
format(puJetIDVar))
328 getattr(proc,patJetWithUserData).userFloats.puId_ptD = cms.InputTag(
"{}:ptD".
format(puJetIDVar))
329 getattr(proc,patJetWithUserData).userFloats.puId_beta = cms.InputTag(
"{}:beta".
format(puJetIDVar))
330 getattr(proc,patJetWithUserData).userFloats.puId_pull = cms.InputTag(
"{}:pull".
format(puJetIDVar))
331 getattr(proc,patJetWithUserData).userFloats.puId_jetR = cms.InputTag(
"{}:jetR".
format(puJetIDVar))
332 getattr(proc,patJetWithUserData).userFloats.puId_jetRchg = cms.InputTag(
"{}:jetRchg".
format(puJetIDVar))
333 getattr(proc,patJetWithUserData).userInts.puId_nCharged = cms.InputTag(
"{}:nCharged".
format(puJetIDVar))
338 getattr(proc,jetTableName).variables.puId_dR2Mean = PUIDVARS.puId_dR2Mean
339 getattr(proc,jetTableName).variables.puId_majW = PUIDVARS.puId_majW
340 getattr(proc,jetTableName).variables.puId_minW = PUIDVARS.puId_minW
341 getattr(proc,jetTableName).variables.puId_frac01 = PUIDVARS.puId_frac01
342 getattr(proc,jetTableName).variables.puId_frac02 = PUIDVARS.puId_frac02
343 getattr(proc,jetTableName).variables.puId_frac03 = PUIDVARS.puId_frac03
344 getattr(proc,jetTableName).variables.puId_frac04 = PUIDVARS.puId_frac04
345 getattr(proc,jetTableName).variables.puId_ptD = PUIDVARS.puId_ptD
346 getattr(proc,jetTableName).variables.puId_beta = PUIDVARS.puId_beta
347 getattr(proc,jetTableName).variables.puId_pull = PUIDVARS.puId_pull
348 getattr(proc,jetTableName).variables.puId_jetR = PUIDVARS.puId_jetR
349 getattr(proc,jetTableName).variables.puId_jetRchg = PUIDVARS.puId_jetRchg
350 getattr(proc,jetTableName).variables.puId_nCharged = PUIDVARS.puId_nCharged
354 def AddQGLTaggerVars(proc, jetName="", jetSrc="", jetTableName="", jetSequenceName="", calculateQGLVars=False):
356 Schedule the QGTagger module to calculate input variables to the QG likelihood 359 QGLTagger=
"qgtagger{}".
format(jetName)
360 patJetWithUserData=
"{}WithUserData".
format(jetSrc)
363 setattr(proc, QGLTagger, qgtagger.clone(
371 getattr(proc,patJetWithUserData).userFloats.qgl_axis2 = cms.InputTag(QGLTagger+
":axis2")
372 getattr(proc,patJetWithUserData).userFloats.qgl_ptD = cms.InputTag(QGLTagger+
":ptD")
373 getattr(proc,patJetWithUserData).userInts.qgl_mult = cms.InputTag(QGLTagger+
":mult")
378 getattr(proc,jetTableName).variables.qgl_axis2 = QGLVARS.qgl_axis2
379 getattr(proc,jetTableName).variables.qgl_ptD = QGLVARS.qgl_ptD
380 getattr(proc,jetTableName).variables.qgl_mult = QGLVARS.qgl_mult
383 getattr(proc,jetSequenceName).
insert(getattr(proc,jetSequenceName).
index(getattr(proc, jetSrc))+1, getattr(proc, QGLTagger))
389 Store b-tagging scores from various algortihm 392 getattr(proc, jetTableName).variables.btagDeepB = BTAGVARS.btagDeepB
393 getattr(proc, jetTableName).variables.btagCSVV2 = BTAGVARS.btagCSVV2
394 getattr(proc, jetTableName).variables.btagDeepCvL = BTAGVARS.btagDeepCvL
395 getattr(proc, jetTableName).variables.btagDeepCvB = BTAGVARS.btagDeepCvB
396 getattr(proc, jetTableName).variables.btagDeepFlavB = DEEPJETVARS.btagDeepFlavB
397 getattr(proc, jetTableName).variables.btagDeepFlavCvL = DEEPJETVARS.btagDeepFlavCvL
398 getattr(proc, jetTableName).variables.btagDeepFlavCvB = DEEPJETVARS.btagDeepFlavCvB
404 Store DeepJet raw score in jetTable for gluon and light quark 407 getattr(proc, jetTableName).variables.btagDeepFlavG = DEEPJETVARS.btagDeepFlavG
408 getattr(proc, jetTableName).variables.btagDeepFlavUDS = DEEPJETVARS.btagDeepFlavUDS
409 getattr(proc, jetTableName).variables.btagDeepFlavQG = DEEPJETVARS.btagDeepFlavQG
415 Store ParticleNetAK4 scores in jetTable 418 getattr(proc, jetTableName).variables.particleNetAK4_B = PARTICLENETAK4VARS.particleNetAK4_B
419 getattr(proc, jetTableName).variables.particleNetAK4_CvsL = PARTICLENETAK4VARS.particleNetAK4_CvsL
420 getattr(proc, jetTableName).variables.particleNetAK4_CvsB = PARTICLENETAK4VARS.particleNetAK4_CvsB
421 getattr(proc, jetTableName).variables.particleNetAK4_QvsG = PARTICLENETAK4VARS.particleNetAK4_QvsG
422 getattr(proc, jetTableName).variables.particleNetAK4_puIdDisc = PARTICLENETAK4VARS.particleNetAK4_puIdDisc
428 Add patJet into custom nanoAOD 431 jetName = recoJetInfo.jetUpper
432 payload = recoJetInfo.jetCorrPayload
433 doPF = recoJetInfo.doPF
434 doCalo = recoJetInfo.doCalo
435 patJetFinalColl = recoJetInfo.patJetFinalCollection
437 nanoInfoForJet = nanoInfo_recojets[recoJetInfo.jet]
438 jetTablePrefix = nanoInfoForJet[
"name"]
439 jetTableDoc = nanoInfoForJet[
"doc"]
440 ptcut = nanoInfoForJet[
"ptcut"]
if "ptcut" in nanoInfoForJet
else "" 441 doPUIDVar = nanoInfoForJet[
"doPUIDVar"]
if "doPUIDVar" in nanoInfoForJet
else False 442 doQGL = nanoInfoForJet[
"doQGL"]
if "doQGL" in nanoInfoForJet
else False 443 doBTag = nanoInfoForJet[
"doBTag"]
if "doBTag" in nanoInfoForJet
else False 446 jetName, payload, patJetFinalColl, jetTablePrefix, jetTableDoc, doPF, doCalo,
447 ptcut=ptcut, doPUIDVar=doPUIDVar, doQGL=doQGL, doBTag=doBTag, runOnMC=runOnMC
452 def SavePatJets(proc, jetName, payload, patJetFinalColl, jetTablePrefix, jetTableDoc,
453 doPF, doCalo, ptcut=
"", doPUIDVar=
False, doQGL=
False, doBTag=
False, runOnMC=
False):
455 Schedule modules for a given patJet collection and save its variables into custom NanoAOD 461 jetCorrFactors =
"jetCorrFactorsNano{}".
format(jetName)
462 setattr(proc, jetCorrFactors, jetCorrFactorsNano.clone(
463 src = patJetFinalColl,
471 srcJets =
"updatedJets{}".
format(jetName)
472 setattr(proc, srcJets, updatedJets.clone(
473 jetSource = patJetFinalColl,
474 jetCorrFactorsSource = [jetCorrFactors],
481 srcJetsWithUserData =
"updatedJets{}WithUserData".
format(jetName)
482 setattr(proc, srcJetsWithUserData, cms.EDProducer(
"PATJetUserDataEmbedder",
483 src = cms.InputTag(srcJets),
484 userFloats = cms.PSet(),
485 userInts = cms.PSet(),
492 finalJetsCutDefault =
"(pt >= 8)" 494 finalJetsCutDefault =
"(pt >= 8) || ((pt < 8) && (genJetFwdRef().backRef().isNonnull()))" 496 finalJetsForTable =
"finalJets{}".
format(jetName)
497 setattr(proc, finalJetsForTable, finalJets.clone(
498 src = srcJetsWithUserData,
499 cut = ptcut
if ptcut !=
"" else finalJetsCutDefault
506 tableContent = PFJETVARS
508 tableContent = CALOJETVARS
510 jetTableCutDefault =
"" 512 jetTableDocDefault = jetTableDoc +
" with JECs applied. Jets with pt > 8 GeV are stored." 514 jetTableDocDefault +=
"For jets with pt < 8 GeV, only those matched to gen jets are stored." 516 jetTable =
"jet{}Table".
format(jetName)
517 setattr(proc,jetTable, cms.EDProducer(
"SimpleCandidateFlatTableProducer",
518 src = cms.InputTag(finalJetsForTable),
519 cut = cms.string(jetTableCutDefault),
520 name = cms.string(jetTablePrefix),
521 doc = cms.string(jetTableDocDefault),
522 singleton = cms.bool(
False),
523 extension = cms.bool(
False),
524 variables = cms.PSet(tableContent)
527 getattr(proc,jetTable).variables.pt.precision=10
532 jetMCTable =
"jet{}MCTable".
format(jetName)
533 setattr(proc, jetMCTable, cms.EDProducer(
"SimpleCandidateFlatTableProducer",
534 src = cms.InputTag(finalJetsForTable),
535 cut = getattr(proc,jetTable).cut,
536 name = cms.string(jetTablePrefix),
537 singleton = cms.bool(
False),
538 extension = cms.bool(
True),
539 variables = cms.PSet(
540 partonFlavour =
Var(
"partonFlavour()", int, doc=
"flavour from parton matching"),
541 hadronFlavour =
Var(
"hadronFlavour()", int, doc=
"flavour from hadron ghost clustering"),
542 genJetIdx =
Var(
"?genJetFwdRef().backRef().isNonnull()?genJetFwdRef().backRef().key():-1", int, doc=
"index of matched gen jet"),
550 jetSequenceName =
"jet{}Sequence".
format(jetName)
551 setattr(proc, jetSequenceName, cms.Sequence(
552 getattr(proc,jetCorrFactors)+
553 getattr(proc,srcJets)+
554 getattr(proc,srcJetsWithUserData)+
555 getattr(proc,finalJetsForTable)
562 jetTableSequenceName =
"jet{}TablesSequence".
format(jetName)
563 setattr(proc, jetTableSequenceName, cms.Sequence(getattr(proc,jetTable)))
565 jetTableSequenceMCName =
"jet{}MCTablesSequence".
format(jetName)
566 setattr(proc, jetTableSequenceMCName, cms.Sequence(getattr(proc,jetMCTable)))
569 proc.nanoSequenceMC += getattr(proc,jetSequenceName)
570 proc.nanoSequenceMC += getattr(proc,jetTableSequenceName)
571 proc.nanoSequenceMC += getattr(proc,jetTableSequenceMCName)
573 proc.nanoSequence += getattr(proc,jetSequenceName)
574 proc.nanoSequence += getattr(proc,jetTableSequenceName)
580 proc =
AddJetID(proc, jetName=jetName, jetSrc=srcJets, jetTableName=jetTable, jetSequenceName=jetSequenceName)
582 proc =
AddPileUpJetIDVars(proc, jetName=jetName, jetSrc=srcJets, jetTableName=jetTable, jetSequenceName=jetSequenceName)
584 proc =
AddQGLTaggerVars(proc,jetName=jetName, jetSrc=srcJets, jetTableName=jetTable, jetSequenceName=jetSequenceName, calculateQGLVars=
True)
599 Recluster AK4 CHS jets and replace slimmedJets 600 that is used as default to save AK4 CHS jets 603 print(
"custom_jme_cff::ReclusterAK4CHSJets: Recluster AK4 PF CHS jets")
610 "inputCollection" :
"",
611 "genJetsCollection":
"AK4GenJetsNoNu",
612 "bTagDiscriminators": bTagDiscriminatorsForAK4,
615 recoJetInfo = recoJA.addRecoJetCollection(proc, **cfg)
617 jetName = recoJetInfo.jetUpper
618 patJetFinalColl = recoJetInfo.patJetFinalCollection
624 proc.jetCorrFactorsNano.src=patJetFinalColl
625 proc.updatedJets.jetSource=patJetFinalColl
632 finalJetsCut =
"(pt >= 8) || ((pt < 8) && (genJetFwdRef().backRef().isNonnull()))" 634 finalJetsCut =
"(pt >= 8)" 636 proc.finalJets.cut = finalJetsCut
640 proc.corrT1METJetTable.cut =
"pt>=8 && pt<15 && abs(eta)<9.9" 646 proc.jetTable.cut = jetTableCut
647 proc.jetMCTable.cut = jetTableCut
652 jetTableDoc =
"AK4 PF CHS jets with JECs applied. Jets with pt > 8 GeV are stored." 654 jetTableDoc +=
"For jets with pt < 8 GeV, only those matched to AK4 Gen jets are stored." 655 proc.jetTable.doc = jetTableDoc
660 proc.jetTable.variables.hfHEF = PFJETVARS.hfHEF
661 proc.jetTable.variables.hfEmEF = PFJETVARS.hfEmEF
662 proc.jetTable.variables.nConstChHads = PFJETVARS.nConstChHads
663 proc.jetTable.variables.nConstNeuHads = PFJETVARS.nConstNeuHads
664 proc.jetTable.variables.nConstHFHads = PFJETVARS.nConstHFHads
665 proc.jetTable.variables.nConstHFEMs = PFJETVARS.nConstHFEMs
666 proc.jetTable.variables.nConstMuons = PFJETVARS.nConstMuons
667 proc.jetTable.variables.nConstElecs = PFJETVARS.nConstElecs
668 proc.jetTable.variables.nConstPhotons = PFJETVARS.nConstPhotons
673 pileupJetId80X =
"pileupJetId80X" 674 setattr(proc, pileupJetId80X, pileupJetId.clone(
675 jets =
"updatedJets",
676 algos = cms.VPSet(_chsalgos_81x),
677 inputIsCorrected =
True,
679 vertexes =
"offlineSlimmedPrimaryVertices" 682 proc.jetSequence.insert(proc.jetSequence.index(proc.pileupJetId94X), getattr(proc, pileupJetId80X))
684 proc.updatedJetsWithUserData.userInts.puId80XfullId = cms.InputTag(
'pileupJetId80X:fullId')
685 run2_jme_2016.toModify(proc.updatedJetsWithUserData.userFloats, puId80XDisc = cms.InputTag(
"pileupJetId80X:fullDiscriminant"))
687 proc.jetTable.variables.puId =
Var(
"userInt('puId80XfullId')", int, doc=
"Pilup ID flags with 80X (2016) training")
688 run2_jme_2016.toModify(proc.jetTable.variables, puIdDisc =
Var(
"userFloat('puId80XDisc')",float,doc=
"Pilup ID discriminant with 80X (2016) training",precision=10))
695 jetSrc =
"updatedJets",
696 jetTableName =
"jetTable",
697 jetSequenceName =
"jetSequence" 703 proc.updatedJetsWithUserData.userFloats.qgl_axis2 = cms.InputTag(
"qgtagger:axis2")
704 proc.updatedJetsWithUserData.userFloats.qgl_ptD = cms.InputTag(
"qgtagger:ptD")
705 proc.updatedJetsWithUserData.userInts.qgl_mult = cms.InputTag(
"qgtagger:mult")
709 proc.jetTable.variables.qgl_axis2 = QGLVARS.qgl_axis2
710 proc.jetTable.variables.qgl_ptD = QGLVARS.qgl_ptD
711 proc.jetTable.variables.qgl_mult = QGLVARS.qgl_mult
715 proc.jetTable.variables.btagDeepB = BTAGVARS.btagDeepB
716 proc.jetTable.variables.btagCSVV2 = BTAGVARS.btagCSVV2
717 proc.jetTable.variables.btagDeepCvL = BTAGVARS.btagDeepCvL
718 proc.jetTable.variables.btagDeepCvB = BTAGVARS.btagDeepCvB
722 proc.jetTable.variables.btagDeepFlavB = DEEPJETVARS.btagDeepFlavB
723 proc.jetTable.variables.btagDeepFlavCvL = DEEPJETVARS.btagDeepFlavCvL
724 proc.jetTable.variables.btagDeepFlavCvB = DEEPJETVARS.btagDeepFlavCvB
728 proc.jetTable.variables.btagDeepFlavG = DEEPJETVARS.btagDeepFlavG
729 proc.jetTable.variables.btagDeepFlavUDS = DEEPJETVARS.btagDeepFlavUDS
730 proc.jetTable.variables.btagDeepFlavQG = DEEPJETVARS.btagDeepFlavQG
734 proc.jetTable.variables.particleNetAK4_B = PARTICLENETAK4VARS.particleNetAK4_B
735 proc.jetTable.variables.particleNetAK4_CvsL = PARTICLENETAK4VARS.particleNetAK4_CvsL
736 proc.jetTable.variables.particleNetAK4_CvsB = PARTICLENETAK4VARS.particleNetAK4_CvsB
737 proc.jetTable.variables.particleNetAK4_QvsG = PARTICLENETAK4VARS.particleNetAK4_QvsG
738 proc.jetTable.variables.particleNetAK4_puIdDisc = PARTICLENETAK4VARS.particleNetAK4_puIdDisc
742 hfJetShowerShapeforCustomNanoAOD =
"hfJetShowerShapeforCustomNanoAOD" 743 setattr(proc, hfJetShowerShapeforCustomNanoAOD, hfJetShowerShapeforNanoAOD.clone(jets=
"updatedJets",vertices=
"offlineSlimmedPrimaryVertices") )
744 proc.jetSequence.insert(proc.jetSequence.index(proc.updatedJetsWithUserData), getattr(proc, hfJetShowerShapeforCustomNanoAOD))
745 proc.updatedJetsWithUserData.userFloats.hfsigmaEtaEta = cms.InputTag(
'hfJetShowerShapeforCustomNanoAOD:sigmaEtaEta')
746 proc.updatedJetsWithUserData.userFloats.hfsigmaPhiPhi = cms.InputTag(
'hfJetShowerShapeforCustomNanoAOD:sigmaPhiPhi')
747 proc.updatedJetsWithUserData.userInts.hfcentralEtaStripSize = cms.InputTag(
'hfJetShowerShapeforCustomNanoAOD:centralEtaStripSize')
748 proc.updatedJetsWithUserData.userInts.hfadjacentEtaStripsSize = cms.InputTag(
'hfJetShowerShapeforCustomNanoAOD:adjacentEtaStripsSize')
749 proc.jetTable.variables.hfsigmaEtaEta =
Var(
"userFloat('hfsigmaEtaEta')",float,doc=
"sigmaEtaEta for HF jets (noise discriminating variable)",precision=10)
750 proc.jetTable.variables.hfsigmaPhiPhi =
Var(
"userFloat('hfsigmaPhiPhi')",float,doc=
"sigmaPhiPhi for HF jets (noise discriminating variable)",precision=10)
751 proc.jetTable.variables.hfcentralEtaStripSize =
Var(
"userInt('hfcentralEtaStripSize')", int, doc=
"eta size of the central tower strip in HF (noise discriminating variable) ")
752 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) ")
758 Store a separate AK8 Puppi jet collection for JEC studies. 759 Only minimal info are stored 761 print(
"custom_jme_cff::AddNewAK8PuppiJetsForJEC: Make a new AK8 PF Puppi jet collection for JEC studies")
767 "jet" :
"ak8pfpuppi",
768 "inputCollection" :
"",
769 "genJetsCollection":
"AK8GenJetsNoNu",
772 recoJetInfo = recoJA.addRecoJetCollection(proc, **cfg)
774 jetName = recoJetInfo.jetUpper
775 payload = recoJetInfo.jetCorrPayload
777 patJetFinalColl = recoJetInfo.patJetFinalCollection
778 jetTablePrefix =
"FatJetForJEC" 779 jetTableDoc =
"AK8 PF Puppi jets with JECs applied. Reclustered for JEC studies so only minimal info stored." 783 jetName, payload, patJetFinalColl, jetTablePrefix, jetTableDoc, doPF=
True,
784 doCalo=
False, ptcut=ptcut, doPUIDVar=
False, doQGL=
False, doBTag=
False, runOnMC=runOnMC
791 Store an AK8 CHS jet collection for JEC studies. 793 print(
"custom_jme_cff::AddNewAK8CHSJets: Make a new AK8 PF CHS jet collection for JEC studies")
800 "inputCollection" :
"",
801 "genJetsCollection":
"AK8GenJetsNoNu",
804 recoJetInfo = recoJA.addRecoJetCollection(proc, **cfg)
806 jetName = recoJetInfo.jetUpper
807 payload = recoJetInfo.jetCorrPayload
809 patJetFinalColl = recoJetInfo.patJetFinalCollection
810 jetTablePrefix =
"FatJetCHS" 811 jetTableDoc =
"AK8 PF CHS jets with JECs applied. Reclustered for JEC studies so only minimal info stored." 815 jetName, payload, patJetFinalColl, jetTablePrefix, jetTableDoc, doPF=
True,
816 doCalo=
False, ptcut=ptcut, doPUIDVar=
False, doQGL=
False, doBTag=
False, runOnMC=runOnMC
823 Add more variables for AK8 PFPUPPI jets 830 proc.fatJetTable.variables.chHEF =
Var(
"?isPFJet()?chargedHadronEnergyFraction():-1", float, doc=
"charged Hadron Energy Fraction", precision = 6)
831 proc.fatJetTable.variables.neHEF =
Var(
"?isPFJet()?neutralHadronEnergyFraction():-1", float, doc=
"neutral Hadron Energy Fraction", precision = 6)
832 proc.fatJetTable.variables.chEmEF =
Var(
"?isPFJet()?chargedEmEnergyFraction():-1", float, doc=
"charged Electromagnetic Energy Fraction", precision = 6)
833 proc.fatJetTable.variables.neEmEF =
Var(
"?isPFJet()?neutralEmEnergyFraction():-1", float, doc=
"neutral Electromagnetic Energy Fraction", precision = 6)
834 proc.fatJetTable.variables.muEF =
Var(
"?isPFJet()?muonEnergyFraction():-1", float, doc=
"muon Energy Fraction", precision = 6)
835 proc.fatJetTable.variables.hfHEF =
Var(
"?isPFJet()?HFHadronEnergyFraction():-1", float, doc=
"energy fraction in forward hadronic calorimeter", precision = 6)
836 proc.fatJetTable.variables.hfEmEF =
Var(
"?isPFJet()?HFEMEnergyFraction():-1", float, doc=
"energy fraction in forward EM calorimeter", precision = 6)
837 proc.fatJetTable.variables.nConstChHads =
Var(
"?isPFJet()?chargedHadronMultiplicity():-1",int, doc=
"number of charged hadrons in the jet")
838 proc.fatJetTable.variables.nConstNeuHads =
Var(
"?isPFJet()?neutralHadronMultiplicity():-1",int, doc=
"number of neutral hadrons in the jet")
839 proc.fatJetTable.variables.nConstHFHads =
Var(
"?isPFJet()?HFHadronMultiplicity():-1", int, doc=
"number of HF Hadrons in the jet")
840 proc.fatJetTable.variables.nConstHFEMs =
Var(
"?isPFJet()?HFEMMultiplicity():-1", int, doc=
"number of HF EMs in the jet")
841 proc.fatJetTable.variables.nConstMuons =
Var(
"?isPFJet()?muonMultiplicity():-1", int, doc=
"number of muons in the jet")
842 proc.fatJetTable.variables.nConstElecs =
Var(
"?isPFJet()?electronMultiplicity():-1", int, doc=
"number of electrons in the jet")
843 proc.fatJetTable.variables.nConstPhotons =
Var(
"?isPFJet()?photonMultiplicity():-1", int, doc=
"number of photons in the jet")
855 Add genJet into custom nanoAOD 858 genJetName = genJetInfo.jetUpper
859 genJetAlgo = genJetInfo.jetAlgo
860 genJetSize = genJetInfo.jetSize
861 genJetSizeNr = genJetInfo.jetSizeNr
862 genJetFinalColl =
"{}{}{}".
format(genJetAlgo.upper(), genJetSize,
"GenJetsNoNu")
863 genJetTablePrefix = nanoInfo_genjets[genJetInfo.jet][
"name"]
864 genJetTableDoc = nanoInfo_genjets[genJetInfo.jet][
"doc"]
866 SaveGenJets(proc, genJetName, genJetAlgo, genJetSizeNr, genJetFinalColl, genJetTablePrefix, genJetTableDoc, runOnMC=
False)
870 def SaveGenJets(proc, genJetName, genJetAlgo, genJetSizeNr, genJetFinalColl, genJetTablePrefix, genJetTableDoc, runOnMC=False):
872 Schedule modules for a given genJet collection and save its variables into custom NanoAOD 875 genJetTableThisJet =
"jet{}Table".
format(genJetName)
876 setattr(proc, genJetTableThisJet, genJetTable.clone(
877 src = genJetFinalColl,
879 name = genJetTablePrefix,
880 doc = genJetTableDoc,
881 variables = GENJETVARS
885 genJetFlavourAssociationThisJet =
"genJet{}FlavourAssociation".
format(genJetName)
886 setattr(proc, genJetFlavourAssociationThisJet, genJetFlavourAssociation.clone(
887 jets = getattr(proc,genJetTableThisJet).src,
888 jetAlgorithm = supportedJetAlgos[genJetAlgo],
889 rParam = genJetSizeNr,
893 genJetFlavourTableThisJet =
"genJet{}FlavourTable".
format(genJetName)
894 setattr(proc, genJetFlavourTableThisJet, genJetFlavourTable.clone(
895 name = getattr(proc,genJetTableThisJet).name,
896 src = getattr(proc,genJetTableThisJet).src,
897 cut = getattr(proc,genJetTableThisJet).cut,
898 jetFlavourInfos = genJetFlavourAssociationThisJet,
902 genJetSequenceName =
"genJet{}Sequence".
format(genJetName)
903 setattr(proc, genJetSequenceName, cms.Sequence(
904 getattr(proc,genJetTableThisJet)+
905 getattr(proc,genJetFlavourAssociationThisJet)+
906 getattr(proc,genJetFlavourTableThisJet)
909 proc.nanoSequenceMC.insert(proc.nanoSequenceMC.index(proc.jetMC)+1, getattr(proc,genJetSequenceName))
915 Recluster AK4 Gen jets and replace 916 slimmedGenJets that is used as default 917 to save AK4 Gen jets in NanoAODs. 919 print(
"custom_jme_cff::ReclusterAK4GenJets: Recluster AK4 Gen jets")
927 genJetInfo = genJA.addGenJetCollection(proc, **cfg)
929 genJetName = genJetInfo.jetUpper
930 genJetAlgo = genJetInfo.jetAlgo
931 genJetSize = genJetInfo.jetSize
932 genJetSizeNr = genJetInfo.jetSizeNr
933 selectedGenJets =
"{}{}{}".
format(genJetAlgo.upper(), genJetSize,
"GenJetsNoNu")
939 proc.genJetTable.src = selectedGenJets
940 proc.genJetTable.cut =
"" 941 proc.genJetTable.doc =
"AK4 Gen jets (made with visible genparticles) with pt > 3 GeV" 943 genJetFlavourAssociationThisJet =
"genJet{}FlavourAssociation".
format(genJetName)
944 setattr(proc, genJetFlavourAssociationThisJet, genJetFlavourAssociation.clone(
945 jets = proc.genJetTable.src,
946 jetAlgorithm = supportedJetAlgos[genJetAlgo],
947 rParam = genJetSizeNr,
950 proc.jetMC.insert(proc.jetMC.index(proc.genJetFlavourTable), getattr(proc, genJetFlavourAssociationThisJet))
955 Make a separate AK8 Gen jet collection for JEC studies. 957 print(
"custom_jme_cff::AddNewAK8GenJetsForJEC: Add new AK8 Gen jets for JEC studies")
965 genJetInfo = genJA.addGenJetCollection(proc, **cfg)
967 genJetName = genJetInfo.jetUpper
968 genJetAlgo = genJetInfo.jetAlgo
969 genJetSize = genJetInfo.jetSize
970 genJetSizeNr = genJetInfo.jetSizeNr
971 genJetFinalColl =
"{}{}{}".
format(genJetAlgo.upper(), genJetSize,
"GenJetsNoNu")
972 genJetTablePrefix =
"GenJetAK8ForJEC" 973 genJetTableDoc =
"AK8 Gen jets (made with visible genparticles) with pt > 3 GeV. Reclustered for JEC studies." 975 SaveGenJets(proc, genJetName, genJetAlgo, genJetSizeNr, genJetFinalColl, genJetTablePrefix, genJetTableDoc, runOnMC=
False)
980 proc.genJetTable.variables.nConstituents = GENJETVARS.nConstituents
984 proc.genJetAK8Table.variables.nConstituents = GENJETVARS.nConstituents
994 Remove default pt cuts for all jets set in jets_cff.py 997 proc.finalJets.cut =
"" 998 proc.finalJetsAK8.cut =
"" 999 proc.genJetTable.cut =
"" 1000 proc.genJetFlavourTable.cut =
"" 1001 proc.genJetAK8Table.cut =
"" 1002 proc.genJetAK8FlavourTable.cut =
"" 1023 genJA = GenJetAdder()
1041 for jetConfig
in config_genjets:
1042 cfg = { k : v
for k, v
in jetConfig.items()
if k !=
"enabled"}
1043 genJetInfo = genJA.addGenJetCollection(process, **cfg)
1051 recoJA = RecoJetAdder(runOnMC=runOnMC)
1071 for jetConfig
in config_recojets:
1072 cfg = { k : v
for k, v
in jetConfig.items()
if k !=
"enabled"}
1073 recoJetInfo = recoJA.addRecoJetCollection(process, **cfg)
1080 process.puTable.savePtHatMax =
True 1086 process.genWeightsTable.keepAllPSWeights =
True
def AddBTaggingScores(proc, jetTableName="")
def ReclusterAK4CHSJets(proc, recoJA, runOnMC)
def AddJetID(proc, jetName="", jetSrc="", jetTableName="", jetSequenceName="")
def AddQGLTaggerVars(proc, jetName="", jetSrc="", jetTableName="", jetSequenceName="", calculateQGLVars=False)
def RemoveAllJetPtCuts(proc)
def PrepJMECustomNanoAOD(process, runOnMC)
def AddNewPatJets(proc, recoJetInfo, runOnMC)
S & print(S &os, JobReport::InputFile const &f)
def Var(expr, valtype, compression=None, doc=None, mcOnly=False, precision=-1)
def ReclusterAK4GenJets(proc, genJA)
def AddNewAK8CHSJets(proc, recoJA, runOnMC)
def AddNewAK8GenJetsForJEC(proc, genJA)
def AddDeepJetGluonLQuarkScores(proc, jetTableName="")
bool insert(Storage &iStorage, ItemType *iItem, const IdTag &iIdTag)
def SavePatJets(proc, jetName, payload, patJetFinalColl, jetTablePrefix, jetTableDoc, doPF, doCalo, ptcut="", doPUIDVar=False, doQGL=False, doBTag=False, runOnMC=False)
def AddPileUpJetIDVars(proc, jetName="", jetSrc="", jetTableName="", jetSequenceName="")
def AddNewAK8PuppiJetsForJEC(proc, recoJA, runOnMC)
def AddNewGenJets(proc, genJetInfo)
def SaveGenJets(proc, genJetName, genJetAlgo, genJetSizeNr, genJetFinalColl, genJetTablePrefix, genJetTableDoc, runOnMC=False)
def AddVariablesForAK4GenJets(proc)
def AddVariablesForAK8PuppiJets(proc)
def AddParticleNetAK4Scores(proc, jetTableName="")
def AddVariablesForAK8GenJets(proc)
def PrepJMECustomNanoAOD_MC(process)
def PrepJMECustomNanoAOD_Data(process)
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger list("!*","!HLTx*"if it matches 2 triggers or more) will accept the event if all the matching triggers are FAIL.It will reject the event if any of the triggers are PASS or EXCEPTION(this matches the behavior of"!*"before the partial wildcard feature was incorporated).Triggers which are in the READY state are completely ignored.(READY should never be returned since the trigger paths have been run