Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-10-25 09:58:17

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.pfParticleNetAK4_cff import _pfParticleNetAK4JetTagsAll as pfParticleNetAK4JetTagsAll
0013     from RecoBTag.ONNXRuntime.pfParticleNetFromMiniAODAK4_cff import _pfParticleNetFromMiniAODAK4PuppiCentralJetTagsAll as pfParticleNetFromMiniAODAK4PuppiCentralJetTagsAll
0014     from RecoBTag.ONNXRuntime.pfParticleNetFromMiniAODAK4_cff import _pfParticleNetFromMiniAODAK4PuppiForwardJetTagsAll as pfParticleNetFromMiniAODAK4PuppiForwardJetTagsAll
0015     from RecoBTag.ONNXRuntime.pfParticleNetFromMiniAODAK4_cff import _pfParticleNetFromMiniAODAK4CHSCentralJetTagsAll as pfParticleNetFromMiniAODAK4CHSCentralJetTagsAll
0016     from RecoBTag.ONNXRuntime.pfParticleNetFromMiniAODAK4_cff import _pfParticleNetFromMiniAODAK4CHSForwardJetTagsAll as pfParticleNetFromMiniAODAK4CHSForwardJetTagsAll
0017     from RecoBTag.ONNXRuntime.pfParticleTransformerAK4_cff import _pfParticleTransformerAK4JetTagsAll as pfParticleTransformerAK4JetTagsAll
0018 
0019     # update slimmed jets to include DeepFlavour (keep same name)
0020     # make clone for DeepFlavour-less slimmed jets, so output name is preserved
0021     addToProcessAndTask('slimmedJetsNoDeepFlavour', slimmedJets.clone(), process, task)
0022     _btagDiscriminatorsAK4CHS = cms.PSet(
0023         names=cms.vstring(
0024             'pfDeepFlavourJetTags:probb',
0025             'pfDeepFlavourJetTags:probbb',
0026             'pfDeepFlavourJetTags:problepb',
0027             'pfDeepFlavourJetTags:probc',
0028             'pfDeepFlavourJetTags:probuds',
0029             'pfDeepFlavourJetTags:probg')
0030             + pfParticleNetFromMiniAODAK4CHSCentralJetTagsAll
0031             + pfParticleNetFromMiniAODAK4CHSForwardJetTagsAll
0032             + pfParticleTransformerAK4JetTagsAll
0033     )
0034     updateJetCollection(
0035         process,
0036         jetSource = cms.InputTag('slimmedJetsNoDeepFlavour'),
0037         # updateJetCollection defaults to MiniAOD inputs but
0038         # here it is made explicit (as in training or MINIAOD redoing)
0039         pvSource = cms.InputTag('offlineSlimmedPrimaryVertices'),
0040         pfCandidates = cms.InputTag('packedPFCandidates'),
0041         svSource = cms.InputTag('slimmedSecondaryVertices'),
0042         muSource = cms.InputTag('slimmedMuons'),
0043         elSource = cms.InputTag('slimmedElectrons'),
0044         jetCorrections = ('AK4PFchs', cms.vstring(['L1FastJet', 'L2Relative', 'L3Absolute']), 'None'),
0045         btagDiscriminators = _btagDiscriminatorsAK4CHS.names.value(),
0046         postfix = 'SlimmedDeepFlavour' + postfix,
0047         printWarning = False
0048     )
0049 
0050     # slimmedJets with DeepFlavour (remove DeepFlavour-less)
0051     addToProcessAndTask('slimmedJets', getattr(process, 'selectedUpdatedPatJetsSlimmedDeepFlavour' + postfix).clone(), process, task)
0052     # delete module not used anymore (slimmedJets substitutes)
0053     delattr(process, 'selectedUpdatedPatJetsSlimmedDeepFlavour' + postfix)
0054 
0055     # update slimmedJetsPuppi to include deep taggers
0056     addToProcessAndTask('slimmedJetsPuppiNoDeepTags', slimmedJets.clone(
0057         src = "selectedPatJetsPuppi", packedPFCandidates = "packedPFCandidates"
0058     ), process, task)
0059     _btagDiscriminatorsAK4Puppi = cms.PSet(
0060         names=cms.vstring(
0061             'pfDeepFlavourJetTags:probb',
0062             'pfDeepFlavourJetTags:probbb',
0063             'pfDeepFlavourJetTags:problepb',
0064             'pfDeepFlavourJetTags:probc',
0065             'pfDeepFlavourJetTags:probuds',
0066             'pfDeepFlavourJetTags:probg')
0067             + pfParticleNetFromMiniAODAK4PuppiCentralJetTagsAll
0068             + pfParticleNetFromMiniAODAK4PuppiForwardJetTagsAll
0069             + pfParticleTransformerAK4JetTagsAll
0070     )
0071   
0072     updateJetCollection(
0073         process,
0074         jetSource = cms.InputTag('slimmedJetsPuppiNoDeepTags'),
0075         pvSource = cms.InputTag('offlineSlimmedPrimaryVertices'),
0076         pfCandidates = cms.InputTag('packedPFCandidates'),
0077         svSource = cms.InputTag('slimmedSecondaryVertices'),
0078         muSource = cms.InputTag('slimmedMuons'),
0079         elSource = cms.InputTag('slimmedElectrons'),
0080         jetCorrections = ('AK4PFPuppi', cms.vstring(['L2Relative', 'L3Absolute']), 'None'),
0081         btagDiscriminators = _btagDiscriminatorsAK4Puppi.names.value(),
0082         postfix = 'SlimmedPuppiWithDeepTags' + postfix,
0083         printWarning = False
0084     )
0085 
0086     addToProcessAndTask('slimmedJetsPuppi', getattr(process, 'selectedUpdatedPatJetsSlimmedPuppiWithDeepTags' + postfix).clone(), process, task)
0087     # delete module not used anymore (slimmedJetsPuppi substitutes)
0088     delattr(process, 'selectedUpdatedPatJetsSlimmedPuppiWithDeepTags' + postfix)
0089 
0090 
0091     from RecoBTag.ONNXRuntime.pfDeepBoostedJet_cff import _pfDeepBoostedJetTagsAll as pfDeepBoostedJetTagsAll
0092     from RecoBTag.ONNXRuntime.pfHiggsInteractionNet_cff import _pfHiggsInteractionNetTagsProbs as pfHiggsInteractionNetTagsProbs
0093     from RecoBTag.ONNXRuntime.pfParticleNet_cff import _pfParticleNetMassCorrelatedJetTagsAll as pfParticleNetMassCorrelatedJetTagsAll
0094     from RecoBTag.ONNXRuntime.pfParticleNet_cff import _pfParticleNetMassRegressionOutputs
0095     from RecoBTag.ONNXRuntime.pfParticleNetFromMiniAODAK8_cff import _pfParticleNetFromMiniAODAK8JetTagsAll as pfParticleNetFromMiniAODAK8JetTagsAll
0096 
0097     # update slimmed jets to include particle-based deep taggers (keep same name)
0098     # make clone for DeepTags-less slimmed AK8 jets, so output name is preserved
0099     addToProcessAndTask('slimmedJetsAK8NoDeepTags', slimmedJetsAK8.clone(), process, task)
0100     _btagDiscriminatorsAK8 = cms.PSet(names = cms.vstring(
0101         'pfMassIndependentDeepDoubleBvLV2JetTags:probQCD',
0102         'pfMassIndependentDeepDoubleBvLV2JetTags:probHbb',
0103         'pfMassIndependentDeepDoubleCvLV2JetTags:probQCD',
0104         'pfMassIndependentDeepDoubleCvLV2JetTags:probHcc',
0105         'pfMassIndependentDeepDoubleCvBV2JetTags:probHbb',
0106         'pfMassIndependentDeepDoubleCvBV2JetTags:probHcc',
0107         #'pfParticleNetDiscriminatorsJetTags:TvsQCD',
0108         #'pfParticleNetDiscriminatorsJetTags:WvsQCD',
0109         #'pfParticleNetDiscriminatorsJetTags:H4qvsQCD',
0110         #'pfParticleNetJetTags:probTbcq',       
0111         #'pfParticleNetJetTags:probTbqq',       
0112         #'pfParticleNetJetTags:probTbc',       
0113         #'pfParticleNetJetTags:probTbq',       
0114         #'pfParticleNetJetTags:probTbel',       
0115         #'pfParticleNetJetTags:probTbmu',       
0116         #'pfParticleNetJetTags:probTbta',       
0117         #'pfParticleNetJetTags:probWcq',       
0118         #'pfParticleNetJetTags:probWqq',       
0119         #'pfParticleNetJetTags:probHqqqq',       
0120     )   +  pfParticleNetMassCorrelatedJetTagsAll + pfHiggsInteractionNetTagsProbs + pfParticleNetFromMiniAODAK8JetTagsAll)
0121     updateJetCollection(
0122         process,
0123         jetSource = cms.InputTag('slimmedJetsAK8NoDeepTags'),
0124         # updateJetCollection defaults to MiniAOD inputs but
0125         # here it is made explicit (as in training or MINIAOD redoing)
0126         pvSource = cms.InputTag('offlineSlimmedPrimaryVertices'),
0127         pfCandidates = cms.InputTag('packedPFCandidates'),
0128         svSource = cms.InputTag('slimmedSecondaryVertices'),
0129         muSource = cms.InputTag('slimmedMuons'),
0130         elSource = cms.InputTag('slimmedElectrons'),
0131         rParam = 0.8,
0132         jetCorrections = ('AK8PFPuppi', cms.vstring(['L2Relative', 'L3Absolute']), 'None'),
0133         btagDiscriminators = _btagDiscriminatorsAK8.names.value(),
0134         postfix = 'SlimmedAK8DeepTags' + postfix,
0135         printWarning = False
0136     )
0137 
0138     # slimmedJetsAK8 with DeepTags (remove DeepTags-less)
0139     addToProcessAndTask('slimmedJetsAK8', getattr(process, 'selectedUpdatedPatJetsSlimmedAK8DeepTags' + postfix).clone(), process, task)
0140     # delete module not used anymore (slimmedJetsAK8 substitutes)
0141     delattr(process, 'selectedUpdatedPatJetsSlimmedAK8DeepTags' + postfix)