jetPreDQMTask = cms.Task(ak4CaloL2RelativeCorrector, ak4CaloL3AbsoluteCorrector, ak4PFL1FastjetCorrector, ak4PFL2RelativeCorrector, ak4PFL3AbsoluteCorrector, ak4PFCHSL1FastjetCorrector, ak4PFCHSL2RelativeCorrector, ak4PFCHSL3AbsoluteCorrector) jetPreDQMSeq = cms.Sequence(jetPreDQMTask) from JetMETCorrections.Type1MET.correctedMet_cff import pfMetT1 from JetMETCorrections.Type1MET.correctionTermsPfMetType0PFCandidate_cff import * from JetMETCorrections.Type1MET.correctionTermsPfMetType1Type2_cff import corrPfMetType1 dqmCorrPfMetType1 = corrPfMetType1.clone( jetCorrLabel='dqmAk4PFCHSL1FastL2L3Corrector', jetCorrLabelRes='dqmAk4PFCHSL1FastL2L3Corrector') pfMETT1 = pfMetT1.clone(srcCorrections=('dqmCorrPfMetType1:type1', )) jetDQMAnalyzerAk4CaloUncleanedMC = jetDQMAnalyzerAk4CaloUncleaned.clone( JetCorrections="dqmAk4CaloL2L3Corrector") jetDQMAnalyzerAk4CaloCleanedMC = jetDQMAnalyzerAk4CaloCleaned.clone( JetCorrections="dqmAk4CaloL2L3Corrector") jetDQMAnalyzerAk4PFUncleanedMC = jetDQMAnalyzerAk4PFUncleaned.clone( JetCorrections="dqmAk4PFL1FastL2L3Corrector") jetDQMAnalyzerAk4PFCleanedMC = jetDQMAnalyzerAk4PFCleaned.clone( JetCorrections="dqmAk4PFL1FastL2L3Corrector") jetDQMAnalyzerAk4PFCHSCleanedMC = jetDQMAnalyzerAk4PFCHSCleaned.clone( JetCorrections="dqmAk4PFCHSL1FastL2L3Corrector") caloMetDQMAnalyzerMC = caloMetDQMAnalyzer.clone( JetCorrections="dqmAk4CaloL2L3Corrector") pfMetDQMAnalyzerMC = pfMetDQMAnalyzer.clone(
jetPreDQMTask = cms.Task(ak4CaloL2RelativeCorrector, ak4CaloL3AbsoluteCorrector, ak4PFL1FastjetCorrector, ak4PFL2RelativeCorrector, ak4PFL3AbsoluteCorrector, ak4PFCHSL1FastjetCorrector, ak4PFCHSL2RelativeCorrector, ak4PFCHSL3AbsoluteCorrector) jetPreDQMSeq = cms.Sequence(jetPreDQMTask) from JetMETCorrections.Type1MET.correctedMet_cff import pfMetT1 from JetMETCorrections.Type1MET.correctionTermsPfMetType0PFCandidate_cff import * from JetMETCorrections.Type1MET.correctionTermsPfMetType1Type2_cff import corrPfMetType1 dqmCorrPfMetType1 = corrPfMetType1.clone( jetCorrLabel=cms.InputTag('dqmAk4PFCHSL1FastL2L3Corrector'), jetCorrLabelRes=cms.InputTag('dqmAk4PFCHSL1FastL2L3Corrector')) pfMETT1 = pfMetT1.clone( srcCorrections=cms.VInputTag(cms.InputTag('dqmCorrPfMetType1', 'type1'))) jetDQMAnalyzerAk4CaloUncleanedMC = jetDQMAnalyzerAk4CaloUncleaned.clone( JetCorrections=cms.InputTag("dqmAk4CaloL2L3Corrector")) jetDQMAnalyzerAk4CaloCleanedMC = jetDQMAnalyzerAk4CaloCleaned.clone( JetCorrections=cms.InputTag("dqmAk4CaloL2L3Corrector")) jetDQMAnalyzerAk4PFUncleanedMC = jetDQMAnalyzerAk4PFUncleaned.clone( JetCorrections=cms.InputTag("dqmAk4PFL1FastL2L3Corrector")) jetDQMAnalyzerAk4PFCleanedMC = jetDQMAnalyzerAk4PFCleaned.clone( JetCorrections=cms.InputTag("dqmAk4PFL1FastL2L3Corrector")) jetDQMAnalyzerAk4PFCHSCleanedMC = jetDQMAnalyzerAk4PFCHSCleaned.clone( JetCorrections=cms.InputTag("dqmAk4PFCHSL1FastL2L3Corrector")) caloMetDQMAnalyzerMC = caloMetDQMAnalyzer.clone( JetCorrections=cms.InputTag("dqmAk4CaloL2L3Corrector")) pfMetDQMAnalyzerMC = pfMetDQMAnalyzer.clone(
dqmAk4PFCHSL1FastL2L3Corrector ) jetPreDQMSeq=cms.Sequence(ak4CaloL2RelativeCorrector*ak4CaloL3AbsoluteCorrector* ak4PFL1FastjetCorrector*ak4PFL2RelativeCorrector*ak4PFL3AbsoluteCorrector* ak4PFCHSL1FastjetCorrector*ak4PFCHSL2RelativeCorrector*ak4PFCHSL3AbsoluteCorrector) from JetMETCorrections.Type1MET.correctedMet_cff import pfMetT1 from JetMETCorrections.Type1MET.correctionTermsPfMetType0PFCandidate_cff import * from JetMETCorrections.Type1MET.correctionTermsPfMetType1Type2_cff import corrPfMetType1 dqmCorrPfMetType1=corrPfMetType1.clone(jetCorrLabel = cms.InputTag('dqmAk4PFCHSL1FastL2L3Corrector'), jetCorrLabelRes = cms.InputTag('dqmAk4PFCHSL1FastL2L3Corrector') ) pfMETT1=pfMetT1.clone(srcCorrections = cms.VInputTag( cms.InputTag('dqmCorrPfMetType1', 'type1') )) jetDQMAnalyzerAk4CaloUncleanedMC=jetDQMAnalyzerAk4CaloUncleaned.clone(JetCorrections = cms.InputTag("dqmAk4CaloL2L3Corrector")) jetDQMAnalyzerAk4CaloCleanedMC=jetDQMAnalyzerAk4CaloCleaned.clone(JetCorrections = cms.InputTag("dqmAk4CaloL2L3Corrector")) jetDQMAnalyzerAk4PFUncleanedMC=jetDQMAnalyzerAk4PFUncleaned.clone(JetCorrections = cms.InputTag("dqmAk4PFL1FastL2L3Corrector")) jetDQMAnalyzerAk4PFCleanedMC=jetDQMAnalyzerAk4PFCleaned.clone(JetCorrections = cms.InputTag("dqmAk4PFL1FastL2L3Corrector")) jetDQMAnalyzerAk4PFCHSCleanedMC=jetDQMAnalyzerAk4PFCHSCleaned.clone(JetCorrections = cms.InputTag("dqmAk4PFCHSL1FastL2L3Corrector")) caloMetDQMAnalyzerMC=caloMetDQMAnalyzer.clone(JetCorrections = cms.InputTag("dqmAk4CaloL2L3Corrector")) pfMetDQMAnalyzerMC=pfMetDQMAnalyzer.clone(JetCorrections = cms.InputTag("dqmAk4PFL1FastL2L3Corrector")) pfMetT1DQMAnalyzerMC=pfMetT1DQMAnalyzer.clone(JetCorrections = cms.InputTag("dqmAk4PFCHSL1FastL2L3Corrector")) jetMETDQMOfflineSource = cms.Sequence(HBHENoiseFilterResultProducer*goodOfflinePrimaryVerticesDQM*AnalyzeSUSYDQM*QGTagger* pileupJetIdCalculatorCHSDQM*pileupJetIdEvaluatorCHSDQM* pileupJetIdCalculatorDQM*pileupJetIdEvaluatorDQM*
from PhysicsTools.PatAlgos.tools.jetTools import switchJetCollection switchJetCollection(process, jetSource=cms.InputTag('ak4PFJets'), jetCorrections=('AK4PF', ['L1FastJet', 'L2Relative', 'L3Absolute'], ''), genParticles=cms.InputTag('prunedGenParticles'), pvSource=cms.InputTag('offlineSlimmedPrimaryVertices')) from RecoMET.METProducers.PFMET_cfi import pfMet process.pfMet = pfMet.clone(src="packedPFCandidates") process.pfMet.calculateSignificance = False from JetMETCorrections.Type1MET.correctedMet_cff import pfMetT1 process.pfMetT1 = pfMetT1.clone() from PhysicsTools.PatUtils.tools.runType1PFMEtUncertainties import runType1PFMEtUncertainties runType1PFMEtUncertainties(process, addToPatDefaultSequence=False, jetCollection="selectedPatJets", photonCollection="slimmedPhotons", electronCollection="slimmedElectrons", muonCollection="slimmedMuons", tauCollection="slimmedTaus", makeType1p2corrPFMEt=False) process.patMETs.addGenMET = cms.bool(False) process.patJets.addGenJetMatch = cms.bool(False) process.patJets.addGenPartonMatch = cms.bool(False) process.patJets.addPartonJetMatch = cms.bool(False)
def setup_jets_mets_(process, isData, bTagDiscriminators): """ Create a new jets collection and a new MET collection with new JECs applied Return a tuple of newly created collections (jet, met) """ # Jets add_ak4_chs_jets_(process, isData, bTagDiscriminators) # b-tagging information. From # https://github.com/cms-sw/cmssw/blob/CMSSW_7_4_X/PhysicsTools/PatAlgos/python/slimming/miniAOD_tools.py#L130 process.patJetsAK4PFCHS.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.patJetsAK4PFCHS.userData.userFunctionLabels = cms.vstring('vtxMass','vtxNtracks','vtx3DVal','vtx3DSig','vtxPx','vtxPy','vtxPz','vtxPosX','vtxPosY','vtxPosZ') process.patJetsAK4PFCHS.tagInfoSources = cms.VInputTag(cms.InputTag("pfSecondaryVertexTagInfosAK4PFCHS")) process.patJetsAK4PFCHS.addTagInfos = cms.bool(True) # Pile-up jet id process.load('RecoJets.JetProducers.PileupJetID_cfi') process.pileupJetId.applyJec = False process.pileupJetId.vertexes = cms.InputTag('offlineSlimmedPrimaryVertices') process.patJetsAK4PFCHS.userData.userFloats.src = [ cms.InputTag("pileupJetId:fullDiscriminant"), ] # MET from PhysicsTools.PatAlgos.tools.metTools import addMETCollection ## Gen MET if not isData: process.genMetExtractor = cms.EDProducer("GenMETExtractor", metSource = cms.InputTag("slimmedMETs", "" , cms.InputTag.skipCurrentProcess()) ) # MET is done from all PF candidates, and Type-I corrections are computed from CHS ak4 PF jets # https://twiki.cern.ch/twiki/bin/viewauth/CMS/MissingETRun2Corrections#type_1_PF_MET_recommended ## Raw PF METs process.load('RecoMET.METProducers.PFMET_cfi') process.pfMet.src = cms.InputTag('packedPFCandidates') addMETCollection(process, labelName='patPFMet', metSource='pfMet') # RAW MET process.patPFMet.addGenMET = False ## Type 1 corrections process.load('JetMETCorrections.Configuration.JetCorrectors_cff') from JetMETCorrections.Type1MET.correctionTermsPfMetType1Type2_cff import corrPfMetType1 from JetMETCorrections.Type1MET.correctedMet_cff import pfMetT1 process.corrPfMetType1 = corrPfMetType1.clone( src = 'ak4PFJetsCHS', jetCorrLabel = 'ak4PFCHSL1FastL2L3Corrector' if not isData else 'ak4PFCHSL1FastL2L3ResidualCorrector', offsetCorrLabel = 'ak4PFCHSL1FastjetCorrector', type1JetPtThreshold = cms.double(15.0) ) process.pfMetT1 = pfMetT1.clone( src = 'pfMet', srcCorrections = [cms.InputTag("corrPfMetType1", "type1")] ) addMETCollection(process, labelName='patMET', metSource='pfMetT1') # T1 MET process.patMET.addGenMET = False ## Slimmed METs from PhysicsTools.PatAlgos.slimming.slimmedMETs_cfi import slimmedMETs #### CaloMET is not available in MiniAOD del slimmedMETs.caloMET process.slimmedMETs = slimmedMETs.clone() process.patMET.addGenMET = not isData if not isData: process.patMET.genMETSource = cms.InputTag("genMetExtractor") process.slimmedMETs.src = cms.InputTag("patMET") process.slimmedMETs.rawVariation = cms.InputTag("patPFMet") # only central value # Only central values are available configure_slimmedmet_(process.slimmedMETs) process.slimmedJetsNewJEC = process.selectedPatJetsAK4PFCHS.clone() process.slimmedMETsNewJEC = process.slimmedMETs.clone() return ('slimmedJetsNewJEC', 'slimmedMETsNewJEC')
def setup_met_(process, isData): from PhysicsTools.PatAlgos.tools.metTools import addMETCollection ## Gen MET if not isData: process.genMetExtractor = cms.EDProducer("GenMETExtractor", metSource = cms.InputTag("slimmedMETs", "" , cms.InputTag.skipCurrentProcess()) ) # MET is done from all PF candidates, and Type-I corrections are computed from CHS ak4 PF jets # https://twiki.cern.ch/twiki/bin/viewauth/CMS/MissingETRun2Corrections#type_1_PF_MET_recommended ## Raw PF METs process.load('RecoMET.METProducers.PFMET_cfi') process.pfMet.src = cms.InputTag('packedPFCandidates') addMETCollection(process, labelName='patPFMet', metSource='pfMet') # RAW MET process.patPFMet.addGenMET = False ## Type 1 corrections process.load('JetMETCorrections.Configuration.JetCorrectors_cff') from JetMETCorrections.Type1MET.correctionTermsPfMetType1Type2_cff import corrPfMetType1 from JetMETCorrections.Type1MET.correctedMet_cff import pfMetT1 if not hasattr(process, 'ak4PFJetsCHS'): print("WARNING: No AK4 CHS jets produced. Type 1 corrections for MET are not available.") else: process.corrPfMetType1 = corrPfMetType1.clone( src = 'ak4PFJetsCHS', jetCorrLabel = 'ak4PFCHSL1FastL2L3Corrector' if not isData else 'ak4PFCHSL1FastL2L3ResidualCorrector', offsetCorrLabel = 'ak4PFCHSL1FastjetCorrector' ) process.pfMetT1 = pfMetT1.clone( src = 'pfMet', srcCorrections = [cms.InputTag("corrPfMetType1", "type1")] ) addMETCollection(process, labelName='patMET', metSource='pfMetT1') # T1 MET process.patMET.addGenMET = False ## Slimmed METs from PhysicsTools.PatAlgos.slimming.slimmedMETs_cfi import slimmedMETs #### CaloMET is not available in MiniAOD del slimmedMETs.caloMET process.slimmedMETs = slimmedMETs.clone() if hasattr(process, "patMET"): # Create MET from Type 1 PF collection process.patMET.addGenMET = not isData if not isData: process.patMET.genMETSource = cms.InputTag("genMetExtractor") process.slimmedMETs.src = cms.InputTag("patMET") process.slimmedMETs.rawUncertainties = cms.InputTag("patPFMet") # only central value else: # Create MET from RAW PF collection process.patPFMet.addGenMET = not isData if not isData: process.patPFMet.genMETSource = cms.InputTag("genMetExtractor") process.slimmedMETs.src = cms.InputTag("patPFMet") del process.slimmedMETs.rawUncertainties # not available del process.slimmedMETs.type1Uncertainties # not available del process.slimmedMETs.type1p2Uncertainties # not available
def setup_nohf_met_(process, isData): from PhysicsTools.PatAlgos.tools.metTools import addMETCollection process.noHFCands = cms.EDFilter("CandPtrSelector", src=cms.InputTag("packedPFCandidates"), cut=cms.string("abs(pdgId)!=1 && abs(pdgId)!=2 && abs(eta)<3.0") ) if not isData and not hasattr(process, 'genMetExtractor'): process.genMetExtractor = cms.EDProducer("GenMETExtractor", metSource = cms.InputTag("slimmedMETs", "" , cms.InputTag.skipCurrentProcess()) ) if not hasattr(process, 'pfMet'): from RecoMET.METProducers.PFMET_cfi import pfMet process.pfMetNoHF = pfMet.clone() else: process.pfMetNoHF = process.pfMet.clone() process.pfMetNoHF.calculateSignificance = False process.pfMetNoHF.src = cms.InputTag('noHFCands') addMETCollection(process, labelName='patPFMetNoHF', metSource='pfMetNoHF') # RAW MET process.patPFMetNoHF.addGenMET = False ## Type 1 corrections if not hasattr(process, 'ak4PFCHSL1FastL2L3Corrector'): process.load('JetMETCorrections.Configuration.JetCorrectors_cff') from JetMETCorrections.Type1MET.correctionTermsPfMetType1Type2_cff import corrPfMetType1 from JetMETCorrections.Type1MET.correctedMet_cff import pfMetT1 if not hasattr(process, 'ak4PFJetsCHS'): print("WARNING: No AK4 CHS jets produced. Type 1 corrections for MET are not available.") else: if not hasattr(process, 'corrPfMetType1'): process.corrPfMetType1 = corrPfMetType1.clone( src = 'ak4PFJetsCHS', jetCorrLabel = 'ak4PFCHSL1FastL2L3Corrector' if not isData else 'ak4PFCHSL1FastL2L3ResidualCorrector', offsetCorrLabel = 'ak4PFCHSL1FastjetCorrector' ) process.pfMetT1NoHF = pfMetT1.clone( src = 'pfMetNoHF', srcCorrections = [cms.InputTag("corrPfMetType1", "type1")] ) addMETCollection(process, labelName='patMETNoHF', metSource='pfMetT1NoHF') # T1 MET process.patMETNoHF.addGenMET = False ## Slimmed METs from PhysicsTools.PatAlgos.slimming.slimmedMETs_cfi import slimmedMETs #### CaloMET is not available in MiniAOD if hasattr(slimmedMETs, 'caloMET'): del slimmedMETs.caloMET process.slimmedMETsNoHF = slimmedMETs.clone() if hasattr(process, "patMETNoHF"): # Create MET from Type 1 PF collection process.patMETNoHF.addGenMET = not isData if not isData: process.patMETNoHF.genMETSource = cms.InputTag("genMetExtractor") process.slimmedMETsNoHF.src = cms.InputTag("patMETNoHF") process.slimmedMETsNoHF.rawUncertainties = cms.InputTag("patPFMetNoHF") # only central value else: # Create MET from RAW PF collection process.patPFMetNoHF.addGenMET = not isData if not isData: process.patPFMetNoHF.genMETSource = cms.InputTag("genMetExtractor") process.slimmedMETsNoHF.src = cms.InputTag("patPFMetNoHF") del process.slimmedMETsNoHF.rawUncertainties # not available del process.slimmedMETsNoHF.type1Uncertainties # not available del process.slimmedMETsNoHF.type1p2Uncertainties # not available
process.ak4PFJets.doAreaFastjet = True from PhysicsTools.PatAlgos.tools.jetTools import switchJetCollection switchJetCollection(process, jetSource = cms.InputTag('ak4PFJets'), jetCorrections = ('AK4PF', ['L1FastJet', 'L2Relative', 'L3Absolute'], ''), genParticles = cms.InputTag('prunedGenParticles'), pvSource = cms.InputTag('offlineSlimmedPrimaryVertices') ) from RecoMET.METProducers.PFMET_cfi import pfMet process.pfMet = pfMet.clone(src = "packedPFCandidates") process.pfMet.calculateSignificance = False from JetMETCorrections.Type1MET.correctedMet_cff import pfMetT1 process.pfMetT1 = pfMetT1.clone() from PhysicsTools.PatUtils.tools.runType1PFMEtUncertainties import runType1PFMEtUncertainties runType1PFMEtUncertainties(process,addToPatDefaultSequence=False, jetCollection="selectedPatJets", photonCollection="slimmedPhotons", electronCollection="slimmedElectrons", muonCollection="slimmedMuons", tauCollection="slimmedTaus", makeType1p2corrPFMEt=False) process.patMETs.addGenMET = cms.bool(False) process.patJets.addGenJetMatch = cms.bool(False) process.patJets.addGenPartonMatch = cms.bool(False) process.patJets.addPartonJetMatch = cms.bool(False)
) newAK4PFCHSL1FastL2L3ResidualCorrectorChain = cms.Sequence( #ak4PFCHSL1FastjetCorrector * ak4PFCHSL2RelativeCorrector * ak4PFCHSL3AbsoluteCorrector * newAK4PFCHSL1FastL2L3ResidualCorrector) metPreValidSeqTask = cms.Task(ak4PFCHSL1FastjetCorrector, ak4PFCHSL2RelativeCorrector, ak4PFCHSL3AbsoluteCorrector, ak4PFCHSResidualCorrector) metPreValidSeq = cms.Sequence(metPreValidSeqTask) valCorrPfMetType1 = corrPfMetType1.clone( jetCorrLabel='newAK4PFCHSL1FastL2L3Corrector', jetCorrLabelRes='newAK4PFCHSL1FastL2L3ResidualCorrector') PfMetT1 = pfMetT1.clone( srcCorrections=cms.VInputTag('valCorrPfMetType1:type1')) PfMetT0pcT1 = pfMetT0pcT1.clone(srcCorrections=cms.VInputTag( 'corrPfMetType0PfCand', 'valCorrPfMetType1:type1')) METRelValSequence = cms.Sequence( metAnalyzer * pfMetAnalyzer * genMetTrueAnalyzer * correctionTermsPfMetType0PFCandidateForValidation * newAK4PFCHSL1FastL2L3CorrectorChain * newAK4PFCHSL1FastL2L3ResidualCorrectorChain * valCorrPfMetType1 * pfMetT0pc * PfMetT1 * PfMetT0pcT1 * pfType0CorrectedMetAnalyzer * pfType1CorrectedMetAnalyzer * pfType01CorrectedMetAnalyzer) METValidation = cms.Sequence( metAnalyzer * pfMetAnalyzer * genMetTrueAnalyzer * correctionTermsPfMetType0PFCandidateForValidation *