File indexing completed on 2024-04-06 12:23:56
0001 import FWCore.ParameterSet.Config as cms
0002 from PhysicsTools.PatAlgos.tools.helpers import listDependencyChain, massSearchReplaceAnyInputTag, cloneProcessingSnippet, addKeepStatement,listModules
0003
0004 from PhysicsTools.PatAlgos.tools.helpers import getPatAlgosToolsTask, addToProcessAndTask
0005
0006 def makeRecoJetCollection(process,
0007 pfCandCollection,
0008 coneSize,
0009 useCHSAlgo,
0010 postfix):
0011
0012 task = getPatAlgosToolsTask(process)
0013
0014 jetColName="ak"+str(int(coneSize*10))+"PFJets"
0015 internalPfCandColl=pfCandCollection
0016 if useCHSAlgo:
0017 addToProcessAndTask("tmpPFCandCollPtr"+postfix,
0018 cms.EDProducer("PFCandidateFwdPtrProducer",
0019 src = cms.InputTag(pfCandCollection) ),
0020 process, task )
0021 process.load("CommonTools.ParticleFlow.pfNoPileUpJME_cff")
0022 task.add(process.pfNoPileUpJMETask)
0023 cloneProcessingSnippet(process, getattr(process,"pfNoPileUpJMESequence"), postfix, addToTask = True )
0024 getattr(process, "pfPileUpJME"+postfix).PFCandidates = cms.InputTag("tmpPFCandCollPtr"+postfix)
0025 getattr(process, "pfNoPileUpJME"+postfix).bottomCollection = cms.InputTag("tmpPFCandCollPtr"+postfix)
0026
0027 internalPfCandColl = "pfNoPileUpJME"+postfix
0028 jetColName+="CHS"
0029
0030 addToProcessAndTask(jetColName+postfix,
0031 getattr(process,jetColName).clone(
0032 src = cms.InputTag(internalPfCandColl),
0033 rParam=cms.double(coneSize),
0034 doAreaFastjet = True),
0035 process, task )
0036
0037 def reduceInputJetCollection(process, jetCollection, badMuons):
0038
0039 task = getPatAlgosToolsTask(process)
0040
0041 label = jetCollection.label()
0042 addToProcessAndTask(label+"AllEvents",
0043 jetCollection.clone(),
0044 process, task )
0045 process.globalReplace(label,
0046 cms.EDProducer("PFJetCollectionReducer",
0047 writeEmptyCollection = cms.bool(True),
0048 jetCollection = cms.InputTag(label+"AllEvents"),
0049 triggeringCollections=badMuons,
0050 )
0051 )
0052
0053 def reduceFinalJetCollection(process, jetCollection, badMuons):
0054
0055 task = getPatAlgosToolsTask(process)
0056
0057 label = jetCollection.label()
0058 addToProcessAndTask(label+"AllEvents",
0059 jetCollection.clone(),
0060 process, task )
0061 process.globalReplace(label,
0062 cms.EDProducer("PATJetCollectionReducer",
0063 writeEmptyCollection = cms.bool(False),
0064 jetCollection = cms.InputTag(label+"AllEvents"),
0065 triggeringCollections=badMuons,
0066 )
0067 )
0068
0069
0070 def backupJetsFirstStep(process):
0071
0072 task = getPatAlgosToolsTask(process)
0073
0074 """Take snapshots of the sequences before we change the PFCandidates"""
0075 process.originalAK4JetTask, process.originalAK4JetSequence = listDependencyChain(process, getattr(process,"slimmedJets"), ('particleFlow', 'muons'))
0076 backupAK4JetSequence = cloneProcessingSnippet(process, getattr(process,"originalAK4JetSequence"), "Backup", addToTask = True )
0077 process.originalAK4PuppiJetTask, process.originalAK4PuppiJetSequence = listDependencyChain(process,getattr(process,"slimmedJetsPuppi"), ('particleFlow', 'muons'))
0078 backupAK4PuppiJetSequence = cloneProcessingSnippet(process, getattr(process,"originalAK4PuppiJetSequence"), "Backup", addToTask = True )
0079 process.originalAK8JetTask,process.originalAK8JetSequence = listDependencyChain(process, getattr(process,"slimmedJetsAK8"), ('particleFlow', 'muons'))
0080 backupAK8JetSequence = cloneProcessingSnippet(process, getattr(process,"originalAK8JetSequence"), "Backup", addToTask = True )
0081
0082 task.add(process.originalAK4JetTask)
0083 task.add(process.originalAK4PuppiJetTask)
0084 task.add(process.originalAK8JetTask)
0085
0086 return { 'AK4':backupAK4JetSequence, 'AK4Puppi':backupAK4PuppiJetSequence, 'AK8':backupAK8JetSequence }
0087
0088
0089 def backupJetsSecondStep(process, sequences, badMuons, verbose=False):
0090 """Deploy the snapshots after the change of PFCandidates"""
0091
0092 task = getPatAlgosToolsTask(process)
0093
0094
0095 for sequence in sequences.values():
0096 massSearchReplaceAnyInputTag(sequence, "pfCandidatesBadMuonsCleaned", "particleFlow")
0097 massSearchReplaceAnyInputTag(sequence, "muonsCleaned", "muons")
0098 for mod in listModules(sequence):
0099 task.add(mod)
0100
0101 reduceInputJetCollection(process, process.ak4PFJetsCHSBackup, badMuons)
0102 reduceInputJetCollection(process, process.ak4PFJetsPuppiBackup, badMuons)
0103
0104 process.patJetsBackup.userData.userInts.labelPostfixesToStrip = cms.vstring("Backup",)
0105 process.patJetsBackup.userData.userFloats.labelPostfixesToStrip = cms.vstring("Backup",)
0106 process.patJetsAK8Backup.userData.userFloats.labelPostfixesToStrip = cms.vstring("Backup",)
0107 process.patJetsAK8PuppiBackup.userData.userFloats.labelPostfixesToStrip = cms.vstring("Backup",)
0108
0109
0110
0111 if hasattr(process,"slimmedJetsBackup"):
0112 process.slimmedJetsBackup.mixedDaughters = True
0113 process.slimmedJetsBackup.packedPFCandidates = cms.InputTag("oldPFCandToPackedOrDiscarded")
0114 process.packedPatJetsAK8Backup.fixDaughters = False
0115
0116
0117 process.slimmedJetsAK8Backup.rekeyDaughters = '1'
0118 process.slimmedJetsAK8Backup.mixedDaughters = False
0119 process.slimmedJetsAK8Backup.packedPFCandidates = cms.InputTag("packedPFCandidatesBackup")
0120 reduceFinalJetCollection(process, process.slimmedJetsBackup, badMuons)
0121
0122 if hasattr(process,"slimmedJetsAK8PFCHSSoftDropSubjetsBackup"):
0123 process.slimmedJetsAK8PFCHSSoftDropSubjetsBackup.mixedDaughters = True
0124 process.slimmedJetsAK8PFCHSSoftDropSubjetsBackup.packedPFCandidates = cms.InputTag("oldPFCandToPackedOrDiscarded")
0125 reduceFinalJetCollection(process, process.slimmedJetsAK8Backup, badMuons)
0126
0127
0128 process.slimmedJetsAK8BackupAllEvents.packedPFCandidates = cms.InpuTag("packedPFCandidatesBackup")
0129
0130
0131 if hasattr(process,"slimmedJetsPuppiBackup"):
0132 process.slimmedJetsPuppiBackup.dropDaughters = '1'
0133 process.slimmedJetsAK8PFPuppiSoftDropSubjetsBackup.dropDaughters = '1'
0134 reduceFinalJetCollection(process, process.slimmedJetsPuppiBackup, badMuons)
0135
0136
0137 addKeepStatement(process,
0138 "keep *_slimmedJets_*_*",
0139 ["keep *_slimmedJetsBackup_*_*"],
0140 verbose=verbose)
0141 addKeepStatement(process, "keep *_slimmedJetsPuppi_*_*",
0142 ["keep *_slimmedJetsPuppiBackup_*_*"],
0143 verbose=verbose)
0144 addKeepStatement(process,
0145 "keep *_slimmedJetsAK8_*_*",
0146 ["keep *_slimmedJetsAK8Backup_*_*"],
0147 verbose=verbose)
0148 addKeepStatement(process,"keep *_slimmedJetsAK8PFCHSSoftDropPacked_SubJets_*",
0149 ["keep *_slimmedJetsAK8PFCHSSoftDropPackedBackup_SubJets_*"],
0150 verbose=verbose)
0151 addKeepStatement(process,"keep *_slimmedJetsAK8PFPuppiSoftDropPacked_SubJets_*",
0152 ["keep *_slimmedJetsAK8PFPuppiSoftDropPackedBackup_SubJets_*"],
0153 verbose=verbose)
0154
0155