From 0c912b09d4dd00fe53767ccca4cb94b203faa5c6 Mon Sep 17 00:00:00 2001 From: Silvio Donato Date: Wed, 6 May 2020 15:58:55 +0200 Subject: [PATCH] Revert "PUPPI MET in RECO" --- .../ParticleFlow/plugins/Type1PFMET.cc | 2 +- .../ParticleFlow/python/EITopPAG_cff.py | 2 +- .../ParticleFlow/python/PFBRECO_cff.py | 2 +- CommonTools/ParticleFlow/python/pfMET_cfi.py | 4 +- .../PileupAlgos/plugins/PuppiProducer.cc | 19 ++--- .../PileupAlgos/plugins/PuppiProducer.h | 3 +- CommonTools/PileupAlgos/python/Puppi_cff.py | 10 +-- .../python/customizePuppiTune_cff.py | 2 +- CommonTools/PileupAlgos/src/PuppiContainer.cc | 5 -- CommonTools/PileupAlgos/test/testPUMods.py | 14 +++- DataFormats/METReco/interface/MET.h | 16 +--- DataFormats/METReco/interface/PFMET.h | 8 +- DataFormats/METReco/src/MET.cc | 11 +-- DataFormats/METReco/src/classes_def.xml | 15 ++-- .../PatCandidates/src/classes_def_objects.xml | 3 +- .../Utilities/python/distPFMET_cfi.py | 2 +- .../Exotica/python/ExoticaValidation_cff.py | 2 +- .../MultShiftMETcorrDBInputProducer.cc | 21 ++--- .../plugins/MultShiftMETcorrDBInputProducer.h | 2 - .../plugins/MultShiftMETcorrInputProducer.cc | 27 +++---- .../plugins/MultShiftMETcorrInputProducer.h | 2 - .../plugins/PFCandMETcorrInputProducer.cc | 18 ++--- .../plugins/PFCandMETcorrInputProducer.h | 8 +- .../correctionTermsPfMetType1Type2_cff.py | 3 +- .../python/pfMETmultShiftCorrectionsDB_cfi.py | 1 - .../python/pfMETmultShiftCorrections_cfi.py | 1 - .../src/AddCorrectionsToGenericMET.cc | 8 +- .../PatAlgos/plugins/PATMETProducer.cc | 56 ++++--------- .../PatAlgos/plugins/PATMETProducer.h | 12 ++- .../PatAlgos/plugins/PATMuonProducer.cc | 18 +---- .../plugins/PATPackedCandidateProducer.cc | 32 +++++++- .../python/producersLayer1/metProducer_cfi.py | 1 - .../python/slimming/applySubstructure_cff.py | 31 ++----- .../customizeMiniAOD_HcalFixLegacy2016.py | 2 +- .../customizeMiniAOD_MuEGFixMoriond2017.py | 2 +- .../extraSlimmedMETs_MuEGFixMoriond2017.py | 3 +- .../PatAlgos/python/slimming/miniAOD_tools.py | 35 ++++---- .../python/slimming/puppiForMET_cff.py | 37 ++++++--- .../PatAlgos/python/tools/jetTools.py | 2 - .../PatAlgos/test/corMETFromMiniAOD.py | 1 + .../PatAlgos/test/miniAOD/example_ei.py | 2 +- .../test/miniAOD/example_jet_and_met.py | 2 +- .../PatAlgos/test/produceMETFromAOD.py | 3 +- .../ShiftedParticleMETcorrInputProducer.cc | 39 ++++----- .../ShiftedParticleMETcorrInputProducer.h | 2 - .../plugins/ShiftedParticleProducer.cc | 39 +++------ .../plugins/ShiftedParticleProducer.h | 6 +- .../PatUtils/python/tools/eGammaCorrection.py | 2 - .../runMETCorrectionsAndUncertainties.py | 68 ++++++++-------- .../python/RecoMET_EventContent_cff.py | 3 +- RecoMET/Configuration/python/RecoPFMET_cff.py | 7 +- RecoMET/METAlgorithms/interface/METAlgo.h | 5 +- .../METAlgorithms/interface/METSignificance.h | 3 +- .../METAlgorithms/interface/PFSpecificAlgo.h | 3 +- RecoMET/METAlgorithms/src/METAlgo.cc | 20 ++--- RecoMET/METAlgorithms/src/METSignificance.cc | 6 +- RecoMET/METAlgorithms/src/PFSpecificAlgo.cc | 9 +-- .../interface/METSignificanceProducer.h | 10 +-- .../METProducers/interface/PFMETProducer.h | 14 ++-- .../python/METSignificance_cfi.py | 1 - RecoMET/METProducers/python/PFMET_cfi.py | 11 +++ RecoMET/METProducers/python/pfChMet_cfi.py | 10 ++- .../src/METSignificanceProducer.cc | 45 +++-------- RecoMET/METProducers/src/PFMETProducer.cc | 81 ++++--------------- .../METProducers/test/recoMET_pfMet_cfg.py | 2 +- 65 files changed, 326 insertions(+), 510 deletions(-) create mode 100644 RecoMET/METProducers/python/PFMET_cfi.py diff --git a/CommonTools/ParticleFlow/plugins/Type1PFMET.cc b/CommonTools/ParticleFlow/plugins/Type1PFMET.cc index 7534e187925ae..4bd5f156e2335 100644 --- a/CommonTools/ParticleFlow/plugins/Type1PFMET.cc +++ b/CommonTools/ParticleFlow/plugins/Type1PFMET.cc @@ -89,7 +89,7 @@ void Type1PFMET::run(const METCollection& uncorMET, std::vector corrections = u->mEtCorr(); corrections.push_back(delta); //----------------- Push onto MET Collection - MET result = MET(u->sumEt() + delta.sumet, corrections, correctedMET4vector, u->vertex(), u->isWeighted()); + MET result = MET(u->sumEt() + delta.sumet, corrections, correctedMET4vector, u->vertex()); corMET->push_back(result); return; diff --git a/CommonTools/ParticleFlow/python/EITopPAG_cff.py b/CommonTools/ParticleFlow/python/EITopPAG_cff.py index 2beb33883a7e4..0c898e0bb7f5b 100644 --- a/CommonTools/ParticleFlow/python/EITopPAG_cff.py +++ b/CommonTools/ParticleFlow/python/EITopPAG_cff.py @@ -149,7 +149,7 @@ #### MET #### -pfMetEI = pfMET.clone(srcJets=cms.InputTag("pfJetsEI")) +pfMetEI = pfMET.clone(jets=cms.InputTag("pfJetsEI")) #EITopPAG = cms.Sequence( EIsequence = cms.Sequence( diff --git a/CommonTools/ParticleFlow/python/PFBRECO_cff.py b/CommonTools/ParticleFlow/python/PFBRECO_cff.py index d6ad9ef7d6c70..b55c9f5d68d89 100644 --- a/CommonTools/ParticleFlow/python/PFBRECO_cff.py +++ b/CommonTools/ParticleFlow/python/PFBRECO_cff.py @@ -122,7 +122,7 @@ from CommonTools.ParticleFlow.pfTaus_cff import * from CommonTools.ParticleFlow.pfMET_cfi import * -pfMETPFBRECO = pfMET.clone( srcJets = 'pfJetsPFBRECO' ) +pfMETPFBRECO = pfMET.clone( jets = 'pfJetsPFBRECO' ) ##delta beta weighting #from CommonTools.ParticleFlow.deltaBetaWeights_cfi import * diff --git a/CommonTools/ParticleFlow/python/pfMET_cfi.py b/CommonTools/ParticleFlow/python/pfMET_cfi.py index 0ed9c3528098c..3b4b15af58ede 100644 --- a/CommonTools/ParticleFlow/python/pfMET_cfi.py +++ b/CommonTools/ParticleFlow/python/pfMET_cfi.py @@ -1,7 +1,7 @@ import FWCore.ParameterSet.Config as cms # Clone pfMET producer from RecoMET -from RecoMET.METProducers.pfMet_cfi import * +from RecoMET.METProducers.PFMET_cfi import * # Should the name be changed se it is similar to pfMet from reco ?? pfMET = pfMet.clone(alias="pfMET") @@ -9,6 +9,6 @@ # Use PF2PAT cleaned jet collection (pfJets) for MET significance # instead of standard collection (ak4PFJets)? # It requires that MET is produced at the end. -pfMET.srcJets = cms.InputTag("pfJets") +pfMET.jets = cms.InputTag("pfJets") # print 'PF2PAT: Jet collection used for pfMET significance: ', pfMET.jets diff --git a/CommonTools/PileupAlgos/plugins/PuppiProducer.cc b/CommonTools/PileupAlgos/plugins/PuppiProducer.cc index 834e76699b08e..c96e687a3b556 100644 --- a/CommonTools/PileupAlgos/plugins/PuppiProducer.cc +++ b/CommonTools/PileupAlgos/plugins/PuppiProducer.cc @@ -23,7 +23,7 @@ // ------------------------------------------------------------------------------------------ PuppiProducer::PuppiProducer(const edm::ParameterSet& iConfig) { fPuppiDiagnostics = iConfig.getParameter("puppiDiagnostics"); - fPuppiNoLep = iConfig.getParameter("puppiNoLep"); + fPuppiForLeptons = iConfig.getParameter("puppiForLeptons"); fUseFromPVLooseTight = iConfig.getParameter("UseFromPVLooseTight"); fUseDZ = iConfig.getParameter("UseDeltaZCut"); fDZCut = iConfig.getParameter("DeltaZCut"); @@ -32,6 +32,7 @@ PuppiProducer::PuppiProducer(const edm::ParameterSet& iConfig) { fPtMaxPhotons = iConfig.getParameter("PtMaxPhotons"); fEtaMaxPhotons = iConfig.getParameter("EtaMaxPhotons"); fUseExistingWeights = iConfig.getParameter("useExistingWeights"); + fUseWeightsNoLep = iConfig.getParameter("useWeightsNoLep"); fClonePackedCands = iConfig.getParameter("clonePackedCands"); fVtxNdofCut = iConfig.getParameter("vtxNdofCut"); fVtxZCut = iConfig.getParameter("vtxZCut"); @@ -98,7 +99,6 @@ void PuppiProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { double pD0 = -9999; int pVtxId = -9999; bool lFirst = true; - bool isLepton = ((std::abs(pReco.pdgId) == 11) || (std::abs(pReco.pdgId) == 13)); const pat::PackedCandidate* lPack = dynamic_cast(&aPF); if (lPack == nullptr) { const reco::PFCandidate* pPF = dynamic_cast(&aPF); @@ -152,9 +152,7 @@ void PuppiProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { if (std::abs(pReco.charge) == 0) { pReco.id = 0; } else { - if (fPuppiNoLep && isLepton) - pReco.id = 3; - else if (tmpFromPV == 0) { + if (tmpFromPV == 0) { pReco.id = 2; } // 0 is associated to PU vertex else if (tmpFromPV == 3) { @@ -184,9 +182,7 @@ void PuppiProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { pReco.id = 0; } if (std::abs(pReco.charge) > 0) { - if (fPuppiNoLep && isLepton) - pReco.id = 3; - else if (lPack->fromPV() == 0) { + if (lPack->fromPV() == 0) { pReco.id = 2; } // 0 is associated to PU vertex else if (lPack->fromPV() == (pat::PackedCandidate::PVUsedInFit)) { @@ -227,7 +223,7 @@ void PuppiProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { throw edm::Exception(edm::errors::LogicError, "PuppiProducer: cannot get weights since inputs are not PackedCandidates"); } else { - if (fPuppiNoLep) { + if (fUseWeightsNoLep) { curpupweight = lPack->puppiWeightNoLep(); } else { curpupweight = lPack->puppiWeight(); @@ -283,7 +279,7 @@ void PuppiProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { // Here, we are using new weights computed and putting them in the packed candidates. if (fClonePackedCands && (!fUseExistingWeights)) { - if (fPuppiNoLep) + if (fPuppiForLeptons) pCand->setPuppiWeight(pCand->puppiWeight(), lWeights[iCand]); else pCand->setPuppiWeight(lWeights[iCand], pCand->puppiWeightNoLep()); @@ -361,7 +357,7 @@ void PuppiProducer::endJob() {} void PuppiProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { edm::ParameterSetDescription desc; desc.add("puppiDiagnostics", false); - desc.add("puppiNoLep", false); + desc.add("puppiForLeptons", false); desc.add("UseFromPVLooseTight", false); desc.add("UseDeltaZCut", true); desc.add("DeltaZCut", 0.3); @@ -372,6 +368,7 @@ void PuppiProducer::fillDescriptions(edm::ConfigurationDescriptions& description desc.add("PtMaxNeutrals", 200.); desc.add("PtMaxNeutralsStartSlope", 0.); desc.add("useExistingWeights", false); + desc.add("useWeightsNoLep", false); desc.add("clonePackedCands", false); desc.add("vtxNdofCut", 4); desc.add("vtxZCut", 24); diff --git a/CommonTools/PileupAlgos/plugins/PuppiProducer.h b/CommonTools/PileupAlgos/plugins/PuppiProducer.h index 11b652e46929a..5f4c39425aa59 100644 --- a/CommonTools/PileupAlgos/plugins/PuppiProducer.h +++ b/CommonTools/PileupAlgos/plugins/PuppiProducer.h @@ -59,7 +59,7 @@ class PuppiProducer : public edm::stream::EDProducer<> { std::string fPFName; std::string fPVName; bool fPuppiDiagnostics; - bool fPuppiNoLep; + bool fPuppiForLeptons; bool fUseFromPVLooseTight; bool fUseDZ; float fDZCut; @@ -68,6 +68,7 @@ class PuppiProducer : public edm::stream::EDProducer<> { double fPtMaxPhotons; double fEtaMaxPhotons; bool fUseExistingWeights; + bool fUseWeightsNoLep; bool fClonePackedCands; int fVtxNdofCut; double fVtxZCut; diff --git a/CommonTools/PileupAlgos/python/Puppi_cff.py b/CommonTools/PileupAlgos/python/Puppi_cff.py index d59034b804b33..ec9dc599e1301 100644 --- a/CommonTools/PileupAlgos/python/Puppi_cff.py +++ b/CommonTools/PileupAlgos/python/Puppi_cff.py @@ -26,7 +26,7 @@ puppi = cms.EDProducer("PuppiProducer",#cms.PSet(#"PuppiProducer", puppiDiagnostics = cms.bool(False), - puppiNoLep = cms.bool(False), + puppiForLeptons = cms.bool(False), UseFromPVLooseTight = cms.bool(False), UseDeltaZCut = cms.bool(True), DeltaZCut = cms.double(0.3), @@ -45,6 +45,7 @@ useExp = cms.bool (False), MinPuppiWeight = cms.double(0.01), useExistingWeights = cms.bool(False), + useWeightsNoLep = cms.bool(False), clonePackedCands = cms.bool(False), # should only be set to True for MiniAOD vtxNdofCut = cms.int32(4), vtxZCut = cms.double(24), @@ -86,7 +87,7 @@ # ) ) ) - + from Configuration.Eras.Modifier_phase2_common_cff import phase2_common phase2_common.toModify( puppi, @@ -115,8 +116,3 @@ ) ) ) - -puppiNoLep = puppi.clone( - puppiNoLep = True, - PtMaxPhotons = 20. - ) diff --git a/CommonTools/PileupAlgos/python/customizePuppiTune_cff.py b/CommonTools/PileupAlgos/python/customizePuppiTune_cff.py index 7a601a1a3722f..1db1946587647 100644 --- a/CommonTools/PileupAlgos/python/customizePuppiTune_cff.py +++ b/CommonTools/PileupAlgos/python/customizePuppiTune_cff.py @@ -12,7 +12,7 @@ def UpdatePuppiTuneV13(process): process.puppi.useExistingWeights = False process.puppiNoLep.useExistingWeights = False from PhysicsTools.PatUtils.tools.runMETCorrectionsAndUncertainties import runMetCorAndUncFromMiniAOD - runMetCorAndUncFromMiniAOD(process,isData=False,metType="Puppi",postfix="Puppi",jetFlavor="AK4PFPuppi",recoMetFromPFCs=True) + runMetCorAndUncFromMiniAOD(process,isData=False,metType="Puppi",postfix="Puppi",jetFlavor="AK4PFPuppi",recoMetFromPFCs=True,pfCandColl=cms.InputTag("puppiForMET")) from PhysicsTools.PatAlgos.patPuppiJetSpecificProducer_cfi import patPuppiJetSpecificProducer addToProcessAndTask('patPuppiJetSpecificProducer', patPuppiJetSpecificProducer.clone(src=cms.InputTag("patJetsPuppi")), process, task) from PhysicsTools.PatAlgos.tools.jetTools import updateJetCollection diff --git a/CommonTools/PileupAlgos/src/PuppiContainer.cc b/CommonTools/PileupAlgos/src/PuppiContainer.cc index f64deda04e928..573b9baff1fe8 100644 --- a/CommonTools/PileupAlgos/src/PuppiContainer.cc +++ b/CommonTools/PileupAlgos/src/PuppiContainer.cc @@ -92,8 +92,6 @@ double PuppiContainer::var_within_R(int iId, near_pts.reserve(std::min(50UL, particles.size())); const double r2 = R * R; for (auto const &part : particles) { - if (part.puppi_register() == 3) - continue; //squared_distance is in (y,phi) coords: rap() has faster access -> check it first if (std::abs(part.rap() - centre.rap()) < R && part.squared_distance(centre) < r2) { near_dR2s.push_back(reco::deltaR2(part, centre)); @@ -298,9 +296,6 @@ std::vector const &PuppiContainer::puppiWeights() { pWeight = 1; if (rParticle.id == 2 && fApplyCHS) pWeight = 0; - //Apply weight of 1 for leptons if puppiNoLep - if (rParticle.id == 3) - pWeight = 1; //Basic Weight Checks if (!edm::isFinite(pWeight)) { pWeight = 0.0; diff --git a/CommonTools/PileupAlgos/test/testPUMods.py b/CommonTools/PileupAlgos/test/testPUMods.py index 6e9da868a6a64..244a4c6435245 100644 --- a/CommonTools/PileupAlgos/test/testPUMods.py +++ b/CommonTools/PileupAlgos/test/testPUMods.py @@ -10,6 +10,8 @@ process.GlobalTag = GlobalTag(process.GlobalTag, 'auto:run2_mc', '') process.load('CommonTools/PileupAlgos/Puppi_cff') +process.load('CommonTools/PileupAlgos/PhotonPuppi_cff') +from CommonTools.PileupAlgos.PhotonPuppi_cff import setupPuppiPhoton from PhysicsTools.PatAlgos.slimming.puppiForMET_cff import makePuppiesFromMiniAOD process.load('CommonTools/PileupAlgos/softKiller_cfi') @@ -35,10 +37,16 @@ makePuppiesFromMiniAOD(process) - -process.load('RecoMET.METProducers.pfMetPuppi_cfi') +#setupPuppiPhoton(process) +#process.packedPFCandidatesNoLep = cms.EDFilter("CandPtrSelector", src = cms.InputTag("packedPFCandidates"), cut = cms.string("abs(pdgId) != 13 && abs(pdgId) != 11")) +#process.puppiNoLep = process.puppi.clone() +#process.puppiNoLep.candName = cms.InputTag('packedPFCandidatesNoLep') +#process.puppiNoLep.vertexName = cms.InputTag('offlineSlimmedPrimaryVertices') + +process.load('RecoMET.METProducers.PFMET_cfi') +process.pfMet.src = cms.InputTag('puppiForMET') #process.puppiNoLep.useExistingWeights = True -process.puSequence = cms.Sequence(process.puppi*process.puppiNoLep*process.pfMetPuppi) +process.puSequence = cms.Sequence(process.pfNoLepPUPPI*process.puppi*process.puppiNoLep*process.egmPhotonIDSequence*process.puppiForMET*process.pfMet) process.p = cms.Path(process.puSequence) process.output = cms.OutputModule("PoolOutputModule", outputCommands = cms.untracked.vstring('keep *'), diff --git a/DataFormats/METReco/interface/MET.h b/DataFormats/METReco/interface/MET.h index 966797ea4a334..6071977744623 100644 --- a/DataFormats/METReco/interface/MET.h +++ b/DataFormats/METReco/interface/MET.h @@ -41,13 +41,9 @@ namespace reco { class MET : public RecoCandidate { public: MET(); - MET(const LorentzVector& p4_, const Point& vtx_, bool isWeighted = false); - MET(double sumet_, const LorentzVector& p4_, const Point& vtx_, bool isWeighted = false); - MET(double sumet_, - const std::vector& corr_, - const LorentzVector& p4_, - const Point& vtx_, - bool isWeighted = false); + MET(const LorentzVector& p4_, const Point& vtx_); + MET(double sumet_, const LorentzVector& p4_, const Point& vtx_); + MET(double sumet_, const std::vector& corr_, const LorentzVector& p4_, const Point& vtx_); MET* clone() const override; @@ -73,11 +69,6 @@ namespace reco { void setSignificanceMatrix(const reco::METCovMatrix& matrix); reco::METCovMatrix getSignificanceMatrix(void) const; - /// Set boolean if weights were applied by algorithm (e.g. PUPPI weights) - void setIsWeighted(bool isWeighted) { mIsWeighted = isWeighted; } - /// boolean if weights were applied by algorithm (e.g. PUPPI weights) - int isWeighted() const { return mIsWeighted; } - private: bool overlap(const Candidate&) const override; double sumet; @@ -88,7 +79,6 @@ namespace reco { double signif_dyx; double signif_dxy; std::vector corr; - bool mIsWeighted; }; } // namespace reco diff --git a/DataFormats/METReco/interface/PFMET.h b/DataFormats/METReco/interface/PFMET.h index beaedf91ad123..2444f78842ee5 100644 --- a/DataFormats/METReco/interface/PFMET.h +++ b/DataFormats/METReco/interface/PFMET.h @@ -18,12 +18,8 @@ namespace reco { class PFMET : public MET { public: PFMET(); - PFMET(const SpecificPFMETData& pf_data_, - double sumet_, - const LorentzVector& fP4, - const Point& fVertex, - bool isWeighted = false) - : MET(sumet_, fP4, fVertex, isWeighted), pf_data(pf_data_) {} + PFMET(const SpecificPFMETData& pf_data_, double sumet_, const LorentzVector& fP4, const Point& fVertex) + : MET(sumet_, fP4, fVertex), pf_data(pf_data_) {} ~PFMET() override {} diff --git a/DataFormats/METReco/src/MET.cc b/DataFormats/METReco/src/MET.cc index 271a071b8d37b..47594560cfc06 100644 --- a/DataFormats/METReco/src/MET.cc +++ b/DataFormats/METReco/src/MET.cc @@ -20,42 +20,37 @@ MET::MET() { sumet = 0.0; elongit = 0.0; signif_dxx = signif_dyy = signif_dyx = signif_dxy = 0.; - mIsWeighted = false; } // Constructer for the case when only p4_ = (mEx, mEy, 0, mEt) is known. // The vertex information is currently not used (but may be in the future) // and is required by the RecoCandidate constructer. //____________________________________________________________________________|| -MET::MET(const LorentzVector& p4_, const Point& vtx_, bool isWeighted) : RecoCandidate(0, p4_, vtx_) { +MET::MET(const LorentzVector& p4_, const Point& vtx_) : RecoCandidate(0, p4_, vtx_) { sumet = 0.0; elongit = 0.0; signif_dxx = signif_dyy = signif_dyx = signif_dxy = 0.; - mIsWeighted = isWeighted; } // Constructer for the case when the SumET is known in addition to // p4_ = (mEx, mEy, 0, mEt). The vertex information is currently not used // (but see above). //____________________________________________________________________________|| -MET::MET(double sumet_, const LorentzVector& p4_, const Point& vtx_, bool isWeighted) : RecoCandidate(0, p4_, vtx_) { +MET::MET(double sumet_, const LorentzVector& p4_, const Point& vtx_) : RecoCandidate(0, p4_, vtx_) { sumet = sumet_; elongit = 0.0; signif_dxx = signif_dyy = signif_dyx = signif_dxy = 0.; - mIsWeighted = isWeighted; } // Constructor for the case when the SumET, the corrections which // were applied to the MET, as well the MET itself p4_ = (mEx, mEy, 0, mEt) // are all known. See above concerning the vertex information. //____________________________________________________________________________|| -MET::MET( - double sumet_, const std::vector& corr_, const LorentzVector& p4_, const Point& vtx_, bool isWeighted) +MET::MET(double sumet_, const std::vector& corr_, const LorentzVector& p4_, const Point& vtx_) : RecoCandidate(0, p4_, vtx_) { sumet = sumet_; elongit = 0.0; signif_dxx = signif_dyy = signif_dyx = signif_dxy = 0.; - mIsWeighted = isWeighted; //----------------------------------- // Fill the vector containing the corrections (corr) with vector of // known corrections (corr_) passed in via the constructor. diff --git a/DataFormats/METReco/src/classes_def.xml b/DataFormats/METReco/src/classes_def.xml index 17fc07b6c7c3f..10404a19f06cc 100644 --- a/DataFormats/METReco/src/classes_def.xml +++ b/DataFormats/METReco/src/classes_def.xml @@ -46,8 +46,7 @@ - - + @@ -59,8 +58,7 @@ - - + @@ -69,8 +67,7 @@ - - + @@ -80,8 +77,7 @@ - - + @@ -91,8 +87,7 @@ - - + diff --git a/DataFormats/PatCandidates/src/classes_def_objects.xml b/DataFormats/PatCandidates/src/classes_def_objects.xml index 7fe1ad99422de..dd988b5737005 100644 --- a/DataFormats/PatCandidates/src/classes_def_objects.xml +++ b/DataFormats/PatCandidates/src/classes_def_objects.xml @@ -273,8 +273,7 @@ - - + diff --git a/ElectroWeakAnalysis/Utilities/python/distPFMET_cfi.py b/ElectroWeakAnalysis/Utilities/python/distPFMET_cfi.py index 314c19a193a6d..7573dc206fed0 100644 --- a/ElectroWeakAnalysis/Utilities/python/distPFMET_cfi.py +++ b/ElectroWeakAnalysis/Utilities/python/distPFMET_cfi.py @@ -10,7 +10,7 @@ from RecoMET.METProducers.METSigParams_cfi import * distpfMet = cms.EDProducer("PFMETProducer", - parameters = METSignificance_params, + METSignificance_params, src = cms.InputTag("distortedPFCand"), alias = cms.string('PFMET'), globalThreshold = cms.double(0.0), diff --git a/HLTriggerOffline/Exotica/python/ExoticaValidation_cff.py b/HLTriggerOffline/Exotica/python/ExoticaValidation_cff.py index e871ad7cb7426..b885a7c651e2e 100644 --- a/HLTriggerOffline/Exotica/python/ExoticaValidation_cff.py +++ b/HLTriggerOffline/Exotica/python/ExoticaValidation_cff.py @@ -14,7 +14,7 @@ alias = cms.string('PFMHT'), globalThreshold = cms.double(30.0), calculateSignificance = cms.bool(False), - srcJets = cms.InputTag("ak4PFJetsCHS") # for significance calculation + jets = cms.InputTag("ak4PFJetsCHS") # for significance calculation ) recoExoticaValidationMETNoMu = cms.EDProducer( diff --git a/JetMETCorrections/Type1MET/plugins/MultShiftMETcorrDBInputProducer.cc b/JetMETCorrections/Type1MET/plugins/MultShiftMETcorrDBInputProducer.cc index 9c4fdb2239d84..37152a7e8609c 100644 --- a/JetMETCorrections/Type1MET/plugins/MultShiftMETcorrDBInputProducer.cc +++ b/JetMETCorrections/Type1MET/plugins/MultShiftMETcorrDBInputProducer.cc @@ -41,12 +41,8 @@ MultShiftMETcorrDBInputProducer::MultShiftMETcorrDBInputProducer(const edm::Para mSampleType = (cfg.exists("sampleType")) ? cfg.getParameter("sampleType") : "MC"; mIsData = cfg.getParameter("isData"); - pflow_ = consumes>(cfg.getParameter("srcPFlow")); - vertices_ = consumes>(cfg.getParameter("vertexCollection")); - - edm::InputTag srcWeights = cfg.getParameter("srcWeights"); - if (!srcWeights.label().empty()) - weightsToken_ = consumes>(srcWeights); + pflow_ = consumes >(cfg.getParameter("srcPFlow")); + vertices_ = consumes >(cfg.getParameter("vertexCollection")); etaMin_.clear(); etaMax_.clear(); @@ -67,7 +63,7 @@ void MultShiftMETcorrDBInputProducer::produce(edm::Event& evt, const edm::EventS MEtXYcorParaColl->validKeys(keys); //get primary vertices - edm::Handle> hpv; + edm::Handle > hpv; evt.getByToken(vertices_, hpv); if (!hpv.isValid()) { edm::LogError("MultShiftMETcorrDBInputProducer::produce") << "could not find vertex collection "; @@ -79,13 +75,9 @@ void MultShiftMETcorrDBInputProducer::produce(edm::Event& evt, const edm::EventS } int ngoodVertices = goodVertices.size(); - edm::Handle> particleFlow; + edm::Handle > particleFlow; evt.getByToken(pflow_, particleFlow); - edm::Handle> weights; - if (!weightsToken_.isUninitialized()) - evt.getByToken(weightsToken_, weights); - //loop over all constituent types and sum each correction //std::unique_ptr metCorr(new CorrMETData()); std::unique_ptr metCorr(new CorrMETData()); @@ -138,9 +130,8 @@ void MultShiftMETcorrDBInputProducer::produce(edm::Event& evt, const edm::EventS if (abs(c.pdgId()) == translateTypeToAbsPdgId(reco::PFCandidate::ParticleType(MEtXYcorParams.definitions().PtclType()))) { if ((c.eta() > MEtXYcorParams.record(0).xMin(0)) and (c.eta() < MEtXYcorParams.record(0).xMax(0))) { - float weight = (!weightsToken_.isUninitialized()) ? (*weights)[particleFlow->ptrAt(i)] : 1.0; - counts_ += (weight > 0); - sumPt_ += c.pt() * weight; + counts_ += 1; + sumPt_ += c.pt(); continue; } } diff --git a/JetMETCorrections/Type1MET/plugins/MultShiftMETcorrDBInputProducer.h b/JetMETCorrections/Type1MET/plugins/MultShiftMETcorrDBInputProducer.h index 7b29450091f42..5675b9fec77f8 100644 --- a/JetMETCorrections/Type1MET/plugins/MultShiftMETcorrDBInputProducer.h +++ b/JetMETCorrections/Type1MET/plugins/MultShiftMETcorrDBInputProducer.h @@ -19,7 +19,6 @@ #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "FWCore/Utilities/interface/InputTag.h" #include "DataFormats/ParticleFlowCandidate/interface/PFCandidate.h" -#include "DataFormats/Common/interface/ValueMap.h" #include "DataFormats/METReco/interface/MET.h" #include "DataFormats/VertexReco/interface/VertexFwd.h" @@ -45,7 +44,6 @@ class MultShiftMETcorrDBInputProducer : public edm::stream::EDProducer<> { std::string mPayloadName; std::string mSampleType; bool mIsData; - edm::EDGetTokenT> weightsToken_; std::vector cfgCorrParameters_; diff --git a/JetMETCorrections/Type1MET/plugins/MultShiftMETcorrInputProducer.cc b/JetMETCorrections/Type1MET/plugins/MultShiftMETcorrInputProducer.cc index 0e84963e2f2c8..b7cde4963b530 100644 --- a/JetMETCorrections/Type1MET/plugins/MultShiftMETcorrInputProducer.cc +++ b/JetMETCorrections/Type1MET/plugins/MultShiftMETcorrInputProducer.cc @@ -33,14 +33,10 @@ int MultShiftMETcorrInputProducer::translateTypeToAbsPdgId(reco::PFCandidate::Pa MultShiftMETcorrInputProducer::MultShiftMETcorrInputProducer(const edm::ParameterSet& cfg) : moduleLabel_(cfg.getParameter("@module_label")) { - pflow_ = consumes>(cfg.getParameter("srcPFlow")); - vertices_ = consumes>(cfg.getParameter("vertexCollection")); + pflow_ = consumes >(cfg.getParameter("srcPFlow")); + vertices_ = consumes >(cfg.getParameter("vertexCollection")); - edm::InputTag srcWeights = cfg.getParameter("srcWeights"); - if (!srcWeights.label().empty()) - weightsToken_ = consumes>(srcWeights); - - cfgCorrParameters_ = cfg.getParameter>("parameters"); + cfgCorrParameters_ = cfg.getParameter >("parameters"); etaMin_.clear(); etaMax_.clear(); type_.clear(); @@ -52,8 +48,8 @@ MultShiftMETcorrInputProducer::MultShiftMETcorrInputProducer(const edm::Paramete v++) { TString corrPxFormula = v->getParameter("fx"); TString corrPyFormula = v->getParameter("fy"); - std::vector corrPxParams = v->getParameter>("px"); - std::vector corrPyParams = v->getParameter>("py"); + std::vector corrPxParams = v->getParameter >("px"); + std::vector corrPyParams = v->getParameter >("py"); formula_x_.push_back(std::unique_ptr(new TF1( std::string(moduleLabel_).append("_").append(v->getParameter("name")).append("_corrPx").c_str(), @@ -80,7 +76,7 @@ MultShiftMETcorrInputProducer::~MultShiftMETcorrInputProducer() {} void MultShiftMETcorrInputProducer::produce(edm::Event& evt, const edm::EventSetup& es) { //get primary vertices - edm::Handle> hpv; + edm::Handle > hpv; evt.getByToken(vertices_, hpv); if (!hpv.isValid()) { edm::LogError("MultShiftMETcorrInputProducer::produce") << "could not find vertex collection "; @@ -97,20 +93,15 @@ void MultShiftMETcorrInputProducer::produce(edm::Event& evt, const edm::EventSet for (unsigned i = 0; i < sumPt_.size(); i++) sumPt_[i] = 0.; - edm::Handle> particleFlow; + edm::Handle > particleFlow; evt.getByToken(pflow_, particleFlow); - - edm::Handle> weights; - if (!weightsToken_.isUninitialized()) - evt.getByToken(weightsToken_, weights); for (unsigned i = 0; i < particleFlow->size(); ++i) { const reco::Candidate& c = particleFlow->at(i); for (unsigned j = 0; j < type_.size(); j++) { if (abs(c.pdgId()) == translateTypeToAbsPdgId(reco::PFCandidate::ParticleType(type_[j]))) { if ((c.eta() > etaMin_[j]) and (c.eta() < etaMax_[j])) { - float weight = (!weightsToken_.isUninitialized()) ? (*weights)[particleFlow->ptrAt(i)] : 1.0; - counts_[j] += (weight > 0); - sumPt_[j] += c.pt() * weight; + counts_[j] += 1; + sumPt_[j] += c.pt(); continue; } } diff --git a/JetMETCorrections/Type1MET/plugins/MultShiftMETcorrInputProducer.h b/JetMETCorrections/Type1MET/plugins/MultShiftMETcorrInputProducer.h index 94771e74481ad..834720456f954 100644 --- a/JetMETCorrections/Type1MET/plugins/MultShiftMETcorrInputProducer.h +++ b/JetMETCorrections/Type1MET/plugins/MultShiftMETcorrInputProducer.h @@ -18,7 +18,6 @@ #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "FWCore/Utilities/interface/InputTag.h" #include "DataFormats/ParticleFlowCandidate/interface/PFCandidate.h" -#include "DataFormats/Common/interface/ValueMap.h" #include "DataFormats/METReco/interface/MET.h" #include "DataFormats/VertexReco/interface/VertexFwd.h" @@ -41,7 +40,6 @@ class MultShiftMETcorrInputProducer : public edm::stream::EDProducer<> { edm::EDGetTokenT> pflow_; edm::EDGetTokenT> vertices_; std::string moduleLabel_; - edm::EDGetTokenT> weightsToken_; std::vector cfgCorrParameters_; diff --git a/JetMETCorrections/Type1MET/plugins/PFCandMETcorrInputProducer.cc b/JetMETCorrections/Type1MET/plugins/PFCandMETcorrInputProducer.cc index 671ee09e20253..02f385f64959e 100644 --- a/JetMETCorrections/Type1MET/plugins/PFCandMETcorrInputProducer.cc +++ b/JetMETCorrections/Type1MET/plugins/PFCandMETcorrInputProducer.cc @@ -4,10 +4,7 @@ PFCandMETcorrInputProducer::PFCandMETcorrInputProducer(const edm::ParameterSet& cfg) : moduleLabel_(cfg.getParameter("@module_label")) { - token_ = consumes>(cfg.getParameter("src")); - edm::InputTag srcWeights = cfg.getParameter("srcWeights"); - if (!srcWeights.label().empty()) - weightsToken_ = consumes>(srcWeights); + token_ = consumes >(cfg.getParameter("src")); if (cfg.exists("binning")) { typedef std::vector vParameterSet; @@ -36,17 +33,12 @@ void PFCandMETcorrInputProducer::produce(edm::Event& evt, const edm::EventSetup& edm::Handle cands; evt.getByToken(token_, cands); - edm::Handle> weights; - if (!weightsToken_.isUninitialized()) - evt.getByToken(weightsToken_, weights); - for (edm::View::const_iterator cand = cands->begin(); cand != cands->end(); ++cand) { - float weight = (!weightsToken_.isUninitialized()) ? (*weights)[cands->ptrAt(cand - cands->begin())] : 1.0; for (auto binningEntry = binning_.begin(); binningEntry != binning_.end(); ++binningEntry) { - if (!(*binningEntry)->binSelection_ || (*(*binningEntry)->binSelection_)(cand->p4() * weight)) { - (*binningEntry)->binUnclEnergySum_.mex += cand->px() * weight; - (*binningEntry)->binUnclEnergySum_.mey += cand->py() * weight; - (*binningEntry)->binUnclEnergySum_.sumet += cand->et() * weight; + if (!(*binningEntry)->binSelection_ || (*(*binningEntry)->binSelection_)(cand->p4())) { + (*binningEntry)->binUnclEnergySum_.mex += cand->px(); + (*binningEntry)->binUnclEnergySum_.mey += cand->py(); + (*binningEntry)->binUnclEnergySum_.sumet += cand->et(); } } } diff --git a/JetMETCorrections/Type1MET/plugins/PFCandMETcorrInputProducer.h b/JetMETCorrections/Type1MET/plugins/PFCandMETcorrInputProducer.h index 4550fd5c38a86..9d8f3427e0c7f 100644 --- a/JetMETCorrections/Type1MET/plugins/PFCandMETcorrInputProducer.h +++ b/JetMETCorrections/Type1MET/plugins/PFCandMETcorrInputProducer.h @@ -19,7 +19,6 @@ #include "FWCore/Framework/interface/EventSetup.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "FWCore/Utilities/interface/InputTag.h" -#include "DataFormats/Common/interface/ValueMap.h" #include "DataFormats/METReco/interface/CorrMETData.h" @@ -38,8 +37,7 @@ class PFCandMETcorrInputProducer : public edm::stream::EDProducer<> { std::string moduleLabel_; - edm::EDGetTokenT> token_; - edm::EDGetTokenT> weightsToken_; + edm::EDGetTokenT > token_; struct binningEntryType { binningEntryType() : binLabel_(""), binSelection_(nullptr) {} @@ -49,10 +47,10 @@ class PFCandMETcorrInputProducer : public edm::stream::EDProducer<> { cfg.getParameter("binSelection"))) {} ~binningEntryType() {} const std::string binLabel_; - std::unique_ptr> binSelection_; + std::unique_ptr > binSelection_; CorrMETData binUnclEnergySum_; }; - std::vector> binning_; + std::vector > binning_; }; #endif diff --git a/JetMETCorrections/Type1MET/python/correctionTermsPfMetType1Type2_cff.py b/JetMETCorrections/Type1MET/python/correctionTermsPfMetType1Type2_cff.py index 6505aa2931d4f..569b3648a965d 100644 --- a/JetMETCorrections/Type1MET/python/correctionTermsPfMetType1Type2_cff.py +++ b/JetMETCorrections/Type1MET/python/correctionTermsPfMetType1Type2_cff.py @@ -48,8 +48,7 @@ ##____________________________________________________________________________|| pfCandMETcorr = cms.EDProducer( "PFCandMETcorrInputProducer", - src = cms.InputTag('pfCandsNotInJetsForMetCorr'), - srcWeights = cms.InputTag('') + src = cms.InputTag('pfCandsNotInJetsForMetCorr') ) ##____________________________________________________________________________|| diff --git a/JetMETCorrections/Type1MET/python/pfMETmultShiftCorrectionsDB_cfi.py b/JetMETCorrections/Type1MET/python/pfMETmultShiftCorrectionsDB_cfi.py index b2b2ec39bdf52..1c1ae674da66e 100644 --- a/JetMETCorrections/Type1MET/python/pfMETmultShiftCorrectionsDB_cfi.py +++ b/JetMETCorrections/Type1MET/python/pfMETmultShiftCorrectionsDB_cfi.py @@ -4,7 +4,6 @@ pfMEtMultShiftCorrDB = cms.EDProducer("MultShiftMETcorrDBInputProducer", srcPFlow = cms.InputTag('packedPFCandidates', ''), vertexCollection = cms.InputTag('offlineSlimmedPrimaryVertices'), - srcWeights = cms.InputTag(''), isData = cms.bool(False), payloadName = cms.string('PfType1Met'), #sampleType = cms.string('MC') # MC, Data, DY, TTJets, WJets: MC is default, Data don't need to be specified because of "isData". diff --git a/JetMETCorrections/Type1MET/python/pfMETmultShiftCorrections_cfi.py b/JetMETCorrections/Type1MET/python/pfMETmultShiftCorrections_cfi.py index 0c7b76aa2477f..04d6b79962a3e 100644 --- a/JetMETCorrections/Type1MET/python/pfMETmultShiftCorrections_cfi.py +++ b/JetMETCorrections/Type1MET/python/pfMETmultShiftCorrections_cfi.py @@ -30,7 +30,6 @@ pfMEtMultShiftCorr = cms.EDProducer("MultShiftMETcorrInputProducer", srcPFlow = cms.InputTag('particleFlow', ''), vertexCollection = cms.InputTag('offlinePrimaryVertices'), - srcWeights = cms.InputTag(''), parameters = multPhiCorrParams_Txy_25ns ) diff --git a/JetMETCorrections/Type1MET/src/AddCorrectionsToGenericMET.cc b/JetMETCorrections/Type1MET/src/AddCorrectionsToGenericMET.cc index d100be4ca027a..a1f381792de57 100644 --- a/JetMETCorrections/Type1MET/src/AddCorrectionsToGenericMET.cc +++ b/JetMETCorrections/Type1MET/src/AddCorrectionsToGenericMET.cc @@ -31,7 +31,7 @@ reco::MET AddCorrectionsToGenericMET::getCorrectedMET(const reco::MET& srcMET, edm::Event& evt, const edm::EventSetup& es) { CorrMETData corr = getCorrection(srcMET, evt, es); - reco::MET outMET(srcMET.sumEt() + corr.sumet, constructP4From(srcMET, corr), srcMET.vertex(), srcMET.isWeighted()); + reco::MET outMET(srcMET.sumEt() + corr.sumet, constructP4From(srcMET, corr), srcMET.vertex()); return outMET; } @@ -41,11 +41,7 @@ reco::PFMET AddCorrectionsToGenericMET::getCorrectedPFMET(const reco::PFMET& src edm::Event& evt, const edm::EventSetup& es) { CorrMETData corr = getCorrection(srcMET, evt, es); - reco::PFMET outMET(srcMET.getSpecific(), - srcMET.sumEt() + corr.sumet, - constructP4From(srcMET, corr), - srcMET.vertex(), - srcMET.isWeighted()); + reco::PFMET outMET(srcMET.getSpecific(), srcMET.sumEt() + corr.sumet, constructP4From(srcMET, corr), srcMET.vertex()); return outMET; } diff --git a/PhysicsTools/PatAlgos/plugins/PATMETProducer.cc b/PhysicsTools/PatAlgos/plugins/PATMETProducer.cc index 47d881ee99278..0701e6c7408ab 100644 --- a/PhysicsTools/PatAlgos/plugins/PATMETProducer.cc +++ b/PhysicsTools/PatAlgos/plugins/PATMETProducer.cc @@ -16,9 +16,9 @@ using namespace pat; PATMETProducer::PATMETProducer(const edm::ParameterSet& iConfig) : useUserData_(iConfig.exists("userData")) { // initialize the configurables metSrc_ = iConfig.getParameter("metSource"); - metToken_ = consumes>(metSrc_); + metToken_ = consumes >(metSrc_); addGenMET_ = iConfig.getParameter("addGenMET"); - genMETToken_ = mayConsume>(iConfig.getParameter("genMETSource")); + genMETToken_ = mayConsume >(iConfig.getParameter("genMETSource")); addResolutions_ = iConfig.getParameter("addResolutions"); // Efficiency configurables @@ -42,31 +42,28 @@ PATMETProducer::PATMETProducer(const edm::ParameterSet& iConfig) : useUserData_( // MET Significance calculateMETSignificance_ = iConfig.getParameter("computeMETSignificance"); if (calculateMETSignificance_) { - edm::InputTag srcWeights = iConfig.getParameter("srcWeights"); - if (!srcWeights.label().empty()) - weightsToken_ = consumes>(srcWeights); metSigAlgo_ = new metsig::METSignificance(iConfig); rhoToken_ = consumes(iConfig.getParameter("srcRho")); jetSFType_ = iConfig.getParameter("srcJetSF"); jetResPtType_ = iConfig.getParameter("srcJetResPt"); jetResPhiType_ = iConfig.getParameter("srcJetResPhi"); - jetToken_ = consumes>(iConfig.getParameter("srcJets")); - pfCandToken_ = consumes>(iConfig.getParameter("srcPFCands")); - std::vector srcLeptonsTags = iConfig.getParameter>("srcLeptons"); + jetToken_ = consumes >(iConfig.getParameter("srcJets")); + pfCandToken_ = consumes >(iConfig.getParameter("srcPFCands")); + std::vector srcLeptonsTags = iConfig.getParameter >("srcLeptons"); for (std::vector::const_iterator it = srcLeptonsTags.begin(); it != srcLeptonsTags.end(); it++) { - lepTokens_.push_back(consumes>(*it)); + lepTokens_.push_back(consumes >(*it)); } } // produces vector of mets - produces>(); + produces >(); } PATMETProducer::~PATMETProducer() {} void PATMETProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { // Get the vector of MET's from the event - edm::Handle> mets; + edm::Handle > mets; iEvent.getByToken(metToken_, mets); if (mets->size() != 1) @@ -78,7 +75,7 @@ void PATMETProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) resolutionLoader_.newEvent(iEvent, iSetup); // Get the vector of generated met from the event if needed - edm::Handle> genMETs; + edm::Handle > genMETs; if (addGenMET_) { iEvent.getByToken(genMETToken_, genMETs); } @@ -98,7 +95,7 @@ void PATMETProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) //add the MET significance if (calculateMETSignificance_) { double sumPtUnclustered = 0; - const reco::METCovMatrix& sigcov = getMETCovMatrix(iEvent, iSetup, amet, sumPtUnclustered); + const reco::METCovMatrix& sigcov = getMETCovMatrix(iEvent, iSetup, sumPtUnclustered); amet.setSignificanceMatrix(sigcov); double metSig = metSigAlgo_->getSignificance(sigcov, amet); amet.setMETSignificance(metSig); @@ -126,7 +123,7 @@ void PATMETProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) // std::sort(patMETs->begin(), patMETs->end(), eTComparator_); // put genEvt object in Event - std::unique_ptr> myMETs(patMETs); + std::unique_ptr > myMETs(patMETs); iEvent.put(std::move(myMETs)); } @@ -162,10 +159,9 @@ void PATMETProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptio const reco::METCovMatrix PATMETProducer::getMETCovMatrix(const edm::Event& event, const edm::EventSetup& iSetup, - const reco::MET& met, double& sumPtUnclustered) const { - std::vector> leptons; - for (std::vector>>::const_iterator srcLeptons_i = lepTokens_.begin(); + std::vector > leptons; + for (std::vector > >::const_iterator srcLeptons_i = lepTokens_.begin(); srcLeptons_i != lepTokens_.end(); ++srcLeptons_i) { edm::Handle leptons_i; @@ -173,41 +169,23 @@ const reco::METCovMatrix PATMETProducer::getMETCovMatrix(const edm::Event& event leptons.push_back(leptons_i); } // jets - edm::Handle> inputJets; + edm::Handle > inputJets; event.getByToken(jetToken_, inputJets); //candidates - edm::Handle> inputCands; + edm::Handle > inputCands; event.getByToken(pfCandToken_, inputCands); edm::Handle rho; event.getByToken(rhoToken_, rho); - edm::Handle> weights; - if (!weightsToken_.isUninitialized()) - event.getByToken(weightsToken_, weights); - JME::JetResolution resPtObj = JME::JetResolution::get(iSetup, jetResPtType_); JME::JetResolution resPhiObj = JME::JetResolution::get(iSetup, jetResPhiType_); JME::JetResolutionScaleFactor resSFObj = JME::JetResolutionScaleFactor::get(iSetup, jetSFType_); //Compute the covariance matrix and fill it - const edm::ValueMap* weightsPtr = nullptr; - if (met.isWeighted()) { - if (weightsToken_.isUninitialized()) - throw cms::Exception("InvalidInput") << "MET is weighted (e.g. PUPPI), but no weights given in PATMETProducer\n"; - weightsPtr = &*weights; - } - reco::METCovMatrix cov = metSigAlgo_->getCovariance(*inputJets, - leptons, - inputCands, - *rho, - resPtObj, - resPhiObj, - resSFObj, - event.isRealData(), - sumPtUnclustered, - weightsPtr); + reco::METCovMatrix cov = metSigAlgo_->getCovariance( + *inputJets, leptons, inputCands, *rho, resPtObj, resPhiObj, resSFObj, event.isRealData(), sumPtUnclustered); return cov; } diff --git a/PhysicsTools/PatAlgos/plugins/PATMETProducer.h b/PhysicsTools/PatAlgos/plugins/PATMETProducer.h index 2274144432491..a9d1fe1cb3b25 100644 --- a/PhysicsTools/PatAlgos/plugins/PATMETProducer.h +++ b/PhysicsTools/PatAlgos/plugins/PATMETProducer.h @@ -45,9 +45,9 @@ namespace pat { private: // configurables edm::InputTag metSrc_; - edm::EDGetTokenT> metToken_; + edm::EDGetTokenT > metToken_; bool addGenMET_; - edm::EDGetTokenT> genMETToken_; + edm::EDGetTokenT > genMETToken_; bool addResolutions_; pat::helper::KinResolutionsLoader resolutionLoader_; bool addMuonCorr_; @@ -64,18 +64,16 @@ namespace pat { //MET Significance bool calculateMETSignificance_; metsig::METSignificance* metSigAlgo_; - edm::EDGetTokenT> jetToken_; - edm::EDGetTokenT> pfCandToken_; - std::vector>> lepTokens_; + edm::EDGetTokenT > jetToken_; + edm::EDGetTokenT > pfCandToken_; + std::vector > > lepTokens_; edm::EDGetTokenT rhoToken_; std::string jetResPtType_; std::string jetResPhiType_; std::string jetSFType_; - edm::EDGetTokenT> weightsToken_; const reco::METCovMatrix getMETCovMatrix(const edm::Event& event, const edm::EventSetup& iSetup, - const reco::MET& met, double& sumPtUnclustered) const; }; diff --git a/PhysicsTools/PatAlgos/plugins/PATMuonProducer.cc b/PhysicsTools/PatAlgos/plugins/PATMuonProducer.cc index c39bce81863e4..fff037842ce39 100644 --- a/PhysicsTools/PatAlgos/plugins/PATMuonProducer.cc +++ b/PhysicsTools/PatAlgos/plugins/PATMuonProducer.cc @@ -516,7 +516,7 @@ void PATMuonProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) //tcMETmuCorValueMap = *tcMETmuCorValueMap_h; } - if (embedPfEcalEnergy_ || embedPFCandidate_) { + if (embedPfEcalEnergy_) { // get the PFCandidates of type muons iEvent.getByToken(pfMuonToken_, pfMuons); } @@ -604,29 +604,19 @@ void PATMuonProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) if (embedTcMETMuonCorrs_) aMuon.embedTcMETMuonCorrs((*tcMETMuonCorrs)[muonRef]); - if (embedPfEcalEnergy_ || embedPFCandidate_) { - if (embedPfEcalEnergy_) - aMuon.setPfEcalEnergy(-99.0); - unsigned index = 0; + if (embedPfEcalEnergy_) { + aMuon.setPfEcalEnergy(-99.0); for (const reco::PFCandidate& pfmu : *pfMuons) { if (pfmu.muonRef().isNonnull()) { if (pfmu.muonRef().id() != muonRef.id()) throw cms::Exception("Configuration") << "Muon reference within PF candidates does not point to the muon collection." << std::endl; if (pfmu.muonRef().key() == muonRef.key()) { - reco::PFCandidateRef pfRef(pfMuons, index); - aMuon.setPFCandidateRef(pfRef); - if (embedPfEcalEnergy_) - aMuon.setPfEcalEnergy(pfmu.ecalEnergy()); - if (embedPFCandidate_) - aMuon.embedPFCandidate(); - break; + aMuon.setPfEcalEnergy(pfmu.ecalEnergy()); } } - index++; } } - if (addInverseBeta_) { aMuon.readTimeExtra((*muonsTimeExtra)[muonRef]); } diff --git a/PhysicsTools/PatAlgos/plugins/PATPackedCandidateProducer.cc b/PhysicsTools/PatAlgos/plugins/PATPackedCandidateProducer.cc index 08dd2623661ff..eee9380650d98 100644 --- a/PhysicsTools/PatAlgos/plugins/PATPackedCandidateProducer.cc +++ b/PhysicsTools/PatAlgos/plugins/PATPackedCandidateProducer.cc @@ -87,6 +87,7 @@ namespace pat { const edm::EDGetTokenT TKOrigs_; const edm::EDGetTokenT> PuppiWeight_; const edm::EDGetTokenT> PuppiWeightNoLep_; + const edm::EDGetTokenT> PuppiCandsNoLep_; std::vector>> SVWhiteLists_; const bool storeChargedHadronIsolation_; const edm::EDGetTokenT> ChargedHadronIsolation_; @@ -126,6 +127,9 @@ pat::PATPackedCandidateProducer::PATPackedCandidateProducer(const edm::Parameter : edm::EDGetTokenT>()), PuppiWeightNoLep_(usePuppi_ ? consumes>(iConfig.getParameter("PuppiNoLepSrc")) : edm::EDGetTokenT>()), + PuppiCandsNoLep_( + usePuppi_ ? consumes>(iConfig.getParameter("PuppiNoLepSrc")) + : edm::EDGetTokenT>()), storeChargedHadronIsolation_(!iConfig.getParameter("chargedHadronIsolation").encode().empty()), ChargedHadronIsolation_( consumes>(iConfig.getParameter("chargedHadronIsolation"))), @@ -164,9 +168,15 @@ void pat::PATPackedCandidateProducer::produce(edm::StreamID, edm::Event &iEvent, edm::Handle> puppiWeight; edm::Handle> puppiWeightNoLep; + edm::Handle> puppiCandsNoLep; + std::vector puppiCandsNoLepPtrs; if (usePuppi_) { iEvent.getByToken(PuppiWeight_, puppiWeight); iEvent.getByToken(PuppiWeightNoLep_, puppiWeightNoLep); + iEvent.getByToken(PuppiCandsNoLep_, puppiCandsNoLep); + for (auto pup : *puppiCandsNoLep) { + puppiCandsNoLepPtrs.push_back(pup.sourceCandidatePtr(0)); + } } edm::Handle PVOrigs; @@ -392,7 +402,27 @@ void pat::PATPackedCandidateProducer::produce(edm::StreamID, edm::Event &iEvent, reco::PFCandidateRef pkref(cands, ic); float puppiWeightVal = (*puppiWeight)[pkref]; - float puppiWeightNoLepVal = (*puppiWeightNoLep)[pkref]; + float puppiWeightNoLepVal = 0.0; + // Check the "no lepton" puppi weights. + // If present, then it is not a lepton, use stored weight + // If absent, it is a lepton, so set the weight to 1.0 + if (puppiWeightNoLep.isValid()) { + // Look for the pointer inside the "no lepton" candidate collection. + auto pkrefPtr = pkref->sourceCandidatePtr(0); + + bool foundNoLep = false; + for (size_t ipcnl = 0; ipcnl < puppiCandsNoLepPtrs.size(); ipcnl++) { + if (puppiCandsNoLepPtrs[ipcnl] == pkrefPtr) { + foundNoLep = true; + puppiWeightNoLepVal = + puppiCandsNoLep->at(ipcnl).pt() / cand.pt(); // a hack for now, should use the value map + break; + } + } + if (!foundNoLep || puppiWeightNoLepVal > 1) { + puppiWeightNoLepVal = 1.0; + } + } outPtrP->back().setPuppiWeight(puppiWeightVal, puppiWeightNoLepVal); } diff --git a/PhysicsTools/PatAlgos/python/producersLayer1/metProducer_cfi.py b/PhysicsTools/PatAlgos/python/producersLayer1/metProducer_cfi.py index 5781ff9442db5..5a529171fc48a 100644 --- a/PhysicsTools/PatAlgos/python/producersLayer1/metProducer_cfi.py +++ b/PhysicsTools/PatAlgos/python/producersLayer1/metProducer_cfi.py @@ -50,7 +50,6 @@ computeMETSignificance = cms.bool(False), # significance computation parameters, not used # if the significance is not computed - srcWeights = cms.InputTag(""), srcJets = cms.InputTag("cleanedPatJets"), srcPFCands = cms.InputTag("particleFlow"), srcLeptons = cms.VInputTag("selectedPatElectrons", "selectedPatMuons", "selectedPatPhotons"), diff --git a/PhysicsTools/PatAlgos/python/slimming/applySubstructure_cff.py b/PhysicsTools/PatAlgos/python/slimming/applySubstructure_cff.py index f1a1efb01de41..06177003c789b 100644 --- a/PhysicsTools/PatAlgos/python/slimming/applySubstructure_cff.py +++ b/PhysicsTools/PatAlgos/python/slimming/applySubstructure_cff.py @@ -13,31 +13,13 @@ def applySubstructure( process, postfix="" ) : # Configure the RECO jets + from RecoJets.JetProducers.ak4PFJets_cfi import ak4PFJetsPuppi from RecoJets.JetProducers.ak8PFJets_cfi import ak8PFJetsPuppi, ak8PFJetsPuppiSoftDrop, ak8PFJetsPuppiConstituents - setattr(process,'ak8PFJetsPuppi'+postfix,ak8PFJetsPuppi.clone()) - setattr(process,'ak8PFJetsPuppiConstituents'+postfix, ak8PFJetsPuppiConstituents.clone(cut = cms.string('pt > 170.0 && abs(rapidity()) < 2.4') )) - setattr(process,'ak8PFJetsPuppiSoftDrop'+postfix, ak8PFJetsPuppiSoftDrop.clone( src = 'ak8PFJetsPuppiConstituents'+postfix+':constituents' )) - from RecoJets.JetProducers.ak8PFJetsPuppi_groomingValueMaps_cfi import ak8PFJetsPuppiSoftDropMass - setattr(process,'ak8PFJetsPuppiSoftDropMass'+postfix, ak8PFJetsPuppiSoftDropMass.clone()) - from Configuration.Eras.Modifier_run2_miniAOD_80XLegacy_cff import run2_miniAOD_80XLegacy - from Configuration.Eras.Modifier_run2_miniAOD_94XFall17_cff import run2_miniAOD_94XFall17 - from Configuration.Eras.Modifier_pA_2016_cff import pA_2016 - from Configuration.Eras.Modifier_pp_on_AA_2018_cff import pp_on_AA_2018 - if postfix=='': - # Avoid recomputing the PUPPI collections that are present in AOD - _rerun_puppijets_task = task.copy() - _rerun_puppijets_task.add(getattr(process,'ak8PFJetsPuppi'), - getattr(process,'ak8PFJetsPuppiConstituents'), - getattr(process,'ak8PFJetsPuppiSoftDrop'), - getattr(process,'ak8PFJetsPuppiSoftDropMass')) - (run2_miniAOD_80XLegacy | run2_miniAOD_94XFall17 | pA_2016 | pp_on_AA_2018).toReplaceWith(task, _rerun_puppijets_task) - else: - task.add(getattr(process,'ak8PFJetsPuppi'+postfix), - getattr(process,'ak8PFJetsPuppiConstituents'+postfix), - getattr(process,'ak8PFJetsPuppiSoftDrop'+postfix), - getattr(process,'ak8PFJetsPuppiSoftDropMass'+postfix)) - from RecoJets.JetProducers.ak8GenJets_cfi import ak8GenJets, ak8GenJetsSoftDrop, ak8GenJetsConstituents + addToProcessAndTask('ak4PFJetsPuppi'+postfix,ak4PFJetsPuppi.clone(), process, task) + addToProcessAndTask('ak8PFJetsPuppi'+postfix,ak8PFJetsPuppi.clone(), process, task) + addToProcessAndTask('ak8PFJetsPuppiConstituents', ak8PFJetsPuppiConstituents.clone(cut = cms.string('pt > 170.0 && abs(rapidity()) < 2.4') ), process, task ) + addToProcessAndTask('ak8PFJetsPuppiSoftDrop'+postfix, ak8PFJetsPuppiSoftDrop.clone( src = cms.InputTag('ak8PFJetsPuppiConstituents', 'constituents') ), process, task) addToProcessAndTask('ak8GenJetsNoNuConstituents'+postfix, ak8GenJetsConstituents.clone(src='ak8GenJetsNoNu'), process, task ) addToProcessAndTask('ak8GenJetsNoNuSoftDrop'+postfix,ak8GenJetsSoftDrop.clone(src=cms.InputTag('ak8GenJetsNoNuConstituents'+postfix, 'constituents')),process,task) addToProcessAndTask('slimmedGenJetsAK8SoftDropSubJets'+postfix, @@ -51,6 +33,7 @@ def applySubstructure( process, postfix="" ) : dropSpecific = cms.bool(True), # Save space ), process, task ) + #add RECO AK8 from PUPPI and RECO AK8 PUPPI with soft drop... will be needed by ungroomed AK8 jets later ## PATify puppi soft drop fat jets addJetCollection( process, @@ -163,6 +146,8 @@ def applySubstructure( process, postfix="" ) : process, task) ## now add AK8 groomed masses and ECF + from RecoJets.JetProducers.ak8PFJetsPuppi_groomingValueMaps_cfi import ak8PFJetsPuppiSoftDropMass + addToProcessAndTask('ak8PFJetsPuppiSoftDropMass'+postfix, ak8PFJetsPuppiSoftDropMass.clone(), process, task) getattr(process,"patJetsAK8Puppi"+postfix).userData.userFloats.src += ['ak8PFJetsPuppiSoftDropMass'+postfix] getattr(process,"patJetsAK8Puppi"+postfix).addTagInfos = cms.bool(False) getattr(process,"patJetsAK8Puppi"+postfix).userData.userFloats.src += [ diff --git a/PhysicsTools/PatAlgos/python/slimming/customizeMiniAOD_HcalFixLegacy2016.py b/PhysicsTools/PatAlgos/python/slimming/customizeMiniAOD_HcalFixLegacy2016.py index d98b7e4e85d28..0b444f1f07655 100644 --- a/PhysicsTools/PatAlgos/python/slimming/customizeMiniAOD_HcalFixLegacy2016.py +++ b/PhysicsTools/PatAlgos/python/slimming/customizeMiniAOD_HcalFixLegacy2016.py @@ -44,7 +44,7 @@ def loadJetMETBTag(process): process.load('RecoBTag.Configuration.RecoBTag_cff') task.add(process.btaggingTask) - process.load("RecoMET.METProducers.pfMet_cfi") + process.load("RecoMET.METProducers.PFMET_cfi") task.add(process.pfMet) diff --git a/PhysicsTools/PatAlgos/python/slimming/customizeMiniAOD_MuEGFixMoriond2017.py b/PhysicsTools/PatAlgos/python/slimming/customizeMiniAOD_MuEGFixMoriond2017.py index 4ffa87b617213..60bd2e8d63afe 100644 --- a/PhysicsTools/PatAlgos/python/slimming/customizeMiniAOD_MuEGFixMoriond2017.py +++ b/PhysicsTools/PatAlgos/python/slimming/customizeMiniAOD_MuEGFixMoriond2017.py @@ -104,7 +104,7 @@ def loadJetMETBTag(process): task.add(process.ak4PFJetsCHS) process.ak8PFJetsCHS = RecoJets.Configuration.RecoPFJets_cff.ak8PFJetsCHS.clone() task.add(process.ak8PFJetsCHS) - process.load("RecoMET.METProducers.pfMet_cfi") + process.load("RecoMET.METProducers.PFMET_cfi") task.add(process.pfMet) process.load("RecoBTag.ImpactParameter.impactParameter_cff") task.add(process.impactParameterTask) diff --git a/PhysicsTools/PatAlgos/python/slimming/extraSlimmedMETs_MuEGFixMoriond2017.py b/PhysicsTools/PatAlgos/python/slimming/extraSlimmedMETs_MuEGFixMoriond2017.py index 936033f795192..5ec33a0ffd272 100644 --- a/PhysicsTools/PatAlgos/python/slimming/extraSlimmedMETs_MuEGFixMoriond2017.py +++ b/PhysicsTools/PatAlgos/python/slimming/extraSlimmedMETs_MuEGFixMoriond2017.py @@ -133,7 +133,7 @@ def addExtraPuppiMETCorrections(process, from PhysicsTools.PatUtils.tools.corMETFromMuonAndEG import corMETFromMuonAndEG #EG correction for puppi, muon correction done right above corMETFromMuonAndEG(process, - metType="Puppi", + pfCandCollection="puppiForMET", electronCollection=unCleanElectronCollection, photonCollection=unCleanPhotonCollection, corElectronCollection=cleanElectronCollection, @@ -175,7 +175,6 @@ def addExtraPuppiMETCorrections(process, process.puppiMuonCorrection = cms.EDProducer("ShiftedParticleMETcorrInputProducer", srcOriginal = cms.InputTag(unCleanPFCandidateCollection), srcShifted = cms.InputTag(cleanPFCandidateCollection), - srcWeights = cms.InputTag("") ) task.add(process.puppiMuonCorrection) diff --git a/PhysicsTools/PatAlgos/python/slimming/miniAOD_tools.py b/PhysicsTools/PatAlgos/python/slimming/miniAOD_tools.py index d2217290fbc03..dc5e395f735a3 100644 --- a/PhysicsTools/PatAlgos/python/slimming/miniAOD_tools.py +++ b/PhysicsTools/PatAlgos/python/slimming/miniAOD_tools.py @@ -198,9 +198,13 @@ def miniAOD_customizeCommon(process): ) task.add(process.CHSCands) - from RecoMET.METProducers.pfMet_cfi import pfMet - process.pfMetCHS = pfMet.clone(src = 'CHSCands') - task.add(process.pfMetCHS) + process.pfMetCHS = cms.EDProducer("PFMETProducer", + src = cms.InputTag("CHSCands"), + alias = cms.string('pfMet'), + globalThreshold = cms.double(0.0), + calculateSignificance = cms.bool(False), + ) + task.add(process.pfMetCHS) addMETCollection(process, labelName = "patCHSMet", @@ -218,7 +222,13 @@ def miniAOD_customizeCommon(process): ) task.add(process.TrkCands) - process.pfMetTrk = pfMet.clone(src = 'TrkCands') + process.pfMetTrk = cms.EDProducer("PFMETProducer", + src = cms.InputTag("TrkCands"), + alias = cms.string('pfMet'), + globalThreshold = cms.double(0.0), + calculateSignificance = cms.bool(False), + ) + task.add(process.pfMetTrk) addMETCollection(process, @@ -365,14 +375,6 @@ def miniAOD_customizeCommon(process): process.makePatTausTask, _makePatTausTaskWithTauReReco ) - # Adding puppi jets - process.load('CommonTools.PileupAlgos.Puppi_cff') - process.load('RecoJets.JetProducers.ak4PFJets_cfi') - from Configuration.Eras.Modifier_pA_2016_cff import pA_2016 - _rerun_puppijets_task = task.copy() - _rerun_puppijets_task.add(process.puppi, process.ak4PFJetsPuppi) - (run2_miniAOD_80XLegacy | run2_miniAOD_94XFall17 | pA_2016 | pp_on_AA_2018).toReplaceWith(task, _rerun_puppijets_task) - from RecoJets.JetAssociationProducers.j2tParametersVX_cfi import j2tParametersVX process.ak4PFJetsPuppiTracksAssociatorAtVertex = cms.EDProducer("JetTracksAssociatorAtVertex", j2tParametersVX, @@ -424,12 +426,11 @@ def miniAOD_customizeCommon(process): run2_miniAOD_94XFall17.toModify(process.updatedPatJetsTransientCorrectedSlimmedDeepFlavour, addTagInfos = False ) ## puppi met - process.load('RecoMET.METProducers.pfMetPuppi_cfi') - _rerun_puppimet_task = task.copy() - _rerun_puppimet_task.add(process.puppiNoLep, process.pfMetPuppi) - (run2_miniAOD_80XLegacy | run2_miniAOD_94XFall17).toReplaceWith(task, _rerun_puppimet_task) - + from PhysicsTools.PatAlgos.slimming.puppiForMET_cff import makePuppies + makePuppies( process ); + runMetCorAndUncForMiniAODProduction(process, metType="Puppi", + pfCandColl=cms.InputTag("puppiForMET"), jetCollUnskimmed="slimmedJetsPuppi", recoMetFromPFCs=True, jetFlavor="AK4PFPuppi", diff --git a/PhysicsTools/PatAlgos/python/slimming/puppiForMET_cff.py b/PhysicsTools/PatAlgos/python/slimming/puppiForMET_cff.py index 3d45ca91911fa..72c60e93ecb78 100644 --- a/PhysicsTools/PatAlgos/python/slimming/puppiForMET_cff.py +++ b/PhysicsTools/PatAlgos/python/slimming/puppiForMET_cff.py @@ -8,23 +8,42 @@ def makePuppies( process ): task = getPatAlgosToolsTask(process) process.load('CommonTools.PileupAlgos.Puppi_cff') task.add(process.puppi) - task.add(process.puppiNoLep) + 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 ) + ) + task.add(process.pfNoLepPUPPI) + process.pfLeptonsPUPPET = cms.EDFilter("PdgIdCandViewSelector", + src = cms.InputTag("particleFlow"), + pdgId = cms.vint32(-11,11,-13,13), + ) + task.add(process.pfLeptonsPUPPET) + addToProcessAndTask('puppiNoLep', process.puppi.clone(), process, task) + process.puppiNoLep.candName = cms.InputTag('pfNoLepPUPPI') + process.puppiNoLep.PtMaxPhotons = 20. + process.puppiForMET = cms.EDProducer("CandViewMerger",src = cms.VInputTag( 'puppiNoLep','pfLeptonsPUPPET')) + task.add(process.puppiForMET) def makePuppiesFromMiniAOD( process, createScheduledSequence=False ): task = getPatAlgosToolsTask(process) process.load('CommonTools.PileupAlgos.Puppi_cff') task.add(process.puppi) - process.puppi.candName = 'packedPFCandidates' + process.puppi.candName = cms.InputTag('packedPFCandidates') process.puppi.clonePackedCands = True - process.puppi.vertexName = 'offlineSlimmedPrimaryVertices' + process.puppi.vertexName = cms.InputTag('offlineSlimmedPrimaryVertices') process.puppi.useExistingWeights = True - task.add(process.puppiNoLep) - process.puppiNoLep.candName = 'packedPFCandidates' - process.puppiNoLep.clonePackedCands = True - process.puppiNoLep.vertexName = 'offlineSlimmedPrimaryVertices' - process.puppiNoLep.useExistingWeights = True + process.pfNoLepPUPPI = cms.EDFilter("CandPtrSelector", src = cms.InputTag("packedPFCandidates"), cut = cms.string("abs(pdgId) != 13 && abs(pdgId) != 11 && abs(pdgId) != 15")) + task.add(process.pfNoLepPUPPI) + process.pfLeptonsPUPPET = cms.EDFilter("CandPtrSelector", src = cms.InputTag("packedPFCandidates"), cut = cms.string("abs(pdgId) == 13 || abs(pdgId) == 11 || abs(pdgId) == 15")) + task.add(process.pfLeptonsPUPPET) + addToProcessAndTask('puppiNoLep', process.puppi.clone(), process, task) + process.puppiNoLep.candName = cms.InputTag('pfNoLepPUPPI') + process.puppiNoLep.useWeightsNoLep = True + process.puppiNoLep.PtMaxPhotons = 20. + process.puppiForMET = cms.EDProducer("CandViewMerger",src = cms.VInputTag( 'puppiNoLep','pfLeptonsPUPPET')) + task.add(process.puppiForMET) #making a sequence for people running the MET tool in scheduled mode if createScheduledSequence: - puppiMETSequence = cms.Sequence(process.puppi*process.puppiNoLep) + puppiMETSequence = cms.Sequence(process.puppi*process.pfLeptonsPUPPET*process.pfNoLepPUPPI*process.puppiNoLep*process.puppiForMET) setattr(process, "puppiMETSequence", puppiMETSequence) diff --git a/PhysicsTools/PatAlgos/python/tools/jetTools.py b/PhysicsTools/PatAlgos/python/tools/jetTools.py index 1f8ace68136dd..d875cddc007ff 100644 --- a/PhysicsTools/PatAlgos/python/tools/jetTools.py +++ b/PhysicsTools/PatAlgos/python/tools/jetTools.py @@ -199,8 +199,6 @@ def setupJetCorrections(process, knownModules, jetCorrections, jetSource, pvSour cms.InputTag(jetCorrections[0]+_labelCorrName+'JetMETcorr'+postfix, 'type1'), jetCorrections[0]+_labelCorrName+'corrPfMetType2'+postfix)), process, task) - if 'Puppi' in jetSource.value() and pfCandidates.value() == 'particleFlow': - getattr(process,jetCorrections[0]+_labelCorrName+'CandMETcorr'+postfix).srcWeights = "puppiNoLep" ## common configuration for Calo and PF if ('L1FastJet' in jetCorrections[1] or 'L1Fastjet' in jetCorrections[1]): diff --git a/PhysicsTools/PatAlgos/test/corMETFromMiniAOD.py b/PhysicsTools/PatAlgos/test/corMETFromMiniAOD.py index fded6289c13d9..2329ac530c1bc 100644 --- a/PhysicsTools/PatAlgos/test/corMETFromMiniAOD.py +++ b/PhysicsTools/PatAlgos/test/corMETFromMiniAOD.py @@ -128,6 +128,7 @@ runMetCorAndUncFromMiniAOD(process, isData=runOnData, metType="Puppi", + pfCandColl=cms.InputTag("puppiForMET"), recoMetFromPFCs=True, reclusterJets=True, jetFlavor="AK4PFPuppi", diff --git a/PhysicsTools/PatAlgos/test/miniAOD/example_ei.py b/PhysicsTools/PatAlgos/test/miniAOD/example_ei.py index 6ca1deea96755..35d9f1b89f1e0 100644 --- a/PhysicsTools/PatAlgos/test/miniAOD/example_ei.py +++ b/PhysicsTools/PatAlgos/test/miniAOD/example_ei.py @@ -18,7 +18,7 @@ from RecoJets.JetProducers.ak4PFJets_cfi import ak4PFJets from RecoJets.JetProducers.ak4GenJets_cfi import ak4GenJets -from RecoMET.METProducers.pfMet_cfi import pfMet +from RecoMET.METProducers.PFMET_cfi import pfMet #select isolated collections process.selectedMuons = cms.EDFilter("CandPtrSelector", src = cms.InputTag("slimmedMuons"), cut = cms.string('''abs(eta)<2.5 && pt>10. && diff --git a/PhysicsTools/PatAlgos/test/miniAOD/example_jet_and_met.py b/PhysicsTools/PatAlgos/test/miniAOD/example_jet_and_met.py index a91458a60a1fb..dff1fbf812ddf 100644 --- a/PhysicsTools/PatAlgos/test/miniAOD/example_jet_and_met.py +++ b/PhysicsTools/PatAlgos/test/miniAOD/example_jet_and_met.py @@ -17,7 +17,7 @@ from RecoJets.JetProducers.ak5PFJets_cfi import ak5PFJets from RecoJets.JetProducers.ak5GenJets_cfi import ak5GenJets -from RecoMET.METProducers.pfMet_cfi import pfMet +from RecoMET.METProducers.PFMET_cfi import pfMet process.chs = cms.EDFilter("CandPtrSelector", src = cms.InputTag("packedPFCandidates"), cut = cms.string("fromPV")) diff --git a/PhysicsTools/PatAlgos/test/produceMETFromAOD.py b/PhysicsTools/PatAlgos/test/produceMETFromAOD.py index 4eb00987f9cec..aab1d16458b9d 100644 --- a/PhysicsTools/PatAlgos/test/produceMETFromAOD.py +++ b/PhysicsTools/PatAlgos/test/produceMETFromAOD.py @@ -8,7 +8,6 @@ ) #configurable options ======================================================================= -runOnData=False usePrivateSQlite=False #use external JECs (sqlite file) useHFCandidates=True #create an additionnal NoHF slimmed MET collection if the option is set to false redoPuppi=False # rebuild puppiMET @@ -102,7 +101,7 @@ runMETCorrectionsAndUncertainties(process, #isData=runOnData, - metType="Puppi", + pfCandColl=cms.InputTag("puppiForMET"), recoMetFromPFCs=True, reclusterJets=True, jetFlavor="AK4PFPuppi", diff --git a/PhysicsTools/PatUtils/plugins/ShiftedParticleMETcorrInputProducer.cc b/PhysicsTools/PatUtils/plugins/ShiftedParticleMETcorrInputProducer.cc index 8c2e6c731cba9..705a1823ec5af 100644 --- a/PhysicsTools/PatUtils/plugins/ShiftedParticleMETcorrInputProducer.cc +++ b/PhysicsTools/PatUtils/plugins/ShiftedParticleMETcorrInputProducer.cc @@ -3,10 +3,6 @@ ShiftedParticleMETcorrInputProducer::ShiftedParticleMETcorrInputProducer(const edm::ParameterSet& cfg) : srcOriginalToken_(consumes(cfg.getParameter("srcOriginal"))), srcShiftedToken_(consumes(cfg.getParameter("srcShifted"))) { - edm::InputTag srcWeights = cfg.getParameter("srcWeights"); - if (!srcWeights.label().empty()) - weightsToken_ = consumes>(srcWeights); - produces(); } @@ -21,27 +17,22 @@ void ShiftedParticleMETcorrInputProducer::produce(edm::StreamID, edm::Event& evt edm::Handle shiftedParticles; evt.getByToken(srcShiftedToken_, shiftedParticles); - edm::Handle> weights; - if (!weightsToken_.isUninitialized()) - evt.getByToken(weightsToken_, weights); - auto metCorrection = std::make_unique(); - if (originalParticles->size() != shiftedParticles->size()) - throw cms::Exception("InvalidInput") - << "Original collection and shifted collection are of different size in ShiftedParticleMETcorrInputProducer\n"; - for (unsigned i = 0; i < originalParticles->size(); ++i) { - float weight = 1.0; - if (!weightsToken_.isUninitialized()) { - edm::Ptr particlePtr = originalParticles->ptrAt(i); - while (!weights->contains(particlePtr.id()) && (particlePtr->numberOfSourceCandidatePtrs() > 0)) - particlePtr = particlePtr->sourceCandidatePtr(0); - weight = (*weights)[particlePtr]; - } - const reco::Candidate& originalParticle = originalParticles->at(i); - const reco::Candidate& shiftedParticle = shiftedParticles->at(i); - metCorrection->mex += (originalParticle.px() - shiftedParticle.px()) * weight; - metCorrection->mey += (originalParticle.py() - shiftedParticle.py()) * weight; - metCorrection->sumet -= (originalParticle.et() - shiftedParticle.et()) * weight; + + for (CandidateView::const_iterator originalParticle = originalParticles->begin(); + originalParticle != originalParticles->end(); + ++originalParticle) { + metCorrection->mex += originalParticle->px(); + metCorrection->mey += originalParticle->py(); + metCorrection->sumet -= originalParticle->et(); + } + + for (CandidateView::const_iterator shiftedParticle = shiftedParticles->begin(); + shiftedParticle != shiftedParticles->end(); + ++shiftedParticle) { + metCorrection->mex -= shiftedParticle->px(); + metCorrection->mey -= shiftedParticle->py(); + metCorrection->sumet += shiftedParticle->et(); } evt.put(std::move(metCorrection)); diff --git a/PhysicsTools/PatUtils/plugins/ShiftedParticleMETcorrInputProducer.h b/PhysicsTools/PatUtils/plugins/ShiftedParticleMETcorrInputProducer.h index dcac6ff27ce35..2b5b0d3c8cd04 100644 --- a/PhysicsTools/PatUtils/plugins/ShiftedParticleMETcorrInputProducer.h +++ b/PhysicsTools/PatUtils/plugins/ShiftedParticleMETcorrInputProducer.h @@ -16,7 +16,6 @@ #include "FWCore/Framework/interface/EventSetup.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "FWCore/Utilities/interface/InputTag.h" -#include "DataFormats/Common/interface/ValueMap.h" #include "DataFormats/METReco/interface/CorrMETData.h" #include "DataFormats/Common/interface/View.h" @@ -37,7 +36,6 @@ class ShiftedParticleMETcorrInputProducer : public edm::global::EDProducer<> { const edm::EDGetTokenT srcOriginalToken_; const edm::EDGetTokenT srcShiftedToken_; - edm::EDGetTokenT> weightsToken_; }; #endif diff --git a/PhysicsTools/PatUtils/plugins/ShiftedParticleProducer.cc b/PhysicsTools/PatUtils/plugins/ShiftedParticleProducer.cc index 2d16e6ccdd8a8..0969d51908a15 100644 --- a/PhysicsTools/PatUtils/plugins/ShiftedParticleProducer.cc +++ b/PhysicsTools/PatUtils/plugins/ShiftedParticleProducer.cc @@ -5,9 +5,6 @@ ShiftedParticleProducer::ShiftedParticleProducer(const edm::ParameterSet& cfg) { moduleLabel_ = cfg.getParameter("@module_label"); srcToken_ = consumes(cfg.getParameter("src")); shiftBy_ = cfg.getParameter("shiftBy"); - edm::InputTag srcWeights = cfg.getParameter("srcWeights"); - if (!srcWeights.label().empty()) - weightsToken_ = consumes>(srcWeights); if (cfg.exists("binning")) { typedef std::vector vParameterSet; @@ -34,32 +31,20 @@ void ShiftedParticleProducer::produce(edm::Event& evt, const edm::EventSetup& es edm::Handle originalParticles; evt.getByToken(srcToken_, originalParticles); - edm::Handle> weights; - if (!weightsToken_.isUninitialized()) - evt.getByToken(weightsToken_, weights); - auto shiftedParticles = std::make_unique(); - for (unsigned i = 0; i < originalParticles->size(); ++i) { - float weight = 1.0; - if (!weightsToken_.isUninitialized()) { - edm::Ptr particlePtr = originalParticles->ptrAt(i); - while (!weights->contains(particlePtr.id()) && (particlePtr->numberOfSourceCandidatePtrs() > 0)) - particlePtr = particlePtr->sourceCandidatePtr(0); - weight = (*weights)[particlePtr]; - } - const reco::Candidate& originalParticle = originalParticles->at(i); - reco::LeafCandidate weightedParticle(originalParticle); - weightedParticle.setP4(originalParticle.p4() * weight); - double uncertainty = getUncShift(weightedParticle); + for (CandidateView::const_iterator originalParticle = originalParticles->begin(); + originalParticle != originalParticles->end(); + ++originalParticle) { + double uncertainty = getUncShift(originalParticle); double shift = shiftBy_ * uncertainty; - reco::Candidate::LorentzVector shiftedParticleP4 = originalParticle.p4(); + reco::Candidate::LorentzVector shiftedParticleP4 = originalParticle->p4(); //leave 0*nan = 0 - if ((weight > 0) && (!(edm::isNotFinite(shift) && shiftedParticleP4.mag2() == 0))) + if (!(edm::isNotFinite(shift) && shiftedParticleP4.mag2() == 0)) shiftedParticleP4 *= (1. + shift); - std::unique_ptr shiftedParticle = std::make_unique(originalParticle); + std::unique_ptr shiftedParticle = std::make_unique(*originalParticle); shiftedParticle->setP4(shiftedParticleP4); shiftedParticles->push_back(shiftedParticle.release()); @@ -68,18 +53,18 @@ void ShiftedParticleProducer::produce(edm::Event& evt, const edm::EventSetup& es evt.put(std::move(shiftedParticles)); } -double ShiftedParticleProducer::getUncShift(const reco::Candidate& originalParticle) { +double ShiftedParticleProducer::getUncShift(const edm::View::const_iterator& originalParticle) { double valx = 0; double valy = 0; for (std::vector::iterator binningEntry = binning_.begin(); binningEntry != binning_.end(); ++binningEntry) { - if ((!(*binningEntry)->binSelection_) || (*(*binningEntry)->binSelection_)(originalParticle)) { + if ((!(*binningEntry)->binSelection_) || (*(*binningEntry)->binSelection_)(*originalParticle)) { if ((*binningEntry)->energyDep_) - valx = originalParticle.energy(); + valx = originalParticle->energy(); else - valx = originalParticle.pt(); + valx = originalParticle->pt(); - valy = originalParticle.eta(); + valy = originalParticle->eta(); return (*binningEntry)->binUncFormula_->Eval(valx, valy); } } diff --git a/PhysicsTools/PatUtils/plugins/ShiftedParticleProducer.h b/PhysicsTools/PatUtils/plugins/ShiftedParticleProducer.h index 7f4896307fc89..8af8cd7897ea2 100644 --- a/PhysicsTools/PatUtils/plugins/ShiftedParticleProducer.h +++ b/PhysicsTools/PatUtils/plugins/ShiftedParticleProducer.h @@ -19,7 +19,6 @@ #include "FWCore/Framework/interface/EventSetup.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "FWCore/Utilities/interface/InputTag.h" -#include "DataFormats/Common/interface/ValueMap.h" #include "CommonTools/Utils/interface/StringCutObjectSelector.h" #include "DataFormats/Candidate/interface/Candidate.h" @@ -40,12 +39,11 @@ class ShiftedParticleProducer : public edm::stream::EDProducer<> { private: void produce(edm::Event& evt, const edm::EventSetup& es) override; - double getUncShift(const reco::Candidate& originalParticle); + double getUncShift(const CandidateView::const_iterator& originalParticle); std::string moduleLabel_; edm::EDGetTokenT srcToken_; - edm::EDGetTokenT> weightsToken_; struct binningEntryType { binningEntryType(std::string uncertainty, std::string moduleLabel) @@ -64,7 +62,7 @@ class ShiftedParticleProducer : public edm::stream::EDProducer<> { } } ~binningEntryType() {} - std::unique_ptr> binSelection_; + std::unique_ptr > binSelection_; //double binUncertainty_; std::string binUncertainty_; std::unique_ptr binUncFormula_; diff --git a/PhysicsTools/PatUtils/python/tools/eGammaCorrection.py b/PhysicsTools/PatUtils/python/tools/eGammaCorrection.py index 94c75b790ebb8..d9e148b3053ce 100644 --- a/PhysicsTools/PatUtils/python/tools/eGammaCorrection.py +++ b/PhysicsTools/PatUtils/python/tools/eGammaCorrection.py @@ -64,13 +64,11 @@ def eGammaCorrection(process, corMETPhoton = cms.EDProducer("ShiftedParticleMETcorrInputProducer", srcOriginal = cms.InputTag(matchPhotonCollection,tag1), srcShifted = cms.InputTag(matchPhotonCollection,tag2), - srcWeights = cms.InputTag("") ) correctionElectron="corMETElectron"+postfix corMETElectron=cms.EDProducer("ShiftedParticleMETcorrInputProducer", srcOriginal=cms.InputTag(matchElectronCollection,tag1), srcShifted=cms.InputTag(matchElectronCollection,tag2), - srcWeights = cms.InputTag("") ) diff --git a/PhysicsTools/PatUtils/python/tools/runMETCorrectionsAndUncertainties.py b/PhysicsTools/PatUtils/python/tools/runMETCorrectionsAndUncertainties.py index f5b79eb9374ed..5a22e384e1236 100644 --- a/PhysicsTools/PatUtils/python/tools/runMETCorrectionsAndUncertainties.py +++ b/PhysicsTools/PatUtils/python/tools/runMETCorrectionsAndUncertainties.py @@ -500,8 +500,6 @@ def produceMET(self, process, metType, metModuleSequence, postfix): addToProcessAndTask(_myPatMet, getattr(process,'patPFMet').clone(), process, task) getattr(process, _myPatMet).metSource = cms.InputTag("pfMet"+postfix) getattr(process, _myPatMet).srcPFCands = copy.copy(self.getvalue("pfCandCollection")) - if self.getvalue("Puppi"): - getattr(process, _myPatMet).srcWeights = "puppiNoLep" if metType == "PF": getattr(process, _myPatMet).srcLeptons = \ cms.VInputTag(copy.copy(self.getvalue("electronCollection")) if self.getvalue("onMiniAOD") else @@ -616,8 +614,6 @@ def getCorrectedMET(self, process, metType, correctionLevel,produceIntermediateC if "Txy" in correctionLevel: self.tuneTxyParameters(process, corScheme, postfix) getattr(process, "patPFMetTxyCorr"+postfix).srcPFlow = self._parameters["pfCandCollection"].value - if self.getvalue("Puppi"): - getattr(process, "patPFMetTxyCorr"+postfix).srcWeights = "puppiNoLep" #Enable MET significance if the type1 MET is computed @@ -637,7 +633,7 @@ def getCorrectedMET(self, process, metType, correctionLevel,produceIntermediateC from RecoMET.METProducers.METSignificanceParams_cfi import METSignificanceParams_Data getattr(process, _myPatMet).parameters = METSignificanceParams_Data if self.getvalue("Puppi"): - getattr(process, _myPatMet).srcWeights = "puppiNoLep" + getattr(process, _myPatMet).srcPFCands = cms.InputTag('puppiForMET') getattr(process, _myPatMet).srcJets = cms.InputTag('cleanedPatJets'+postfix) getattr(process, _myPatMet).srcJetSF = 'AK4PFPuppi' getattr(process, _myPatMet).srcJetResPt = 'AK4PFPuppi_pt' @@ -654,8 +650,6 @@ def getCorrectedMET(self, process, metType, correctionLevel,produceIntermediateC copy.copy(self.getvalue("muonCollection")), copy.copy(self.getvalue("photonCollection")) if self.getvalue("onMiniAOD") else cms.InputTag("pfeGammaToCandidate","photons")) - if self.getvalue("Puppi"): - getattr(process, _myPatMet).srcWeights = "puppiNoLep" if hasattr(process, "patCaloMet"): getattr(process, "patCaloMet").computeMETSignificance = cms.bool(False) @@ -824,7 +818,10 @@ def getMETUncertainties(self, process, metType, metModName, electronCollection, pfCandsNoJets = cms.EDProducer("CandPtrProjector", src = pfCandCollection, veto = copy.copy(jetCollection), + useDeltaRforFootprint = cms.bool(False) ) + if self.getvalue("Puppi"): + pfCandsNoJets.useDeltaRforFootprint = True addToProcessAndTask("pfCandsNoJets"+postfix, pfCandsNoJets, process, task) metUncSequence += getattr(process, "pfCandsNoJets"+postfix) @@ -832,8 +829,10 @@ def getMETUncertainties(self, process, metType, metModName, electronCollection, pfCandsNoJetsNoEle = cms.EDProducer("CandPtrProjector", src = cms.InputTag("pfCandsNoJets"+postfix), veto = copy.copy(electronCollection), + useDeltaRforFootprint = cms.bool(False), ) if not self.getvalue("onMiniAOD"): + pfCandsNoJetsNoEle.useDeltaRforFootprint = True pfCandsNoJetsNoEle.veto = "pfeGammaToCandidate:electrons" addToProcessAndTask("pfCandsNoJetsNoEle"+postfix, pfCandsNoJetsNoEle, process, task) metUncSequence += getattr(process, "pfCandsNoJetsNoEle"+postfix) @@ -842,7 +841,10 @@ def getMETUncertainties(self, process, metType, metModName, electronCollection, pfCandsNoJetsNoEleNoMu = cms.EDProducer("CandPtrProjector", src = cms.InputTag("pfCandsNoJetsNoEle"+postfix), veto = copy.copy(muonCollection), + useDeltaRforFootprint = cms.bool(False) ) + if not self.getvalue("onMiniAOD"): + pfCandsNoJetsNoEleNoMu.useDeltaRforFootprint = True addToProcessAndTask("pfCandsNoJetsNoEleNoMu"+postfix, pfCandsNoJetsNoEleNoMu, process, task) metUncSequence += getattr(process, "pfCandsNoJetsNoEleNoMu"+postfix) @@ -850,7 +852,10 @@ def getMETUncertainties(self, process, metType, metModName, electronCollection, pfCandsNoJetsNoEleNoMuNoTau = cms.EDProducer("CandPtrProjector", src = cms.InputTag("pfCandsNoJetsNoEleNoMu"+postfix), veto = copy.copy(tauCollection), + useDeltaRforFootprint = cms.bool(False) ) + if self.getvalue("Puppi"): + pfCandsNoJetsNoEleNoMuNoTau.useDeltaRforFootprint = True addToProcessAndTask("pfCandsNoJetsNoEleNoMuNoTau"+postfix, pfCandsNoJetsNoEleNoMuNoTau, process, task) metUncSequence += getattr(process, "pfCandsNoJetsNoEleNoMuNoTau"+postfix) @@ -858,8 +863,10 @@ def getMETUncertainties(self, process, metType, metModName, electronCollection, pfCandsForUnclusteredUnc = cms.EDProducer("CandPtrProjector", src = cms.InputTag("pfCandsNoJetsNoEleNoMuNoTau"+postfix), veto = copy.copy(photonCollection), + useDeltaRforFootprint = cms.bool(False), ) if not self.getvalue("onMiniAOD"): + pfCandsForUnclusteredUnc.useDeltaRforFootprint = True pfCandsForUnclusteredUnc.veto = "pfeGammaToCandidate:photons" addToProcessAndTask("pfCandsForUnclusteredUnc"+postfix, pfCandsForUnclusteredUnc, process, task) metUncSequence += getattr(process, "pfCandsForUnclusteredUnc"+postfix) @@ -959,32 +966,28 @@ def createEnergyScaleShiftedUpModule(self, process,identifier, objectCollection, shiftedModuleUp = cms.EDProducer("ShiftedParticleProducer", src = objectCollection, uncertainty = cms.string('((abs(y)<1.479)?(0.006+0*x):(0.015+0*x))'), - shiftBy = cms.double(+1.*varyByNsigmas), - srcWeights = cms.InputTag("") + shiftBy = cms.double(+1.*varyByNsigmas) ) if identifier == "Photon": shiftedModuleUp = cms.EDProducer("ShiftedParticleProducer", src = objectCollection, uncertainty = cms.string('((abs(y)<1.479)?(0.01+0*x):(0.025+0*x))'), - shiftBy = cms.double(+1.*varyByNsigmas), - srcWeights = cms.InputTag("") + shiftBy = cms.double(+1.*varyByNsigmas) ) if identifier == "Muon": shiftedModuleUp = cms.EDProducer("ShiftedParticleProducer", src = objectCollection, uncertainty = cms.string('((x<100)?(0.002+0*y):(0.05+0*y))'), - shiftBy = cms.double(+1.*varyByNsigmas), - srcWeights = cms.InputTag("") + shiftBy = cms.double(+1.*varyByNsigmas) ) if identifier == "Tau": shiftedModuleUp = cms.EDProducer("ShiftedParticleProducer", src = objectCollection, uncertainty = cms.string('0.03+0*x*y'), - shiftBy = cms.double(+1.*varyByNsigmas), - srcWeights = cms.InputTag("") + shiftBy = cms.double(+1.*varyByNsigmas) ) if identifier == "Unclustered": @@ -1015,8 +1018,7 @@ def createEnergyScaleShiftedUpModule(self, process,identifier, objectCollection, binUncertainty = cms.string('sqrt(1./x+0.0025)+0*y') ), ), - shiftBy = cms.double(+1.*varyByNsigmas), - srcWeights = cms.InputTag("") + shiftBy = cms.double(+1.*varyByNsigmas) ) if identifier == "Jet": @@ -1186,8 +1188,6 @@ def createShiftedModules(self, process, shiftedCollModules, identifier, preId, o #MM: FIXME MVA #if "MVA" in metModName and identifier == "Jet": #dummy fix # modName = "uncorrectedshiftedPat"+preId+identifier+varType+mod+postfix - if (identifier=="Photon" or identifier=="Unclustered") and self.getvalue("Puppi"): - shiftedCollModules[mod].srcWeights = "puppiNoLep" if not hasattr(process, modName): addToProcessAndTask(modName, shiftedCollModules[mod], process, task) metUncSequence += getattr(process, modName) @@ -1199,8 +1199,6 @@ def createShiftedModules(self, process, shiftedCollModules, identifier, preId, o if "PF" in metModName: #create the MET shifts and add them to the sequence shiftedMETCorrModule = self.createShiftedMETModule(process, objectCollection, modName) - if (identifier=="Photon" or identifier=="Unclustered") and self.getvalue("Puppi"): - shiftedMETCorrModule.srcWeights = "puppiNoLep" modMETShiftName = "shiftedPatMETCorr"+preId+identifier+varType+mod+postfix if not hasattr(process, modMETShiftName): addToProcessAndTask(modMETShiftName, shiftedMETCorrModule, process, task) @@ -1255,7 +1253,6 @@ def createShiftedMETModule(self, process, originCollection, shiftedCollection): shiftedModule = cms.EDProducer("ShiftedParticleMETcorrInputProducer", srcOriginal = originCollection, srcShifted = cms.InputTag(shiftedCollection), - srcWeights = cms.InputTag("") ) return shiftedModule @@ -1454,17 +1451,13 @@ def recomputeRawMetFromPfcs(self, process, pfCandCollection, onMiniAOD, patMetMo if not hasattr(process, "pfMet"+postfix) and self._parameters["metType"].value == "PF": #common to AOD/mAOD processing #raw MET - from RecoMET.METProducers.pfMet_cfi import pfMet + from RecoMET.METProducers.PFMET_cfi import pfMet addToProcessAndTask("pfMet"+postfix, pfMet.clone(), process, task) getattr(process, "pfMet"+postfix).src = pfCandCollection getattr(process, "pfMet"+postfix).calculateSignificance = False - if self.getvalue("Puppi"): - getattr(process, "pfMet"+postfix).applyWeight = True - getattr(process, "pfMet"+postfix).srcWeights = "puppiNoLep" patMetModuleSequence += getattr(process, "pfMet"+postfix) - #PAT METs - if not hasattr(process, "patMETs"+postfix) and self._parameters["metType"].value == "PF": + #PAT METs process.load("PhysicsTools.PatAlgos.producersLayer1.metProducer_cff") task.add(process.makePatMETsTask) configtools.cloneProcessingSnippet(process, getattr(process,"patMETCorrections"), postfix, addToTask = True) @@ -1488,7 +1481,7 @@ def recomputeRawMetFromPfcs(self, process, pfCandCollection, onMiniAOD, patMetMo getattr(process, _myPatMet).computeMETSignificance = cms.bool(False) if self.getvalue("Puppi"): - getattr(process, _myPatMet).srcWeights = "puppiNoLep" + getattr(process, _myPatMet).srcPFCands = cms.InputTag('puppiForMET') getattr(process, _myPatMet).srcJets = cms.InputTag('cleanedPatJets'+postfix) getattr(process, _myPatMet).srcJetSF = cms.string('AK4PFPuppi') getattr(process, _myPatMet).srcJetResPt = cms.string('AK4PFPuppi_pt') @@ -1682,8 +1675,13 @@ def miniAODConfigurationPre(self, process, patMetModuleSequence, pfCandCollectio pfCHS = cms.EDFilter("CandPtrSelector", src = cms.InputTag("packedPFCandidates"), cut = cms.string("fromPV(0)>0")) addToProcessAndTask("pfCHS", pfCHS, process, task) - from RecoMET.METProducers.pfMet_cfi import pfMet - pfMetCHS = pfMet.clone(src = 'pfCHS') + pfMetCHS = cms.EDProducer("PFMETProducer", + src = cms.InputTag('pfCHS'), + alias = cms.string('pfMet'), + globalThreshold = cms.double(0.0), + calculateSignificance = cms.bool(False), + ) + addToProcessAndTask("pfMetCHS", pfMetCHS, process, task) addMETCollection(process, @@ -1700,7 +1698,13 @@ def miniAODConfigurationPre(self, process, patMetModuleSequence, pfCandCollectio pfTrk = cms.EDFilter("CandPtrSelector", src = cms.InputTag("packedPFCandidates"), cut = cms.string("fromPV(0) > 0 && charge()!=0")) addToProcessAndTask("pfTrk", pfTrk, process, task) - pfMetTrk = pfMet.clone(src = 'pfTrk') + pfMetTrk = cms.EDProducer("PFMETProducer", + src = cms.InputTag('pfTrk'), + alias = cms.string('pfMet'), + globalThreshold = cms.double(0.0), + calculateSignificance = cms.bool(False), + ) + addToProcessAndTask("pfMetTrk", pfMetTrk, process, task) addMETCollection(process, diff --git a/RecoMET/Configuration/python/RecoMET_EventContent_cff.py b/RecoMET/Configuration/python/RecoMET_EventContent_cff.py index 9aef6ebfcf342..acf9382f0d406 100644 --- a/RecoMET/Configuration/python/RecoMET_EventContent_cff.py +++ b/RecoMET/Configuration/python/RecoMET_EventContent_cff.py @@ -8,8 +8,7 @@ 'keep recoCaloMETs_caloMetM_*_*', 'keep recoPFMETs_pfMet_*_*', 'keep recoPFMETs_pfChMet_*_*', - 'keep floatedmValueMap_puppiNoLep_*_*', - 'keep recoPFMETs_pfMetPuppi_*_*', + 'keep recoPFMETs_pfMetEI_*_*', 'keep recoMuonMETCorrectionDataedmValueMap_muonMETValueMapProducer_*_*', # 'drop recoHcalNoiseRBXs_*_*_*', 'keep HcalNoiseSummary_hcalnoise_*_*', diff --git a/RecoMET/Configuration/python/RecoPFMET_cff.py b/RecoMET/Configuration/python/RecoPFMET_cff.py index fadf1839d5ca2..f0494968a072c 100644 --- a/RecoMET/Configuration/python/RecoPFMET_cff.py +++ b/RecoMET/Configuration/python/RecoPFMET_cff.py @@ -1,17 +1,14 @@ import FWCore.ParameterSet.Config as cms ##____________________________________________________________________________|| -from RecoMET.METProducers.pfMet_cfi import * +from RecoMET.METProducers.PFMET_cfi import * from RecoMET.METProducers.pfChMet_cfi import * -from CommonTools.PileupAlgos.Puppi_cff import puppiNoLep -from RecoMET.METProducers.pfMetPuppi_cfi import * ##____________________________________________________________________________|| -recoPFMETTask = cms.Task(pfMet , particleFlowForChargedMET , pfChMet, puppiNoLep, pfMetPuppi) +recoPFMETTask = cms.Task(pfMet , particleFlowForChargedMET , pfChMet) recoPFMET = cms.Sequence(recoPFMETTask) ##____________________________________________________________________________|| from Configuration.Eras.Modifier_pp_on_AA_2018_cff import pp_on_AA_2018 pp_on_AA_2018.toModify(pfMet, globalThreshold = 999.) pp_on_AA_2018.toModify(pfChMet, globalThreshold = 999.) -pp_on_AA_2018.toModify(pfMetPuppi, globalThreshold = 999.) diff --git a/RecoMET/METAlgorithms/interface/METAlgo.h b/RecoMET/METAlgorithms/interface/METAlgo.h index 2e1a31ebe95b5..6522fcd979d16 100644 --- a/RecoMET/METAlgorithms/interface/METAlgo.h +++ b/RecoMET/METAlgorithms/interface/METAlgo.h @@ -21,7 +21,6 @@ #define METAlgo_h //____________________________________________________________________________|| -#include "DataFormats/Common/interface/ValueMap.h" #include "DataFormats/Candidate/interface/CandidateFwd.h" #include "DataFormats/METReco/interface/CommonMETData.h" @@ -30,9 +29,7 @@ class METAlgo { public: METAlgo() {} virtual ~METAlgo() {} - CommonMETData run(const edm::View& candidates, - double globalThreshold = 0.0, - edm::ValueMap const* weights = nullptr); + CommonMETData run(const edm::View& candidates, double globalThreshold = 0.0); }; //____________________________________________________________________________|| diff --git a/RecoMET/METAlgorithms/interface/METSignificance.h b/RecoMET/METAlgorithms/interface/METSignificance.h index 2ba6ad30ac06a..a6ac68f25ad84 100644 --- a/RecoMET/METAlgorithms/interface/METSignificance.h +++ b/RecoMET/METAlgorithms/interface/METSignificance.h @@ -45,8 +45,7 @@ namespace metsig { JME::JetResolution& resPhiObj, JME::JetResolutionScaleFactor& resSFObj, bool isRealData, - double& sumPtUnclustered, - edm::ValueMap const* weights = nullptr); + double& sumPtUnclustered); static double getSignificance(const reco::METCovMatrix& cov, const reco::MET& met); diff --git a/RecoMET/METAlgorithms/interface/PFSpecificAlgo.h b/RecoMET/METAlgorithms/interface/PFSpecificAlgo.h index bc6e6aaa23b5e..2cfc055410562 100644 --- a/RecoMET/METAlgorithms/interface/PFSpecificAlgo.h +++ b/RecoMET/METAlgorithms/interface/PFSpecificAlgo.h @@ -19,7 +19,6 @@ #define METAlgorithms_PFMETInfo_h //____________________________________________________________________________|| -#include "DataFormats/Common/interface/ValueMap.h" #include "DataFormats/Common/interface/View.h" #include "DataFormats/METReco/interface/SpecificPFMETData.h" #include "DataFormats/Candidate/interface/Candidate.h" @@ -29,7 +28,7 @@ class PFSpecificAlgo { public: PFSpecificAlgo() {} - SpecificPFMETData run(const edm::View& pfCands, edm::ValueMap const* weights = nullptr); + SpecificPFMETData run(const edm::View& pfCands); }; //____________________________________________________________________________|| diff --git a/RecoMET/METAlgorithms/src/METAlgo.cc b/RecoMET/METAlgorithms/src/METAlgo.cc index 2b93c5991ba04..5c6f58438816c 100644 --- a/RecoMET/METAlgorithms/src/METAlgo.cc +++ b/RecoMET/METAlgorithms/src/METAlgo.cc @@ -13,16 +13,12 @@ #include "DataFormats/Math/interface/LorentzVector.h" //____________________________________________________________________________|| -CommonMETData METAlgo::run(const edm::View& candidates, - double globalThreshold, - edm::ValueMap const* weights) { +CommonMETData METAlgo::run(const edm::View& candidates, double globalThreshold) { math::XYZTLorentzVector p4; - for (auto const& candPtr : candidates.ptrs()) { - const reco::Candidate* cand = candPtr.get(); - float weight = (weights != nullptr) ? (*weights)[candPtr] : 1.0; - if (!(cand->et() * weight > globalThreshold)) + for (auto cand = candidates.begin(); cand != candidates.end(); ++cand) { + if (!(cand->et() > globalThreshold)) continue; - p4 += cand->p4() * weight; + p4 += cand->p4(); } math::XYZTLorentzVector met = -p4; @@ -37,12 +33,10 @@ CommonMETData METAlgo::run(const edm::View& candidates, ret.met = met.Pt(); double et = 0.0; - for (auto const& candPtr : candidates.ptrs()) { - const reco::Candidate* cand = candPtr.get(); - float weight = (weights != nullptr) ? (*weights)[candPtr] : 1.0; - if (!(cand->et() * weight > globalThreshold)) + for (auto cand = candidates.begin(); cand != candidates.end(); ++cand) { + if (!(cand->et() > globalThreshold)) continue; - et += cand->et() * weight; + et += cand->et(); } ret.sumet = et; diff --git a/RecoMET/METAlgorithms/src/METSignificance.cc b/RecoMET/METAlgorithms/src/METSignificance.cc index ec984ba08803f..7d2ec3ff2043c 100644 --- a/RecoMET/METAlgorithms/src/METSignificance.cc +++ b/RecoMET/METAlgorithms/src/METSignificance.cc @@ -51,8 +51,7 @@ reco::METCovMatrix metsig::METSignificance::getCovariance(const edm::View const* weights) { + double& sumPtUnclustered) { //pfcandidates const edm::View* pfCandidates = pfCandidatesH.product(); @@ -88,7 +87,6 @@ reco::METCovMatrix metsig::METSignificance::getCovariance(const edm::ViewptrAt(i)) == footprint.end()) { - float weight = (weights != nullptr) ? (*weights)[pfCandidates->ptrAt(i)] : 1.0; //dP4 recovery for (const auto& it : footprint) { if ((it.isNonnull()) && (it.isAvailable()) && (reco::deltaR2(it->p4(), (*pfCandidates)[i].p4()) < 0.00000025)) { @@ -98,7 +96,7 @@ reco::METCovMatrix metsig::METSignificance::getCovariance(const edm::View& pfCands, edm::ValueMap const* weights) { +SpecificPFMETData PFSpecificAlgo::run(const edm::View& pfCands) { if (pfCands.empty()) return SpecificPFMETData(); @@ -24,13 +24,12 @@ SpecificPFMETData PFSpecificAlgo::run(const edm::View& pfCands, double type6Et = 0.0; double type7Et = 0.0; - for (auto const& pfCandPtr : pfCands.ptrs()) { - const reco::Candidate* pfCand = pfCandPtr.get(); - float weight = (weights != nullptr) ? (*weights)[pfCandPtr] : 1.0; + for (edm::View::const_iterator iPfCand = pfCands.begin(); iPfCand != pfCands.end(); ++iPfCand) { + const reco::Candidate* pfCand = dynamic_cast(&(*iPfCand)); if (!pfCand) continue; const double theta = pfCand->theta(); - const double e = pfCand->energy() * weight; + const double e = pfCand->energy(); const double et = e * sin(theta); switch (abs(pfCand->pdgId())) { case 211: diff --git a/RecoMET/METProducers/interface/METSignificanceProducer.h b/RecoMET/METProducers/interface/METSignificanceProducer.h index ea0f278275823..bf079bd53aec3 100644 --- a/RecoMET/METProducers/interface/METSignificanceProducer.h +++ b/RecoMET/METProducers/interface/METSignificanceProducer.h @@ -25,7 +25,6 @@ #include "FWCore/Framework/interface/Event.h" #include "FWCore/Framework/interface/MakerMacros.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "DataFormats/Common/interface/ValueMap.h" #include "DataFormats/Candidate/interface/Candidate.h" #include "DataFormats/Common/interface/View.h" @@ -52,15 +51,14 @@ namespace cms { private: // ----------member data --------------------------- - edm::EDGetTokenT> pfjetsToken_; - edm::EDGetTokenT> metToken_; - edm::EDGetTokenT> pfCandidatesToken_; - std::vector>> lepTokens_; + edm::EDGetTokenT > pfjetsToken_; + edm::EDGetTokenT > metToken_; + edm::EDGetTokenT > pfCandidatesToken_; + std::vector > > lepTokens_; edm::EDGetTokenT rhoToken_; std::string jetSFType_; std::string jetResPtType_; std::string jetResPhiType_; - edm::EDGetTokenT> weightsToken_; metsig::METSignificance* metSigAlgo_; }; diff --git a/RecoMET/METProducers/interface/PFMETProducer.h b/RecoMET/METProducers/interface/PFMETProducer.h index 56560a2bb1c8d..dc0b38b62d5eb 100644 --- a/RecoMET/METProducers/interface/PFMETProducer.h +++ b/RecoMET/METProducers/interface/PFMETProducer.h @@ -59,14 +59,13 @@ namespace cms { explicit PFMETProducer(const edm::ParameterSet&); ~PFMETProducer() override {} void produce(edm::Event&, const edm::EventSetup&) override; - static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); private: reco::METCovMatrix getMETCovMatrix(const edm::Event& event, const edm::EventSetup&, - const edm::Handle>& input) const; - edm::InputTag src_; - edm::EDGetTokenT> inputToken_; + const edm::Handle >& input) const; + + edm::EDGetTokenT > inputToken_; bool calculateSignificance_; metsig::METSignificance* metSigAlgo_; @@ -74,15 +73,12 @@ namespace cms { double globalThreshold_; double jetThreshold_; - edm::EDGetTokenT> jetToken_; - std::vector>> lepTokens_; + edm::EDGetTokenT > jetToken_; + std::vector > > lepTokens_; std::string jetSFType_; std::string jetResPtType_; std::string jetResPhiType_; edm::EDGetTokenT rhoToken_; - bool applyWeight_; - edm::EDGetTokenT> weightsToken_; - edm::ValueMap const* weights_; }; } // namespace cms diff --git a/RecoMET/METProducers/python/METSignificance_cfi.py b/RecoMET/METProducers/python/METSignificance_cfi.py index 4e80fcfc13fb1..c27184b8d3b77 100644 --- a/RecoMET/METProducers/python/METSignificance_cfi.py +++ b/RecoMET/METProducers/python/METSignificance_cfi.py @@ -17,7 +17,6 @@ srcJetResPt = cms.string('AK4PFchs_pt'), srcJetResPhi = cms.string('AK4PFchs_phi'), srcRho = cms.InputTag('fixedGridRhoAll'), - srcWeights = cms.InputTag(''), parameters = METSignificanceParams ) diff --git a/RecoMET/METProducers/python/PFMET_cfi.py b/RecoMET/METProducers/python/PFMET_cfi.py new file mode 100644 index 0000000000000..74cc33e00f6f3 --- /dev/null +++ b/RecoMET/METProducers/python/PFMET_cfi.py @@ -0,0 +1,11 @@ +import FWCore.ParameterSet.Config as cms + +##____________________________________________________________________________|| +pfMet = cms.EDProducer( + "PFMETProducer", + src = cms.InputTag("particleFlow"), + alias = cms.string('pfMet'), + globalThreshold = cms.double(0.0), + calculateSignificance = cms.bool(False), + ) +##____________________________________________________________________________|| diff --git a/RecoMET/METProducers/python/pfChMet_cfi.py b/RecoMET/METProducers/python/pfChMet_cfi.py index a0e77250022ba..56c349bba2353 100644 --- a/RecoMET/METProducers/python/pfChMet_cfi.py +++ b/RecoMET/METProducers/python/pfChMet_cfi.py @@ -1,5 +1,4 @@ import FWCore.ParameterSet.Config as cms -from RecoMET.METProducers.pfMet_cfi import pfMet ##____________________________________________________________________________|| particleFlowForChargedMET = cms.EDProducer( @@ -11,9 +10,12 @@ ) ##____________________________________________________________________________|| -pfChMet = pfMet.clone( - src = "particleFlowForChargedMET", - alias = 'pfChMet', +pfChMet = cms.EDProducer( + "PFMETProducer", + src = cms.InputTag("particleFlowForChargedMET"), + alias = cms.string('pfChMet'), + globalThreshold = cms.double(0.0), + calculateSignificance = cms.bool(False), ) ##____________________________________________________________________________|| diff --git a/RecoMET/METProducers/src/METSignificanceProducer.cc b/RecoMET/METProducers/src/METSignificanceProducer.cc index 90df7cc755f91..a8d3d3fac217d 100644 --- a/RecoMET/METProducers/src/METSignificanceProducer.cc +++ b/RecoMET/METProducers/src/METSignificanceProducer.cc @@ -13,25 +13,21 @@ namespace cms { //____________________________________________________________________________|| METSignificanceProducer::METSignificanceProducer(const edm::ParameterSet& iConfig) { - std::vector srcLeptonsTags = iConfig.getParameter>("srcLeptons"); + std::vector srcLeptonsTags = iConfig.getParameter >("srcLeptons"); for (std::vector::const_iterator it = srcLeptonsTags.begin(); it != srcLeptonsTags.end(); it++) { - lepTokens_.push_back(consumes>(*it)); + lepTokens_.push_back(consumes >(*it)); } - pfjetsToken_ = consumes>(iConfig.getParameter("srcPfJets")); + pfjetsToken_ = consumes >(iConfig.getParameter("srcPfJets")); - metToken_ = consumes>(iConfig.getParameter("srcMet")); - pfCandidatesToken_ = consumes>(iConfig.getParameter("srcPFCandidates")); + metToken_ = consumes >(iConfig.getParameter("srcMet")); + pfCandidatesToken_ = consumes >(iConfig.getParameter("srcPFCandidates")); jetSFType_ = iConfig.getParameter("srcJetSF"); jetResPtType_ = iConfig.getParameter("srcJetResPt"); jetResPhiType_ = iConfig.getParameter("srcJetResPhi"); rhoToken_ = consumes(iConfig.getParameter("srcRho")); - edm::InputTag srcWeights = iConfig.getParameter("srcWeights"); - if (!srcWeights.label().empty()) - weightsToken_ = consumes>(srcWeights); - metSigAlgo_ = new metsig::METSignificance(iConfig); produces("METSignificance"); @@ -45,7 +41,7 @@ namespace cms { // // met // - edm::Handle> metHandle; + edm::Handle > metHandle; event.getByToken(metToken_, metHandle); const reco::MET& met = (*metHandle)[0]; @@ -58,8 +54,8 @@ namespace cms { // // leptons // - std::vector> leptons; - for (std::vector>>::const_iterator srcLeptons_i = lepTokens_.begin(); + std::vector > leptons; + for (std::vector > >::const_iterator srcLeptons_i = lepTokens_.begin(); srcLeptons_i != lepTokens_.end(); ++srcLeptons_i) { edm::Handle leptons_i; @@ -70,16 +66,12 @@ namespace cms { // // jets // - edm::Handle> jets; + edm::Handle > jets; event.getByToken(pfjetsToken_, jets); edm::Handle rho; event.getByToken(rhoToken_, rho); - edm::Handle> weights; - if (!weightsToken_.isUninitialized()) - event.getByToken(weightsToken_, weights); - JME::JetResolution resPtObj = JME::JetResolution::get(setup, jetResPtType_); JME::JetResolution resPhiObj = JME::JetResolution::get(setup, jetResPhiType_); JME::JetResolutionScaleFactor resSFObj = JME::JetResolutionScaleFactor::get(setup, jetSFType_); @@ -88,23 +80,8 @@ namespace cms { // compute the significance // double sumPtUnclustered = 0; - const edm::ValueMap* weightsPtr = nullptr; - if (met.isWeighted()) { - if (weightsToken_.isUninitialized()) - throw cms::Exception("InvalidInput") - << "MET is weighted (e.g. PUPPI), but no weights given in METSignificanceProducer\n"; - weightsPtr = &*weights; - } - reco::METCovMatrix cov = metSigAlgo_->getCovariance(*jets, - leptons, - pfCandidates, - *rho, - resPtObj, - resPhiObj, - resSFObj, - event.isRealData(), - sumPtUnclustered, - weightsPtr); + const reco::METCovMatrix cov = metSigAlgo_->getCovariance( + *jets, leptons, pfCandidates, *rho, resPtObj, resPhiObj, resSFObj, event.isRealData(), sumPtUnclustered); double sig = metSigAlgo_->getSignificance(cov, met); auto significance = std::make_unique(); diff --git a/RecoMET/METProducers/src/PFMETProducer.cc b/RecoMET/METProducers/src/PFMETProducer.cc index 9427e9753fee7..67517138c90a0 100644 --- a/RecoMET/METProducers/src/PFMETProducer.cc +++ b/RecoMET/METProducers/src/PFMETProducer.cc @@ -7,36 +7,22 @@ //____________________________________________________________________________|| #include "RecoMET/METProducers/interface/PFMETProducer.h" -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "FWCore/ParameterSet/interface/EmptyGroupDescription.h" //____________________________________________________________________________|| namespace cms { //____________________________________________________________________________|| PFMETProducer::PFMETProducer(const edm::ParameterSet& iConfig) - : src_(iConfig.getParameter("src")), - inputToken_(consumes>(src_)), + : inputToken_(consumes >(iConfig.getParameter("src"))), calculateSignificance_(iConfig.getParameter("calculateSignificance")), - globalThreshold_(iConfig.getParameter("globalThreshold")), - applyWeight_(iConfig.getParameter("applyWeight")), - weights_(nullptr) { - if (applyWeight_) { - edm::InputTag srcWeights = iConfig.getParameter("srcWeights"); - if (srcWeights.label().empty()) - throw cms::Exception("InvalidInput") << "applyWeight set to True, but no weights given in PFMETProducer\n"; - if (srcWeights.label() == src_.label()) - edm::LogWarning("PFMETProducer") - << "Particle and weights collection have the same label. You may be applying the same weights twice.\n"; - weightsToken_ = consumes>(srcWeights); - } + globalThreshold_(iConfig.getParameter("globalThreshold")) { if (calculateSignificance_) { metSigAlgo_ = new metsig::METSignificance(iConfig); - jetToken_ = mayConsume>(iConfig.getParameter("srcJets")); - std::vector srcLeptonsTags = iConfig.getParameter>("srcLeptons"); + jetToken_ = mayConsume >(iConfig.getParameter("srcJets")); + std::vector srcLeptonsTags = iConfig.getParameter >("srcLeptons"); for (std::vector::const_iterator it = srcLeptonsTags.begin(); it != srcLeptonsTags.end(); it++) { - lepTokens_.push_back(mayConsume>(*it)); + lepTokens_.push_back(mayConsume >(*it)); } jetSFType_ = iConfig.getParameter("srcJetSF"); @@ -52,25 +38,19 @@ namespace cms { //____________________________________________________________________________|| void PFMETProducer::produce(edm::Event& event, const edm::EventSetup& setup) { - edm::Handle> input; + edm::Handle > input; event.getByToken(inputToken_, input); - if (applyWeight_) - weights_ = &event.get(weightsToken_); - METAlgo algo; - CommonMETData commonMETdata; - commonMETdata = algo.run(*input.product(), globalThreshold_, weights_); + CommonMETData commonMETdata = algo.run(*input.product(), globalThreshold_); const math::XYZTLorentzVector p4(commonMETdata.mex, commonMETdata.mey, 0.0, commonMETdata.met); const math::XYZPoint vtx(0.0, 0.0, 0.0); PFSpecificAlgo pf; - SpecificPFMETData specific; - specific = pf.run(*input.product(), weights_); + SpecificPFMETData specific = pf.run(*input.product()); reco::PFMET pfmet(specific, commonMETdata.sumet, p4, vtx); - pfmet.setIsWeighted(applyWeight_); if (calculateSignificance_) { reco::METCovMatrix sigcov = getMETCovMatrix(event, setup, input); @@ -85,10 +65,10 @@ namespace cms { reco::METCovMatrix PFMETProducer::getMETCovMatrix(const edm::Event& event, const edm::EventSetup& setup, - const edm::Handle>& candInput) const { + const edm::Handle >& candInput) const { // leptons - std::vector> leptons; - for (std::vector>>::const_iterator srcLeptons_i = lepTokens_.begin(); + std::vector > leptons; + for (std::vector > >::const_iterator srcLeptons_i = lepTokens_.begin(); srcLeptons_i != lepTokens_.end(); ++srcLeptons_i) { edm::Handle leptons_i; @@ -103,7 +83,7 @@ namespace cms { } // jets - edm::Handle> inputJets; + edm::Handle > inputJets; event.getByToken(jetToken_, inputJets); JME::JetResolution resPtObj = JME::JetResolution::get(setup, jetResPtType_); @@ -115,45 +95,12 @@ namespace cms { //Compute the covariance matrix and fill it double sumPtUnclustered = 0; - reco::METCovMatrix cov = metSigAlgo_->getCovariance(*inputJets, - leptons, - candInput, - *rho, - resPtObj, - resPhiObj, - resSFObj, - event.isRealData(), - sumPtUnclustered, - weights_); + reco::METCovMatrix cov = metSigAlgo_->getCovariance( + *inputJets, leptons, candInput, *rho, resPtObj, resPhiObj, resSFObj, event.isRealData(), sumPtUnclustered); return cov; } - void PFMETProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { - edm::ParameterSetDescription desc; - desc.add("src", edm::InputTag("particleFlow")); - desc.add("globalThreshold", 0.); - desc.add("alias", "@module_label"); - desc.add("calculateSignificance", false); - desc.addOptional("srcJets"); - desc.addOptional>("srcLeptons"); - desc.addOptional("srcJetSF"); - desc.addOptional("srcJetResPt"); - desc.addOptional("srcJetResPhi"); - desc.addOptional("srcRho"); - edm::ParameterSetDescription params; - params.setAllowAnything(); // FIXME: This still needs to be defined in METSignficance - desc.addOptional("parameters", params); - edm::ParameterSetDescription desc1 = desc; - edm::ParameterSetDescription desc2 = desc; - desc1.add("applyWeight", false); - desc1.add("srcWeights", edm::InputTag("")); - descriptions.add("pfMet", desc1); - desc2.add("applyWeight", true); - desc2.add("srcWeights", edm::InputTag("puppiNoLep")); - descriptions.add("pfMetPuppi", desc2); - } - //____________________________________________________________________________|| DEFINE_FWK_MODULE(PFMETProducer); } // namespace cms diff --git a/RecoMET/METProducers/test/recoMET_pfMet_cfg.py b/RecoMET/METProducers/test/recoMET_pfMet_cfg.py index b16a9d1d529e6..2d52bf34627ae 100644 --- a/RecoMET/METProducers/test/recoMET_pfMet_cfg.py +++ b/RecoMET/METProducers/test/recoMET_pfMet_cfg.py @@ -7,7 +7,7 @@ process.load("FWCore.MessageLogger.MessageLogger_cfi") ##____________________________________________________________________________|| -process.load("RecoMET/METProducers.pfMet_cfi") +process.load("RecoMET/METProducers.PFMET_cfi") process.load("RecoMET/METProducers.METSignificanceParams_cfi") process.load("RecoMET/METProducers.METSignificanceObjects_cfi")