From f01d2fdd649ac2940a073ed69a871838b534bfd4 Mon Sep 17 00:00:00 2001
From: "s.zharko@gsi.de" <s.zharko@gsi.de>
Date: Thu, 28 Mar 2024 10:20:00 +0100
Subject: [PATCH] ana-online-mcbm2022

---
 algo/ca/TrackingChain.cxx | 38 ++++++++++++++++++++++++++------------
 algo/ca/TrackingChain.h   |  2 +-
 2 files changed, 27 insertions(+), 13 deletions(-)

diff --git a/algo/ca/TrackingChain.cxx b/algo/ca/TrackingChain.cxx
index 57ed9baa5e..4708b99553 100644
--- a/algo/ca/TrackingChain.cxx
+++ b/algo/ca/TrackingChain.cxx
@@ -16,9 +16,10 @@
 #include "tof/Config.h"
 #include "yaml/Yaml.h"
 
-#include <boost/archive/text_oarchive.hpp>
+#include <boost/archive/binary_oarchive.hpp>
 
 #include <fstream>
+#include <fmt/format.h>
 #include <unordered_map>
 
 #include <xpu/host.h>
@@ -119,7 +120,7 @@ void TrackingChain::Finalize()
   if (fConfig.fbStoreMonitor) {
     auto fileName = "./" + fConfig.fsMoniOutName;
     std::ofstream ofs(fileName);
-    boost::archive::text_oarchive oa(ofs);
+    boost::archive::binary_oarchive oa(ofs);
     oa << fCaMonitor;
   }
 }
@@ -198,6 +199,19 @@ TrackingChain::Output_t TrackingChain::PrepareOutput()
   }
 
   fCaMonitorData.StopTimer(ca::ETimer::TrackingChain);
+  
+  if constexpr (kDEBUG) { // Monitor data per TS
+    if (fCaFramework.GetNofThreads() == 1 && fCaFramework.GetNofThreads() == 10) {
+      int tsIndex   = fCaMonitor.GetCounterValue(ca::ECounter::TrackingCall);
+      auto fileName = fmt::format("./ca_monitor_nth_{}_ts{}.dat", fCaFramework.GetNofThreads(), tsIndex);
+      std::ofstream ofs(fileName);
+      boost::archive::binary_oarchive oa(ofs);
+      ca::TrackingMonitor monitorPerTS;
+      monitorPerTS.AddMonitorData(fCaMonitorData);
+      oa << monitorPerTS;
+    }
+  }
+
   fCaMonitor.AddMonitorData(fCaMonitorData);
   output.monitorData = fCaMonitorData;
 
@@ -209,10 +223,10 @@ TrackingChain::Output_t TrackingChain::PrepareOutput()
 template<EDetectorID DetID>
 void TrackingChain::ReadHits(PartitionedSpan<const ca::HitTypes_t::at<DetID>> hits)
 {
-  std::ofstream out;
-  if constexpr (kDEBUG) {
-    out.open(std::string("./Debug_hits_") + ca::kDetName[DetID] + ".txt");
-  }
+  //std::ofstream out;
+  //if constexpr (kDEBUG) {
+  //  out.open(std::string("./Debug_hits_") + ca::kDetName[DetID] + ".txt");
+  //}
 
   int nSt = fCaFramework.GetParameters().GetNstationsActive();
 
@@ -293,12 +307,12 @@ void TrackingChain::ReadHits(PartitionedSpan<const ca::HitTypes_t::at<DetID>> hi
         lastTime = caHit.T();
         fCaDataManager.PushBackHit(caHit, dataStreamDet | dataStream);
         faHitExternalIndices.push_back(std::make_tuple(DetID, iPartition, iPartHit));
-        if constexpr (kDEBUG) {
-          out << (dataStreamDet | dataStream) << " ----- " << caHit.ToString() << '\n';
-          if (prevTime > caHit.T()) {
-            out << "TIME IS UNSORTED\n";
-          }
-        }
+        //if constexpr (kDEBUG) {
+        //  out << (dataStreamDet | dataStream) << " ----- " << caHit.ToString() << '\n';
+        //  if (prevTime > caHit.T()) {
+        //    out << "TIME IS UNSORTED\n";
+        //  }
+        //}
 
         if (fNofHitKeys <= caHit.FrontKey()) {
           fNofHitKeys = caHit.FrontKey() + 1;
diff --git a/algo/ca/TrackingChain.h b/algo/ca/TrackingChain.h
index 9adc9528da..93185cc7af 100644
--- a/algo/ca/TrackingChain.h
+++ b/algo/ca/TrackingChain.h
@@ -117,7 +117,7 @@ namespace cbm::algo
     /// \note  Indexing: [globalHitID], value: (DetID, partitionID, hitID)
     ca::Vector<std::tuple<ca::EDetectorID, uint32_t, uint32_t>> faHitExternalIndices{"faHitExternalIndices"};
 
-    static constexpr bool kDEBUG = false;  ///< Debug mode
+    static constexpr bool kDEBUG = true;  ///< Debug mode
   };
 
 
-- 
GitLab