From a756e2052e2ce5f3f5d428fdcb2b5b97f9c8690e Mon Sep 17 00:00:00 2001
From: P-A Loizeau <p.-a.loizeau@gsi.de>
Date: Fri, 22 Jan 2021 18:36:11 +0100
Subject: [PATCH] In TimeWinEvtBuilder, add flag to switch to CbmMuchDigi
 (instead of CbmMuchBeamtimeDigi)

---
 .../CbmMcbm2019TimeWinEventBuilderAlgo.cxx    | 29 +++++++++++++++----
 .../CbmMcbm2019TimeWinEventBuilderAlgo.h      |  9 ++++--
 .../CbmMcbm2019TimeWinEventBuilderTask.cxx    |  3 ++
 .../CbmMcbm2019TimeWinEventBuilderTask.h      |  2 ++
 4 files changed, 36 insertions(+), 7 deletions(-)

diff --git a/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderAlgo.cxx b/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderAlgo.cxx
index 0973a3c480..81a28a9574 100644
--- a/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderAlgo.cxx
+++ b/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderAlgo.cxx
@@ -10,6 +10,7 @@
 /// CBM headers
 #include "CbmEvent.h"
 #include "CbmMuchBeamTimeDigi.h"
+#include "CbmMuchDigi.h"
 #include "CbmPsdDigi.h"
 #include "CbmRichDigi.h"
 #include "CbmStsDigi.h"
@@ -49,7 +50,9 @@ Bool_t CbmMcbm2019TimeWinEventBuilderAlgo::InitAlgo() {
 
   // Get a pointer to the previous already existing data level
   fDigiMan = CbmDigiManager::Instance();
-  fDigiMan->UseMuchBeamTimeDigi();
+  if (fbUseMuchBeamtimeDigi) {
+    fDigiMan->UseMuchBeamTimeDigi();
+  } // if (fbUseMuchBeamtimeDigi)
   fDigiMan->Init();
 
   /// Check if reference detector data are available
@@ -177,7 +180,12 @@ void CbmMcbm2019TimeWinEventBuilderAlgo::BuildEvents() {
       break;
     }  // case ECbmModuleId::kSts:
     case ECbmModuleId::kMuch: {
-      LoopOnSeeds<CbmMuchBeamTimeDigi>();
+      if (fbUseMuchBeamtimeDigi) {
+        LoopOnSeeds<CbmMuchBeamTimeDigi>();
+      } // if (fbUseMuchBeamtimeDigi)
+        else {
+          LoopOnSeeds<CbmMuchDigi>();
+        } // else of if (fbUseMuchBeamtimeDigi)
       break;
     }  // case ECbmModuleId::kMuch:
     case ECbmModuleId::kTrd: {
@@ -234,7 +242,7 @@ void CbmMcbm2019TimeWinEventBuilderAlgo::LoopOnSeeds() {
       || (dOverlapSize < fdWidestTimeWinRange)) {
     LOG(warning) << "CbmMcbm2019TimeWinEventBuilderAlgo::LoopOnSeeds => "
                  << Form("Event window not fitting in TS overlap, risk of "
-                         "incomplete events: %f %f %f %llu",
+                         "incomplete events: %f %f %f %f",
                          fdEarliestTimeWinBeg,
                          fdLatestTimeWinEnd,
                          fdWidestTimeWinRange,
@@ -350,7 +358,13 @@ void CbmMcbm2019TimeWinEventBuilderAlgo::CheckSeed(Double_t dSeedTime,
         break;
       }  // case ECbmModuleId::kSts:
       case ECbmModuleId::kMuch: {
-        SearchMatches<CbmMuchBeamTimeDigi>(dSeedTime, fRefDet);
+        if (fbUseMuchBeamtimeDigi) {
+          SearchMatches<CbmMuchBeamTimeDigi>(dSeedTime, fRefDet);
+        } // if (fbUseMuchBeamtimeDigi)
+          else
+          {
+            SearchMatches<CbmMuchDigi>(dSeedTime, fRefDet);
+          } // else of if (fbUseMuchBeamtimeDigi)
         break;
       }  // case ECbmModuleId::kMuch:
       case ECbmModuleId::kTrd: {
@@ -399,7 +413,12 @@ void CbmMcbm2019TimeWinEventBuilderAlgo::CheckSeed(Double_t dSeedTime,
         break;
       }  // case ECbmModuleId::kSts:
       case ECbmModuleId::kMuch: {
-        SearchMatches<CbmMuchBeamTimeDigi>(dSeedTime, *det);
+        if (fbUseMuchBeamtimeDigi) {
+          SearchMatches<CbmMuchBeamTimeDigi>(dSeedTime, *det);
+        } // if (fbUseMuchBeamtimeDigi)
+          else {
+            SearchMatches<CbmMuchDigi>(dSeedTime, *det);
+          } // else of if (fbUseMuchBeamtimeDigi)
         break;
       }  // case ECbmModuleId::kMuch:
       case ECbmModuleId::kTrd: {
diff --git a/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderAlgo.h b/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderAlgo.h
index 2173184714..b6ed8a6456 100644
--- a/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderAlgo.h
+++ b/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderAlgo.h
@@ -158,7 +158,7 @@ public:
                        Double_t dTsOverLength) {
     fdTsStartTime  = dTsStartTime;
     fdTsLength     = dTsLength;
-    fdTsOverLength = fdTsOverLength;
+    fdTsOverLength = dTsOverLength;
   }
 
   /// Control flags
@@ -167,6 +167,10 @@ public:
     fbIgnoreTsOverlap = bFlagIn;
   }
 
+  void ChangeMuchBeamtimeDigiFlag(Bool_t bFlagIn = kFALSE) {
+    fbUseMuchBeamtimeDigi = bFlagIn;
+  }
+
   /// For monitor algos
   void AddHistoToVector(TNamed* pointer, std::string sFolder = "") {
     fvpAllHistoPointers.push_back(
@@ -213,9 +217,10 @@ private:
   static constexpr Double_t kdDefaultTimeWinEnd = 100.0;
 
   /// User parameters
-  /// Control flags
+    /// Control flags
   Bool_t fbIgnoreTsOverlap = kFALSE;  //! Ignore data in Overlap part of the TS
   Bool_t fbFillHistos {kTRUE};        //! Switch ON/OFF filling of histograms
+  Bool_t fbUseMuchBeamtimeDigi = kTRUE; //! Switch between the MUCH digi classes
     /// Event building mode and detectors selection
   EOverlapMode fOverMode {EOverlapMode::AllowOverlap};
 
diff --git a/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderTask.cxx b/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderTask.cxx
index 56792605a7..34291a8cb2 100644
--- a/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderTask.cxx
+++ b/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderTask.cxx
@@ -185,6 +185,9 @@ void CbmMcbm2019TimeWinEventBuilderTask::SetEventOverlapMode(
 void CbmMcbm2019TimeWinEventBuilderTask::SetIgnoreTsOverlap(Bool_t bFlagIn) {
   if (nullptr != fpAlgo) fpAlgo->SetIgnoreTsOverlap(bFlagIn);
 }
+void CbmMcbm2019TimeWinEventBuilderTask::ChangeMuchBeamtimeDigiFlag(Bool_t bFlagIn) {
+  if (nullptr != fpAlgo) fpAlgo->ChangeMuchBeamtimeDigiFlag(bFlagIn);
+}
 
 //----------------------------------------------------------------------
 
diff --git a/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderTask.h b/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderTask.h
index 2c3b87dd97..b670b8e5f7 100644
--- a/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderTask.h
+++ b/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderTask.h
@@ -79,6 +79,8 @@ public:
   void SetEventOverlapMode(EOverlapMode mode);
   void SetIgnoreTsOverlap(Bool_t bFlagIn);
 
+  void ChangeMuchBeamtimeDigiFlag(Bool_t bFlagIn = kFALSE);
+
 private:
   void FillOutput();
   void SaveHistos();
-- 
GitLab