1 import FWCore.ParameterSet.Config
as cms
4 from PhysicsTools.NanoAOD.simplePATJetFlatTableProducer_cfi
import simplePATJetFlatTableProducer
6 from RecoJets.JetProducers.hfJetShowerShape_cfi
import hfJetShowerShape
14 from PhysicsTools.PatAlgos.tools.jetCollectionTools
import GenJetAdder, RecoJetAdder
18 bTagCSVV2 = [
'pfCombinedInclusiveSecondaryVertexV2BJetTags']
19 bTagDeepCSV = [
'pfDeepCSVJetTags:probb',
'pfDeepCSVJetTags:probbb',
'pfDeepCSVJetTags:probc',
'pfDeepCSVJetTags:probudsg']
21 'pfDeepFlavourJetTags:probb',
'pfDeepFlavourJetTags:probbb',
'pfDeepFlavourJetTags:problepb',
22 'pfDeepFlavourJetTags:probc',
'pfDeepFlavourJetTags:probuds',
'pfDeepFlavourJetTags:probg' 25 from RecoBTag.ONNXRuntime.pfParticleNetFromMiniAODAK4_cff
import _pfParticleNetFromMiniAODAK4PuppiCentralJetTagsAll
26 from RecoBTag.ONNXRuntime.pfParticleNetFromMiniAODAK4_cff
import _pfParticleNetFromMiniAODAK4PuppiForwardJetTagsAll
29 bTagDiscriminatorsForAK4 = cms.PSet(foo = cms.vstring(
31 _pfParticleNetFromMiniAODAK4PuppiCentralJetTagsAll+_pfParticleNetFromMiniAODAK4PuppiForwardJetTagsAll+
32 _pfParticleTransformerAK4JetTagsAll + _pfUnifiedParticleTransformerAK4JetTagsAll
34 run2_nanoAOD_ANY.toModify(
35 bTagDiscriminatorsForAK4,
36 foo = bTagCSVV2+bTagDeepCSV+bTagDeepJet+_pfParticleNetAK4JetTagsAll
38 bTagDiscriminatorsForAK4 = bTagDiscriminatorsForAK4.foo.value()
43 btagHbb = [
'pfBoostedDoubleSecondaryVertexAK8BJetTags']
45 'pfDeepDoubleBvLJetTags:probHbb',
46 'pfDeepDoubleCvLJetTags:probHcc',
47 'pfDeepDoubleCvBJetTags:probHcc',
48 'pfMassIndependentDeepDoubleBvLJetTags:probHbb',
49 'pfMassIndependentDeepDoubleCvLJetTags:probHcc',
50 'pfMassIndependentDeepDoubleCvBJetTags:probHcc' 53 'pfMassIndependentDeepDoubleBvLV2JetTags:probHbb',
54 'pfMassIndependentDeepDoubleCvLV2JetTags:probHcc',
55 'pfMassIndependentDeepDoubleCvBV2JetTags:probHcc' 70 config_genjets = list(
filter(
lambda k: k[
'enabled'], config_genjets))
77 "doc" :
"AK6 Gen jets (made with visible genparticles) with pt > 3 GeV",
91 "inputCollection" :
"slimmedCaloJets",
92 "genJetsCollection":
"AK4GenJetsNoNu",
97 "inputCollection" :
"",
98 "genJetsCollection":
"AK4GenJetsNoNu",
104 "inputCollection" :
"",
105 "genJetsCollection":
"AK8GenJetsNoNu",
109 config_recojets = list(
filter(
lambda k: k[
'enabled'], config_recojets))
113 nanoInfo_recojets = {
116 "doc" :
"AK4 Calo jets (slimmedCaloJets)",
120 "doc" :
"AK4 PF jets",
125 "doc" :
"AK8 PF jets",
130 GENJETVARS = cms.PSet(P4Vars,
131 nConstituents = jetPuppiTable.variables.nConstituents,
133 PFJETVARS = cms.PSet(P4Vars,
134 rawFactor = jetPuppiTable.variables.rawFactor,
135 area = jetPuppiTable.variables.area,
136 chHEF = jetPuppiTable.variables.chHEF,
137 neHEF = jetPuppiTable.variables.neHEF,
138 chEmEF = jetPuppiTable.variables.chEmEF,
139 neEmEF = jetPuppiTable.variables.neEmEF,
140 muEF = jetPuppiTable.variables.muEF,
141 hfHEF =
Var(
"HFHadronEnergyFraction()",float,doc=
"hadronic Energy Fraction in HF",precision= 6),
142 hfEmEF =
Var(
"HFEMEnergyFraction()",float,doc=
"electromagnetic Energy Fraction in HF",precision= 6),
143 nMuons = jetPuppiTable.variables.nMuons,
144 nElectrons = jetPuppiTable.variables.nElectrons,
145 nConstituents = jetPuppiTable.variables.nConstituents,
146 chHadMultiplicity =
Var(
"chargedHadronMultiplicity()",
"int16",doc=
"(Puppi-weighted) number of charged hadrons in the jet"),
147 neHadMultiplicity =
Var(
"neutralHadronMultiplicity()",
"int16",doc=
"(Puppi-weighted) number of neutral hadrons in the jet"),
148 hfHadMultiplicity =
Var(
"HFHadronMultiplicity()",
"int16",doc=
"(Puppi-weighted) number of HF hadrons in the jet"),
149 hfEMMultiplicity =
Var(
"HFEMMultiplicity()",
"int16",doc=
"(Puppi-weighted) number of HF EMs in the jet"),
150 muMultiplicity =
Var(
"muonMultiplicity()",
"int16",doc=
"(Puppi-weighted) number of muons in the jet"),
151 elMultiplicity =
Var(
"electronMultiplicity()",
"int16",doc=
"(Puppi-weighted) number of electrons in the jet"),
152 phoMultiplicity =
Var(
"photonMultiplicity()",
"int16",doc=
"(Puppi-weighted) number of photons in the jet"),
154 partonFlavour =
Var(
"partonFlavour()",
"int16", doc=
"flavour from parton matching"),
155 hadronFlavour =
Var(
"hadronFlavour()",
"uint8", doc=
"flavour from hadron ghost clustering"),
156 genJetIdx =
Var(
"?genJetFwdRef().backRef().isNonnull()?genJetFwdRef().backRef().key():-1",
"int16", doc=
"index of matched gen jet"),
159 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),
160 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),
161 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),
162 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),
163 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),
164 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),
165 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),
166 puId_ptD =
Var(
"?(pt>=10)?userFloat('puId_ptD'):-1",float,doc=
"pT-weighted average pT of constituents (PileUp ID BDT input variable)", precision=14),
167 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),
168 puId_pull =
Var(
"?(pt>=10)?userFloat('puId_pull'):-1",float,doc=
"magnitude of pull vector (PileUp ID BDT input variable)", precision=14),
169 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),
170 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),
171 puId_nCharged =
Var(
"?(pt>=10)?userInt('puId_nCharged'):-1",
"int16",doc=
"number of charged constituents (PileUp ID BDT input variable)"),
174 qgl_axis2 =
Var(
"?(pt>=10)?userFloat('qgl_axis2'):-1",float,doc=
"ellipse minor jet axis (Quark vs Gluon likelihood input variable)", precision=14),
175 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),
176 qgl_mult =
Var(
"?(pt>=10)?userInt('qgl_mult'):-1",
"int16",doc=
"PF candidates multiplicity (Quark vs Gluon likelihood input variable)"),
179 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),
180 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),
181 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),
183 DEEPJETVARS = cms.PSet(
184 btagDeepFlavB =
Var(
"?(pt>=15)?bDiscriminator('pfDeepFlavourJetTags:probb')+bDiscriminator('pfDeepFlavourJetTags:probbb')+bDiscriminator('pfDeepFlavourJetTags:problepb'):-1",float,doc=
"DeepJet b+bb+lepb tag discriminator",precision=10),
185 btagDeepFlavC =
Var(
"?(pt>=15)?bDiscriminator('pfDeepFlavourJetTags:probc'):-1",float,doc=
"DeepFlavour charm tag raw score",precision=10),
186 btagDeepFlavG =
Var(
"?(pt>=15)?bDiscriminator('pfDeepFlavourJetTags:probg'):-1",float,doc=
"DeepFlavour gluon tag raw score",precision=10),
187 btagDeepFlavUDS =
Var(
"?(pt>=15)?bDiscriminator('pfDeepFlavourJetTags:probuds'):-1",float,doc=
"DeepFlavour uds tag raw score",precision=10),
188 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),
189 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),
190 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),
192 ROBUSTPARTAK4VARS = cms.PSet(
193 btagRobustParTAK4B =
Var(
"?(pt>=15)?bDiscriminator('pfParticleTransformerAK4JetTags:probb')+bDiscriminator('pfParticleTransformerAK4JetTags:probbb')+bDiscriminator('pfParticleTransformerAK4JetTags:problepb'):-1",float,doc=
"RobustParTAK4 b+bb+lepb tag discriminator",precision=10),
194 btagRobustParTAK4C =
Var(
"?(pt>=15)?bDiscriminator('pfParticleTransformerAK4JetTags:probc'):-1",float,doc=
"RobustParTAK4 charm tag raw score",precision=10),
195 btagRobustParTAK4G =
Var(
"?(pt>=15)?bDiscriminator('pfParticleTransformerAK4JetTags:probg'):-1",float,doc=
"RobustParTAK4 gluon tag raw score",precision=10),
196 btagRobustParTAK4UDS =
Var(
"?(pt>=15)?bDiscriminator('pfParticleTransformerAK4JetTags:probuds'):-1",float,doc=
"RobustParTAK4 uds tag raw score",precision=10),
197 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),
198 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),
199 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),
201 UNIFIEDPARTAK4VARS = cms.PSet(
202 btagUParTAK4B =
Var(
"?pt>15 && bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:BvsAll')>0?bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:BvsAll'):-1",float,precision=10,doc=
"UnifiedParTAK4 b vs. udscg"),
203 btagUParTAK4CvL =
Var(
"?pt>15 && bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:CvsL')>0?bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:CvsL'):-1",float,precision=10,doc=
"UnifiedParTAK4 c vs. udsg"),
204 btagUParTAK4CvB =
Var(
"?pt>15 && bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:CvsB')>0?bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:CvsB'):-1",float,precision=10,doc=
"UnifiedParTAK4 c vs. b"),
205 btagUParTAK4QvG =
Var(
"?pt>15 && bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:QvsG')>0?bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:QvsG'):-1",float,precision=10,doc=
"UnifiedParTAK4 q (udsbc) vs. g"),
206 btagUParTAK4TauVJet =
Var(
"?pt>15 && bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:TauVsJet')>0?bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:TauVsJet'):-1",float,precision=10,doc=
"UnifiedParTAK4 tau vs. jet"),
207 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"),
208 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."),
209 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"),
211 PARTICLENETAK4VARS = cms.PSet(
212 particleNetAK4_B =
Var(
"?(pt>=15)?bDiscriminator('pfParticleNetAK4DiscriminatorsJetTags:BvsAll'):-1",float,doc=
"ParticleNetAK4 tagger b vs all (udsg, c) discriminator",precision=10),
213 particleNetAK4_CvsL =
Var(
"?(pt>=15)?bDiscriminator('pfParticleNetAK4DiscriminatorsJetTags:CvsL'):-1",float,doc=
"ParticleNetAK4 tagger c vs udsg discriminator",precision=10),
214 particleNetAK4_CvsB =
Var(
"?(pt>=15)?bDiscriminator('pfParticleNetAK4DiscriminatorsJetTags:CvsB'):-1",float,doc=
"ParticleNetAK4 tagger c vs b discriminator",precision=10),
215 particleNetAK4_QvsG =
Var(
"?(pt>=15)?bDiscriminator('pfParticleNetAK4DiscriminatorsJetTags:QvsG'):-1",float,doc=
"ParticleNetAK4 tagger uds vs g discriminator",precision=10),
216 particleNetAK4_G =
Var(
"?(pt>=15)?bDiscriminator('pfParticleNetAK4JetTags:probg'):-1",float,doc=
"ParticleNetAK4 tagger g raw score",precision=10),
217 particleNetAK4_puIdDisc =
Var(
"?(pt>=15)?1-bDiscriminator('pfParticleNetAK4JetTags:probpu'):-1",float,doc=
"ParticleNetAK4 tagger pileup jet discriminator",precision=10),
220 CALOJETVARS = cms.PSet(P4Vars,
221 area = jetPuppiTable.variables.area,
222 rawFactor = jetPuppiTable.variables.rawFactor,
223 emf =
Var(
"emEnergyFraction()", float, doc =
"electromagnetic energy fraction", precision = 10),
234 def AddJetID(proc, jetName="", jetSrc="", jetTableName="", jetTaskName=""):
236 Setup modules to calculate PF jet ID 239 isPUPPIJet =
True if "PUPPI" in jetName.upper()
else False 241 looseJetId =
"looseJetId{}".
format(jetName)
242 setattr(proc, looseJetId, proc.looseJetId.clone(
244 filterParams = proc.looseJetId.filterParams.clone(
250 tightJetId =
"tightJetId{}".
format(jetName)
251 setattr(proc, tightJetId, proc.tightJetId.clone(
253 filterParams = proc.tightJetId.filterParams.clone(
254 version =
"RUN3WINTER22{}".
format(
"PUPPI" if isPUPPIJet
else "CHS")
259 tightJetIdLepVeto =
"tightJetIdLepVeto{}".
format(jetName)
260 setattr(proc, tightJetIdLepVeto, proc.tightJetIdLepVeto.clone(
262 filterParams = proc.tightJetIdLepVeto.filterParams.clone(
263 version =
"RUN3WINTER22{}".
format(
"PUPPI" if isPUPPIJet
else "CHS")
268 run3_jme_Winter22runsBCDEprompt.toModify(
269 getattr(proc, tightJetId).filterParams, version =
"RUN3WINTER22{}runsBCDEprompt".
format(
"PUPPI" if isPUPPIJet
else "CHS")
271 getattr(proc, tightJetIdLepVeto).filterParams, version =
"RUN3WINTER22{}runsBCDEprompt".
format(
"PUPPI" if isPUPPIJet
else "CHS")
274 (run2_jme_2017 | run2_jme_2018 | run3_nanoAOD_122 | run3_nanoAOD_124).toModify(
275 getattr(proc, tightJetId).filterParams, version =
"RUN2UL{}".
format(
"PUPPI" if isPUPPIJet
else "CHS")
277 getattr(proc, tightJetIdLepVeto).filterParams, version =
"RUN2UL{}".
format(
"PUPPI" if isPUPPIJet
else "CHS")
280 run2_jme_2016.toModify(
281 getattr(proc, tightJetId).filterParams, version =
"RUN2UL16{}".
format(
"PUPPI" if isPUPPIJet
else "CHS")
283 getattr(proc, tightJetIdLepVeto).filterParams, version =
"RUN2UL16{}".
format(
"PUPPI" if isPUPPIJet
else "CHS")
289 patJetWithUserData =
"{}WithUserData".
format(jetSrc)
290 getattr(proc, patJetWithUserData).userInts.tightId = cms.InputTag(tightJetId)
291 getattr(proc, patJetWithUserData).userInts.tightIdLepVeto = cms.InputTag(tightJetIdLepVeto)
296 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")
298 getattr(proc,jetTaskName).
add(getattr(proc, tightJetId))
299 getattr(proc,jetTaskName).
add(getattr(proc, tightJetIdLepVeto))
305 Setup modules to calculate pileup jet ID input variables for PF jet 311 puJetIdVarsCalculator =
"puJetIdCalculator{}".
format(jetName)
312 setattr(proc, puJetIdVarsCalculator, pileupJetIdCalculator.clone(
314 vertexes =
"offlineSlimmedPrimaryVertices",
315 inputIsCorrected =
True,
317 srcConstituentWeights =
"packedpuppi" if "PUPPI" in jetName.upper()
else "" 320 getattr(proc,jetTaskName).
add(getattr(proc, puJetIdVarsCalculator))
325 puJetIDVar =
"puJetIDVar{}".
format(jetName)
326 setattr(proc, puJetIDVar, cms.EDProducer(
"PileupJetIDVarProducer",
327 srcJet = cms.InputTag(jetSrc),
328 srcPileupJetId = cms.InputTag(puJetIdVarsCalculator)
331 getattr(proc,jetTaskName).
add(getattr(proc, puJetIDVar))
336 patJetWithUserData =
"{}WithUserData".
format(jetSrc)
337 getattr(proc,patJetWithUserData).userFloats.puId_dR2Mean = cms.InputTag(
"{}:dR2Mean".
format(puJetIDVar))
338 getattr(proc,patJetWithUserData).userFloats.puId_majW = cms.InputTag(
"{}:majW".
format(puJetIDVar))
339 getattr(proc,patJetWithUserData).userFloats.puId_minW = cms.InputTag(
"{}:minW".
format(puJetIDVar))
340 getattr(proc,patJetWithUserData).userFloats.puId_frac01 = cms.InputTag(
"{}:frac01".
format(puJetIDVar))
341 getattr(proc,patJetWithUserData).userFloats.puId_frac02 = cms.InputTag(
"{}:frac02".
format(puJetIDVar))
342 getattr(proc,patJetWithUserData).userFloats.puId_frac03 = cms.InputTag(
"{}:frac03".
format(puJetIDVar))
343 getattr(proc,patJetWithUserData).userFloats.puId_frac04 = cms.InputTag(
"{}:frac04".
format(puJetIDVar))
344 getattr(proc,patJetWithUserData).userFloats.puId_ptD = cms.InputTag(
"{}:ptD".
format(puJetIDVar))
345 getattr(proc,patJetWithUserData).userFloats.puId_beta = cms.InputTag(
"{}:beta".
format(puJetIDVar))
346 getattr(proc,patJetWithUserData).userFloats.puId_pull = cms.InputTag(
"{}:pull".
format(puJetIDVar))
347 getattr(proc,patJetWithUserData).userFloats.puId_jetR = cms.InputTag(
"{}:jetR".
format(puJetIDVar))
348 getattr(proc,patJetWithUserData).userFloats.puId_jetRchg = cms.InputTag(
"{}:jetRchg".
format(puJetIDVar))
349 getattr(proc,patJetWithUserData).userInts.puId_nCharged = cms.InputTag(
"{}:nCharged".
format(puJetIDVar))
354 getattr(proc,jetTableName).variables.puId_dR2Mean = PUIDVARS.puId_dR2Mean
355 getattr(proc,jetTableName).variables.puId_majW = PUIDVARS.puId_majW
356 getattr(proc,jetTableName).variables.puId_minW = PUIDVARS.puId_minW
357 getattr(proc,jetTableName).variables.puId_frac01 = PUIDVARS.puId_frac01
358 getattr(proc,jetTableName).variables.puId_frac02 = PUIDVARS.puId_frac02
359 getattr(proc,jetTableName).variables.puId_frac03 = PUIDVARS.puId_frac03
360 getattr(proc,jetTableName).variables.puId_frac04 = PUIDVARS.puId_frac04
361 getattr(proc,jetTableName).variables.puId_ptD = PUIDVARS.puId_ptD
362 getattr(proc,jetTableName).variables.puId_beta = PUIDVARS.puId_beta
363 getattr(proc,jetTableName).variables.puId_pull = PUIDVARS.puId_pull
364 getattr(proc,jetTableName).variables.puId_jetR = PUIDVARS.puId_jetR
365 getattr(proc,jetTableName).variables.puId_jetRchg = PUIDVARS.puId_jetRchg
366 getattr(proc,jetTableName).variables.puId_nCharged = PUIDVARS.puId_nCharged
370 def AddQGLTaggerVars(proc, jetName="", jetSrc="", jetTableName="", jetTaskName="", calculateQGLVars=False):
372 Schedule the QGTagger module to calculate input variables to the QG likelihood 375 isPUPPIJet =
True if "PUPPI" in jetName.upper()
else False 377 QGLTagger=
"qgtagger{}".
format(jetName)
378 patJetWithUserData=
"{}WithUserData".
format(jetSrc)
381 setattr(proc, QGLTagger, qgtagger.clone(
383 computeLikelihood =
False,
387 getattr(proc,QGLTagger).srcConstituentWeights = cms.InputTag(
"packedpuppi")
392 getattr(proc,patJetWithUserData).userFloats.qgl_axis2 = cms.InputTag(QGLTagger+
":axis2")
393 getattr(proc,patJetWithUserData).userFloats.qgl_ptD = cms.InputTag(QGLTagger+
":ptD")
394 getattr(proc,patJetWithUserData).userInts.qgl_mult = cms.InputTag(QGLTagger+
":mult")
399 getattr(proc,jetTableName).variables.qgl_axis2 = QGLVARS.qgl_axis2
400 getattr(proc,jetTableName).variables.qgl_ptD = QGLVARS.qgl_ptD
401 getattr(proc,jetTableName).variables.qgl_mult = QGLVARS.qgl_mult
404 getattr(proc,jetTaskName).
add(getattr(proc, QGLTagger))
410 Store b-tagging scores from various algortihm 413 getattr(proc, jetTableName).variables.btagDeepFlavB = DEEPJETVARS.btagDeepFlavB
414 getattr(proc, jetTableName).variables.btagDeepFlavCvL = DEEPJETVARS.btagDeepFlavCvL
415 getattr(proc, jetTableName).variables.btagDeepFlavCvB = DEEPJETVARS.btagDeepFlavCvB
417 run2_nanoAOD_ANY.toModify(
418 getattr(proc, jetTableName).variables,
419 btagCSVV2 =
Var(
"bDiscriminator('pfCombinedInclusiveSecondaryVertexV2BJetTags')",float,doc=
" pfCombinedInclusiveSecondaryVertexV2 b-tag discriminator (aka CSVV2)",precision=10),
420 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),
421 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),
422 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)
429 Store DeepJet raw score in jetTable for gluon and light quark 432 getattr(proc, jetTableName).variables.btagDeepFlavG = DEEPJETVARS.btagDeepFlavG
433 getattr(proc, jetTableName).variables.btagDeepFlavUDS = DEEPJETVARS.btagDeepFlavUDS
434 getattr(proc, jetTableName).variables.btagDeepFlavQG = DEEPJETVARS.btagDeepFlavQG
440 Store RobustParTAK4 scores in jetTable 443 getattr(proc, jetTableName).variables.btagRobustParTAK4B = ROBUSTPARTAK4VARS.btagRobustParTAK4B
444 getattr(proc, jetTableName).variables.btagRobustParTAK4CvL = ROBUSTPARTAK4VARS.btagRobustParTAK4CvL
445 getattr(proc, jetTableName).variables.btagRobustParTAK4CvB = ROBUSTPARTAK4VARS.btagRobustParTAK4CvB
451 Store RobustParTAK4 scores in jetTable 454 getattr(proc, jetTableName).variables.btagUParTAK4B = UNIFIEDPARTAK4VARS.btagUParTAK4B
455 getattr(proc, jetTableName).variables.btagUParTAK4CvL = UNIFIEDPARTAK4VARS.btagUParTAK4CvL
456 getattr(proc, jetTableName).variables.btagUParTAK4CvB = UNIFIEDPARTAK4VARS.btagUParTAK4CvB
457 getattr(proc, jetTableName).variables.btagUParTAK4TauVJet = UNIFIEDPARTAK4VARS.btagUParTAK4TauVJet
458 getattr(proc, jetTableName).variables.UParTAK4RegPtRawCorr = UNIFIEDPARTAK4VARS.UParTAK4RegPtRawCorr
459 getattr(proc, jetTableName).variables.UParTAK4RegPtRawCorrNeutrino = UNIFIEDPARTAK4VARS.UParTAK4RegPtRawCorrNeutrino
460 getattr(proc, jetTableName).variables.UParTAK4RegPtRawRes = UNIFIEDPARTAK4VARS.UParTAK4RegPtRawRes
466 Store ParticleNetAK4 scores in jetTable 469 getattr(proc, jetTableName).variables.particleNetAK4_B = PARTICLENETAK4VARS.particleNetAK4_B
470 getattr(proc, jetTableName).variables.particleNetAK4_CvsL = PARTICLENETAK4VARS.particleNetAK4_CvsL
471 getattr(proc, jetTableName).variables.particleNetAK4_CvsB = PARTICLENETAK4VARS.particleNetAK4_CvsB
472 getattr(proc, jetTableName).variables.particleNetAK4_QvsG = PARTICLENETAK4VARS.particleNetAK4_QvsG
473 getattr(proc, jetTableName).variables.particleNetAK4_G = PARTICLENETAK4VARS.particleNetAK4_G
474 getattr(proc, jetTableName).variables.particleNetAK4_puIdDisc = PARTICLENETAK4VARS.particleNetAK4_puIdDisc
480 Add patJet into custom nanoAOD 483 jetName = recoJetInfo.jetUpper
484 payload = recoJetInfo.jetCorrPayload
485 doPF = recoJetInfo.doPF
486 doCalo = recoJetInfo.doCalo
487 patJetFinalColl = recoJetInfo.patJetFinalCollection
489 nanoInfoForJet = nanoInfo_recojets[recoJetInfo.jet]
490 jetTablePrefix = nanoInfoForJet[
"name"]
491 jetTableDoc = nanoInfoForJet[
"doc"]
492 ptcut = nanoInfoForJet[
"ptcut"]
if "ptcut" in nanoInfoForJet
else 8
493 doPUIDVar = nanoInfoForJet[
"doPUIDVar"]
if "doPUIDVar" in nanoInfoForJet
else False 494 doQGL = nanoInfoForJet[
"doQGL"]
if "doQGL" in nanoInfoForJet
else False 495 doBTag = nanoInfoForJet[
"doBTag"]
if "doBTag" in nanoInfoForJet
else False 498 jetName, payload, patJetFinalColl, jetTablePrefix, jetTableDoc, doPF, doCalo,
499 ptcut=ptcut, doPUIDVar=doPUIDVar, doQGL=doQGL, doBTag=doBTag, runOnMC=runOnMC
504 def SavePatJets(proc, jetName, payload, patJetFinalColl, jetTablePrefix, jetTableDoc,
505 doPF, doCalo, ptcut, doPUIDVar=False, doQGL=False, doBTag=False, runOnMC=False):
507 Schedule modules for a given patJet collection and save its variables into custom NanoAOD 513 jetCorrFactors =
"jetCorrFactorsNano{}".
format(jetName)
514 setattr(proc, jetCorrFactors, jetCorrFactorsNano.clone(
515 src = patJetFinalColl,
523 srcJets =
"updatedJets{}".
format(jetName)
524 setattr(proc, srcJets, updatedJets.clone(
525 jetSource = patJetFinalColl,
526 jetCorrFactorsSource = [jetCorrFactors],
533 srcJetsWithUserData =
"updatedJets{}WithUserData".
format(jetName)
534 setattr(proc, srcJetsWithUserData, cms.EDProducer(
"PATJetUserDataEmbedder",
535 src = cms.InputTag(srcJets),
536 userFloats = cms.PSet(),
537 userInts = cms.PSet(),
544 finalJetsCut =
"(pt >= {ptcut:.0f})".
format(ptcut=ptcut)
546 finalJetsCut =
"(pt >= {ptcut:.0f}) || ((pt < {ptcut:.0f}) && (genJetFwdRef().backRef().isNonnull()))".
format(ptcut=ptcut)
548 finalJetsForTable =
"finalJets{}".
format(jetName)
549 setattr(proc, finalJetsForTable, finalJets.clone(
550 src = srcJetsWithUserData,
558 tableContent = PFJETVARS
560 tableContent = CALOJETVARS
562 jetTableCutDefault =
"" 564 jetTableDocDefault = jetTableDoc +
" with JECs applied. Jets with pt >= {ptcut:.0f} GeV are stored.".
format(ptcut=ptcut)
566 jetTableDocDefault +=
"For jets with pt < {ptcut:.0f} GeV, only those matched to gen jets are stored.".
format(ptcut=ptcut)
569 jetTableDocDefault = jetTableDoc
571 jetTableName =
"jet{}Table".
format(jetName)
572 setattr(proc,jetTableName, simplePATJetFlatTableProducer.clone(
573 src = cms.InputTag(finalJetsForTable),
574 cut = cms.string(jetTableCutDefault),
575 name = cms.string(jetTablePrefix),
576 doc = cms.string(jetTableDocDefault),
577 variables = cms.PSet(tableContent)
580 getattr(proc,jetTableName).variables.pt.precision=10
581 getattr(proc,jetTableName).variables.rawFactor.precision=10
586 jetMCTableName =
"jet{}MCTable".
format(jetName)
587 setattr(proc, jetMCTableName, simplePATJetFlatTableProducer.clone(
588 src = cms.InputTag(finalJetsForTable),
589 cut = getattr(proc,jetTableName).cut,
590 name = cms.string(jetTablePrefix),
591 extension = cms.bool(
True),
592 variables = cms.PSet(
593 partonFlavour = PFJETVARS.partonFlavour,
594 hadronFlavour = PFJETVARS.hadronFlavour,
595 genJetIdx = PFJETVARS.genJetIdx,
603 jetTaskName =
"jet{}Task".
format(jetName)
604 setattr(proc, jetTaskName, cms.Task(
605 getattr(proc,jetCorrFactors),
606 getattr(proc,srcJets),
607 getattr(proc,srcJetsWithUserData),
608 getattr(proc,finalJetsForTable)
611 proc.nanoTableTaskCommon.add(getattr(proc,jetTaskName))
616 jetTableTaskName =
"jet{}TablesTask".
format(jetName)
617 setattr(proc, jetTableTaskName, cms.Task(getattr(proc,jetTableName)))
618 proc.nanoTableTaskCommon.add(getattr(proc,jetTableTaskName))
620 jetMCTableTaskName =
"jet{}MCTablesTask".
format(jetName)
621 setattr(proc, jetMCTableTaskName, cms.Task(getattr(proc,jetMCTableName)))
623 proc.nanoTableTaskFS.add(getattr(proc,jetMCTableTaskName))
629 proc =
AddJetID(proc, jetName=jetName, jetSrc=srcJets, jetTableName=jetTableName, jetTaskName=jetTaskName)
631 proc =
AddPileUpJetIDVars(proc, jetName=jetName, jetSrc=srcJets, jetTableName=jetTableName, jetTaskName=jetTaskName)
633 proc =
AddQGLTaggerVars(proc,jetName=jetName, jetSrc=srcJets, jetTableName=jetTableName, jetTaskName=jetTaskName, calculateQGLVars=
True)
651 Recluster AK4 Puppi jets and replace slimmedJetsPuppi 652 that is used as default to save AK4 Puppi jets in NanoAODs. 654 print(
"custom_jme_cff::ReclusterAK4PuppiJets: Recluster AK4 PF Puppi jets")
660 "jet" :
"ak4pfpuppi",
661 "inputCollection" :
"",
662 "genJetsCollection":
"AK4GenJetsNoNu",
663 "bTagDiscriminators": bTagDiscriminatorsForAK4,
666 recoJetInfo = recoJA.addRecoJetCollection(proc, **cfg)
668 jetName = recoJetInfo.jetUpper
669 patJetFinalColl = recoJetInfo.patJetFinalCollection
674 run2_jme_2016.toModify(
675 proc.tightJetPuppiId.filterParams, version =
"RUN2UL16PUPPI" 677 proc.tightJetIdLepVeto.filterParams, version =
"RUN2UL16PUPPI" 684 proc.jetPuppiCorrFactorsNano.src=patJetFinalColl
685 proc.updatedJetsPuppi.jetSource=patJetFinalColl
690 finalJetsPuppiCut =
"" 692 finalJetsPuppiCut =
"(pt >= 8) || ((pt < 8) && (genJetFwdRef().backRef().isNonnull()))" 694 finalJetsPuppiCut =
"(pt >= 8)" 696 proc.finalJetsPuppi.cut = finalJetsPuppiCut
700 proc.corrT1METJetPuppiTable.cut =
"pt>=8 && pt<15 && abs(eta)<9.9" 706 run2_nanoAOD_ANY.toModify(
707 proc.jetTable, name =
"Jet" 712 src = cms.InputTag(
"finalJetsPuppi")
718 jetPuppiTableDoc =
"AK4 PF Puppi jets with JECs applied. Jets with pt >= 8 GeV are stored." 720 jetPuppiTableDoc +=
"For jets with pt < 8 GeV, only those matched to AK4 Gen jets are stored." 721 proc.jetPuppiTable.doc = jetPuppiTableDoc
723 proc.jetPuppiTable.variables.rawFactor.precision = 10
728 proc.jetPuppiTable.variables.chHadMultiplicity = PFJETVARS.chHadMultiplicity
729 proc.jetPuppiTable.variables.neHadMultiplicity = PFJETVARS.neHadMultiplicity
730 proc.jetPuppiTable.variables.hfHadMultiplicity = PFJETVARS.hfHadMultiplicity
731 proc.jetPuppiTable.variables.hfEMMultiplicity = PFJETVARS.hfEMMultiplicity
732 proc.jetPuppiTable.variables.muMultiplicity = PFJETVARS.muMultiplicity
733 proc.jetPuppiTable.variables.elMultiplicity = PFJETVARS.elMultiplicity
734 proc.jetPuppiTable.variables.phoMultiplicity = PFJETVARS.phoMultiplicity
742 jetSrc =
"updatedJetsPuppi",
743 jetTableName =
"jetPuppiTable",
744 jetTaskName =
"jetPuppiTask" 752 jetSrc =
"updatedJetsPuppi",
753 jetTableName =
"jetPuppiTable",
754 jetTaskName =
"jetPuppiTask",
755 calculateQGLVars=
True 760 proc.jetPuppiTable.variables.btagDeepFlavB = DEEPJETVARS.btagDeepFlavB
761 proc.jetPuppiTable.variables.btagDeepFlavCvL = DEEPJETVARS.btagDeepFlavCvL
762 proc.jetPuppiTable.variables.btagDeepFlavCvB = DEEPJETVARS.btagDeepFlavCvB
766 proc.jetPuppiTable.variables.btagDeepFlavG = DEEPJETVARS.btagDeepFlavG
767 proc.jetPuppiTable.variables.btagDeepFlavUDS = DEEPJETVARS.btagDeepFlavUDS
768 proc.jetPuppiTable.variables.btagDeepFlavQG = DEEPJETVARS.btagDeepFlavQG
772 proc.jetPuppiTable.variables.btagRobustParTAK4B = ROBUSTPARTAK4VARS.btagRobustParTAK4B
773 proc.jetPuppiTable.variables.btagRobustParTAK4CvL = ROBUSTPARTAK4VARS.btagRobustParTAK4CvL
774 proc.jetPuppiTable.variables.btagRobustParTAK4CvB = ROBUSTPARTAK4VARS.btagRobustParTAK4CvB
778 proc.jetPuppiTable.variables.btagUParTAK4B = UNIFIEDPARTAK4VARS.btagUParTAK4B
779 proc.jetPuppiTable.variables.btagUParTAK4CvL = UNIFIEDPARTAK4VARS.btagUParTAK4CvL
780 proc.jetPuppiTable.variables.btagUParTAK4CvB = UNIFIEDPARTAK4VARS.btagUParTAK4CvB
781 proc.jetPuppiTable.variables.btagUParTAK4TauVJet = UNIFIEDPARTAK4VARS.btagUParTAK4TauVJet
782 proc.jetPuppiTable.variables.UParTAK4RegPtRawCorr = UNIFIEDPARTAK4VARS.UParTAK4RegPtRawCorr
783 proc.jetPuppiTable.variables.UParTAK4RegPtRawCorrNeutrino = UNIFIEDPARTAK4VARS.UParTAK4RegPtRawCorrNeutrino
784 proc.jetPuppiTable.variables.UParTAK4RegPtRawRes = UNIFIEDPARTAK4VARS.UParTAK4RegPtRawRes
788 run2_nanoAOD_ANY.toReplaceWith(
789 proc.jetPuppiForMETTask,
790 proc.jetPuppiForMETTask.copyAndExclude([proc.corrT1METJetPuppiTable])
797 jetMCTableName =
"jet{}MCTable".
format(jetName)
798 setattr(proc, jetMCTableName, proc.jetMCTable.clone(
799 src = proc.jetPuppiTable.src,
800 name = proc.jetPuppiTable.name
803 getattr(proc,jetMCTableName).variables.genJetIdx = PFJETVARS.genJetIdx
805 jetMCTableTaskName =
"jet{}MCTablesTask".
format(jetName)
806 setattr(proc, jetMCTableTaskName, cms.Task(getattr(proc,jetMCTableName)))
808 run2_nanoAOD_ANY.toReplaceWith(
809 proc.nanoTableTaskFS,
810 proc.nanoTableTaskFS.copyAndAdd( getattr(proc,jetMCTableTaskName))
817 Recluster AK4 CHS jets and replace slimmedJets that is used as default to 818 save AK4 CHS jets in NanoAODs (for Run-2). 820 print(
"custom_jme_cff::ReclusterAK4CHSJets: Recluster AK4 PF CHS jets")
822 from RecoBTag.ONNXRuntime.pfParticleNetFromMiniAODAK4_cff
import _pfParticleNetFromMiniAODAK4CHSCentralJetTagsAll
823 from RecoBTag.ONNXRuntime.pfParticleNetFromMiniAODAK4_cff
import _pfParticleNetFromMiniAODAK4CHSForwardJetTagsAll
825 bTagDiscriminatorsForAK4CHS = cms.PSet(
826 foo = cms.vstring(_pfParticleNetFromMiniAODAK4CHSCentralJetTagsAll+_pfParticleNetFromMiniAODAK4CHSForwardJetTagsAll)
828 bTagDiscriminatorsForAK4CHS = bTagDiscriminatorsForAK4CHS.foo.value()
835 "inputCollection" :
"",
836 "genJetsCollection":
"AK4GenJetsNoNu",
837 "bTagDiscriminators": bTagDiscriminatorsForAK4CHS,
840 recoJetInfo = recoJA.addRecoJetCollection(proc, **cfg)
842 jetName = recoJetInfo.jetUpper
843 patJetFinalColl = recoJetInfo.patJetFinalCollection
849 proc.jetCorrFactorsNano.src=patJetFinalColl
850 proc.updatedJets.jetSource=patJetFinalColl
857 finalJetsCut =
"(pt >= 10) || ((pt < 10) && (genJetFwdRef().backRef().isNonnull()))" 859 finalJetsCut =
"(pt >= 10)" 861 proc.finalJets.cut = finalJetsCut
865 proc.corrT1METJetTable.cut =
"pt>=10 && pt<15 && abs(eta)<9.9" 871 proc.jetTable.src = cms.InputTag(
"finalJets")
872 proc.jetTable.cut = jetTableCut
873 proc.jetMCTable.cut = jetTableCut
874 proc.jetTable.name =
"JetCHS" 879 run2_nanoAOD_ANY.toModify(
881 src = cms.InputTag(
"linkedObjects",
"jets"),
888 jetTableDoc =
"AK4 PF CHS jets with JECs applied. Jets with pt >= 10 GeV are stored." 890 jetTableDoc +=
"For jets with pt < 10 GeV, only those matched to AK4 Gen jets are stored." 891 proc.jetTable.doc = jetTableDoc
893 proc.jetTable.variables.rawFactor.precision = 10
898 proc.jetTable.variables.chHadMultiplicity = PFJETVARS.chHadMultiplicity
899 proc.jetTable.variables.neHadMultiplicity = PFJETVARS.neHadMultiplicity
900 proc.jetTable.variables.hfHadMultiplicity = PFJETVARS.hfHadMultiplicity
901 proc.jetTable.variables.hfEMMultiplicity = PFJETVARS.hfEMMultiplicity
902 proc.jetTable.variables.muMultiplicity = PFJETVARS.muMultiplicity
903 proc.jetTable.variables.elMultiplicity = PFJETVARS.elMultiplicity
904 proc.jetTable.variables.phoMultiplicity = PFJETVARS.phoMultiplicity
909 proc.updatedJetsWithUserData.userFloats.chFPV1EF = cms.InputTag(
"jercVars:chargedFromPV1EnergyFraction")
910 proc.updatedJetsWithUserData.userFloats.chFPV2EF = cms.InputTag(
"jercVars:chargedFromPV2EnergyFraction")
911 proc.updatedJetsWithUserData.userFloats.chFPV3EF = cms.InputTag(
"jercVars:chargedFromPV3EnergyFraction")
912 proc.jetTable.variables.chFPV1EF =
Var(
"userFloat('chFPV1EF')", float, doc=
"charged fromPV==1 Energy Fraction (component of the total charged Energy Fraction).", precision= 6)
913 proc.jetTable.variables.chFPV2EF =
Var(
"userFloat('chFPV2EF')", float, doc=
"charged fromPV==2 Energy Fraction (component of the total charged Energy Fraction).", precision= 6)
914 proc.jetTable.variables.chFPV3EF =
Var(
"userFloat('chFPV3EF')", float, doc=
"charged fromPV==3 Energy Fraction (component of the total charged Energy Fraction).", precision= 6)
920 for varNames
in proc.jetTable.variables.parameterNames_():
921 if "btagDeepFlav" in varNames
or "btagRobustParT" in varNames
or "btagUParT" in varNames:
922 delattr(proc.jetTable.variables, varNames)
924 proc.jetTable.variables.btagPNetB =
Var(
"?pt>15 && bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralDiscriminatorsJetTags:BvsAll')>0?bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralDiscriminatorsJetTags:BvsAll'):-1",float,precision=10,doc=
"ParticleNet b vs. udscg")
925 proc.jetTable.variables.btagPNetCvL =
Var(
"?pt>15 && bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralDiscriminatorsJetTags:CvsL')>0?bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralDiscriminatorsJetTags:CvsL'):-1",float,precision=10,doc=
"ParticleNet c vs. udsg")
926 proc.jetTable.variables.btagPNetCvB =
Var(
"?pt>15 && bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralDiscriminatorsJetTags:CvsB')>0?bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralDiscriminatorsJetTags:CvsB'):-1",float,precision=10,doc=
"ParticleNet c vs. b")
927 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")
928 proc.jetTable.variables.btagPNetTauVJet =
Var(
"?pt>15 && bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralDiscriminatorsJetTags:TauVsJet')>0?bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralDiscriminatorsJetTags:TauVsJet'):-1",float,precision=10,doc=
"ParticleNet tau vs. jet")
929 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")
930 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.")
931 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")
936 hfJetShowerShapeforCustomNanoAOD =
"hfJetShowerShapeforCustomNanoAOD" 937 setattr(proc, hfJetShowerShapeforCustomNanoAOD, hfJetShowerShape.clone(jets=
"updatedJets", vertices=
"offlineSlimmedPrimaryVertices") )
938 proc.jetUserDataTask.add(getattr(proc, hfJetShowerShapeforCustomNanoAOD))
939 proc.updatedJetsWithUserData.userFloats.hfsigmaEtaEta = cms.InputTag(
'hfJetShowerShapeforCustomNanoAOD:sigmaEtaEta')
940 proc.updatedJetsWithUserData.userFloats.hfsigmaPhiPhi = cms.InputTag(
'hfJetShowerShapeforCustomNanoAOD:sigmaPhiPhi')
941 proc.updatedJetsWithUserData.userInts.hfcentralEtaStripSize = cms.InputTag(
'hfJetShowerShapeforCustomNanoAOD:centralEtaStripSize')
942 proc.updatedJetsWithUserData.userInts.hfadjacentEtaStripsSize = cms.InputTag(
'hfJetShowerShapeforCustomNanoAOD:adjacentEtaStripsSize')
943 proc.jetTable.variables.hfsigmaEtaEta =
Var(
"userFloat('hfsigmaEtaEta')",float,doc=
"sigmaEtaEta for HF jets (noise discriminating variable)",precision=10)
944 proc.jetTable.variables.hfsigmaPhiPhi =
Var(
"userFloat('hfsigmaPhiPhi')",float,doc=
"sigmaPhiPhi for HF jets (noise discriminating variable)",precision=10)
945 proc.jetTable.variables.hfcentralEtaStripSize =
Var(
"userInt('hfcentralEtaStripSize')", int, doc=
"eta size of the central tower strip in HF (noise discriminating variable) ")
946 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) ")
952 (~run2_nanoAOD_ANY).toReplaceWith(
953 proc.jetUserDataTask,
954 proc.jetUserDataTask.copyAndExclude([proc.bJetVars])
957 proc.jetTablesTask.copyAndExclude([proc.bjetNN, proc.cjetNN])
958 ).toModify(proc.updatedJetsWithUserData.userFloats,
960 leptonPtRelv0 =
None,
961 leptonPtRelInvv0 =
None,
969 proc.updatedJetsWithUserData.userInts,
973 proc.jetTable, externalVariables = cms.PSet()
979 proc.jetForMETTask.copyAndExclude([proc.corrT1METJetTable])
986 jetMCTableName =
"jet{}MCTable".
format(jetName)
987 setattr(proc, jetMCTableName, proc.jetMCTable.clone(
988 src = proc.jetTable.src,
989 name = proc.jetTable.name
992 getattr(proc,jetMCTableName).variables.genJetIdx = PFJETVARS.genJetIdx
994 jetMCTableTaskName =
"jet{}MCTablesTask".
format(jetName)
995 setattr(proc, jetMCTableTaskName, cms.Task(getattr(proc,jetMCTableName)))
997 (~run2_nanoAOD_ANY).toReplaceWith(
998 proc.nanoTableTaskFS,
999 proc.nanoTableTaskFS.copyAndAdd(getattr(proc,jetMCTableTaskName))
1006 Store a separate AK8 Puppi jet collection for JEC studies. 1007 Only minimal info are stored 1009 print(
"custom_jme_cff::AddNewAK8PuppiJetsForJEC: Make a new AK8 PF Puppi jet collection for JEC studies")
1015 "jet" :
"ak8pfpuppi",
1016 "inputCollection" :
"",
1017 "genJetsCollection":
"AK8GenJetsNoNu",
1018 "minPtFastjet" : 0.,
1020 recoJetInfo = recoJA.addRecoJetCollection(proc, **cfg)
1022 jetName = recoJetInfo.jetUpper
1023 payload = recoJetInfo.jetCorrPayload
1025 patJetFinalColl = recoJetInfo.patJetFinalCollection
1026 jetTablePrefix =
"FatJetForJEC" 1027 jetTableDoc =
"AK8 PF Puppi jets with JECs applied. Reclustered for JEC studies so only minimal info stored." 1031 jetName, payload, patJetFinalColl, jetTablePrefix, jetTableDoc, doPF=
True,
1032 doCalo=
False, ptcut=ptcut, doPUIDVar=
False, doQGL=
False, doBTag=
False, runOnMC=runOnMC
1039 Store an AK8 CHS jet collection for JEC studies. 1041 print(
"custom_jme_cff::AddNewAK8CHSJets: Make a new AK8 PF CHS jet collection for JEC studies")
1048 "inputCollection" :
"",
1049 "genJetsCollection":
"AK8GenJetsNoNu",
1050 "minPtFastjet" : 0.,
1052 recoJetInfo = recoJA.addRecoJetCollection(proc, **cfg)
1054 jetName = recoJetInfo.jetUpper
1055 payload = recoJetInfo.jetCorrPayload
1057 patJetFinalColl = recoJetInfo.patJetFinalCollection
1058 jetTablePrefix =
"FatJetCHS" 1059 jetTableDoc =
"AK8 PF CHS jets with JECs applied. Reclustered for JEC studies so only minimal info stored." 1063 jetName, payload, patJetFinalColl, jetTablePrefix, jetTableDoc, doPF=
True,
1064 doCalo=
False, ptcut=ptcut, doPUIDVar=
False, doQGL=
False, doBTag=
False, runOnMC=runOnMC
1071 Add more variables for AK8 PFPUPPI jets 1074 proc.fatJetTable.variables.rawFactor.precision = 10
1080 proc.fatJetTable.variables.chHEF =
Var(
"?isPFJet()?chargedHadronEnergyFraction():-1", float, doc=
"charged Hadron Energy Fraction", precision = 6)
1081 proc.fatJetTable.variables.neHEF =
Var(
"?isPFJet()?neutralHadronEnergyFraction():-1", float, doc=
"neutral Hadron Energy Fraction", precision = 6)
1082 proc.fatJetTable.variables.chEmEF =
Var(
"?isPFJet()?chargedEmEnergyFraction():-1", float, doc=
"charged Electromagnetic Energy Fraction", precision = 6)
1083 proc.fatJetTable.variables.neEmEF =
Var(
"?isPFJet()?neutralEmEnergyFraction():-1", float, doc=
"neutral Electromagnetic Energy Fraction", precision = 6)
1084 proc.fatJetTable.variables.muEF =
Var(
"?isPFJet()?muonEnergyFraction():-1", float, doc=
"muon Energy Fraction", precision = 6)
1085 proc.fatJetTable.variables.hfHEF =
Var(
"?isPFJet()?HFHadronEnergyFraction():-1", float, doc=
"energy fraction in forward hadronic calorimeter", precision = 6)
1086 proc.fatJetTable.variables.hfEmEF =
Var(
"?isPFJet()?HFEMEnergyFraction():-1", float, doc=
"energy fraction in forward EM calorimeter", precision = 6)
1087 proc.fatJetTable.variables.chHadMultiplicity =
Var(
"?isPFJet()?chargedHadronMultiplicity():-1",
"int16", doc=
"(Puppi-weighted) number of charged hadrons in the jet")
1088 proc.fatJetTable.variables.neHadMultiplicity =
Var(
"?isPFJet()?neutralHadronMultiplicity():-1",
"int16", doc=
"(Puppi-weighted) number of neutral hadrons in the jet")
1089 proc.fatJetTable.variables.hfHadMultiplicity =
Var(
"?isPFJet()?HFHadronMultiplicity():-1",
"int16", doc=
"(Puppi-weighted) number of HF Hadrons in the jet")
1090 proc.fatJetTable.variables.hfEMMultiplicity =
Var(
"?isPFJet()?HFEMMultiplicity():-1",
"int16", doc=
"(Puppi-weighted) number of HF EMs in the jet")
1091 proc.fatJetTable.variables.muMultiplicity =
Var(
"?isPFJet()?muonMultiplicity():-1",
"int16", doc=
"(Puppi-weighted) number of muons in the jet")
1092 proc.fatJetTable.variables.elMultiplicity =
Var(
"?isPFJet()?electronMultiplicity():-1",
"int16", doc=
"(Puppi-weighted) number of electrons in the jet")
1093 proc.fatJetTable.variables.phoMultiplicity =
Var(
"?isPFJet()?photonMultiplicity():-1",
"int16", doc=
"(Puppi-weighted) number of photons in the jet")
1105 Add genJet into custom nanoAOD 1108 genJetName = genJetInfo.jetUpper
1109 genJetAlgo = genJetInfo.jetAlgo
1110 genJetSize = genJetInfo.jetSize
1111 genJetSizeNr = genJetInfo.jetSizeNr
1112 genJetFinalColl =
"{}{}{}".
format(genJetAlgo.upper(), genJetSize,
"GenJetsNoNu")
1113 genJetTablePrefix = nanoInfo_genjets[genJetInfo.jet][
"name"]
1114 genJetTableDoc = nanoInfo_genjets[genJetInfo.jet][
"doc"]
1116 SaveGenJets(proc, genJetName, genJetAlgo, genJetSizeNr, genJetFinalColl, genJetTablePrefix, genJetTableDoc, runOnMC=
False)
1120 def SaveGenJets(proc, genJetName, genJetAlgo, genJetSizeNr, genJetFinalColl, genJetTablePrefix, genJetTableDoc, runOnMC=False):
1122 Schedule modules for a given genJet collection and save its variables into custom NanoAOD 1125 genJetTableName =
"jet{}Table".
format(genJetName)
1126 setattr(proc, genJetTableName, genJetTable.clone(
1127 src = genJetFinalColl,
1129 name = genJetTablePrefix,
1130 doc = genJetTableDoc,
1131 variables = GENJETVARS
1135 genJetFlavourAssociationName =
"genJet{}FlavourAssociation".
format(genJetName)
1136 setattr(proc, genJetFlavourAssociationName, genJetFlavourAssociation.clone(
1137 jets = getattr(proc,genJetTableName).src,
1138 jetAlgorithm = supportedJetAlgos[genJetAlgo],
1139 rParam = genJetSizeNr,
1143 genJetFlavourTableName =
"genJet{}FlavourTable".
format(genJetName)
1144 setattr(proc, genJetFlavourTableName, genJetFlavourTable.clone(
1145 name = getattr(proc,genJetTableName).name,
1146 src = getattr(proc,genJetTableName).src,
1147 cut = getattr(proc,genJetTableName).cut,
1148 jetFlavourInfos = genJetFlavourAssociationName,
1152 genJetTaskName =
"genJet{}Task".
format(genJetName)
1153 setattr(proc, genJetTaskName, cms.Task(
1154 getattr(proc,genJetTableName),
1155 getattr(proc,genJetFlavourAssociationName),
1156 getattr(proc,genJetFlavourTableName)
1159 proc.jetMCTask.add(getattr(proc,genJetTaskName))
1165 Recluster AK4 Gen jets and replace 1166 slimmedGenJets that is used as default 1167 to save AK4 Gen jets in NanoAODs. 1169 print(
"custom_jme_cff::ReclusterAK4GenJets: Recluster AK4 Gen jets")
1178 genJetInfo = genJA.addGenJetCollection(proc, **cfg)
1180 genJetName = genJetInfo.jetUpper
1181 genJetAlgo = genJetInfo.jetAlgo
1182 genJetSize = genJetInfo.jetSize
1183 genJetSizeNr = genJetInfo.jetSizeNr
1184 selectedGenJets =
"{}{}{}".
format(genJetAlgo.upper(), genJetSize,
"GenJetsNoNu")
1190 proc.genJetTable.src = selectedGenJets
1191 proc.genJetTable.cut =
"" 1192 proc.genJetTable.doc =
"AK4 Gen jets (made with visible genparticles) with pt > 5 GeV" 1194 genJetFlavourAssociationName =
"genJet{}FlavourAssociation".
format(genJetName)
1195 setattr(proc, genJetFlavourAssociationName, genJetFlavourAssociation.clone(
1196 jets = proc.genJetTable.src,
1197 jetAlgorithm = supportedJetAlgos[genJetAlgo],
1198 rParam = genJetSizeNr,
1201 proc.jetMCTask.add(getattr(proc, genJetFlavourAssociationName))
1206 Make a separate AK8 Gen jet collection for JEC studies. 1208 print(
"custom_jme_cff::AddNewAK8GenJetsForJEC: Add new AK8 Gen jets for JEC studies")
1215 "minPtFastjet" : 10.
1217 genJetInfo = genJA.addGenJetCollection(proc, **cfg)
1219 genJetName = genJetInfo.jetUpper
1220 genJetAlgo = genJetInfo.jetAlgo
1221 genJetSize = genJetInfo.jetSize
1222 genJetSizeNr = genJetInfo.jetSizeNr
1223 genJetFinalColl =
"{}{}{}".
format(genJetAlgo.upper(), genJetSize,
"GenJetsNoNu")
1224 genJetTablePrefix =
"GenJetAK8ForJEC" 1225 genJetTableDoc =
"AK8 Gen jets (made with visible genparticles) with pt > 10 GeV. Reclustered for JEC studies." 1227 SaveGenJets(proc, genJetName, genJetAlgo, genJetSizeNr, genJetFinalColl, genJetTablePrefix, genJetTableDoc, runOnMC=
False)
1232 proc.genJetTable.variables.nConstituents = GENJETVARS.nConstituents
1236 proc.genJetAK8Table.variables.nConstituents = GENJETVARS.nConstituents
1242 proc.jetMCTable.variables.genJetIdx = PFJETVARS.genJetIdx
1252 Remove default pt cuts for all jets set in jets_cff.py 1255 proc.finalJets.cut =
"" 1256 proc.finalJetsPuppi.cut =
"" 1257 proc.finalJetsAK8.cut =
"" 1258 proc.genJetTable.cut =
"" 1259 proc.genJetFlavourTable.cut =
"" 1260 proc.genJetAK8Table.cut =
"" 1261 proc.genJetAK8FlavourTable.cut =
"" 1267 Setup packedpuppi and packedpuppiNoLep to recompute puppi weights 1269 if hasattr(proc,
"packedpuppi"):
1270 proc.packedpuppi.useExistingWeights =
False 1271 if hasattr(proc,
"packedpuppiNoLep"):
1272 proc.packedpuppiNoLep.useExistingWeights =
False 1277 Recompute PuppiMET. This is useful when puppi weights are recomputed. 1280 if hasattr(proc,
"NANOEDMAODoutput")
or hasattr(proc,
"NANOAODoutput"):
1283 from PhysicsTools.PatUtils.tools.runMETCorrectionsAndUncertainties
import runMetCorAndUncFromMiniAOD
1285 jetCollUnskimmed=
'updatedJetsPuppi',metType=
'Puppi',postfix=
'Puppi',jetFlavor=
'AK4PFPuppi',
1286 puppiProducerLabel=
'packedpuppi',puppiProducerForMETLabel=
'packedpuppiNoLep',
1287 recoMetFromPFCs=
True 1293 Recompute Puppi weights PuppiMET. 1307 if hasattr(process,
"NANOEDMAODoutput")
or hasattr(process,
"NANOAODoutput"):
1319 genJA = GenJetAdder()
1341 for jetConfig
in config_genjets:
1342 cfg = { k : v
for k, v
in jetConfig.items()
if k !=
"enabled"}
1343 genJetInfo = genJA.addGenJetCollection(process, **cfg)
1351 recoJA = RecoJetAdder(runOnMC=runOnMC)
1371 for jetConfig
in config_recojets:
1372 cfg = { k : v
for k, v
in jetConfig.items()
if k !=
"enabled"}
1373 recoJetInfo = recoJA.addRecoJetCollection(process, **cfg)
1381 def addAK4JetTasks(proc, addAK4CHSJetTasks, addAK4PuppiJetTasks):
1382 if addAK4CHSJetTasks:
1383 proc.nanoTableTaskCommon.add(proc.jetTask)
1384 proc.nanoTableTaskCommon.add(proc.jetTablesTask)
1385 proc.nanoTableTaskCommon.add(proc.jetForMETTask)
1386 if addAK4PuppiJetTasks:
1387 proc.nanoTableTaskCommon.add(proc.jetPuppiTask)
1388 proc.nanoTableTaskCommon.add(proc.jetPuppiTablesTask)
1389 proc.nanoTableTaskCommon.add(proc.jetPuppiForMETTask)
1392 jmeNano_addAK4JetTasks_switch = cms.PSet(
1393 jmeNano_addAK4CHS_switch = cms.untracked.bool(
True),
1394 jmeNano_addAK4Puppi_switch = cms.untracked.bool(
False)
1396 run2_nanoAOD_ANY.toModify(jmeNano_addAK4JetTasks_switch,
1397 jmeNano_addAK4CHS_switch =
False,
1398 jmeNano_addAK4Puppi_switch =
True 1400 process = addAK4JetTasks(process,
1401 addAK4CHSJetTasks = jmeNano_addAK4JetTasks_switch.jmeNano_addAK4CHS_switch,
1402 addAK4PuppiJetTasks = jmeNano_addAK4JetTasks_switch.jmeNano_addAK4Puppi_switch,
1409 process.puTable.savePtHatMax =
True 1415 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)