From d7f7b4aedb4bd9d8331cbf6dfca74925a468b882 Mon Sep 17 00:00:00 2001 From: Michal Bluj Date: Mon, 3 Nov 2025 18:03:40 +0100 Subject: [PATCH 1/4] Add missing tau-related features to mini-to-mini --- .../slimming/miniAODFromMiniAOD_tools.py | 180 +++++++++++++++++- 1 file changed, 179 insertions(+), 1 deletion(-) diff --git a/PhysicsTools/PatAlgos/python/slimming/miniAODFromMiniAOD_tools.py b/PhysicsTools/PatAlgos/python/slimming/miniAODFromMiniAOD_tools.py index e31901239dfd4..08151d566c551 100644 --- a/PhysicsTools/PatAlgos/python/slimming/miniAODFromMiniAOD_tools.py +++ b/PhysicsTools/PatAlgos/python/slimming/miniAODFromMiniAOD_tools.py @@ -109,8 +109,79 @@ def miniAODFromMiniAOD_customizeCommon(process): ########################################################################### # Rekey jet constituents ########################################################################### + + # Add deep flavour info to AK4CHS jets + # (based on function from jetsAK4_CHS_cff in Nano) + from PhysicsTools.PatAlgos.tools.jetTools import updateJetCollection + def _m2m_addDeepInfoAK4CHS(process, + addDeepBTag, + addDeepFlavour, + addParticleNet, + addRobustParTAK4=False, + addUnifiedParTAK4=False): + _btagDiscriminators=[] + if addDeepBTag: + print("Updating process to run DeepCSV btag") + _btagDiscriminators += ['pfDeepCSVJetTags:probb','pfDeepCSVJetTags:probbb','pfDeepCSVJetTags:probc'] + if addDeepFlavour: + print("Updating process to run DeepFlavour btag") + _btagDiscriminators += ['pfDeepFlavourJetTags:probb','pfDeepFlavourJetTags:probbb','pfDeepFlavourJetTags:problepb','pfDeepFlavourJetTags:probc'] + if addParticleNet: + print("Updating process to run ParticleNetAK4") + from RecoBTag.ONNXRuntime.pfParticleNetFromMiniAODAK4_cff import _pfParticleNetFromMiniAODAK4CHSCentralJetTagsAll as pfParticleNetFromMiniAODAK4CHSCentralJetTagsAll + from RecoBTag.ONNXRuntime.pfParticleNetFromMiniAODAK4_cff import _pfParticleNetFromMiniAODAK4CHSForwardJetTagsAll as pfParticleNetFromMiniAODAK4CHSForwardJetTagsAll + _btagDiscriminators += pfParticleNetFromMiniAODAK4CHSCentralJetTagsAll + _btagDiscriminators += pfParticleNetFromMiniAODAK4CHSForwardJetTagsAll + if addRobustParTAK4: + print("Updating process to run RobustParTAK4") + from RecoBTag.ONNXRuntime.pfParticleTransformerAK4_cff import _pfParticleTransformerAK4JetTagsAll as pfParticleTransformerAK4JetTagsAll + _btagDiscriminators += pfParticleTransformerAK4JetTagsAll + if addUnifiedParTAK4: + print("Updating process to run UnifiedParTAK4") + from RecoBTag.ONNXRuntime.pfUnifiedParticleTransformerAK4_cff import _pfUnifiedParticleTransformerAK4JetTagsAll as pfUnifiedParticleTransformerAK4JetTagsAll + _btagDiscriminators += pfUnifiedParticleTransformerAK4JetTagsAll + + if len(_btagDiscriminators)==0: return process + print("Will recalculate the following discriminators: "+", ".join(_btagDiscriminators)) + updateJetCollection( + process, + jetSource = cms.InputTag('slimmedJets', processName=cms.InputTag.skipCurrentProcess()), + jetCorrections = ('AK4PFchs', cms.vstring(['L1FastJet', 'L2Relative', 'L3Absolute','L2L3Residual']), 'None'), + btagDiscriminators = _btagDiscriminators, + postfix = 'AK4CHSWithDeepInfo', + ) + process.load("Configuration.StandardSequences.MagneticField_cff") + + from PhysicsTools.PatAlgos.tools.helpers import getPatAlgosToolsTask, addToProcessAndTask + task = getPatAlgosToolsTask(process) + addToProcessAndTask("slimmedJetsWithDeepInfo", process.selectedUpdatedPatJetsAK4CHSWithDeepInfo.clone(), process, task) + del process.selectedUpdatedPatJetsAK4CHSWithDeepInfo + + return process + + # FIXME: this probably needs to be era dependent, but all enabled for now + m2m_addDeepInfoAK4CHS_switch = cms.PSet( + m2m_addDeepBTag_switch = cms.untracked.bool(True), + m2m_addDeepFlavourTag_switch = cms.untracked.bool(True), + m2m_addParticleNet_switch = cms.untracked.bool(True), + m2m_addRobustParTAK4Tag_switch = cms.untracked.bool(True), + m2m_addUnifiedParTAK4Tag_switch = cms.untracked.bool(True) + ) + _m2m_addDeepInfoAK4CHS(process, + addDeepBTag = m2m_addDeepInfoAK4CHS_switch.m2m_addDeepBTag_switch, + addDeepFlavour = m2m_addDeepInfoAK4CHS_switch.m2m_addDeepFlavourTag_switch, + addParticleNet = m2m_addDeepInfoAK4CHS_switch.m2m_addParticleNet_switch, + addRobustParTAK4 = m2m_addDeepInfoAK4CHS_switch.m2m_addRobustParTAK4Tag_switch, + addUnifiedParTAK4 = m2m_addDeepInfoAK4CHS_switch.m2m_addUnifiedParTAK4Tag_switch) + + jets_ak4chs_to_use = 'slimmedJets::@skipCurrentProcess' + for flag in m2m_addDeepInfoAK4CHS_switch._Parameterizable__parameterNames: + if flag: + jets_ak4chs_to_use = 'slimmedJetsWithDeepInfo' + break + addToProcessAndTask("slimmedJets", cms.EDProducer("PATJetCandidatesRekeyer", - src = cms.InputTag("slimmedJets", processName=cms.InputTag.skipCurrentProcess()), + src = cms.InputTag(jets_ak4chs_to_use), packedPFCandidatesNew = cms.InputTag("packedPFCandidates",processName=cms.InputTag.currentProcess()), ), process, task @@ -172,6 +243,107 @@ def miniAODFromMiniAOD_customizeCommon(process): tauIdEmbedder.runTauID() task.add(process.rerunMvaIsolationTaskM2M, getattr(process, taus_to_use)) + # Produce a "hybrid" tau collection combining HPS-reconstructed taus with tau-tagged jets + def _m2m_addUTagToTaus(process, task, + tausToUpdate = 'slimmedTaus', + storePNetCHSjets = False, + storeUParTPUPPIjets = False, + addGenJet = False): + if not (storePNetCHSjets or storeUParTPUPPIjets): return process + noUpdatedTauName = f'{tausToUpdate}NoUTag' + updatedTauName = '' + addToProcessAndTask(noUpdatedTauName, getattr(process, tausToUpdate).clone(), process, task) + delattr(process, tausToUpdate) + from PhysicsTools.PatAlgos.patTauHybridProducer_cfi import patTauHybridProducer + if storePNetCHSjets: + jetCollection = jets_ak4chs_to_use + TagName = 'pfParticleNetFromMiniAODAK4CHSCentralJetTags' + tag_prefix = 'byUTagCHS' + updatedTauName = f'{tausToUpdate}WithUTagCHS' + # PNet tagger used for CHS jets + from RecoBTag.ONNXRuntime.pfParticleNetFromMiniAODAK4_cff import pfParticleNetFromMiniAODAK4CHSCentralJetTags + Discriminators = [TagName+":"+tag for tag in pfParticleNetFromMiniAODAK4CHSCentralJetTags.flav_names.value()] + # Define "hybridTau" producer + setattr(process, updatedTauName, + patTauHybridProducer.clone( + src = noUpdatedTauName, + jetSource = jetCollection, + dRMax = 0.4, + jetPtMin = 15, + jetEtaMax = 2.5, + UTagLabel = TagName, + UTagScoreNames = Discriminators, + tagPrefix = tag_prefix, + tauScoreMin = -1, + vsJetMin = 0.05, + checkTauScoreIsBest = False, + chargeAssignmentProbMin = 0.2, + addGenJetMatch = addGenJet, + genJetMatch = '' + )) + if addGenJet: + addToProcessAndTask('tauGenJetMatchCHSJet', + process.tauGenJetMatch.clone(src = jetCollection), + process, task) + getattr(process,updatedTauName).genJetMatch = 'tauGenJetMatchCHSJet' + if storeUParTPUPPIjets: task.add(getattr(process,updatedTauName)) + if storeUParTPUPPIjets: + jetCollection = 'slimmedJetsPuppiPreRekey' + TagName = 'pfUnifiedParticleTransformerAK4JetTags' + tag_prefix = 'byUTagPUPPI' + updatedTauName = f'{tausToUpdate}WithUTagPUPPI' if not storePNetCHSjets else f'{tausToUpdate}WithUTagCHSAndUTagPUPPI' + # Unified ParT Tagger used for PUPPI jets + from RecoBTag.ONNXRuntime.pfUnifiedParticleTransformerAK4JetTags_cfi import pfUnifiedParticleTransformerAK4JetTags + Discriminators = [TagName+":"+tag for tag in pfUnifiedParticleTransformerAK4JetTags.flav_names.value()] + # Define "hybridTau" producer + setattr(process, updatedTauName, + patTauHybridProducer.clone( + src = noUpdatedTauName if not storePNetCHSjets else f'{tausToUpdate}WithUTagCHS', + jetSource = jetCollection, + dRMax = 0.4, + jetPtMin = 15, + jetEtaMax = 2.5, + UTagLabel = TagName, + UTagScoreNames = Discriminators, + tagPrefix = tag_prefix, + tauScoreMin = -1, + vsJetMin = 0.05, + checkTauScoreIsBest = False, + chargeAssignmentProbMin = 0.2, + addGenJetMatch = addGenJet, + genJetMatch = '' + )) + if addGenJet: + addToProcessAndTask('tauGenJetMatchPUPPIJet', + process.tauGenJetMatch.clone(src = jetCollection), + process, task) + getattr(process,updatedTauName).genJetMatch = 'tauGenJetMatchPUPPIJet' + # Add "hybridTau" producer to pat-task + addToProcessAndTask(tausToUpdate, + getattr(process, updatedTauName).clone(), + process, task) + return process + + m2m_uTagToTaus_switches = cms.PSet( + storePNetCHSjets = cms.bool(True), + storeUParTPUPPIjets = cms.bool(True), + addGenJet = cms.bool(False) #FIXME => True + ) + _m2m_addUTagToTaus(process, task, + taus_to_use, + storePNetCHSjets = m2m_uTagToTaus_switches.storePNetCHSjets.value(), + storeUParTPUPPIjets = m2m_uTagToTaus_switches.storeUParTPUPPIjets.value(), + addGenJet = m2m_uTagToTaus_switches.addGenJet.value() + ) + + # fix circular module dependency in ParticleNetFromMiniAOD TagInfos when slimmedTaus is updated + def _fixPNetInputCollection(process): + if hasattr(process, 'slimmedTaus'): + for mod in process.producers.keys(): + if 'ParticleNetFromMiniAOD' in mod and 'TagInfos' in mod: + getattr(process, mod).taus = 'slimmedTaus::@skipCurrentProcess' + _fixPNetInputCollection(process) + addToProcessAndTask("slimmedTaus", cms.EDProducer("PATTauCandidatesRekeyer", src = cms.InputTag(taus_to_use), packedPFCandidatesNew = cms.InputTag("packedPFCandidates",processName=cms.InputTag.currentProcess()), @@ -204,6 +376,12 @@ def miniAODFromMiniAOD_customizeCommon(process): process, task ) + # Use original pf-particles w/o recalculated puppi to be coherent with on-the-fly deepTau calculations + for mod in process.producers.keys(): + if 'deeptau' in mod.lower(): + getattr(process, mod).pfcands = 'packedPFCandidates::@skipCurrentProcess' + + ########################################################################### # Rekey candidates in electrons, photons and muons ########################################################################### From 1bd6afa13195d6a498add4e706cd83d0ddedc9dd Mon Sep 17 00:00:00 2001 From: Michal Bluj Date: Mon, 3 Nov 2025 18:51:39 +0100 Subject: [PATCH 2/4] Enable gen-matching for hybrid-taus and correctly fix circular dependencies --- .../slimming/miniAODFromMiniAOD_tools.py | 50 +++++++++++++++---- 1 file changed, 39 insertions(+), 11 deletions(-) diff --git a/PhysicsTools/PatAlgos/python/slimming/miniAODFromMiniAOD_tools.py b/PhysicsTools/PatAlgos/python/slimming/miniAODFromMiniAOD_tools.py index 08151d566c551..e84db0c4a4161 100644 --- a/PhysicsTools/PatAlgos/python/slimming/miniAODFromMiniAOD_tools.py +++ b/PhysicsTools/PatAlgos/python/slimming/miniAODFromMiniAOD_tools.py @@ -254,6 +254,16 @@ def _m2m_addUTagToTaus(process, task, updatedTauName = '' addToProcessAndTask(noUpdatedTauName, getattr(process, tausToUpdate).clone(), process, task) delattr(process, tausToUpdate) + if addGenJet: + from PhysicsTools.JetMCAlgos.TauGenJets_cfi import tauGenJets + addToProcessAndTask('tauGenJets', + tauGenJets.clone(GenParticles = 'prunedGenParticles'), + process, task) + from PhysicsTools.JetMCAlgos.TauGenJetsDecayModeSelectorAllHadrons_cfi import tauGenJetsSelectorAllHadrons + addToProcessAndTask('tauGenJetsSelectorAllHadrons', + tauGenJetsSelectorAllHadrons, + process, task) + from PhysicsTools.PatAlgos.mcMatchLayer0.tauMatch_cfi import tauGenJetMatch from PhysicsTools.PatAlgos.patTauHybridProducer_cfi import patTauHybridProducer if storePNetCHSjets: jetCollection = jets_ak4chs_to_use @@ -283,7 +293,7 @@ def _m2m_addUTagToTaus(process, task, )) if addGenJet: addToProcessAndTask('tauGenJetMatchCHSJet', - process.tauGenJetMatch.clone(src = jetCollection), + tauGenJetMatch.clone(src = jetCollection), process, task) getattr(process,updatedTauName).genJetMatch = 'tauGenJetMatchCHSJet' if storeUParTPUPPIjets: task.add(getattr(process,updatedTauName)) @@ -315,7 +325,7 @@ def _m2m_addUTagToTaus(process, task, )) if addGenJet: addToProcessAndTask('tauGenJetMatchPUPPIJet', - process.tauGenJetMatch.clone(src = jetCollection), + tauGenJetMatch.clone(src = jetCollection), process, task) getattr(process,updatedTauName).genJetMatch = 'tauGenJetMatchPUPPIJet' # Add "hybridTau" producer to pat-task @@ -327,7 +337,7 @@ def _m2m_addUTagToTaus(process, task, m2m_uTagToTaus_switches = cms.PSet( storePNetCHSjets = cms.bool(True), storeUParTPUPPIjets = cms.bool(True), - addGenJet = cms.bool(False) #FIXME => True + addGenJet = cms.bool(True) ) _m2m_addUTagToTaus(process, task, taus_to_use, @@ -336,6 +346,12 @@ def _m2m_addUTagToTaus(process, task, addGenJet = m2m_uTagToTaus_switches.addGenJet.value() ) + addToProcessAndTask("slimmedTaus", cms.EDProducer("PATTauCandidatesRekeyer", + src = cms.InputTag(taus_to_use), + packedPFCandidatesNew = cms.InputTag("packedPFCandidates",processName=cms.InputTag.currentProcess()), + ), + process, task + ) # fix circular module dependency in ParticleNetFromMiniAOD TagInfos when slimmedTaus is updated def _fixPNetInputCollection(process): if hasattr(process, 'slimmedTaus'): @@ -344,13 +360,6 @@ def _fixPNetInputCollection(process): getattr(process, mod).taus = 'slimmedTaus::@skipCurrentProcess' _fixPNetInputCollection(process) - addToProcessAndTask("slimmedTaus", cms.EDProducer("PATTauCandidatesRekeyer", - src = cms.InputTag(taus_to_use), - packedPFCandidatesNew = cms.InputTag("packedPFCandidates",processName=cms.InputTag.currentProcess()), - ), - process, task - ) - boosted_taus_to_use = 'slimmedTausBoosted::@skipCurrentProcess' idsToRun_for_boosted_taus = cms.PSet(idsToAdd=cms.vstring()) run2_miniAOD_miniAODUL.toModify( @@ -381,7 +390,6 @@ def _fixPNetInputCollection(process): if 'deeptau' in mod.lower(): getattr(process, mod).pfcands = 'packedPFCandidates::@skipCurrentProcess' - ########################################################################### # Rekey candidates in electrons, photons and muons ########################################################################### @@ -487,6 +495,24 @@ def _fixPNetInputCollection(process): return process +def hybridTausOnData(process): + print('removing MC dependencies for hybrid taus') + modulesToDel = [] + for moduleName in process.producers.keys(): + if not 'slimmedTaus' in moduleName: continue + module = getattr(process, moduleName) + if module.__dict__['_TypedParameterizable__type'] != 'PATTauHybridProducer': continue + module.addGenJetMatch = False + genJetModule = module.genJetMatch.getModuleLabel() + if not genJetModule in modulesToDel: + modulesToDel.append(genJetModule) + module.genJetMatch = '' + if modulesToDel: + modulesToDel.extend(['tauGenJets','tauGenJetsSelectorAllHadrons']) + for moduleName in modulesToDel: + if hasattr(process,moduleName): delattr(process,moduleName) + return process + def miniAODFromMiniAOD_customizeData(process): from PhysicsTools.PatAlgos.tools.puppiJetMETReclusteringFromMiniAOD_cff import puppiJetMETReclusterFromMiniAOD_Data process = puppiJetMETReclusterFromMiniAOD_Data(process) @@ -500,6 +526,8 @@ def miniAODFromMiniAOD_customizeMC(process): def miniAODFromMiniAOD_customizeAllData(process): process = miniAODFromMiniAOD_customizeData(process) process = miniAODFromMiniAOD_customizeCommon(process) + # remove MC dependencies for hybrid taus + process = hybridTausOnData(process) return process def miniAODFromMiniAOD_customizeAllMC(process): From 1a4c4488e5a316a0e90f30bccd8b15cd7d569f73 Mon Sep 17 00:00:00 2001 From: Michal Bluj Date: Tue, 4 Nov 2025 18:51:19 +0100 Subject: [PATCH 3/4] Fix for eras where the input collection for hybrid taus is taken directly from the original mini --- .../python/slimming/miniAODFromMiniAOD_tools.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/PhysicsTools/PatAlgos/python/slimming/miniAODFromMiniAOD_tools.py b/PhysicsTools/PatAlgos/python/slimming/miniAODFromMiniAOD_tools.py index e84db0c4a4161..82e5fea46fa95 100644 --- a/PhysicsTools/PatAlgos/python/slimming/miniAODFromMiniAOD_tools.py +++ b/PhysicsTools/PatAlgos/python/slimming/miniAODFromMiniAOD_tools.py @@ -252,8 +252,12 @@ def _m2m_addUTagToTaus(process, task, if not (storePNetCHSjets or storeUParTPUPPIjets): return process noUpdatedTauName = f'{tausToUpdate}NoUTag' updatedTauName = '' - addToProcessAndTask(noUpdatedTauName, getattr(process, tausToUpdate).clone(), process, task) - delattr(process, tausToUpdate) + if '@skipCurrentProcess' in tausToUpdate or not hasattr(process, tausToUpdate): + noUpdatedTauName = tausToUpdate + tausToUpdate = noUpdatedTauName.partition(':')[0]+'Updated' + else: + addToProcessAndTask(noUpdatedTauName, getattr(process, tausToUpdate).clone(), process, task) + delattr(process, tausToUpdate) if addGenJet: from PhysicsTools.JetMCAlgos.TauGenJets_cfi import tauGenJets addToProcessAndTask('tauGenJets', @@ -345,6 +349,8 @@ def _m2m_addUTagToTaus(process, task, storeUParTPUPPIjets = m2m_uTagToTaus_switches.storeUParTPUPPIjets.value(), addGenJet = m2m_uTagToTaus_switches.addGenJet.value() ) + if m2m_uTagToTaus_switches.storePNetCHSjets.value() or m2m_uTagToTaus_switches.storeUParTPUPPIjets.value(): + taus_to_use = 'slimmedTausUpdated' addToProcessAndTask("slimmedTaus", cms.EDProducer("PATTauCandidatesRekeyer", src = cms.InputTag(taus_to_use), From af587abe2d5d50782b256dc612c7f6e4e2ffc3bb Mon Sep 17 00:00:00 2001 From: Michal Bluj Date: Wed, 5 Nov 2025 10:14:33 +0100 Subject: [PATCH 4/4] Simplification of function adding hybrid-taus and small fix --- .../slimming/miniAODFromMiniAOD_tools.py | 22 ++++++------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/PhysicsTools/PatAlgos/python/slimming/miniAODFromMiniAOD_tools.py b/PhysicsTools/PatAlgos/python/slimming/miniAODFromMiniAOD_tools.py index 82e5fea46fa95..8cc541c27efd5 100644 --- a/PhysicsTools/PatAlgos/python/slimming/miniAODFromMiniAOD_tools.py +++ b/PhysicsTools/PatAlgos/python/slimming/miniAODFromMiniAOD_tools.py @@ -176,7 +176,7 @@ def _m2m_addDeepInfoAK4CHS(process, jets_ak4chs_to_use = 'slimmedJets::@skipCurrentProcess' for flag in m2m_addDeepInfoAK4CHS_switch._Parameterizable__parameterNames: - if flag: + if m2m_addDeepInfoAK4CHS_switch.getParameter(flag).value(): jets_ak4chs_to_use = 'slimmedJetsWithDeepInfo' break @@ -250,14 +250,6 @@ def _m2m_addUTagToTaus(process, task, storeUParTPUPPIjets = False, addGenJet = False): if not (storePNetCHSjets or storeUParTPUPPIjets): return process - noUpdatedTauName = f'{tausToUpdate}NoUTag' - updatedTauName = '' - if '@skipCurrentProcess' in tausToUpdate or not hasattr(process, tausToUpdate): - noUpdatedTauName = tausToUpdate - tausToUpdate = noUpdatedTauName.partition(':')[0]+'Updated' - else: - addToProcessAndTask(noUpdatedTauName, getattr(process, tausToUpdate).clone(), process, task) - delattr(process, tausToUpdate) if addGenJet: from PhysicsTools.JetMCAlgos.TauGenJets_cfi import tauGenJets addToProcessAndTask('tauGenJets', @@ -273,14 +265,14 @@ def _m2m_addUTagToTaus(process, task, jetCollection = jets_ak4chs_to_use TagName = 'pfParticleNetFromMiniAODAK4CHSCentralJetTags' tag_prefix = 'byUTagCHS' - updatedTauName = f'{tausToUpdate}WithUTagCHS' + updatedTauName = 'slimmedTausWithUTagCHS' # PNet tagger used for CHS jets from RecoBTag.ONNXRuntime.pfParticleNetFromMiniAODAK4_cff import pfParticleNetFromMiniAODAK4CHSCentralJetTags Discriminators = [TagName+":"+tag for tag in pfParticleNetFromMiniAODAK4CHSCentralJetTags.flav_names.value()] # Define "hybridTau" producer setattr(process, updatedTauName, patTauHybridProducer.clone( - src = noUpdatedTauName, + src = tausToUpdate, jetSource = jetCollection, dRMax = 0.4, jetPtMin = 15, @@ -305,14 +297,14 @@ def _m2m_addUTagToTaus(process, task, jetCollection = 'slimmedJetsPuppiPreRekey' TagName = 'pfUnifiedParticleTransformerAK4JetTags' tag_prefix = 'byUTagPUPPI' - updatedTauName = f'{tausToUpdate}WithUTagPUPPI' if not storePNetCHSjets else f'{tausToUpdate}WithUTagCHSAndUTagPUPPI' + updatedTauName = 'slimmedTausWithUTagPUPPI' if not storePNetCHSjets else 'slimmedTausWithUTagCHSAndUTagPUPPI' # Unified ParT Tagger used for PUPPI jets from RecoBTag.ONNXRuntime.pfUnifiedParticleTransformerAK4JetTags_cfi import pfUnifiedParticleTransformerAK4JetTags Discriminators = [TagName+":"+tag for tag in pfUnifiedParticleTransformerAK4JetTags.flav_names.value()] # Define "hybridTau" producer setattr(process, updatedTauName, patTauHybridProducer.clone( - src = noUpdatedTauName if not storePNetCHSjets else f'{tausToUpdate}WithUTagCHS', + src = tausToUpdate if not storePNetCHSjets else 'slimmedTausWithUTagCHS', jetSource = jetCollection, dRMax = 0.4, jetPtMin = 15, @@ -333,7 +325,7 @@ def _m2m_addUTagToTaus(process, task, process, task) getattr(process,updatedTauName).genJetMatch = 'tauGenJetMatchPUPPIJet' # Add "hybridTau" producer to pat-task - addToProcessAndTask(tausToUpdate, + addToProcessAndTask('slimmedTausUpdatedWithUTags', getattr(process, updatedTauName).clone(), process, task) return process @@ -350,7 +342,7 @@ def _m2m_addUTagToTaus(process, task, addGenJet = m2m_uTagToTaus_switches.addGenJet.value() ) if m2m_uTagToTaus_switches.storePNetCHSjets.value() or m2m_uTagToTaus_switches.storeUParTPUPPIjets.value(): - taus_to_use = 'slimmedTausUpdated' + taus_to_use = 'slimmedTausUpdatedWithUTags' addToProcessAndTask("slimmedTaus", cms.EDProducer("PATTauCandidatesRekeyer", src = cms.InputTag(taus_to_use),