Skip to content

Commit f3dfef0

Browse files
authored
Merge pull request cms-sw#42728 from nurfikri89/from133X_202309042300_nanoDev_jmeNanoV11
[NanoAOD, JMENano] Updates for Nano and JMENano
2 parents 2e41ffa + f3b31fa commit f3dfef0

File tree

10 files changed

+316
-246
lines changed

10 files changed

+316
-246
lines changed

PhysicsTools/NanoAOD/python/custom_jme_cff.py

Lines changed: 80 additions & 111 deletions
Large diffs are not rendered by default.

PhysicsTools/NanoAOD/python/jetsAK4_CHS_cff.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -171,11 +171,15 @@
171171
hfcentralEtaStripSize = Var("userInt('hfJetShowerShape:centralEtaStripSize')", int, doc="eta size of the central tower strip in HF (noise discriminating variable) "),
172172
hfadjacentEtaStripsSize = Var("userInt('hfJetShowerShape:adjacentEtaStripsSize')", int, doc="eta size of the strips next to the central tower strip in HF (noise discriminating variable) "),
173173
nConstituents = Var("numberOfDaughters()","uint8",doc="Number of particles in the jet"),
174+
chMultiplicity = Var("chargedMultiplicity()","uint8",doc="Number of charged particles in the jet"),
175+
neMultiplicity = Var("neutralMultiplicity()","uint8",doc="Number of neutral particles in the jet"),
174176
rawFactor = Var("1.-jecFactor('Uncorrected')",float,doc="1 - Factor to get back to raw pT",precision=6),
175177
chHEF = Var("chargedHadronEnergyFraction()", float, doc="charged Hadron Energy Fraction", precision= 6),
176178
neHEF = Var("neutralHadronEnergyFraction()", float, doc="neutral Hadron Energy Fraction", precision= 6),
177179
chEmEF = Var("chargedEmEnergyFraction()", float, doc="charged Electromagnetic Energy Fraction", precision= 6),
178180
neEmEF = Var("neutralEmEnergyFraction()", float, doc="neutral Electromagnetic Energy Fraction", precision= 6),
181+
hfHEF = Var("HFHadronEnergyFraction()",float,doc="hadronic Energy Fraction in HF",precision= 6),
182+
hfEmEF = Var("HFEMEnergyFraction()",float,doc="electromagnetic Energy Fraction in HF",precision= 6),
179183
muEF = Var("muonEnergyFraction()", float, doc="muon Energy Fraction", precision= 6),
180184
chFPV0EF = Var("userFloat('chFPV0EF')", float, doc="charged fromPV==0 Energy Fraction (energy excluded from CHS jets). Previously called betastar.", precision= 6),
181185
)
@@ -206,20 +210,30 @@
206210
btagCSVV2 = Var("bDiscriminator('pfCombinedInclusiveSecondaryVertexV2BJetTags')",float,doc=" pfCombinedInclusiveSecondaryVertexV2 b-tag discriminator (aka CSVV2)",precision=10),
207211
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),
208212
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),
209-
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)
213+
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),
214+
# Remove for V9
215+
chMultiplicity = None,
216+
neMultiplicity = None,
217+
hfHEF = None,
218+
hfEmEF = None
210219
)
211220

212221
(run3_nanoAOD_122 | run3_nanoAOD_124).toModify(
213-
# New ParticleNet trainings are not available in MiniAOD until Run3 13X
214222
jetTable.variables,
223+
# New ParticleNet trainings are not available in MiniAOD until Run3 13X
215224
btagPNetB = None,
216225
btagPNetCvL = None,
217226
btagPNetCvB = None,
218227
btagPNetQvG = None,
219228
btagPNetTauVJet = None,
220229
PNetRegPtRawCorr = None,
221230
PNetRegPtRawCorrNeutrino = None,
222-
PNetRegPtRawRes = None
231+
PNetRegPtRawRes = None,
232+
# Remove for V11 and earlier Run3 versions
233+
chMultiplicity = None,
234+
neMultiplicity = None,
235+
hfHEF = None,
236+
hfEmEF = None
223237
)
224238

225239
bjetNN = cms.EDProducer("BJetEnergyRegressionMVA",

PhysicsTools/NanoAOD/python/jetsAK4_Puppi_cff.py

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,24 @@
4141
src = cms.InputTag("updatedJetsPuppi")
4242
)
4343

44+
run2_jme_2016.toModify(
45+
tightJetPuppiId.filterParams, version = "RUN2UL16PUPPI"
46+
).toModify(
47+
tightJetPuppiIdLepVeto.filterParams, version = "RUN2UL16PUPPI"
48+
)
49+
50+
(run2_jme_2017 | run2_jme_2018 | run3_nanoAOD_122 | run3_nanoAOD_124).toModify(
51+
tightJetPuppiId.filterParams, version = "RUN2ULPUPPI"
52+
).toModify(
53+
tightJetPuppiIdLepVeto.filterParams, version = "RUN2ULPUPPI"
54+
)
55+
56+
run3_jme_Winter22runsBCDEprompt.toModify(
57+
tightJetPuppiId.filterParams, version = "RUN3WINTER22PUPPIrunsBCDEprompt"
58+
).toModify(
59+
tightJetPuppiIdLepVeto.filterParams, version = "RUN3WINTER22PUPPIrunsBCDEprompt"
60+
)
61+
4462
#HF shower shape recomputation
4563
from RecoJets.JetProducers.hfJetShowerShape_cfi import hfJetShowerShape
4664
hfJetPuppiShowerShapeforNanoAOD = hfJetShowerShape.clone(jets="updatedJetsPuppi",vertices="offlineSlimmedPrimaryVertices")
@@ -103,11 +121,15 @@
103121
hfcentralEtaStripSize = Var("userInt('hfcentralEtaStripSize')", int, doc="eta size of the central tower strip in HF (noise discriminating variable)"),
104122
hfadjacentEtaStripsSize = Var("userInt('hfadjacentEtaStripsSize')", int, doc="eta size of the strips next to the central tower strip in HF (noise discriminating variable)"),
105123
nConstituents = Var("numberOfDaughters()","uint8",doc="Number of particles in the jet"),
124+
chMultiplicity = Var("chargedMultiplicity()","uint8",doc="(Puppi-weighted) Number of charged particles in the jet"),
125+
neMultiplicity = Var("neutralMultiplicity()","uint8",doc="(Puppi-weighted) Number of neutral particles in the jet"),
106126
rawFactor = Var("1.-jecFactor('Uncorrected')",float,doc="1 - Factor to get back to raw pT",precision=6),
107127
chHEF = Var("chargedHadronEnergyFraction()", float, doc="charged Hadron Energy Fraction", precision= 6),
108128
neHEF = Var("neutralHadronEnergyFraction()", float, doc="neutral Hadron Energy Fraction", precision= 6),
109129
chEmEF = Var("chargedEmEnergyFraction()", float, doc="charged Electromagnetic Energy Fraction", precision= 6),
110130
neEmEF = Var("neutralEmEnergyFraction()", float, doc="neutral Electromagnetic Energy Fraction", precision= 6),
131+
hfHEF = Var("HFHadronEnergyFraction()",float,doc="hadronic Energy Fraction in HF",precision= 6),
132+
hfEmEF = Var("HFEMEnergyFraction()",float,doc="electromagnetic Energy Fraction in HF",precision= 6),
111133
muEF = Var("muonEnergyFraction()", float, doc="muon Energy Fraction", precision= 6),
112134
)
113135
)
@@ -121,16 +143,21 @@
121143
)
122144

123145
(run3_nanoAOD_122 | run3_nanoAOD_124).toModify(
124-
# New ParticleNet trainings are not available in MiniAOD until Run3 13X
125146
jetPuppiTable.variables,
147+
# New ParticleNet trainings are not available in MiniAOD until Run3 13X
126148
btagPNetB = None,
127149
btagPNetCvL = None,
128150
btagPNetCvB = None,
129151
btagPNetQvG = None,
130152
btagPNetTauVJet = None,
131153
PNetRegPtRawCorr = None,
132154
PNetRegPtRawCorrNeutrino = None,
133-
PNetRegPtRawRes = None
155+
PNetRegPtRawRes = None,
156+
# Remove for V11 and earlier Run3 versions
157+
chMultiplicity = None,
158+
neMultiplicity = None,
159+
hfHEF = None,
160+
hfEmEF = None
134161
)
135162

136163
#jets are not as precise as muons
@@ -177,7 +204,7 @@ def nanoAOD_addDeepInfoAK4(process,addParticleNet,addRobustParTAK4=False):
177204
#################################################
178205

179206
################################################################################
180-
# JETS FOR MET type1
207+
# JETS FOR MET type1
181208
################################################################################
182209
basicJetsPuppiForMetForT1METNano = cms.EDProducer("PATJetCleanerForType1MET",
183210
src = updatedJetsPuppiWithUserData.src,

PhysicsTools/NanoAOD/python/jetsAK8_cff.py

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
tightJetIdLepVetoAK8.filterParams, version = "RUN2UL16PUPPI"
5555
)
5656

57-
(run2_jme_2017 | run2_jme_2018).toModify(
57+
(run2_jme_2017 | run2_jme_2018 | run3_nanoAOD_122 | run3_nanoAOD_124).toModify(
5858
tightJetIdAK8.filterParams, version = "RUN2ULPUPPI"
5959
).toModify(
6060
tightJetIdLepVetoAK8.filterParams, version = "RUN2ULPUPPI"
@@ -132,6 +132,13 @@
132132
subJetIdx2 = Var("?nSubjetCollections()>0 && subjets('SoftDropPuppi').size()>1?subjets('SoftDropPuppi')[1].key():-1", "int16",
133133
doc="index of second subjet"),
134134
nConstituents = Var("numberOfDaughters()","uint8",doc="Number of particles in the jet"),
135+
chMultiplicity = Var("?isPFJet()?chargedMultiplicity():-1","int16",doc="(Puppi-weighted) Number of charged particles in the jet"),
136+
neMultiplicity = Var("?isPFJet()?neutralMultiplicity():-1","int16",doc="(Puppi-weighted) Number of neutral particles in the jet"),
137+
chHEF = Var("?isPFJet()?chargedHadronEnergyFraction():-1", float, doc="charged Hadron Energy Fraction", precision=6),
138+
neHEF = Var("?isPFJet()?neutralHadronEnergyFraction():-1", float, doc="neutral Hadron Energy Fraction", precision=6),
139+
chEmEF = Var("?isPFJet()?chargedEmEnergyFraction():-1", float, doc="charged Electromagnetic Energy Fraction", precision=6),
140+
neEmEF = Var("?isPFJet()?neutralEmEnergyFraction():-1", float, doc="neutral Electromagnetic Energy Fraction", precision=6),
141+
muEF = Var("?isPFJet()?muonEnergyFraction():-1", float, doc="muon Energy Fraction", precision=6),
135142
),
136143
externalVariables = cms.PSet(
137144
lsf3 = ExtVar(cms.InputTag("lepInAK8JetVars:lsf3"),float, doc="Lepton Subjet Fraction (3 subjets)",precision=10),
@@ -142,11 +149,19 @@
142149

143150
run2_nanoAOD_ANY.toModify(
144151
fatJetTable.variables,
145-
btagCSVV2 = Var("bDiscriminator('pfCombinedInclusiveSecondaryVertexV2BJetTags')",float,doc=" pfCombinedInclusiveSecondaryVertexV2 b-tag discriminator (aka CSVV2)",precision=10)
152+
btagCSVV2 = Var("bDiscriminator('pfCombinedInclusiveSecondaryVertexV2BJetTags')",float,doc=" pfCombinedInclusiveSecondaryVertexV2 b-tag discriminator (aka CSVV2)",precision=10),
153+
# Remove for V9
154+
chMultiplicity = None,
155+
neMultiplicity = None,
156+
chHEF = None,
157+
neHEF = None,
158+
chEmEF = None,
159+
neEmEF = None,
160+
muEF = None
146161
)
147162
(run3_nanoAOD_122 | run3_nanoAOD_124).toModify(
148-
# New ParticleNet trainings are not available in MiniAOD until Run3 13X
149163
fatJetTable.variables,
164+
# New ParticleNet trainings are not available in MiniAOD until Run3 13X
150165
particleNet_QCD = None,
151166
particleNet_QCD2HF = None,
152167
particleNet_QCD1HF = None,
@@ -159,11 +174,18 @@
159174
particleNet_XttVsQCD = None,
160175
particleNet_XtmVsQCD = None,
161176
particleNet_XteVsQCD = None,
177+
# Remove for V11 and earlier versions
178+
chMultiplicity = None,
179+
neMultiplicity = None,
180+
chHEF = None,
181+
neHEF = None,
182+
chEmEF = None,
183+
neEmEF = None,
184+
muEF = None
162185
)
163186

164187
(run2_nanoAOD_106Xv2 | run3_nanoAOD_122 | run3_nanoAOD_124).toModify(
165188
fatJetTable.variables,
166-
167189
# Restore taggers that were decommisionned for Run-3
168190
deepTag_TvsQCD = Var("bDiscriminator('pfDeepBoostedDiscriminatorsJetTags:TvsQCD')",float,doc="DeepBoostedJet tagger top vs QCD discriminator",precision=10),
169191
deepTag_WvsQCD = Var("bDiscriminator('pfDeepBoostedDiscriminatorsJetTags:WvsQCD')",float,doc="DeepBoostedJet tagger W vs QCD discriminator",precision=10),
@@ -186,8 +208,6 @@
186208
particleNetLegacy_Xcc = Var("bDiscriminator('pfMassDecorrelatedParticleNetJetTags:probXcc')",float,doc="Mass-decorrelated ParticleNet Legacy Run-2 tagger raw X->cc score. For X->cc vs QCD tagging, use Xcc/(Xcc+QCD)",precision=10),
187209
particleNetLegacy_Xqq = Var("bDiscriminator('pfMassDecorrelatedParticleNetJetTags:probXqq')",float,doc="Mass-decorrelated ParticleNet Legacy Run-2 tagger raw X->qq (uds) score. For X->qq vs QCD tagging, use Xqq/(Xqq+QCD). For W vs QCD tagging, use (Xcc+Xqq)/(Xcc+Xqq+QCD)",precision=10),
188210
particleNetLegacy_QCD = Var("bDiscriminator('pfMassDecorrelatedParticleNetJetTags:probQCDbb')+bDiscriminator('pfMassDecorrelatedParticleNetJetTags:probQCDcc')+bDiscriminator('pfMassDecorrelatedParticleNetJetTags:probQCDb')+bDiscriminator('pfMassDecorrelatedParticleNetJetTags:probQCDc')+bDiscriminator('pfMassDecorrelatedParticleNetJetTags:probQCDothers')",float,doc="Mass-decorrelated ParticleNet Legacy Run-2 tagger raw QCD score",precision=10),
189-
190-
191211
)
192212

193213
##############################################################
@@ -267,10 +287,11 @@ def nanoAOD_addDeepInfoAK8(process, addDeepBTag, addDeepBoostedJet, addDeepDoubl
267287
subJetTable = simpleCandidateFlatTableProducer.clone(
268288
src = cms.InputTag("slimmedJetsAK8PFPuppiSoftDropPacked","SubJets"),
269289
name = cms.string("SubJet"),
270-
doc = cms.string("slimmedJetsAK8, i.e. ak8 fat jets for boosted analysis"),
290+
doc = cms.string("slimmedJetsAK8PFPuppiSoftDropPacked::SubJets, i.e. soft-drop subjets for ak8 fat jets for boosted analysis"),
271291
variables = cms.PSet(P4Vars,
272292
btagDeepB = Var("bDiscriminator('pfDeepCSVJetTags:probb')+bDiscriminator('pfDeepCSVJetTags:probbb')",float,doc="DeepCSV b+bb tag discriminator",precision=10),
273293
rawFactor = Var("1.-jecFactor('Uncorrected')",float,doc="1 - Factor to get back to raw pT",precision=6),
294+
area = Var("jetArea()", float, doc="jet catchment area, for JECs",precision=10),
274295
tau1 = Var("userFloat('NjettinessAK8Subjets:tau1')",float, doc="Nsubjettiness (1 axis)",precision=10),
275296
tau2 = Var("userFloat('NjettinessAK8Subjets:tau2')",float, doc="Nsubjettiness (2 axis)",precision=10),
276297
tau3 = Var("userFloat('NjettinessAK8Subjets:tau3')",float, doc="Nsubjettiness (3 axis)",precision=10),
@@ -285,6 +306,11 @@ def nanoAOD_addDeepInfoAK8(process, addDeepBTag, addDeepBoostedJet, addDeepDoubl
285306
btagCSVV2 = Var("bDiscriminator('pfCombinedInclusiveSecondaryVertexV2BJetTags')",float,doc=" pfCombinedInclusiveSecondaryVertexV2 b-tag discriminator (aka CSVV2)",precision=10)
286307
)
287308

309+
(run2_nanoAOD_106Xv2 | run3_nanoAOD_122 | run3_nanoAOD_124).toModify(
310+
subJetTable.variables,
311+
area = None,
312+
)
313+
288314
#jets are not as precise as muons
289315
fatJetTable.variables.pt.precision=10
290316
subJetTable.variables.pt.precision=10

PhysicsTools/NanoAOD/python/nanoDQM_cff.py

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
Plot1D('eCorr', 'eCorr', 20, 0.8, 1.2, 'ratio of the calibrated energy/miniaod energy'),
3131
])
3232
run2_egamma.toModify(
33-
nanoDQM.vplots.Electron,
33+
nanoDQM.vplots.Electron,
3434
plots = _Electron_Run2_plots
3535
)
3636

@@ -53,13 +53,14 @@ def _match(name):
5353
Plot1D('eCorr', 'eCorr', 20, 0.8, 1.2, 'ratio of the calibrated energy/miniaod energy'),
5454
])
5555
run2_egamma.toModify(
56-
nanoDQM.vplots.Photon,
56+
nanoDQM.vplots.Photon,
5757
plots = _Photon_Run2_plots
5858
)
5959

6060
_FatJet_Run2_plots = cms.VPSet()
6161
for plot in nanoDQM.vplots.FatJet.plots:
62-
_FatJet_Run2_plots.append(plot)
62+
if 'EF' not in plot.name.value():
63+
_FatJet_Run2_plots.append(plot)
6364
_FatJet_Run2_plots.extend([
6465
Plot1D('btagCSVV2', 'btagCSVV2', 20, -1, 1, ' pfCombinedInclusiveSecondaryVertexV2 b-tag discriminator (aka CSVV2)'),
6566
Plot1D('deepTagMD_H4qvsQCD', 'deepTagMD_H4qvsQCD', 20, 0, 1, 'Mass-decorrelated DeepBoostedJet tagger H->4q vs QCD discriminator'),
@@ -87,12 +88,15 @@ def _match(name):
8788

8889
_FatJet_EarlyRun3_plots = cms.VPSet()
8990
for plot in _FatJet_Run2_plots:
90-
if 'particleNet_' not in plot.name.value() and 'btagCSVV2' not in plot.name.value():
91+
if 'particleNet_' not in plot.name.value() and 'btagCSVV2' not in plot.name.value() \
92+
and 'Multiplicity' not in plot.name.value() and 'EF' not in plot.name.value():
9193
_FatJet_EarlyRun3_plots.append(plot)
9294

9395
_Jet_Run2_plots = cms.VPSet()
9496
for plot in nanoDQM.vplots.Jet.plots:
9597
_Jet_Run2_plots.append(plot)
98+
if 'Multiplicity' not in plot.name.value() and 'hfHEF' not in plot.name.value() and 'hfEmEF' not in plot.name.value():
99+
_Jet_Run2_plots.append(plot)
96100
_Jet_Run2_plots.extend([
97101
Plot1D('btagCSVV2', 'btagCSVV2', 20, -1, 1, ' pfCombinedInclusiveSecondaryVertexV2 b-tag discriminator (aka CSVV2)'),
98102
Plot1D('btagCMVA', 'btagCMVA', 20, -1, 1, 'CMVA V2 btag discriminator'),
@@ -104,7 +108,8 @@ def _match(name):
104108

105109
_Jet_EarlyRun3_plots = cms.VPSet()
106110
for plot in nanoDQM.vplots.Jet.plots:
107-
if 'PNet' not in plot.name.value():
111+
if 'PNet' not in plot.name.value() and 'Multiplicity' not in plot.name.value() \
112+
and 'hfHEF' not in plot.name.value() and 'hfEmEF' not in plot.name.value():
108113
_Jet_EarlyRun3_plots.append(plot)
109114

110115
_SubJet_Run2_plots = cms.VPSet()
@@ -113,6 +118,10 @@ def _match(name):
113118
_SubJet_Run2_plots.extend([
114119
Plot1D('btagCSVV2', 'btagCSVV2', 20, -1, 1, ' pfCombinedInclusiveSecondaryVertexV2 b-tag discriminator (aka CSVV2)'),
115120
])
121+
_SubJet_EarlyRun3_plots = cms.VPSet()
122+
for plot in nanoDQM.vplots.SubJet.plots:
123+
if 'area' not in plot.name.value():
124+
_SubJet_EarlyRun3_plots.append(plot)
116125

117126
run2_nanoAOD_ANY.toModify(
118127
nanoDQM.vplots.FatJet,
@@ -131,6 +140,9 @@ def _match(name):
131140
).toModify(
132141
nanoDQM.vplots.Jet,
133142
plots = _Jet_EarlyRun3_plots
143+
).toModify(
144+
nanoDQM.vplots.SubJet,
145+
plots = _SubJet_EarlyRun3_plots
134146
)
135147

136148
## MC

0 commit comments

Comments
 (0)