From e11ebc1cefb4effd465b878e1e9f765914cbfc49 Mon Sep 17 00:00:00 2001
From: Dominik Smith <smith@th.physik.uni-frankfurt.de>
Date: Tue, 9 Feb 2021 12:13:08 +0100
Subject: [PATCH] Added switch to choose newest, 2019 or 2018 versions of raw
 event builder in /macro/run/run_reco.C.

---
 macro/run/run_reco.C | 68 ++++++++++++++++++++++++++------------------
 1 file changed, 41 insertions(+), 27 deletions(-)

diff --git a/macro/run/run_reco.C b/macro/run/run_reco.C
index 716f0b879b..61091edb68 100644
--- a/macro/run/run_reco.C
+++ b/macro/run/run_reco.C
@@ -61,7 +61,8 @@
  ** employed and reconstruction will be time-based. The option "Ideal"
  ** selects the ideal raw event builder, which associates digis to events
  ** based on the MC truth. The option "Real" selects a real raw event builder
- ** (not yet available).
+ ** (latest version, for older versions use "Real2018" or "Real2019").
+ ** 
  **
  ** The file names must be specified without extensions. The convention is
  ** that the raw (input) file is [input].raw.root. The output file
@@ -198,33 +199,24 @@ void run_reco(TString input        = "",
                 << std::endl;
       eventBased = kTRUE;
     }  //? Ideal raw event building
-    else if (sEvBuildRaw.EqualTo("Real", TString::ECaseCompare::kIgnoreCase)) {
-      // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //
-      /// to use 2018 version, uncomment this section and comment the next one
-      /*
+    else if (sEvBuildRaw.EqualTo("Real2018",
+                                 TString::ECaseCompare::kIgnoreCase)) {
       CbmMcbm2018EventBuilder* evBuildRaw = new CbmMcbm2018EventBuilder();
 
       evBuildRaw->SetFixedTimeWindow(5500.);
       evBuildRaw->SetTriggerMinNumberSts(50);
 
-      if (!useSts) {
-        std::cerr << "-E- " << myName << ": Sts must be present for raw event "
-                  << "building using ``Real'' option. Terminating macro."
-                  << std::endl;
-         return;
-      }
-      */
-      // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //
-
-      // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //
-      /// to use 2018 version, uncomment this section and comment the prev. one
-
-      /* switch between 2019 and 2021 version here
+      run->AddTask(evBuildRaw);
+      std::cout << "-I- " << myName << ": Added task " << evBuildRaw->GetName()
+                << std::endl;
+      eventBased = kTRUE;
+    } else if (sEvBuildRaw.EqualTo("Real2019",
+                                   TString::ECaseCompare::kIgnoreCase)) {
       CbmMcbm2019TimeWinEventBuilderTask* evBuildRaw =
         new CbmMcbm2019TimeWinEventBuilderTask();
 
       //Choose between NoOverlap, MergeOverlap, AllowOverlap
-      evBuildRaw->SetEventOverlapMode(EOverlapMode::AllowOverlap);  // for 2019 version
+      evBuildRaw->SetEventOverlapMode(EOverlapMode::AllowOverlap);
 
       // Remove detectors where digis not found
       if (!useRich) evBuildRaw->RemoveDetector(kEventBuilderDetRich);
@@ -232,18 +224,37 @@ void run_reco(TString input        = "",
       if (!usePsd) evBuildRaw->RemoveDetector(kEventBuilderDetPsd);
       if (!useTof) evBuildRaw->RemoveDetector(kEventBuilderDetTof);
       if (!useTrd) evBuildRaw->RemoveDetector(kEventBuilderDetTrd);
-
+      if (!useSts) {
+        std::cerr << "-E- " << myName << ": Sts must be present for raw event "
+                  << "building using ``Real2019'' option. Terminating macro."
+                  << std::endl;
+        return;
+      }
       // Remove STS as it will be our reference
       evBuildRaw->RemoveDetector(kEventBuilderDetSts);
 
       // Set STS as reference detector
       evBuildRaw->SetReferenceDetector(kEventBuilderDetSts);
-*/
+      evBuildRaw->SetTsParameters(0.0, 1.e7, 0.0);
+
+      // Use CbmMuchDigi instead of CbmMuchBeamtimeDigi
+      evBuildRaw->ChangeMuchBeamtimeDigiFlag(kFALSE);
+
+      evBuildRaw->SetTriggerMinNumber(ECbmModuleId::kSts, 1000);
+      evBuildRaw->SetTriggerMaxNumber(ECbmModuleId::kSts, -1);
+      evBuildRaw->SetTriggerWindow(ECbmModuleId::kSts, -500, 500);
+
+      run->AddTask(evBuildRaw);
+      std::cout << "-I- " << myName << ": Added task " << evBuildRaw->GetName()
+                << std::endl;
+      eventBased = kTRUE;
+
+    } else if (sEvBuildRaw.EqualTo("Real",
+                                   TString::ECaseCompare::kIgnoreCase)) {
       CbmTaskBuildRawEvents* evBuildRaw = new CbmTaskBuildRawEvents();
-      //Choose between NoOverlap, MergeOverlap, AllowOverlap
 
-      evBuildRaw->SetEventOverlapMode(
-        EOverlapModeRaw::AllowOverlap);  // for raw version
+      //Choose between NoOverlap, MergeOverlap, AllowOverlap
+      evBuildRaw->SetEventOverlapMode(EOverlapModeRaw::AllowOverlap);
 
       // Remove detectors where digis not found
       if (!useRich) evBuildRaw->RemoveDetector(kRawEventBuilderDetRich);
@@ -251,13 +262,17 @@ void run_reco(TString input        = "",
       if (!usePsd) evBuildRaw->RemoveDetector(kRawEventBuilderDetPsd);
       if (!useTof) evBuildRaw->RemoveDetector(kRawEventBuilderDetTof);
       if (!useTrd) evBuildRaw->RemoveDetector(kRawEventBuilderDetTrd);
-
+      if (!useSts) {
+        std::cerr << "-E- " << myName << ": Sts must be present for raw event "
+                  << "building using ``Real2019'' option. Terminating macro."
+                  << std::endl;
+        return;
+      }
       // Remove STS as it will be our reference
       evBuildRaw->RemoveDetector(kRawEventBuilderDetSts);
 
       // Set STS as reference detector
       evBuildRaw->SetReferenceDetector(kRawEventBuilderDetSts);
-
       evBuildRaw->SetTsParameters(0.0, 1.e7, 0.0);
 
       // Use CbmMuchDigi instead of CbmMuchBeamtimeDigi
@@ -266,7 +281,6 @@ void run_reco(TString input        = "",
       evBuildRaw->SetTriggerMinNumber(ECbmModuleId::kSts, 1000);
       evBuildRaw->SetTriggerMaxNumber(ECbmModuleId::kSts, -1);
       evBuildRaw->SetTriggerWindow(ECbmModuleId::kSts, -500, 500);
-      // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //
 
       run->AddTask(evBuildRaw);
       std::cout << "-I- " << myName << ": Added task " << evBuildRaw->GetName()
-- 
GitLab