16#ifndef ROOT7_RNTupleMerger
17#define ROOT7_RNTupleMerger
27#include <unordered_map>
30namespace Experimental {
77 void Merge(std::span<RPageSource *> sources,
RPageSink &destination);
Given a set of RPageSources merge them into an RPageSink.
std::unordered_map< std::string, DescriptorId_t > fOutputIdMap
void AddColumnsFromField(std::vector< RColumnInfo > &columns, const RNTupleDescriptor &desc, const RFieldDescriptor &fieldDesc, const std::string &prefix="")
Recursively add columns from a given field.
void Merge(std::span< RPageSource * > sources, RPageSink &destination)
Merge a given set of sources into the destination.
std::vector< RColumnInfo > CollectColumns(const RNTupleDescriptor &descriptor)
Recursively collect all the columns for all the fields rooted at field zero.
void BuildColumnIdMap(std::vector< RColumnInfo > &columns)
Build the internal column id map from the first source This is where we assign the output ids for the...
void ValidateColumns(std::vector< RColumnInfo > &columns)
Validate the columns against the internal map that is built from the first source This is where we as...
Abstract interface to write data into an ntuple.
Meta-data stored for every field of an ntuple.
The on-storage meta-data of an ntuple.
std::uint64_t DescriptorId_t
Distriniguishes elements of the same type within a descriptor, e.g. different fields.
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
DescriptorId_t fColumnOutputId
std::string fColumnName
The qualified field name to which the column belongs, followed by the column index.
RColumnInfo(const std::string &name, const std::string &typeAndVersion, const DescriptorId_t &inputId, const DescriptorId_t &outputId)
DescriptorId_t fColumnInputId
std::string fColumnTypeAndVersion
"<type>.<version>" of the field to which the column belongs