The on-storage meta-data of an ntuple.
Represents the on-disk (on storage) information about an ntuple. The meta-data consists of a header and one or several footers. The header carries the ntuple schema, i.e. the fields and the associated columns and their relationships. The footer(s) carry information about one or several clusters. For every cluster, a footer stores its location and size, and for every column the range of element indexes as well as a list of pages and page locations.
The descriptor provide machine-independent (de-)serialization of headers and footers, and it provides lookup routines for ntuple objects (pages, clusters, ...). It is supposed to be usable by all RPageStorage implementations.
The serialization does not use standard ROOT streamers in order to not let it depend on libCore. The serialization uses the concept of frames: header, footer, and substructures have a preamble with version numbers and the size of the writte struct. This allows for forward and backward compatibility when the meta-data evolves.
Definition at line 410 of file RNTupleDescriptor.hxx.
|
| RNTupleDescriptor ()=default |
|
| RNTupleDescriptor (const RNTupleDescriptor &other)=delete |
|
| RNTupleDescriptor (RNTupleDescriptor &&other)=default |
|
RResult< void > | AddClusterDetails (RClusterDescriptor &&clusterDesc) |
| Methods to load and drop cluster details.
|
|
std::unique_ptr< RNTupleDescriptor > | Clone () const |
|
RResult< void > | DropClusterDetails (DescriptorId_t clusterId) |
|
DescriptorId_t | FindClusterId (DescriptorId_t physicalColumnId, NTupleSize_t index) const |
|
DescriptorId_t | FindFieldId (std::string_view fieldName) const |
| Searches for a top-level field.
|
|
DescriptorId_t | FindFieldId (std::string_view fieldName, DescriptorId_t parentId) const |
|
DescriptorId_t | FindLogicalColumnId (DescriptorId_t fieldId, std::uint32_t columnIndex) const |
|
DescriptorId_t | FindNextClusterId (DescriptorId_t clusterId) const |
|
DescriptorId_t | FindPhysicalColumnId (DescriptorId_t fieldId, std::uint32_t columnIndex) const |
|
DescriptorId_t | FindPrevClusterId (DescriptorId_t clusterId) const |
|
std::unique_ptr< RNTupleModel > | GenerateModel () const |
| Re-create the C++ model from the stored meta-data.
|
|
const RClusterDescriptor & | GetClusterDescriptor (DescriptorId_t clusterId) const |
|
const RClusterGroupDescriptor & | GetClusterGroupDescriptor (DescriptorId_t clusterGroupId) const |
|
RClusterGroupDescriptorIterable | GetClusterGroupIterable () const |
|
RClusterDescriptorIterable | GetClusterIterable () const |
|
const RColumnDescriptor & | GetColumnDescriptor (DescriptorId_t columnId) const |
|
RColumnDescriptorIterable | GetColumnIterable () const |
|
RColumnDescriptorIterable | GetColumnIterable (const RFieldDescriptor &fieldDesc) const |
|
RColumnDescriptorIterable | GetColumnIterable (DescriptorId_t fieldId) const |
|
std::string | GetDescription () const |
|
const RFieldDescriptor & | GetFieldDescriptor (DescriptorId_t fieldId) const |
|
RFieldDescriptorIterable | GetFieldIterable (const RFieldDescriptor &fieldDesc) const |
|
RFieldDescriptorIterable | GetFieldIterable (const RFieldDescriptor &fieldDesc, const std::function< bool(DescriptorId_t, DescriptorId_t)> &comparator) const |
|
RFieldDescriptorIterable | GetFieldIterable (DescriptorId_t fieldId) const |
|
RFieldDescriptorIterable | GetFieldIterable (DescriptorId_t fieldId, const std::function< bool(DescriptorId_t, DescriptorId_t)> &comparator) const |
|
const RFieldDescriptor & | GetFieldZero () const |
|
DescriptorId_t | GetFieldZeroId () const |
| Returns the logical parent of all top-level NTuple data fields.
|
|
std::uint64_t | GetGeneration () const |
|
const RHeaderExtension * | GetHeaderExtension () const |
| Return header extension information; if the descriptor does not have a header extension, return nullptr
|
|
std::string | GetName () const |
|
std::size_t | GetNClusterGroups () const |
|
std::size_t | GetNClusters () const |
|
NTupleSize_t | GetNElements (DescriptorId_t physicalColumnId) const |
|
NTupleSize_t | GetNEntries () const |
| We know the number of entries from adding the cluster summaries.
|
|
std::size_t | GetNFields () const |
|
std::size_t | GetNLogicalColumns () const |
|
std::size_t | GetNPhysicalColumns () const |
|
std::uint64_t | GetOnDiskFooterSize () const |
|
std::uint64_t | GetOnDiskHeaderSize () const |
|
std::string | GetQualifiedFieldName (DescriptorId_t fieldId) const |
| Walks up the parents of the field ID and returns a field name of the form a.b.c.d In case of invalid field ID, an empty string is returned.
|
|
RFieldDescriptorIterable | GetTopLevelFields () const |
|
RFieldDescriptorIterable | GetTopLevelFields (const std::function< bool(DescriptorId_t, DescriptorId_t)> &comparator) const |
|
void | IncGeneration () |
|
RNTupleDescriptor & | operator= (const RNTupleDescriptor &other)=delete |
|
RNTupleDescriptor & | operator= (RNTupleDescriptor &&other)=default |
|
bool | operator== (const RNTupleDescriptor &other) const |
|
void | PrintInfo (std::ostream &output) const |
|
std::uint64_t ROOT::Experimental::RNTupleDescriptor::fGeneration = 0 |
|
private |
Once constructed by an RNTupleDescriptorBuilder, the descriptor is mostly immutable except for set of active the page locations.
During the lifetime of the descriptor, page location information for clusters can be added or removed. When this happens, the generation should be increased, so that users of the descriptor know that the information changed. The generation is increased, e.g., by the page source's exclusive lock guard around the descriptor. It is used, e.g., by the descriptor cache in RNTupleReader.
Definition at line 435 of file RNTupleDescriptor.hxx.