From 7154c397ef064cddf6c0cbb208ee827cc3e65b9d Mon Sep 17 00:00:00 2001 From: Florian Uhlig <f.uhlig@gsi.de> Date: Thu, 21 Dec 2023 13:50:46 +0100 Subject: [PATCH] Fix crashes in analysis tree converter Add protections when tracking and/or track matching delivers strange results. --- .../common/analysis_tree_converter/CbmFsdHitsConverter.cxx | 5 +++++ .../common/analysis_tree_converter/CbmStsTracksConverter.cxx | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/analysis/common/analysis_tree_converter/CbmFsdHitsConverter.cxx b/analysis/common/analysis_tree_converter/CbmFsdHitsConverter.cxx index 8e60ee5371..d00a4506e8 100644 --- a/analysis/common/analysis_tree_converter/CbmFsdHitsConverter.cxx +++ b/analysis/common/analysis_tree_converter/CbmFsdHitsConverter.cxx @@ -266,6 +266,11 @@ void CbmFsdHitsConverter::ProcessData(CbmEvent* event) if ((bestMatchedIndex >= 0) && (bestChi2 > fsdgtrack_minChi2_) && (bestChi2 < fsdgtrack_maxChi2_)) { const auto trackIndex = event ? event->GetIndex(ECbmDataType::kGlobalTrack, bestMatchedIndex) : bestMatchedIndex; + if (trackIndex > cbm_global_tracks_->GetEntriesFast()) { + LOG(error) << "Trying to access element " << trackIndex << " which is out ot the global track array of size" + << cbm_global_tracks_->GetEntriesFast(); + continue; + } const auto* globalTrack = static_cast<const CbmGlobalTrack*>(cbm_global_tracks_->At(trackIndex)); FairTrackParam param_last = *(globalTrack->GetParamLast()); FairTrackParam param_fsd = ExtrapolateGtrack(hitZ, param_last); diff --git a/analysis/common/analysis_tree_converter/CbmStsTracksConverter.cxx b/analysis/common/analysis_tree_converter/CbmStsTracksConverter.cxx index 7af3a55011..eeadfa3dee 100644 --- a/analysis/common/analysis_tree_converter/CbmStsTracksConverter.cxx +++ b/analysis/common/analysis_tree_converter/CbmStsTracksConverter.cxx @@ -248,7 +248,7 @@ void CbmStsTracksConverter::MapTracks(CbmEvent* event) CbmTrackMatchNew* match {nullptr}; int file_id {0}, event_id {0}; - if (event && event->GetMatch()->GetNofLinks() > 0) { + if (event && event->GetMatch() && event->GetMatch()->GetNofLinks() > 0) { file_id = event->GetMatch()->GetMatchedLink().GetFile(); event_id = event->GetMatch()->GetMatchedLink().GetEntry(); } -- GitLab