15#include <spdlog/spdlog.h>
21 class RootFile :
public process::WriterTask<DataWriterOption::root, const StructData*, std::size_t>
24 static constexpr auto IsStructType =
true;
28 auto run(
const OutputTo<InputType>
auto& prev_data_converter, std::size_t line_number) -> RunResult
30 assert(line_number < get_n_lines());
31 const auto* input_data = prev_data_converter(line_number);
32 assert(input_data !=
nullptr);
33 data_struct_buffers_[line_number] = *input_data;
34 output_data_[line_number] =
static_cast<std::size_t
>(trees_[line_number]->Fill());
35 return output_data_[line_number];
39 RootFile(
const RootFile&) =
delete;
40 RootFile(RootFile&&) =
delete;
41 RootFile& operator=(
const RootFile&) =
delete;
42 RootFile& operator=(RootFile&&) =
delete;
45 std::string base_filename_;
46 std::vector<std::unique_ptr<TFile>> root_files_;
47 std::vector<TTree*> trees_;
48 std::vector<StructData> data_struct_buffers_;
49 std::vector<OutputType> output_data_;