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 71 of file RNTupleReader.hxx.
Classes | |
class | RIterator |
struct | ROpenSpec |
Used to specify the underlying RNTuples in OpenFriends() More... | |
Public Member Functions | |
~RNTupleReader () | |
RIterator | begin () |
std::unique_ptr< RNTupleReader > | Clone () |
void | EnableMetrics () |
Enable performance measurements (decompression time, bytes read from storage, etc.) | |
RIterator | end () |
RNTupleCollectionView | GetCollectionView (DescriptorId_t fieldId) |
RNTupleCollectionView | GetCollectionView (std::string_view fieldName) |
Raises an exception if: | |
const RNTupleDescriptor & | GetDescriptor () |
Returns a cached copy of the page source descriptor. | |
template<typename T > | |
RNTupleDirectAccessView< T > | GetDirectAccessView (DescriptorId_t fieldId) |
template<typename T > | |
RNTupleDirectAccessView< T > | GetDirectAccessView (std::string_view fieldName) |
RNTupleGlobalRange | GetEntryRange () |
Returns an iterator over the entry indices of the RNTuple. | |
const Detail::RNTupleMetrics & | GetMetrics () const |
const RNTupleModel & | GetModel () |
NTupleSize_t | GetNEntries () const |
template<typename T > | |
RNTupleView< T > | GetView (DescriptorId_t fieldId) |
template<typename T > | |
RNTupleView< T > | GetView (DescriptorId_t fieldId, std::shared_ptr< T > objPtr) |
template<typename T > | |
RNTupleView< T > | GetView (DescriptorId_t fieldId, T *rawPtr) |
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. | |
template<typename T > | |
RNTupleView< T > | GetView (std::string_view fieldName, std::shared_ptr< T > objPtr) |
template<typename T > | |
RNTupleView< T > | GetView (std::string_view fieldName, T *rawPtr) |
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) const |
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 (const 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, const RNTuple &ntuple, const RNTupleReadOptions &options=RNTupleReadOptions()) |
static std::unique_ptr< RNTupleReader > | Open (std::unique_ptr< RNTupleModel > model, std::string_view ntupleName, std::string_view storage, const RNTupleReadOptions &options=RNTupleReadOptions()) |
The caller imposes a model, which must be compatible with the model found in the data on storage. | |
static std::unique_ptr< RNTupleReader > | OpenFriends (std::span< ROpenSpec > ntuples, const RNTupleReadOptions &options=RNTupleReadOptions()) |
Open RNTuples as one virtual, horizontally combined ntuple. | |
Private Member Functions | |
RNTupleReader (std::unique_ptr< Internal::RPageSource > source, const RNTupleReadOptions &options) | |
The model is generated from the ntuple metadata on storage. | |
RNTupleReader (std::unique_ptr< RNTupleModel > model, std::unique_ptr< Internal::RPageSource > source, const RNTupleReadOptions &options) | |
void | ConnectModel (RNTupleModel &model) |
RNTupleReader * | GetDisplayReader () |
void | InitPageSource (bool enableMetrics) |
DescriptorId_t | RetrieveFieldId (std::string_view fieldName) const |
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< Internal::RPageSource > | fSource |
std::unique_ptr< Internal::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/RNTupleReader.hxx>
|
private |
Definition at line 61 of file RNTupleReader.cxx.
|
explicitprivate |
The model is generated from the ntuple metadata on storage.
Definition at line 75 of file RNTupleReader.cxx.
|
default |
|
inline |
Definition at line 344 of file RNTupleReader.hxx.
|
inline |
Definition at line 177 of file RNTupleReader.hxx.
|
private |
Definition at line 28 of file RNTupleReader.cxx.
|
inline |
Enable performance measurements (decompression time, bytes read from storage, etc.)
Example: inspect the reader metrics after loading every entry
Definition at line 366 of file RNTupleReader.hxx.
|
inline |
Definition at line 345 of file RNTupleReader.hxx.
|
inline |
Definition at line 339 of file RNTupleReader.hxx.
|
inline |
Raises an exception if:
Definition at line 329 of file RNTupleReader.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 229 of file RNTupleReader.cxx.
|
inline |
Definition at line 321 of file RNTupleReader.hxx.
|
inline |
Definition at line 315 of file RNTupleReader.hxx.
|
private |
Definition at line 200 of file RNTupleReader.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 256 of file RNTupleReader.hxx.
|
inline |
Definition at line 367 of file RNTupleReader.hxx.
const ROOT::Experimental::RNTupleModel & ROOT::Experimental::RNTupleReader::GetModel | ( | ) |
Definition at line 127 of file RNTupleReader.cxx.
|
inline |
Definition at line 185 of file RNTupleReader.hxx.
|
inline |
Definition at line 297 of file RNTupleReader.hxx.
|
inline |
Definition at line 303 of file RNTupleReader.hxx.
|
inline |
Definition at line 309 of file RNTupleReader.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 279 of file RNTupleReader.hxx.
|
inline |
Definition at line 285 of file RNTupleReader.hxx.
|
inline |
Definition at line 291 of file RNTupleReader.hxx.
|
private |
Definition at line 46 of file RNTupleReader.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 229 of file RNTupleReader.hxx.
|
inline |
Fills a user provided entry after checking that the entry has been instantiated from the ntuple model.
Definition at line 239 of file RNTupleReader.hxx.
|
static |
Definition at line 101 of file RNTupleReader.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 93 of file RNTupleReader.cxx.
|
static |
Definition at line 108 of file RNTupleReader.cxx.
|
static |
The caller imposes a model, which must be compatible with the model found in the data on storage.
Definition at line 85 of file RNTupleReader.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 116 of file RNTupleReader.cxx.
void ROOT::Experimental::RNTupleReader::PrintInfo | ( | const ENTupleInfo | what = ENTupleInfo::kSummary , |
std::ostream & | output = std::cout |
||
) | const |
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 136 of file RNTupleReader.cxx.
|
private |
Definition at line 237 of file RNTupleReader.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 207 of file RNTupleReader.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 89 of file RNTupleReader.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 83 of file RNTupleReader.hxx.
|
private |
Definition at line 90 of file RNTupleReader.hxx.
|
private |
Needs to be destructed before fSource.
Definition at line 79 of file RNTupleReader.hxx.
|
private |
Definition at line 77 of file RNTupleReader.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 75 of file RNTupleReader.hxx.