17#include <FairFileSourceBase.h>
18#include <TObjString.h>
30 void SetRunID(
unsigned int runID) { run_id_ = runID; }
31 void SetMaxEventNum(
unsigned int max_event_num) { max_event_num_ = max_event_num; }
36 uint64_t max_event_num_ = 0;
37 float refresh_rate_ = 2.;
38 std::chrono::milliseconds refresh_period_{
static_cast<int>(1000. / refresh_rate_) };
39 unsigned int run_id_ = 0;
40 std::chrono::time_point<std::chrono::steady_clock> previous_t_ = std::chrono::steady_clock::now();
41 uint64_t previous_event_num_ = 0;
43 void Print(uint64_t event_num,
double speed_per_ms);
51 auto AddFileName(std::string name,
bool is_tree_file =
false) -> std::optional<std::string>;
54 [[nodiscard]]
auto is_empty() const ->
bool {
return fileNames_.empty(); }
56 [[nodiscard]]
auto is_friend() const ->
bool {
return is_friend_; }
61 [[nodiscard]]
auto GetBaseFileName() const -> const auto& {
return fileNames_.front(); }
62 [[nodiscard]]
auto GetTreeName() const -> const auto& {
return treeName_; }
63 [[nodiscard]]
auto GetFolderName() const -> const auto& {
return folderName_; }
64 [[nodiscard]]
auto GetTitle() const -> const auto& {
return title_; }
65 [[nodiscard]]
auto GetEntries() const -> int64_t;
66 [[nodiscard]] auto
GetChain() const -> TChain* {
return rootChain_; }
70 void SetTreeName(std::string_view treeName) { treeName_ = treeName; }
71 void SetTitle(std::string_view title) { title_ = title; }
73 void SetRunID(uint run_id) { initial_RunID_ = run_id; }
83 bool is_friend_ =
false;
84 uint initial_RunID_ = 0;
87 std::string treeName_ =
"evt";
88 std::string folderName_;
89 std::string fileHeader_;
92 std::vector<TObjString> timeBasedBranchList_;
93 std::vector<R3B::unique_rootfile> validRootFiles_;
94 std::vector<TFolder*> validMainFolders_;
95 TChain* rootChain_ =
nullptr;
97 void Intitialize(std::string_view filename,
bool is_tree_file =
false);
98 auto ValidateFile(
const std::string& filename,
bool is_tree_file =
false) -> bool;
99 static auto ExtractMainFolder(TFile*) -> std::optional<TKey*>;
100 auto ExtractRunId(TFile* rootFile) -> std::optional<uint>;
101 void register_branch_name();
108 explicit R3BFileSource2(std::string file, std::string_view title =
"InputRootFile");
109 R3BFileSource2(std::vector<std::string> fileNames, std::string_view title);
112 void AddFile(std::string file_name,
bool is_tree_file =
false);
113 void AddFile(std::vector<std::string> file_names,
bool is_tree_file =
false);
114 void AddFriend(std::string,
bool is_tree_file =
false);
115 void AddFriend(std::vector<std::string> file_names,
bool is_tree_file =
false);
118 [[nodiscard]]
auto IsEmpty() const ->
bool {
return inputDataFiles_.is_empty(); }
121 void SetFileHeaderName(std::string_view fileHeaderName) { inputDataFiles_.SetFileHeaderName(fileHeaderName); }
126 inputDataFiles_.SetRunID(run_id);
134 FairEventHeader* evtHeader_ =
nullptr;
135 std::vector<R3BInputRootFiles> inputFriendFiles_;
136 std::vector<std::string> dataFileNames_;
137 std::vector<std::string> friendFileNames_;
139 Bool_t
Init()
override;
140 Int_t
ReadEvent(UInt_t eventID = 0)
override;
151 Bool_t
ActivateObject(TObject** obj,
const char* BrName)
override;
152 Bool_t
ActivateObjectAny(
void** obj,
const std::type_info& info,
const char* BrName)
override;
void SetRefreshRate_Hz(float rate)
void SetRunID(unsigned int runID)
R3BEventProgressPrinter()=default
void SetMaxEventNum(unsigned int max_event_num)
void ShowProgress(uint64_t event_num)
Int_t ReadEvent(UInt_t eventID=0) override
Bool_t ActivateObject(TObject **obj, const char *BrName) override
void ReadBranchEvent(const char *BrName) override
void SetFileHeaderName(std::string_view fileHeaderName)
void SetEventPrintRefreshRate(float rate)
void AddFriend(std::string, bool is_tree_file=false)
auto IsEmpty() const -> bool
Int_t CheckMaxEventNo(Int_t EvtEnd=0) override
Bool_t ReInitUnpackers() override
Bool_t ActivateObjectAny(void **obj, const std::type_info &info, const char *BrName) override
void AddFile(std::string file_name, bool is_tree_file=false)
Bool_t SpecifyRunId() override
Bool_t InitUnpackers() override
Source_Type GetSourceType() override
void FillEventHeader(FairEventHeader *evtHeader) override
void SetInitRunID(int run_id)
void SetParUnpackers() override