ATLAS Offline Software
Loading...
Searching...
No Matches
CP::RNtupleFieldHelpers::ElementFieldProcessor Class Reference

#include <RNtupleFieldHelpers.h>

Inheritance diagram for CP::RNtupleFieldHelpers::ElementFieldProcessor:
Collaboration diagram for CP::RNtupleFieldHelpers::ElementFieldProcessor:

Public Member Functions

 ElementFieldProcessor ()=default
virtual ~ElementFieldProcessor ()=default
 ElementFieldProcessor (const ElementFieldProcessor &)=delete
ElementFieldProcessoroperator= (const ElementFieldProcessor &)=delete
virtual StatusCode setup (ROOT::RNTupleModel &model, const BranchConfig &branchConfig, OutputBranchData &outputData, MsgStream &msg) override
StatusCode process (const SG::AuxElement &element, MsgStream &msg)
virtual StatusCode setup (TTree &, const BranchConfig &, OutputBranchData &, MsgStream &msg) override

Public Attributes

std::string m_fieldName
std::unique_ptr< SG::TypelessConstAccessorm_acc
const SG::IAuxTypeVectorFactorym_factory = nullptr
std::shared_ptr< void > m_field
void * m_dataPtr = nullptr

Detailed Description

Definition at line 58 of file RNtupleFieldHelpers.h.

Constructor & Destructor Documentation

◆ ElementFieldProcessor() [1/2]

CP::RNtupleFieldHelpers::ElementFieldProcessor::ElementFieldProcessor ( )
default

◆ ~ElementFieldProcessor()

virtual CP::RNtupleFieldHelpers::ElementFieldProcessor::~ElementFieldProcessor ( )
virtualdefault

◆ ElementFieldProcessor() [2/2]

CP::RNtupleFieldHelpers::ElementFieldProcessor::ElementFieldProcessor ( const ElementFieldProcessor & )
delete

Member Function Documentation

◆ operator=()

ElementFieldProcessor & CP::RNtupleFieldHelpers::ElementFieldProcessor::operator= ( const ElementFieldProcessor & )
delete

◆ process()

StatusCode CP::RNtupleFieldHelpers::ElementFieldProcessor::process ( const SG::AuxElement & element,
MsgStream & msg )

Definition at line 293 of file RNtupleFieldHelpers.cxx.

293 {
294 // Use High-Level copy via TempInterface
295 // copy( auxid, dst_container, dst_index, src_container, src_index, n )
296 TempInterface dstiface( 1, m_acc->auxid(), m_dataPtr );
297 m_factory->copy( m_acc->auxid(), dstiface, 0, *element.container(), element.index(), 1 );
298 return StatusCode::SUCCESS;
299 }
std::unique_ptr< SG::TypelessConstAccessor > m_acc
const SG::IAuxTypeVectorFactory * m_factory
const SG::AuxVectorData * container() const
Return the container holding this element.
size_t index() const
Return the index of this element within its container.

◆ setup() [1/2]

StatusCode CP::RNtupleFieldHelpers::ElementFieldProcessor::setup ( ROOT::RNTupleModel & model,
const BranchConfig & branchConfig,
OutputBranchData & outputData,
MsgStream & msg )
overridevirtual

Implements CP::TreeBranchHelpers::IComponentProcessor.

Definition at line 264 of file RNtupleFieldHelpers.cxx.

267 {
268 m_fieldName = outputData.branchName;
269 m_acc.reset( new SG::TypelessConstAccessor( *branchConfig.auxType, outputData.auxName ) );
270
271 if( branchConfig.auxFactory && branchConfig.auxType ) {
272 m_factory = branchConfig.auxFactory;
273 const std::type_info* type_info = branchConfig.auxType;
274
275 FieldOps dummyOps;
276 m_field = makeField( model, m_fieldName, *type_info, m_dataPtr, dummyOps, msg );
277 } else {
278 msg << MSG::ERROR << "BranchConfig not properly configured for " << outputData.auxName << endmsg;
279 return StatusCode::FAILURE;
280 }
281
282 return m_field ? StatusCode::SUCCESS : StatusCode::FAILURE;
283 }
#define endmsg
MsgStream & msg
Definition testRead.cxx:32

◆ setup() [2/2]

StatusCode CP::RNtupleFieldHelpers::ElementFieldProcessor::setup ( TTree & ,
const BranchConfig & ,
OutputBranchData & ,
MsgStream & msg )
overridevirtual

Implements CP::TreeBranchHelpers::IComponentProcessor.

Definition at line 285 of file RNtupleFieldHelpers.cxx.

288 {
289 msg << MSG::ERROR << "setup(TTree, ...) called, but only setup(ROOT::RNTupleModel, ...) should be implemented for this processor" << endmsg;
290 return StatusCode::FAILURE;
291 }

Member Data Documentation

◆ m_acc

std::unique_ptr< SG::TypelessConstAccessor > CP::RNtupleFieldHelpers::ElementFieldProcessor::m_acc

Definition at line 77 of file RNtupleFieldHelpers.h.

◆ m_dataPtr

void* CP::RNtupleFieldHelpers::ElementFieldProcessor::m_dataPtr = nullptr

Definition at line 80 of file RNtupleFieldHelpers.h.

◆ m_factory

const SG::IAuxTypeVectorFactory* CP::RNtupleFieldHelpers::ElementFieldProcessor::m_factory = nullptr

Definition at line 78 of file RNtupleFieldHelpers.h.

◆ m_field

std::shared_ptr<void> CP::RNtupleFieldHelpers::ElementFieldProcessor::m_field

Definition at line 79 of file RNtupleFieldHelpers.h.

◆ m_fieldName

std::string CP::RNtupleFieldHelpers::ElementFieldProcessor::m_fieldName

Definition at line 76 of file RNtupleFieldHelpers.h.


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