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 proc.updatedJetsWithUserData.userFloats.puId80XDisc = cms.InputTag(
"pileupJetId80X:fullDiscriminant")
687 run2_nanoAOD_94X2016.toModify(proc.jetTable.variables, puIdDisc =
Var(
"userFloat('puId80XDisc')",float,doc=
"Pileup ID discriminant with 80X (2016) training",precision=10))
689 for modifier
in run2_nanoAOD_94X2016, run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2, run2_nanoAOD_102Xv1:
690 modifier.toModify(proc.jetTable.variables, puId =
Var(
"userInt('puId80XfullId')", int, doc=
"Pileup ID flags with 80X (2016) training"))
695 proc.updatedJetsWithUserData.userFloats.chFPV1EF = cms.InputTag(
"jercVars:chargedFromPV1EnergyFraction")
696 proc.updatedJetsWithUserData.userFloats.chFPV2EF = cms.InputTag(
"jercVars:chargedFromPV2EnergyFraction")
697 proc.updatedJetsWithUserData.userFloats.chFPV3EF = cms.InputTag(
"jercVars:chargedFromPV3EnergyFraction")
698 proc.jetTable.variables.chFPV1EF =
Var(
"userFloat('chFPV1EF')", float, doc=
"charged fromPV==1 Energy Fraction (component of the total charged Energy Fraction).", precision= 6)
699 proc.jetTable.variables.chFPV2EF =
Var(
"userFloat('chFPV2EF')", float, doc=
"charged fromPV==2 Energy Fraction (component of the total charged Energy Fraction).", precision= 6)
700 proc.jetTable.variables.chFPV3EF =
Var(
"userFloat('chFPV3EF')", float, doc=
"charged fromPV==3 Energy Fraction (component of the total charged Energy Fraction).", precision= 6)
707 jetSrc =
"updatedJets",
708 jetTableName =
"jetTable",
709 jetSequenceName =
"jetSequence" 715 proc.updatedJetsWithUserData.userFloats.qgl_axis2 = cms.InputTag(
"qgtagger:axis2")
716 proc.updatedJetsWithUserData.userFloats.qgl_ptD = cms.InputTag(
"qgtagger:ptD")
717 proc.updatedJetsWithUserData.userInts.qgl_mult = cms.InputTag(
"qgtagger:mult")
721 proc.jetTable.variables.qgl_axis2 = QGLVARS.qgl_axis2
722 proc.jetTable.variables.qgl_ptD = QGLVARS.qgl_ptD
723 proc.jetTable.variables.qgl_mult = QGLVARS.qgl_mult
727 proc.jetTable.variables.btagDeepB = BTAGVARS.btagDeepB
728 proc.jetTable.variables.btagCSVV2 = BTAGVARS.btagCSVV2
729 proc.jetTable.variables.btagDeepCvL = BTAGVARS.btagDeepCvL
730 proc.jetTable.variables.btagDeepCvB = BTAGVARS.btagDeepCvB
734 proc.jetTable.variables.btagDeepFlavB = DEEPJETVARS.btagDeepFlavB
735 proc.jetTable.variables.btagDeepFlavCvL = DEEPJETVARS.btagDeepFlavCvL
736 proc.jetTable.variables.btagDeepFlavCvB = DEEPJETVARS.btagDeepFlavCvB
740 proc.jetTable.variables.btagDeepFlavG = DEEPJETVARS.btagDeepFlavG
741 proc.jetTable.variables.btagDeepFlavUDS = DEEPJETVARS.btagDeepFlavUDS
742 proc.jetTable.variables.btagDeepFlavQG = DEEPJETVARS.btagDeepFlavQG
746 proc.jetTable.variables.particleNetAK4_B = PARTICLENETAK4VARS.particleNetAK4_B
747 proc.jetTable.variables.particleNetAK4_CvsL = PARTICLENETAK4VARS.particleNetAK4_CvsL
748 proc.jetTable.variables.particleNetAK4_CvsB = PARTICLENETAK4VARS.particleNetAK4_CvsB
749 proc.jetTable.variables.particleNetAK4_QvsG = PARTICLENETAK4VARS.particleNetAK4_QvsG
750 proc.jetTable.variables.particleNetAK4_puIdDisc = PARTICLENETAK4VARS.particleNetAK4_puIdDisc
754 hfJetShowerShapeforCustomNanoAOD =
"hfJetShowerShapeforCustomNanoAOD" 755 setattr(proc, hfJetShowerShapeforCustomNanoAOD, hfJetShowerShapeforNanoAOD.clone(jets=
"updatedJets",vertices=
"offlineSlimmedPrimaryVertices") )
756 proc.jetSequence.insert(proc.jetSequence.index(proc.updatedJetsWithUserData), getattr(proc, hfJetShowerShapeforCustomNanoAOD))
757 proc.updatedJetsWithUserData.userFloats.hfsigmaEtaEta = cms.InputTag(
'hfJetShowerShapeforCustomNanoAOD:sigmaEtaEta')
758 proc.updatedJetsWithUserData.userFloats.hfsigmaPhiPhi = cms.InputTag(
'hfJetShowerShapeforCustomNanoAOD:sigmaPhiPhi')
759 proc.updatedJetsWithUserData.userInts.hfcentralEtaStripSize = cms.InputTag(
'hfJetShowerShapeforCustomNanoAOD:centralEtaStripSize')
760 proc.updatedJetsWithUserData.userInts.hfadjacentEtaStripsSize = cms.InputTag(
'hfJetShowerShapeforCustomNanoAOD:adjacentEtaStripsSize')
761 proc.jetTable.variables.hfsigmaEtaEta =
Var(
"userFloat('hfsigmaEtaEta')",float,doc=
"sigmaEtaEta for HF jets (noise discriminating variable)",precision=10)
762 proc.jetTable.variables.hfsigmaPhiPhi =
Var(
"userFloat('hfsigmaPhiPhi')",float,doc=
"sigmaPhiPhi for HF jets (noise discriminating variable)",precision=10)
763 proc.jetTable.variables.hfcentralEtaStripSize =
Var(
"userInt('hfcentralEtaStripSize')", int, doc=
"eta size of the central tower strip in HF (noise discriminating variable) ")
764 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) ")
770 Store a separate AK8 Puppi jet collection for JEC studies. 771 Only minimal info are stored 773 print(
"custom_jme_cff::AddNewAK8PuppiJetsForJEC: Make a new AK8 PF Puppi jet collection for JEC studies")
779 "jet" :
"ak8pfpuppi",
780 "inputCollection" :
"",
781 "genJetsCollection":
"AK8GenJetsNoNu",
784 recoJetInfo = recoJA.addRecoJetCollection(proc, **cfg)
786 jetName = recoJetInfo.jetUpper
787 payload = recoJetInfo.jetCorrPayload
789 patJetFinalColl = recoJetInfo.patJetFinalCollection
790 jetTablePrefix =
"FatJetForJEC" 791 jetTableDoc =
"AK8 PF Puppi jets with JECs applied. Reclustered for JEC studies so only minimal info stored." 795 jetName, payload, patJetFinalColl, jetTablePrefix, jetTableDoc, doPF=
True,
796 doCalo=
False, ptcut=ptcut, doPUIDVar=
False, doQGL=
False, doBTag=
False, runOnMC=runOnMC
803 Store an AK8 CHS jet collection for JEC studies. 805 print(
"custom_jme_cff::AddNewAK8CHSJets: Make a new AK8 PF CHS jet collection for JEC studies")
812 "inputCollection" :
"",
813 "genJetsCollection":
"AK8GenJetsNoNu",
816 recoJetInfo = recoJA.addRecoJetCollection(proc, **cfg)
818 jetName = recoJetInfo.jetUpper
819 payload = recoJetInfo.jetCorrPayload
821 patJetFinalColl = recoJetInfo.patJetFinalCollection
822 jetTablePrefix =
"FatJetCHS" 823 jetTableDoc =
"AK8 PF CHS jets with JECs applied. Reclustered for JEC studies so only minimal info stored." 827 jetName, payload, patJetFinalColl, jetTablePrefix, jetTableDoc, doPF=
True,
828 doCalo=
False, ptcut=ptcut, doPUIDVar=
False, doQGL=
False, doBTag=
False, runOnMC=runOnMC
835 Add more variables for AK8 PFPUPPI jets 842 proc.fatJetTable.variables.chHEF =
Var(
"?isPFJet()?chargedHadronEnergyFraction():-1", float, doc=
"charged Hadron Energy Fraction", precision = 6)
843 proc.fatJetTable.variables.neHEF =
Var(
"?isPFJet()?neutralHadronEnergyFraction():-1", float, doc=
"neutral Hadron Energy Fraction", precision = 6)
844 proc.fatJetTable.variables.chEmEF =
Var(
"?isPFJet()?chargedEmEnergyFraction():-1", float, doc=
"charged Electromagnetic Energy Fraction", precision = 6)
845 proc.fatJetTable.variables.neEmEF =
Var(
"?isPFJet()?neutralEmEnergyFraction():-1", float, doc=
"neutral Electromagnetic Energy Fraction", precision = 6)
846 proc.fatJetTable.variables.muEF =
Var(
"?isPFJet()?muonEnergyFraction():-1", float, doc=
"muon Energy Fraction", precision = 6)
847 proc.fatJetTable.variables.hfHEF =
Var(
"?isPFJet()?HFHadronEnergyFraction():-1", float, doc=
"energy fraction in forward hadronic calorimeter", precision = 6)
848 proc.fatJetTable.variables.hfEmEF =
Var(
"?isPFJet()?HFEMEnergyFraction():-1", float, doc=
"energy fraction in forward EM calorimeter", precision = 6)
849 proc.fatJetTable.variables.nConstChHads =
Var(
"?isPFJet()?chargedHadronMultiplicity():-1",int, doc=
"number of charged hadrons in the jet")
850 proc.fatJetTable.variables.nConstNeuHads =
Var(
"?isPFJet()?neutralHadronMultiplicity():-1",int, doc=
"number of neutral hadrons in the jet")
851 proc.fatJetTable.variables.nConstHFHads =
Var(
"?isPFJet()?HFHadronMultiplicity():-1", int, doc=
"number of HF Hadrons in the jet")
852 proc.fatJetTable.variables.nConstHFEMs =
Var(
"?isPFJet()?HFEMMultiplicity():-1", int, doc=
"number of HF EMs in the jet")
853 proc.fatJetTable.variables.nConstMuons =
Var(
"?isPFJet()?muonMultiplicity():-1", int, doc=
"number of muons in the jet")
854 proc.fatJetTable.variables.nConstElecs =
Var(
"?isPFJet()?electronMultiplicity():-1", int, doc=
"number of electrons in the jet")
855 proc.fatJetTable.variables.nConstPhotons =
Var(
"?isPFJet()?photonMultiplicity():-1", int, doc=
"number of photons in the jet")
867 Add genJet into custom nanoAOD 870 genJetName = genJetInfo.jetUpper
871 genJetAlgo = genJetInfo.jetAlgo
872 genJetSize = genJetInfo.jetSize
873 genJetSizeNr = genJetInfo.jetSizeNr
874 genJetFinalColl =
"{}{}{}".
format(genJetAlgo.upper(), genJetSize,
"GenJetsNoNu")
875 genJetTablePrefix = nanoInfo_genjets[genJetInfo.jet][
"name"]
876 genJetTableDoc = nanoInfo_genjets[genJetInfo.jet][
"doc"]
878 SaveGenJets(proc, genJetName, genJetAlgo, genJetSizeNr, genJetFinalColl, genJetTablePrefix, genJetTableDoc, runOnMC=
False)
882 def SaveGenJets(proc, genJetName, genJetAlgo, genJetSizeNr, genJetFinalColl, genJetTablePrefix, genJetTableDoc, runOnMC=False):
884 Schedule modules for a given genJet collection and save its variables into custom NanoAOD 887 genJetTableThisJet =
"jet{}Table".
format(genJetName)
888 setattr(proc, genJetTableThisJet, genJetTable.clone(
889 src = genJetFinalColl,
891 name = genJetTablePrefix,
892 doc = genJetTableDoc,
893 variables = GENJETVARS
897 genJetFlavourAssociationThisJet =
"genJet{}FlavourAssociation".
format(genJetName)
898 setattr(proc, genJetFlavourAssociationThisJet, genJetFlavourAssociation.clone(
899 jets = getattr(proc,genJetTableThisJet).src,
900 jetAlgorithm = supportedJetAlgos[genJetAlgo],
901 rParam = genJetSizeNr,
905 genJetFlavourTableThisJet =
"genJet{}FlavourTable".
format(genJetName)
906 setattr(proc, genJetFlavourTableThisJet, genJetFlavourTable.clone(
907 name = getattr(proc,genJetTableThisJet).name,
908 src = getattr(proc,genJetTableThisJet).src,
909 cut = getattr(proc,genJetTableThisJet).cut,
910 jetFlavourInfos = genJetFlavourAssociationThisJet,
914 genJetSequenceName =
"genJet{}Sequence".
format(genJetName)
915 setattr(proc, genJetSequenceName, cms.Sequence(
916 getattr(proc,genJetTableThisJet)+
917 getattr(proc,genJetFlavourAssociationThisJet)+
918 getattr(proc,genJetFlavourTableThisJet)
921 proc.nanoSequenceMC.insert(proc.nanoSequenceMC.index(proc.jetMC)+1, getattr(proc,genJetSequenceName))
927 Recluster AK4 Gen jets and replace 928 slimmedGenJets that is used as default 929 to save AK4 Gen jets in NanoAODs. 931 print(
"custom_jme_cff::ReclusterAK4GenJets: Recluster AK4 Gen jets")
939 genJetInfo = genJA.addGenJetCollection(proc, **cfg)
941 genJetName = genJetInfo.jetUpper
942 genJetAlgo = genJetInfo.jetAlgo
943 genJetSize = genJetInfo.jetSize
944 genJetSizeNr = genJetInfo.jetSizeNr
945 selectedGenJets =
"{}{}{}".
format(genJetAlgo.upper(), genJetSize,
"GenJetsNoNu")
951 proc.genJetTable.src = selectedGenJets
952 proc.genJetTable.cut =
"" 953 proc.genJetTable.doc =
"AK4 Gen jets (made with visible genparticles) with pt > 3 GeV" 955 genJetFlavourAssociationThisJet =
"genJet{}FlavourAssociation".
format(genJetName)
956 setattr(proc, genJetFlavourAssociationThisJet, genJetFlavourAssociation.clone(
957 jets = proc.genJetTable.src,
958 jetAlgorithm = supportedJetAlgos[genJetAlgo],
959 rParam = genJetSizeNr,
962 proc.jetMC.insert(proc.jetMC.index(proc.genJetFlavourTable), getattr(proc, genJetFlavourAssociationThisJet))
967 Make a separate AK8 Gen jet collection for JEC studies. 969 print(
"custom_jme_cff::AddNewAK8GenJetsForJEC: Add new AK8 Gen jets for JEC studies")
977 genJetInfo = genJA.addGenJetCollection(proc, **cfg)
979 genJetName = genJetInfo.jetUpper
980 genJetAlgo = genJetInfo.jetAlgo
981 genJetSize = genJetInfo.jetSize
982 genJetSizeNr = genJetInfo.jetSizeNr
983 genJetFinalColl =
"{}{}{}".
format(genJetAlgo.upper(), genJetSize,
"GenJetsNoNu")
984 genJetTablePrefix =
"GenJetAK8ForJEC" 985 genJetTableDoc =
"AK8 Gen jets (made with visible genparticles) with pt > 3 GeV. Reclustered for JEC studies." 987 SaveGenJets(proc, genJetName, genJetAlgo, genJetSizeNr, genJetFinalColl, genJetTablePrefix, genJetTableDoc, runOnMC=
False)
992 proc.genJetTable.variables.nConstituents = GENJETVARS.nConstituents
996 proc.genJetAK8Table.variables.nConstituents = GENJETVARS.nConstituents
1006 Remove default pt cuts for all jets set in jets_cff.py 1009 proc.finalJets.cut =
"" 1010 proc.finalJetsAK8.cut =
"" 1011 proc.genJetTable.cut =
"" 1012 proc.genJetFlavourTable.cut =
"" 1013 proc.genJetAK8Table.cut =
"" 1014 proc.genJetAK8FlavourTable.cut =
"" 1035 genJA = GenJetAdder()
1053 for jetConfig
in config_genjets:
1054 cfg = { k : v
for k, v
in jetConfig.items()
if k !=
"enabled"}
1055 genJetInfo = genJA.addGenJetCollection(process, **cfg)
1063 recoJA = RecoJetAdder(runOnMC=runOnMC)
1083 for jetConfig
in config_recojets:
1084 cfg = { k : v
for k, v
in jetConfig.items()
if k !=
"enabled"}
1085 recoJetInfo = recoJA.addRecoJetCollection(process, **cfg)
1092 process.puTable.savePtHatMax =
True 1098 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