From 95ecc4bb4aa7e811f1f65025c8f08a23a72cf272 Mon Sep 17 00:00:00 2001 From: Breno Orzari Date: Sat, 8 Jun 2024 06:11:18 +0200 Subject: [PATCH] Removing try/catch pattern --- DataFormats/TrackReco/interface/Track.h | 3 ++ .../TrackReco/interface/TrackExtraBase.h | 3 ++ .../plugins/SingleLongTrackProducer.cc | 48 ++++--------------- 3 files changed, 15 insertions(+), 39 deletions(-) diff --git a/DataFormats/TrackReco/interface/Track.h b/DataFormats/TrackReco/interface/Track.h index 001b5a7aeb81c..fb71268480e86 100644 --- a/DataFormats/TrackReco/interface/Track.h +++ b/DataFormats/TrackReco/interface/Track.h @@ -157,6 +157,9 @@ namespace reco { /// get the residuals const TrackResiduals& residuals() const { return extra_->residuals(); } + // Check validity of track extra and rechits + bool recHitsOk() const { return extra_.isNonnull() && extra_.isAvailable() && extra_->recHitsOk(); } + private: /// Reference to additional information stored only on RECO. TrackExtraRef extra_; diff --git a/DataFormats/TrackReco/interface/TrackExtraBase.h b/DataFormats/TrackReco/interface/TrackExtraBase.h index 3fe18be4f7fa6..198f76675559b 100644 --- a/DataFormats/TrackReco/interface/TrackExtraBase.h +++ b/DataFormats/TrackReco/interface/TrackExtraBase.h @@ -76,6 +76,9 @@ namespace reco { TrajParams const& trajParams() const { return m_trajParams; } Chi2sFive const& chi2sX5() const { return m_chi2sX5; } + // Check validity of track rechits + bool recHitsOk() const { return m_hitCollection.isNonnull() && m_hitCollection.isAvailable(); } + private: edm::RefCore m_hitCollection; unsigned int m_firstHit; diff --git a/RecoTracker/FinalTrackSelectors/plugins/SingleLongTrackProducer.cc b/RecoTracker/FinalTrackSelectors/plugins/SingleLongTrackProducer.cc index 8430385347ae4..7644d19696361 100644 --- a/RecoTracker/FinalTrackSelectors/plugins/SingleLongTrackProducer.cc +++ b/RecoTracker/FinalTrackSelectors/plugins/SingleLongTrackProducer.cc @@ -151,50 +151,27 @@ void SingleLongTrackProducer::produce(edm::Event &iEvent, const edm::EventSetup bool hitIsNotValid{false}; for (const auto &track : selTracks) { - reco::HitPattern hitpattern = track.hitPattern(); - int deref{0}; - - // this checks track recHits - try { // (Un)Comment this line with /* to (not) allow for events with not valid hits + // Check validity of track extra and rechits + if (track.recHitsOk()) { + reco::HitPattern hitpattern = track.hitPattern(); auto hb = track.recHitsBegin(); + // Checking if rechits are valid for (unsigned int h = 0; h < track.recHitsSize(); h++) { auto recHit = *(hb + h); auto const &hit = *recHit; - if (onlyValidHits && !hit.isValid()) { hitIsNotValid = true; continue; } } - } catch (cms::Exception const &e) { - deref += 1; - if (debug) - std::cerr << e.explainSelf() << std::endl; - } - - if (hitIsNotValid == true) - break; // (Un)Comment this line with */ to (not) allow for events with not valid hits - - int deref2{0}; - // this checks track hitPattern hits - try { - auto hb = track.recHitsBegin(); + if (hitIsNotValid == true) + break; // (Un)Comment this line to (not) allow for events with not valid hits + // Checking if hitpattern hits are valid for (unsigned int h = 0; h < track.recHitsSize(); h++) { uint32_t pHit = hitpattern.getHitPattern(reco::HitPattern::TRACK_HITS, h); - - auto recHit = *(hb + h); - auto const &hit = *recHit; - - if (onlyValidHits && !hit.isValid()) { - if (debug) - edm::LogPrint("SingleLongTrackProducer") << "hit not valid: " << h; - continue; - } - - // loop over the hits of the track. if (onlyValidHits && !(hitpattern.validHitFilter(pHit))) { if (debug) edm::LogPrint("SingleLongTrackProducer") << "hit not valid: " << h; @@ -202,15 +179,8 @@ void SingleLongTrackProducer::produce(edm::Event &iEvent, const edm::EventSetup } } goodTracks->push_back(track); - } catch (cms::Exception const &e) { - deref2 += 1; - if (debug) - std::cerr << e.explainSelf() << std::endl; - } - - if (debug) - edm::LogPrint("SingleLongTrackProducer") - << "found tracks with " << deref << "missing valid hits and " << deref2 << " missing hit pattern"; + } else + break; } if (debug) {