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 294 of file RNtupleFieldHelpers.cxx.

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

◆ 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 265 of file RNtupleFieldHelpers.cxx.

268 {
269 m_fieldName = outputData.branchName;
270 m_acc.reset( new SG::TypelessConstAccessor( *branchConfig.auxType, outputData.auxName ) );
271
272 if( branchConfig.auxFactory && branchConfig.auxType ) {
273 m_factory = branchConfig.auxFactory;
274 const std::type_info* type_info = branchConfig.auxType;
275
276 FieldOps dummyOps;
277 m_field = makeField( model, m_fieldName, *type_info, m_dataPtr, dummyOps, msg );
278 } else {
279 msg << MSG::ERROR << "BranchConfig not properly configured for " << outputData.auxName << endmsg;
280 return StatusCode::FAILURE;
281 }
282
283 return m_field ? StatusCode::SUCCESS : StatusCode::FAILURE;
284 }
#define endmsg
ConstAuxElement::TypelessConstAccessor TypelessConstAccessor
Definition AuxElement.h:567
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 286 of file RNtupleFieldHelpers.cxx.

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

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: