diff --git a/RecoParticleFlow/PFProducer/plugins/ChargedHadronPFTrackIsolationProducer.cc b/RecoParticleFlow/PFProducer/plugins/ChargedHadronPFTrackIsolationProducer.cc index e0bb6ac44c593..d955e4a639fa7 100644 --- a/RecoParticleFlow/PFProducer/plugins/ChargedHadronPFTrackIsolationProducer.cc +++ b/RecoParticleFlow/PFProducer/plugins/ChargedHadronPFTrackIsolationProducer.cc @@ -59,14 +59,17 @@ void ChargedHadronPFTrackIsolationProducer::produce(edm::StreamID, edm::Event& e ((c.rawEcalEnergy() + c.rawHcalEnergy()) > minRawCaloEnergy_)) { const reco::PFCandidate::ElementsInBlocks& theElements = c.elementsInBlocks(); if (theElements.empty()) - continue; - const reco::PFBlockRef blockRef = theElements[0].first; - const edm::OwnVector& elements = blockRef->elements(); - // Find the tracks in the block - for (auto const& ele : elements) { - reco::PFBlockElement::Type type = ele.type(); - if (type == reco::PFBlockElement::TRACK) - nTracks++; + nTracks = 1; // the PFBlockElements is empty for pfTICL charged candidates + // because they don't go through PFBlocks machanism. We consider each charged candidate to be well isolated for now. + else { + const reco::PFBlockRef blockRef = theElements[0].first; + const edm::OwnVector& elements = blockRef->elements(); + // Find the tracks in the block + for (auto const& ele : elements) { + reco::PFBlockElement::Type type = ele.type(); + if (type == reco::PFBlockElement::TRACK) + nTracks++; + } } } values.push_back((nTracks == 1));