R3BROOT
R3B analysis software
Loading...
Searching...
No Matches
R3BParRootFileIo.h
Go to the documentation of this file.
1#pragma once
2
3#include <FairParIo.h>
4#include <Rtypes.h>
5#include <memory>
6#include <string>
7#include <string_view>
8#include <vector>
9
10class TFile;
11class FairParSet;
12
13namespace R3B
14{
15 class ParRootFileIo : public FairParIo
16 {
17 public:
18 explicit ParRootFileIo(bool is_input);
19 ParRootFileIo(const ParRootFileIo&) = delete;
23 ~ParRootFileIo() override;
24
25 void open(std::string_view file_name, std::string_view file_option);
26 void open(const std::vector<std::string>& filenames, std::string_view file_option = "read");
27 void open(std::unique_ptr<TFile> root_file);
28
37 bool read_parameter(FairParSet* par);
38
46 int write_parameter(FairParSet* par);
47
53 static auto Input() { return std::make_unique<ParRootFileIo>(true); }
54
60 static auto Output() { return std::make_unique<ParRootFileIo>(false); }
61
62 auto get_first_root_file() -> auto* { return root_files_.front().get(); }
63
64 private:
65 bool is_input_ = true;
66 std::string run_name_;
67 std::vector<std::unique_ptr<TFile>> root_files_;
68
69 // private non-virtual functions:
70 auto read_parameter_from_run(FairParSet* par, bool is_ignored) -> bool;
71
72 // private virtual functions:
73 void readVersions(FairRtdbRun* current_par_run) override;
74 auto check() -> bool override;
75 void close() override;
76 void print() override {}
77 void cd() override;
78
79 public:
81 };
82
83} // namespace R3B
ParRootFileIo(ParRootFileIo &&)=delete
static auto Output()
Factory method to create an instance for parameter output.
auto check() -> bool override
~ParRootFileIo() override
auto get_first_root_file() -> auto *
bool read_parameter(FairParSet *par)
Read a parameter from the input root file.
std::vector< std::unique_ptr< TFile > > root_files_
void open(std::string_view file_name, std::string_view file_option)
auto read_parameter_from_run(FairParSet *par, bool is_ignored) -> bool
ParRootFileIo(const ParRootFileIo &)=delete
void print() override
ClassDefOverride(ParRootFileIo, 1)
ParRootFileIo & operator=(ParRootFileIo &&)=delete
void readVersions(FairRtdbRun *current_par_run) override
static auto Input()
Factory method to create an instance for parameter input.
int write_parameter(FairParSet *par)
Write the parameter to the output root file.
ParRootFileIo & operator=(const ParRootFileIo &)=delete
ParRootFileIo(bool is_input)