Skip to content

Commit 4c3ec0d

Browse files
author
ademoor
committed
Add UParT_v1 regression
1 parent 0e8a812 commit 4c3ec0d

File tree

9 files changed

+270
-3
lines changed

9 files changed

+270
-3
lines changed

PhysicsTools/NanoAOD/python/custom_jme_cff.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,11 @@
2727
from RecoBTag.ONNXRuntime.pfParticleNetFromMiniAODAK4_cff import _pfParticleNetFromMiniAODAK4PuppiForwardJetTagsAll
2828
from RecoBTag.ONNXRuntime.pfParticleTransformerAK4_cff import _pfParticleTransformerAK4JetTagsAll
2929
from RecoBTag.ONNXRuntime.pfUnifiedParticleTransformerAK4_cff import _pfUnifiedParticleTransformerAK4JetTagsAll
30+
from RecoBTag.ONNXRuntime.pfUnifiedParticleTransformerAK4V1_cff import _pfUnifiedParticleTransformerAK4V1JetTagsAll
3031
bTagDiscriminatorsForAK4 = cms.PSet(foo = cms.vstring(
3132
bTagDeepJet+
3233
_pfParticleNetFromMiniAODAK4PuppiCentralJetTagsAll+_pfParticleNetFromMiniAODAK4PuppiForwardJetTagsAll+
33-
_pfParticleTransformerAK4JetTagsAll + _pfUnifiedParticleTransformerAK4JetTagsAll
34+
_pfParticleTransformerAK4JetTagsAll + _pfUnifiedParticleTransformerAK4JetTagsAll + _pfUnifiedParticleTransformerAK4V1JetTagsAll
3435
))
3536
run2_nanoAOD_ANY.toModify(
3637
bTagDiscriminatorsForAK4,

PhysicsTools/NanoAOD/python/jetsAK4_Puppi_cff.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,9 @@
9494
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"),
9595
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. Correction relative to raw jet pT"),
9696
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"),
97+
UParTAK4V1RegPtRawCorr = Var("?bDiscriminator('pfUnifiedParticleTransformerAK4V1JetTags:ptcorr')>0?bDiscriminator('pfUnifiedParticleTransformerAK4V1JetTags:ptcorr'):-1",float,precision=10,doc="UnifiedParT V1 universal flavor-aware visible pT regression (no neutrinos), correction relative to raw jet pT"),
98+
UParTAK4V1RegPtRawCorrNeutrino = Var("?bDiscriminator('pfUnifiedParticleTransformerAK4V1JetTags:ptnu')>0?bDiscriminator('pfUnifiedParticleTransformerAK4V1JetTags:ptnu'):-1",float,precision=10,doc="UnifiedParT V1 universal flavor-aware pT regression neutrino correction, relative to visible. To apply full regression, multiply raw jet pT by both UParTAK4V1RegPtRawCorr and UParTAK4V1RegPtRawCorrNeutrino."),
99+
UParTAK4V1RegPtRawRes = Var("?(bDiscriminator('pfUnifiedParticleTransformerAK4V1JetTags:ptreshigh')+bDiscriminator('pfUnifiedParticleTransformerAK4V1JetTags:ptreslow'))>0?0.5*(bDiscriminator('pfUnifiedParticleTransformerAK4V1JetTags:ptreshigh')-bDiscriminator('pfUnifiedParticleTransformerAK4V1JetTags:ptreslow')):-1",float,precision=10,doc="UnifiedParT V1 universal flavor-aware jet pT resolution estimator, (q84 - q16)/2"),
97100
puIdDisc = Var("userFloat('pileupJetIdPuppi:fullDiscriminant')", float,doc="Pileup ID BDT discriminant with 133X Winter24 PuppiV18 training",precision=10),
98101
hfsigmaEtaEta = Var("userFloat('hfsigmaEtaEta')",float,doc="sigmaEtaEta for HF jets (noise discriminating variable)",precision=10),
99102
hfsigmaPhiPhi = Var("userFloat('hfsigmaPhiPhi')",float,doc="sigmaPhiPhi for HF jets (noise discriminating variable)",precision=10),
@@ -135,7 +138,7 @@
135138
## - To be used in nanoAOD_customizeCommon() in nano_cff.py
136139
###############################################################
137140
from PhysicsTools.PatAlgos.tools.jetTools import updateJetCollection
138-
def nanoAOD_addDeepInfoAK4(process,addParticleNet,addRobustParTAK4=False,addUnifiedParTAK4=False):
141+
def nanoAOD_addDeepInfoAK4(process,addParticleNet,addRobustParTAK4=False,addUnifiedParTAK4=False,addUnifiedParTAK4V1=False):
139142
_btagDiscriminators=[]
140143
if addParticleNet:
141144
print("Updating process to run ParticleNetAK4")
@@ -151,6 +154,10 @@ def nanoAOD_addDeepInfoAK4(process,addParticleNet,addRobustParTAK4=False,addUnif
151154
print("Updating process to run UnifiedParTAK4")
152155
from RecoBTag.ONNXRuntime.pfUnifiedParticleTransformerAK4_cff import _pfUnifiedParticleTransformerAK4JetTagsAll as pfUnifiedParticleTransformerAK4JetTagsAll
153156
_btagDiscriminators += pfUnifiedParticleTransformerAK4JetTagsAll
157+
if addUnifiedParTAK4V1:
158+
print("Updating process to run UnifiedParTAK4V1")
159+
from RecoBTag.ONNXRuntime.pfUnifiedParticleTransformerAK4V1_cff import _pfUnifiedParticleTransformerAK4V1JetTagsAll as pfUnifiedParticleTransformerAK4V1JetTagsAll
160+
_btagDiscriminators += pfUnifiedParticleTransformerAK4V1JetTagsAll
154161
if len(_btagDiscriminators)==0: return process
155162
print("Will recalculate the following discriminators: "+", ".join(_btagDiscriminators))
156163
updateJetCollection(
@@ -166,6 +173,7 @@ def nanoAOD_addDeepInfoAK4(process,addParticleNet,addRobustParTAK4=False,addUnif
166173
return process
167174

168175
nanoAOD_addDeepInfoAK4_switch = cms.PSet(
176+
169177
nanoAOD_addParticleNet_switch = cms.untracked.bool(False),
170178
nanoAOD_addRobustParTAK4Tag_switch = cms.untracked.bool(False),
171179
nanoAOD_addUnifiedParTAK4Tag_switch = cms.untracked.bool(False)

PhysicsTools/PatAlgos/python/recoLayer0/bTagging_cff.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@
4545
, 'pfParticleTransformerAK4TagInfos'
4646
# UnifiedParticleTransformerAK4 tag infos
4747
, 'pfUnifiedParticleTransformerAK4TagInfos'
48+
# UnifiedParticleTransformerAK4V1 tag infos
49+
, 'pfUnifiedParticleTransformerAK4V1TagInfos'
4850
# GlobalParticleTransformerAK8 tag infos
4951
, 'pfGlobalParticleTransformerAK8TagInfos'
5052
# DeepDoubleB/C tag infos
@@ -367,6 +369,17 @@
367369
supportedMetaDiscr[disc] = _pfUnifiedParticleTransformerAK4JetTagsProbs
368370
# -----------------------------------
369371

372+
# -----------------------------------
373+
# setup UnifiedParticleTransformer AK4 V1
374+
from RecoBTag.ONNXRuntime.pfUnifiedParticleTransformerAK4V1_cff import _pfUnifiedParticleTransformerAK4V1JetTagsProbs, _pfUnifiedParticleTransformerAK4V1JetTagsMetaDiscrs
375+
# update supportedBtagDiscr
376+
for disc in _pfUnifiedParticleTransformerAK4V1JetTagsProbs + _pfUnifiedParticleTransformerAK4V1JetTagsMetaDiscrs:
377+
supportedBtagDiscr[disc] = [["pfUnifiedParticleTransformerAK4V1TagInfos"]]
378+
# update supportedMetaDiscr
379+
for disc in _pfUnifiedParticleTransformerAK4V1JetTagsMetaDiscrs:
380+
supportedMetaDiscr[disc] = _pfUnifiedParticleTransformerAK4V1JetTagsProbs
381+
# -----------------------------------
382+
370383
# -----------------------------------
371384
# setup Negative ParticleTransformer AK4
372385
from RecoBTag.ONNXRuntime.pfParticleTransformerAK4_cff import _pfNegativeParticleTransformerAK4JetTagsProbs

PhysicsTools/PatAlgos/python/slimming/applyDeepBtagging_cff.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ def applyDeepBtagging(process, postfix=""):
1313
from RecoBTag.ONNXRuntime.pfParticleNetFromMiniAODAK4_cff import _pfParticleNetFromMiniAODAK4PuppiForwardJetTagsAll as pfParticleNetFromMiniAODAK4PuppiForwardJetTagsAll
1414
from RecoBTag.ONNXRuntime.pfParticleNetFromMiniAODAK4_cff import _pfParticleNetFromMiniAODAK4CHSCentralJetTagsAll as pfParticleNetFromMiniAODAK4CHSCentralJetTagsAll
1515
from RecoBTag.ONNXRuntime.pfUnifiedParticleTransformerAK4_cff import _pfUnifiedParticleTransformerAK4JetTagsAll as pfUnifiedParticleTransformerAK4JetTagsAll
16-
16+
from RecoBTag.ONNXRuntime.pfUnifiedParticleTransformerAK4V1_cff import _pfUnifiedParticleTransformerAK4V1JetTagsAll as pfUnifiedParticleTransformerAK4V1JetTagsAll
17+
1718
# update slimmed jets to include DeepFlavour (keep same name)
1819
# make clone for DeepFlavour-less slimmed jets, so output name is preserved
1920
addToProcessAndTask('slimmedJetsNoDeepFlavour', slimmedJets.clone(), process, task)
@@ -56,6 +57,7 @@ def applyDeepBtagging(process, postfix=""):
5657
+ pfParticleNetFromMiniAODAK4PuppiCentralJetTagsAll
5758
+ pfParticleNetFromMiniAODAK4PuppiForwardJetTagsAll
5859
+ pfUnifiedParticleTransformerAK4JetTagsAll
60+
+ pfUnifiedParticleTransformerAK4V1JetTagsAll
5961
)
6062

6163
updateJetCollection(

PhysicsTools/PatAlgos/python/tools/jetTools.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -730,6 +730,37 @@ def setupBTagging(process, jetSource, pfCandidates, explicitJTA, pvSource, svSou
730730
flip = flip),
731731
process, task)
732732

733+
if 'UnifiedParticleTransformerAK4V1TagInfos' in btagInfo:
734+
svUsed = svSource
735+
if btagInfo == 'pfNegativeUnifiedParticleTransformerAK4V1TagInfos':
736+
svUsed = cms.InputTag(btagPrefix+'inclusiveCandidateNegativeSecondaryVertices'+labelName+postfix)
737+
flip = True
738+
else:
739+
flip = False
740+
# use right input tags when running with RECO PF candidates, which actually
741+
# depends of whether jets use "particleFlow"
742+
if pfCandidates.value() == 'packedPFCandidates':
743+
puppi_value_map = setupPuppiForPackedPF(process)[0]
744+
vertex_associator = cms.InputTag("")
745+
else:
746+
puppi_value_map = cms.InputTag("puppi")
747+
vertex_associator = cms.InputTag("primaryVertexAssociation","original")
748+
749+
# If this jet is a puppi jet, then set is_weighted_jet to true.
750+
is_weighted_jet = False
751+
if ('puppi' in jetSource.value().lower()):
752+
is_weighted_jet = True
753+
addToProcessAndTask(btagPrefix+btagInfo+labelName+postfix,
754+
btag.pfUnifiedParticleTransformerAK4V1TagInfos.clone(
755+
jets = jetSource,
756+
vertices=pvSource,
757+
secondary_vertices=svUsed,
758+
puppi_value_map = puppi_value_map,
759+
vertex_associator = vertex_associator,
760+
is_weighted_jet = is_weighted_jet,
761+
flip = flip),
762+
process, task)
763+
733764
if btagInfo == 'pfDeepDoubleXTagInfos':
734765
# can only run on PAT jets, so the updater needs to be used
735766
if 'updated' not in jetSource.value().lower():
19.9 MB
Binary file not shown.

RecoBTag/Configuration/python/RecoBTag_cff.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from RecoBTag.ONNXRuntime.pfParticleNetAK4_cff import *
1616
from RecoBTag.ONNXRuntime.pfParticleTransformerAK4_cff import *
1717
from RecoBTag.ONNXRuntime.pfUnifiedParticleTransformerAK4_cff import *
18+
from RecoBTag.ONNXRuntime.pfUnifiedParticleTransformerAK4V1_cff import *
1819
from RecoBTag.ONNXRuntime.pfGlobalParticleTransformerAK8_cff import *
1920
from RecoVertex.AdaptiveVertexFinder.inclusiveVertexing_cff import *
2021
from RecoBTag.PixelCluster.pixelClusterTagInfos_cfi import *

0 commit comments

Comments
 (0)