From 528ce4b4020b16206fbb08aec9c6b26775578183 Mon Sep 17 00:00:00 2001
From: P-A Loizeau <p.-a.loizeau@gsi.de>
Date: Mon, 20 Sep 2021 10:01:20 +0200
Subject: [PATCH] Add safety check bef. full sorting in Unpack Steer class

---
 reco/steer/CbmRecoUnpack.cxx | 34 ++++++++++++++++------------------
 1 file changed, 16 insertions(+), 18 deletions(-)

diff --git a/reco/steer/CbmRecoUnpack.cxx b/reco/steer/CbmRecoUnpack.cxx
index 5224f36de9..2593c03533 100644
--- a/reco/steer/CbmRecoUnpack.cxx
+++ b/reco/steer/CbmRecoUnpack.cxx
@@ -260,7 +260,6 @@ void CbmRecoUnpack::Unpack(unique_ptr<Timeslice> ts)
           fCbmTsEventHeader->AddNDigisPsd(unpack(systemId, &timeslice, component, fPsdConfig,
                                                  fPsdConfig->GetOptOutAVec(), fPsdConfig->GetOptOutBVec()));
         }
-
         break;
       }
       case fkFlesRich: {
@@ -292,11 +291,10 @@ void CbmRecoUnpack::Unpack(unique_ptr<Timeslice> ts)
         break;
       }
       case fkFlesTrd2D: {
-        if (fTrd2DConfig)
-          if (fTrd2DConfig) {
-            fCbmTsEventHeader->AddNDigisTrd2D(unpack(systemId, &timeslice, component, fTrd2DConfig,
-                                                     fTrd2DConfig->GetOptOutAVec(), fTrd2DConfig->GetOptOutBVec()));
-          }
+        if (fTrd2DConfig) {
+          fCbmTsEventHeader->AddNDigisTrd2D(unpack(systemId, &timeslice, component, fTrd2DConfig,
+                                                   fTrd2DConfig->GetOptOutAVec(), fTrd2DConfig->GetOptOutBVec()));
+        }
         break;
       }
       default: {
@@ -308,20 +306,20 @@ void CbmRecoUnpack::Unpack(unique_ptr<Timeslice> ts)
 
   if (bOutputFullTimeSorting) {
     /// Time sort the output vectors of all unpackers present
-    if (fPsdConfig->GetOutputVec()) { timesort(fPsdConfig->GetOutputVec()); }
-    if (fRichConfig->GetOutputVec()) { timesort(fRichConfig->GetOutputVec()); }
-    if (fStsConfig->GetOutputVec()) { timesort(fStsConfig->GetOutputVec()); }
-    if (fTofConfig->GetOutputVec()) { timesort(fTofConfig->GetOutputVec()); }
-    if (fTrd1DConfig->GetOutputVec()) { timesort(fTrd1DConfig->GetOutputVec()); }
-    if (fTrd2DConfig->GetOutputVec()) { timesort(fTrd2DConfig->GetOutputVec()); }
+    if (fPsdConfig && fPsdConfig->GetOutputVec()) { timesort(fPsdConfig->GetOutputVec()); }
+    if (fRichConfig && fRichConfig->GetOutputVec()) { timesort(fRichConfig->GetOutputVec()); }
+    if (fStsConfig && fStsConfig->GetOutputVec()) { timesort(fStsConfig->GetOutputVec()); }
+    if (fTofConfig && fTofConfig->GetOutputVec()) { timesort(fTofConfig->GetOutputVec()); }
+    if (fTrd1DConfig && fTrd1DConfig->GetOutputVec()) { timesort(fTrd1DConfig->GetOutputVec()); }
+    if (fTrd2DConfig && fTrd2DConfig->GetOutputVec()) { timesort(fTrd2DConfig->GetOutputVec()); }
 
     /// Time sort the output vectors of all unpackers present
-    if (fPsdConfig->GetOptOutAVec()) { timesort(fPsdConfig->GetOptOutAVec()); }
-    if (fRichConfig->GetOptOutAVec()) { timesort(fRichConfig->GetOptOutAVec()); }
-    if (fStsConfig->GetOptOutAVec()) { timesort(fStsConfig->GetOptOutAVec()); }
-    if (fTofConfig->GetOptOutAVec()) { timesort(fTofConfig->GetOptOutAVec()); }
-    if (fTrd1DConfig->GetOptOutAVec()) { timesort(fTrd1DConfig->GetOptOutAVec()); }
-    if (fTrd2DConfig->GetOptOutAVec()) { timesort(fTrd2DConfig->GetOptOutAVec()); }
+    if (fPsdConfig && fPsdConfig->GetOptOutAVec()) { timesort(fPsdConfig->GetOptOutAVec()); }
+    if (fRichConfig && fRichConfig->GetOptOutAVec()) { timesort(fRichConfig->GetOptOutAVec()); }
+    if (fStsConfig && fStsConfig->GetOptOutAVec()) { timesort(fStsConfig->GetOptOutAVec()); }
+    if (fTofConfig && fTofConfig->GetOptOutAVec()) { timesort(fTofConfig->GetOptOutAVec()); }
+    if (fTrd1DConfig && fTrd1DConfig->GetOptOutAVec()) { timesort(fTrd1DConfig->GetOptOutAVec()); }
+    if (fTrd2DConfig && fTrd2DConfig->GetOptOutAVec()) { timesort(fTrd2DConfig->GetOptOutAVec()); }
   }
 }
 // ----------------------------------------------------------------------------
-- 
GitLab