Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-11-27 03:17:59

0001 import FWCore.ParameterSet.Config as cms
0002 
0003 from PhysicsTools.PatAlgos.tools.helpers import MassSearchReplaceAnyInputTagVisitor, addKeepStatement
0004 from PhysicsTools.PatAlgos.tools.helpers import getPatAlgosToolsTask
0005 
0006 def loadJetMETBTag(process):
0007 
0008     task = getPatAlgosToolsTask(process)
0009 
0010     import RecoParticleFlow.PFProducer.pfLinker_cff
0011     process.particleFlowPtrs = RecoParticleFlow.PFProducer.pfLinker_cff.particleFlowPtrs.clone()
0012     task.add(process.particleFlowPtrs)
0013 
0014     process.load("CommonTools.ParticleFlow.pfNoPileUpIso_cff")
0015     task.add(process.pfNoPileUpIsoTask)
0016     process.load("CommonTools.ParticleFlow.ParticleSelectors.pfSortByType_cff")
0017     task.add(process.pfSortByTypeTask)
0018 
0019     import RecoJets.Configuration.RecoPFJets_cff
0020     process.ak4PFJetsCHS = RecoJets.Configuration.RecoPFJets_cff.ak4PFJetsCHS.clone()
0021     task.add(process.ak4PFJetsCHS)
0022     # need also the non-CHS ones as they are used to seed taus
0023     process.ak4PFJets = RecoJets.Configuration.RecoPFJets_cff.ak4PFJets.clone()
0024     task.add(process.ak4PFJets)
0025     process.ak8PFJetsCHS = RecoJets.Configuration.RecoPFJets_cff.ak8PFJetsCHS.clone()
0026     task.add(process.ak8PFJetsCHS)
0027 
0028     process.fixedGridRhoAll = RecoJets.Configuration.RecoPFJets_cff.fixedGridRhoAll.clone()
0029     process.fixedGridRhoFastjetAll = RecoJets.Configuration.RecoPFJets_cff.fixedGridRhoFastjetAll.clone()
0030     process.fixedGridRhoFastjetCentral = RecoJets.Configuration.RecoPFJets_cff.fixedGridRhoFastjetCentral.clone()
0031     process.fixedGridRhoFastjetCentralChargedPileUp = RecoJets.Configuration.RecoPFJets_cff.fixedGridRhoFastjetCentralChargedPileUp.clone()
0032     process.fixedGridRhoFastjetCentralNeutral = RecoJets.Configuration.RecoPFJets_cff.fixedGridRhoFastjetCentralNeutral.clone()
0033     task.add( process.fixedGridRhoAll,
0034               process.fixedGridRhoFastjetAll,
0035               process.fixedGridRhoFastjetCentral,
0036               process.fixedGridRhoFastjetCentralChargedPileUp,
0037               process.fixedGridRhoFastjetCentralNeutral )
0038 
0039     process.load("RecoJets.JetAssociationProducers.ak4JTA_cff")
0040     task.add(process.ak4JTATask)
0041 
0042     process.load('RecoBTag.Configuration.RecoBTag_cff')
0043     task.add(process.btaggingTask)
0044 
0045     process.load("RecoMET.METProducers.pfMet_cfi")
0046     task.add(process.pfMet)
0047 
0048 
0049 def cleanPfCandidates(process, verbose=False):
0050     task = getPatAlgosToolsTask(process)
0051 
0052     #add producer at the beginning of the schedule
0053     process.load("CommonTools.ParticleFlow.pfCandidateRecalibrator_cfi")
0054     task.add(process.pfCandidateRecalibrator)
0055 
0056     replacePFCandidates = MassSearchReplaceAnyInputTagVisitor("particleFlow", "pfCandidateRecalibrator", verbose=verbose)
0057     replacePFTmpPtrs = MassSearchReplaceAnyInputTagVisitor("particleFlowTmpPtrs", "particleFlowPtrs", verbose=verbose)
0058     for everywhere in [ process.producers, process.filters, process.analyzers, process.psets, process.vpsets ]:
0059         for name,obj in everywhere.items():
0060             if obj != process.pfCandidateRecalibrator:
0061                 replacePFCandidates.doIt(obj, name)
0062                 replacePFTmpPtrs.doIt(obj, name)
0063 
0064 
0065     process.load("CommonTools.ParticleFlow.pfEGammaToCandidateRemapper_cfi")
0066     task.add(process.pfEGammaToCandidateRemapper)
0067     process.pfEGammaToCandidateRemapper.pf2pf = cms.InputTag("pfCandidateRecalibrator")
0068     process.reducedEgamma.gsfElectronsPFValMap = cms.InputTag("pfEGammaToCandidateRemapper","electrons")
0069     process.reducedEgamma.photonsPFValMap      = cms.InputTag("pfEGammaToCandidateRemapper","photons")
0070 
0071 
0072 def addDiscardedPFCandidates(process, inputCollection, verbose=False):
0073 
0074     task = getPatAlgosToolsTask(process)
0075 
0076     process.primaryVertexAssociationDiscardedCandidates = process.primaryVertexAssociation.clone(
0077         particles = inputCollection,
0078         )
0079     task.add(process.primaryVertexAssociationDiscardedCandidates)
0080 
0081     process.packedPFCandidatesDiscarded = process.packedPFCandidates.clone(
0082         inputCollection = inputCollection,
0083         PuppiNoLepSrc = cms.InputTag(""),
0084         PuppiSrc = cms.InputTag(""),
0085         secondaryVerticesForWhiteList = cms.VInputTag(),
0086         vertexAssociator = cms.InputTag("primaryVertexAssociationDiscardedCandidates","original")
0087         )
0088     task.add(process.packedPFCandidatesDiscarded)
0089 
0090     addKeepStatement(process, "keep patPackedCandidates_packedPFCandidates_*_*",
0091                              ["keep patPackedCandidates_packedPFCandidatesDiscarded_*_*"],
0092                               verbose=verbose)
0093 
0094 
0095 def customizeAll(process, verbose=False):
0096 
0097     if verbose:
0098         print("===>>> customizing the process for legacy rereco 2016")
0099 
0100     loadJetMETBTag(process)
0101 
0102     cleanPfCandidates(process, verbose)
0103     addDiscardedPFCandidates(process, cms.InputTag("pfCandidateRecalibrator","discarded"), verbose=verbose)
0104 
0105     return process