From 9c473694a52eb566312493e578198cf0fabaf1b9 Mon Sep 17 00:00:00 2001
From: Adrian Weber <adrian.a.weber@physik.uni-giessen.de>
Date: Mon, 14 Feb 2022 11:39:03 +0100
Subject: [PATCH] add ToT offset correction setter to Rich unpacker.

---
 macro/run/run_unpack_tsa.C                         | 3 ++-
 reco/detectors/rich/unpack/CbmRichUnpackAlgoBase.h | 3 +++
 reco/detectors/rich/unpack/CbmRichUnpackConfig.cxx | 1 +
 reco/detectors/rich/unpack/CbmRichUnpackConfig.h   | 5 +++++
 4 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/macro/run/run_unpack_tsa.C b/macro/run/run_unpack_tsa.C
index 9cabe33e61..4411051373 100644
--- a/macro/run/run_unpack_tsa.C
+++ b/macro/run/run_unpack_tsa.C
@@ -114,12 +114,13 @@ void run_unpack_tsa(std::vector<std::string> infile = {"test.tsa"}, UInt_t runid
       richconfig->SetMonitor(GetRichMonitor(outfilename, true));
     }
 
+    richconfig->DoTotOffsetCorrection();  // correct ToT offset
     richconfig->SetDebugState();
     richconfig->SetDoWriteOutput();
     std::string parfilesbasepathRich = Form("%s/macro/beamtime/mcbm2021/", srcDir.Data());
     richconfig->SetParFilesBasePath(parfilesbasepathRich);
     richconfig->SetSystemTimeOffset(256000 - 1200);  // [ns] 1 MS and additional correction
-    if (runid > 1904)  richconfig->SetSystemTimeOffset(-1200);
+    if (runid > 1904) richconfig->SetSystemTimeOffset(-1200);
     if (runid == 1588) richconfig->MaskDiRICH(0x7150);
   }
   // -------------
diff --git a/reco/detectors/rich/unpack/CbmRichUnpackAlgoBase.h b/reco/detectors/rich/unpack/CbmRichUnpackAlgoBase.h
index a07b0b54c7..403d063872 100644
--- a/reco/detectors/rich/unpack/CbmRichUnpackAlgoBase.h
+++ b/reco/detectors/rich/unpack/CbmRichUnpackAlgoBase.h
@@ -228,6 +228,9 @@ public:
   /** @brief Set Addresses of DiRICH boards to be masked @param maskedDiRICHes vector of Addresses */
   void SetMaskedDiRICHes(std::vector<Int_t>* maskedDiRICHes) { fMaskedDiRICHes = maskedDiRICHes; }
 
+  /** @brief (De-) Activate Tot offset correction of digis @param activate bool to activate the Tot offset correction */
+  void DoTotOffsetCorrection(Bool_t activate = true) { fbDoToTCorr = activate; }
+
 protected:
   double calculateTime(uint32_t epoch, uint32_t coarse, uint32_t fine);
 
diff --git a/reco/detectors/rich/unpack/CbmRichUnpackConfig.cxx b/reco/detectors/rich/unpack/CbmRichUnpackConfig.cxx
index 3137f57c65..035ece320c 100644
--- a/reco/detectors/rich/unpack/CbmRichUnpackConfig.cxx
+++ b/reco/detectors/rich/unpack/CbmRichUnpackConfig.cxx
@@ -27,6 +27,7 @@ void CbmRichUnpackConfig::InitAlgo()
 {
   if (fDoLog) LOG(info) << fName << "::Init - SetMaskedDiRICHes";
   fAlgo->SetMaskedDiRICHes(&fMaskedDiRICHes);
+  fAlgo->DoTotOffsetCorrection(fbDoToTCorr);
 
   if (fMonitor) { fAlgo->SetMonitor(fMonitor); }
 
diff --git a/reco/detectors/rich/unpack/CbmRichUnpackConfig.h b/reco/detectors/rich/unpack/CbmRichUnpackConfig.h
index 369a50ffae..b62ff89b80 100644
--- a/reco/detectors/rich/unpack/CbmRichUnpackConfig.h
+++ b/reco/detectors/rich/unpack/CbmRichUnpackConfig.h
@@ -83,6 +83,9 @@ public:
 
   /** @brief Add a monitor to the unpacker. @param value CbmRichUnpackMonitor */
   void SetMonitor(std::shared_ptr<CbmRichUnpackMonitor> value) { fMonitor = value; }
+  
+  /** @brief (De-) Activate Tot offset correction of digis @param activate bool to activate the Tot offset correction */
+  void DoTotOffsetCorrection(Bool_t activate = true) { fbDoToTCorr = activate; }  
 
 protected:
   /**
@@ -99,6 +102,8 @@ protected:
 
   /** @brief Selector of Unpacker Version. */
   CbmRichUnpackerVersion fUnpackerVersion = CbmRichUnpackerVersion::v02;
+  
+  Bool_t fbDoToTCorr = true;  // kTRUE activates ToT correction from Parameterfile
 
 private:
   ClassDef(CbmRichUnpackConfig, 3)
-- 
GitLab