Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
ROOT::Internal::RDF::RRDFCardinalityField< T > Class Template Referencefinal

template<typename T>
class ROOT::Internal::RDF::RRDFCardinalityField< T >

An artificial field that transforms an RNTuple column that contains the offset of collections into collection sizes.

It is used to provide the "number of" RDF columns for collections, e.g. R_rdf_sizeof_jets for a collection named jets.

This is similar to the RCardinalityField but it presents itself as an integer type. The template argument T must be an integral type.

Definition at line 96 of file RNTupleDS.cxx.

Public Member Functions

 RRDFCardinalityField (const RRDFCardinalityField &other)=delete
 
 RRDFCardinalityField (RRDFCardinalityField &&other)=default
 
 RRDFCardinalityField (std::string_view name)
 
 ~RRDFCardinalityField () override=default
 
std::size_t GetAlignment () const final
 What alignof(T) for this type returns.
 
std::size_t GetValueSize () const final
 What sizeof(T) for this type returns.
 
RRDFCardinalityFieldoperator= (const RRDFCardinalityField &other)=delete
 
RRDFCardinalityFieldoperator= (RRDFCardinalityField &&other)=default
 
void ReadGlobalImpl (ROOT::NTupleSize_t globalIndex, void *to) final
 Get the number of elements of the collection identified by globalIndex.
 
void ReadInClusterImpl (ROOT::RNTupleLocalIndex localIndex, void *to) final
 Get the number of elements of the collection identified by clusterIndex.
 
- Public Member Functions inherited from ROOT::Internal::RDF::RRDFCardinalityFieldBase
 RRDFCardinalityFieldBase (const RRDFCardinalityFieldBase &other)=delete
 
 RRDFCardinalityFieldBase (RRDFCardinalityFieldBase &&other)=default
 
 ~RRDFCardinalityFieldBase () override=default
 
const RColumnRepresentationsGetColumnRepresentations () const final
 Implementations in derived classes should return a static RColumnRepresentations object.
 
RRDFCardinalityFieldBaseoperator= (const RRDFCardinalityFieldBase &other)=delete
 
RRDFCardinalityFieldBaseoperator= (RRDFCardinalityFieldBase &&other)=default
 
- Public Member Functions inherited from ROOT::RFieldBase
 RFieldBase (const RFieldBase &)=delete
 
 RFieldBase (RFieldBase &&)=default
 
 RFieldBase (std::string_view name, std::string_view type, ROOT::ENTupleStructure structure, bool isSimple, std::size_t nRepetitions=0)
 The constructor creates the underlying column objects and connects them to either a sink or a source.
 
virtual ~RFieldBase ()=default
 
virtual void AcceptVisitor (ROOT::Detail::RFieldVisitor &visitor) const
 
RSchemaIterator begin ()
 
RConstSchemaIterator begin () const
 
RValue BindValue (std::shared_ptr< void > objPtr)
 Creates a value from a memory location with an already constructed object.
 
RConstSchemaIterator cbegin () const
 
RConstSchemaIterator cend () const
 
std::unique_ptr< RFieldBaseClone (std::string_view newName) const
 Copies the field and its subfields using a possibly new name and a new, unconnected set of columns.
 
RBulkValues CreateBulk ()
 Creates a new, initially empty bulk.
 
template<>
std::unique_ptr< void, typename RFieldBase::RCreateObjectDeleter< void >::deleter > CreateObject () const
 
template<typename T >
std::unique_ptr< T, typename RCreateObjectDeleter< T >::deleter > CreateObject () const
 Generates an object of the field type and allocates new initialized memory according to the type.
 
template<>
std::unique_ptr< void, typename ROOT::RFieldBase::RCreateObjectDeleter< void >::deleter > CreateObject () const
 
RValue CreateValue ()
 Generates an object of the field's type, wraps it in a shared pointer and returns it as an RValue connected to the field.
 
RSchemaIterator end ()
 
RConstSchemaIterator end () const
 
RColumnRepresentations::Selection_t GetColumnRepresentatives () const
 Returns the fColumnRepresentative pointee or, if unset (always the case for artificial fields), the field's default representative.
 
std::vector< const RFieldBase * > GetConstSubfields () const
 
const std::string & GetDescription () const
 Get the field's description.
 
const std::string & GetFieldName () const
 
virtual std::uint32_t GetFieldVersion () const
 Indicates an evolution of the mapping scheme from C++ type to columns.
 
std::vector< RFieldBase * > GetMutableSubfields ()
 
std::size_t GetNRepetitions () const
 
ROOT::DescriptorId_t GetOnDiskId () const
 
std::uint32_t GetOnDiskTypeChecksum () const
 Return checksum stored in the field descriptor; only valid after a call to ConnectPageSource(), if the field stored a type checksum.
 
std::uint32_t GetOnDiskTypeVersion () const
 Return the C++ type version stored in the field descriptor; only valid after a call to ConnectPageSource()
 
const RFieldBaseGetParent () const
 
std::string GetQualifiedFieldName () const
 Returns the field name and parent field names separated by dots (grandparent.parent.child)
 
EState GetState () const
 
ROOT::ENTupleStructure GetStructure () const
 
std::uint32_t GetTraits () const
 
const std::string & GetTypeAlias () const
 
virtual std::uint32_t GetTypeChecksum () const
 Return the current TClass reported checksum of this class. Only valid if kTraitTypeChecksum is set.
 
const std::string & GetTypeName () const
 
virtual std::uint32_t GetTypeVersion () const
 Indicates an evolution of the C++ type itself.
 
bool HasDefaultColumnRepresentative () const
 Whether or not an explicit column representative was set.
 
bool HasReadCallbacks () const
 
bool IsArtificial () const
 
bool IsSimple () const
 
RFieldBaseoperator= (const RFieldBase &)=delete
 
RFieldBaseoperator= (RFieldBase &&)=default
 
void SetColumnRepresentatives (const RColumnRepresentations::Selection_t &representatives)
 Fixes a column representative.
 
void SetDescription (std::string_view description)
 
void SetOnDiskId (ROOT::DescriptorId_t id)
 
virtual std::vector< RValueSplitValue (const RValue &value) const
 Creates the list of direct child values given an existing value for this field.
 

Protected Member Functions

std::unique_ptr< ROOT::RFieldBaseCloneImpl (std::string_view newName) const final
 Called by Clone(), which additionally copies the on-disk ID.
 
void ConstructValue (void *where) const final
 Constructs value in a given location of size at least GetValueSize(). Called by the base class' CreateValue().
 
- Protected Member Functions inherited from ROOT::Internal::RDF::RRDFCardinalityFieldBase
 RRDFCardinalityFieldBase (std::string_view name, std::string_view type)
 
void GenerateColumns () final
 Implementations in derived classes should create the backing columns corresponding to the field type for writing.
 
void GenerateColumns (const ROOT::RNTupleDescriptor &desc) final
 Implementations in derived classes should create the backing columns corresponding to the field type for reading.
 
void ReconcileOnDiskField (const RNTupleDescriptor &) final
 For non-artificial fields, check compatibility of the in-memory field and the on-disk field.
 
- Protected Member Functions inherited from ROOT::RFieldBase
size_t AddReadCallback (ReadCallback_t func)
 Set a user-defined function to be called after reading a value, giving a chance to inspect and/or modify the value object.
 
std::size_t Append (const void *from)
 Write the given value into columns.
 
virtual std::size_t AppendImpl (const void *from)
 Operations on values of complex types, e.g.
 
void Attach (std::unique_ptr< RFieldBase > child, std::string_view expectedChildName="")
 Add a new subfield to the list of nested fields.
 
void AutoAdjustColumnTypes (const ROOT::RNTupleWriteOptions &options)
 When connecting a field to a page sink, the field's default column representation is subject to adjustment according to the write options.
 
virtual std::unique_ptr< RFieldBaseBeforeConnectPageSource (ROOT::Internal::RPageSource &)
 Called by ConnectPageSource() before connecting; derived classes may override this as appropriate, e.g.
 
virtual void CommitClusterImpl ()
 
std::uint32_t CompareOnDiskField (const RFieldDescriptor &fieldDesc, std::uint32_t ignoreBits) const
 Returns a combination of kDiff... flags, indicating peroperties that are different between the field at hand and the given on-disk field.
 
void * CreateObjectRawPtr () const
 Factory method for the field's type. The caller owns the returned pointer.
 
const ColumnRepresentation_tEnsureCompatibleColumnTypes (const ROOT::RNTupleDescriptor &desc, std::uint16_t representationIndex) const
 Returns the on-disk column types found in the provided descriptor for fOnDiskId and the given representation index.
 
RResult< void > EnsureMatchingOnDiskCollection (const RNTupleDescriptor &desc) const
 Convenience wrapper for the common case of calling EnsureMatchinOnDiskField() for collections.
 
RResult< void > EnsureMatchingOnDiskField (const RNTupleDescriptor &desc, std::uint32_t ignoreBits=0) const
 Compares the field to the corresponding on-disk field information in the provided descriptor.
 
RResult< void > EnsureMatchingTypePrefix (const RNTupleDescriptor &desc, const std::vector< std::string > &prefixes) const
 Many fields accept a range of type prefixes for schema evolution, e.g.
 
template<typename... ColumnCppTs>
void GenerateColumnsImpl ()
 For writing, use the currently set column representative.
 
template<std::uint32_t ColumnIndexT, typename HeadT , typename... TailTs>
void GenerateColumnsImpl (const ColumnRepresentation_t &representation, std::uint16_t representationIndex)
 Helpers for generating columns.
 
template<typename... ColumnCppTs>
void GenerateColumnsImpl (const ROOT::RNTupleDescriptor &desc)
 For reading, use the on-disk column list.
 
virtual std::unique_ptr< RDeleterGetDeleter () const
 
virtual ROOT::RExtraTypeInfoDescriptor GetExtraTypeInfo () const
 
virtual bool HasExtraTypeInfo () const
 
void Read (RNTupleLocalIndex localIndex, void *to)
 Populate a single value with data from the field.
 
void Read (ROOT::NTupleSize_t globalIndex, void *to)
 Populate a single value with data from the field.
 
std::size_t ReadBulk (const RBulkSpec &bulkSpec)
 Returns the number of newly available values, that is the number of bools in bulkSpec.fMaskAvail that flipped from false to true.
 
virtual std::size_t ReadBulkImpl (const RBulkSpec &bulkSpec)
 General implementation of bulk read.
 
void RemoveReadCallback (size_t idx)
 

Private Member Functions

void CheckSize (ROOT::NTupleSize_t size) const
 

Additional Inherited Members

- Public Types inherited from ROOT::RFieldBase
enum  {
  kTraitTriviallyConstructible = 0x01 , kTraitTriviallyDestructible = 0x02 , kTraitMappable = 0x04 , kTraitTypeChecksum = 0x08 ,
  kTraitInvalidField = 0x10 , kTraitEmulatedField = 0x20 , kTraitExtensible = 0x40 , kTraitSoACollection = 0x80 ,
  kTraitTrivialType = kTraitTriviallyConstructible | kTraitTriviallyDestructible
}
 
using ColumnRepresentation_t = std::vector<ROOT::ENTupleColumnType>
 
enum class  EState { kUnconnected , kConnectedToSink , kConnectedToSource }
 During its lifetime, a field undergoes the following possible state transitions: More...
 
using RConstSchemaIterator = RSchemaIteratorTemplate<true>
 
using RSchemaIterator = RSchemaIteratorTemplate<false>
 
- Static Public Member Functions inherited from ROOT::RFieldBase
static std::vector< RCheckResultCheck (const std::string &fieldName, const std::string &typeName)
 Checks if the given type is supported by RNTuple.
 
static RResult< std::unique_ptr< RFieldBase > > Create (const std::string &fieldName, const std::string &typeName)
 Factory method to create a field from a certain type given as string.
 
- Static Public Attributes inherited from ROOT::RFieldBase
static constexpr std::uint32_t kInvalidTypeVersion = -1U
 
- Protected Types inherited from ROOT::RFieldBase
enum  {
  kDiffFieldVersion = 0x01 , kDiffTypeVersion = 0x02 , kDiffStructure = 0x04 , kDiffTypeName = 0x08 ,
  kDiffNRepetitions = 0x10
}
 Bits used in CompareOnDisk() More...
 
- Static Protected Member Functions inherited from ROOT::RFieldBase
static std::size_t CallAppendOn (RFieldBase &other, const void *from)
 Allow derived classes to call Append() and Read() on other (sub)fields.
 
static void CallConstructValueOn (const RFieldBase &other, void *where)
 Allow derived classes to call ConstructValue(void *) and GetDeleter() on other (sub)fields.
 
static void * CallCreateObjectRawPtrOn (RFieldBase &other)
 
static void CallReadOn (RFieldBase &other, RNTupleLocalIndex localIndex, void *to)
 
static void CallReadOn (RFieldBase &other, ROOT::NTupleSize_t globalIndex, void *to)
 
static void CallSetArtificialOn (RFieldBase &other)
 Allow parents to mark their childs as artificial fields (used in class and record fields)
 
static RResult< std::unique_ptr< RFieldBase > > Create (const std::string &fieldName, const std::string &typeName, const ROOT::RCreateFieldOptions &options, const ROOT::RNTupleDescriptor *desc, ROOT::DescriptorId_t fieldId)
 Factory method to resurrect a field from the stored on-disk type information.
 
static std::unique_ptr< RDeleterGetDeleterOf (const RFieldBase &other)
 
static ROOT::Internal::RColumnGetPrincipalColumnOf (const RFieldBase &other)
 Fields may need direct access to the principal column of their subfields, e.g. in RRVecField::ReadBulk()
 
- Protected Attributes inherited from ROOT::RFieldBase
ROOT::Internal::RColumnfAuxiliaryColumn = nullptr
 Some fields have a second column in its column representation.
 
std::vector< std::unique_ptr< ROOT::Internal::RColumn > > fAvailableColumns
 The columns are connected either to a sink or to a source (not to both); they are owned by the field.
 
std::vector< std::reference_wrapper< const ColumnRepresentation_t > > fColumnRepresentatives
 Pointers into the static vector returned by RColumnRepresentations::GetSerializationTypes() when SetColumnRepresentatives() is called.
 
std::uint32_t fOnDiskTypeChecksum = 0
 TClass checksum cached from the descriptor after a call to ConnectPageSource().
 
std::uint32_t fOnDiskTypeVersion = kInvalidTypeVersion
 C++ type version cached from the descriptor after a call to ConnectPageSource()
 
RFieldBasefParent
 Subfields point to their mother field.
 
ROOT::Internal::RColumnfPrincipalColumn = nullptr
 All fields that have columns have a distinct main column.
 
std::vector< ReadCallback_tfReadCallbacks
 List of functions to be called after reading a value.
 
std::vector< std::unique_ptr< RFieldBase > > fSubfields
 Collections and classes own subfields.
 
std::uint32_t fTraits = 0
 Properties of the type that allow for optimizations of collections of that type.
 
std::string fTypeAlias
 A typedef or using name that was used when creating the field.
 
Inheritance diagram for ROOT::Internal::RDF::RRDFCardinalityField< T >:
[legend]

Constructor & Destructor Documentation

◆ RRDFCardinalityField() [1/3]

template<typename T >
ROOT::Internal::RDF::RRDFCardinalityField< T >::RRDFCardinalityField ( std::string_view name)
inline

Definition at line 117 of file RNTupleDS.cxx.

◆ RRDFCardinalityField() [2/3]

template<typename T >
ROOT::Internal::RDF::RRDFCardinalityField< T >::RRDFCardinalityField ( const RRDFCardinalityField< T > & other)
delete

◆ RRDFCardinalityField() [3/3]

template<typename T >
ROOT::Internal::RDF::RRDFCardinalityField< T >::RRDFCardinalityField ( RRDFCardinalityField< T > && other)
default

◆ ~RRDFCardinalityField()

Member Function Documentation

◆ CheckSize()

template<typename T >
void ROOT::Internal::RDF::RRDFCardinalityField< T >::CheckSize ( ROOT::NTupleSize_t size) const
inlineprivate

Definition at line 99 of file RNTupleDS.cxx.

◆ CloneImpl()

template<typename T >
std::unique_ptr< ROOT::RFieldBase > ROOT::Internal::RDF::RRDFCardinalityField< T >::CloneImpl ( std::string_view newName) const
inlinefinalprotectedvirtual

Called by Clone(), which additionally copies the on-disk ID.

Implements ROOT::RFieldBase.

Definition at line 110 of file RNTupleDS.cxx.

◆ ConstructValue()

template<typename T >
void ROOT::Internal::RDF::RRDFCardinalityField< T >::ConstructValue ( void * where) const
inlinefinalprotectedvirtual

Constructs value in a given location of size at least GetValueSize(). Called by the base class' CreateValue().

Implements ROOT::RFieldBase.

Definition at line 114 of file RNTupleDS.cxx.

◆ GetAlignment()

template<typename T >
std::size_t ROOT::Internal::RDF::RRDFCardinalityField< T >::GetAlignment ( ) const
inlinefinalvirtual

What alignof(T) for this type returns.

Implements ROOT::RFieldBase.

Definition at line 128 of file RNTupleDS.cxx.

◆ GetValueSize()

template<typename T >
std::size_t ROOT::Internal::RDF::RRDFCardinalityField< T >::GetValueSize ( ) const
inlinefinalvirtual

What sizeof(T) for this type returns.

Implements ROOT::RFieldBase.

Definition at line 127 of file RNTupleDS.cxx.

◆ operator=() [1/2]

◆ operator=() [2/2]

◆ ReadGlobalImpl()

template<typename T >
void ROOT::Internal::RDF::RRDFCardinalityField< T >::ReadGlobalImpl ( ROOT::NTupleSize_t globalIndex,
void * to )
inlinefinalvirtual

Get the number of elements of the collection identified by globalIndex.

Reimplemented from ROOT::RFieldBase.

Definition at line 131 of file RNTupleDS.cxx.

◆ ReadInClusterImpl()

template<typename T >
void ROOT::Internal::RDF::RRDFCardinalityField< T >::ReadInClusterImpl ( ROOT::RNTupleLocalIndex localIndex,
void * to )
inlinefinalvirtual

Get the number of elements of the collection identified by clusterIndex.

Reimplemented from ROOT::RFieldBase.

Definition at line 141 of file RNTupleDS.cxx.

  • tree/dataframe/src/RNTupleDS.cxx