From d8a72b568f39681695f3eb0068a03777ce114338 Mon Sep 17 00:00:00 2001 From: Dinko Ferencek Date: Fri, 27 Mar 2015 17:27:11 -0500 Subject: [PATCH] cloning input candidates when they are of PF type in order to keep things like track Refs, etc. --- CommonTools/PileupAlgos/plugins/PuppiProducer.cc | 5 ++--- CommonTools/PileupAlgos/plugins/SoftKillerProducer.cc | 3 ++- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CommonTools/PileupAlgos/plugins/PuppiProducer.cc b/CommonTools/PileupAlgos/plugins/PuppiProducer.cc index ad5c28f7c96d8..7388a0156d255 100644 --- a/CommonTools/PileupAlgos/plugins/PuppiProducer.cc +++ b/CommonTools/PileupAlgos/plugins/PuppiProducer.cc @@ -156,9 +156,8 @@ void PuppiProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { //for(unsigned int i0 = 0; i0 < lCandidates.size(); i0++) { //reco::PFCandidate pCand; auto id = dummySinceTranslateIsNotStatic.translatePdgIdToType(i0->pdgId()); - reco::PFCandidate pCand( i0->charge(), - i0->p4(), - id ); + const reco::PFCandidate *pPF = dynamic_cast(&(*i0)); + reco::PFCandidate pCand( pPF ? *pPF : reco::PFCandidate(i0->charge(), i0->p4(), id) ); LorentzVector pVec = i0->p4(); int val = i0 - i0begin; diff --git a/CommonTools/PileupAlgos/plugins/SoftKillerProducer.cc b/CommonTools/PileupAlgos/plugins/SoftKillerProducer.cc index f6a8128bbc28d..06836db13476e 100644 --- a/CommonTools/PileupAlgos/plugins/SoftKillerProducer.cc +++ b/CommonTools/PileupAlgos/plugins/SoftKillerProducer.cc @@ -134,7 +134,8 @@ SoftKillerProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) jend = fjInputs.end(); j != jend; ++j ) { const reco::Candidate& cand = pfCandidates->at(j->user_index()); auto id = dummySinceTranslateIsNotStatic.translatePdgIdToType(cand.pdgId()); - reco::PFCandidate pCand( cand.charge(), cand.p4(), id ); + const reco::PFCandidate *pPF = dynamic_cast(&cand); + reco::PFCandidate pCand( pPF ? *pPF : reco::PFCandidate(cand.charge(), cand.p4(), id) ); auto val = j->user_index(); auto skmatch = find_if( soft_killed_event.begin(), soft_killed_event.end(), [&val](fastjet::PseudoJet const & i){return i.user_index() == val;} ); LorentzVector pVec;