Processor specialization for horizontally combined (joined) RNTupleProcessors.
Definition at line 779 of file RNTupleProcessor.hxx.
Public Member Functions | |
| RNTupleJoinProcessor (const RNTupleJoinProcessor &)=delete | |
| RNTupleJoinProcessor (RNTupleJoinProcessor &&)=delete | |
| ~RNTupleJoinProcessor () override=default | |
| RIterator | begin () |
| RIterator | end () |
| ROOT::NTupleSize_t | GetCurrentEntryNumber () const |
| Get the entry number that is currently being processed. | |
| std::size_t | GetCurrentProcessorNumber () const |
| Get the number of the inner processor currently being read. | |
| ROOT::NTupleSize_t | GetNEntriesProcessed () const |
| Get the total number of entries processed so far. | |
| const RNTupleProcessorOptions & | GetOptions () const |
| Get the options used for this processor. | |
| RNTupleJoinProcessor | operator= (const RNTupleJoinProcessor &)=delete |
| RNTupleJoinProcessor | operator= (RNTupleJoinProcessor &&)=delete |
| void | PrintStructure (std::ostream &output=std::cout) |
| Print a graphical representation of the processor composition. | |
| RNTupleProcessorOptionalPtr< void > | RequestField (const std::string &fieldName, const std::string &typeName, void *valuePtr=nullptr) |
| Request access to a field for reading during processing. | |
| template<typename T > | |
| RNTupleProcessorOptionalPtr< T > | RequestField (const std::string &fieldName, void *valuePtr=nullptr) |
| Request access to a field for reading during processing. | |
Protected Member Functions | |
| bool | IsInitialized () const |
| Check if the processor already has been initialized. | |
Protected Attributes | |
| ROOT::NTupleSize_t | fCurrentEntryNumber = 0 |
| std::size_t | fCurrentProcessorNumber = 0 |
| std::shared_ptr< Internal::RNTupleProcessorEntry > | fEntry = nullptr |
| std::unordered_set< Internal::RNTupleProcessorEntry::FieldIndex_t > | fFieldIdxs |
| ROOT::NTupleSize_t | fNEntries = kInvalidNTupleIndex |
| Total number of entries. | |
| ROOT::NTupleSize_t | fNEntriesProcessed = 0 |
| RNTupleProcessorOptions | fOptions |
Private Member Functions | |
| RNTupleJoinProcessor (std::unique_ptr< RNTupleProcessor > primaryProcessor, std::unique_ptr< RNTupleProcessor > auxProcessor, const std::vector< std::string > &joinFields, const RNTupleProcessorOptions &opts) | |
| Construct a new RNTupleJoinProcessor. | |
| void | AddEntriesToJoinTable (Internal::RNTupleJoinTable &joinTable, ROOT::NTupleSize_t entryOffset=0) final |
| Add the entry mappings for this processor to the provided join table. | |
| Internal::RNTupleProcessorEntry::FieldIndex_t | AddFieldToEntry (const std::string &fieldName, const std::string &typeName, void *valuePtr=nullptr, const Internal::RNTupleProcessorProvenance &provenance=Internal::RNTupleProcessorProvenance()) final |
| Add a field to the entry. | |
| bool | CanReadFieldFromDisk (std::string_view fieldName) final |
| Check if a field exists on-disk and can be read by the processor. | |
| void | Connect (const std::unordered_set< Internal::RNTupleProcessorEntry::FieldIndex_t > &fieldIdxs, const Internal::RNTupleProcessorProvenance &provenance=Internal::RNTupleProcessorProvenance(), bool updateFields=false) final |
| Connect the provided fields indices in the entry to their on-disk fields. | |
| ROOT::NTupleSize_t | GetNEntries () final |
| Get the total number of entries in this processor. | |
| void | Initialize (std::shared_ptr< Internal::RNTupleProcessorEntry > entry=nullptr) final |
Initialize the processor by creating an (initially empty) fEntry, or setting an existing one. | |
| ROOT::NTupleSize_t | LoadEntry (ROOT::NTupleSize_t entryNumber) final |
| Load the entry identified by the provided entry number of the primary processor. | |
| void | PrintStructureImpl (std::ostream &output) const final |
| Processor-specific implementation for printing its structure, called by PrintStructure(). | |
| void | SetAuxiliaryFieldValidity (bool validity) |
| Set the validity for all fields in the auxiliary processor at once. | |
Private Attributes | |
| std::unordered_set< Internal::RNTupleProcessorEntry::FieldIndex_t > | fAuxiliaryFieldIdxs |
| std::unique_ptr< RNTupleProcessor > | fAuxiliaryProcessor |
| std::set< Internal::RNTupleProcessorEntry::FieldIndex_t > | fJoinFieldIdxs |
| std::vector< std::string > | fJoinFieldNames |
| std::unique_ptr< Internal::RNTupleJoinTable > | fJoinTable |
| bool | fJoinTableIsBuilt = false |
| std::unique_ptr< RNTupleProcessor > | fPrimaryProcessor |
Friends | |
| class | RNTupleProcessor |
#include <ROOT/RNTupleProcessor.hxx>
|
private |
Construct a new RNTupleJoinProcessor.
| [in] | primaryProcessor | The primary processor. Its entries are processed in sequential order. |
| [in] | auxProcessor | The processor to join the primary processor with. The order in which its entries are processed is determined by the primary processor and doesn't necessarily have to be sequential. |
| [in] | joinFields | The names of the fields on which to join, in case the specified processors are unaligned. The join is made based on the combined join field values, and therefore each field has to be present in each specified processor. If an empty list is provided, it is assumed that the processors are fully aligned. |
| [in] | opts | Options for the processor. |
Definition at line 412 of file RNTupleProcessor.cxx.
|
delete |
|
delete |
|
overridedefault |
|
finalprivatevirtual |
Add the entry mappings for this processor to the provided join table.
Implements ROOT::Experimental::RNTupleProcessor.
Definition at line 572 of file RNTupleProcessor.cxx.
|
finalprivatevirtual |
Add a field to the entry.
Implements ROOT::Experimental::RNTupleProcessor.
Definition at line 482 of file RNTupleProcessor.cxx.
|
inlineinherited |
Definition at line 511 of file RNTupleProcessor.hxx.
|
inlinefinalprivatevirtual |
Check if a field exists on-disk and can be read by the processor.
Implements ROOT::Experimental::RNTupleProcessor.
Definition at line 823 of file RNTupleProcessor.hxx.
|
finalprivatevirtual |
Connect the provided fields indices in the entry to their on-disk fields.
Implements ROOT::Experimental::RNTupleProcessor.
Definition at line 462 of file RNTupleProcessor.cxx.
|
staticinherited |
Create an RNTupleProcessor for a single RNTuple.
| [in] | ntuple | The name and storage location of the RNTuple to process. |
| [in] | opts | Options for the processor. |
Definition at line 37 of file RNTupleProcessor.cxx.
|
staticinherited |
Create an RNTupleProcessor for a chain (i.e., a vertical combination) of RNTuples.
| [in] | ntuples | A list specifying the names and locations of the RNTuples to process. |
| [in] | opts | Options for the processor. |
Definition at line 43 of file RNTupleProcessor.cxx.
|
staticinherited |
Create an RNTupleProcessor for a chain (i.e., a vertical combination) of other RNTupleProcessors.
| [in] | innerProcessors | A list with the processors to chain. |
| [in] | opts | Options for the processor. |
Definition at line 60 of file RNTupleProcessor.cxx.
|
staticinherited |
Create an RNTupleProcessor for a join (i.e., a horizontal combination) of RNTuples.
| [in] | primaryNTuple | The name and location of the primary RNTuple. Its entries are processed in sequential order. |
| [in] | auxNTuple | The name and location of the RNTuple to join the primary RNTuple with. The order in which its entries are processed is determined by the primary RNTuple and doesn't necessarily have to be sequential. |
| [in] | joinFields | The names of the fields on which to join, in case the specified RNTuples are unaligned. The join is made based on the combined join field values, and therefore each field has to be present in each specified RNTuple. If an empty list is provided, it is assumed that the specified ntuple are fully aligned. |
| [in] | opts | Options for the processor. |
Definition at line 70 of file RNTupleProcessor.cxx.
|
staticinherited |
Create an RNTupleProcessor for a join (i.e., a horizontal combination) of RNTuples.
| [in] | primaryProcessor | The primary processor. Its entries are processed in sequential order. |
| [in] | auxProcessor | The processor to join the primary processor with. The order in which its entries are processed is determined by the primary processor and doesn't necessarily have to be sequential. |
| [in] | joinFields | The names of the fields on which to join, in case the specified processors are unaligned. The join is made based on the combined join field values, and therefore each field has to be present in each specified processors. If an empty list is provided, it is assumed that the specified processors are fully aligned. |
| [in] | opts | Options for the processor. |
Definition at line 90 of file RNTupleProcessor.cxx.
|
inlineinherited |
Definition at line 512 of file RNTupleProcessor.hxx.
|
inlineinherited |
Get the entry number that is currently being processed.
Definition at line 372 of file RNTupleProcessor.hxx.
|
inlineinherited |
Get the number of the inner processor currently being read.
This method is only relevant for the RNTupleChainProcessor. For the other processors, 0 is always returned.
Definition at line 378 of file RNTupleProcessor.hxx.
|
finalprivatevirtual |
Get the total number of entries in this processor.
Implements ROOT::Experimental::RNTupleProcessor.
Definition at line 565 of file RNTupleProcessor.cxx.
|
inlineinherited |
Get the total number of entries processed so far.
Definition at line 368 of file RNTupleProcessor.hxx.
|
inlineinherited |
Get the options used for this processor.
Definition at line 364 of file RNTupleProcessor.hxx.
|
finalprivatevirtual |
Initialize the processor by creating an (initially empty) fEntry, or setting an existing one.
Implements ROOT::Experimental::RNTupleProcessor.
Definition at line 426 of file RNTupleProcessor.cxx.
|
inlineprotectedinherited |
Check if the processor already has been initialized.
Definition at line 286 of file RNTupleProcessor.hxx.
|
finalprivatevirtual |
Load the entry identified by the provided entry number of the primary processor.
Implements ROOT::Experimental::RNTupleProcessor.
Definition at line 519 of file RNTupleProcessor.cxx.
|
delete |
|
delete |
|
inlineinherited |
Print a graphical representation of the processor composition.
| [in,out] | output | Stream to print to (default is stdout). |
The structure of a processor representing a join between a single primary RNTuple and a chain of two auxiliary RNTuples will be printed as follows:
Definition at line 449 of file RNTupleProcessor.hxx.
|
finalprivatevirtual |
Processor-specific implementation for printing its structure, called by PrintStructure().
Implements ROOT::Experimental::RNTupleProcessor.
Definition at line 578 of file RNTupleProcessor.cxx.
|
inlineinherited |
Request access to a field for reading during processing.
| [in] | fieldName | Name of the requested field. |
| [in] | typeName | Type of the requested field. |
| [in] | valuePtr | Pointer to bind to the field's value in the entry. If this is a nullptr, a pointer will be created. |
valuePtr with care! Values may not always be valid for every entry during processing, for example when a field is not present in one of the chained processors or when during a join operation, no matching entry in the auxiliary processor can be found. Reading valuePtr as-is therefore comes with the risk of reading invalid data. After passing a pointer to RequestField, we strongly recommend only accessing its data through the interface of the returned RNTupleProcessorOptionalPtr, to ensure that only valid data can be read. Definition at line 424 of file RNTupleProcessor.hxx.
|
inlineinherited |
Request access to a field for reading during processing.
| T | Type of the requested field. |
| [in] | fieldName | Name of the requested field. |
| [in] | valuePtr | Pointer to bind to the field's value in the entry. If this is a nullptr, a pointer will be created. |
T, which provides access to the field's value.valuePtr with care! Values may not always be valid for every entry during processing, for example when a field is not present in one of the chained processors or when during a join operation, no matching entry in the auxiliary processor can be found. Reading valuePtr as-is therefore comes with the risk of reading invalid data. After passing a pointer to RequestField, we strongly recommend only accessing its data through the interface of the returned RNTupleProcessorOptionalPtr, to ensure that only valid data can be read. Definition at line 397 of file RNTupleProcessor.hxx.
|
private |
Set the validity for all fields in the auxiliary processor at once.
Definition at line 512 of file RNTupleProcessor.cxx.
|
friend |
Definition at line 780 of file RNTupleProcessor.hxx.
|
private |
Definition at line 792 of file RNTupleProcessor.hxx.
|
private |
Definition at line 784 of file RNTupleProcessor.hxx.
|
protectedinherited |
Definition at line 277 of file RNTupleProcessor.hxx.
|
protectedinherited |
Definition at line 278 of file RNTupleProcessor.hxx.
|
protectedinherited |
Definition at line 269 of file RNTupleProcessor.hxx.
|
protectedinherited |
Definition at line 270 of file RNTupleProcessor.hxx.
|
private |
Definition at line 787 of file RNTupleProcessor.hxx.
|
private |
Definition at line 786 of file RNTupleProcessor.hxx.
|
private |
Definition at line 789 of file RNTupleProcessor.hxx.
Definition at line 790 of file RNTupleProcessor.hxx.
|
protectedinherited |
Total number of entries.
Only to be used internally by the processor, not meant to be exposed in the public interface.
Definition at line 274 of file RNTupleProcessor.hxx.
|
protectedinherited |
Definition at line 276 of file RNTupleProcessor.hxx.
|
protectedinherited |
Definition at line 267 of file RNTupleProcessor.hxx.
|
private |
Definition at line 783 of file RNTupleProcessor.hxx.