From 3267caaa9ea402eca264e041097cdb059f7ddd5d Mon Sep 17 00:00:00 2001
From: Giovanna Lazzari Miotto <giovanna.lazzari.miotto@cern.ch>
Date: Wed, 24 Apr 2024 17:55:40 +0200
Subject: [PATCH] Use control's run number to trigger EoR

---
 src/OutputByOrbit.cc     |  6 ++++--
 src/OutputFileHandler.cc |  1 +
 src/OutputFileHandler.h  | 39 +++++++++++++++++++++------------------
 3 files changed, 26 insertions(+), 20 deletions(-)

diff --git a/src/OutputByOrbit.cc b/src/OutputByOrbit.cc
index 9db8618e..581a94a7 100644
--- a/src/OutputByOrbit.cc
+++ b/src/OutputByOrbit.cc
@@ -12,14 +12,16 @@
 #include "tools.h"
 
 void OutputByOrbitStream::MonitorEndOfRun() {
-  int latest_EoR = -1;
+  int latest_EoR = 0;
   while (true) {
-    int current_run_number = output_file_handler_.GetCurrentRunNumber();
+    //    int current_run_number = output_file_handler_.GetCurrentRunNumber();
+    int current_run_number = control_.run_number;
     if (!control_.running && latest_EoR != current_run_number) {
       // An unhandled run just stopped; wait N seconds in case the pipeline is still processing
       // Write EoR file for the most recent run
       if (output_file_handler_.isMainPipeline()) {
         output_file_handler_.write_EoR_file();
+        output_file_handler_.setCurrentRunNumber(control_.run_number);
       }
       // Update local EoR tag
       latest_EoR = current_run_number;
diff --git a/src/OutputFileHandler.cc b/src/OutputFileHandler.cc
index fdc95dac..25fd465e 100644
--- a/src/OutputFileHandler.cc
+++ b/src/OutputFileHandler.cc
@@ -250,6 +250,7 @@ void OutputFileHandler::write_EoR_file() {
   EoR_file.close();
   run_NOrbits_ = 0;
   run_NFiles_ = 0;
+  current_index_ = 0;
 }
 
 void OutputFileHandler::check_if_all_raw_written() {
diff --git a/src/OutputFileHandler.h b/src/OutputFileHandler.h
index 14043011..1929cc23 100644
--- a/src/OutputFileHandler.h
+++ b/src/OutputFileHandler.h
@@ -95,6 +95,26 @@ class OutputFileHandler {
     int nOrbitsPerFile_;
   };
 
+ public:
+  size_t getLumisectionFileSize() { return ls_file_size_; }
+  uint32_t getLumisectionNOrbits() { return ls_NOrbits_; }
+  uint32_t getLumisectionNFiles() { return ls_NFiles_; }
+  uint32_t getRunNOrbits() { return run_NOrbits_; }
+
+  void updateLumisectionFileSize(size_t file_size) { ls_file_size_ += file_size; }
+  void updateLumisectionNOrbits(uint32_t NOrbits) { ls_NOrbits_ += NOrbits; }
+  void updateLumisectionNFiles(uint32_t NFiles) { ls_NFiles_ += NFiles; }
+  void updateRunNOrbits(uint32_t NOrbits) { run_NOrbits_ += NOrbits; }
+  void updateRunNFiles(uint32_t NFiles) { run_NFiles_ += NFiles; }
+
+  void setLumisectionFileSize(size_t file_size) { ls_file_size_ = file_size; }
+  void setLumisectionNOrbits(uint32_t NOrbits) { ls_NOrbits_ = NOrbits; }
+  void setLumisectionNFiles(uint32_t NFiles) { ls_NFiles_ = NFiles; }
+  void setRunNOrbits(uint32_t NOrbits) { run_NOrbits_ = NOrbits; }
+  void setRunNFiles(uint32_t NFiles) { run_NFiles_ = NFiles; }
+
+  void setCurrentRunNumber(int n) { current_run_number_ = n; }
+
  private:
   void create_output_directory_maybe(std::string &output_directory);
 
@@ -121,23 +141,6 @@ class OutputFileHandler {
 
   static std::atomic<bool> file_handler_running_;
 
-  size_t getLumisectionFileSize() { return ls_file_size_; }
-  uint32_t getLumisectionNOrbits() { return ls_NOrbits_; }
-  uint32_t getLumisectionNFiles() { return ls_NFiles_; }
-  uint32_t getRunNOrbits() { return run_NOrbits_; }
-
-  void updateLumisectionFileSize(size_t file_size) { ls_file_size_ += file_size; }
-  void updateLumisectionNOrbits(uint32_t NOrbits) { ls_NOrbits_ += NOrbits; }
-  void updateLumisectionNFiles(uint32_t NFiles) { ls_NFiles_ += NFiles; }
-  void updateRunNOrbits(uint32_t NOrbits) { run_NOrbits_ += NOrbits; }
-  void updateRunNFiles(uint32_t NFiles) { run_NFiles_ += NFiles; }
-
-  void setLumisectionFileSize(size_t file_size) { ls_file_size_ = file_size; }
-  void setLumisectionNOrbits(uint32_t NOrbits) { ls_NOrbits_ = NOrbits; }
-  void setLumisectionNFiles(uint32_t NFiles) { ls_NFiles_ = NFiles; }
-  void setRunNOrbits(uint32_t NOrbits) { run_NOrbits_ = NOrbits; }
-  void setRunNFiles(uint32_t NFiles) { run_NFiles_ = NFiles; }
-
   std::string base_path_;
   std::string run_dir_;
   std::string filename_prefix_;
@@ -154,7 +157,7 @@ class OutputFileHandler {
   int numPipelines_;
   std::thread t;
   const uint32_t max_index_per_ls_;
-  size_t ls_file_size_;
+  size_t ls_file_size_{};
   size_t file_size_{};
   uint32_t NOrbits_{};
   uint32_t ls_NOrbits_{};
-- 
GitLab