The RNTupleModel encapulates the schema of an ntuple.
The ntuple model comprises a collection of hierarchically organized fields. From a frozen model, "entries" can be extracted. For convenience, the model provides a default entry. Models have a unique model identifier that faciliates checking whether entries are compatible with it (i.e.: have been extracted from that model). A model needs to be frozen before it can be used to create a live ntuple.
Definition at line 46 of file RNTupleModel.hxx.
Public Member Functions | |
RNTupleModel () | |
RNTupleModel (const RNTupleModel &)=delete | |
~RNTupleModel ()=default | |
template<typename T > | |
void | AddField (std::string_view fieldName, T *fromWhere) |
void | AddField (std::unique_ptr< Detail::RFieldBase > field) |
Adds a field whose type is not known at compile time. Thus there is no shared pointer returned. | |
std::unique_ptr< RNTupleModel > | Clone () const |
std::unique_ptr< REntry > | CreateEntry () |
template<typename T > | |
T * | Get (std::string_view fieldName) |
REntry * | GetDefaultEntry () |
std::string | GetDescription () const |
RFieldZero * | GetFieldZero () const |
RNTupleUuid | GetUuid () const |
RNTupleVersion | GetVersion () const |
std::shared_ptr< RCollectionNTuple > | MakeCollection (std::string_view fieldName, std::unique_ptr< RNTupleModel > collectionModel) |
Ingests a model for a sub collection and attaches it to the current model. | |
template<typename T , typename... ArgsT> | |
std::shared_ptr< T > | MakeField (std::string_view fieldName, ArgsT &&... args) |
Creates a new field and a corresponding tree value that is managed by a shared pointer. | |
RNTupleModel & | operator= (const RNTupleModel &)=delete |
Static Public Member Functions | |
static std::unique_ptr< RNTupleModel > | Create () |
Private Member Functions | |
void | EnsureValidFieldName (std::string_view fieldName) |
Checks that user-provided field names are valid in the context of this NTuple model. | |
Private Attributes | |
std::unique_ptr< REntry > | fDefaultEntry |
Contains field values corresponding to the created top-level fields. | |
std::unordered_set< std::string > | fFieldNames |
Keeps track of which field names are taken. | |
std::unique_ptr< RFieldZero > | fFieldZero |
Hierarchy of fields consisting of simple types and collections (sub trees) | |
#include <ROOT/RNTupleModel.hxx>
ROOT::Experimental::RNTupleModel::RNTupleModel | ( | ) |
Definition at line 38 of file RNTupleModel.cxx.
|
delete |
|
default |
|
inline |
Definition at line 81 of file RNTupleModel.hxx.
void ROOT::Experimental::RNTupleModel::AddField | ( | std::unique_ptr< Detail::RFieldBase > | field | ) |
Adds a field whose type is not known at compile time. Thus there is no shared pointer returned.
Definition at line 53 of file RNTupleModel.cxx.
std::unique_ptr< ROOT::Experimental::RNTupleModel > ROOT::Experimental::RNTupleModel::Clone | ( | ) | const |
Definition at line 43 of file RNTupleModel.cxx.
|
inlinestatic |
Definition at line 65 of file RNTupleModel.hxx.
std::unique_ptr< ROOT::Experimental::REntry > ROOT::Experimental::RNTupleModel::CreateEntry | ( | ) |
Definition at line 72 of file RNTupleModel.cxx.
|
private |
Checks that user-provided field names are valid in the context of this NTuple model.
Throws an RException for invalid names.
Definition at line 26 of file RNTupleModel.cxx.
|
inline |
Definition at line 89 of file RNTupleModel.hxx.
|
inline |
Definition at line 99 of file RNTupleModel.hxx.
|
inline |
Definition at line 102 of file RNTupleModel.hxx.
|
inline |
Definition at line 98 of file RNTupleModel.hxx.
|
inline |
Definition at line 103 of file RNTupleModel.hxx.
|
inline |
Definition at line 101 of file RNTupleModel.hxx.
std::shared_ptr< ROOT::Experimental::RCollectionNTuple > ROOT::Experimental::RNTupleModel::MakeCollection | ( | std::string_view | fieldName, |
std::unique_ptr< RNTupleModel > | collectionModel | ||
) |
Ingests a model for a sub collection and attaches it to the current model.
Definition at line 61 of file RNTupleModel.cxx.
|
inline |
Creates a new field and a corresponding tree value that is managed by a shared pointer.
Definition at line 69 of file RNTupleModel.hxx.
|
delete |
|
private |
Contains field values corresponding to the created top-level fields.
Definition at line 50 of file RNTupleModel.hxx.
|
private |
Keeps track of which field names are taken.
Definition at line 52 of file RNTupleModel.hxx.
|
private |
Hierarchy of fields consisting of simple types and collections (sub trees)
Definition at line 48 of file RNTupleModel.hxx.