ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
PhysicsAnalysis
CommonTools
ExpressionEvaluation
src
BaseAccessor.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
#ifndef ExpressionParsing_BaseAccessor_h_
5
#define ExpressionParsing_BaseAccessor_h_
6
7
#include <stdexcept>
8
#include <sstream>
9
#include "
ExpressionEvaluation/IProxyLoader.h
"
10
#include "
ExpressionEvaluation/IAccessor.h
"
11
12
namespace
ExpressionParsing
{
13
16
class
BaseAccessor
:
public
IAccessor
{
17
public
:
18
BaseAccessor
(
IAccessor::VariableType
variable_type) :
m_variableType
(variable_type) {}
19
20
static
void
throwInvalidHandle
(
const
std::string &key) {
21
std::stringstream
msg
;
22
msg
<<
"Failed to create read handle for "
<< key;
23
throw
std::runtime_error(key);
24
}
25
static
void
throwVectorContainsNotOneElement
(
const
std::string &key, std::size_t n_elements) {
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
}
30
virtual
IAccessor::VariableType
variableType
([[maybe_unused]]
const
std::string &var_name)
const override
{
31
return
m_variableType
;
32
}
33
34
private
:
35
IAccessor::VariableType
m_variableType
;
36
};
37
40
class
EmptyVectorAccessor
:
public
IAccessor
{
41
public :
42
virtual
IAccessor::VariableType
variableType
([[maybe_unused]]
const
std::string &var_name)
const override
{
return
IProxyLoader::VT_VECEMPTY
; }
43
virtual
int
loadInt
([[maybe_unused]]
const
EventContext& ctx,[[maybe_unused]]
const
std::string &var_name)
const override
44
{
throwEmptyVector
();
return
0; }
45
virtual
double
loadDouble
([[maybe_unused]]
const
EventContext& ctx,[[maybe_unused]]
const
std::string &var_name)
const override
46
{
throwEmptyVector
();
return
0.;}
47
virtual
std::vector<int>
loadVecInt
([[maybe_unused]]
const
EventContext& ctx,[[maybe_unused]]
const
std::string &var_name)
const override
48
{
return
std::vector<int>(); }
49
virtual
std::vector<double>
loadVec
([[maybe_unused]]
const
EventContext& ctx,[[maybe_unused]]
const
std::string &var_name)
const override
50
{
return
std::vector<double>(); }
51
private
:
52
void
throwEmptyVector
()
const
{
53
throw
std::runtime_error(
"Attempt to convert empty vector into scalar."
);
54
}
55
};
56
57
}
58
#endif
IAccessor.h
IProxyLoader.h
ExpressionParsing::BaseAccessor::variableType
virtual IAccessor::VariableType variableType(const std::string &var_name) const override
Definition
BaseAccessor.h:30
ExpressionParsing::BaseAccessor::m_variableType
IAccessor::VariableType m_variableType
Definition
BaseAccessor.h:35
ExpressionParsing::BaseAccessor::throwVectorContainsNotOneElement
static void throwVectorContainsNotOneElement(const std::string &key, std::size_t n_elements)
Definition
BaseAccessor.h:25
ExpressionParsing::BaseAccessor::BaseAccessor
BaseAccessor(IAccessor::VariableType variable_type)
Definition
BaseAccessor.h:18
ExpressionParsing::BaseAccessor::throwInvalidHandle
static void throwInvalidHandle(const std::string &key)
Definition
BaseAccessor.h:20
ExpressionParsing::EmptyVectorAccessor
Special accessor to handle empty containers until the correct accessor can be created.
Definition
BaseAccessor.h:40
ExpressionParsing::EmptyVectorAccessor::loadVec
virtual std::vector< double > loadVec(const EventContext &ctx, const std::string &var_name) const override
Definition
BaseAccessor.h:49
ExpressionParsing::EmptyVectorAccessor::throwEmptyVector
void throwEmptyVector() const
Definition
BaseAccessor.h:52
ExpressionParsing::EmptyVectorAccessor::loadInt
virtual int loadInt(const EventContext &ctx, const std::string &var_name) const override
Definition
BaseAccessor.h:43
ExpressionParsing::EmptyVectorAccessor::loadVecInt
virtual std::vector< int > loadVecInt(const EventContext &ctx, const std::string &var_name) const override
Definition
BaseAccessor.h:47
ExpressionParsing::EmptyVectorAccessor::variableType
virtual IAccessor::VariableType variableType(const std::string &var_name) const override
Definition
BaseAccessor.h:42
ExpressionParsing::EmptyVectorAccessor::loadDouble
virtual double loadDouble(const EventContext &ctx, const std::string &var_name) const override
Definition
BaseAccessor.h:45
ExpressionParsing::IAccessor
Interface of auxiliary classes to access xAOD object content.
Definition
IAccessor.h:17
ExpressionParsing::IAccessor::VariableType
VariableType
Definition
IAccessor.h:19
ExpressionParsing::IAccessor::VT_VECEMPTY
@ VT_VECEMPTY
Definition
IAccessor.h:19
ExpressionParsing
Namespace holding all the expression evaluation code.
Definition
ExpressionParser.h:26
msg
MsgStream & msg
Definition
testRead.cxx:32
Generated on
for ATLAS Offline Software by
1.17.0