1 import FWCore.ParameterSet.Config
as cms
4 from PhysicsTools.NanoAOD.simplePATJetFlatTableProducer_cfi
import simplePATJetFlatTableProducer
6 from RecoJets.JetProducers.hfJetShowerShape_cfi
import hfJetShowerShape
15 from PhysicsTools.PatAlgos.tools.jetCollectionTools
import GenJetAdder, RecoJetAdder
19 bTagCSVV2 = [
'pfCombinedInclusiveSecondaryVertexV2BJetTags']
20 bTagDeepCSV = [
'pfDeepCSVJetTags:probb',
'pfDeepCSVJetTags:probbb',
'pfDeepCSVJetTags:probc',
'pfDeepCSVJetTags:probudsg']
22 'pfDeepFlavourJetTags:probb',
'pfDeepFlavourJetTags:probbb',
'pfDeepFlavourJetTags:problepb',
23 'pfDeepFlavourJetTags:probc',
'pfDeepFlavourJetTags:probuds',
'pfDeepFlavourJetTags:probg' 26 from RecoBTag.ONNXRuntime.pfParticleNetFromMiniAODAK4_cff
import _pfParticleNetFromMiniAODAK4PuppiCentralJetTagsAll
27 from RecoBTag.ONNXRuntime.pfParticleNetFromMiniAODAK4_cff
import _pfParticleNetFromMiniAODAK4PuppiForwardJetTagsAll
30 bTagDiscriminatorsForAK4 = cms.PSet(foo = cms.vstring(
32 _pfParticleNetFromMiniAODAK4PuppiCentralJetTagsAll+_pfParticleNetFromMiniAODAK4PuppiForwardJetTagsAll+
33 _pfParticleTransformerAK4JetTagsAll + _pfUnifiedParticleTransformerAK4JetTagsAll
35 run2_nanoAOD_ANY.toModify(
36 bTagDiscriminatorsForAK4,
37 foo = bTagCSVV2+bTagDeepCSV+bTagDeepJet+_pfParticleNetAK4JetTagsAll
39 bTagDiscriminatorsForAK4 = bTagDiscriminatorsForAK4.foo.value()
44 btagHbb = [
'pfBoostedDoubleSecondaryVertexAK8BJetTags']
46 'pfDeepDoubleBvLJetTags:probHbb',
47 'pfDeepDoubleCvLJetTags:probHcc',
48 'pfDeepDoubleCvBJetTags:probHcc',
49 'pfMassIndependentDeepDoubleBvLJetTags:probHbb',
50 'pfMassIndependentDeepDoubleCvLJetTags:probHcc',
51 'pfMassIndependentDeepDoubleCvBJetTags:probHcc' 54 'pfMassIndependentDeepDoubleBvLV2JetTags:probHbb',
55 'pfMassIndependentDeepDoubleCvLV2JetTags:probHcc',
56 'pfMassIndependentDeepDoubleCvBV2JetTags:probHcc' 71 config_genjets = list(
filter(
lambda k: k[
'enabled'], config_genjets))
78 "doc" :
"AK6 Gen jets (made with visible genparticles) with pt > 3 GeV",
92 "inputCollection" :
"slimmedCaloJets",
93 "genJetsCollection":
"AK4GenJetsNoNu",
98 "inputCollection" :
"",
99 "genJetsCollection":
"AK4GenJetsNoNu",
105 "inputCollection" :
"",
106 "genJetsCollection":
"AK8GenJetsNoNu",
110 config_recojets = list(
filter(
lambda k: k[
'enabled'], config_recojets))
114 nanoInfo_recojets = {
117 "doc" :
"AK4 Calo jets (slimmedCaloJets)",
121 "doc" :
"AK4 PF jets",
126 "doc" :
"AK8 PF jets",
131 GENJETVARS = cms.PSet(P4Vars,
132 nConstituents = jetPuppiTable.variables.nConstituents,
134 PFJETVARS = cms.PSet(P4Vars,
135 rawFactor = jetPuppiTable.variables.rawFactor,
136 area = jetPuppiTable.variables.area,
137 chHEF = jetPuppiTable.variables.chHEF,
138 neHEF = jetPuppiTable.variables.neHEF,
139 chEmEF = jetPuppiTable.variables.chEmEF,
140 neEmEF = jetPuppiTable.variables.neEmEF,
141 muEF = jetPuppiTable.variables.muEF,
142 hfHEF =
Var(
"HFHadronEnergyFraction()",float,doc=
"hadronic Energy Fraction in HF",precision= 6),
143 hfEmEF =
Var(
"HFEMEnergyFraction()",float,doc=
"electromagnetic Energy Fraction in HF",precision= 6),
144 nMuons = jetPuppiTable.variables.nMuons,
145 nElectrons = jetPuppiTable.variables.nElectrons,
146 nConstituents = jetPuppiTable.variables.nConstituents,
147 chHadMultiplicity =
Var(
"chargedHadronMultiplicity()",
"int16",doc=
"(Puppi-weighted) number of charged hadrons in the jet"),
148 neHadMultiplicity =
Var(
"neutralHadronMultiplicity()",
"int16",doc=
"(Puppi-weighted) number of neutral hadrons in the jet"),
149 hfHadMultiplicity =
Var(
"HFHadronMultiplicity()",
"int16",doc=
"(Puppi-weighted) number of HF hadrons in the jet"),
150 hfEMMultiplicity =
Var(
"HFEMMultiplicity()",
"int16",doc=
"(Puppi-weighted) number of HF EMs in the jet"),
151 muMultiplicity =
Var(
"muonMultiplicity()",
"int16",doc=
"(Puppi-weighted) number of muons in the jet"),
152 elMultiplicity =
Var(
"electronMultiplicity()",
"int16",doc=
"(Puppi-weighted) number of electrons in the jet"),
153 phoMultiplicity =
Var(
"photonMultiplicity()",
"int16",doc=
"(Puppi-weighted) number of photons in the jet"),
155 partonFlavour =
Var(
"partonFlavour()",
"int16", doc=
"flavour from parton matching"),
156 hadronFlavour =
Var(
"hadronFlavour()",
"uint8", doc=
"flavour from hadron ghost clustering"),
157 genJetIdx =
Var(
"?genJetFwdRef().backRef().isNonnull()?genJetFwdRef().backRef().key():-1",
"int16", doc=
"index of matched gen 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=14),
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=14),
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=14),
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=14),
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=14),
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=14),
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=14),
167 puId_ptD =
Var(
"?(pt>=10)?userFloat('puId_ptD'):-1",float,doc=
"pT-weighted average pT of constituents (PileUp ID BDT input variable)", precision=14),
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=14),
169 puId_pull =
Var(
"?(pt>=10)?userFloat('puId_pull'):-1",float,doc=
"magnitude of pull vector (PileUp ID BDT input variable)", precision=14),
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=14),
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=14),
172 puId_nCharged =
Var(
"?(pt>=10)?userInt('puId_nCharged'):-1",
"int16",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=14),
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=14),
177 qgl_mult =
Var(
"?(pt>=10)?userInt('qgl_mult'):-1",
"int16",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 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),
182 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),
184 DEEPJETVARS = cms.PSet(
185 btagDeepFlavB =
Var(
"?(pt>=15)?bDiscriminator('pfDeepFlavourJetTags:probb')+bDiscriminator('pfDeepFlavourJetTags:probbb')+bDiscriminator('pfDeepFlavourJetTags:problepb'):-1",float,doc=
"DeepJet b+bb+lepb tag discriminator",precision=10),
186 btagDeepFlavC =
Var(
"?(pt>=15)?bDiscriminator('pfDeepFlavourJetTags:probc'):-1",float,doc=
"DeepFlavour charm tag raw score",precision=10),
187 btagDeepFlavG =
Var(
"?(pt>=15)?bDiscriminator('pfDeepFlavourJetTags:probg'):-1",float,doc=
"DeepFlavour gluon tag raw score",precision=10),
188 btagDeepFlavUDS =
Var(
"?(pt>=15)?bDiscriminator('pfDeepFlavourJetTags:probuds'):-1",float,doc=
"DeepFlavour uds tag raw score",precision=10),
189 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),
190 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),
191 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),
193 ROBUSTPARTAK4VARS = cms.PSet(
194 btagRobustParTAK4B =
Var(
"?(pt>=15)?bDiscriminator('pfParticleTransformerAK4JetTags:probb')+bDiscriminator('pfParticleTransformerAK4JetTags:probbb')+bDiscriminator('pfParticleTransformerAK4JetTags:problepb'):-1",float,doc=
"RobustParTAK4 b+bb+lepb tag discriminator",precision=10),
195 btagRobustParTAK4C =
Var(
"?(pt>=15)?bDiscriminator('pfParticleTransformerAK4JetTags:probc'):-1",float,doc=
"RobustParTAK4 charm tag raw score",precision=10),
196 btagRobustParTAK4G =
Var(
"?(pt>=15)?bDiscriminator('pfParticleTransformerAK4JetTags:probg'):-1",float,doc=
"RobustParTAK4 gluon tag raw score",precision=10),
197 btagRobustParTAK4UDS =
Var(
"?(pt>=15)?bDiscriminator('pfParticleTransformerAK4JetTags:probuds'):-1",float,doc=
"RobustParTAK4 uds tag raw score",precision=10),
198 btagRobustParTAK4CvL =
Var(
"?(pt>=15)&&(bDiscriminator('pfParticleTransformerAK4JetTags:probc')+bDiscriminator('pfParticleTransformerAK4JetTags:probuds')+bDiscriminator('pfParticleTransformerAK4JetTags:probg'))>0?bDiscriminator('pfParticleTransformerAK4JetTags:probc')/(bDiscriminator('pfParticleTransformerAK4JetTags:probc')+bDiscriminator('pfParticleTransformerAK4JetTags:probuds')+bDiscriminator('pfParticleTransformerAK4JetTags:probg')):-1",float,doc=
"RobustParTAK4 c vs uds+g discriminator",precision=10),
199 btagRobustParTAK4CvB =
Var(
"?(pt>=15)&&(bDiscriminator('pfParticleTransformerAK4JetTags:probc')+bDiscriminator('pfParticleTransformerAK4JetTags:probb')+bDiscriminator('pfParticleTransformerAK4JetTags:probbb')+bDiscriminator('pfParticleTransformerAK4JetTags:problepb'))>0?bDiscriminator('pfParticleTransformerAK4JetTags:probc')/(bDiscriminator('pfParticleTransformerAK4JetTags:probc')+bDiscriminator('pfParticleTransformerAK4JetTags:probb')+bDiscriminator('pfParticleTransformerAK4JetTags:probbb')+bDiscriminator('pfParticleTransformerAK4JetTags:problepb')):-1",float,doc=
"RobustParTAK4 c vs b+bb+lepb discriminator",precision=10),
200 btagRobustParTAK4QG =
Var(
"?(pt>=15)&&(bDiscriminator('pfParticleTransformerAK4JetTags:probg')+bDiscriminator('pfParticleTransformerAK4JetTags:probuds'))>0?bDiscriminator('pfParticleTransformerAK4JetTags:probg')/(bDiscriminator('pfParticleTransformerAK4JetTags:probg')+bDiscriminator('pfParticleTransformerAK4JetTags:probuds')):-1",float,doc=
"RobustParTAK4 g vs uds discriminator",precision=10),
202 UNIFIEDPARTAK4VARS = cms.PSet(
203 btagUParTAK4B =
Var(
"?pt>15 && bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:BvsAll')>0?bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:BvsAll'):-1",float,precision=10,doc=
"UnifiedParTAK4 b vs. udscg"),
204 btagUParTAK4CvL =
Var(
"?pt>15 && bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:CvsL')>0?bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:CvsL'):-1",float,precision=10,doc=
"UnifiedParTAK4 c vs. udsg"),
205 btagUParTAK4CvB =
Var(
"?pt>15 && bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:CvsB')>0?bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:CvsB'):-1",float,precision=10,doc=
"UnifiedParTAK4 c vs. b"),
206 btagUParTAK4QvG =
Var(
"?pt>15 && bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:QvsG')>0?bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:QvsG'):-1",float,precision=10,doc=
"UnifiedParTAK4 q (udsbc) vs. g"),
207 btagUParTAK4TauVJet =
Var(
"?pt>15 && bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:TauVsJet')>0?bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:TauVsJet'):-1",float,precision=10,doc=
"UnifiedParTAK4 tau vs. jet"),
208 UParTAK4RegPtRawCorr =
Var(
"?pt>15 && bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:ptcorr')>0?bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:ptcorr'):-1",float,precision=10,doc=
"UnifiedParTAK4 universal flavor-aware visible pT regression (no neutrinos), correction relative to raw jet pT"),
209 UParTAK4RegPtRawCorrNeutrino =
Var(
"?pt>15 && bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:ptnu')>0?bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:ptnu'):-1",float,precision=10,doc=
"UnifiedParTAK4 universal flavor-aware pT regression neutrino correction, relative to visible. To apply full regression, multiply raw jet pT by both UParTAK4RegPtRawCorr and UParTAK4RegPtRawCorrNeutrino."),
210 UParTAK4RegPtRawRes =
Var(
"?pt>15 && 0.5*(bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:ptreshigh')-bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:ptreslow')) > 0?0.5*(bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:ptreshigh')-bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:ptreslow')):-1",float,precision=10,doc=
"UnifiedParTAK4 universal flavor-aware jet pT resolution estimator, (q84 - q16)/2"),
212 PARTICLENETAK4VARS = cms.PSet(
213 particleNetAK4_B =
Var(
"?(pt>=15)?bDiscriminator('pfParticleNetAK4DiscriminatorsJetTags:BvsAll'):-1",float,doc=
"ParticleNetAK4 tagger b vs all (udsg, c) discriminator",precision=10),
214 particleNetAK4_CvsL =
Var(
"?(pt>=15)?bDiscriminator('pfParticleNetAK4DiscriminatorsJetTags:CvsL'):-1",float,doc=
"ParticleNetAK4 tagger c vs udsg discriminator",precision=10),
215 particleNetAK4_CvsB =
Var(
"?(pt>=15)?bDiscriminator('pfParticleNetAK4DiscriminatorsJetTags:CvsB'):-1",float,doc=
"ParticleNetAK4 tagger c vs b discriminator",precision=10),
216 particleNetAK4_QvsG =
Var(
"?(pt>=15)?bDiscriminator('pfParticleNetAK4DiscriminatorsJetTags:QvsG'):-1",float,doc=
"ParticleNetAK4 tagger uds vs g discriminator",precision=10),
217 particleNetAK4_G =
Var(
"?(pt>=15)?bDiscriminator('pfParticleNetAK4JetTags:probg'):-1",float,doc=
"ParticleNetAK4 tagger g raw score",precision=10),
218 particleNetAK4_puIdDisc =
Var(
"?(pt>=15)?1-bDiscriminator('pfParticleNetAK4JetTags:probpu'):-1",float,doc=
"ParticleNetAK4 tagger pileup jet discriminator",precision=10),
221 CALOJETVARS = cms.PSet(P4Vars,
222 area = jetPuppiTable.variables.area,
223 rawFactor = jetPuppiTable.variables.rawFactor,
224 emf =
Var(
"emEnergyFraction()", float, doc =
"electromagnetic energy fraction", precision = 10),
235 def AddJetID(proc, jetName="", jetSrc="", jetTableName="", jetTaskName=""):
237 Setup modules to calculate PF jet ID 240 isPUPPIJet =
True if "PUPPI" in jetName.upper()
else False 242 looseJetId =
"looseJetId{}".
format(jetName)
243 setattr(proc, looseJetId, proc.looseJetId.clone(
245 filterParams = proc.looseJetId.filterParams.clone(
251 tightJetId =
"tightJetId{}".
format(jetName)
252 setattr(proc, tightJetId, proc.tightJetId.clone(
254 filterParams = proc.tightJetId.filterParams.clone(
255 version =
"RUN3WINTER22{}".
format(
"PUPPI" if isPUPPIJet
else "CHS")
260 tightJetIdLepVeto =
"tightJetIdLepVeto{}".
format(jetName)
261 setattr(proc, tightJetIdLepVeto, proc.tightJetIdLepVeto.clone(
263 filterParams = proc.tightJetIdLepVeto.filterParams.clone(
264 version =
"RUN3WINTER22{}".
format(
"PUPPI" if isPUPPIJet
else "CHS")
269 run3_jme_Winter22runsBCDEprompt.toModify(
270 getattr(proc, tightJetId).filterParams, version =
"RUN3WINTER22{}runsBCDEprompt".
format(
"PUPPI" if isPUPPIJet
else "CHS")
272 getattr(proc, tightJetIdLepVeto).filterParams, version =
"RUN3WINTER22{}runsBCDEprompt".
format(
"PUPPI" if isPUPPIJet
else "CHS")
275 (run2_jme_2017 | run2_jme_2018 | run3_nanoAOD_122 | run3_nanoAOD_124).toModify(
276 getattr(proc, tightJetId).filterParams, version =
"RUN2UL{}".
format(
"PUPPI" if isPUPPIJet
else "CHS")
278 getattr(proc, tightJetIdLepVeto).filterParams, version =
"RUN2UL{}".
format(
"PUPPI" if isPUPPIJet
else "CHS")
281 run2_jme_2016.toModify(
282 getattr(proc, tightJetId).filterParams, version =
"RUN2UL16{}".
format(
"PUPPI" if isPUPPIJet
else "CHS")
284 getattr(proc, tightJetIdLepVeto).filterParams, version =
"RUN2UL16{}".
format(
"PUPPI" if isPUPPIJet
else "CHS")
290 patJetWithUserData =
"{}WithUserData".
format(jetSrc)
291 getattr(proc, patJetWithUserData).userInts.tightId = cms.InputTag(tightJetId)
292 getattr(proc, patJetWithUserData).userInts.tightIdLepVeto = cms.InputTag(tightJetIdLepVeto)
297 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")
299 getattr(proc,jetTaskName).
add(getattr(proc, tightJetId))
300 getattr(proc,jetTaskName).
add(getattr(proc, tightJetIdLepVeto))
306 Setup modules to calculate pileup jet ID input variables for PF jet 312 puJetIdVarsCalculator =
"puJetIdCalculator{}".
format(jetName)
313 setattr(proc, puJetIdVarsCalculator, pileupJetIdCalculator.clone(
315 vertexes =
"offlineSlimmedPrimaryVertices",
316 inputIsCorrected =
True,
318 srcConstituentWeights =
"packedpuppi" if "PUPPI" in jetName.upper()
else "" 321 getattr(proc,jetTaskName).
add(getattr(proc, puJetIdVarsCalculator))
326 puJetIDVar =
"puJetIDVar{}".
format(jetName)
327 setattr(proc, puJetIDVar, cms.EDProducer(
"PileupJetIDVarProducer",
328 srcJet = cms.InputTag(jetSrc),
329 srcPileupJetId = cms.InputTag(puJetIdVarsCalculator)
332 getattr(proc,jetTaskName).
add(getattr(proc, puJetIDVar))
337 patJetWithUserData =
"{}WithUserData".
format(jetSrc)
338 getattr(proc,patJetWithUserData).userFloats.puId_dR2Mean = cms.InputTag(
"{}:dR2Mean".
format(puJetIDVar))
339 getattr(proc,patJetWithUserData).userFloats.puId_majW = cms.InputTag(
"{}:majW".
format(puJetIDVar))
340 getattr(proc,patJetWithUserData).userFloats.puId_minW = cms.InputTag(
"{}:minW".
format(puJetIDVar))
341 getattr(proc,patJetWithUserData).userFloats.puId_frac01 = cms.InputTag(
"{}:frac01".
format(puJetIDVar))
342 getattr(proc,patJetWithUserData).userFloats.puId_frac02 = cms.InputTag(
"{}:frac02".
format(puJetIDVar))
343 getattr(proc,patJetWithUserData).userFloats.puId_frac03 = cms.InputTag(
"{}:frac03".
format(puJetIDVar))
344 getattr(proc,patJetWithUserData).userFloats.puId_frac04 = cms.InputTag(
"{}:frac04".
format(puJetIDVar))
345 getattr(proc,patJetWithUserData).userFloats.puId_ptD = cms.InputTag(
"{}:ptD".
format(puJetIDVar))
346 getattr(proc,patJetWithUserData).userFloats.puId_beta = cms.InputTag(
"{}:beta".
format(puJetIDVar))
347 getattr(proc,patJetWithUserData).userFloats.puId_pull = cms.InputTag(
"{}:pull".
format(puJetIDVar))
348 getattr(proc,patJetWithUserData).userFloats.puId_jetR = cms.InputTag(
"{}:jetR".
format(puJetIDVar))
349 getattr(proc,patJetWithUserData).userFloats.puId_jetRchg = cms.InputTag(
"{}:jetRchg".
format(puJetIDVar))
350 getattr(proc,patJetWithUserData).userInts.puId_nCharged = cms.InputTag(
"{}:nCharged".
format(puJetIDVar))
355 getattr(proc,jetTableName).variables.puId_dR2Mean = PUIDVARS.puId_dR2Mean
356 getattr(proc,jetTableName).variables.puId_majW = PUIDVARS.puId_majW
357 getattr(proc,jetTableName).variables.puId_minW = PUIDVARS.puId_minW
358 getattr(proc,jetTableName).variables.puId_frac01 = PUIDVARS.puId_frac01
359 getattr(proc,jetTableName).variables.puId_frac02 = PUIDVARS.puId_frac02
360 getattr(proc,jetTableName).variables.puId_frac03 = PUIDVARS.puId_frac03
361 getattr(proc,jetTableName).variables.puId_frac04 = PUIDVARS.puId_frac04
362 getattr(proc,jetTableName).variables.puId_ptD = PUIDVARS.puId_ptD
363 getattr(proc,jetTableName).variables.puId_beta = PUIDVARS.puId_beta
364 getattr(proc,jetTableName).variables.puId_pull = PUIDVARS.puId_pull
365 getattr(proc,jetTableName).variables.puId_jetR = PUIDVARS.puId_jetR
366 getattr(proc,jetTableName).variables.puId_jetRchg = PUIDVARS.puId_jetRchg
367 getattr(proc,jetTableName).variables.puId_nCharged = PUIDVARS.puId_nCharged
371 def AddQGLTaggerVars(proc, jetName="", jetSrc="", jetTableName="", jetTaskName="", calculateQGLVars=False):
373 Schedule the QGTagger module to calculate input variables to the QG likelihood 376 isPUPPIJet =
True if "PUPPI" in jetName.upper()
else False 378 QGLTagger=
"qgtagger{}".
format(jetName)
379 patJetWithUserData=
"{}WithUserData".
format(jetSrc)
382 setattr(proc, QGLTagger, qgtagger.clone(
384 computeLikelihood =
False,
388 getattr(proc,QGLTagger).srcConstituentWeights = cms.InputTag(
"packedpuppi")
393 getattr(proc,patJetWithUserData).userFloats.qgl_axis2 = cms.InputTag(QGLTagger+
":axis2")
394 getattr(proc,patJetWithUserData).userFloats.qgl_ptD = cms.InputTag(QGLTagger+
":ptD")
395 getattr(proc,patJetWithUserData).userInts.qgl_mult = cms.InputTag(QGLTagger+
":mult")
400 getattr(proc,jetTableName).variables.qgl_axis2 = QGLVARS.qgl_axis2
401 getattr(proc,jetTableName).variables.qgl_ptD = QGLVARS.qgl_ptD
402 getattr(proc,jetTableName).variables.qgl_mult = QGLVARS.qgl_mult
405 getattr(proc,jetTaskName).
add(getattr(proc, QGLTagger))
411 Store b-tagging scores from various algortihm 414 getattr(proc, jetTableName).variables.btagDeepFlavB = DEEPJETVARS.btagDeepFlavB
415 getattr(proc, jetTableName).variables.btagDeepFlavCvL = DEEPJETVARS.btagDeepFlavCvL
416 getattr(proc, jetTableName).variables.btagDeepFlavCvB = DEEPJETVARS.btagDeepFlavCvB
418 run2_nanoAOD_ANY.toModify(
419 getattr(proc, jetTableName).variables,
420 btagCSVV2 =
Var(
"bDiscriminator('pfCombinedInclusiveSecondaryVertexV2BJetTags')",float,doc=
" pfCombinedInclusiveSecondaryVertexV2 b-tag discriminator (aka CSVV2)",precision=10),
421 btagDeepB =
Var(
"?(bDiscriminator('pfDeepCSVJetTags:probb')+bDiscriminator('pfDeepCSVJetTags:probbb'))>=0?bDiscriminator('pfDeepCSVJetTags:probb')+bDiscriminator('pfDeepCSVJetTags:probbb'):-1",float,doc=
"DeepCSV b+bb tag discriminator",precision=10),
422 btagDeepCvL =
Var(
"?bDiscriminator('pfDeepCSVJetTags:probc')>=0?bDiscriminator('pfDeepCSVJetTags:probc')/(bDiscriminator('pfDeepCSVJetTags:probc')+bDiscriminator('pfDeepCSVJetTags:probudsg')):-1", float,doc=
"DeepCSV c vs udsg discriminator",precision=10),
423 btagDeepCvB =
Var(
"?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)
430 Store DeepJet raw score in jetTable for gluon and light quark 433 getattr(proc, jetTableName).variables.btagDeepFlavG = DEEPJETVARS.btagDeepFlavG
434 getattr(proc, jetTableName).variables.btagDeepFlavUDS = DEEPJETVARS.btagDeepFlavUDS
435 getattr(proc, jetTableName).variables.btagDeepFlavQG = DEEPJETVARS.btagDeepFlavQG
441 Store RobustParTAK4 scores in jetTable 444 getattr(proc, jetTableName).variables.btagRobustParTAK4B = ROBUSTPARTAK4VARS.btagRobustParTAK4B
445 getattr(proc, jetTableName).variables.btagRobustParTAK4CvL = ROBUSTPARTAK4VARS.btagRobustParTAK4CvL
446 getattr(proc, jetTableName).variables.btagRobustParTAK4CvB = ROBUSTPARTAK4VARS.btagRobustParTAK4CvB
452 Store RobustParTAK4 scores in jetTable 455 getattr(proc, jetTableName).variables.btagUParTAK4B = UNIFIEDPARTAK4VARS.btagUParTAK4B
456 getattr(proc, jetTableName).variables.btagUParTAK4CvL = UNIFIEDPARTAK4VARS.btagUParTAK4CvL
457 getattr(proc, jetTableName).variables.btagUParTAK4CvB = UNIFIEDPARTAK4VARS.btagUParTAK4CvB
458 getattr(proc, jetTableName).variables.btagUParTAK4TauVJet = UNIFIEDPARTAK4VARS.btagUParTAK4TauVJet
459 getattr(proc, jetTableName).variables.UParTAK4RegPtRawCorr = UNIFIEDPARTAK4VARS.UParTAK4RegPtRawCorr
460 getattr(proc, jetTableName).variables.UParTAK4RegPtRawCorrNeutrino = UNIFIEDPARTAK4VARS.UParTAK4RegPtRawCorrNeutrino
461 getattr(proc, jetTableName).variables.UParTAK4RegPtRawRes = UNIFIEDPARTAK4VARS.UParTAK4RegPtRawRes
467 Store ParticleNetAK4 scores in jetTable 470 getattr(proc, jetTableName).variables.particleNetAK4_B = PARTICLENETAK4VARS.particleNetAK4_B
471 getattr(proc, jetTableName).variables.particleNetAK4_CvsL = PARTICLENETAK4VARS.particleNetAK4_CvsL
472 getattr(proc, jetTableName).variables.particleNetAK4_CvsB = PARTICLENETAK4VARS.particleNetAK4_CvsB
473 getattr(proc, jetTableName).variables.particleNetAK4_QvsG = PARTICLENETAK4VARS.particleNetAK4_QvsG
474 getattr(proc, jetTableName).variables.particleNetAK4_G = PARTICLENETAK4VARS.particleNetAK4_G
475 getattr(proc, jetTableName).variables.particleNetAK4_puIdDisc = PARTICLENETAK4VARS.particleNetAK4_puIdDisc
481 Add patJet into custom nanoAOD 484 jetName = recoJetInfo.jetUpper
485 payload = recoJetInfo.jetCorrPayload
486 doPF = recoJetInfo.doPF
487 doCalo = recoJetInfo.doCalo
488 patJetFinalColl = recoJetInfo.patJetFinalCollection
490 nanoInfoForJet = nanoInfo_recojets[recoJetInfo.jet]
491 jetTablePrefix = nanoInfoForJet[
"name"]
492 jetTableDoc = nanoInfoForJet[
"doc"]
493 ptcut = nanoInfoForJet[
"ptcut"]
if "ptcut" in nanoInfoForJet
else 8
494 doPUIDVar = nanoInfoForJet[
"doPUIDVar"]
if "doPUIDVar" in nanoInfoForJet
else False 495 doQGL = nanoInfoForJet[
"doQGL"]
if "doQGL" in nanoInfoForJet
else False 496 doBTag = nanoInfoForJet[
"doBTag"]
if "doBTag" in nanoInfoForJet
else False 499 jetName, payload, patJetFinalColl, jetTablePrefix, jetTableDoc, doPF, doCalo,
500 ptcut=ptcut, doPUIDVar=doPUIDVar, doQGL=doQGL, doBTag=doBTag, runOnMC=runOnMC
505 def SavePatJets(proc, jetName, payload, patJetFinalColl, jetTablePrefix, jetTableDoc,
506 doPF, doCalo, ptcut, doPUIDVar=False, doQGL=False, doBTag=False, runOnMC=False):
508 Schedule modules for a given patJet collection and save its variables into custom NanoAOD 514 jetCorrFactors =
"jetCorrFactorsNano{}".
format(jetName)
515 setattr(proc, jetCorrFactors, jetCorrFactorsNano.clone(
516 src = patJetFinalColl,
524 srcJets =
"updatedJets{}".
format(jetName)
525 setattr(proc, srcJets, updatedJets.clone(
526 jetSource = patJetFinalColl,
527 jetCorrFactorsSource = [jetCorrFactors],
534 srcJetsWithUserData =
"updatedJets{}WithUserData".
format(jetName)
535 setattr(proc, srcJetsWithUserData, cms.EDProducer(
"PATJetUserDataEmbedder",
536 src = cms.InputTag(srcJets),
537 userFloats = cms.PSet(),
538 userInts = cms.PSet(),
545 finalJetsCut =
"(pt >= {ptcut:.0f})".
format(ptcut=ptcut)
547 finalJetsCut =
"(pt >= {ptcut:.0f}) || ((pt < {ptcut:.0f}) && (genJetFwdRef().backRef().isNonnull()))".
format(ptcut=ptcut)
549 finalJetsForTable =
"finalJets{}".
format(jetName)
550 setattr(proc, finalJetsForTable, finalJets.clone(
551 src = srcJetsWithUserData,
559 tableContent = PFJETVARS
561 tableContent = CALOJETVARS
563 jetTableCutDefault =
"" 565 jetTableDocDefault = jetTableDoc +
" with JECs applied. Jets with pt >= {ptcut:.0f} GeV are stored.".
format(ptcut=ptcut)
567 jetTableDocDefault +=
"For jets with pt < {ptcut:.0f} GeV, only those matched to gen jets are stored.".
format(ptcut=ptcut)
570 jetTableDocDefault = jetTableDoc
572 jetTableName =
"jet{}Table".
format(jetName)
573 setattr(proc,jetTableName, simplePATJetFlatTableProducer.clone(
574 src = cms.InputTag(finalJetsForTable),
575 cut = cms.string(jetTableCutDefault),
576 name = cms.string(jetTablePrefix),
577 doc = cms.string(jetTableDocDefault),
578 variables = cms.PSet(tableContent)
581 getattr(proc,jetTableName).variables.pt.precision=10
582 getattr(proc,jetTableName).variables.rawFactor.precision=10
587 jetMCTableName =
"jet{}MCTable".
format(jetName)
588 setattr(proc, jetMCTableName, simplePATJetFlatTableProducer.clone(
589 src = cms.InputTag(finalJetsForTable),
590 cut = getattr(proc,jetTableName).cut,
591 name = cms.string(jetTablePrefix),
592 extension = cms.bool(
True),
593 variables = cms.PSet(
594 partonFlavour = PFJETVARS.partonFlavour,
595 hadronFlavour = PFJETVARS.hadronFlavour,
596 genJetIdx = PFJETVARS.genJetIdx,
604 jetTaskName =
"jet{}Task".
format(jetName)
605 setattr(proc, jetTaskName, cms.Task(
606 getattr(proc,jetCorrFactors),
607 getattr(proc,srcJets),
608 getattr(proc,srcJetsWithUserData),
609 getattr(proc,finalJetsForTable)
612 proc.nanoTableTaskCommon.add(getattr(proc,jetTaskName))
617 jetTableTaskName =
"jet{}TablesTask".
format(jetName)
618 setattr(proc, jetTableTaskName, cms.Task(getattr(proc,jetTableName)))
619 proc.nanoTableTaskCommon.add(getattr(proc,jetTableTaskName))
621 jetMCTableTaskName =
"jet{}MCTablesTask".
format(jetName)
622 setattr(proc, jetMCTableTaskName, cms.Task(getattr(proc,jetMCTableName)))
624 proc.nanoTableTaskFS.add(getattr(proc,jetMCTableTaskName))
630 proc =
AddJetID(proc, jetName=jetName, jetSrc=srcJets, jetTableName=jetTableName, jetTaskName=jetTaskName)
632 proc =
AddPileUpJetIDVars(proc, jetName=jetName, jetSrc=srcJets, jetTableName=jetTableName, jetTaskName=jetTaskName)
634 proc =
AddQGLTaggerVars(proc,jetName=jetName, jetSrc=srcJets, jetTableName=jetTableName, jetTaskName=jetTaskName, calculateQGLVars=
True)
652 Recluster AK4 Puppi jets and replace slimmedJetsPuppi 653 that is used as default to save AK4 Puppi jets in NanoAODs. 655 print(
"custom_jme_cff::ReclusterAK4PuppiJets: Recluster AK4 PF Puppi jets")
661 "jet" :
"ak4pfpuppi",
662 "inputCollection" :
"",
663 "genJetsCollection":
"AK4GenJetsNoNu",
664 "bTagDiscriminators": bTagDiscriminatorsForAK4,
667 recoJetInfo = recoJA.addRecoJetCollection(proc, **cfg)
669 jetName = recoJetInfo.jetUpper
670 patJetFinalColl = recoJetInfo.patJetFinalCollection
675 run2_jme_2016.toModify(
676 proc.tightJetPuppiId.filterParams, version =
"RUN2UL16PUPPI" 678 proc.tightJetIdLepVeto.filterParams, version =
"RUN2UL16PUPPI" 685 proc.jetPuppiCorrFactorsNano.src=patJetFinalColl
686 proc.updatedJetsPuppi.jetSource=patJetFinalColl
691 finalJetsPuppiCut =
"" 693 finalJetsPuppiCut =
"(pt >= 8) || ((pt < 8) && (genJetFwdRef().backRef().isNonnull()))" 695 finalJetsPuppiCut =
"(pt >= 8)" 697 proc.finalJetsPuppi.cut = finalJetsPuppiCut
701 proc.corrT1METJetPuppiTable.cut =
"pt>=8 && pt<15 && abs(eta)<9.9" 707 run2_nanoAOD_ANY.toModify(
708 proc.jetTable, name =
"Jet" 713 src = cms.InputTag(
"finalJetsPuppi")
719 jetPuppiTableDoc =
"AK4 PF Puppi jets with JECs applied. Jets with pt >= 8 GeV are stored." 721 jetPuppiTableDoc +=
"For jets with pt < 8 GeV, only those matched to AK4 Gen jets are stored." 722 proc.jetPuppiTable.doc = jetPuppiTableDoc
724 proc.jetPuppiTable.variables.rawFactor.precision = 10
729 proc.jetPuppiTable.variables.chHadMultiplicity = PFJETVARS.chHadMultiplicity
730 proc.jetPuppiTable.variables.neHadMultiplicity = PFJETVARS.neHadMultiplicity
731 proc.jetPuppiTable.variables.hfHadMultiplicity = PFJETVARS.hfHadMultiplicity
732 proc.jetPuppiTable.variables.hfEMMultiplicity = PFJETVARS.hfEMMultiplicity
733 proc.jetPuppiTable.variables.muMultiplicity = PFJETVARS.muMultiplicity
734 proc.jetPuppiTable.variables.elMultiplicity = PFJETVARS.elMultiplicity
735 proc.jetPuppiTable.variables.phoMultiplicity = PFJETVARS.phoMultiplicity
743 jetSrc =
"updatedJetsPuppi",
744 jetTableName =
"jetPuppiTable",
745 jetTaskName =
"jetPuppiTask" 753 jetSrc =
"updatedJetsPuppi",
754 jetTableName =
"jetPuppiTable",
755 jetTaskName =
"jetPuppiTask",
756 calculateQGLVars=
True 761 proc.jetPuppiTable.variables.btagDeepFlavB = DEEPJETVARS.btagDeepFlavB
762 proc.jetPuppiTable.variables.btagDeepFlavCvL = DEEPJETVARS.btagDeepFlavCvL
763 proc.jetPuppiTable.variables.btagDeepFlavCvB = DEEPJETVARS.btagDeepFlavCvB
767 proc.jetPuppiTable.variables.btagDeepFlavG = DEEPJETVARS.btagDeepFlavG
768 proc.jetPuppiTable.variables.btagDeepFlavUDS = DEEPJETVARS.btagDeepFlavUDS
769 proc.jetPuppiTable.variables.btagDeepFlavQG = DEEPJETVARS.btagDeepFlavQG
773 proc.jetPuppiTable.variables.btagRobustParTAK4B = ROBUSTPARTAK4VARS.btagRobustParTAK4B
774 proc.jetPuppiTable.variables.btagRobustParTAK4CvL = ROBUSTPARTAK4VARS.btagRobustParTAK4CvL
775 proc.jetPuppiTable.variables.btagRobustParTAK4CvB = ROBUSTPARTAK4VARS.btagRobustParTAK4CvB
779 proc.jetPuppiTable.variables.btagUParTAK4B = UNIFIEDPARTAK4VARS.btagUParTAK4B
780 proc.jetPuppiTable.variables.btagUParTAK4CvL = UNIFIEDPARTAK4VARS.btagUParTAK4CvL
781 proc.jetPuppiTable.variables.btagUParTAK4CvB = UNIFIEDPARTAK4VARS.btagUParTAK4CvB
782 proc.jetPuppiTable.variables.btagUParTAK4TauVJet = UNIFIEDPARTAK4VARS.btagUParTAK4TauVJet
783 proc.jetPuppiTable.variables.UParTAK4RegPtRawCorr = UNIFIEDPARTAK4VARS.UParTAK4RegPtRawCorr
784 proc.jetPuppiTable.variables.UParTAK4RegPtRawCorrNeutrino = UNIFIEDPARTAK4VARS.UParTAK4RegPtRawCorrNeutrino
785 proc.jetPuppiTable.variables.UParTAK4RegPtRawRes = UNIFIEDPARTAK4VARS.UParTAK4RegPtRawRes
789 run2_nanoAOD_ANY.toReplaceWith(
790 proc.jetPuppiForMETTask,
791 proc.jetPuppiForMETTask.copyAndExclude([proc.corrT1METJetPuppiTable])
798 jetMCTableName =
"jet{}MCTable".
format(jetName)
799 setattr(proc, jetMCTableName, proc.jetMCTable.clone(
800 src = proc.jetPuppiTable.src,
801 name = proc.jetPuppiTable.name
804 getattr(proc,jetMCTableName).variables.genJetIdx = PFJETVARS.genJetIdx
806 jetMCTableTaskName =
"jet{}MCTablesTask".
format(jetName)
807 setattr(proc, jetMCTableTaskName, cms.Task(getattr(proc,jetMCTableName)))
809 run2_nanoAOD_ANY.toReplaceWith(
810 proc.nanoTableTaskFS,
811 proc.nanoTableTaskFS.copyAndAdd( getattr(proc,jetMCTableTaskName))
818 Recluster AK4 CHS jets and replace slimmedJets that is used as default to 819 save AK4 CHS jets in NanoAODs (for Run-2). 821 print(
"custom_jme_cff::ReclusterAK4CHSJets: Recluster AK4 PF CHS jets")
823 from RecoBTag.ONNXRuntime.pfParticleNetFromMiniAODAK4_cff
import _pfParticleNetFromMiniAODAK4CHSCentralJetTagsAll
824 from RecoBTag.ONNXRuntime.pfParticleNetFromMiniAODAK4_cff
import _pfParticleNetFromMiniAODAK4CHSForwardJetTagsAll
826 bTagDiscriminatorsForAK4CHS = cms.PSet(
827 foo = cms.vstring(_pfParticleNetFromMiniAODAK4CHSCentralJetTagsAll+_pfParticleNetFromMiniAODAK4CHSForwardJetTagsAll)
829 bTagDiscriminatorsForAK4CHS = bTagDiscriminatorsForAK4CHS.foo.value()
836 "inputCollection" :
"",
837 "genJetsCollection":
"AK4GenJetsNoNu",
838 "bTagDiscriminators": bTagDiscriminatorsForAK4CHS,
841 recoJetInfo = recoJA.addRecoJetCollection(proc, **cfg)
843 jetName = recoJetInfo.jetUpper
844 patJetFinalColl = recoJetInfo.patJetFinalCollection
850 proc.jetCorrFactorsNano.src=patJetFinalColl
851 proc.updatedJets.jetSource=patJetFinalColl
858 finalJetsCut =
"(pt >= 10) || ((pt < 10) && (genJetFwdRef().backRef().isNonnull()))" 860 finalJetsCut =
"(pt >= 10)" 862 proc.finalJets.cut = finalJetsCut
866 proc.corrT1METJetTable.cut =
"pt>=10 && pt<15 && abs(eta)<9.9" 872 proc.jetTable.src = cms.InputTag(
"finalJets")
873 proc.jetTable.cut = jetTableCut
874 proc.jetMCTable.cut = jetTableCut
875 proc.jetTable.name =
"JetCHS" 880 run2_nanoAOD_ANY.toModify(
882 src = cms.InputTag(
"linkedObjects",
"jets"),
889 jetTableDoc =
"AK4 PF CHS jets with JECs applied. Jets with pt >= 10 GeV are stored." 891 jetTableDoc +=
"For jets with pt < 10 GeV, only those matched to AK4 Gen jets are stored." 892 proc.jetTable.doc = jetTableDoc
894 proc.jetTable.variables.rawFactor.precision = 10
899 proc.jetTable.variables.chHadMultiplicity = PFJETVARS.chHadMultiplicity
900 proc.jetTable.variables.neHadMultiplicity = PFJETVARS.neHadMultiplicity
901 proc.jetTable.variables.hfHadMultiplicity = PFJETVARS.hfHadMultiplicity
902 proc.jetTable.variables.hfEMMultiplicity = PFJETVARS.hfEMMultiplicity
903 proc.jetTable.variables.muMultiplicity = PFJETVARS.muMultiplicity
904 proc.jetTable.variables.elMultiplicity = PFJETVARS.elMultiplicity
905 proc.jetTable.variables.phoMultiplicity = PFJETVARS.phoMultiplicity
910 proc.updatedJetsWithUserData.userFloats.chFPV1EF = cms.InputTag(
"jercVars:chargedFromPV1EnergyFraction")
911 proc.updatedJetsWithUserData.userFloats.chFPV2EF = cms.InputTag(
"jercVars:chargedFromPV2EnergyFraction")
912 proc.updatedJetsWithUserData.userFloats.chFPV3EF = cms.InputTag(
"jercVars:chargedFromPV3EnergyFraction")
913 proc.jetTable.variables.chFPV1EF =
Var(
"userFloat('chFPV1EF')", float, doc=
"charged fromPV==1 Energy Fraction (component of the total charged Energy Fraction).", precision= 6)
914 proc.jetTable.variables.chFPV2EF =
Var(
"userFloat('chFPV2EF')", float, doc=
"charged fromPV==2 Energy Fraction (component of the total charged Energy Fraction).", precision= 6)
915 proc.jetTable.variables.chFPV3EF =
Var(
"userFloat('chFPV3EF')", float, doc=
"charged fromPV==3 Energy Fraction (component of the total charged Energy Fraction).", precision= 6)
921 for varNames
in proc.jetTable.variables.parameterNames_():
922 if "btagDeepFlav" in varNames
or "btagRobustParT" in varNames
or "btagUParT" in varNames:
923 delattr(proc.jetTable.variables, varNames)
925 proc.jetTable.variables.btagPNetB =
Var(
"?pt>15 && bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralDiscriminatorsJetTags:BvsAll')>0?bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralDiscriminatorsJetTags:BvsAll'):-1",float,precision=10,doc=
"ParticleNet b vs. udscg")
926 proc.jetTable.variables.btagPNetCvL =
Var(
"?pt>15 && bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralDiscriminatorsJetTags:CvsL')>0?bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralDiscriminatorsJetTags:CvsL'):-1",float,precision=10,doc=
"ParticleNet c vs. udsg")
927 proc.jetTable.variables.btagPNetCvB =
Var(
"?pt>15 && bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralDiscriminatorsJetTags:CvsB')>0?bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralDiscriminatorsJetTags:CvsB'):-1",float,precision=10,doc=
"ParticleNet c vs. b")
928 proc.jetTable.variables.btagPNetQvG =
Var(
"?pt>15 && abs(eta())<2.5?bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralDiscriminatorsJetTags:QvsG'):bDiscriminator('pfParticleNetFromMiniAODAK4CHSForwardDiscriminatorsJetTags:QvsG')",float,precision=10,doc=
"ParticleNet q (udsbc) vs. g")
929 proc.jetTable.variables.btagPNetTauVJet =
Var(
"?pt>15 && bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralDiscriminatorsJetTags:TauVsJet')>0?bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralDiscriminatorsJetTags:TauVsJet'):-1",float,precision=10,doc=
"ParticleNet tau vs. jet")
930 proc.jetTable.variables.PNetRegPtRawCorr =
Var(
"?pt>15 && abs(eta())<2.5?bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralJetTags:ptcorr'):bDiscriminator('pfParticleNetFromMiniAODAK4CHSForwardJetTags:ptcorr')",float,precision=10,doc=
"ParticleNet universal flavor-aware visible pT regression (no neutrinos), correction relative to raw jet pT")
931 proc.jetTable.variables.PNetRegPtRawCorrNeutrino =
Var(
"?pt>15 && abs(eta())<2.5?bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralJetTags:ptnu'):bDiscriminator('pfParticleNetFromMiniAODAK4CHSForwardJetTags:ptnu')",float,precision=10,doc=
"ParticleNet universal flavor-aware pT regression neutrino correction, relative to visible. To apply full regression, multiply raw jet pT by both PNetRegPtRawCorr and PNetRegPtRawCorrNeutrino.")
932 proc.jetTable.variables.PNetRegPtRawRes =
Var(
"?pt>15 && abs(eta())<2.5?0.5*(bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralJetTags:ptreshigh')-bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralJetTags:ptreslow')):0.5*(bDiscriminator('pfParticleNetFromMiniAODAK4CHSForwardJetTags:ptreshigh')-bDiscriminator('pfParticleNetFromMiniAODAK4CHSForwardJetTags:ptreslow'))",float,precision=10,doc=
"ParticleNet universal flavor-aware jet pT resolution estimator, (q84 - q16)/2")
937 hfJetShowerShapeforCustomNanoAOD =
"hfJetShowerShapeforCustomNanoAOD" 938 setattr(proc, hfJetShowerShapeforCustomNanoAOD, hfJetShowerShape.clone(jets=
"updatedJets", vertices=
"offlineSlimmedPrimaryVertices") )
939 proc.jetUserDataTask.add(getattr(proc, hfJetShowerShapeforCustomNanoAOD))
940 proc.updatedJetsWithUserData.userFloats.hfsigmaEtaEta = cms.InputTag(
'hfJetShowerShapeforCustomNanoAOD:sigmaEtaEta')
941 proc.updatedJetsWithUserData.userFloats.hfsigmaPhiPhi = cms.InputTag(
'hfJetShowerShapeforCustomNanoAOD:sigmaPhiPhi')
942 proc.updatedJetsWithUserData.userInts.hfcentralEtaStripSize = cms.InputTag(
'hfJetShowerShapeforCustomNanoAOD:centralEtaStripSize')
943 proc.updatedJetsWithUserData.userInts.hfadjacentEtaStripsSize = cms.InputTag(
'hfJetShowerShapeforCustomNanoAOD:adjacentEtaStripsSize')
944 proc.jetTable.variables.hfsigmaEtaEta =
Var(
"userFloat('hfsigmaEtaEta')",float,doc=
"sigmaEtaEta for HF jets (noise discriminating variable)",precision=10)
945 proc.jetTable.variables.hfsigmaPhiPhi =
Var(
"userFloat('hfsigmaPhiPhi')",float,doc=
"sigmaPhiPhi for HF jets (noise discriminating variable)",precision=10)
946 proc.jetTable.variables.hfcentralEtaStripSize =
Var(
"userInt('hfcentralEtaStripSize')", int, doc=
"eta size of the central tower strip in HF (noise discriminating variable) ")
947 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) ")
953 (~run2_nanoAOD_ANY).toReplaceWith(
954 proc.jetUserDataTask,
955 proc.jetUserDataTask.copyAndExclude([proc.bJetVars])
958 proc.jetTablesTask.copyAndExclude([proc.bjetNN, proc.cjetNN])
959 ).toModify(proc.updatedJetsWithUserData.userFloats,
961 leptonPtRelv0 =
None,
962 leptonPtRelInvv0 =
None,
970 proc.updatedJetsWithUserData.userInts,
974 proc.jetTable, externalVariables = cms.PSet()
980 proc.jetForMETTask.copyAndExclude([proc.corrT1METJetTable])
987 jetMCTableName =
"jet{}MCTable".
format(jetName)
988 setattr(proc, jetMCTableName, proc.jetMCTable.clone(
989 src = proc.jetTable.src,
990 name = proc.jetTable.name
993 getattr(proc,jetMCTableName).variables.genJetIdx = PFJETVARS.genJetIdx
995 jetMCTableTaskName =
"jet{}MCTablesTask".
format(jetName)
996 setattr(proc, jetMCTableTaskName, cms.Task(getattr(proc,jetMCTableName)))
998 (~run2_nanoAOD_ANY).toReplaceWith(
999 proc.nanoTableTaskFS,
1000 proc.nanoTableTaskFS.copyAndAdd(getattr(proc,jetMCTableTaskName))
1007 Store a separate AK8 Puppi jet collection for JEC studies. 1008 Only minimal info are stored 1010 print(
"custom_jme_cff::AddNewAK8PuppiJetsForJEC: Make a new AK8 PF Puppi jet collection for JEC studies")
1016 "jet" :
"ak8pfpuppi",
1017 "inputCollection" :
"",
1018 "genJetsCollection":
"AK8GenJetsNoNu",
1019 "minPtFastjet" : 0.,
1021 recoJetInfo = recoJA.addRecoJetCollection(proc, **cfg)
1023 jetName = recoJetInfo.jetUpper
1024 payload = recoJetInfo.jetCorrPayload
1026 patJetFinalColl = recoJetInfo.patJetFinalCollection
1027 jetTablePrefix =
"FatJetForJEC" 1028 jetTableDoc =
"AK8 PF Puppi jets with JECs applied. Reclustered for JEC studies so only minimal info stored." 1032 jetName, payload, patJetFinalColl, jetTablePrefix, jetTableDoc, doPF=
True,
1033 doCalo=
False, ptcut=ptcut, doPUIDVar=
False, doQGL=
False, doBTag=
False, runOnMC=runOnMC
1040 Store an AK8 CHS jet collection for JEC studies. 1042 print(
"custom_jme_cff::AddNewAK8CHSJets: Make a new AK8 PF CHS jet collection for JEC studies")
1049 "inputCollection" :
"",
1050 "genJetsCollection":
"AK8GenJetsNoNu",
1051 "minPtFastjet" : 0.,
1053 recoJetInfo = recoJA.addRecoJetCollection(proc, **cfg)
1055 jetName = recoJetInfo.jetUpper
1056 payload = recoJetInfo.jetCorrPayload
1058 patJetFinalColl = recoJetInfo.patJetFinalCollection
1059 jetTablePrefix =
"FatJetCHS" 1060 jetTableDoc =
"AK8 PF CHS jets with JECs applied. Reclustered for JEC studies so only minimal info stored." 1064 jetName, payload, patJetFinalColl, jetTablePrefix, jetTableDoc, doPF=
True,
1065 doCalo=
False, ptcut=ptcut, doPUIDVar=
False, doQGL=
False, doBTag=
False, runOnMC=runOnMC
1072 Add more variables for AK8 PFPUPPI jets 1075 proc.fatJetTable.variables.rawFactor.precision = 10
1081 proc.fatJetTable.variables.chHEF =
Var(
"?isPFJet()?chargedHadronEnergyFraction():-1", float, doc=
"charged Hadron Energy Fraction", precision = 6)
1082 proc.fatJetTable.variables.neHEF =
Var(
"?isPFJet()?neutralHadronEnergyFraction():-1", float, doc=
"neutral Hadron Energy Fraction", precision = 6)
1083 proc.fatJetTable.variables.chEmEF =
Var(
"?isPFJet()?chargedEmEnergyFraction():-1", float, doc=
"charged Electromagnetic Energy Fraction", precision = 6)
1084 proc.fatJetTable.variables.neEmEF =
Var(
"?isPFJet()?neutralEmEnergyFraction():-1", float, doc=
"neutral Electromagnetic Energy Fraction", precision = 6)
1085 proc.fatJetTable.variables.muEF =
Var(
"?isPFJet()?muonEnergyFraction():-1", float, doc=
"muon Energy Fraction", precision = 6)
1086 proc.fatJetTable.variables.hfHEF =
Var(
"?isPFJet()?HFHadronEnergyFraction():-1", float, doc=
"energy fraction in forward hadronic calorimeter", precision = 6)
1087 proc.fatJetTable.variables.hfEmEF =
Var(
"?isPFJet()?HFEMEnergyFraction():-1", float, doc=
"energy fraction in forward EM calorimeter", precision = 6)
1088 proc.fatJetTable.variables.chHadMultiplicity =
Var(
"?isPFJet()?chargedHadronMultiplicity():-1",
"int16", doc=
"(Puppi-weighted) number of charged hadrons in the jet")
1089 proc.fatJetTable.variables.neHadMultiplicity =
Var(
"?isPFJet()?neutralHadronMultiplicity():-1",
"int16", doc=
"(Puppi-weighted) number of neutral hadrons in the jet")
1090 proc.fatJetTable.variables.hfHadMultiplicity =
Var(
"?isPFJet()?HFHadronMultiplicity():-1",
"int16", doc=
"(Puppi-weighted) number of HF Hadrons in the jet")
1091 proc.fatJetTable.variables.hfEMMultiplicity =
Var(
"?isPFJet()?HFEMMultiplicity():-1",
"int16", doc=
"(Puppi-weighted) number of HF EMs in the jet")
1092 proc.fatJetTable.variables.muMultiplicity =
Var(
"?isPFJet()?muonMultiplicity():-1",
"int16", doc=
"(Puppi-weighted) number of muons in the jet")
1093 proc.fatJetTable.variables.elMultiplicity =
Var(
"?isPFJet()?electronMultiplicity():-1",
"int16", doc=
"(Puppi-weighted) number of electrons in the jet")
1094 proc.fatJetTable.variables.phoMultiplicity =
Var(
"?isPFJet()?photonMultiplicity():-1",
"int16", doc=
"(Puppi-weighted) number of photons in the jet")
1106 Add genJet into custom nanoAOD 1109 genJetName = genJetInfo.jetUpper
1110 genJetAlgo = genJetInfo.jetAlgo
1111 genJetSize = genJetInfo.jetSize
1112 genJetSizeNr = genJetInfo.jetSizeNr
1113 genJetFinalColl =
"{}{}{}".
format(genJetAlgo.upper(), genJetSize,
"GenJetsNoNu")
1114 genJetTablePrefix = nanoInfo_genjets[genJetInfo.jet][
"name"]
1115 genJetTableDoc = nanoInfo_genjets[genJetInfo.jet][
"doc"]
1117 SaveGenJets(proc, genJetName, genJetAlgo, genJetSizeNr, genJetFinalColl, genJetTablePrefix, genJetTableDoc, runOnMC=
False)
1121 def SaveGenJets(proc, genJetName, genJetAlgo, genJetSizeNr, genJetFinalColl, genJetTablePrefix, genJetTableDoc, runOnMC=False):
1123 Schedule modules for a given genJet collection and save its variables into custom NanoAOD 1126 genJetTableName =
"jet{}Table".
format(genJetName)
1127 setattr(proc, genJetTableName, genJetTable.clone(
1128 src = genJetFinalColl,
1130 name = genJetTablePrefix,
1131 doc = genJetTableDoc,
1132 variables = GENJETVARS
1136 genJetFlavourAssociationName =
"genJet{}FlavourAssociation".
format(genJetName)
1137 setattr(proc, genJetFlavourAssociationName, genJetFlavourAssociation.clone(
1138 jets = getattr(proc,genJetTableName).src,
1139 jetAlgorithm = supportedJetAlgos[genJetAlgo],
1140 rParam = genJetSizeNr,
1144 genJetFlavourTableName =
"genJet{}FlavourTable".
format(genJetName)
1145 setattr(proc, genJetFlavourTableName, genJetFlavourTable.clone(
1146 name = getattr(proc,genJetTableName).name,
1147 src = getattr(proc,genJetTableName).src,
1148 cut = getattr(proc,genJetTableName).cut,
1149 jetFlavourInfos = genJetFlavourAssociationName,
1153 genJetTaskName =
"genJet{}Task".
format(genJetName)
1154 setattr(proc, genJetTaskName, cms.Task(
1155 getattr(proc,genJetTableName),
1156 getattr(proc,genJetFlavourAssociationName),
1157 getattr(proc,genJetFlavourTableName)
1160 proc.jetMCTask.add(getattr(proc,genJetTaskName))
1166 Recluster AK4 Gen jets and replace 1167 slimmedGenJets that is used as default 1168 to save AK4 Gen jets in NanoAODs. 1170 print(
"custom_jme_cff::ReclusterAK4GenJets: Recluster AK4 Gen jets")
1179 genJetInfo = genJA.addGenJetCollection(proc, **cfg)
1181 genJetName = genJetInfo.jetUpper
1182 genJetAlgo = genJetInfo.jetAlgo
1183 genJetSize = genJetInfo.jetSize
1184 genJetSizeNr = genJetInfo.jetSizeNr
1185 selectedGenJets =
"{}{}{}".
format(genJetAlgo.upper(), genJetSize,
"GenJetsNoNu")
1191 proc.genJetTable.src = selectedGenJets
1192 proc.genJetTable.cut =
"" 1193 proc.genJetTable.doc =
"AK4 Gen jets (made with visible genparticles) with pt > 5 GeV" 1195 genJetFlavourAssociationName =
"genJet{}FlavourAssociation".
format(genJetName)
1196 setattr(proc, genJetFlavourAssociationName, genJetFlavourAssociation.clone(
1197 jets = proc.genJetTable.src,
1198 jetAlgorithm = supportedJetAlgos[genJetAlgo],
1199 rParam = genJetSizeNr,
1202 proc.jetMCTask.add(getattr(proc, genJetFlavourAssociationName))
1207 Make a separate AK8 Gen jet collection for JEC studies. 1209 print(
"custom_jme_cff::AddNewAK8GenJetsForJEC: Add new AK8 Gen jets for JEC studies")
1216 "minPtFastjet" : 10.
1218 genJetInfo = genJA.addGenJetCollection(proc, **cfg)
1220 genJetName = genJetInfo.jetUpper
1221 genJetAlgo = genJetInfo.jetAlgo
1222 genJetSize = genJetInfo.jetSize
1223 genJetSizeNr = genJetInfo.jetSizeNr
1224 genJetFinalColl =
"{}{}{}".
format(genJetAlgo.upper(), genJetSize,
"GenJetsNoNu")
1225 genJetTablePrefix =
"GenJetAK8ForJEC" 1226 genJetTableDoc =
"AK8 Gen jets (made with visible genparticles) with pt > 10 GeV. Reclustered for JEC studies." 1228 SaveGenJets(proc, genJetName, genJetAlgo, genJetSizeNr, genJetFinalColl, genJetTablePrefix, genJetTableDoc, runOnMC=
False)
1233 proc.genJetTable.variables.nConstituents = GENJETVARS.nConstituents
1237 proc.genJetAK8Table.variables.nConstituents = GENJETVARS.nConstituents
1243 proc.jetMCTable.variables.genJetIdx = PFJETVARS.genJetIdx
1253 Remove default pt cuts for all jets set in jets_cff.py 1256 proc.finalJets.cut =
"" 1257 proc.finalJetsPuppi.cut =
"" 1258 proc.finalJetsAK8.cut =
"" 1259 proc.genJetTable.cut =
"" 1260 proc.genJetFlavourTable.cut =
"" 1261 proc.genJetAK8Table.cut =
"" 1262 proc.genJetAK8FlavourTable.cut =
"" 1268 Setup packedpuppi and packedpuppiNoLep to recompute puppi weights 1270 if hasattr(proc,
"packedpuppi"):
1271 proc.packedpuppi.useExistingWeights =
False 1272 if hasattr(proc,
"packedpuppiNoLep"):
1273 proc.packedpuppiNoLep.useExistingWeights =
False 1278 Recompute PuppiMET. This is useful when puppi weights are recomputed. 1281 if hasattr(proc,
"NANOEDMAODoutput")
or hasattr(proc,
"NANOAODoutput"):
1284 from PhysicsTools.PatUtils.tools.runMETCorrectionsAndUncertainties
import runMetCorAndUncFromMiniAOD
1286 jetCollUnskimmed=
'updatedJetsPuppi',metType=
'Puppi',postfix=
'Puppi',jetFlavor=
'AK4PFPuppi',
1287 puppiProducerLabel=
'packedpuppi',puppiProducerForMETLabel=
'packedpuppiNoLep',
1288 recoMetFromPFCs=
True 1294 Recompute Puppi weights PuppiMET. 1308 if hasattr(process,
"NANOEDMAODoutput")
or hasattr(process,
"NANOAODoutput"):
1320 genJA = GenJetAdder()
1342 for jetConfig
in config_genjets:
1343 cfg = { k : v
for k, v
in jetConfig.items()
if k !=
"enabled"}
1344 genJetInfo = genJA.addGenJetCollection(process, **cfg)
1352 recoJA = RecoJetAdder(runOnMC=runOnMC)
1372 for jetConfig
in config_recojets:
1373 cfg = { k : v
for k, v
in jetConfig.items()
if k !=
"enabled"}
1374 recoJetInfo = recoJA.addRecoJetCollection(process, **cfg)
1382 def addAK4JetTasks(proc, addAK4CHSJetTasks, addAK4PuppiJetTasks):
1383 if addAK4CHSJetTasks:
1384 proc.nanoTableTaskCommon.add(proc.jetTask)
1385 proc.nanoTableTaskCommon.add(proc.jetTablesTask)
1386 proc.nanoTableTaskCommon.add(proc.jetForMETTask)
1387 if addAK4PuppiJetTasks:
1388 proc.nanoTableTaskCommon.add(proc.jetPuppiTask)
1389 proc.nanoTableTaskCommon.add(proc.jetPuppiTablesTask)
1390 proc.nanoTableTaskCommon.add(proc.jetPuppiForMETTask)
1393 jmeNano_addAK4JetTasks_switch = cms.PSet(
1394 jmeNano_addAK4CHS_switch = cms.untracked.bool(
True),
1395 jmeNano_addAK4Puppi_switch = cms.untracked.bool(
False)
1397 run2_nanoAOD_ANY.toModify(jmeNano_addAK4JetTasks_switch,
1398 jmeNano_addAK4CHS_switch =
False,
1399 jmeNano_addAK4Puppi_switch =
True 1401 process = addAK4JetTasks(process,
1402 addAK4CHSJetTasks = jmeNano_addAK4JetTasks_switch.jmeNano_addAK4CHS_switch,
1403 addAK4PuppiJetTasks = jmeNano_addAK4JetTasks_switch.jmeNano_addAK4Puppi_switch,
1410 process.puTable.savePtHatMax =
True 1416 process.genWeightsTable.keepAllPSWeights =
True def AddBTaggingScores(proc, jetTableName="")
def ReclusterAK4CHSJets(proc, recoJA, runOnMC)
def AddUnifiedParTAK4Scores(proc, jetTableName="")
def Var(expr, valtype, doc=None, precision=-1, lazyEval=False)
def AddQGLTaggerVars(proc, jetName="", jetSrc="", jetTableName="", jetTaskName="", calculateQGLVars=False)
def RemoveAllJetPtCuts(proc)
def AddNewPatJets(proc, recoJetInfo, runOnMC)
def RecomputePuppiWeightsAndMET(proc)
def AddRobustParTAK4Scores(proc, jetTableName="")
def runMetCorAndUncFromMiniAOD(process, metType="PF", jetCollUnskimmed="slimmedJets", photonColl="slimmedPhotons", electronColl="slimmedElectrons", muonColl="slimmedMuons", tauColl="slimmedTaus", pfCandColl="packedPFCandidates", jetFlavor="AK4PFchs", jetCleaning="LepClean", isData=False, manualJetConfig=False, reclusterJets=None, jetSelection="pt>15 && abs(eta)<9.9", recoMetFromPFCs=None, jetCorLabelL3="ak4PFCHSL1FastL2L3Corrector", jetCorLabelRes="ak4PFCHSL1FastL2L3ResidualCorrector", CHS=False, puppiProducerLabel="puppi", puppiProducerForMETLabel="puppiNoLep", reapplyJEC=True, jecUncFile="", computeMETSignificance=True, fixEE2017=False, fixEE2017Params=None, extractDeepMETs=False, campaign="", era="", postfix="")
def ModifyAK4JetMCTable(proc)
def ReclusterAK4GenJets(proc, genJA)
def AddNewAK8CHSJets(proc, recoJA, runOnMC)
def AddNewAK8GenJetsForJEC(proc, genJA)
def SavePatJets(proc, jetName, payload, patJetFinalColl, jetTablePrefix, jetTableDoc, doPF, doCalo, ptcut, doPUIDVar=False, doQGL=False, doBTag=False, runOnMC=False)
def ReclusterAK4PuppiJets(proc, recoJA, runOnMC)
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
def RecomputePuppiWeights(proc)
def AddDeepJetGluonLQuarkScores(proc, jetTableName="")
def AddJetID(proc, jetName="", jetSrc="", jetTableName="", jetTaskName="")
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="")
void add(std::map< std::string, TH1 *> &h, TH1 *hist)
def AddVariablesForAK8GenJets(proc)
def AddPileUpJetIDVars(proc, jetName="", jetSrc="", jetTableName="", jetTaskName="")
def PrepJMECustomNanoAOD(process)
def RecomputePuppiMET(proc)