From fa865c697d3ad90c02e9cbb31ec312009ca517be Mon Sep 17 00:00:00 2001
From: Norbert Herrmann <n.herrmann@physi.uni-heidelberg.de>
Date: Tue, 17 Nov 2020 22:30:01 +0100
Subject: [PATCH] implement input from separate T0 array

---
 reco/detectors/tof/CbmTofEventClusterizer.cxx | 18 ++++++++++++------
 reco/detectors/tof/CbmTofEventClusterizer.h   |  1 +
 2 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/reco/detectors/tof/CbmTofEventClusterizer.cxx b/reco/detectors/tof/CbmTofEventClusterizer.cxx
index 82bc5b3a2e..523599fc39 100644
--- a/reco/detectors/tof/CbmTofEventClusterizer.cxx
+++ b/reco/detectors/tof/CbmTofEventClusterizer.cxx
@@ -372,11 +372,11 @@ void CbmTofEventClusterizer::Exec(Option_t* option) {
            iDigi++) {
         Int_t iDigiIndex =
           static_cast<Int_t>(tEvent->GetIndex(ECbmDataType::kT0Digi, iDigi));
-        const CbmTofDigi* tDigi = fDigiMan->Get<CbmTofDigi>(iDigiIndex);
-        if (tDigi->GetType() != 5)
-          LOG(fatal) << "Wrong T0 type " << tDigi->GetType() << ", Addr 0x"
-                     << std::hex << tDigi->GetAddress();
-        fTofDigiVec.push_back(CbmTofDigi(*tDigi));
+        const CbmTofDigi tDigi = fT0DigiVec->at(iDigiIndex);
+        if (tDigi.GetType() != 5)
+          LOG(fatal) << "Wrong T0 type " << tDigi.GetType() << ", Addr 0x"
+                     << std::hex << tDigi.GetAddress();
+        fTofDigiVec.push_back(CbmTofDigi(tDigi));
       }
       for (Int_t iDigi = 0; iDigi < tEvent->GetNofData(ECbmDataType::kTofDigi);
            iDigi++) {
@@ -536,7 +536,13 @@ Bool_t CbmTofEventClusterizer::RegisterInputs() {
   }
   if (fDigiMan->IsPresent(ECbmModuleId::kT0)) {
     LOG(info) << GetName() << ": separate T0 digi input!";
-  }
+  } else {
+    fT0DigiVec = fManager->InitObjectAs<std::vector<CbmTofDigi> const*>("T0Digi");
+    if (!fT0DigiVec) {
+      LOG(info) << "No T0 digi input vector found.";
+    }
+  }  // if( ! fT0DigiVec )
+
   fTrbHeader = (TTrbHeader*) fManager->GetObject("TofTrbHeader.");
   if (NULL == fTrbHeader) {
     LOG(info) << "CbmTofEventClusterizer::RegisterInputs => Could not get "
diff --git a/reco/detectors/tof/CbmTofEventClusterizer.h b/reco/detectors/tof/CbmTofEventClusterizer.h
index b8712466e9..33933396cd 100644
--- a/reco/detectors/tof/CbmTofEventClusterizer.h
+++ b/reco/detectors/tof/CbmTofEventClusterizer.h
@@ -258,6 +258,7 @@ private:
   TClonesArray* fMcTracksColl;   // MC tracks
   //TClonesArray          * fTofDigisColl;     // TOF Digis
   std::vector<CbmTofDigi> fTofDigiVec {};  //! TOF Digis
+  const std::vector<CbmTofDigi>* fT0DigiVec = nullptr; //! T0 Digis
   CbmDigiManager* fDigiMan;                // TOF Input Digis
   TClonesArray* fEventsColl;               // CBMEvents (time based)
 
-- 
GitLab