From 678b2296c649b8d62eb47df340af5cba930bdc8e Mon Sep 17 00:00:00 2001
From: Felix Weiglhofer <weiglhofer@fias.uni-frankfurt.de>
Date: Fri, 26 Apr 2024 21:53:29 +0000
Subject: [PATCH] online: Remove TOF hitfinder and calibrate chains.

---
 algo/CMakeLists.txt                    |  2 --
 algo/detectors/tof/CalibratorChain.cxx | 24 -----------------
 algo/detectors/tof/CalibratorChain.h   | 36 --------------------------
 algo/detectors/tof/HitfinderChain.cxx  | 23 ----------------
 algo/detectors/tof/HitfinderChain.h    | 36 --------------------------
 algo/global/Reco.cxx                   | 25 +++++++++++-------
 algo/global/Reco.h                     |  8 +++---
 7 files changed, 19 insertions(+), 135 deletions(-)
 delete mode 100644 algo/detectors/tof/CalibratorChain.cxx
 delete mode 100644 algo/detectors/tof/CalibratorChain.h
 delete mode 100644 algo/detectors/tof/HitfinderChain.cxx
 delete mode 100644 algo/detectors/tof/HitfinderChain.h

diff --git a/algo/CMakeLists.txt b/algo/CMakeLists.txt
index 181d7caa6e..7da25ea04a 100644
--- a/algo/CMakeLists.txt
+++ b/algo/CMakeLists.txt
@@ -111,8 +111,6 @@ set(SRCS
   detectors/tof/UnpackMS.cxx
   detectors/tof/Hitfind.cxx
   detectors/tof/TrackingInterface.cxx
-  detectors/tof/HitfinderChain.cxx
-  detectors/tof/CalibratorChain.cxx
   detectors/tof/config/ReadoutPars_mCBM2022.cxx
   detectors/tof/config/ReadoutPars_mCBM2024.cxx
   detectors/bmon/ReadoutConfig.cxx
diff --git a/algo/detectors/tof/CalibratorChain.cxx b/algo/detectors/tof/CalibratorChain.cxx
deleted file mode 100644
index d0dafc0d76..0000000000
--- a/algo/detectors/tof/CalibratorChain.cxx
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Copyright (C) 2023 Facility for Antiproton and Ion Research in Europe, Darmstadt
-   SPDX-License-Identifier: GPL-3.0-only
-   Authors: Dominik Smith [committer], Felix Weiglhofer */
-#include "CalibratorChain.h"
-
-#include "yaml/Yaml.h"
-
-using namespace cbm::algo;
-using namespace cbm::algo::tof;
-
-void CalibratorChain::Init()
-{
-  auto setup = yaml::ReadFromFile<CalibrateSetup>(Opts().ParamsDir() / "TofCalibratePar.yaml");
-  fCalibrate = std::make_unique<Calibrate>(setup);
-}
-
-CalibratorChain::ReturnType CalibratorChain::Run(gsl::span<CbmTofDigi> digis)
-{
-  auto ret = (*fCalibrate)(digis);
-
-  auto nUnknownRPC = std::get<1>(ret).fDigiCalibUnknownRPC;
-  if (nUnknownRPC > 0) L_(error) << "TOF Digis with unknown RPCs: " << nUnknownRPC;
-  return ret;
-}
diff --git a/algo/detectors/tof/CalibratorChain.h b/algo/detectors/tof/CalibratorChain.h
deleted file mode 100644
index cca46ababc..0000000000
--- a/algo/detectors/tof/CalibratorChain.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Copyright (C) 2023 Facility for Antiproton and Ion Research in Europe, Darmstadt
-   SPDX-License-Identifier: GPL-3.0-only
-   Authors: Dominik Smith [committer], Felix Weiglhofer */
-#pragma once
-
-#include "Calibrate.h"
-#include "CalibrateSetup.h"
-#include "CbmTofDigi.h"
-#include "SubChain.h"
-
-#include <gsl/span>
-#include <memory>
-
-namespace cbm::algo::tof
-{
-
-  class CalibratorChain : public SubChain {
-
-   public:
-    using ReturnType = Calibrate::resultType;
-
-    CalibratorChain()  = default;
-    ~CalibratorChain() = default;
-
-    void Init();
-
-    /**
-     * @brief Apply calibration to digis
-     */
-    ReturnType Run(gsl::span<CbmTofDigi> digis);
-
-   private:
-    std::unique_ptr<Calibrate> fCalibrate;
-  };
-
-}  // namespace cbm::algo::tof
diff --git a/algo/detectors/tof/HitfinderChain.cxx b/algo/detectors/tof/HitfinderChain.cxx
deleted file mode 100644
index 3911a6d8c6..0000000000
--- a/algo/detectors/tof/HitfinderChain.cxx
+++ /dev/null
@@ -1,23 +0,0 @@
-/* Copyright (C) 2023 FIAS Frankfurt Institute for Advanced Studies, Frankfurt / Main
-   SPDX-License-Identifier: GPL-3.0-only
-   Authors: Felix Weiglhofer [committer] */
-#include "HitfinderChain.h"
-
-#include "yaml/Yaml.h"
-
-using namespace cbm::algo;
-using namespace cbm::algo::tof;
-
-void HitfinderChain::Init()
-{
-  auto setup = yaml::ReadFromFile<HitfindSetup>(Opts().ParamsDir() / "TofHitfinderPar.yaml");
-  fHitfind   = std::make_unique<Hitfind>(setup);
-}
-
-HitfinderChain::ReturnType HitfinderChain::Run(gsl::span<CbmTofDigi> digis)
-{
-  auto ret = (*fHitfind)(digis);
-
-  L_(info) << "TS contains " << std::get<0>(ret).NElements() << " TOF Hits";
-  return ret;
-}
diff --git a/algo/detectors/tof/HitfinderChain.h b/algo/detectors/tof/HitfinderChain.h
deleted file mode 100644
index fc88cd29f6..0000000000
--- a/algo/detectors/tof/HitfinderChain.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Copyright (C) 2023 FIAS Frankfurt Institute for Advanced Studies, Frankfurt / Main
-   SPDX-License-Identifier: GPL-3.0-only
-   Authors: Felix Weiglhofer [committer] */
-#pragma once
-
-#include "CbmTofDigi.h"
-#include "Hitfind.h"
-#include "HitfindSetup.h"
-#include "SubChain.h"
-
-#include <gsl/span>
-#include <memory>
-
-namespace cbm::algo::tof
-{
-
-  class HitfinderChain : public SubChain {
-
-   public:
-    using ReturnType = Hitfind::resultType;
-
-    HitfinderChain()  = default;
-    ~HitfinderChain() = default;
-
-    void Init();
-
-    /**
-     * @brief Run the hitfinder and apply time calibration to digis
-     */
-    ReturnType Run(gsl::span<CbmTofDigi> digis);
-
-   private:
-    std::unique_ptr<Hitfind> fHitfind;
-  };
-
-}  // namespace cbm::algo::tof
diff --git a/algo/global/Reco.cxx b/algo/global/Reco.cxx
index 10c2635d93..2e0c5b0995 100644
--- a/algo/global/Reco.cxx
+++ b/algo/global/Reco.cxx
@@ -20,8 +20,8 @@
 #include "sts/ChannelMaskSet.h"
 #include "sts/HitfinderChain.h"
 #include "sts/Unpack.h"
-#include "tof/CalibratorChain.h"
-#include "tof/HitfinderChain.h"
+#include "tof/Calibrate.h"
+#include "tof/Hitfind.h"
 #include "tof/Unpack.h"
 #include "tof/config/ReadoutPars.h"
 #include "trd/Hitfind.h"
@@ -182,13 +182,11 @@ void Reco::Init(const Options& opts)
 
   // TOF Hitfinder
   if (Opts().Has(fles::Subsystem::TOF) && Opts().Has(Step::LocalReco)) {
-    fTofCalibrator = std::make_unique<tof::CalibratorChain>();
-    fTofCalibrator->SetContext(&fContext);
-    fTofCalibrator->Init();
+    auto calibSetup = yaml::ReadFromFile<tof::CalibrateSetup>(opts.ParamsDir() / "TofCalibratePar.yaml");
+    fTofCalibrator  = std::make_unique<tof::Calibrate>(calibSetup);
 
-    fTofHitFinder = std::make_unique<tof::HitfinderChain>();
-    fTofHitFinder->SetContext(&fContext);
-    fTofHitFinder->Init();
+    auto hitfindSetup = yaml::ReadFromFile<tof::HitfindSetup>(opts.ParamsDir() / "TofHitfinderPar.yaml");
+    fTofHitFinder     = std::make_unique<tof::Hitfind>(hitfindSetup);
   }
 
   if (Opts().Has(fles::Subsystem::TRD) && Opts().Has(Step::LocalReco)) {
@@ -282,12 +280,19 @@ RecoResults Reco::Run(const fles::Timeslice& ts)
 
     PartitionedVector<tof::Hit> tofHits;
     if (Opts().Has(Step::LocalReco) && Opts().Has(fles::Subsystem::TOF)) {
-      auto [caldigis, calmonitor]          = fTofCalibrator->Run(digis.fTof);
-      auto [hits, hitmonitor, digiindices] = fTofHitFinder->Run(caldigis);
+      auto [caldigis, calmonitor] = (*fTofCalibrator)(digis.fTof);
+      auto nUnknownRPC            = calmonitor.fDigiCalibUnknownRPC;
+      if (nUnknownRPC > 0) {
+        L_(error) << "TOF Digis with unknown RPCs: " << nUnknownRPC;
+      }
+
+      auto [hits, hitmonitor, digiindices] = (*fTofHitFinder)(caldigis);
       tofHits                              = std::move(hits);
       QueueTofCalibMetrics(calmonitor);
       QueueTofRecoMetrics(hitmonitor);
     }
+    L_(info) << "TS contains " << tofHits.NElements() << " TOF Hits";
+
 
     PartitionedVector<trd::Hit> trdHits;
     if (fTrdHitfind) {
diff --git a/algo/global/Reco.h b/algo/global/Reco.h
index 7f104732a0..cce762d696 100644
--- a/algo/global/Reco.h
+++ b/algo/global/Reco.h
@@ -50,9 +50,9 @@ namespace cbm::algo
   namespace tof
   {
     class Unpack;
-    class CalibratorChain;
+    class Calibrate;
     struct CalibrateMonitorData;
-    class HitfinderChain;
+    class Hitfind;
     struct HitfindMonitorData;
   }
 
@@ -132,8 +132,8 @@ namespace cbm::algo
 
     // TOF
     std::unique_ptr<tof::Unpack> fTofUnpack;
-    std::unique_ptr<tof::HitfinderChain> fTofHitFinder;
-    std::unique_ptr<tof::CalibratorChain> fTofCalibrator;
+    std::unique_ptr<tof::Calibrate> fTofCalibrator;
+    std::unique_ptr<tof::Hitfind> fTofHitFinder;
 
     // TRD
     std::unique_ptr<trd::Unpack> fTrdUnpack;
-- 
GitLab