From d066b67e0b823af7cceeb54399a4d64c781dd95b Mon Sep 17 00:00:00 2001
From: Frederic Julian Linz <f.linz@gsi.de>
Date: Mon, 17 Jul 2023 09:35:02 +0000
Subject: [PATCH] AT Converter: Bugfix to prevent a crash when no link to MC is
 present

---
 .../analysis_tree_converter/CbmRecEventHeaderConverter.cxx  | 3 ++-
 .../analysis_tree_converter/CbmSimEventHeaderConverter.cxx  | 6 +-----
 .../analysis_tree_converter/CbmSimTracksConverter.cxx       | 4 +---
 .../analysis_tree_converter/CbmStsTracksConverter.cxx       | 2 +-
 .../common/analysis_tree_converter/CbmTofHitsConverter.cxx  | 4 +---
 5 files changed, 6 insertions(+), 13 deletions(-)

diff --git a/analysis/common/analysis_tree_converter/CbmRecEventHeaderConverter.cxx b/analysis/common/analysis_tree_converter/CbmRecEventHeaderConverter.cxx
index 890c382137..efe6df5e84 100644
--- a/analysis/common/analysis_tree_converter/CbmRecEventHeaderConverter.cxx
+++ b/analysis/common/analysis_tree_converter/CbmRecEventHeaderConverter.cxx
@@ -80,7 +80,8 @@ void CbmRecEventHeaderConverter::ProcessData(CbmEvent* event)
 
     tStartTS = fTimeSlice->GetStartTime();
 
-    if (event->GetMatch()) match_weight = float(event->GetMatch()->GetMatchedLink().GetWeight());
+    if (event->GetMatch() && event->GetMatch()->GetNofLinks() > 0)
+      match_weight = float(event->GetMatch()->GetMatchedLink().GetWeight());
     else
       match_weight = 0.;
   }
diff --git a/analysis/common/analysis_tree_converter/CbmSimEventHeaderConverter.cxx b/analysis/common/analysis_tree_converter/CbmSimEventHeaderConverter.cxx
index cf8120b2c7..497adf858e 100644
--- a/analysis/common/analysis_tree_converter/CbmSimEventHeaderConverter.cxx
+++ b/analysis/common/analysis_tree_converter/CbmSimEventHeaderConverter.cxx
@@ -59,11 +59,7 @@ void CbmSimEventHeaderConverter::ProcessData(CbmEvent* event)
   FairMCEventHeader* cbm_header {nullptr};
   int file_id {0}, event_id {0};
 
-  if (event) {
-    if (!event->GetMatch()) {
-      LOG(error) << "No match to SimEvent!";
-      return;
-    }
+  if (event && event->GetMatch() && event->GetMatch()->GetNofLinks() > 0) {
     const auto& link = event->GetMatch()->GetMatchedLink();
     file_id          = event->GetMatch()->GetMatchedLink().GetFile();
     event_id         = event->GetMatch()->GetMatchedLink().GetEntry();
diff --git a/analysis/common/analysis_tree_converter/CbmSimTracksConverter.cxx b/analysis/common/analysis_tree_converter/CbmSimTracksConverter.cxx
index 9d130fa479..bd8d4677e0 100644
--- a/analysis/common/analysis_tree_converter/CbmSimTracksConverter.cxx
+++ b/analysis/common/analysis_tree_converter/CbmSimTracksConverter.cxx
@@ -108,9 +108,7 @@ void CbmSimTracksConverter::ProcessData(CbmEvent* event)
   const auto& branch = out_config_->GetBranchConfig(out_branch_);
 
   int file_id {0}, event_id {0};
-  if (event) {
-    auto match = event->GetMatch();
-    if (!match) return;
+  if (event && event->GetMatch() && event->GetMatch()->GetNofLinks() > 0) {
     file_id  = event->GetMatch()->GetMatchedLink().GetFile();
     event_id = event->GetMatch()->GetMatchedLink().GetEntry();
   }
diff --git a/analysis/common/analysis_tree_converter/CbmStsTracksConverter.cxx b/analysis/common/analysis_tree_converter/CbmStsTracksConverter.cxx
index 6f7a3f180a..580d08a722 100644
--- a/analysis/common/analysis_tree_converter/CbmStsTracksConverter.cxx
+++ b/analysis/common/analysis_tree_converter/CbmStsTracksConverter.cxx
@@ -246,7 +246,7 @@ void CbmStsTracksConverter::MapTracks(CbmEvent* event)
   CbmTrackMatchNew* match {nullptr};
 
   int file_id {0}, event_id {0};
-  if (event) {
+  if (event && event->GetMatch()->GetNofLinks() > 0) {
     file_id  = event->GetMatch()->GetMatchedLink().GetFile();
     event_id = event->GetMatch()->GetMatchedLink().GetEntry();
   }
diff --git a/analysis/common/analysis_tree_converter/CbmTofHitsConverter.cxx b/analysis/common/analysis_tree_converter/CbmTofHitsConverter.cxx
index 8169f29309..c93648cedc 100644
--- a/analysis/common/analysis_tree_converter/CbmTofHitsConverter.cxx
+++ b/analysis/common/analysis_tree_converter/CbmTofHitsConverter.cxx
@@ -85,9 +85,7 @@ void CbmTofHitsConverter::ProcessData(CbmEvent* event)
   auto sim_tracks_map = GetMatchMap(mc_tracks_);
 
   int file_id {0}, event_id {0};
-  if (event) {
-    auto match = event->GetMatch();
-    if (!match) return;
+  if (event && event->GetMatch() && event->GetMatch()->GetNofLinks() > 0) {
     file_id  = event->GetMatch()->GetMatchedLink().GetFile();
     event_id = event->GetMatch()->GetMatchedLink().GetEntry();
   }
-- 
GitLab