File indexing completed on 2025-03-14 23:36:35
0001 import FWCore.ParameterSet.Config as cms
0002
0003 from PhysicsTools.PatAlgos.tools.helpers import getPatAlgosToolsTask, addToProcessAndTask
0004
0005 def applySubstructure( process, postfix="" ) :
0006
0007 task = getPatAlgosToolsTask(process)
0008
0009 from PhysicsTools.PatAlgos.tools.jetTools import addJetCollection
0010 from PhysicsTools.PatAlgos.tools.jetTools import updateJetCollection
0011
0012 from PhysicsTools.PatAlgos.producersLayer1.jetProducer_cfi import _patJets as patJetsDefault
0013
0014
0015 from RecoJets.JetProducers.ak8PFJets_cfi import ak8PFJetsPuppi, ak8PFJetsPuppiSoftDrop, ak8PFJetsPuppiConstituents
0016 setattr(process,'ak8PFJetsPuppi'+postfix,ak8PFJetsPuppi.clone())
0017 setattr(process,'ak8PFJetsPuppiConstituents'+postfix, ak8PFJetsPuppiConstituents.clone())
0018 setattr(process,'ak8PFJetsPuppiSoftDrop'+postfix, ak8PFJetsPuppiSoftDrop.clone( src = 'ak8PFJetsPuppiConstituents'+postfix+':constituents' ))
0019 from RecoJets.JetProducers.ak8PFJetsPuppi_groomingValueMaps_cfi import ak8PFJetsPuppiSoftDropMass
0020 setattr(process,'ak8PFJetsPuppiSoftDropMass'+postfix, ak8PFJetsPuppiSoftDropMass.clone())
0021
0022 from Configuration.ProcessModifiers.run2_miniAOD_UL_cff import run2_miniAOD_UL
0023 _run2_miniAOD_ANY = (run2_miniAOD_UL)
0024 from Configuration.Eras.Modifier_pA_2016_cff import pA_2016
0025
0026 _rerun_puppijets_task = task.copy()
0027 _rerun_puppijets_task.add(getattr(process,'ak8PFJetsPuppi'+postfix),
0028 getattr(process,'ak8PFJetsPuppiConstituents'+postfix),
0029 getattr(process,'ak8PFJetsPuppiSoftDrop'+postfix),
0030 getattr(process,'ak8PFJetsPuppiSoftDropMass'+postfix))
0031 (_run2_miniAOD_ANY | pA_2016 ).toReplaceWith(task, _rerun_puppijets_task)
0032
0033 from RecoJets.JetProducers.ak8GenJets_cfi import ak8GenJets, ak8GenJetsSoftDrop, ak8GenJetsConstituents
0034 addToProcessAndTask('ak8GenJetsNoNuConstituents'+postfix, ak8GenJetsConstituents.clone(src='ak8GenJetsNoNu'), process, task )
0035 addToProcessAndTask('ak8GenJetsNoNuSoftDrop'+postfix,ak8GenJetsSoftDrop.clone(src=cms.InputTag('ak8GenJetsNoNuConstituents'+postfix, 'constituents')),process,task)
0036 addToProcessAndTask('slimmedGenJetsAK8SoftDropSubJets'+postfix,
0037 cms.EDProducer("PATGenJetSlimmer",
0038 src = cms.InputTag("ak8GenJetsNoNuSoftDrop"+postfix, "SubJets"),
0039 packedGenParticles = cms.InputTag("packedGenParticles"),
0040 cut = cms.string(""),
0041 cutLoose = cms.string(""),
0042 nLoose = cms.uint32(0),
0043 clearDaughters = cms.bool(False),
0044 dropSpecific = cms.bool(True),
0045 ), process, task )
0046
0047
0048 addJetCollection(
0049 process,
0050 labelName = 'AK8PFPuppiSoftDrop'+postfix,
0051 jetSource = cms.InputTag('ak8PFJetsPuppiSoftDrop'+postfix),
0052 btagDiscriminators = ['None'],
0053 genJetCollection = cms.InputTag('slimmedGenJetsAK8'),
0054 jetCorrections = ('AK8PFPuppi', ['L2Relative', 'L3Absolute'], 'None'),
0055 getJetMCFlavour = False
0056 )
0057
0058
0059 addJetCollection(
0060 process,
0061 labelName = 'AK8PFPuppiSoftDropSubjets'+postfix,
0062 jetSource = cms.InputTag('ak8PFJetsPuppiSoftDrop'+postfix,'SubJets'),
0063 algo = 'ak',
0064 rParam = 0.8,
0065 jetCorrections = ('AK4PFPuppi', ['L2Relative', 'L3Absolute'], 'None'),
0066 explicitJTA = True,
0067 svClustering = True,
0068 genJetCollection = cms.InputTag('slimmedGenJetsAK8SoftDropSubJets'),
0069 fatJets=cms.InputTag('ak8PFJetsPuppi'),
0070 groomedFatJets=cms.InputTag('ak8PFJetsPuppiSoftDrop')
0071 )
0072
0073
0074 process.load('RecoJets.JetProducers.ECF_cff')
0075 addToProcessAndTask('nb1AK8PuppiSoftDrop'+postfix, process.ecfNbeta1.clone(src = cms.InputTag("ak8PFJetsPuppiSoftDrop"+postfix), cuts = cms.vstring('', '', 'pt > 250')), process, task)
0076 addToProcessAndTask('nb2AK8PuppiSoftDrop'+postfix, process.ecfNbeta2.clone(src = cms.InputTag("ak8PFJetsPuppiSoftDrop"+postfix), cuts = cms.vstring('', '', 'pt > 250')), process, task)
0077
0078
0079 from Configuration.Eras.Modifier_pp_on_XeXe_2017_cff import pp_on_XeXe_2017
0080
0081 for e in [pp_on_XeXe_2017]:
0082 e.toModify(getattr(process,'nb1AK8PuppiSoftDrop'+postfix), cuts = ['pt > 999999', 'pt > 999999', 'pt > 999999'] )
0083 e.toModify(getattr(process,'nb2AK8PuppiSoftDrop'+postfix), cuts = ['pt > 999999', 'pt > 999999', 'pt > 999999'] )
0084
0085 from RecoJets.JetProducers.nJettinessAdder_cfi import Njettiness
0086 addToProcessAndTask('NjettinessAK8Subjets'+postfix, Njettiness.clone(), process, task)
0087 getattr(process,"NjettinessAK8Subjets"+postfix).src = cms.InputTag("ak8PFJetsPuppiSoftDrop"+postfix, "SubJets")
0088 getattr(process,"patJetsAK8PFPuppiSoftDrop").userData.userFloats.src += ['nb1AK8PuppiSoftDrop'+postfix+':ecfN2','nb1AK8PuppiSoftDrop'+postfix+':ecfN3']
0089 getattr(process,"patJetsAK8PFPuppiSoftDrop").userData.userFloats.src += ['nb2AK8PuppiSoftDrop'+postfix+':ecfN2','nb2AK8PuppiSoftDrop'+postfix+':ecfN3']
0090 addToProcessAndTask('nb1AK8PuppiSoftDropSubjets'+postfix, process.ecfNbeta1.clone(src = cms.InputTag("ak8PFJetsPuppiSoftDrop"+postfix, "SubJets")), process, task)
0091 addToProcessAndTask('nb2AK8PuppiSoftDropSubjets'+postfix, process.ecfNbeta2.clone(src = cms.InputTag("ak8PFJetsPuppiSoftDrop"+postfix, "SubJets")), process, task)
0092 getattr(process,"patJetsAK8PFPuppiSoftDropSubjets"+postfix).userData.userFloats.src += ['nb1AK8PuppiSoftDropSubjets'+postfix+':ecfN2','nb1AK8PuppiSoftDropSubjets'+postfix+':ecfN3']
0093 getattr(process,"patJetsAK8PFPuppiSoftDropSubjets"+postfix).userData.userFloats.src += ['nb2AK8PuppiSoftDropSubjets'+postfix+':ecfN2','nb2AK8PuppiSoftDropSubjets'+postfix+':ecfN3']
0094 getattr(process,"patJetsAK8PFPuppiSoftDropSubjets"+postfix).userData.userFloats.src += ['NjettinessAK8Subjets'+postfix+':tau1','NjettinessAK8Subjets'+postfix+':tau2','NjettinessAK8Subjets'+postfix+':tau3','NjettinessAK8Subjets'+postfix+':tau4']
0095
0096 for e in [pp_on_XeXe_2017]:
0097 e.toModify(getattr(process,'nb1AK8PuppiSoftDropSubjets'+postfix), cuts = ['pt > 999999', 'pt > 999999', 'pt > 999999'] )
0098 e.toModify(getattr(process,'nb2AK8PuppiSoftDropSubjets'+postfix), cuts = ['pt > 999999', 'pt > 999999', 'pt > 999999'] )
0099
0100
0101
0102 addJetCollection(process, labelName = 'AK8Puppi'+postfix,
0103 jetSource = cms.InputTag('ak8PFJetsPuppi'+postfix),
0104 algo= 'AK', rParam = 0.8,
0105 jetCorrections = ('AK8PFPuppi', cms.vstring(['L2Relative', 'L3Absolute']), 'None'),
0106 btagDiscriminators = None,
0107 genJetCollection = cms.InputTag('slimmedGenJetsAK8')
0108 )
0109 getattr(process,"patJetsAK8Puppi"+postfix).userData.userFloats.src = []
0110 getattr(process,"selectedPatJetsAK8Puppi"+postfix).cut = cms.string("pt > 100")
0111 getattr(process,"selectedPatJetsAK8Puppi"+postfix).cutLoose = cms.string("pt > 30")
0112 getattr(process,"selectedPatJetsAK8Puppi"+postfix).nLoose = cms.uint32(3)
0113
0114 from RecoJets.JetAssociationProducers.j2tParametersVX_cfi import j2tParametersVX
0115 addToProcessAndTask('ak8PFJetsPuppiTracksAssociatorAtVertex'+postfix, cms.EDProducer("JetTracksAssociatorAtVertex",
0116 j2tParametersVX.clone( coneSize = cms.double(0.8) ),
0117 jets = cms.InputTag("ak8PFJetsPuppi") ),
0118 process, task)
0119 addToProcessAndTask('patJetAK8PuppiCharge'+postfix, cms.EDProducer("JetChargeProducer",
0120 src = cms.InputTag("ak8PFJetsPuppiTracksAssociatorAtVertex"),
0121 var = cms.string('Pt'),
0122 exp = cms.double(1.0) ),
0123 process, task)
0124
0125
0126 getattr(process,"patJetsAK8Puppi"+postfix).userData.userFloats.src += ['ak8PFJetsPuppiSoftDropMass'+postfix]
0127 getattr(process,"patJetsAK8Puppi"+postfix).addTagInfos = cms.bool(False)
0128
0129
0130
0131 addToProcessAndTask('NjettinessAK8Puppi'+postfix, Njettiness.clone(), process, task)
0132 getattr(process,"NjettinessAK8Puppi"+postfix).src = cms.InputTag("ak8PFJetsPuppi"+postfix)
0133 getattr(process,"patJetsAK8Puppi").userData.userFloats.src += ['NjettinessAK8Puppi'+postfix+':tau1','NjettinessAK8Puppi'+postfix+':tau2','NjettinessAK8Puppi'+postfix+':tau3','NjettinessAK8Puppi'+postfix+':tau4']
0134
0135
0136 addToProcessAndTask("slimmedJetsAK8PFPuppiSoftDropSubjetsNoDeepTags"+postfix, cms.EDProducer("PATJetSlimmer",
0137 src = cms.InputTag("selectedPatJetsAK8PFPuppiSoftDropSubjets"),
0138 packedPFCandidates = cms.InputTag("packedPFCandidates"),
0139 dropJetVars = cms.string("1"),
0140 dropDaughters = cms.string("0"),
0141 rekeyDaughters = cms.string("1"),
0142 dropTrackRefs = cms.string("1"),
0143 dropSpecific = cms.string("1"),
0144 dropTagInfos = cms.string("1"),
0145 modifyJets = cms.bool(True),
0146 mixedDaughters = cms.bool(False),
0147 modifierConfig = cms.PSet( modifications = cms.VPSet() )
0148 ), process, task
0149 )
0150
0151
0152 from RecoBTag.ONNXRuntime.pfUnifiedParticleTransformerAK4_cff import _pfUnifiedParticleTransformerAK4JetTagsAll as pfUnifiedParticleTransformerAK4JetTagsAll
0153 _btagDiscriminatorsSubjets = cms.PSet(
0154 names=cms.vstring(
0155 'pfDeepFlavourJetTags:probb',
0156 'pfDeepFlavourJetTags:probbb',
0157 'pfDeepFlavourJetTags:problepb',
0158 'pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:BvsAll',
0159 'pfUnifiedParticleTransformerAK4JetTags:ptcorr',
0160 'pfUnifiedParticleTransformerAK4JetTags:ptnu',
0161 'pfUnifiedParticleTransformerAK4JetTags:ptreshigh',
0162 'pfUnifiedParticleTransformerAK4JetTags:ptreslow',
0163 'pfUnifiedParticleTransformerAK4V1JetTags:ptcorr',
0164 'pfUnifiedParticleTransformerAK4V1JetTags:ptnu',
0165 'pfUnifiedParticleTransformerAK4V1JetTags:ptreshigh',
0166 'pfUnifiedParticleTransformerAK4V1JetTags:ptreslow',
0167 )
0168 )
0169 updateJetCollection(
0170 process,
0171 labelName = 'AK8PFPuppiSoftDropSubjets',
0172 postfix = 'SlimmedDeepFlavour'+postfix,
0173 jetSource = cms.InputTag('slimmedJetsAK8PFPuppiSoftDropSubjetsNoDeepTags'),
0174
0175
0176 pfCandidates = cms.InputTag('packedPFCandidates'),
0177 pvSource = cms.InputTag('offlineSlimmedPrimaryVertices'),
0178 svSource = cms.InputTag('slimmedSecondaryVertices'),
0179 muSource = cms.InputTag('slimmedMuons'),
0180 elSource = cms.InputTag('slimmedElectrons'),
0181 jetCorrections = ('AK4PFPuppi', ['L2Relative', 'L3Absolute'], 'None'),
0182 printWarning = False,
0183 btagDiscriminators = _btagDiscriminatorsSubjets.names.value(),
0184 )
0185
0186
0187 addToProcessAndTask("slimmedJetsAK8PFPuppiSoftDropPacked"+postfix, cms.EDProducer("BoostedJetMerger",
0188 jetSrc=cms.InputTag("selectedPatJetsAK8PFPuppiSoftDrop"+postfix),
0189 subjetSrc=cms.InputTag("selectedUpdatedPatJetsAK8PFPuppiSoftDropSubjetsSlimmedDeepFlavour"+postfix)
0190 ), process, task
0191 )
0192
0193 addToProcessAndTask("packedPatJetsAK8"+postfix, cms.EDProducer("JetSubstructurePacker",
0194 jetSrc = cms.InputTag("selectedPatJetsAK8Puppi"+postfix),
0195 distMax = cms.double(0.8),
0196 algoTags = cms.VInputTag(
0197 cms.InputTag("slimmedJetsAK8PFPuppiSoftDropPacked"+postfix)
0198 ),
0199 algoLabels = cms.vstring(
0200 'SoftDropPuppi'
0201 ),
0202 fixDaughters = cms.bool(True),
0203 packedPFCandidates = cms.InputTag("packedPFCandidates"),
0204 ), process, task
0205 )
0206
0207
0208 process.slimmedJetsAK8.rekeyDaughters = "0"
0209
0210 process.slimmedJetsAK8.dropDaughters = cms.string("pt < 170")
0211 process.slimmedJetsAK8.dropSpecific = cms.string("pt < 170")
0212 process.slimmedJetsAK8.dropTagInfos = cms.string("pt < 170")