Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
ROOT::Experimental::RNTupleJoinProcessor Class Reference

Processor specialization for horizontally combined (joined) RNTupleProcessors.

Definition at line 741 of file RNTupleProcessor.hxx.

Public Member Functions

 RNTupleJoinProcessor (const RNTupleJoinProcessor &)=delete
 
 RNTupleJoinProcessor (RNTupleJoinProcessor &&)=delete
 
 ~RNTupleJoinProcessor () override=default
 
RNTupleJoinProcessor operator= (const RNTupleJoinProcessor &)=delete
 
RNTupleJoinProcessor operator= (RNTupleJoinProcessor &&)=delete
 
- Public Member Functions inherited from ROOT::Experimental::RNTupleProcessor
 RNTupleProcessor (const RNTupleProcessor &)=delete
 
 RNTupleProcessor (RNTupleProcessor &&)=delete
 
virtual ~RNTupleProcessor ()=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.
 
RNTupleProcessoroperator= (const RNTupleProcessor &)=delete
 
RNTupleProcessoroperator= (RNTupleProcessor &&)=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.
 

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_tAddFieldToEntry (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_tfAuxiliaryFieldIdxs
 
std::unique_ptr< RNTupleProcessorfAuxiliaryProcessor
 
std::set< Internal::RNTupleProcessorEntry::FieldIndex_tfJoinFieldIdxs
 
std::vector< std::string > fJoinFieldNames
 
std::unique_ptr< Internal::RNTupleJoinTablefJoinTable
 
bool fJoinTableIsBuilt = false
 
std::unique_ptr< RNTupleProcessorfPrimaryProcessor
 

Friends

class RNTupleProcessor
 

Additional Inherited Members

- Static Public Member Functions inherited from ROOT::Experimental::RNTupleProcessor
static std::unique_ptr< RNTupleProcessorCreate (RNTupleOpenSpec ntuple, std::string_view processorName="")
 Create an RNTupleProcessor for a single RNTuple.
 
static std::unique_ptr< RNTupleProcessorCreateChain (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< RNTupleProcessorCreateChain (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< RNTupleProcessorCreateJoin (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< RNTupleProcessorCreateJoin (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 inherited from ROOT::Experimental::RNTupleProcessor
 RNTupleProcessor (std::string_view processorName)
 Create a new base RNTupleProcessor.
 
const ROOT::RNTupleModelGetProtoModel () const
 Get the proto model used by the processor.
 
bool IsInitialized () const
 Check if the processor already has been initialized.
 
- Protected Attributes inherited from ROOT::Experimental::RNTupleProcessor
ROOT::NTupleSize_t fCurrentEntryNumber = 0
 
std::size_t fCurrentProcessorNumber = 0
 
std::shared_ptr< Internal::RNTupleProcessorEntryfEntry = nullptr
 
std::unordered_set< Internal::RNTupleProcessorEntry::FieldIndex_tfFieldIdxs
 
ROOT::NTupleSize_t fNEntries = kInvalidNTupleIndex
 Total number of entries.
 
ROOT::NTupleSize_t fNEntriesProcessed = 0
 
std::string fProcessorName
 
std::unique_ptr< ROOT::RNTupleModelfProtoModel = nullptr
 

#include <ROOT/RNTupleProcessor.hxx>

Inheritance diagram for ROOT::Experimental::RNTupleJoinProcessor:
[legend]

Constructor & Destructor Documentation

◆ RNTupleJoinProcessor() [1/3]

ROOT::Experimental::RNTupleJoinProcessor::RNTupleJoinProcessor ( std::unique_ptr< RNTupleProcessor > primaryProcessor,
std::unique_ptr< RNTupleProcessor > auxProcessor,
const std::vector< std::string > & joinFields,
std::string_view processorName )
private

Construct a new RNTupleJoinProcessor.

Parameters
[in]primaryProcessorThe primary processor. Its entries are processed in sequential order.
[in]auxProcessorThe 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]joinFieldsThe 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]processorNameName of the processor. Unless specified otherwise in RNTupleProcessor::CreateJoin, this is the name of the primary processor.

Definition at line 409 of file RNTupleProcessor.cxx.

◆ RNTupleJoinProcessor() [2/3]

ROOT::Experimental::RNTupleJoinProcessor::RNTupleJoinProcessor ( const RNTupleJoinProcessor & )
delete

◆ RNTupleJoinProcessor() [3/3]

ROOT::Experimental::RNTupleJoinProcessor::RNTupleJoinProcessor ( RNTupleJoinProcessor && )
delete

◆ ~RNTupleJoinProcessor()

ROOT::Experimental::RNTupleJoinProcessor::~RNTupleJoinProcessor ( )
overridedefault

Member Function Documentation

◆ AddEntriesToJoinTable()

void ROOT::Experimental::RNTupleJoinProcessor::AddEntriesToJoinTable ( Internal::RNTupleJoinTable & joinTable,
ROOT::NTupleSize_t entryOffset = 0 )
finalprivatevirtual

Add the entry mappings for this processor to the provided join table.

See also
ROOT::Experimental::RNTupleProcessor::AddEntriesToJoinTable

Implements ROOT::Experimental::RNTupleProcessor.

Definition at line 602 of file RNTupleProcessor.cxx.

◆ AddFieldToEntry()

ROOT::RResult< ROOT::Experimental::Internal::RNTupleProcessorEntry::FieldIndex_t > ROOT::Experimental::RNTupleJoinProcessor::AddFieldToEntry ( std::string_view fieldName,
void * valuePtr = nullptr,
const Internal::RNTupleProcessorProvenance & provenance = Internal::RNTupleProcessorProvenance() )
finalprivatevirtual

Add a field to the entry.

See also
RNTupleProcessor::AddFieldToEntry()

Implements ROOT::Experimental::RNTupleProcessor.

Definition at line 523 of file RNTupleProcessor.cxx.

◆ CanReadFieldFromDisk()

bool ROOT::Experimental::RNTupleJoinProcessor::CanReadFieldFromDisk ( std::string_view fieldName)
inlinefinalprivatevirtual

Check if a field exists on-disk and can be read by the processor.

See also
RNTupleProcessor::CanReadFieldFromDisk()

Implements ROOT::Experimental::RNTupleProcessor.

Definition at line 797 of file RNTupleProcessor.hxx.

◆ Connect()

void ROOT::Experimental::RNTupleJoinProcessor::Connect ( const std::unordered_set< Internal::RNTupleProcessorEntry::FieldIndex_t > & fieldIdxs,
const Internal::RNTupleProcessorProvenance & provenance = Internal::RNTupleProcessorProvenance(),
bool updateFields = false )
finalprivatevirtual

Connect the provided fields indices in the entry to their on-disk fields.

See also
RNTupleProcessor::Connect()

Implements ROOT::Experimental::RNTupleProcessor.

Definition at line 471 of file RNTupleProcessor.cxx.

◆ GetNEntries()

ROOT::NTupleSize_t ROOT::Experimental::RNTupleJoinProcessor::GetNEntries ( )
finalprivatevirtual

Get the total number of entries in this processor.

Implements ROOT::Experimental::RNTupleProcessor.

Definition at line 595 of file RNTupleProcessor.cxx.

◆ Initialize()

void ROOT::Experimental::RNTupleJoinProcessor::Initialize ( std::shared_ptr< Internal::RNTupleProcessorEntry > entry = nullptr)
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 423 of file RNTupleProcessor.cxx.

◆ LoadEntry()

ROOT::NTupleSize_t ROOT::Experimental::RNTupleJoinProcessor::LoadEntry ( ROOT::NTupleSize_t entryNumber)
finalprivatevirtual

Load the entry identified by the provided entry number of the primary processor.

See also
ROOT::Experimental::RNTupleProcessor::LoadEntry

Implements ROOT::Experimental::RNTupleProcessor.

Definition at line 547 of file RNTupleProcessor.cxx.

◆ operator=() [1/2]

RNTupleJoinProcessor ROOT::Experimental::RNTupleJoinProcessor::operator= ( const RNTupleJoinProcessor & )
delete

◆ operator=() [2/2]

RNTupleJoinProcessor ROOT::Experimental::RNTupleJoinProcessor::operator= ( RNTupleJoinProcessor && )
delete

◆ PrintStructureImpl()

void ROOT::Experimental::RNTupleJoinProcessor::PrintStructureImpl ( std::ostream & output) const
finalprivatevirtual

Processor-specific implementation for printing its structure, called by PrintStructure().

See also
ROOT::Experimental::RNTupleProcessor::PrintStructureImpl

Implements ROOT::Experimental::RNTupleProcessor.

Definition at line 608 of file RNTupleProcessor.cxx.

◆ SetAuxiliaryFieldValidity()

void ROOT::Experimental::RNTupleJoinProcessor::SetAuxiliaryFieldValidity ( bool validity)
private

Set the validity for all fields in the auxiliary processor at once.

Definition at line 540 of file RNTupleProcessor.cxx.

◆ SetProtoModel()

void ROOT::Experimental::RNTupleJoinProcessor::SetProtoModel ( std::unique_ptr< ROOT::RNTupleModel > primaryModel,
std::unique_ptr< ROOT::RNTupleModel > auxModel )
private

Set the processor's proto model by combining the primary and auxiliary models.

Parameters
[in]primaryModelThe proto model of the primary processor.
[in]auxModelThe 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 490 of file RNTupleProcessor.cxx.

Friends And Related Symbol Documentation

◆ RNTupleProcessor

friend class RNTupleProcessor
friend

Definition at line 742 of file RNTupleProcessor.hxx.

Member Data Documentation

◆ fAuxiliaryFieldIdxs

std::unordered_set<Internal::RNTupleProcessorEntry::FieldIndex_t> ROOT::Experimental::RNTupleJoinProcessor::fAuxiliaryFieldIdxs
private

Definition at line 754 of file RNTupleProcessor.hxx.

◆ fAuxiliaryProcessor

std::unique_ptr<RNTupleProcessor> ROOT::Experimental::RNTupleJoinProcessor::fAuxiliaryProcessor
private

Definition at line 746 of file RNTupleProcessor.hxx.

◆ fJoinFieldIdxs

std::set<Internal::RNTupleProcessorEntry::FieldIndex_t> ROOT::Experimental::RNTupleJoinProcessor::fJoinFieldIdxs
private

Definition at line 749 of file RNTupleProcessor.hxx.

◆ fJoinFieldNames

std::vector<std::string> ROOT::Experimental::RNTupleJoinProcessor::fJoinFieldNames
private

Definition at line 748 of file RNTupleProcessor.hxx.

◆ fJoinTable

std::unique_ptr<Internal::RNTupleJoinTable> ROOT::Experimental::RNTupleJoinProcessor::fJoinTable
private

Definition at line 751 of file RNTupleProcessor.hxx.

◆ fJoinTableIsBuilt

bool ROOT::Experimental::RNTupleJoinProcessor::fJoinTableIsBuilt = false
private

Definition at line 752 of file RNTupleProcessor.hxx.

◆ fPrimaryProcessor

std::unique_ptr<RNTupleProcessor> ROOT::Experimental::RNTupleJoinProcessor::fPrimaryProcessor
private

Definition at line 745 of file RNTupleProcessor.hxx.

Libraries for ROOT::Experimental::RNTupleJoinProcessor:

The documentation for this class was generated from the following files: