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 |
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< RNTupleOpenSpec > 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 76 of file RNTupleReader.cxx.
|
default |
|
inline |
Definition at line 342 of file RNTupleReader.hxx.
|
inline |
Definition at line 167 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 364 of file RNTupleReader.hxx.
|
inline |
Definition at line 343 of file RNTupleReader.hxx.
|
inline |
Definition at line 337 of file RNTupleReader.hxx.
|
inline |
Raises an exception if:
Definition at line 327 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 230 of file RNTupleReader.cxx.
|
inline |
Definition at line 317 of file RNTupleReader.hxx.
|
inline |
Definition at line 311 of file RNTupleReader.hxx.
|
private |
Definition at line 201 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 246 of file RNTupleReader.hxx.
|
inline |
Definition at line 365 of file RNTupleReader.hxx.
const ROOT::Experimental::RNTupleModel & ROOT::Experimental::RNTupleReader::GetModel | ( | ) |
Definition at line 128 of file RNTupleReader.cxx.
|
inline |
Definition at line 175 of file RNTupleReader.hxx.
|
inline |
Definition at line 287 of file RNTupleReader.hxx.
|
inline |
Definition at line 295 of file RNTupleReader.hxx.
|
inline |
Definition at line 303 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 269 of file RNTupleReader.hxx.
|
inline |
Definition at line 275 of file RNTupleReader.hxx.
|
inline |
Definition at line 281 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 219 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 229 of file RNTupleReader.hxx.
|
static |
Definition at line 102 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 94 of file RNTupleReader.cxx.
|
static |
Definition at line 109 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 86 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 117 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 137 of file RNTupleReader.cxx.
|
private |
Definition at line 238 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 208 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.