ATLAS Offline Software
Loading...
Searching...
No Matches
ExpressionParsing::GenAccessor< T_Cont, T_HelperKit, T_ScalarVectorHelper > Class Template Reference

Generic accessor to access xAOD object content. More...

#include <GenAccessor.h>

Inheritance diagram for ExpressionParsing::GenAccessor< T_Cont, T_HelperKit, T_ScalarVectorHelper >:
Collaboration diagram for ExpressionParsing::GenAccessor< T_Cont, T_HelperKit, T_ScalarVectorHelper >:

Public Types

enum  VariableType {
  VT_UNK , VT_INT , VT_DOUBLE , VT_VECINT ,
  VT_VECDOUBLE , VT_VECEMPTY
}

Public Member Functions

 GenAccessor (const SG::ReadHandleKey< T_Cont > &key, T_HelperKit &&helper_kit, IAccessor::VariableType variable_type)
virtual int loadInt (const EventContext &ctx, const std::string &var_name) const override
virtual double loadDouble (const EventContext &ctx, const std::string &var_name) const override
virtual std::vector< int > loadVecInt (const EventContext &ctx, const std::string &var_name) const override
virtual std::vector< double > loadVec (const EventContext &ctx, const std::string &var_name) const override
virtual IAccessor::VariableType variableType (const std::string &var_name) const override

Static Public Member Functions

static void throwInvalidHandle (const std::string &key)
static void throwVectorContainsNotOneElement (const std::string &key, std::size_t n_elements)

Protected Member Functions

template<class T_Dest>
std::vector< T_Dest > loadVector (const EventContext &ctx) const
template<class T_Dest>
T_Dest loadScalar (const EventContext &ctx) const

Protected Attributes

const SG::ReadHandleKey< T_Cont > * m_key
T_HelperKit m_helperKit

Private Attributes

IAccessor::VariableType m_variableType

Detailed Description

template<class T_Cont, class T_HelperKit, class T_ScalarVectorHelper>
class ExpressionParsing::GenAccessor< T_Cont, T_HelperKit, T_ScalarVectorHelper >

Generic accessor to access xAOD object content.

It uses several auxiliary classes to provide accessor, decoration handle, or method call based access to content of AuxVectorBase or AuxElement containers.

Definition at line 74 of file GenAccessor.h.

Member Enumeration Documentation

◆ VariableType

Constructor & Destructor Documentation

◆ GenAccessor()

template<class T_Cont, class T_HelperKit, class T_ScalarVectorHelper>
ExpressionParsing::GenAccessor< T_Cont, T_HelperKit, T_ScalarVectorHelper >::GenAccessor ( const SG::ReadHandleKey< T_Cont > & key,
T_HelperKit && helper_kit,
IAccessor::VariableType variable_type )
inline

Definition at line 76 of file GenAccessor.h.

78 m_key(&key),
80 {}
BaseAccessor(IAccessor::VariableType variable_type)
Generic accessor to access xAOD object content.
Definition GenAccessor.h:74
const SG::ReadHandleKey< T_Cont > * m_key

Member Function Documentation

◆ loadDouble()

template<class T_Cont, class T_HelperKit, class T_ScalarVectorHelper>
virtual double ExpressionParsing::GenAccessor< T_Cont, T_HelperKit, T_ScalarVectorHelper >::loadDouble ( const EventContext & ctx,
const std::string & var_name ) const
inlineoverridevirtual

Implements ExpressionParsing::IAccessor.

Definition at line 85 of file GenAccessor.h.

85 {
86 return this->loadScalar<double>(ctx);
87 }
T_Dest loadScalar(const EventContext &ctx) const

◆ loadInt()

template<class T_Cont, class T_HelperKit, class T_ScalarVectorHelper>
virtual int ExpressionParsing::GenAccessor< T_Cont, T_HelperKit, T_ScalarVectorHelper >::loadInt ( const EventContext & ctx,
const std::string & var_name ) const
inlineoverridevirtual

Implements ExpressionParsing::IAccessor.

Definition at line 82 of file GenAccessor.h.

82 {
83 return this->loadScalar<int>(ctx);
84 }

◆ loadScalar()

template<class T_Cont, class T_HelperKit, class T_ScalarVectorHelper>
template<class T_Dest>
T_Dest ExpressionParsing::GenAccessor< T_Cont, T_HelperKit, T_ScalarVectorHelper >::loadScalar ( const EventContext & ctx) const
inlineprotected

Definition at line 110 of file GenAccessor.h.

110 {
112 if (!handle.isValid()) {
113 this->throwInvalidHandle(this->m_key->key());
114 }
115 auto helper( m_helperKit.create(ctx, handle));
116 T_Dest dummy {};
118 }
static void throwInvalidHandle(const std::string &key)

◆ loadVec()

template<class T_Cont, class T_HelperKit, class T_ScalarVectorHelper>
virtual std::vector< double > ExpressionParsing::GenAccessor< T_Cont, T_HelperKit, T_ScalarVectorHelper >::loadVec ( const EventContext & ctx,
const std::string & var_name ) const
inlineoverridevirtual

Implements ExpressionParsing::IAccessor.

Definition at line 91 of file GenAccessor.h.

91 {
92 return this->loadVector<double>(ctx);
93 }
std::vector< T_Dest > loadVector(const EventContext &ctx) const
Definition GenAccessor.h:96

◆ loadVecInt()

template<class T_Cont, class T_HelperKit, class T_ScalarVectorHelper>
virtual std::vector< int > ExpressionParsing::GenAccessor< T_Cont, T_HelperKit, T_ScalarVectorHelper >::loadVecInt ( const EventContext & ctx,
const std::string & var_name ) const
inlineoverridevirtual

Implements ExpressionParsing::IAccessor.

Definition at line 88 of file GenAccessor.h.

88 {
89 return this->loadVector<int>(ctx);
90 }

◆ loadVector()

template<class T_Cont, class T_HelperKit, class T_ScalarVectorHelper>
template<class T_Dest>
std::vector< T_Dest > ExpressionParsing::GenAccessor< T_Cont, T_HelperKit, T_ScalarVectorHelper >::loadVector ( const EventContext & ctx) const
inlineprotected

Definition at line 96 of file GenAccessor.h.

96 {
98 if (!handle.isValid()) {
99 this->throwInvalidHandle(this->m_key->key());
100 }
102 if (getContainerSize(*handle)>0) {
103 auto helper( m_helperKit.create(ctx, handle));
105 }
106 return result;
107 }

◆ throwInvalidHandle()

void ExpressionParsing::BaseAccessor::throwInvalidHandle ( const std::string & key)
inlinestaticinherited

Definition at line 20 of file BaseAccessor.h.

20 {
21 std::stringstream msg;
22 msg << "Failed to create read handle for " << key;
23 throw std::runtime_error(key);
24 }
MsgStream & msg
Definition testRead.cxx:32

◆ throwVectorContainsNotOneElement()

void ExpressionParsing::BaseAccessor::throwVectorContainsNotOneElement ( const std::string & key,
std::size_t n_elements )
inlinestaticinherited

Definition at line 25 of file BaseAccessor.h.

25 {
26 std::stringstream msg;
27 msg << "Cannot convert to scalar since the aux vector data container " << key << " does not contain exactly one element but " << n_elements;
28 throw std::runtime_error(key);
29 }

◆ variableType()

virtual IAccessor::VariableType ExpressionParsing::BaseAccessor::variableType ( const std::string & var_name) const
inlineoverridevirtualinherited

Implements ExpressionParsing::IAccessor.

Definition at line 30 of file BaseAccessor.h.

30 {
31 return m_variableType;
32 }
IAccessor::VariableType m_variableType

Member Data Documentation

◆ m_helperKit

template<class T_Cont, class T_HelperKit, class T_ScalarVectorHelper>
T_HelperKit ExpressionParsing::GenAccessor< T_Cont, T_HelperKit, T_ScalarVectorHelper >::m_helperKit
protected

Definition at line 121 of file GenAccessor.h.

◆ m_key

template<class T_Cont, class T_HelperKit, class T_ScalarVectorHelper>
const SG::ReadHandleKey<T_Cont>* ExpressionParsing::GenAccessor< T_Cont, T_HelperKit, T_ScalarVectorHelper >::m_key
protected

Definition at line 120 of file GenAccessor.h.

◆ m_variableType

IAccessor::VariableType ExpressionParsing::BaseAccessor::m_variableType
privateinherited

Definition at line 35 of file BaseAccessor.h.


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