diff --git a/RecoBTag/SecondaryVertex/plugins/BoostedDoubleSVProducer.cc b/RecoBTag/SecondaryVertex/plugins/BoostedDoubleSVProducer.cc index afc35fcdae141..cb4176b33b30a 100644 --- a/RecoBTag/SecondaryVertex/plugins/BoostedDoubleSVProducer.cc +++ b/RecoBTag/SecondaryVertex/plugins/BoostedDoubleSVProducer.cc @@ -661,8 +661,7 @@ void BoostedDoubleSVProducer::calcNsubjettiness(const reco::JetBaseRef& jet, // loop over subjet constituents and push them in the vector of FastJet constituents for (size_t i = 0; i < daughter->numberOfDaughters(); ++i) { const reco::CandidatePtr& constit = subjet->daughterPtr(i); - - if (constit.isNonnull()) { + if (constit.isNonnull() && constit->pt() > std::numeric_limits::epsilon()) { // Check if any values were nan or inf float valcheck = constit->px() + constit->py() + constit->pz() + constit->energy(); if (edm::isNotFinite(valcheck)) { @@ -679,10 +678,13 @@ void BoostedDoubleSVProducer::calcNsubjettiness(const reco::JetBaseRef& jet, << "BoostedDoubleSVProducer: No weights (e.g. PUPPI) given for weighted jet collection" << std::endl; } - fjParticles.push_back( - fastjet::PseudoJet(constit->px() * w, constit->py() * w, constit->pz() * w, constit->energy() * w)); - } else + if (w > 0) { + fjParticles.push_back( + fastjet::PseudoJet(constit->px() * w, constit->py() * w, constit->pz() * w, constit->energy() * w)); + } + } else { fjParticles.push_back(fastjet::PseudoJet(constit->px(), constit->py(), constit->pz(), constit->energy())); + } } else edm::LogWarning("MissingJetConstituent") << "Jet constituent required for N-subjettiness computation is missing!"; @@ -703,10 +705,13 @@ void BoostedDoubleSVProducer::calcNsubjettiness(const reco::JetBaseRef& jet, throw cms::Exception("MissingConstituentWeight") << "BoostedDoubleSVProducer: No weights (e.g. PUPPI) given for weighted jet collection" << std::endl; } - fjParticles.push_back( - fastjet::PseudoJet(daughter->px() * w, daughter->py() * w, daughter->pz() * w, daughter->energy() * w)); - } else + if (w > 0 && daughter->pt() > std::numeric_limits::epsilon()) { + fjParticles.push_back( + fastjet::PseudoJet(daughter->px() * w, daughter->py() * w, daughter->pz() * w, daughter->energy() * w)); + } + } else { fjParticles.push_back(fastjet::PseudoJet(daughter->px(), daughter->py(), daughter->pz(), daughter->energy())); + } } } else edm::LogWarning("MissingJetConstituent") << "Jet constituent required for N-subjettiness computation is missing!";