Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
101 changes: 71 additions & 30 deletions PhysicsTools/NanoAOD/python/custom_btv_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,15 @@ def update_jets_AK4(process):
# https://github.com/cms-sw/cmssw/blob/master/RecoBTag/ONNXRuntime/plugins/DeepFlavourONNXJetTagsProducer.cc#L86
# and https://twiki.cern.ch/twiki/bin/view/CMS/DeepJet
from RecoBTag.ONNXRuntime.pfParticleTransformerAK4_cff import _pfParticleTransformerAK4JetTagsAll as pfParticleTransformerAK4JetTagsAll
from RecoBTag.ONNXRuntime.pfUnifiedParticleTransformerAK4_cff import _pfUnifiedParticleTransformerAK4JetTagsAll as pfUnifiedParticleTransformerAK4JetTagsAll
from RecoBTag.ONNXRuntime.pfParticleNetFromMiniAODAK4_cff import _pfParticleNetFromMiniAODAK4PuppiCentralJetTagsAll as pfParticleNetFromMiniAODAK4PuppiCentralJetTagsAll
from RecoBTag.ONNXRuntime.pfParticleTransformerAK4_cff import _pfNegativeParticleTransformerAK4JetTagsProbs as pfNegativeParticleTransformerAK4JetTagsProbs

from RecoBTag.ONNXRuntime.pfUnifiedParticleTransformerAK4_cff import _pfUnifiedParticleTransformerAK4JetTagsProbs as pfUnifiedParticleTransformerAK4JetTagsProbs
from RecoBTag.ONNXRuntime.pfParticleNetFromMiniAODAK4_cff import _pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTagsProbs as pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTagsProbs

from RecoBTag.ONNXRuntime.pfParticleTransformerAK4_cff import _pfNegativeParticleTransformerAK4JetTagsProbs as pfNegativeParticleTransformerAK4JetTagsProbs
from RecoBTag.ONNXRuntime.pfUnifiedParticleTransformerAK4_cff import _pfNegativeUnifiedParticleTransformerAK4JetTagsProbs as pfNegativeUnifiedParticleTransformerAK4JetTagsProbs

_btagDiscriminators = [
'pfJetProbabilityBJetTags',
'pfJetBProbabilityBJetTags',
Expand All @@ -38,7 +43,7 @@ def update_jets_AK4(process):
'pfNegativeDeepFlavourJetTags:probc',
'pfNegativeDeepFlavourJetTags:probuds',
'pfNegativeDeepFlavourJetTags:probg',
] + pfParticleNetFromMiniAODAK4PuppiCentralJetTagsAll + pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTagsProbs
] + pfParticleNetFromMiniAODAK4PuppiCentralJetTagsAll + pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTagsProbs + pfUnifiedParticleTransformerAK4JetTagsAll + pfNegativeUnifiedParticleTransformerAK4JetTagsProbs
# \ #+ pfParticleTransformerAK4JetTagsAll + pfNegativeParticleTransformerAK4JetTagsProbs \
updateJetCollection(
process,
Expand Down Expand Up @@ -291,14 +296,6 @@ def get_DeepJet_outputs():
float,
doc="Negative DeepJet lepb tag probability",
precision=10),
btagNegDeepFlavC = Var("bDiscriminator('pfNegativeDeepFlavourJetTags:probc')",
float,
doc="Negative DeepJet c tag probability",
precision=10),
btagNegDeepFlavUDS = Var("bDiscriminator('pfNegativeDeepFlavourJetTags:probuds')",
float,
doc="Negative DeepJet uds tag probability",
precision=10),
btagNegDeepFlavG = Var("bDiscriminator('pfNegativeDeepFlavourJetTags:probg')",
float,
doc="Negative DeepJet gluon tag probability",
Expand Down Expand Up @@ -340,14 +337,6 @@ def get_ParticleNetAK4_outputs():
float,
doc="Negative ParticleNet c vs. b",
precision=10),
btagNegPNetProbB = Var("?bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probb')>0?bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probb'):-1",
float,
doc="Negative ParticleNet b tag probability",
precision=10),
btagNegPNetProbC = Var("?bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probc')>0?bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probc'):-1",
float,
doc="Negative ParticleNet c tag probability",
precision=10),
btagNegPNetProbUDS = Var("?bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probuds')>0?bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probuds'):-1",
float,
doc="Negative ParticleNet uds tag probability",
Expand All @@ -374,10 +363,6 @@ def get_ParticleTransformerAK4_outputs():
float,
doc="RobustParTAK4 lepb tag probability",
precision=10),
btagRobustParTAK4C=Var("bDiscriminator('pfParticleTransformerAK4JetTags:probc')",
float,
doc="RobustParTAK4 c tag probability",
precision=10),
btagRobustParTAK4UDS=Var("bDiscriminator('pfParticleTransformerAK4JetTags:probuds')",
float,
doc="RobustParTAK4 uds tag probability",
Expand Down Expand Up @@ -416,21 +401,75 @@ def get_ParticleTransformerAK4_outputs():
float,
doc="Negative RobustParTAK4 lepb tag probability",
precision=10),
btagNegRobustParTAK4C = Var("bDiscriminator('pfNegativeParticleTransformerAK4JetTags:probc')",
btagNegRobustParTAK4G = Var("bDiscriminator('pfNegativeParticleTransformerAK4JetTags:probg')",
float,
doc="Negative RobustParTAK4 gluon tag probability",
precision=10),
)

return ParticleTransformerAK4OutputVars

def get_UnifiedParticleTransformerAK4_outputs():
UnifiedParticleTransformerAK4OutputVars = cms.PSet(
btagUParTAK4B_b=Var("bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:probb')",
float,
doc="Negative RobustParTAK4 c tag probability",
doc="UnifiedParT b tag probability",
precision=10),
btagNegRobustParTAK4UDS = Var("bDiscriminator('pfNegativeParticleTransformerAK4JetTags:probuds')",
btagUParTAK4B_bb=Var("bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:probbb')",
float,
doc="Negative RobustParTAK4 uds tag probability",
doc="UnifiedParT bb tag probability",
precision=10),
btagNegRobustParTAK4G = Var("bDiscriminator('pfNegativeParticleTransformerAK4JetTags:probg')",
btagUParTAK4B_lepb=Var("bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:problepb')",
float,
doc="Negative RobustParTAK4 gluon tag probability",
doc="UnifiedParT lepb tag probability",
precision=10),
btagUParTAK4UDS=Var("bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:probuds')",
float,
doc="UnifiedParT uds tag probability",
precision=10),
btagUParTAK4G=Var("bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:probg')",
float,
doc="UnifiedParT gluon tag probability",
precision=10),

# negative taggers
btagNegUParTAK4B = Var("bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probb')+bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probbb')+bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:problepb')",
float,
doc="Negative UnifiedParT b+bb+lepb tag discriminator",
precision=10),
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",
float,
doc="Negative UnifiedParT c vs uds+g discriminator",
precision=10),
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",
float,
doc="Negative UnifiedParT c vs b+bb+lepb discriminator",
precision=10),
btagNegUParTAK4QG = Var("?(bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probg')+bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probuds'))>0?bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probg')/(bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probg')+bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probuds')):-1",
float,
doc="Negative UnifiedParT g vs uds discriminator",
precision=10),
btagNegUParTAK4B_b = Var("bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probb')",
float,
doc="Negative UnifiedParT b tag probability",
precision=10),
btagNegUParTAK4B_bb = Var("bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probbb')",
float,
doc="Negative UnifiedParT bb tag probability",
precision=10),
btagNegUParTAK4B_lepb = Var("bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:problepb')",
float,
doc="Negative UnifiedParT lepb tag probability",
precision=10),
btagNegUParTAK4G = Var("bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probg')",
float,
doc="Negative UnifiedParT gluon tag probability",
precision=10),
)

return ParticleTransformerAK4OutputVars
return UnifiedParticleTransformerAK4OutputVars



def add_BTV(process, addAK4=False, addAK8=False, scheme="btvSF"):
process.customizeJetTask = cms.Task()
Expand Down Expand Up @@ -494,7 +533,8 @@ def add_BTV(process, addAK4=False, addAK8=False, scheme="btvSF"):
get_DeepCSV_vars(),
get_DeepJet_outputs(), # outputs are added in any case, inputs only if requested
get_ParticleNetAK4_outputs(),
#get_ParticleTransformerAK4_outputs(),# removed in 2024
get_UnifiedParticleTransformerAK4_outputs(),
get_ParticleTransformerAK4_outputs(),# removed in 2024
))

# disable the ParT branches in default jetPuppi table
Expand Down Expand Up @@ -660,6 +700,7 @@ def addPFCands(process, allPF = False, addAK4=False, addAK8=False):
)

def BTVCustomNanoAOD(process):

addPFCands(process,btvNano_switch.btvNano_addallPF_switch,btvNano_switch.btvNano_addAK4_switch,btvNano_switch.btvNano_addAK8_switch)
add_BTV(process, btvNano_switch.btvNano_addAK4_switch,btvNano_switch.btvNano_addAK8_switch,btvNano_switch.TaggerInput)
process.load("PhysicsTools.NanoAOD.btvMC_cff")
Expand Down
8 changes: 8 additions & 0 deletions PhysicsTools/PatAlgos/python/recoLayer0/bTagging_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -371,5 +371,13 @@
# update supportedBtagDiscr
for disc in _pfNegativeParticleTransformerAK4JetTagsProbs:
supportedBtagDiscr[disc] = [["pfNegativeParticleTransformerAK4TagInfos"]]
# -----------------------------------

# -----------------------------------
# setup Negative ParticleTransformer AK4
from RecoBTag.ONNXRuntime.pfUnifiedParticleTransformerAK4_cff import _pfNegativeUnifiedParticleTransformerAK4JetTagsProbs
# update supportedBtagDiscr
for disc in _pfNegativeUnifiedParticleTransformerAK4JetTagsProbs:
supportedBtagDiscr[disc] = [["pfNegativeUnifiedParticleTransformerAK4TagInfos"]]


13 changes: 13 additions & 0 deletions RecoBTag/ONNXRuntime/python/pfUnifiedParticleTransformerAK4_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,16 @@
pfUnifiedParticleTransformerAK4FromMiniAODTask = cms.Task(pfUnifiedParticleTransformerAK4TagInfos,
pfUnifiedParticleTransformerAK4JetTags,
pfUnifiedParticleTransformerAK4DiscriminatorsJetTags)

# === Negative tags ===
pfNegativeUnifiedParticleTransformerAK4TagInfos = pfUnifiedParticleTransformerAK4TagInfos.clone(
flip = True,
secondary_vertices = 'inclusiveCandidateNegativeSecondaryVertices',
)
pfNegativeUnifiedParticleTransformerAK4JetTags = pfUnifiedParticleTransformerAK4JetTags.clone(
src = 'pfNegativeParticleTransformerAK4TagInfos',
)

# probs
_pfNegativeUnifiedParticleTransformerAK4JetTagsProbs = ['pfNegativeUnifiedParticleTransformerAK4JetTags:' + flav_name
for flav_name in pfUnifiedParticleTransformerAK4JetTags.flav_names]