Processor specialization for horizontally combined (joined) RNTupleProcessors.
Definition at line 740 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 std::string & | GetProcessorName () const |
| Get the name of the 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. | |
| template<typename T> | |
| RNTupleProcessorOptionalPtr< T > | RequestField (std::string_view fieldName, void *valuePtr=nullptr) |
| Request access to a field for reading during processing. | |
Static Public Member Functions | |
| static std::unique_ptr< RNTupleProcessor > | Create (RNTupleOpenSpec ntuple, std::string_view processorName="") |
| Create an RNTupleProcessor for a single RNTuple. | |
| static std::unique_ptr< RNTupleProcessor > | CreateChain (std::vector< RNTupleOpenSpec > ntuples, std::string_view processorName="") |
| Create an RNTupleProcessor for a chain (i.e., a vertical combination) of RNTuples. | |
| static std::unique_ptr< RNTupleProcessor > | CreateChain (std::vector< std::unique_ptr< RNTupleProcessor > > innerProcessors, std::string_view processorName="") |
| Create an RNTupleProcessor for a chain (i.e., a vertical combination) of other RNTupleProcessors. | |
| static std::unique_ptr< RNTupleProcessor > | CreateJoin (RNTupleOpenSpec primaryNTuple, RNTupleOpenSpec auxNTuple, const std::vector< std::string > &joinFields, std::string_view processorName="") |
| Create an RNTupleProcessor for a join (i.e., a horizontal combination) of RNTuples. | |
| static std::unique_ptr< RNTupleProcessor > | CreateJoin (std::unique_ptr< RNTupleProcessor > primaryProcessor, std::unique_ptr< RNTupleProcessor > auxProcessor, const std::vector< std::string > &joinFields, std::string_view processorName="") |
| Create an RNTupleProcessor for a join (i.e., a horizontal combination) of RNTuples. | |
Protected Member Functions | |
| const ROOT::RNTupleModel & | GetProtoModel () const |
| Get the proto model used by the processor. | |
| 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 |
| std::string | fProcessorName |
| std::unique_ptr< ROOT::RNTupleModel > | fProtoModel = nullptr |
Private Member Functions | |
| RNTupleJoinProcessor (std::unique_ptr< RNTupleProcessor > primaryProcessor, std::unique_ptr< RNTupleProcessor > auxProcessor, const std::vector< std::string > &joinFields, std::string_view processorName) | |
| 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. | |
| ROOT::RResult< Internal::RNTupleProcessorEntry::FieldIndex_t > | AddFieldToEntry (std::string_view fieldName, 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 setting fProtoModel and 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. | |
| void | SetProtoModel (std::unique_ptr< ROOT::RNTupleModel > primaryModel, std::unique_ptr< ROOT::RNTupleModel > auxModel) |
| Set the processor's proto model by combining the primary and auxiliary models. | |
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 |
|
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] | processorName | Name of the processor. Unless specified otherwise in RNTupleProcessor::CreateJoin, this is the name of the primary processor. |
Definition at line 404 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 597 of file RNTupleProcessor.cxx.
|
finalprivatevirtual |
Add a field to the entry.
Implements ROOT::Experimental::RNTupleProcessor.
Definition at line 518 of file RNTupleProcessor.cxx.
|
inlineinherited |
Definition at line 482 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 796 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 466 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] | processorName | The name to give to the processor. If empty, the name of the input RNTuple is used. |
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] | processorName | The name to give to the processor. If empty, the name of the first RNTuple is used. |
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] | processorName | The name to give to the processor. If empty, the name of the first inner processor is used. |
Definition at line 59 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] | processorName | The name to give to the processor. If empty, the name of the primary RNTuple is used. |
Definition at line 69 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] | processorName | The name to give to the processor. If empty, the name of the primary processor is used. |
Definition at line 89 of file RNTupleProcessor.cxx.
|
inlineinherited |
Definition at line 483 of file RNTupleProcessor.hxx.
|
inlineinherited |
Get the entry number that is currently being processed.
Definition at line 363 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 369 of file RNTupleProcessor.hxx.
|
finalprivatevirtual |
Get the total number of entries in this processor.
Implements ROOT::Experimental::RNTupleProcessor.
Definition at line 590 of file RNTupleProcessor.cxx.
|
inlineinherited |
Get the total number of entries processed so far.
Definition at line 359 of file RNTupleProcessor.hxx.
|
inlineinherited |
Get the name of the processor.
Unless this name was explicitly specified during creation of the processor, this is the name of the underlying RNTuple for RNTupleSingleProcessor, the name of the first processor for RNTupleChainProcessor, or the name of the primary processor for RNTupleJoinProcessor.
Definition at line 377 of file RNTupleProcessor.hxx.
|
inlineprotectedinherited |
Get the proto model used by the processor.
A processor's proto model contains all fields that can be accessed and is inferred from the descriptors of the underlying RNTuples. It is used in RequestField() to check that the requested field is actually valid.
Definition at line 296 of file RNTupleProcessor.hxx.
|
finalprivatevirtual |
Initialize the processor, by setting fProtoModel and creating an (initially empty) fEntry, or setting an existing one.
Implements ROOT::Experimental::RNTupleProcessor.
Definition at line 418 of file RNTupleProcessor.cxx.
|
inlineprotectedinherited |
Check if the processor already has been initialized.
Definition at line 271 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 542 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 420 of file RNTupleProcessor.hxx.
|
finalprivatevirtual |
Processor-specific implementation for printing its structure, called by PrintStructure().
Implements ROOT::Experimental::RNTupleProcessor.
Definition at line 603 of file RNTupleProcessor.cxx.
|
inlineinherited |
Request access to a field for reading during processing.
| T | Type of the requested field. |
| [in] | fieldName | Name of the requested field. |
Definition at line 394 of file RNTupleProcessor.hxx.
|
private |
Set the validity for all fields in the auxiliary processor at once.
Definition at line 535 of file RNTupleProcessor.cxx.
|
private |
Set the processor's proto model by combining the primary and auxiliary models.
| [in] | primaryModel | The proto model of the primary processor. |
| [in] | auxModel | The proto model of the auxiliary processors. |
To prevent field name clashes when one or more models have fields with duplicate names, fields from each auxiliary model are stored as a anonymous record, and subsequently registered as subfields in the join model. This way, they can be accessed from the processor's entry as auxNTupleName.fieldName.
Definition at line 485 of file RNTupleProcessor.cxx.
|
friend |
Definition at line 741 of file RNTupleProcessor.hxx.
|
private |
Definition at line 753 of file RNTupleProcessor.hxx.
|
private |
Definition at line 745 of file RNTupleProcessor.hxx.
|
protectedinherited |
Definition at line 261 of file RNTupleProcessor.hxx.
|
protectedinherited |
Definition at line 262 of file RNTupleProcessor.hxx.
|
protectedinherited |
Definition at line 253 of file RNTupleProcessor.hxx.
|
protectedinherited |
Definition at line 254 of file RNTupleProcessor.hxx.
|
private |
Definition at line 748 of file RNTupleProcessor.hxx.
|
private |
Definition at line 747 of file RNTupleProcessor.hxx.
|
private |
Definition at line 750 of file RNTupleProcessor.hxx.
|
private |
Definition at line 751 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 258 of file RNTupleProcessor.hxx.
|
protectedinherited |
Definition at line 260 of file RNTupleProcessor.hxx.
|
private |
Definition at line 744 of file RNTupleProcessor.hxx.
|
protectedinherited |
Definition at line 251 of file RNTupleProcessor.hxx.
|
protectedinherited |
Definition at line 252 of file RNTupleProcessor.hxx.