Skip to content

Commit 0431ed6

Browse files
authored
Merge pull request #46288 from Ming-Yan/NegTag
[BTVNano] add NegTag for UParT
2 parents 90d3d0c + 0bdf08d commit 0431ed6

File tree

3 files changed

+92
-30
lines changed

3 files changed

+92
-30
lines changed

PhysicsTools/NanoAOD/python/custom_btv_cff.py

+71-30
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,15 @@ def update_jets_AK4(process):
1717
# https://github.com/cms-sw/cmssw/blob/master/RecoBTag/ONNXRuntime/plugins/DeepFlavourONNXJetTagsProducer.cc#L86
1818
# and https://twiki.cern.ch/twiki/bin/view/CMS/DeepJet
1919
from RecoBTag.ONNXRuntime.pfParticleTransformerAK4_cff import _pfParticleTransformerAK4JetTagsAll as pfParticleTransformerAK4JetTagsAll
20+
from RecoBTag.ONNXRuntime.pfUnifiedParticleTransformerAK4_cff import _pfUnifiedParticleTransformerAK4JetTagsAll as pfUnifiedParticleTransformerAK4JetTagsAll
2021
from RecoBTag.ONNXRuntime.pfParticleNetFromMiniAODAK4_cff import _pfParticleNetFromMiniAODAK4PuppiCentralJetTagsAll as pfParticleNetFromMiniAODAK4PuppiCentralJetTagsAll
2122
from RecoBTag.ONNXRuntime.pfParticleTransformerAK4_cff import _pfNegativeParticleTransformerAK4JetTagsProbs as pfNegativeParticleTransformerAK4JetTagsProbs
23+
24+
from RecoBTag.ONNXRuntime.pfUnifiedParticleTransformerAK4_cff import _pfUnifiedParticleTransformerAK4JetTagsProbs as pfUnifiedParticleTransformerAK4JetTagsProbs
2225
from RecoBTag.ONNXRuntime.pfParticleNetFromMiniAODAK4_cff import _pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTagsProbs as pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTagsProbs
23-
26+
from RecoBTag.ONNXRuntime.pfParticleTransformerAK4_cff import _pfNegativeParticleTransformerAK4JetTagsProbs as pfNegativeParticleTransformerAK4JetTagsProbs
27+
from RecoBTag.ONNXRuntime.pfUnifiedParticleTransformerAK4_cff import _pfNegativeUnifiedParticleTransformerAK4JetTagsProbs as pfNegativeUnifiedParticleTransformerAK4JetTagsProbs
28+
2429
_btagDiscriminators = [
2530
'pfJetProbabilityBJetTags',
2631
'pfJetBProbabilityBJetTags',
@@ -38,7 +43,7 @@ def update_jets_AK4(process):
3843
'pfNegativeDeepFlavourJetTags:probc',
3944
'pfNegativeDeepFlavourJetTags:probuds',
4045
'pfNegativeDeepFlavourJetTags:probg',
41-
] + pfParticleNetFromMiniAODAK4PuppiCentralJetTagsAll + pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTagsProbs
46+
] + pfParticleNetFromMiniAODAK4PuppiCentralJetTagsAll + pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTagsProbs + pfUnifiedParticleTransformerAK4JetTagsAll + pfNegativeUnifiedParticleTransformerAK4JetTagsProbs
4247
# \ #+ pfParticleTransformerAK4JetTagsAll + pfNegativeParticleTransformerAK4JetTagsProbs \
4348
updateJetCollection(
4449
process,
@@ -291,14 +296,6 @@ def get_DeepJet_outputs():
291296
float,
292297
doc="Negative DeepJet lepb tag probability",
293298
precision=10),
294-
btagNegDeepFlavC = Var("bDiscriminator('pfNegativeDeepFlavourJetTags:probc')",
295-
float,
296-
doc="Negative DeepJet c tag probability",
297-
precision=10),
298-
btagNegDeepFlavUDS = Var("bDiscriminator('pfNegativeDeepFlavourJetTags:probuds')",
299-
float,
300-
doc="Negative DeepJet uds tag probability",
301-
precision=10),
302299
btagNegDeepFlavG = Var("bDiscriminator('pfNegativeDeepFlavourJetTags:probg')",
303300
float,
304301
doc="Negative DeepJet gluon tag probability",
@@ -340,14 +337,6 @@ def get_ParticleNetAK4_outputs():
340337
float,
341338
doc="Negative ParticleNet c vs. b",
342339
precision=10),
343-
btagNegPNetProbB = Var("?bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probb')>0?bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probb'):-1",
344-
float,
345-
doc="Negative ParticleNet b tag probability",
346-
precision=10),
347-
btagNegPNetProbC = Var("?bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probc')>0?bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probc'):-1",
348-
float,
349-
doc="Negative ParticleNet c tag probability",
350-
precision=10),
351340
btagNegPNetProbUDS = Var("?bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probuds')>0?bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probuds'):-1",
352341
float,
353342
doc="Negative ParticleNet uds tag probability",
@@ -374,10 +363,6 @@ def get_ParticleTransformerAK4_outputs():
374363
float,
375364
doc="RobustParTAK4 lepb tag probability",
376365
precision=10),
377-
btagRobustParTAK4C=Var("bDiscriminator('pfParticleTransformerAK4JetTags:probc')",
378-
float,
379-
doc="RobustParTAK4 c tag probability",
380-
precision=10),
381366
btagRobustParTAK4UDS=Var("bDiscriminator('pfParticleTransformerAK4JetTags:probuds')",
382367
float,
383368
doc="RobustParTAK4 uds tag probability",
@@ -416,21 +401,75 @@ def get_ParticleTransformerAK4_outputs():
416401
float,
417402
doc="Negative RobustParTAK4 lepb tag probability",
418403
precision=10),
419-
btagNegRobustParTAK4C = Var("bDiscriminator('pfNegativeParticleTransformerAK4JetTags:probc')",
404+
btagNegRobustParTAK4G = Var("bDiscriminator('pfNegativeParticleTransformerAK4JetTags:probg')",
405+
float,
406+
doc="Negative RobustParTAK4 gluon tag probability",
407+
precision=10),
408+
)
409+
410+
return ParticleTransformerAK4OutputVars
411+
412+
def get_UnifiedParticleTransformerAK4_outputs():
413+
UnifiedParticleTransformerAK4OutputVars = cms.PSet(
414+
btagUParTAK4B_b=Var("bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:probb')",
420415
float,
421-
doc="Negative RobustParTAK4 c tag probability",
416+
doc="UnifiedParT b tag probability",
422417
precision=10),
423-
btagNegRobustParTAK4UDS = Var("bDiscriminator('pfNegativeParticleTransformerAK4JetTags:probuds')",
418+
btagUParTAK4B_bb=Var("bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:probbb')",
424419
float,
425-
doc="Negative RobustParTAK4 uds tag probability",
420+
doc="UnifiedParT bb tag probability",
426421
precision=10),
427-
btagNegRobustParTAK4G = Var("bDiscriminator('pfNegativeParticleTransformerAK4JetTags:probg')",
422+
btagUParTAK4B_lepb=Var("bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:problepb')",
428423
float,
429-
doc="Negative RobustParTAK4 gluon tag probability",
424+
doc="UnifiedParT lepb tag probability",
425+
precision=10),
426+
btagUParTAK4UDS=Var("bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:probuds')",
427+
float,
428+
doc="UnifiedParT uds tag probability",
429+
precision=10),
430+
btagUParTAK4G=Var("bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:probg')",
431+
float,
432+
doc="UnifiedParT gluon tag probability",
433+
precision=10),
434+
435+
# negative taggers
436+
btagNegUParTAK4B = Var("bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probb')+bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probbb')+bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:problepb')",
437+
float,
438+
doc="Negative UnifiedParT b+bb+lepb tag discriminator",
439+
precision=10),
440+
btagNegUParTAK4CvL = Var("?(bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probc')+bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probuds')+bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probg'))>0?bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probc')/(bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probc')+bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probuds')+bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probg')):-1",
441+
float,
442+
doc="Negative UnifiedParT c vs uds+g discriminator",
443+
precision=10),
444+
btagNegUParTAK4CvB = Var("?(bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probc')+bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probb')+bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probbb')+bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:problepb'))>0?bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probc')/(bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probc')+bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probb')+bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probbb')+bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:problepb')):-1",
445+
float,
446+
doc="Negative UnifiedParT c vs b+bb+lepb discriminator",
447+
precision=10),
448+
btagNegUParTAK4QG = Var("?(bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probg')+bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probuds'))>0?bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probg')/(bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probg')+bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probuds')):-1",
449+
float,
450+
doc="Negative UnifiedParT g vs uds discriminator",
451+
precision=10),
452+
btagNegUParTAK4B_b = Var("bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probb')",
453+
float,
454+
doc="Negative UnifiedParT b tag probability",
455+
precision=10),
456+
btagNegUParTAK4B_bb = Var("bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probbb')",
457+
float,
458+
doc="Negative UnifiedParT bb tag probability",
459+
precision=10),
460+
btagNegUParTAK4B_lepb = Var("bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:problepb')",
461+
float,
462+
doc="Negative UnifiedParT lepb tag probability",
463+
precision=10),
464+
btagNegUParTAK4G = Var("bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probg')",
465+
float,
466+
doc="Negative UnifiedParT gluon tag probability",
430467
precision=10),
431468
)
432469

433-
return ParticleTransformerAK4OutputVars
470+
return UnifiedParticleTransformerAK4OutputVars
471+
472+
434473

435474
def add_BTV(process, addAK4=False, addAK8=False, scheme="btvSF"):
436475
process.customizeJetTask = cms.Task()
@@ -494,7 +533,8 @@ def add_BTV(process, addAK4=False, addAK8=False, scheme="btvSF"):
494533
get_DeepCSV_vars(),
495534
get_DeepJet_outputs(), # outputs are added in any case, inputs only if requested
496535
get_ParticleNetAK4_outputs(),
497-
#get_ParticleTransformerAK4_outputs(),# removed in 2024
536+
get_UnifiedParticleTransformerAK4_outputs(),
537+
get_ParticleTransformerAK4_outputs(),# removed in 2024
498538
))
499539

500540
# from Run3 onwards, always set storeAK4Truth to True for MC
@@ -649,6 +689,7 @@ def addPFCands(process, allPF = False, addAK4=False, addAK8=False):
649689
)
650690

651691
def BTVCustomNanoAOD(process):
692+
652693
addPFCands(process,btvNano_switch.btvNano_addallPF_switch,btvNano_switch.btvNano_addAK4_switch,btvNano_switch.btvNano_addAK8_switch)
653694
add_BTV(process, btvNano_switch.btvNano_addAK4_switch,btvNano_switch.btvNano_addAK8_switch,btvNano_switch.TaggerInput)
654695
process.load("PhysicsTools.NanoAOD.btvMC_cff")

PhysicsTools/PatAlgos/python/recoLayer0/bTagging_cff.py

+8
Original file line numberDiff line numberDiff line change
@@ -371,5 +371,13 @@
371371
# update supportedBtagDiscr
372372
for disc in _pfNegativeParticleTransformerAK4JetTagsProbs:
373373
supportedBtagDiscr[disc] = [["pfNegativeParticleTransformerAK4TagInfos"]]
374+
# -----------------------------------
375+
376+
# -----------------------------------
377+
# setup Negative ParticleTransformer AK4
378+
from RecoBTag.ONNXRuntime.pfUnifiedParticleTransformerAK4_cff import _pfNegativeUnifiedParticleTransformerAK4JetTagsProbs
379+
# update supportedBtagDiscr
380+
for disc in _pfNegativeUnifiedParticleTransformerAK4JetTagsProbs:
381+
supportedBtagDiscr[disc] = [["pfNegativeUnifiedParticleTransformerAK4TagInfos"]]
374382

375383

RecoBTag/ONNXRuntime/python/pfUnifiedParticleTransformerAK4_cff.py

+13
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,16 @@
2727
pfUnifiedParticleTransformerAK4FromMiniAODTask = cms.Task(pfUnifiedParticleTransformerAK4TagInfos,
2828
pfUnifiedParticleTransformerAK4JetTags,
2929
pfUnifiedParticleTransformerAK4DiscriminatorsJetTags)
30+
31+
# === Negative tags ===
32+
pfNegativeUnifiedParticleTransformerAK4TagInfos = pfUnifiedParticleTransformerAK4TagInfos.clone(
33+
flip = True,
34+
secondary_vertices = 'inclusiveCandidateNegativeSecondaryVertices',
35+
)
36+
pfNegativeUnifiedParticleTransformerAK4JetTags = pfUnifiedParticleTransformerAK4JetTags.clone(
37+
src = 'pfNegativeParticleTransformerAK4TagInfos',
38+
)
39+
40+
# probs
41+
_pfNegativeUnifiedParticleTransformerAK4JetTagsProbs = ['pfNegativeUnifiedParticleTransformerAK4JetTags:' + flav_name
42+
for flav_name in pfUnifiedParticleTransformerAK4JetTags.flav_names]

0 commit comments

Comments
 (0)