33 std::string_view ntuple_options,
34 std::string_view ucesb_path,
36 size_t event_struct_size);
45 void SetMaxEvents(
int max_event_num) { max_event_num_ = max_event_num; }
46 void SetLMDFileName(std::string_view lmdfile_name) { lmdfile_name_ = lmdfile_name; }
47 void SetNTupleOptions(std::string_view ntuple_options) { ntuple_options_ = ntuple_options; }
48 void SetUcesbPath(std::string_view ucesb_path) { ucesb_path_ = ucesb_path; }
50 void SetInfiniteRun(
bool is_infinite =
true) { is_infinite_run_ = is_infinite; }
53 void SetRawDataPrint(
bool print_raw_data) { has_raw_data_printing_ = print_raw_data; }
54 void SetRunID(
unsigned int run_id) { run_id_ = run_id; }
59 template <
typename ReaderType>
60 auto AddReader(std::unique_ptr<ReaderType> reader) -> ReaderType*;
61 template <
typename ReaderType,
typename... Args>
62 auto AddReader(Args&&... args) -> ReaderType*;
64 template <
typename UnaryOp>
67 template <
typename Predicate>
71 [[deprecated(
"Please use smart pointer method to add a reader")]]
auto*
AddReader(
R3BReader* a_reader)
73 return AddReader(std::unique_ptr<R3BReader>(a_reader));
77 bool has_raw_data_printing_ =
false;
78 bool is_infinite_run_ =
false;
79 unsigned int run_id_ = 0;
80 int max_event_num_ = 0;
81 size_t event_struct_size_ = 0;
84 std::vector<std::unique_ptr<R3BReader>> readers_;
85 std::string lmdfile_name_;
86 std::string ntuple_options_;
87 std::string ucesb_path_;
88 std::mutex event_reader_mutex_;
89 std::chrono::time_point<std::chrono::system_clock> last_start_time_ = std::chrono::system_clock::now();
90 std::chrono::minutes waiting_time_{ 0 };
92 ext_data_clnt ucesb_client_;
93 UcesbStructInfo ucesb_client_struct_info_;
94 UcesbServerLauncher ucesb_server_launcher_ = UcesbServerLauncher{ &ucesb_client_ };
100 void init_ucesb_bp();
103 void print_raw_data();
104 void restart_ucesb_server();
105 void restart_ucesb_server_delayed();
108 bool Init()
override;
114 ForEachReader([](
auto& reader) { reader->SetParContainers(); });
121 int ReadEvent(
unsigned int eventID = 0)
override;