From 01f7cf75af4e368afebfe79086cb35417eb74824 Mon Sep 17 00:00:00 2001 From: Andreas Hinzmann Date: Thu, 6 Jan 2022 15:36:13 +0100 Subject: [PATCH] CHS and PUPPI track-vertex-association for Run3 --- .../ParticleFlow/plugins/PFNoPileUpPacked.cc | 91 ------------------- CommonTools/ParticleFlow/plugins/PFPileUp.cc | 8 +- CommonTools/ParticleFlow/python/pfCHS_cff.py | 19 ++-- .../ParticleFlow/python/pfNoPileUpJME_cff.py | 39 ++++---- .../ParticleFlow/python/pfPileUp_cfi.py | 2 + .../PileupAlgos/plugins/PuppiProducer.cc | 15 ++- CommonTools/PileupAlgos/python/Puppi_cff.py | 15 ++- .../interface/PrimaryVertexAssignment.h | 4 +- .../python/sortedPFPrimaryVertices_cfi.py | 2 +- .../python/sortedPrimaryVertices_cfi.py | 2 +- .../RecoAlgos/src/PrimaryVertexAssignment.cc | 16 ++-- .../PatAlgos/python/slimming/miniAOD_tools.py | 1 - .../python/slimming/puppiForMET_cff.py | 7 +- .../python/tools/jetCollectionTools.py | 6 +- .../test/miniAOD/example_jet_and_met.py | 1 - .../runMETCorrectionsAndUncertainties.py | 9 +- RecoMET/Configuration/python/RecoPFMET_cff.py | 3 +- 17 files changed, 73 insertions(+), 167 deletions(-) delete mode 100644 CommonTools/ParticleFlow/plugins/PFNoPileUpPacked.cc diff --git a/CommonTools/ParticleFlow/plugins/PFNoPileUpPacked.cc b/CommonTools/ParticleFlow/plugins/PFNoPileUpPacked.cc deleted file mode 100644 index 5a94c6cd3bb0b..0000000000000 --- a/CommonTools/ParticleFlow/plugins/PFNoPileUpPacked.cc +++ /dev/null @@ -1,91 +0,0 @@ -// system include files -#include -#include - -// user include files -#include "FWCore/Framework/interface/Frameworkfwd.h" -#include "FWCore/Framework/interface/stream/EDProducer.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" - -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/MakerMacros.h" - -#include "DataFormats/Candidate/interface/Candidate.h" -#include "DataFormats/VertexReco/interface/VertexFwd.h" -#include "DataFormats/Common/interface/Association.h" - -#include "DataFormats/VertexReco/interface/Vertex.h" - -#include "FWCore/Utilities/interface/Exception.h" -#include "FWCore/Framework/interface/EventSetup.h" - -#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" -#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" - -using namespace std; -using namespace edm; -using namespace reco; - -/**\class PFNoPileUpPacked -\brief Identifies pile-up candidates from a collection of Candidates, and -produces the corresponding collection of NoPileUpCandidates. - -\author Andreas Hinzmann -\date May 2021 - -*/ - -class PFNoPileUpPacked : public edm::stream::EDProducer<> { -public: - typedef edm::View CandidateView; - typedef edm::Association CandToVertex; - - explicit PFNoPileUpPacked(const edm::ParameterSet&); - - ~PFNoPileUpPacked() override = default; - - void produce(edm::Event&, const edm::EventSetup&) override; - - static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); - -private: - edm::EDGetTokenT tokenCandidatesView_; - edm::EDGetTokenT tokenVertices_; - edm::EDGetTokenT tokenVertexAssociation_; - edm::EDGetTokenT> tokenVertexAssociationQuality_; - int vertexAssociationQuality_; -}; - -PFNoPileUpPacked::PFNoPileUpPacked(const edm::ParameterSet& iConfig) { - tokenCandidatesView_ = consumes(iConfig.getParameter("candidates")); - vertexAssociationQuality_ = iConfig.getParameter("vertexAssociationQuality"); - tokenVertexAssociation_ = consumes(iConfig.getParameter("vertexAssociation")); - tokenVertexAssociationQuality_ = - consumes>(iConfig.getParameter("vertexAssociation")); - produces>(); -} - -void PFNoPileUpPacked::produce(Event& iEvent, const EventSetup& iSetup) { - unique_ptr> pOutput(new edm::PtrVector); - Handle candidateView; - iEvent.getByToken(tokenCandidatesView_, candidateView); - const edm::Association& associatedPV = iEvent.get(tokenVertexAssociation_); - const edm::ValueMap& associationQuality = iEvent.get(tokenVertexAssociationQuality_); - for (const auto& p : candidateView->ptrs()) { - const reco::VertexRef& PVOrig = associatedPV[p]; - int quality = associationQuality[p]; - if (!(PVOrig.isNonnull() && (PVOrig.key() > 0) && (quality >= vertexAssociationQuality_))) - pOutput->push_back(p); - } - iEvent.put(std::move(pOutput)); -} - -void PFNoPileUpPacked::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { - edm::ParameterSetDescription desc; - desc.add("candidates", edm::InputTag("packedPFCandidates")); - desc.add("vertexAssociationQuality", 7); - desc.add("vertexAssociation", edm::InputTag("packedPrimaryVertexAssociationJME", "original")); - descriptions.addWithDefaultLabel(desc); -} - -DEFINE_FWK_MODULE(PFNoPileUpPacked); \ No newline at end of file diff --git a/CommonTools/ParticleFlow/plugins/PFPileUp.cc b/CommonTools/ParticleFlow/plugins/PFPileUp.cc index 35b328035eda6..dddc6a6c21d7a 100644 --- a/CommonTools/ParticleFlow/plugins/PFPileUp.cc +++ b/CommonTools/ParticleFlow/plugins/PFPileUp.cc @@ -76,6 +76,8 @@ class PFPileUp : public edm::stream::EDProducer<> { edm::EDGetTokenT> tokenVertexAssociationQuality_; bool fUseVertexAssociation; int vertexAssociationQuality_; + unsigned int fNumOfPUVtxsForCharged_; + double fDzCutForChargedFromPUVtxs_; }; PFPileUp::PFPileUp(const edm::ParameterSet& iConfig) { @@ -91,6 +93,8 @@ PFPileUp::PFPileUp(const edm::ParameterSet& iConfig) { tokenVertexAssociationQuality_ = consumes>(iConfig.getParameter("vertexAssociation")); } + fNumOfPUVtxsForCharged_ = iConfig.getParameter("NumOfPUVtxsForCharged"); + fDzCutForChargedFromPUVtxs_ = iConfig.getParameter("DzCutForChargedFromPUVtxs"); enable_ = iConfig.getParameter("Enable"); @@ -172,7 +176,9 @@ void PFPileUp::produce(Event& iEvent, const EventSetup& iSetup) { for (auto& p : (*pfCandidatesRef)) { const reco::VertexRef& PVOrig = associatedPV[p]; int quality = associationQuality[p]; - if (PVOrig.isNonnull() && (PVOrig.key() > 0) && (quality >= vertexAssociationQuality_)) + if ((PVOrig.isNonnull() && PVOrig.key() > 0 && PVOrig->ndof() > 4.0 && quality >= vertexAssociationQuality_) && + (!(fNumOfPUVtxsForCharged_ > 0 && !vertices->empty() && PVOrig.key() <= fNumOfPUVtxsForCharged_ && + std::abs(p->vertex().z() - vertices->at(0).z()) < fDzCutForChargedFromPUVtxs_))) pfCandidatesFromPU.push_back(p); } pOutput->insert(pOutput->end(), pfCandidatesFromPU.begin(), pfCandidatesFromPU.end()); diff --git a/CommonTools/ParticleFlow/python/pfCHS_cff.py b/CommonTools/ParticleFlow/python/pfCHS_cff.py index 23dba83b7fa79..4a4ec9817aea7 100644 --- a/CommonTools/ParticleFlow/python/pfCHS_cff.py +++ b/CommonTools/ParticleFlow/python/pfCHS_cff.py @@ -1,15 +1,10 @@ import FWCore.ParameterSet.Config as cms -from CommonTools.ParticleFlow.pfNoPileUpJME_cff import adapt, pfPileUpJME -from CommonTools.RecoAlgos.sortedPackedPrimaryVertices_cfi import sortedPackedPrimaryVertices +from CommonTools.ParticleFlow.pfNoPileUpJME_cff import primaryVertexAssociationJME -packedPrimaryVertexAssociationJME = sortedPackedPrimaryVertices.clone( - produceSortedVertices = False, - producePileUpCollection = False, - produceNoPileUpCollection = False -) -adapt(packedPrimaryVertexAssociationJME) - -from CommonTools.ParticleFlow.pfNoPileUpPacked_cfi import pfNoPileUpPacked as _pfNoPileUpPacked -pfCHS = _pfNoPileUpPacked.clone( - vertexAssociationQuality=pfPileUpJME.vertexAssociationQuality +pfCHS = cms.EDFilter("CandPtrSelector", + src = cms.InputTag("packedPFCandidates"), + cut = cms.string("fromPV(0)>0"+\ + " || (vertexRef().key<="+str(primaryVertexAssociationJME.assignment.NumOfPUVtxsForCharged.value())+" && "+\ + "abs(dz(0))<"+str(primaryVertexAssociationJME.assignment.DzCutForChargedFromPUVtxs.value())+")" + ) ) diff --git a/CommonTools/ParticleFlow/python/pfNoPileUpJME_cff.py b/CommonTools/ParticleFlow/python/pfNoPileUpJME_cff.py index caad529298bd3..0ed34d5f60065 100644 --- a/CommonTools/ParticleFlow/python/pfNoPileUpJME_cff.py +++ b/CommonTools/ParticleFlow/python/pfNoPileUpJME_cff.py @@ -5,35 +5,36 @@ from CommonTools.ParticleFlow.goodOfflinePrimaryVertices_cfi import goodOfflinePrimaryVertices from CommonTools.RecoAlgos.primaryVertexAssociation_cfi import primaryVertexAssociation -def adapt(primaryVertexAssociationJME): - # options for quality PrimaryDz = 6 (used in PUPPI) - primaryVertexAssociationJME.assignment.maxDzSigForPrimaryAssignment = 1e10 - primaryVertexAssociationJME.assignment.maxDzForPrimaryAssignment = 0.3 - primaryVertexAssociationJME.assignment.maxDzErrorForPrimaryAssignment = 1e10 - primaryVertexAssociationJME.assignment.NumOfPUVtxsForCharged = 2 - primaryVertexAssociationJME.assignment.PtMaxCharged = 20. - primaryVertexAssociationJME.assignment.EtaMinUseDz = 2.4 - primaryVertexAssociationJME.assignment.OnlyUseFirstDz = True - from Configuration.Eras.Modifier_phase2_common_cff import phase2_common - phase2_common.toModify( - primaryVertexAssociationJME.assignment, - maxDzForPrimaryAssignment=0.1, - EtaMinUseDz = 4.0 - ) +# The following module implements vertex association for JME. +# It is not run by default to save computing time (but can be run to investigate alternative vertex identification criteria). +# Instead its parameters are used as input to faster implementations in pfPileUpJME and pfCHS and puppi. primaryVertexAssociationJME = primaryVertexAssociation.clone(vertices = 'goodOfflinePrimaryVertices') -adapt(primaryVertexAssociationJME) +primaryVertexAssociationJME.assignment.maxDzSigForPrimaryAssignment = 1e10 +primaryVertexAssociationJME.assignment.maxDzForPrimaryAssignment = 0.3 +primaryVertexAssociationJME.assignment.maxDzErrorForPrimaryAssignment = 1e10 +primaryVertexAssociationJME.assignment.NumOfPUVtxsForCharged = 2 +primaryVertexAssociationJME.assignment.DzCutForChargedFromPUVtxs = 0.2 +primaryVertexAssociationJME.assignment.PtMaxCharged = 20. +primaryVertexAssociationJME.assignment.EtaMinUseDz = 2.4 +primaryVertexAssociationJME.assignment.OnlyUseFirstDz = True +from Configuration.Eras.Modifier_phase2_common_cff import phase2_common +phase2_common.toModify( + primaryVertexAssociationJME.assignment, + maxDzForPrimaryAssignment=0.1, + EtaMinUseDz = 4.0 + ) pfPileUpJME = _pfPileUp.clone(PFCandidates='particleFlowPtrs', useVertexAssociation = True, vertexAssociationQuality = 7, - vertexAssociation = ('primaryVertexAssociationJME','original'), + vertexAssociation = ('primaryVertexAssociation','original'), + NumOfPUVtxsForCharged = primaryVertexAssociationJME.assignment.NumOfPUVtxsForCharged, + DzCutForChargedFromPUVtxs = primaryVertexAssociationJME.assignment.DzCutForChargedFromPUVtxs, ) pfNoPileUpJME = _pfNoPileUp.clone(topCollection = 'pfPileUpJME', bottomCollection = 'particleFlowPtrs' ) pfNoPileUpJMETask = cms.Task( - goodOfflinePrimaryVertices, - primaryVertexAssociationJME, pfPileUpJME, pfNoPileUpJME ) diff --git a/CommonTools/ParticleFlow/python/pfPileUp_cfi.py b/CommonTools/ParticleFlow/python/pfPileUp_cfi.py index 025d6479ad2eb..c29b37d6738cb 100644 --- a/CommonTools/ParticleFlow/python/pfPileUp_cfi.py +++ b/CommonTools/ParticleFlow/python/pfPileUp_cfi.py @@ -12,4 +12,6 @@ useVertexAssociation = cms.bool(False), vertexAssociationQuality = cms.int32(0), vertexAssociation = cms.InputTag(''), + NumOfPUVtxsForCharged = cms.uint32(0), + DzCutForChargedFromPUVtxs = cms.double(0.2), ) diff --git a/CommonTools/PileupAlgos/plugins/PuppiProducer.cc b/CommonTools/PileupAlgos/plugins/PuppiProducer.cc index 0d6c3bdfda83b..0c55932e27832 100644 --- a/CommonTools/PileupAlgos/plugins/PuppiProducer.cc +++ b/CommonTools/PileupAlgos/plugins/PuppiProducer.cc @@ -72,6 +72,7 @@ class PuppiProducer : public edm::stream::EDProducer<> { bool fPuppiNoLep; bool fUseFromPVLooseTight; bool fUseDZ; + bool fUseDZforPileup; double fDZCut; double fEtaMinUseDZ; double fPtMaxCharged; @@ -95,6 +96,7 @@ PuppiProducer::PuppiProducer(const edm::ParameterSet& iConfig) { fPuppiNoLep = iConfig.getParameter("puppiNoLep"); fUseFromPVLooseTight = iConfig.getParameter("UseFromPVLooseTight"); fUseDZ = iConfig.getParameter("UseDeltaZCut"); + fUseDZforPileup = iConfig.getParameter("UseDeltaZCutForPileup"); fDZCut = iConfig.getParameter("DeltaZCut"); fEtaMinUseDZ = iConfig.getParameter("EtaMinUseDeltaZ"); fPtMaxCharged = iConfig.getParameter("PtMaxCharged"); @@ -281,8 +283,10 @@ void PuppiProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { pReco.id = 1; else if (std::abs(pReco.eta) > fEtaMaxCharged) pReco.id = 1; - else if ((fUseDZ) && (std::abs(pReco.eta) >= fEtaMinUseDZ)) - pReco.id = (std::abs(pDZ) < fDZCut) ? 1 : 2; + else if ((fUseDZ) && (std::abs(pReco.eta) >= fEtaMinUseDZ) && (std::abs(pDZ) < fDZCut)) + pReco.id = 1; + else if ((fUseDZforPileup) && (std::abs(pReco.eta) >= fEtaMinUseDZ) && (std::abs(pDZ) >= fDZCut)) + pReco.id = 2; else if (fUseFromPVLooseTight && tmpFromPV == 1) pReco.id = 2; else if (fUseFromPVLooseTight && tmpFromPV == 2) @@ -322,8 +326,10 @@ void PuppiProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { pReco.id = 1; else if (std::abs(pReco.eta) > fEtaMaxCharged) pReco.id = 1; - else if ((fUseDZ) && (std::abs(pReco.eta) >= fEtaMinUseDZ)) - pReco.id = (std::abs(pDZ) < fDZCut) ? 1 : 2; + else if ((fUseDZ) && (std::abs(pReco.eta) >= fEtaMinUseDZ) && (std::abs(pDZ) < fDZCut)) + pReco.id = 1; + else if ((fUseDZforPileup) && (std::abs(pReco.eta) >= fEtaMinUseDZ) && (std::abs(pDZ) >= fDZCut)) + pReco.id = 2; else if (fUseFromPVLooseTight && lPack->fromPV() == (pat::PackedCandidate::PVLoose)) pReco.id = 2; else if (fUseFromPVLooseTight && lPack->fromPV() == (pat::PackedCandidate::PVTight)) @@ -489,6 +495,7 @@ void PuppiProducer::fillDescriptions(edm::ConfigurationDescriptions& description desc.add("puppiNoLep", false); desc.add("UseFromPVLooseTight", false); desc.add("UseDeltaZCut", true); + desc.add("UseDeltaZCutForPileup", true); desc.add("DeltaZCut", 0.3); desc.add("EtaMinUseDeltaZ", 0.); desc.add("PtMaxCharged", -1.); diff --git a/CommonTools/PileupAlgos/python/Puppi_cff.py b/CommonTools/PileupAlgos/python/Puppi_cff.py index 9943d59afe49b..e3d50c1510fd1 100644 --- a/CommonTools/PileupAlgos/python/Puppi_cff.py +++ b/CommonTools/PileupAlgos/python/Puppi_cff.py @@ -25,15 +25,16 @@ ) # from cfipython/, generated by PuppiProducer::fillDescriptions +from CommonTools.ParticleFlow.pfNoPileUpJME_cff import primaryVertexAssociationJME import CommonTools.PileupAlgos.PuppiProducer_cfi as _mod puppi = _mod.PuppiProducer.clone( - EtaMinUseDeltaZ = 2.4, - NumOfPUVtxsForCharged = 2, - PtMaxCharged = 20., + UseDeltaZCutForPileup = False, + DeltaZCut = primaryVertexAssociationJME.assignment.maxDzForPrimaryAssignment, + EtaMinUseDeltaZ = primaryVertexAssociationJME.assignment.EtaMinUseDz, + PtMaxCharged = primaryVertexAssociationJME.assignment.PtMaxCharged, + NumOfPUVtxsForCharged = primaryVertexAssociationJME.assignment.NumOfPUVtxsForCharged, + DeltaZCutForChargedFromPUVtxs = primaryVertexAssociationJME.assignment.DzCutForChargedFromPUVtxs, PtMaxNeutralsStartSlope = 20., - useVertexAssociation = True, - vertexAssociationQuality = 6, - vertexAssociation = ('primaryVertexAssociationJME','original'), clonePackedCands = False, # should only be set to True for MiniAOD algos = { 0: dict( @@ -99,8 +100,6 @@ from Configuration.ProcessModifiers.pp_on_AA_cff import pp_on_AA pp_on_AA.toModify(puppi, algos = []) -from Configuration.ProcessModifiers.run2_miniAOD_pp_on_AA_103X_cff import run2_miniAOD_pp_on_AA_103X -run2_miniAOD_pp_on_AA_103X.toModify(puppi,useVertexAssociation = False) # because the association is only run on cleanedParticleFlow puppiNoLep = puppi.clone( puppiNoLep = True, diff --git a/CommonTools/RecoAlgos/interface/PrimaryVertexAssignment.h b/CommonTools/RecoAlgos/interface/PrimaryVertexAssignment.h index 011ee2ecee2d2..67b29bfcb6406 100644 --- a/CommonTools/RecoAlgos/interface/PrimaryVertexAssignment.h +++ b/CommonTools/RecoAlgos/interface/PrimaryVertexAssignment.h @@ -44,7 +44,7 @@ class PrimaryVertexAssignment { useTiming_(iConfig.getParameter("useTiming")), useVertexFit_(iConfig.getParameter("useVertexFit")), preferHighRanked_(iConfig.getParameter("preferHighRanked")), - fNumOfPUVtxsForCharged_(iConfig.getParameter("NumOfPUVtxsForCharged")), + fNumOfPUVtxsForCharged_(iConfig.getParameter("NumOfPUVtxsForCharged")), fDzCutForChargedFromPUVtxs_(iConfig.getParameter("DzCutForChargedFromPUVtxs")), fPtMaxCharged_(iConfig.getParameter("PtMaxCharged")), fEtaMinUseDz_(iConfig.getParameter("EtaMinUseDz")), @@ -154,7 +154,7 @@ class PrimaryVertexAssignment { bool useTiming_; bool useVertexFit_; bool preferHighRanked_; - int fNumOfPUVtxsForCharged_; + unsigned int fNumOfPUVtxsForCharged_; double fDzCutForChargedFromPUVtxs_; double fPtMaxCharged_; double fEtaMinUseDz_; diff --git a/CommonTools/RecoAlgos/python/sortedPFPrimaryVertices_cfi.py b/CommonTools/RecoAlgos/python/sortedPFPrimaryVertices_cfi.py index 1e446422fb1e1..3bbd0ad4697ca 100644 --- a/CommonTools/RecoAlgos/python/sortedPFPrimaryVertices_cfi.py +++ b/CommonTools/RecoAlgos/python/sortedPFPrimaryVertices_cfi.py @@ -22,7 +22,7 @@ preferHighRanked = cms.bool(False), #options used in PUPPI - NumOfPUVtxsForCharged = cms.int32(-1), + NumOfPUVtxsForCharged = cms.uint32(0), DzCutForChargedFromPUVtxs = cms.double(0.2), PtMaxCharged = cms.double(-1), EtaMinUseDz = cms.double(-1), diff --git a/CommonTools/RecoAlgos/python/sortedPrimaryVertices_cfi.py b/CommonTools/RecoAlgos/python/sortedPrimaryVertices_cfi.py index 57be0713ca862..92c387d0dcf1c 100644 --- a/CommonTools/RecoAlgos/python/sortedPrimaryVertices_cfi.py +++ b/CommonTools/RecoAlgos/python/sortedPrimaryVertices_cfi.py @@ -22,7 +22,7 @@ preferHighRanked = cms.bool(False), #options used in PUPPI - NumOfPUVtxsForCharged = cms.int32(-1), + NumOfPUVtxsForCharged = cms.uint32(0), DzCutForChargedFromPUVtxs = cms.double(0.2), PtMaxCharged = cms.double(-1), EtaMinUseDz = cms.double(-1), diff --git a/CommonTools/RecoAlgos/src/PrimaryVertexAssignment.cc b/CommonTools/RecoAlgos/src/PrimaryVertexAssignment.cc index 230a336d4d4e3..4c306b1bb574a 100644 --- a/CommonTools/RecoAlgos/src/PrimaryVertexAssignment.cc +++ b/CommonTools/RecoAlgos/src/PrimaryVertexAssignment.cc @@ -71,7 +71,7 @@ std::pair PrimaryVertexAssignment::charge if (!vertices.empty()) firstVertexDz = std::abs(track->dz(vertices.at(0).position())); // recover cases where the primary vertex is split - if (useVertexFit_ && (iVertex > 0) && (iVertex <= fNumOfPUVtxsForCharged_) && + if (useVertexFit_ && (iVertex > 0) && (iVertex <= int(fNumOfPUVtxsForCharged_)) && firstVertexDz < fDzCutForChargedFromPUVtxs_) return {0, PrimaryVertexAssignment::PrimaryDz}; @@ -121,14 +121,12 @@ std::pair PrimaryVertexAssignment::charge (!useTime or dtmin / timeReso < maxDtSigForPrimaryAssignment_)) iVertex = vtxIdMinSignif; } else { - // consider only distances to first vertex for association of pileup vertices (originally used in PUPPI) - if ((vtxIdMinSignif >= 0) && (std::abs(track->eta()) > fEtaMinUseDz_)) - iVertex = - ((firstVertexDz < maxDzForPrimaryAssignment_ and firstVertexDz / dzE < maxDzSigForPrimaryAssignment_ and - track->dzError() < maxDzErrorForPrimaryAssignment_) and - (!useTime or std::abs(time - vertices.at(0).t()) / timeReso < maxDtSigForPrimaryAssignment_)) - ? 0 - : vtxIdMinSignif; + // consider only distances to first vertex for association (originally used in PUPPI) + if ((vtxIdMinSignif >= 0) && (std::abs(track->eta()) > fEtaMinUseDz_) and + ((firstVertexDz < maxDzForPrimaryAssignment_ and firstVertexDz / dzE < maxDzSigForPrimaryAssignment_ and + track->dzError() < maxDzErrorForPrimaryAssignment_) and + (!useTime or std::abs(time - vertices.at(0).t()) / timeReso < maxDtSigForPrimaryAssignment_))) + iVertex = 0; } } diff --git a/PhysicsTools/PatAlgos/python/slimming/miniAOD_tools.py b/PhysicsTools/PatAlgos/python/slimming/miniAOD_tools.py index f4ee51a85d229..e906592e1d5ea 100644 --- a/PhysicsTools/PatAlgos/python/slimming/miniAOD_tools.py +++ b/PhysicsTools/PatAlgos/python/slimming/miniAOD_tools.py @@ -199,7 +199,6 @@ def _add_slimmedMETsNoHF(process): # ================== CHSMET process.load("CommonTools.ParticleFlow.pfCHS_cff") - task.add(process.packedPrimaryVertexAssociationJME) task.add(process.pfCHS) from RecoMET.METProducers.pfMet_cfi import pfMet diff --git a/PhysicsTools/PatAlgos/python/slimming/puppiForMET_cff.py b/PhysicsTools/PatAlgos/python/slimming/puppiForMET_cff.py index 2d26c02350157..968a1505c78b6 100644 --- a/PhysicsTools/PatAlgos/python/slimming/puppiForMET_cff.py +++ b/PhysicsTools/PatAlgos/python/slimming/puppiForMET_cff.py @@ -12,26 +12,21 @@ def makePuppies( process ): def makePuppiesFromMiniAOD( process, createScheduledSequence=False ): task = getPatAlgosToolsTask(process) - from CommonTools.ParticleFlow.pfCHS_cff import packedPrimaryVertexAssociationJME - setattr(process, "packedPrimaryVertexAssociationJME", packedPrimaryVertexAssociationJME.clone()) - task.add(process.packedPrimaryVertexAssociationJME) process.load('CommonTools.PileupAlgos.Puppi_cff') task.add(process.puppi) process.puppi.candName = 'packedPFCandidates' process.puppi.clonePackedCands = True process.puppi.vertexName = 'offlineSlimmedPrimaryVertices' process.puppi.useExistingWeights = True - process.puppi.vertexAssociation = 'packedPrimaryVertexAssociationJME:original' task.add(process.puppiNoLep) process.puppiNoLep.candName = 'packedPFCandidates' process.puppiNoLep.clonePackedCands = True process.puppiNoLep.vertexName = 'offlineSlimmedPrimaryVertices' process.puppiNoLep.useExistingWeights = True - process.puppiNoLep.vertexAssociation = 'packedPrimaryVertexAssociationJME:original' #making a sequence for people running the MET tool in scheduled mode if createScheduledSequence: - puppiMETTask = cms.Task(process.packedPrimaryVertexAssociationJME, process.puppi, process.puppiNoLep) + puppiMETTask = cms.Task(process.puppi, process.puppiNoLep) setattr(process, "puppiMETTask", puppiMETTask) puppiMETSequence = cms.Sequence(puppiMETTask) setattr(process, "puppiMETSequence", puppiMETSequence) diff --git a/PhysicsTools/PatAlgos/python/tools/jetCollectionTools.py b/PhysicsTools/PatAlgos/python/tools/jetCollectionTools.py index 01d00edfec39b..066c0ef798575 100644 --- a/PhysicsTools/PatAlgos/python/tools/jetCollectionTools.py +++ b/PhysicsTools/PatAlgos/python/tools/jetCollectionTools.py @@ -282,10 +282,8 @@ def addRecoJetCollection(self, # CHS # elif recoJetInfo.jetPUMethod == "chs": - from CommonTools.ParticleFlow.pfCHS_cff import pfCHS, packedPrimaryVertexAssociationJME - self.addProcessAndTask(proc, "packedPrimaryVertexAssociationJME", packedPrimaryVertexAssociationJME.clone()) - self.prerequisites.append("packedPrimaryVertexAssociationJME") - self.addProcessAndTask(proc, pfCand, pfCHS.clone()) + self.addProcessAndTask(proc, pfCand, pfCHS.clone( + src = self.pfLabel)) self.prerequisites.append(pfCand) # # PUPPI diff --git a/PhysicsTools/PatAlgos/test/miniAOD/example_jet_and_met.py b/PhysicsTools/PatAlgos/test/miniAOD/example_jet_and_met.py index 7aa247e8cf60b..d65ed9c3f6651 100644 --- a/PhysicsTools/PatAlgos/test/miniAOD/example_jet_and_met.py +++ b/PhysicsTools/PatAlgos/test/miniAOD/example_jet_and_met.py @@ -20,7 +20,6 @@ from RecoMET.METProducers.pfMet_cfi import pfMet process.load("CommonTools.ParticleFlow.pfCHS_cff") -task.add(process.packedPrimaryVertexAssociationJME) task.add(process.pfCHS) process.ak5PFJets = ak5PFJets.clone(src = 'packedPFCandidates', doAreaFastjet = True) # no idea while doArea is false by default, but it's True in RECO so we have to set it diff --git a/PhysicsTools/PatUtils/python/tools/runMETCorrectionsAndUncertainties.py b/PhysicsTools/PatUtils/python/tools/runMETCorrectionsAndUncertainties.py index 9f29952e5687b..91ff1e59c1d4e 100644 --- a/PhysicsTools/PatUtils/python/tools/runMETCorrectionsAndUncertainties.py +++ b/PhysicsTools/PatUtils/python/tools/runMETCorrectionsAndUncertainties.py @@ -1601,13 +1601,14 @@ def ak4JetReclustering(self,process, pfCandCollection, patMetModuleSequence, pos cms.EDProducer("PFCandidateFwdPtrProducer", src = pfCandCollection ), process, task) + addToProcessAndTask('primaryVertexAssociation'+postfix, + process.primaryVertexAssociation.clone(particles = pfCandCollection), process, task) process.load("CommonTools.ParticleFlow.pfNoPileUpJME_cff") task.add(process.pfNoPileUpJMETask) configtools.cloneProcessingSnippet(process, getattr(process,"pfNoPileUpJMESequence"), postfix, addToTask = True ) - getattr(process, "primaryVertexAssociationJME"+postfix).particles = pfCandCollection getattr(process, "pfPileUpJME"+postfix).PFCandidates = "tmpPFCandCollPtr"+postfix getattr(process, "pfNoPileUpJME"+postfix).bottomCollection = "tmpPFCandCollPtr"+postfix - getattr(process, "pfPileUpJME"+postfix).vertexAssociation = 'primaryVertexAssociationJME'+postfix+':original' + getattr(process, "pfPileUpJME"+postfix).vertexAssociation = 'primaryVertexAssociation'+postfix+':original' pfCandColl = "pfNoPileUpJME"+postfix patMetModuleSequence += getattr(process, "tmpPFCandCollPtr"+postfix) patMetModuleSequence += getattr(process, "pfNoPileUpJME"+postfix) @@ -1697,9 +1698,7 @@ def miniAODConfigurationPre(self, process, patMetModuleSequence, pfCandCollectio ##adding the necessary chs and track met configuration task = getPatAlgosToolsTask(process) - from CommonTools.ParticleFlow.pfCHS_cff import pfCHS, packedPrimaryVertexAssociationJME - addToProcessAndTask("packedPrimaryVertexAssociationJME",packedPrimaryVertexAssociationJME.clone(), process, task) - patMetModuleSequence += getattr(process, "packedPrimaryVertexAssociationJME") + from CommonTools.ParticleFlow.pfCHS_cff import pfCHS addToProcessAndTask("pfCHS", pfCHS.clone(), process, task) from RecoMET.METProducers.pfMet_cfi import pfMet pfMetCHS = pfMet.clone(src = "pfCHS") diff --git a/RecoMET/Configuration/python/RecoPFMET_cff.py b/RecoMET/Configuration/python/RecoPFMET_cff.py index 22d0e7d178747..89b4afad19d63 100644 --- a/RecoMET/Configuration/python/RecoPFMET_cff.py +++ b/RecoMET/Configuration/python/RecoPFMET_cff.py @@ -3,12 +3,11 @@ ##____________________________________________________________________________|| from RecoMET.METProducers.pfMet_cfi import * from RecoMET.METProducers.pfChMet_cfi import * -from CommonTools.ParticleFlow.pfNoPileUpJME_cff import goodOfflinePrimaryVertices, primaryVertexAssociationJME from CommonTools.PileupAlgos.Puppi_cff import puppiNoLep from RecoMET.METProducers.pfMetPuppi_cfi import * ##____________________________________________________________________________|| -recoPFMETTask = cms.Task(pfMet , particleFlowForChargedMET , goodOfflinePrimaryVertices, primaryVertexAssociationJME, pfChMet, puppiNoLep, pfMetPuppi) +recoPFMETTask = cms.Task(pfMet , particleFlowForChargedMET , pfChMet, puppiNoLep, pfMetPuppi) recoPFMET = cms.Sequence(recoPFMETTask) ##____________________________________________________________________________||