Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-02-05 03:15:10

0001 import FWCore.ParameterSet.Config as cms
0002 
0003 from PhysicsTools.PatAlgos.tools.helpers import getPatAlgosToolsTask, addToProcessAndTask
0004 
0005 
0006 def applyDeepBtagging(process, postfix=""):
0007     task = getPatAlgosToolsTask(process)
0008 
0009     from PhysicsTools.PatAlgos.tools.jetTools import updateJetCollection
0010 
0011     from PhysicsTools.PatAlgos.slimming.slimmedJets_cfi import slimmedJets, slimmedJetsAK8
0012     from RecoBTag.ONNXRuntime.pfParticleNetFromMiniAODAK4_cff import _pfParticleNetFromMiniAODAK4PuppiCentralJetTagsAll as pfParticleNetFromMiniAODAK4PuppiCentralJetTagsAll
0013     from RecoBTag.ONNXRuntime.pfParticleNetFromMiniAODAK4_cff import _pfParticleNetFromMiniAODAK4PuppiForwardJetTagsAll as pfParticleNetFromMiniAODAK4PuppiForwardJetTagsAll
0014     from RecoBTag.ONNXRuntime.pfParticleNetFromMiniAODAK4_cff import _pfParticleNetFromMiniAODAK4CHSCentralJetTagsAll as pfParticleNetFromMiniAODAK4CHSCentralJetTagsAll
0015     from RecoBTag.ONNXRuntime.pfUnifiedParticleTransformerAK4_cff import _pfUnifiedParticleTransformerAK4JetTagsAll as pfUnifiedParticleTransformerAK4JetTagsAll
0016     from RecoBTag.ONNXRuntime.pfUnifiedParticleTransformerAK4V1_cff import _pfUnifiedParticleTransformerAK4V1JetTagsAll as pfUnifiedParticleTransformerAK4V1JetTagsAll
0017     
0018     # update slimmed jets to include DeepFlavour (keep same name)
0019     # make clone for DeepFlavour-less slimmed jets, so output name is preserved
0020     addToProcessAndTask('slimmedJetsNoDeepFlavour', slimmedJets.clone(), process, task)
0021     _btagDiscriminatorsAK4CHS = cms.PSet(
0022         names=cms.vstring(pfParticleNetFromMiniAODAK4CHSCentralJetTagsAll)
0023     )
0024     updateJetCollection(
0025         process,
0026         jetSource = cms.InputTag('slimmedJetsNoDeepFlavour'),
0027         # updateJetCollection defaults to MiniAOD inputs but
0028         # here it is made explicit (as in training or MINIAOD redoing)
0029         pvSource = cms.InputTag('offlineSlimmedPrimaryVertices'),
0030         pfCandidates = cms.InputTag('packedPFCandidates'),
0031         svSource = cms.InputTag('slimmedSecondaryVertices'),
0032         muSource = cms.InputTag('slimmedMuons'),
0033         elSource = cms.InputTag('slimmedElectrons'),
0034         jetCorrections = ('AK4PFchs', cms.vstring(['L1FastJet', 'L2Relative', 'L3Absolute']), 'None'),
0035         btagDiscriminators = _btagDiscriminatorsAK4CHS.names.value(),
0036         postfix = 'SlimmedDeepFlavour' + postfix,
0037         printWarning = False
0038     )
0039 
0040     # slimmedJets with DeepFlavour (remove DeepFlavour-less)
0041     addToProcessAndTask('slimmedJets', getattr(process, 'selectedUpdatedPatJetsSlimmedDeepFlavour' + postfix).clone(), process, task)
0042     # delete module not used anymore (slimmedJets substitutes)
0043     delattr(process, 'selectedUpdatedPatJetsSlimmedDeepFlavour' + postfix)
0044 
0045     # update slimmedJetsPuppi to include deep taggers
0046     addToProcessAndTask('slimmedJetsPuppiNoDeepTags', slimmedJets.clone(
0047         src = "selectedPatJetsPuppi", packedPFCandidates = "packedPFCandidates"
0048     ), process, task)
0049     _btagDiscriminatorsAK4Puppi = cms.PSet(
0050         names=cms.vstring(
0051             'pfDeepFlavourJetTags:probb',
0052             'pfDeepFlavourJetTags:probbb',
0053             'pfDeepFlavourJetTags:problepb',
0054             'pfDeepFlavourJetTags:probc',
0055             'pfDeepFlavourJetTags:probuds',
0056             'pfDeepFlavourJetTags:probg')
0057             + pfParticleNetFromMiniAODAK4PuppiCentralJetTagsAll
0058             + pfParticleNetFromMiniAODAK4PuppiForwardJetTagsAll
0059             + pfUnifiedParticleTransformerAK4JetTagsAll
0060             + pfUnifiedParticleTransformerAK4V1JetTagsAll
0061     )
0062   
0063     updateJetCollection(
0064         process,
0065         jetSource = cms.InputTag('slimmedJetsPuppiNoDeepTags'),
0066         pvSource = cms.InputTag('offlineSlimmedPrimaryVertices'),
0067         pfCandidates = cms.InputTag('packedPFCandidates'),
0068         svSource = cms.InputTag('slimmedSecondaryVertices'),
0069         muSource = cms.InputTag('slimmedMuons'),
0070         elSource = cms.InputTag('slimmedElectrons'),
0071         jetCorrections = ('AK4PFPuppi', cms.vstring(['L2Relative', 'L3Absolute']), 'None'),
0072         btagDiscriminators = _btagDiscriminatorsAK4Puppi.names.value(),
0073         postfix = 'SlimmedPuppiWithDeepTags' + postfix,
0074         printWarning = False
0075     )
0076 
0077     addToProcessAndTask('slimmedJetsPuppi', getattr(process, 'selectedUpdatedPatJetsSlimmedPuppiWithDeepTags' + postfix).clone(), process, task)
0078     # delete module not used anymore (slimmedJetsPuppi substitutes)
0079     delattr(process, 'selectedUpdatedPatJetsSlimmedPuppiWithDeepTags' + postfix)
0080 
0081     from RecoBTag.ONNXRuntime.pfParticleNet_cff import _pfParticleNetJetTagsAll as pfParticleNetJetTagsAll
0082     from RecoBTag.ONNXRuntime.pfParticleNet_cff import _pfParticleNetMassRegressionOutputs as pfParticleNetMassRegressionOutputs
0083     from RecoBTag.ONNXRuntime.pfParticleNet_cff import _pfParticleNetMassCorrelatedJetTagsAll as pfParticleNetMassCorrelatedJetTagsAll
0084     from RecoBTag.ONNXRuntime.pfParticleNetFromMiniAODAK8_cff import _pfParticleNetFromMiniAODAK8JetTagsAll as pfParticleNetFromMiniAODAK8JetTagsAll
0085     from RecoBTag.ONNXRuntime.pfGlobalParticleTransformerAK8_cff import _pfGlobalParticleTransformerAK8JetTagsAll as pfGlobalParticleTransformerAK8JetTagsAll
0086 
0087     # update slimmed jets to include particle-based deep taggers (keep same name)
0088     # make clone for DeepTags-less slimmed AK8 jets, so output name is preserved
0089     addToProcessAndTask('slimmedJetsAK8NoDeepTags', slimmedJetsAK8.clone(), process, task)
0090     _btagDiscriminatorsAK8 = cms.PSet(names = cms.vstring(pfParticleNetMassCorrelatedJetTagsAll+pfGlobalParticleTransformerAK8JetTagsAll+pfParticleNetFromMiniAODAK8JetTagsAll+pfParticleNetJetTagsAll+pfParticleNetMassRegressionOutputs))
0091     updateJetCollection(
0092         process,
0093         jetSource = cms.InputTag('slimmedJetsAK8NoDeepTags'),
0094         # updateJetCollection defaults to MiniAOD inputs but
0095         # here it is made explicit (as in training or MINIAOD redoing)
0096         pvSource = cms.InputTag('offlineSlimmedPrimaryVertices'),
0097         pfCandidates = cms.InputTag('packedPFCandidates'),
0098         svSource = cms.InputTag('slimmedSecondaryVertices'),
0099         muSource = cms.InputTag('slimmedMuons'),
0100         elSource = cms.InputTag('slimmedElectrons'),
0101         rParam = 0.8,
0102         jetCorrections = ('AK8PFPuppi', cms.vstring(['L2Relative', 'L3Absolute']), 'None'),
0103         btagDiscriminators = _btagDiscriminatorsAK8.names.value(),
0104         postfix = 'SlimmedAK8DeepTags' + postfix,
0105         printWarning = False
0106     )
0107 
0108     # slimmedJetsAK8 with DeepTags (remove DeepTags-less)
0109     addToProcessAndTask('slimmedJetsAK8', getattr(process, 'selectedUpdatedPatJetsSlimmedAK8DeepTags' + postfix).clone(), process, task)
0110     # delete module not used anymore (slimmedJetsAK8 substitutes)
0111     delattr(process, 'selectedUpdatedPatJetsSlimmedAK8DeepTags' + postfix)