def miniAOD_customizeCommon(process): process.patMuons.isoDeposits = cms.PSet() process.patElectrons.isoDeposits = cms.PSet() process.patTaus.isoDeposits = cms.PSet() process.patPhotons.isoDeposits = cms.PSet() # process.patMuons.embedTrack = True # used for IDs process.patMuons.embedCombinedMuon = True # used for IDs process.patMuons.embedMuonBestTrack = True # used for IDs process.patMuons.embedStandAloneMuon = True # maybe? process.patMuons.embedPickyMuon = False # no, use best track process.patMuons.embedTpfmsMuon = False # no, use best track process.patMuons.embedDytMuon = False # no, use best track # # disable embedding of electron and photon associated objects already stored by the ReducedEGProducer process.patElectrons.embedGsfElectronCore = False ## process.patElectrons.embed in AOD externally stored gsf electron core process.patElectrons.embedSuperCluster = False ## process.patElectrons.embed in AOD externally stored supercluster process.patElectrons.embedPflowSuperCluster = False ## process.patElectrons.embed in AOD externally stored supercluster process.patElectrons.embedSeedCluster = False ## process.patElectrons.embed in AOD externally stored the electron's seedcluster process.patElectrons.embedBasicClusters = False ## process.patElectrons.embed in AOD externally stored the electron's basic clusters process.patElectrons.embedPreshowerClusters = False ## process.patElectrons.embed in AOD externally stored the electron's preshower clusters process.patElectrons.embedPflowBasicClusters = False ## process.patElectrons.embed in AOD externally stored the electron's pflow basic clusters process.patElectrons.embedPflowPreshowerClusters = False ## process.patElectrons.embed in AOD externally stored the electron's pflow preshower clusters process.patElectrons.embedRecHits = False ## process.patElectrons.embed in AOD externally stored the RecHits - can be called from the PATElectronProducer process.patElectrons.electronSource = cms.InputTag("reducedEgamma","reducedGedGsfElectrons") process.patElectrons.electronIDSources = cms.PSet( # configure many IDs as InputTag <someName> = <someTag> you # can comment out those you don't want to save some disk space eidRobustLoose = cms.InputTag("reducedEgamma","eidRobustLoose"), eidRobustTight = cms.InputTag("reducedEgamma","eidRobustTight"), eidLoose = cms.InputTag("reducedEgamma","eidLoose"), eidTight = cms.InputTag("reducedEgamma","eidTight"), eidRobustHighEnergy = cms.InputTag("reducedEgamma","eidRobustHighEnergy"), ) process.patElectrons.addPFClusterIso = cms.bool(True) process.patElectrons.ecalPFClusterIsoMap = cms.InputTag("reducedEgamma", "eleEcalPFClusIso") process.patElectrons.hcalPFClusterIsoMap = cms.InputTag("reducedEgamma", "eleHcalPFClusIso") process.elPFIsoDepositChargedPAT.src = cms.InputTag("reducedEgamma","reducedGedGsfElectrons") process.elPFIsoDepositChargedAllPAT.src = cms.InputTag("reducedEgamma","reducedGedGsfElectrons") process.elPFIsoDepositNeutralPAT.src = cms.InputTag("reducedEgamma","reducedGedGsfElectrons") process.elPFIsoDepositGammaPAT.src = cms.InputTag("reducedEgamma","reducedGedGsfElectrons") process.elPFIsoDepositPUPAT.src = cms.InputTag("reducedEgamma","reducedGedGsfElectrons") # process.patPhotons.embedSuperCluster = False ## whether to process.patPhotons.embed in AOD externally stored supercluster process.patPhotons.embedSeedCluster = False ## process.patPhotons.embed in AOD externally stored the photon's seedcluster process.patPhotons.embedBasicClusters = False ## process.patPhotons.embed in AOD externally stored the photon's basic clusters process.patPhotons.embedPreshowerClusters = False ## process.patPhotons.embed in AOD externally stored the photon's preshower clusters process.patPhotons.embedRecHits = False ## process.patPhotons.embed in AOD externally stored the RecHits - can be called from the PATPhotonProducer process.patPhotons.addPFClusterIso = cms.bool(True) process.patPhotons.ecalPFClusterIsoMap = cms.InputTag("reducedEgamma", "phoEcalPFClusIso") process.patPhotons.hcalPFClusterIsoMap = cms.InputTag("reducedEgamma", "phoHcalPFClusIso") process.patPhotons.photonSource = cms.InputTag("reducedEgamma","reducedGedPhotons") process.patPhotons.electronSource = cms.InputTag("reducedEgamma","reducedGedGsfElectrons") process.patPhotons.photonIDSources = cms.PSet( PhotonCutBasedIDLoose = cms.InputTag('reducedEgamma', 'PhotonCutBasedIDLoose'), PhotonCutBasedIDTight = cms.InputTag('reducedEgamma', 'PhotonCutBasedIDTight') ) process.phPFIsoDepositChargedPAT.src = cms.InputTag("reducedEgamma","reducedGedPhotons") process.phPFIsoDepositChargedAllPAT.src = cms.InputTag("reducedEgamma","reducedGedPhotons") process.phPFIsoDepositNeutralPAT.src = cms.InputTag("reducedEgamma","reducedGedPhotons") process.phPFIsoDepositGammaPAT.src = cms.InputTag("reducedEgamma","reducedGedPhotons") process.phPFIsoDepositPUPAT.src = cms.InputTag("reducedEgamma","reducedGedPhotons") # process.selectedPatJets.cut = cms.string("pt > 10") process.selectedPatMuons.cut = cms.string("pt > 5 || isPFMuon || (pt > 3 && (isGlobalMuon || isStandAloneMuon || numberOfMatches > 0 || muonID('RPCMuLoose')))") process.selectedPatElectrons.cut = cms.string("") process.selectedPatTaus.cut = cms.string("pt > 18. && tauID('decayModeFindingNewDMs')> 0.5") process.selectedPatPhotons.cut = cms.string("") from PhysicsTools.PatAlgos.tools.jetTools import addJetCollection from PhysicsTools.PatAlgos.slimming.applySubstructure_cff import applySubstructure applySubstructure( process ) # from PhysicsTools.PatAlgos.tools.trigTools import switchOnTriggerStandAlone switchOnTriggerStandAlone( process, outputModule = '' ) process.patTrigger.packTriggerPathNames = cms.bool(True) # # apply type I/type I + II PFMEt corrections to pat::MET object # and estimate systematic uncertainties on MET # FIXME: are we 100% sure this should still be PF and not PFchs? -> MM: Yes for <=75X addJetCollection(process, postfix = "ForMetUnc", labelName = 'AK4PF', jetSource = cms.InputTag('ak4PFJets'), jetCorrections = ('AK4PF', ['L1FastJet', 'L2Relative', 'L3Absolute'], '')) process.patJetsAK4PFForMetUnc.getJetMCFlavour = False from PhysicsTools.PatUtils.tools.runMETCorrectionsAndUncertainties import runMETCorrectionsAndUncertainties #MET flavors runMETCorrectionsAndUncertainties(process, metType="PF", correctionLevel=["T0","T1","T2","Smear","Txy"], computeUncertainties=False, produceIntermediateCorrections=True, addToPatDefaultSequence=False, jetCollectionUnskimmed="patJetsAK4PFForMetUnc", jetCollection="selectedPatJetsAK4PFForMetUnc", postfix="", ) #MET T1 uncertainties runMETCorrectionsAndUncertainties(process, metType="PF", correctionLevel=["T1"], computeUncertainties=True, produceIntermediateCorrections=False, addToPatDefaultSequence=False, jetCollectionUnskimmed="patJetsAK4PFForMetUnc", jetCollection="selectedPatJetsAK4PFForMetUnc", postfix="", ) #MET T1 Smeared JER uncertainties runMETCorrectionsAndUncertainties(process, metType="PF", correctionLevel=["T1","Smear"], computeUncertainties=True, produceIntermediateCorrections=False, addToPatDefaultSequence=False, jetCollectionUnskimmed="patJetsAK4PFForMetUnc", jetCollection="selectedPatJetsAK4PFForMetUnc", postfix="", ) from PhysicsTools.PatAlgos.tools.metTools import addMETCollection addMETCollection(process, labelName = "patCaloMet", metSource = "caloMetM" ) #keep this after all addJetCollections otherwise it will attempt computing them also for stuf with no taginfos #Some useful BTAG vars process.patJets.userData.userFunctions = cms.vstring( '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").secondaryVertex(0).p4.M):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").secondaryVertex(0).numberOfSourceCandidatePtrs):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").flightDistance(0).value):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").flightDistance(0).significance):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").secondaryVertex(0).p4.x):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").secondaryVertex(0).p4.y):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").secondaryVertex(0).p4.z):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").secondaryVertex(0).vertex.x):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").secondaryVertex(0).vertex.y):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").secondaryVertex(0).vertex.z):(0)', ) process.patJets.userData.userFunctionLabels = cms.vstring('vtxMass','vtxNtracks','vtx3DVal','vtx3DSig','vtxPx','vtxPy','vtxPz','vtxPosX','vtxPosY','vtxPosZ') process.patJets.tagInfoSources = cms.VInputTag(cms.InputTag("pfSecondaryVertexTagInfos")) process.patJets.addTagInfos = cms.bool(True) # ## PU JetID process.load("PhysicsTools.PatAlgos.slimming.pileupJetId_cfi") process.patJets.userData.userFloats.src = [ cms.InputTag("pileupJetId:fullDiscriminant"), ] ## CaloJets process.caloJetMap = cms.EDProducer("RecoJetDeltaRValueMapProducer", src = process.patJets.jetSource, matched = cms.InputTag("ak4CaloJets"), distMax = cms.double(0.4), values = cms.vstring('pt','emEnergyFraction'), valueLabels = cms.vstring('pt','emEnergyFraction'), lazyParser = cms.bool(True) ) process.patJets.userData.userFloats.src += [ cms.InputTag("caloJetMap:pt"), cms.InputTag("caloJetMap:emEnergyFraction") ] #EGM object modifications from RecoEgamma.EgammaTools.egammaObjectModificationsInMiniAOD_cff import egamma_modifications process.slimmedElectrons.modifierConfig.modifications = egamma_modifications process.slimmedPhotons.modifierConfig.modifications = egamma_modifications #VID Electron IDs electron_ids = ['RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_PHYS14_PU20bx25_V2_cff', 'RecoEgamma.ElectronIdentification.Identification.heepElectronID_HEEPV51_cff', 'RecoEgamma.ElectronIdentification.Identification.heepElectronID_HEEPV60_cff', 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_PHYS14_PU20bx25_nonTrig_V1_cff'] switchOnVIDElectronIdProducer(process,DataFormat.MiniAOD) process.egmGsfElectronIDs.physicsObjectSrc = \ cms.InputTag("reducedEgamma","reducedGedGsfElectrons") process.electronMVAValueMapProducer.src = \ cms.InputTag('reducedEgamma','reducedGedGsfElectrons') for idmod in electron_ids: setupAllVIDIdsInModule(process,idmod,setupVIDElectronSelection) #VID Photon IDs photon_ids = ['RecoEgamma.PhotonIdentification.Identification.cutBasedPhotonID_PHYS14_PU20bx25_V2_cff', 'RecoEgamma.PhotonIdentification.Identification.mvaPhotonID_PHYS14_PU20bx25_nonTrig_V1_cff', 'RecoEgamma.PhotonIdentification.Identification.mvaPhotonID_Spring15_50ns_nonTrig_V0_cff'] switchOnVIDPhotonIdProducer(process,DataFormat.MiniAOD) process.egmPhotonIDs.physicsObjectSrc = \ cms.InputTag("reducedEgamma","reducedGedPhotons") process.photonIDValueMapProducer.src = \ cms.InputTag("reducedEgamma","reducedGedPhotons") process.photonIDValueMapProducer.particleBasedIsolation = \ cms.InputTag("reducedEgamma","reducedPhotonPfCandMap") process.photonMVAValueMapProducer.src = \ cms.InputTag('reducedEgamma','reducedGedPhotons') for idmod in photon_ids: setupAllVIDIdsInModule(process,idmod,setupVIDPhotonSelection) # Adding puppi jets process.load('CommonTools.PileupAlgos.Puppi_cff') process.load('RecoJets.JetProducers.ak4PFJetsPuppi_cfi') process.ak4PFJetsPuppi.doAreaFastjet = True # even for standard ak4PFJets this is overwritten in RecoJets/Configuration/python/RecoPFJets_cff #process.puppi.candName = cms.InputTag('packedPFCandidates') #process.puppi.vertexName = cms.InputTag('offlineSlimmedPrimaryVertices') from RecoJets.JetAssociationProducers.j2tParametersVX_cfi import j2tParametersVX process.ak4PFJetsPuppiTracksAssociatorAtVertex = cms.EDProducer("JetTracksAssociatorAtVertex", j2tParametersVX, jets = cms.InputTag("ak4PFJetsPuppi") ) process.patJetPuppiCharge = cms.EDProducer("JetChargeProducer", src = cms.InputTag("ak4PFJetsPuppiTracksAssociatorAtVertex"), var = cms.string('Pt'), exp = cms.double(1.0) ) addJetCollection(process, postfix = "", labelName = 'Puppi', jetSource = cms.InputTag('ak4PFJetsPuppi'), jetCorrections = ('AK4PFchs', ['L2Relative', 'L3Absolute'], ''), algo= 'AK', rParam = 0.4, btagDiscriminators = map(lambda x: x.value() ,process.patJets.discriminatorSources) ) process.patJetGenJetMatchPuppi.matched = 'slimmedGenJets' process.patJetsPuppi.userData.userFloats.src = cms.VInputTag(cms.InputTag("")) process.patJetsPuppi.jetChargeSource = cms.InputTag("patJetPuppiCharge") process.selectedPatJetsPuppi.cut = cms.string("pt > 20") process.load('PhysicsTools.PatAlgos.slimming.slimmedJets_cfi') process.slimmedJetsPuppi = process.slimmedJets.clone() process.slimmedJetsPuppi.src = cms.InputTag("selectedPatJetsPuppi") process.slimmedJetsPuppi.packedPFCandidates = cms.InputTag("packedPFCandidates") ## puppi met process.load('RecoMET.METProducers.PFMET_cfi') process.pfMetPuppi = process.pfMet.clone() process.pfMetPuppi.src = cms.InputTag("puppi") process.pfMetPuppi.alias = cms.string('pfMetPuppi') # type1 correction, from puppi jets process.corrPfMetType1Puppi = process.corrPfMetType1.clone( src = 'ak4PFJetsPuppi', jetCorrLabel = 'ak4PFCHSL2L3Corrector', ) del process.corrPfMetType1Puppi.offsetCorrLabel # no L1 for PUPPI jets process.pfMetT1Puppi = process.pfMetT1.clone( src = 'pfMetPuppi', srcCorrections = [ cms.InputTag("corrPfMetType1Puppi","type1") ] ) from PhysicsTools.PatAlgos.tools.metTools import addMETCollection addMETCollection(process, labelName='patMETPuppi', metSource='pfMetT1Puppi') # T1 addMETCollection(process, labelName='patPFMetPuppi', metSource='pfMetPuppi') # RAW process.load('PhysicsTools.PatAlgos.slimming.slimmedMETs_cfi') process.slimmedMETsPuppi = process.slimmedMETs.clone() process.slimmedMETsPuppi.src = cms.InputTag("patMETPuppi") process.slimmedMETsPuppi.rawVariation = cms.InputTag("patPFMetPuppi") # only central value # only central values for puppi met del process.slimmedMETsPuppi.t01Variation del process.slimmedMETsPuppi.t1SmearedVarsAndUncs del process.slimmedMETsPuppi.tXYUncForRaw del process.slimmedMETsPuppi.tXYUncForT1 del process.slimmedMETsPuppi.tXYUncForT01 del process.slimmedMETsPuppi.tXYUncForT1Smear del process.slimmedMETsPuppi.tXYUncForT01Smear del process.slimmedMETsPuppi.caloMET
from PhysicsTools.PatAlgos.tools.jetTools import switchJetCollection switchJetCollection(process, jetSource = cms.InputTag('ak4PFJets'), jetCorrections = ('AK4PF', ['L1FastJet', 'L2Relative', 'L3Absolute'], '') ) # apply type I PFMEt corrections to pat::MET object # and estimate systematic uncertainties on MET from PhysicsTools.PatUtils.tools.runMETCorrectionsAndUncertainties import runMETCorrectionsAndUncertainties runMETCorrectionsAndUncertainties(process, metType="PF", correctionLevel=["T1"], computeUncertainties=True, produceIntermediateCorrections=False, addToPatDefaultSequence=False, jetCollectionUnskimmed="patJets", jetSelection="pt>15 && abs(eta)<9.9", postfix="", ) ## ------------------------------------------------------ # In addition you usually want to change the following # parameters: ## ------------------------------------------------------ # # process.GlobalTag.globaltag = ... ## (according to https://twiki.cern.ch/twiki/bin/view/CMS/SWGuideFrontierConditions) # ## ## switch to RECO input from PhysicsTools.PatAlgos.patInputFiles_cff import filesRelValProdTTbarAODSIM
process.noHFCands = cms.EDFilter( "CandPtrSelector", src=cms.InputTag("packedPFCandidates"), cut=cms.string("abs(pdgId)!=1 && abs(pdgId)!=2 && abs(eta)<3.0")) #jets are rebuilt from those candidates by the tools, no need to do anything else ### ================================================================================= from PhysicsTools.PatUtils.tools.runMETCorrectionsAndUncertainties import runMETCorrectionsAndUncertainties process.load("PhysicsTools.PatAlgos.producersLayer1.jetProducer_cff") process.load("PhysicsTools.PatAlgos.selectionLayer1.jetSelector_cfi") #default configuration for miniAOD reprocessing, change the isData flag to run on data #for a full met computation, remove the pfCandColl input runMETCorrectionsAndUncertainties(process, #isData=runOnData, ) if not useHFCandidates: runMETCorrectionsAndUncertainties( process, #isData=runOnData, pfCandColl=cms.InputTag("noHFCands"), reclusterJets=True, #needed for NoHF recoMetFromPFCs=True, #needed for NoHF postfix="NoHF") if redoPuppi: from PhysicsTools.PatAlgos.slimming.puppiForMET_cff import makePuppiesFromMiniAOD makePuppiesFromMiniAOD(process)
if not useHFCandidates: process.noHFCands = cms.EDFilter( "CandPtrSelector", src=cms.InputTag("packedPFCandidates"), cut=cms.string("abs(pdgId)!=1 && abs(pdgId)!=2 && abs(eta)<3.0")) #jets are rebuilt from those candidates by the tools, no need to do anything else ### ================================================================================= from PhysicsTools.PatUtils.tools.runMETCorrectionsAndUncertainties import runMetCorAndUncFromMiniAOD #default configuration for miniAOD reprocessing, change the isData flag to run on data #for a full met computation, remove the pfCandColl input pt.runMETCorrectionsAndUncertainties( process, addToPatDefaultSequence=False, #This seems to crash if true pfCandCollection=cms.InputTag('particleFlow'), onMiniAOD=True) if not useHFCandidates: pt.runMETCorrectionsAndUncertainties( process, addToPatDefaultSequence=False, #This seems to crash if true pfCandCollection=cms.InputTag('noHFCands'), onMiniAOD=True) ### ------------------------------------------------------------------- ### the lines below remove the L2L3 residual corrections when processing data ### ------------------------------------------------------------------- if not applyResiduals: process.patPFMetT1T2Corr.jetCorrLabelRes = cms.InputTag("L3Absolute")
]) ) from PhysicsTools.PatUtils.tools.runMETCorrectionsAndUncertainties import runMETCorrectionsAndUncertainties #recomputation only available for T1 and Txy. T0 is copied from the miniAOD, and smearing is not consudered # necessitates both T1 and T1Txy in the recomputation #MET T1 uncertainties runMETCorrectionsAndUncertainties(process, metType="PF", correctionLevel=["T1"], computeUncertainties=True, produceIntermediateCorrections=False, addToPatDefaultSequence=False, jetCollection="selectedPatJets", electronCollection="slimmedElectrons", muonCollection="slimmedMuons", tauCollection="slimmedTaus", reclusterJets = True, pfCandCollection = "packedPFCandidates", onMiniAOD=True, postfix="", ) #MET T1+Txy runMETCorrectionsAndUncertainties(process, metType="PF", correctionLevel=["T1","Txy"], computeUncertainties=False, produceIntermediateCorrections=False, addToPatDefaultSequence=False, jetCollection="selectedPatJets", electronCollection="slimmedElectrons",
def miniAOD_customizeCommon(process): process.patMuons.isoDeposits = cms.PSet() process.patElectrons.isoDeposits = cms.PSet() process.patTaus.isoDeposits = cms.PSet() process.patPhotons.isoDeposits = cms.PSet() # process.patMuons.embedTrack = True # used for IDs process.patMuons.embedCombinedMuon = True # used for IDs process.patMuons.embedMuonBestTrack = True # used for IDs process.patMuons.embedStandAloneMuon = True # maybe? process.patMuons.embedPickyMuon = False # no, use best track process.patMuons.embedTpfmsMuon = False # no, use best track process.patMuons.embedDytMuon = False # no, use best track # # disable embedding of electron and photon associated objects already stored by the ReducedEGProducer process.patElectrons.embedGsfElectronCore = False ## process.patElectrons.embed in AOD externally stored gsf electron core process.patElectrons.embedSuperCluster = False ## process.patElectrons.embed in AOD externally stored supercluster process.patElectrons.embedPflowSuperCluster = False ## process.patElectrons.embed in AOD externally stored supercluster process.patElectrons.embedSeedCluster = False ## process.patElectrons.embed in AOD externally stored the electron's seedcluster process.patElectrons.embedBasicClusters = False ## process.patElectrons.embed in AOD externally stored the electron's basic clusters process.patElectrons.embedPreshowerClusters = False ## process.patElectrons.embed in AOD externally stored the electron's preshower clusters process.patElectrons.embedPflowBasicClusters = False ## process.patElectrons.embed in AOD externally stored the electron's pflow basic clusters process.patElectrons.embedPflowPreshowerClusters = False ## process.patElectrons.embed in AOD externally stored the electron's pflow preshower clusters process.patElectrons.embedRecHits = False ## process.patElectrons.embed in AOD externally stored the RecHits - can be called from the PATElectronProducer process.patElectrons.electronSource = cms.InputTag("reducedEgamma","reducedGedGsfElectrons") process.patElectrons.electronIDSources = cms.PSet( # configure many IDs as InputTag <someName> = <someTag> you # can comment out those you don't want to save some disk space eidRobustLoose = cms.InputTag("reducedEgamma","eidRobustLoose"), eidRobustTight = cms.InputTag("reducedEgamma","eidRobustTight"), eidLoose = cms.InputTag("reducedEgamma","eidLoose"), eidTight = cms.InputTag("reducedEgamma","eidTight"), eidRobustHighEnergy = cms.InputTag("reducedEgamma","eidRobustHighEnergy"), ) process.patElectrons.addPFClusterIso = cms.bool(True) process.patElectrons.ecalPFClusterIsoMap = cms.InputTag("reducedEgamma", "eleEcalPFClusIso") process.patElectrons.hcalPFClusterIsoMap = cms.InputTag("reducedEgamma", "eleHcalPFClusIso") process.elPFIsoDepositChargedPAT.src = cms.InputTag("reducedEgamma","reducedGedGsfElectrons") process.elPFIsoDepositChargedAllPAT.src = cms.InputTag("reducedEgamma","reducedGedGsfElectrons") process.elPFIsoDepositNeutralPAT.src = cms.InputTag("reducedEgamma","reducedGedGsfElectrons") process.elPFIsoDepositGammaPAT.src = cms.InputTag("reducedEgamma","reducedGedGsfElectrons") process.elPFIsoDepositPUPAT.src = cms.InputTag("reducedEgamma","reducedGedGsfElectrons") # process.patPhotons.embedSuperCluster = False ## whether to process.patPhotons.embed in AOD externally stored supercluster process.patPhotons.embedSeedCluster = False ## process.patPhotons.embed in AOD externally stored the photon's seedcluster process.patPhotons.embedBasicClusters = False ## process.patPhotons.embed in AOD externally stored the photon's basic clusters process.patPhotons.embedPreshowerClusters = False ## process.patPhotons.embed in AOD externally stored the photon's preshower clusters process.patPhotons.embedRecHits = False ## process.patPhotons.embed in AOD externally stored the RecHits - can be called from the PATPhotonProducer process.patPhotons.addPFClusterIso = cms.bool(True) process.patPhotons.ecalPFClusterIsoMap = cms.InputTag("reducedEgamma", "phoEcalPFClusIso") process.patPhotons.hcalPFClusterIsoMap = cms.InputTag("reducedEgamma", "phoHcalPFClusIso") process.patPhotons.photonSource = cms.InputTag("reducedEgamma","reducedGedPhotons") process.patPhotons.electronSource = cms.InputTag("reducedEgamma","reducedGedGsfElectrons") process.patPhotons.photonIDSources = cms.PSet( PhotonCutBasedIDLoose = cms.InputTag('reducedEgamma', 'PhotonCutBasedIDLoose'), PhotonCutBasedIDTight = cms.InputTag('reducedEgamma', 'PhotonCutBasedIDTight') ) process.phPFIsoDepositChargedPAT.src = cms.InputTag("reducedEgamma","reducedGedPhotons") process.phPFIsoDepositChargedAllPAT.src = cms.InputTag("reducedEgamma","reducedGedPhotons") process.phPFIsoDepositNeutralPAT.src = cms.InputTag("reducedEgamma","reducedGedPhotons") process.phPFIsoDepositGammaPAT.src = cms.InputTag("reducedEgamma","reducedGedPhotons") process.phPFIsoDepositPUPAT.src = cms.InputTag("reducedEgamma","reducedGedPhotons") # process.selectedPatJets.cut = cms.string("pt > 10") process.selectedPatMuons.cut = cms.string("pt > 5 || isPFMuon || (pt > 3 && (isGlobalMuon || isStandAloneMuon || numberOfMatches > 0 || muonID('RPCMuLoose')))") process.selectedPatElectrons.cut = cms.string("") process.selectedPatTaus.cut = cms.string("pt > 18. && tauID('decayModeFindingNewDMs')> 0.5") process.selectedPatPhotons.cut = cms.string("") from PhysicsTools.PatAlgos.tools.jetTools import addJetCollection from PhysicsTools.PatAlgos.slimming.applySubstructure_cff import applySubstructure applySubstructure( process ) # from PhysicsTools.PatAlgos.tools.trigTools import switchOnTriggerStandAlone switchOnTriggerStandAlone( process, outputModule = '' ) process.patTrigger.packTriggerPathNames = cms.bool(True) # # apply type I/type I + II PFMEt corrections to pat::MET object # and estimate systematic uncertainties on MET # FIXME: are we 100% sure this should still be PF and not PFchs? -> MM: Yes for <=75X addJetCollection(process, postfix = "ForMetUnc", labelName = 'AK4PF', jetSource = cms.InputTag('ak4PFJets'), jetCorrections = ('AK4PF', ['L1FastJet', 'L2Relative', 'L3Absolute'], '')) process.patJetsAK4PFForMetUnc.getJetMCFlavour = False from PhysicsTools.PatUtils.tools.runMETCorrectionsAndUncertainties import runMETCorrectionsAndUncertainties #MET flavors runMETCorrectionsAndUncertainties(process, metType="PF", correctionLevel=["T0","T1","T2","Smear","Txy"], computeUncertainties=False, produceIntermediateCorrections=True, addToPatDefaultSequence=False, jetCollectionUnskimmed="patJetsAK4PFForMetUnc", jetCollection="selectedPatJetsAK4PFForMetUnc", postfix="", ) #MET T1 uncertainties runMETCorrectionsAndUncertainties(process, metType="PF", correctionLevel=["T1"], computeUncertainties=True, produceIntermediateCorrections=False, addToPatDefaultSequence=False, jetCollectionUnskimmed="patJetsAK4PFForMetUnc", jetCollection="selectedPatJetsAK4PFForMetUnc", postfix="", ) #MET T1 Smeared JER uncertainties runMETCorrectionsAndUncertainties(process, metType="PF", correctionLevel=["T1","Smear"], computeUncertainties=True, produceIntermediateCorrections=False, addToPatDefaultSequence=False, jetCollectionUnskimmed="patJetsAK4PFForMetUnc", jetCollection="selectedPatJetsAK4PFForMetUnc", postfix="", ) from PhysicsTools.PatAlgos.tools.metTools import addMETCollection addMETCollection(process, labelName = "patCaloMet", metSource = "caloMetM" ) #keep this after all addJetCollections otherwise it will attempt computing them also for stuf with no taginfos #Some useful BTAG vars process.patJets.userData.userFunctions = cms.vstring( '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").secondaryVertex(0).p4.M):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").secondaryVertex(0).numberOfSourceCandidatePtrs):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").flightDistance(0).value):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").flightDistance(0).significance):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").secondaryVertex(0).p4.x):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").secondaryVertex(0).p4.y):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").secondaryVertex(0).p4.z):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").secondaryVertex(0).vertex.x):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").secondaryVertex(0).vertex.y):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").secondaryVertex(0).vertex.z):(0)', ) process.patJets.userData.userFunctionLabels = cms.vstring('vtxMass','vtxNtracks','vtx3DVal','vtx3DSig','vtxPx','vtxPy','vtxPz','vtxPosX','vtxPosY','vtxPosZ') process.patJets.tagInfoSources = cms.VInputTag(cms.InputTag("pfSecondaryVertexTagInfos")) process.patJets.addTagInfos = cms.bool(True) # ## PU JetID process.load("RecoJets.JetProducers.PileupJetID_cfi") process.patJets.userData.userFloats.src = [ cms.InputTag("pileupJetId:fullDiscriminant"), ] ## CaloJets process.caloJetMap = cms.EDProducer("RecoJetDeltaRValueMapProducer", src = process.patJets.jetSource, matched = cms.InputTag("ak4CaloJets"), distMax = cms.double(0.4), values = cms.vstring('pt','emEnergyFraction'), valueLabels = cms.vstring('pt','emEnergyFraction'), lazyParser = cms.bool(True) ) process.patJets.userData.userFloats.src += [ cms.InputTag("caloJetMap:pt"), cms.InputTag("caloJetMap:emEnergyFraction") ] #EGM object modifications from RecoEgamma.EgammaTools.egammaObjectModificationsInMiniAOD_cff import egamma_modifications process.slimmedElectrons.modifierConfig.modifications = egamma_modifications process.slimmedPhotons.modifierConfig.modifications = egamma_modifications #VID Electron IDs electron_ids = ['RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_PHYS14_PU20bx25_V2_cff', 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Spring15_25ns_V1_cff', 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Spring15_50ns_V1_cff', 'RecoEgamma.ElectronIdentification.Identification.heepElectronID_HEEPV60_cff', 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring15_25ns_nonTrig_V1_cff'] switchOnVIDElectronIdProducer(process,DataFormat.MiniAOD) process.egmGsfElectronIDs.physicsObjectSrc = \ cms.InputTag("reducedEgamma","reducedGedGsfElectrons") process.electronMVAValueMapProducer.src = \ cms.InputTag('reducedEgamma','reducedGedGsfElectrons') process.electronRegressionValueMapProducer.src = \ cms.InputTag('reducedEgamma','reducedGedGsfElectrons') for idmod in electron_ids: setupAllVIDIdsInModule(process,idmod,setupVIDElectronSelection,None,False) #VID Photon IDs photon_ids = ['RecoEgamma.PhotonIdentification.Identification.cutBasedPhotonID_PHYS14_PU20bx25_V2_cff', 'RecoEgamma.PhotonIdentification.Identification.cutBasedPhotonID_Spring15_50ns_V1_cff', 'RecoEgamma.PhotonIdentification.Identification.mvaPhotonID_Spring15_25ns_nonTrig_V2_cff', 'RecoEgamma.PhotonIdentification.Identification.mvaPhotonID_Spring15_50ns_nonTrig_V2_cff'] switchOnVIDPhotonIdProducer(process,DataFormat.MiniAOD) process.egmPhotonIDs.physicsObjectSrc = \ cms.InputTag("reducedEgamma","reducedGedPhotons") process.photonIDValueMapProducer.src = \ cms.InputTag("reducedEgamma","reducedGedPhotons") process.photonRegressionValueMapProducer.src = \ cms.InputTag("reducedEgamma","reducedGedPhotons") process.photonIDValueMapProducer.particleBasedIsolation = \ cms.InputTag("reducedEgamma","reducedPhotonPfCandMap") process.photonMVAValueMapProducer.src = \ cms.InputTag('reducedEgamma','reducedGedPhotons') for idmod in photon_ids: setupAllVIDIdsInModule(process,idmod,setupVIDPhotonSelection,None,False) # Adding puppi jets process.load('CommonTools.PileupAlgos.Puppi_cff') process.load('RecoJets.JetProducers.ak4PFJetsPuppi_cfi') process.ak4PFJetsPuppi.doAreaFastjet = True # even for standard ak4PFJets this is overwritten in RecoJets/Configuration/python/RecoPFJets_cff #process.puppi.candName = cms.InputTag('packedPFCandidates') #process.puppi.vertexName = cms.InputTag('offlineSlimmedPrimaryVertices') # kind of ugly, is there a better way to do this? process.pfNoLepPUPPI = cms.EDFilter("PdgIdCandViewSelector", src = cms.InputTag("particleFlow"), pdgId = cms.vint32( 1,2,22,111,130,310,2112,211,-211,321,-321,999211,2212,-2212 ) ) process.pfLeptonsPUPPET = cms.EDFilter("PdgIdCandViewSelector", src = cms.InputTag("particleFlow"), pdgId = cms.vint32(-11,11,-13,13), ) process.puppiNoLep = process.puppi.clone() process.puppiNoLep.candName = cms.InputTag('pfNoLepPUPPI') from RecoJets.JetAssociationProducers.j2tParametersVX_cfi import j2tParametersVX process.ak4PFJetsPuppiTracksAssociatorAtVertex = cms.EDProducer("JetTracksAssociatorAtVertex", j2tParametersVX, jets = cms.InputTag("ak4PFJetsPuppi") ) process.patJetPuppiCharge = cms.EDProducer("JetChargeProducer", src = cms.InputTag("ak4PFJetsPuppiTracksAssociatorAtVertex"), var = cms.string('Pt'), exp = cms.double(1.0) ) addJetCollection(process, postfix = "", labelName = 'Puppi', jetSource = cms.InputTag('ak4PFJetsPuppi'), jetCorrections = ('AK4PFchs', ['L2Relative', 'L3Absolute'], ''), algo= 'AK', rParam = 0.4, btagDiscriminators = map(lambda x: x.value() ,process.patJets.discriminatorSources) ) process.patJetGenJetMatchPuppi.matched = 'slimmedGenJets' process.patJetsPuppi.userData.userFloats.src = cms.VInputTag(cms.InputTag("")) process.patJetsPuppi.jetChargeSource = cms.InputTag("patJetPuppiCharge") process.selectedPatJetsPuppi.cut = cms.string("pt > 20") process.load('PhysicsTools.PatAlgos.slimming.slimmedJets_cfi') process.slimmedJetsPuppi = process.slimmedJets.clone() process.slimmedJetsPuppi.src = cms.InputTag("selectedPatJetsPuppi") process.slimmedJetsPuppi.packedPFCandidates = cms.InputTag("packedPFCandidates") ## puppi met process.load('RecoMET.METProducers.PFMET_cfi') process.puppiForMET = cms.EDProducer("CandViewMerger", src = cms.VInputTag( "pfLeptonsPUPPET", "puppiNoLep") ) process.pfMetPuppi = process.pfMet.clone() process.pfMetPuppi.src = cms.InputTag("puppiForMET") process.pfMetPuppi.alias = cms.string('pfMetPuppi') # type1 correction, from puppi jets process.corrPfMetType1Puppi = process.corrPfMetType1.clone( src = 'ak4PFJetsPuppi', jetCorrLabel = 'ak4PFCHSL2L3Corrector', ) del process.corrPfMetType1Puppi.offsetCorrLabel # no L1 for PUPPI jets process.pfMetT1Puppi = process.pfMetT1.clone( src = 'pfMetPuppi', srcCorrections = [ cms.InputTag("corrPfMetType1Puppi","type1") ] ) from PhysicsTools.PatAlgos.tools.metTools import addMETCollection addMETCollection(process, labelName='patMETPuppi', metSource='pfMetT1Puppi') # T1 addMETCollection(process, labelName='patPFMetPuppi', metSource='pfMetPuppi') # RAW process.load('PhysicsTools.PatAlgos.slimming.slimmedMETs_cfi') process.slimmedMETsPuppi = process.slimmedMETs.clone() process.slimmedMETsPuppi.src = cms.InputTag("patMETPuppi") process.slimmedMETsPuppi.rawVariation = cms.InputTag("patPFMetPuppi") # only central value # only central values for puppi met del process.slimmedMETsPuppi.t01Variation del process.slimmedMETsPuppi.t1SmearedVarsAndUncs del process.slimmedMETsPuppi.tXYUncForRaw del process.slimmedMETsPuppi.tXYUncForT1 del process.slimmedMETsPuppi.tXYUncForT01 del process.slimmedMETsPuppi.tXYUncForT1Smear del process.slimmedMETsPuppi.tXYUncForT01Smear del process.slimmedMETsPuppi.caloMET
### --------------------------------------------------------------------------- if not useHFCandidates: process.noHFCands = cms.EDFilter("CandPtrSelector", src=cms.InputTag("packedPFCandidates"), cut=cms.string("abs(pdgId)!=1 && abs(pdgId)!=2 && abs(eta)<3.0") ) #jets are rebuilt from those candidates by the tools, no need to do anything else ### ================================================================================= from PhysicsTools.PatUtils.tools.runMETCorrectionsAndUncertainties import runMETCorrectionsAndUncertainties #default configuration for miniAOD reprocessing, change the isData flag to run on data #for a full met computation, remove the pfCandColl input runMETCorrectionsAndUncertainties(process, #isData=runOnData, ) if not useHFCandidates: runMETCorrectionsAndUncertainties(process, #isData=runOnData, pfCandColl=cms.InputTag("noHFCands"), reclusterJets=True, #needed for NoHF recoMetFromPFCs=True, #needed for NoHF postfix="NoHF" ) if redoPuppi: from PhysicsTools.PatAlgos.slimming.puppiForMET_cff import makePuppiesFromMiniAOD makePuppiesFromMiniAOD( process );
if not useHFCandidates: process.noHFCands = cms.EDFilter("CandPtrSelector", src=cms.InputTag("packedPFCandidates"), cut=cms.string("abs(pdgId)!=1 && abs(pdgId)!=2 && abs(eta)<3.0") ) #jets are rebuilt from those candidates by the tools, no need to do anything else ### ================================================================================= from PhysicsTools.PatUtils.tools.runMETCorrectionsAndUncertainties import runMetCorAndUncFromMiniAOD #default configuration for miniAOD reprocessing, change the isData flag to run on data #for a full met computation, remove the pfCandColl input pt.runMETCorrectionsAndUncertainties(process, addToPatDefaultSequence=False, #This seems to crash if true pfCandCollection=cms.InputTag('particleFlow'), onMiniAOD=True ) if not useHFCandidates: pt.runMETCorrectionsAndUncertainties(process, addToPatDefaultSequence=False, #This seems to crash if true pfCandCollection=cms.InputTag('noHFCands'), onMiniAOD=True ) ### ------------------------------------------------------------------- ### the lines below remove the L2L3 residual corrections when processing data ### ------------------------------------------------------------------- if not applyResiduals: process.patPFMetT1T2Corr.jetCorrLabelRes = cms.InputTag("L3Absolute")