Skip to content

Commit a2883eb

Browse files
authored
Merge pull request #46191 from nurfikri89/from142X202409302300_subjetbtag_puId
[MiniAOD, NanoAOD] Update AK8 subjet b-taggers, add pileup jet ID
2 parents dea80b6 + c661187 commit a2883eb

File tree

5 files changed

+51
-12
lines changed

5 files changed

+51
-12
lines changed

PhysicsTools/NanoAOD/python/jetsAK4_Puppi_cff.py

+7
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@
9090
UParTAK4RegPtRawCorr = Var("?bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:ptcorr')>0?bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:ptcorr'):-1",float,precision=10,doc="UnifiedParT universal flavor-aware visible pT regression (no neutrinos), correction relative to raw jet pT"),
9191
UParTAK4RegPtRawCorrNeutrino = Var("?bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:ptnu')>0?bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:ptnu'):-1",float,precision=10,doc="UnifiedParT universal flavor-aware pT regression neutrino correction, relative to visible. To apply full regression, multiply raw jet pT by both UParTAK4RegPtRawCorr and UParTAK4RegPtRawCorrNeutrino."),
9292
UParTAK4RegPtRawRes = Var("?(bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:ptreshigh')+bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:ptreslow'))>0?0.5*(bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:ptreshigh')-bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:ptreslow')):-1",float,precision=10,doc="UnifiedParT universal flavor-aware jet pT resolution estimator, (q84 - q16)/2"),
93+
puIdDisc = Var("userFloat('pileupJetIdPuppi:fullDiscriminant')", float,doc="Pileup ID BDT discriminant with 133X Winter24 PuppiV18 training",precision=10),
9394
hfsigmaEtaEta = Var("userFloat('hfsigmaEtaEta')",float,doc="sigmaEtaEta for HF jets (noise discriminating variable)",precision=10),
9495
hfsigmaPhiPhi = Var("userFloat('hfsigmaPhiPhi')",float,doc="sigmaPhiPhi for HF jets (noise discriminating variable)",precision=10),
9596
hfcentralEtaStripSize = Var("userInt('hfcentralEtaStripSize')", int, doc="eta size of the central tower strip in HF (noise discriminating variable)"),
@@ -134,6 +135,12 @@
134135
hfEmEF = None
135136
)
136137

138+
run3_nanoAOD_pre142X.toModify(
139+
jetPuppiTable.variables,
140+
puIdDisc = None,
141+
)
142+
143+
137144
#jets are not as precise as muons
138145
jetPuppiTable.variables.pt.precision=10
139146

PhysicsTools/NanoAOD/python/jetsAK8_cff.py

+10-1
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,8 @@ def nanoAOD_addDeepInfoAK8(process, addDeepBTag, addDeepBoostedJet, addDeepDoubl
246246
name = cms.string("SubJet"),
247247
doc = cms.string("slimmedJetsAK8PFPuppiSoftDropPacked::SubJets, i.e. soft-drop subjets for ak8 fat jets for boosted analysis"),
248248
variables = cms.PSet(P4Vars,
249-
btagDeepB = Var("bDiscriminator('pfDeepCSVJetTags:probb')+bDiscriminator('pfDeepCSVJetTags:probbb')",float,doc="DeepCSV b+bb tag discriminator",precision=10),
249+
btagDeepFlavB = Var("bDiscriminator('pfDeepFlavourJetTags:probb')+bDiscriminator('pfDeepFlavourJetTags:probbb')+bDiscriminator('pfDeepFlavourJetTags:problepb')",float,doc="DeepJet b+bb+lepb tag discriminator",precision=10),
250+
btagUParTAK4B = Var("?bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:BvsAll')>0?bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:BvsAll'):-1",float,precision=10,doc="UnifiedParT b vs. udscg"),
250251
rawFactor = Var("1.-jecFactor('Uncorrected')",float,doc="1 - Factor to get back to raw pT",precision=6),
251252
area = Var("jetArea()", float, doc="jet catchment area, for JECs",precision=10),
252253
tau1 = Var("userFloat('NjettinessAK8Subjets:tau1')",float, doc="Nsubjettiness (1 axis)",precision=10),
@@ -268,6 +269,14 @@ def nanoAOD_addDeepInfoAK8(process, addDeepBTag, addDeepBoostedJet, addDeepDoubl
268269
area = None,
269270
)
270271

272+
run3_nanoAOD_pre142X.toModify(
273+
subJetTable.variables,
274+
btagDeepFlavB = None,
275+
btagUParTAK4B = None,
276+
btagDeepB = Var("bDiscriminator('pfDeepCSVJetTags:probb')+bDiscriminator('pfDeepCSVJetTags:probbb')",float,doc="DeepCSV b+bb tag discriminator",precision=10),
277+
)
278+
279+
271280
#jets are not as precise as muons
272281
fatJetTable.variables.pt.precision=10
273282
subJetTable.variables.pt.precision=10

PhysicsTools/NanoAOD/python/nanoDQM_cff.py

+19
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,10 @@ def _match(name):
222222
and 'hfHEF' not in plot.name.value() and 'hfEmEF' not in plot.name.value():
223223
_Jet_EarlyRun3_plots.append(plot)
224224

225+
_Jet_pre142X_plots = cms.VPSet()
226+
for plot in nanoDQM.vplots.Jet.plots:
227+
if 'puIdDisc' not in plot.name.value():
228+
_Jet_pre142X_plots.append(plot)
225229

226230
_SubJet_Run2_plots = cms.VPSet()
227231
for plot in nanoDQM.vplots.SubJet.plots:
@@ -234,6 +238,14 @@ def _match(name):
234238
if 'area' not in plot.name.value():
235239
_SubJet_EarlyRun3_plots.append(plot)
236240

241+
_SubJet_pre142X_plots = cms.VPSet()
242+
for plot in nanoDQM.vplots.SubJet.plots:
243+
if 'btagDeepFlavB' not in plot.name.value() and 'btagUParTAK4B' not in plot.name.value():
244+
_SubJet_pre142X_plots.append(plot)
245+
_SubJet_pre142X_plots.extend([
246+
Plot1D('btagDeepB', 'btagDeepB', 20, -1, 1, 'Deep B+BB btag discriminator'),
247+
])
248+
237249
run2_nanoAOD_ANY.toModify(
238250
nanoDQM.vplots.FatJet,
239251
plots = _FatJet_Run2_plots
@@ -256,6 +268,13 @@ def _match(name):
256268
plots = _SubJet_EarlyRun3_plots
257269
)
258270

271+
run3_nanoAOD_pre142X.toModify(
272+
nanoDQM.vplots.Jet,
273+
plots = _Jet_pre142X_plots
274+
).toModify(
275+
nanoDQM.vplots.SubJet,
276+
plots = _SubJet_pre142X_plots
277+
)
259278

260279
_Pileup_pre13X_plots = cms.VPSet()
261280
for plot in nanoDQM.vplots.Pileup.plots:

PhysicsTools/NanoAOD/python/nanoDQM_cfi.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -448,6 +448,7 @@
448448
Plot1D('PNetRegPtRawCorr', 'PNetRegPtRawCorr', 20, 0, 2, 'ParticleNet visible pT regression, correction relative to raw pT'),
449449
Plot1D('PNetRegPtRawCorrNeutrino', 'PNetRegPtRawCorrNeutrino', 20, 0, 2, 'ParticleNet neutrino pT correction, relative to regressed visible pT'),
450450
Plot1D('PNetRegPtRawRes', 'PNetRegPtRawRes', 20, 0, 0.5, 'ParticleNet per-jet resolution estimator: (q84 - q16)/2'),
451+
Plot1D('puIdDisc', 'puIdDisc', 20, -1., 1., 'Pileup ID BDT discriminant with 133X Winter24 PuppiV18 training'),
451452
Plot1D('chEmEF', 'chEmEF', 20, 0, 1, 'charged Electromagnetic Energy Fraction'),
452453
Plot1D('chFPV0EF', 'chFPV0EF', 20, 0, 2, 'charged fromPV==0 Energy Fraction (energy excluded from CHS jets). Previously called betastar.'),
453454
Plot1D('chHEF', 'chHEF', 20, 0, 2, 'charged Hadron Energy Fraction'),
@@ -815,8 +816,8 @@
815816
sels = cms.PSet(),
816817
plots = cms.VPSet(
817818
Count1D('_size', 9, -0.5, 8.5, 'slimmedJetsAK8PFPuppiSoftDropPacked::SubJets, i.e. soft-drop subjets for ak8 fat jets for boosted'),
818-
Plot1D('btagCMVA', 'btagCMVA', 20, -1, 1, 'CMVA V2 btag discriminator'),
819-
Plot1D('btagDeepB', 'btagDeepB', 20, -1, 1, 'Deep B+BB btag discriminator'),
819+
Plot1D('btagDeepFlavB', 'btagDeepFlavB', 20, -1, 1, 'DeepJet b+bb+lepb tag discriminator'),
820+
Plot1D('btagUParTAK4B', 'btagUParTAK4B', 20, -1, 1, 'UnifiedParT b vs. udscg'),
820821
Plot1D('eta', 'eta', 20, -4, 4, 'eta'),
821822
Plot1D('hadronFlavour', 'hadronFlavour', 6, -0.5, 5.5, 'flavour from hadron ghost clustering'),
822823
Plot1D('mass', 'mass', 20, -200, 200, 'mass'),

PhysicsTools/PatAlgos/python/slimming/applySubstructure_cff.py

+12-9
Original file line numberDiff line numberDiff line change
@@ -63,15 +63,26 @@ def applySubstructure( process, postfix="" ) :
6363
jetCorrections = ('AK8PFPuppi', ['L2Relative', 'L3Absolute'], 'None'),
6464
getJetMCFlavour = False # jet flavor disabled
6565
)
66+
6667
## PATify soft drop subjets
68+
from RecoBTag.ONNXRuntime.pfUnifiedParticleTransformerAK4_cff import _pfUnifiedParticleTransformerAK4JetTagsAll as pfUnifiedParticleTransformerAK4JetTagsAll
69+
_btagDiscriminatorsSubjets = cms.PSet(
70+
names=cms.vstring(
71+
'pfDeepFlavourJetTags:probb',
72+
'pfDeepFlavourJetTags:probbb',
73+
'pfDeepFlavourJetTags:problepb',
74+
'pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:BvsAll'
75+
)
76+
)
77+
6778
addJetCollection(
6879
process,
6980
postfix=postfix,
7081
labelName = 'AK8PFPuppiSoftDropSubjets',
7182
jetSource = cms.InputTag('ak8PFJetsPuppiSoftDrop'+postfix,'SubJets'),
7283
algo = 'ak', # needed for subjet flavor clustering
7384
rParam = 0.8, # needed for subjet flavor clustering
74-
btagDiscriminators = ['pfDeepCSVJetTags:probb', 'pfDeepCSVJetTags:probbb', 'pfCombinedInclusiveSecondaryVertexV2BJetTags','pfCombinedMVAV2BJetTags'],
85+
btagDiscriminators = _btagDiscriminatorsSubjets.names.value(),
7586
jetCorrections = ('AK4PFPuppi', ['L2Relative', 'L3Absolute'], 'None'),
7687
explicitJTA = True, # needed for subjet b tagging
7788
svClustering = True, # needed for subjet b tagging
@@ -80,14 +91,6 @@ def applySubstructure( process, postfix="" ) :
8091
groomedFatJets=cms.InputTag('ak8PFJetsPuppiSoftDrop') # needed for subjet flavor clustering
8192
)
8293

83-
from Configuration.Eras.Modifier_run3_common_cff import run3_common
84-
run3_common.toModify(process.patJetsAK8PFPuppiSoftDropSubjets,
85-
discriminatorSources = cms.VInputTag(
86-
cms.InputTag("pfDeepCSVJetTagsAK8PFPuppiSoftDropSubjets","probb"),
87-
cms.InputTag("pfDeepCSVJetTagsAK8PFPuppiSoftDropSubjets","probbb")
88-
)
89-
)
90-
9194
# add groomed ECFs and N-subjettiness to soft dropped pat::Jets for fat jets and subjets
9295
process.load('RecoJets.JetProducers.ECF_cff')
9396
addToProcessAndTask('nb1AK8PuppiSoftDrop'+postfix, process.ecfNbeta1.clone(src = cms.InputTag("ak8PFJetsPuppiSoftDrop"+postfix), cuts = cms.vstring('', '', 'pt > 250')), process, task)

0 commit comments

Comments
 (0)