From b251de21cfc579721e2c0d63340d6a74884e67ac Mon Sep 17 00:00:00 2001
From: Dominik Smith <smith@th.physik.uni-frankfurt.de>
Date: Fri, 19 Feb 2021 15:01:57 +0100
Subject: [PATCH] Simplified CbmAlgoBuildRawEvents::CheckDataAvailable().

---
 .../digis/CbmAlgoBuildRawEvents.cxx           | 86 ++++++-------------
 .../digis/CbmAlgoBuildRawEvents.h             |  2 +-
 2 files changed, 25 insertions(+), 63 deletions(-)

diff --git a/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.cxx b/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.cxx
index c9e1dee2c7..e43e8ae189 100644
--- a/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.cxx
+++ b/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.cxx
@@ -445,7 +445,7 @@ Bool_t CbmAlgoBuildRawEvents::CheckTriggerConditions(CbmEvent* event, RawEventBu
   if (0 == det.fuTriggerMinDigis && det.fiTriggerMaxDigis < 0) { return kTRUE; }
 
   /// Check if detector present
-  if (!DetIsPresent(det.detId)) {
+  if (!CheckDataAvailable(det.detId)) {
     LOG(warning) << "Event does not have digis storage for " << det.sName
                  << " while the following trigger min/max are defined: " << det.fuTriggerMinDigis << " "
                  << det.fiTriggerMaxDigis;
@@ -474,112 +474,74 @@ Bool_t CbmAlgoBuildRawEvents::CheckTriggerConditions(CbmEvent* event, RawEventBu
 
 Bool_t CbmAlgoBuildRawEvents::CheckDataAvailable(RawEventBuilderDetector& det)
 {
-  if (ECbmModuleId::kT0 == det.detId) {
-    if (!fT0DigiVec) {
-      LOG(info) << "No T0 digi input found.";
-      return kFALSE;
-    }
-  }
-  else if (ECbmModuleId::kSts == det.detId) {
-    if (!fStsDigis) {
-      LOG(info) << "No " << det.sName << " digi input found.";
-      return kFALSE;
-    }
-  }
-  else if (ECbmModuleId::kMuch == det.detId) {
-    if (!fMuchDigis && !fMuchBeamTimeDigis) {
-      LOG(info) << "No " << det.sName << " digi input found.";
-      return kFALSE;
-    }
-  }
-  else if (ECbmModuleId::kTrd == det.detId) {
-    if (!fTrdDigis) {
-      LOG(info) << "No " << det.sName << " digi input found.";
-      return kFALSE;
-    }
-  }
-  else if (ECbmModuleId::kTof == det.detId) {
-    if (!fTofDigis) {
-      LOG(info) << "No " << det.sName << " digi input found.";
-      return kFALSE;
-    }
-  }
-  else if (ECbmModuleId::kRich == det.detId) {
-    if (!fRichDigis) {
-      LOG(info) << "No " << det.sName << " digi input found.";
-      return kFALSE;
-    }
-  }
-  else if (ECbmModuleId::kPsd == det.detId) {
-    if (!fPsdDigis) {
-      LOG(info) << "No " << det.sName << " digi input found.";
-      return kFALSE;
-    }
+  if (!CheckDataAvailable(det.detId)) {
+    LOG(info) << "No " << det.sName << " digi input found.";
+    return kFALSE;
   }
   return kTRUE;
 }
 
-UInt_t CbmAlgoBuildRawEvents::GetNofDigis(ECbmModuleId detId)
+bool CbmAlgoBuildRawEvents::CheckDataAvailable(ECbmModuleId detId)
 {
   switch (detId) {
     case ECbmModuleId::kSts: {
-      return fStsDigis->size();
+      return fStsDigis != nullptr;
     }
     case ECbmModuleId::kMuch: {
-      if (fbUseMuchBeamtimeDigi) { return fMuchBeamTimeDigis->size(); }
+      if (fbUseMuchBeamtimeDigi) { return fMuchBeamTimeDigis != nullptr; }
       else {
-        return fMuchDigis->size();
+        return fMuchDigis != nullptr;
       }
     }
     case ECbmModuleId::kTrd: {
-      return fTrdDigis->size();
+      return fTrdDigis != nullptr;
     }
     case ECbmModuleId::kTof: {
-      return fTofDigis->size();
+      return fTofDigis != nullptr;
     }
     case ECbmModuleId::kRich: {
-      return fRichDigis->size();
+      return fRichDigis != nullptr;
     }
     case ECbmModuleId::kPsd: {
-      return fPsdDigis->size();
+      return fPsdDigis != nullptr;
     }
     case ECbmModuleId::kT0: {
-      return fT0DigiVec->size();  //what to do here? Not in digi manager.
+      return fT0DigiVec != nullptr;
     }
     default: {
-      LOG(fatal) << "CbmAlgoBuildRawEvents::GetNofDigis => "
-                 << "Trying to get digi number with unsupported detector.";
+      LOG(fatal) << "CbmAlgoBuildRawEvents::CheckDataAvailable => "
+                 << "Unsupported detector.";
       return -1;
     }
   }
 }
 
-bool CbmAlgoBuildRawEvents::DetIsPresent(ECbmModuleId detId)
+UInt_t CbmAlgoBuildRawEvents::GetNofDigis(ECbmModuleId detId)
 {
   switch (detId) {
     case ECbmModuleId::kSts: {
-      return fStsDigis != nullptr;
+      return fStsDigis->size();
     }
     case ECbmModuleId::kMuch: {
-      if (fbUseMuchBeamtimeDigi) { return fMuchBeamTimeDigis != nullptr; }
+      if (fbUseMuchBeamtimeDigi) { return fMuchBeamTimeDigis->size(); }
       else {
-        return fMuchDigis != nullptr;
+        return fMuchDigis->size();
       }
     }
     case ECbmModuleId::kTrd: {
-      return fTrdDigis != nullptr;
+      return fTrdDigis->size();
     }
     case ECbmModuleId::kTof: {
-      return fTofDigis != nullptr;
+      return fTofDigis->size();
     }
     case ECbmModuleId::kRich: {
-      return fRichDigis != nullptr;
+      return fRichDigis->size();
     }
     case ECbmModuleId::kPsd: {
-      return fPsdDigis != nullptr;
+      return fPsdDigis->size();
     }
     case ECbmModuleId::kT0: {
-      return fT0DigiVec != nullptr;  //what to do here? Not in digi manager.
+      return fT0DigiVec->size();  //what to do here? Not in digi manager.
     }
     default: {
       LOG(fatal) << "CbmAlgoBuildRawEvents::GetNofDigis => "
diff --git a/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.h b/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.h
index 9cff5c5c4a..1af66f824d 100644
--- a/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.h
+++ b/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.h
@@ -259,7 +259,7 @@ private:
   const std::vector<CbmRichDigi>* fRichDigis                 = nullptr;
   const std::vector<CbmPsdDigi>* fPsdDigis                   = nullptr;
 
-  bool DetIsPresent(ECbmModuleId detId);
+  bool CheckDataAvailable(ECbmModuleId detId);
   UInt_t GetNofDigis(ECbmModuleId detId);
   template<class Digi>
   const Digi* GetDigi(UInt_t uDigi);
-- 
GitLab