An RNTuple that is used to read data from storage.
An input ntuple provides data from storage as C++ objects. The ntuple model can be created from the data on storage or it can be imposed by the user. The latter case allows users to read into a specialized ntuple model that covers only a subset of the fields in the ntuple. The ntuple model is used when reading complete entries. Individual fields can be read as well by instantiating a tree view.
Definition at line 101 of file RNTuple.hxx.
Classes | |
class | RIterator |
struct | ROpenSpec |
Used to specify the underlying RNTuples in OpenFriends() More... | |
Public Member Functions | |
RNTupleReader (std::unique_ptr< Detail::RPageSource > source) | |
The model is generated from the ntuple metadata on storage. | |
RNTupleReader (std::unique_ptr< RNTupleModel > model, std::unique_ptr< Detail::RPageSource > source) | |
The user imposes an ntuple model, which must be compatible with the model found in the data on storage. | |
~RNTupleReader () | |
RIterator | begin () |
std::unique_ptr< RNTupleReader > | Clone () |
void | EnableMetrics () |
Enable performance measurements (decompression time, bytes read from storage, etc.) | |
RIterator | end () |
const RNTupleDescriptor * | GetDescriptor () |
Returns a cached copy of the page source descriptor. | |
RNTupleGlobalRange | GetEntryRange () |
Returns an iterator over the entry indices of the RNTuple. | |
const Detail::RNTupleMetrics & | GetMetrics () const |
RNTupleModel * | GetModel () |
NTupleSize_t | GetNEntries () const |
template<typename T > | |
RNTupleView< T > | GetView (std::string_view fieldName) |
Provides access to an individual field that can contain either a scalar value or a collection, e.g. | |
RNTupleViewCollection | GetViewCollection (std::string_view fieldName) |
Raises an exception if: | |
void | LoadEntry (NTupleSize_t index) |
Analogous to Fill(), fills the default entry of the model. | |
void | LoadEntry (NTupleSize_t index, REntry &entry) |
Fills a user provided entry after checking that the entry has been instantiated from the ntuple model. | |
void | PrintInfo (const ENTupleInfo what=ENTupleInfo::kSummary, std::ostream &output=std::cout) |
Prints a detailed summary of the ntuple, including a list of fields. | |
void | Show (NTupleSize_t index, std::ostream &output=std::cout) |
Shows the values of the i-th entry/row, starting with 0 for the first entry. | |
Static Public Member Functions | |
static std::unique_ptr< RNTupleReader > | Open (RNTuple *ntuple, const RNTupleReadOptions &options=RNTupleReadOptions()) |
static std::unique_ptr< RNTupleReader > | Open (std::string_view ntupleName, std::string_view storage, const RNTupleReadOptions &options=RNTupleReadOptions()) |
Open an RNTuple for reading. | |
static std::unique_ptr< RNTupleReader > | Open (std::unique_ptr< RNTupleModel > model, std::string_view ntupleName, std::string_view storage, const RNTupleReadOptions &options=RNTupleReadOptions()) |
Throws an exception if the model is null. | |
static std::unique_ptr< RNTupleReader > | OpenFriends (std::span< ROpenSpec > ntuples) |
Open RNTuples as one virtual, horizontally combined ntuple. | |
Private Member Functions | |
void | ConnectModel (const RNTupleModel &model) |
RNTupleReader * | GetDisplayReader () |
void | InitPageSource () |
Private Attributes | |
std::unique_ptr< RNTupleDescriptor > | fCachedDescriptor |
The ntuple descriptor in the page source is protected by a read-write lock. | |
std::unique_ptr< RNTupleReader > | fDisplayReader |
We use a dedicated on-demand reader for Show() and Scan(). | |
Detail::RNTupleMetrics | fMetrics |
std::unique_ptr< RNTupleModel > | fModel |
Needs to be destructed before fSource. | |
std::unique_ptr< Detail::RPageSource > | fSource |
std::unique_ptr< Detail::RPageStorage::RTaskScheduler > | fUnzipTasks |
Set as the page source's scheduler for parallel page decompression if IMT is on Needs to be destructed after the pages source is destructed (an thus be declared before) | |
#include <ROOT/RNTuple.hxx>
ROOT::Experimental::RNTupleReader::RNTupleReader | ( | std::unique_ptr< RNTupleModel > | model, |
std::unique_ptr< Detail::RPageSource > | source | ||
) |
The user imposes an ntuple model, which must be compatible with the model found in the data on storage.
Throws an exception if the model or the source is null.
Definition at line 94 of file RNTuple.cxx.
|
explicit |
The model is generated from the ntuple metadata on storage.
Throws an exception if the source is null.
Definition at line 112 of file RNTuple.cxx.
|
default |
|
inline |
Definition at line 320 of file RNTuple.hxx.
|
inline |
Definition at line 199 of file RNTuple.hxx.
|
private |
Definition at line 67 of file RNTuple.cxx.
|
inline |
Enable performance measurements (decompression time, bytes read from storage, etc.)
Example: inspect the reader metrics after loading every entry
Definition at line 342 of file RNTuple.hxx.
|
inline |
Definition at line 321 of file RNTuple.hxx.
const ROOT::Experimental::RNTupleDescriptor * ROOT::Experimental::RNTupleReader::GetDescriptor | ( | ) |
Returns a cached copy of the page source descriptor.
The returned pointer remains valid until the next call to LoadEntry or to any of the views returned from the reader.
Definition at line 255 of file RNTuple.cxx.
|
private |
Definition at line 226 of file RNTuple.cxx.
|
inline |
Returns an iterator over the entry indices of the RNTuple.
Example: iterate over all entries and print each entry in JSON format
Definition at line 276 of file RNTuple.hxx.
|
inline |
Definition at line 343 of file RNTuple.hxx.
ROOT::Experimental::RNTupleModel * ROOT::Experimental::RNTupleReader::GetModel | ( | ) |
Definition at line 153 of file RNTuple.cxx.
|
inline |
Definition at line 203 of file RNTuple.hxx.
|
inline |
Provides access to an individual field that can contain either a scalar value or a collection, e.g.
GetView<double>("particles.pt") or GetView<std::vector<double>>("particle"). It can as well be the index field of a collection itself, like GetView<NTupleSize_t>("particle").
Raises an exception if there is no field with the given name.
Example: iterate over a field named "pt" of type float
Definition at line 299 of file RNTuple.hxx.
|
inline |
Raises an exception if:
Definition at line 311 of file RNTuple.hxx.
|
private |
Definition at line 82 of file RNTuple.cxx.
|
inline |
Analogous to Fill(), fills the default entry of the model.
Returns false at the end of the ntuple. On I/O errors, raises an exception.
Definition at line 246 of file RNTuple.hxx.
|
inline |
Fills a user provided entry after checking that the entry has been instantiated from the ntuple model.
Definition at line 255 of file RNTuple.hxx.
|
static |
Definition at line 138 of file RNTuple.cxx.
|
static |
Open an RNTuple for reading.
Throws an RException if there is no RNTuple with the given name.
Example: open an RNTuple and print the number of entries
Definition at line 131 of file RNTuple.cxx.
|
static |
Throws an exception if the model is null.
Definition at line 124 of file RNTuple.cxx.
|
static |
Open RNTuples as one virtual, horizontally combined ntuple.
The underlying RNTuples must have an identical number of entries. Fields in the combined RNTuple are named with the ntuple name as a prefix, e.g. myNTuple1.px and myNTuple2.pt (see tutorial ntpl006_friends)
Definition at line 144 of file RNTuple.cxx.
void ROOT::Experimental::RNTupleReader::PrintInfo | ( | const ENTupleInfo | what = ENTupleInfo::kSummary , |
std::ostream & | output = std::cout |
||
) |
Prints a detailed summary of the ntuple, including a list of fields.
Example: print summary information to stdout
Example: print detailed column storage data to stderr
For use of ENTupleInfo::kMetrics, see EnableMetrics.
Definition at line 162 of file RNTuple.cxx.
void ROOT::Experimental::RNTupleReader::Show | ( | NTupleSize_t | index, |
std::ostream & | output = std::cout |
||
) |
Shows the values of the i-th entry/row, starting with 0 for the first entry.
By default, prints the output in JSON format. Uses the visitor pattern to traverse through each field of the given entry.
Definition at line 233 of file RNTuple.cxx.
|
private |
The ntuple descriptor in the page source is protected by a read-write lock.
We don't expose that to the users of RNTupleReader::GetDescriptor(). Instead, if descriptor information is needed, we clone the descriptor. Using the descriptor's generation number, we know if the cached descriptor is stale. Retrieving descriptor data from an RNTupleReader is supposed to be for testing and information purposes, not on a hot code path.
Definition at line 119 of file RNTuple.hxx.
|
private |
We use a dedicated on-demand reader for Show() and Scan().
Printing data uses all the fields from the full model even if the analysis code uses only a subset of fields. The display reader is a clone of the original reader.
Definition at line 113 of file RNTuple.hxx.
|
private |
Definition at line 120 of file RNTuple.hxx.
|
private |
Needs to be destructed before fSource.
Definition at line 109 of file RNTuple.hxx.
|
private |
Definition at line 107 of file RNTuple.hxx.
|
private |
Set as the page source's scheduler for parallel page decompression if IMT is on Needs to be destructed after the pages source is destructed (an thus be declared before)
Definition at line 105 of file RNTuple.hxx.