ATLAS Offline Software
Loading...
Searching...
No Matches
columnar::TestUtils::RNTFieldReader< T > Class Template Referencefinal
Collaboration diagram for columnar::TestUtils::RNTFieldReader< T >:

Public Member Functions

 RNTFieldReader (const std::string &val_fieldName)
 ~RNTFieldReader () noexcept
 RNTFieldReader (const RNTFieldReader &)=delete
RNTFieldReaderoperator= (const RNTFieldReader &)=delete
const std::string & fieldName () const
std::string columnName () const
std::string containerName () const
void connectRNTuple (ROOT::RNTupleReader *reader, ROOT::Experimental::RNTupleInspector *inspector)
void connectTree (const Backend &b)
const T & getEntry (Long64_t entry)
const T & getCachedEntry () const
std::optional< float > entrySize () const
std::optional< float > uncompressedSize () const
std::optional< unsigned > numBaskets ()

Private Attributes

std::string m_FieldName
std::unique_ptr< ROOT::RNTupleView< T > > m_view
ROOT::Experimental::RNTupleInspector * m_inspector = nullptr
ROOT::RNTupleReader * m_reader = nullptr
const T * m_data = nullptr

Detailed Description

template<typename T>
class columnar::TestUtils::RNTFieldReader< T >

Definition at line 542 of file ColumnarPhysliteTest.cxx.

Constructor & Destructor Documentation

◆ RNTFieldReader() [1/2]

template<typename T>
columnar::TestUtils::RNTFieldReader< T >::RNTFieldReader ( const std::string & val_fieldName)
inline

◆ ~RNTFieldReader()

template<typename T>
columnar::TestUtils::RNTFieldReader< T >::~RNTFieldReader ( )
inlinenoexcept

Definition at line 555 of file ColumnarPhysliteTest.cxx.

555{}

◆ RNTFieldReader() [2/2]

template<typename T>
columnar::TestUtils::RNTFieldReader< T >::RNTFieldReader ( const RNTFieldReader< T > & )
delete

Member Function Documentation

◆ columnName()

template<typename T>
std::string columnar::TestUtils::RNTFieldReader< T >::columnName ( ) const
inlinenodiscard

Definition at line 564 of file ColumnarPhysliteTest.cxx.

565 {
567 if (auto index = columnName.find("AuxDyn:"); index != std::string::npos)
568 columnName.replace(index, 6, "");
569 else if (auto index = columnName.find("Aux:."); index != std::string::npos)
570 columnName.replace(index, 4, "");
571 else if (auto index = columnName.find("Aux:"); index != std::string::npos)
572 columnName.replace(index, 3, "");
573 else if (columnName.find(":") != std::string::npos)
574 throw std::runtime_error("field name does not contain AuxDyn or Aux: " + m_FieldName);
575 std::replace(columnName.begin(), columnName.end(), ':', '.');
576
577 return columnName;
578 }

◆ connectRNTuple()

template<typename T>
void columnar::TestUtils::RNTFieldReader< T >::connectRNTuple ( ROOT::RNTupleReader * reader,
ROOT::Experimental::RNTupleInspector * inspector )
inline

Definition at line 592 of file ColumnarPhysliteTest.cxx.

594 {
598
599 if (!m_view)
600 throw std::runtime_error("failed to get field: " + m_FieldName);
601 }
ROOT::Experimental::RNTupleInspector * m_inspector
std::unique_ptr< ROOT::RNTupleView< T > > m_view

◆ connectTree()

template<typename T>
void columnar::TestUtils::RNTFieldReader< T >::connectTree ( const Backend & b)
inline

Definition at line 603 of file ColumnarPhysliteTest.cxx.

604 {
605 auto* rntbackend = std::get<RNTupleBackend*>(b); // throws if wrong backend
606
607 if (!rntbackend->reader || !rntbackend->inspector)
608 throw std::runtime_error("RNTuple backend not properly initialized");
609 connectRNTuple(rntbackend->reader, rntbackend->inspector);
610 }
void connectRNTuple(ROOT::RNTupleReader *reader, ROOT::Experimental::RNTupleInspector *inspector)

◆ containerName()

template<typename T>
std::string columnar::TestUtils::RNTFieldReader< T >::containerName ( ) const
inlinenodiscard

Definition at line 580 of file ColumnarPhysliteTest.cxx.

581 {
582 if (auto index = m_FieldName.find("AuxDyn:"); index != std::string::npos)
583 return m_FieldName.substr(0, index);
584 else if (auto index = m_FieldName.find("Aux:"); index != std::string::npos)
585 return m_FieldName.substr(0, index);
586 else if (m_FieldName.find(":") == std::string::npos)
587 return m_FieldName;
588 else
589 throw std::runtime_error("field name does not contain AuxDyn or Aux: " + m_FieldName);
590 }

◆ entrySize()

template<typename T>
std::optional< float > columnar::TestUtils::RNTFieldReader< T >::entrySize ( ) const
inline

Definition at line 630 of file ColumnarPhysliteTest.cxx.

631 {
632
634 return static_cast<float>(fieldTreeInspector.GetCompressedSize()) /
635 m_inspector->GetDescriptor().GetNEntries();
636 }

◆ fieldName()

template<typename T>
const std::string & columnar::TestUtils::RNTFieldReader< T >::fieldName ( ) const
inlinenodiscard

Definition at line 559 of file ColumnarPhysliteTest.cxx.

560 {
561 return m_FieldName;
562 }

◆ getCachedEntry()

template<typename T>
const T & columnar::TestUtils::RNTFieldReader< T >::getCachedEntry ( ) const
inline

Definition at line 625 of file ColumnarPhysliteTest.cxx.

626 {
627 return *m_data;
628 }

◆ getEntry()

template<typename T>
const T & columnar::TestUtils::RNTFieldReader< T >::getEntry ( Long64_t entry)
inline

Definition at line 613 of file ColumnarPhysliteTest.cxx.

614 {
615 if (!m_view)
616 throw std::runtime_error("field not connected: " + m_FieldName);
617
618 m_data = &((*m_view)(static_cast<ROOT::NTupleSize_t>(entry)));
619
620 if (m_data == nullptr)
621 throw std::runtime_error("got nullptr reading data for field: " + m_FieldName);
622 return *m_data;
623 }

◆ numBaskets()

template<typename T>
std::optional< unsigned > columnar::TestUtils::RNTFieldReader< T >::numBaskets ( )
inline

Definition at line 647 of file ColumnarPhysliteTest.cxx.

648 {
649 // placeholder
650 return std::nullopt;
651 }

◆ operator=()

template<typename T>
RNTFieldReader & columnar::TestUtils::RNTFieldReader< T >::operator= ( const RNTFieldReader< T > & )
delete

◆ uncompressedSize()

template<typename T>
std::optional< float > columnar::TestUtils::RNTFieldReader< T >::uncompressedSize ( ) const
inline

Definition at line 638 of file ColumnarPhysliteTest.cxx.

639 {
640
642
643 return static_cast<float>(fieldTreeInspector.GetUncompressedSize()) /
644 m_inspector->GetDescriptor().GetNEntries();
645 }

Member Data Documentation

◆ m_data

template<typename T>
const T* columnar::TestUtils::RNTFieldReader< T >::m_data = nullptr
private

Definition at line 548 of file ColumnarPhysliteTest.cxx.

◆ m_FieldName

template<typename T>
std::string columnar::TestUtils::RNTFieldReader< T >::m_FieldName
private

Definition at line 544 of file ColumnarPhysliteTest.cxx.

◆ m_inspector

template<typename T>
ROOT::Experimental::RNTupleInspector* columnar::TestUtils::RNTFieldReader< T >::m_inspector = nullptr
private

Definition at line 546 of file ColumnarPhysliteTest.cxx.

◆ m_reader

template<typename T>
ROOT::RNTupleReader* columnar::TestUtils::RNTFieldReader< T >::m_reader = nullptr
private

Definition at line 547 of file ColumnarPhysliteTest.cxx.

◆ m_view

template<typename T>
std::unique_ptr<ROOT::RNTupleView<T> > columnar::TestUtils::RNTFieldReader< T >::m_view
private

Definition at line 545 of file ColumnarPhysliteTest.cxx.


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