12#ifndef XAOD_VARIABLE_PROXY_LOADERS_H
13#define XAOD_VARIABLE_PROXY_LOADERS_H
19#include "TMethodCall.h"
20#include "TVirtualCollectionProxy.h"
25#include <unordered_map>
54 return m_acc.isAvailable(*auxElement);
61 if (!auxVectorData || !auxVectorData->
getConstStore())
return false;
64 if (auxVectorData->
size_v() == 0)
return true;
67 if( ids.find (auxid) != ids.end() )
return true;
72 return (
int)
m_acc(*auxElement);
76 return (
double)
m_acc(*auxElement);
80 size_t N = auxVectorData->
size_v();
81 std::vector<int>
result(N);
82 for (
size_t i = 0; i < N; ++i) {
89 size_t N = auxVectorData->
size_v();
90 std::vector<double>
result(N);
91 for (
size_t i = 0; i < N; ++i) {
105 TMethodWrapper(
const std::type_info &elementTypeinfo,
const std::string &methodName);
155 virtual void reset();
158 template<
class TYPE,
class AUX>
159 bool try_type(
const std::string& varname,
const std::type_info* ti,
const AUX*
data)
const;
Base class for elements of a container that can have aux data.
Hash map from strings allowing concurrent, lockless reads.
char data[hepevt_bytes_allocation_ATLAS]
Simple (non-deleting) Updater implementation.
Helper for thread-safe TMethodCall. Extracted from Type.
Define macros for attributes used to control the static checker.
Hash map from strings allowing concurrent, lockless reads.
virtual bool isValid(const SG::AuxElement *auxElement) const
SG::AuxElement::ConstAccessor< T > m_acc
virtual bool isValid(const SG::AuxVectorData *auxVectorData) const
virtual std::vector< int > getVecIntValue(const SG::AuxVectorData *auxVectorData)
std::string m_elementName
virtual std::vector< double > getVecDoubleValue(const SG::AuxVectorData *auxVectorData)
virtual double getDoubleValue(const SG::AuxElement *auxElement) const
virtual ~AccessorWrapper()
AccessorWrapper(const std::string &elementName)
virtual int getIntValue(const SG::AuxElement *auxElement) const
virtual bool isValid(const SG::AuxElement *auxElement) const =0
virtual bool isValid(const SG::AuxVectorData *auxVectorData) const =0
virtual ~BaseAccessorWrapper()
virtual std::vector< int > getVecIntValue(const SG::AuxVectorData *auxVectorData)=0
virtual int getIntValue(const SG::AuxElement *auxElement) const =0
virtual std::vector< double > getVecDoubleValue(const SG::AuxVectorData *auxVectorData)=0
virtual double getDoubleValue(const SG::AuxElement *auxElement) const =0
RootUtils::TSMethodCall m_methodCall ATLAS_THREAD_SAFE
virtual bool isValid(const SG::AuxElement *auxElement) const
virtual int getIntValue(const SG::AuxElement *auxElement) const
virtual ~TMethodCollectionWrapper()
virtual std::vector< int > getVecIntValue(const SG::AuxVectorData *auxVectorData)
virtual double getDoubleValue(const SG::AuxElement *auxElement) const
TMethodCollectionWrapper & operator=(const TMethodCollectionWrapper &)=delete
TVirtualCollectionProxy * m_collectionProxy
TMethodCollectionWrapper(const std::type_info &containerTypeinfo, const std::string &methodName)
TMethodCollectionWrapper(const TMethodCollectionWrapper &)=delete
IProxyLoader::VariableType variableType()
virtual std::vector< double > getVecDoubleValue(const SG::AuxVectorData *auxVectorData)
virtual std::vector< int > getVecIntValue(const SG::AuxVectorData *auxVectorData)
TMethodWrapper & operator=(const TMethodWrapper &)=delete
TMethodWrapper(const std::type_info &elementTypeinfo, const std::string &methodName)
virtual std::vector< double > getVecDoubleValue(const SG::AuxVectorData *auxVectorData)
RootUtils::TSMethodCall m_methodCall ATLAS_THREAD_SAFE
virtual ~TMethodWrapper()
virtual bool isValid(const SG::AuxElement *auxElement) const
virtual double getDoubleValue(const SG::AuxElement *auxElement) const
TMethodWrapper(const TMethodWrapper &)=delete
IProxyLoader::VariableType variableType()
virtual int getIntValue(const SG::AuxElement *auxElement) const
void setData(const SG::AuxElement *auxElement)
virtual double loadDoubleVariableFromString(const std::string &varname) const
virtual std::vector< double > loadVecDoubleVariableFromString(const std::string &varname) const
virtual int loadIntVariableFromString(const std::string &varname) const
xAODElementProxyLoader()=default
virtual std::vector< int > loadVecIntVariableFromString(const std::string &varname) const
virtual IProxyLoader::VariableType variableTypeFromString(const std::string &varname) const
const SG::AuxElement * m_auxElement
virtual ~xAODProxyLoader()
xAODProxyLoader(const xAODProxyLoader &)=delete
Disallow copy construction and assignment.
bool try_type(const std::string &varname, const std::type_info *ti, const AUX *data) const
xAODProxyLoader & operator=(const xAODProxyLoader &)=delete
IProxyLoader::VariableType try_all_known_types(const std::string &varname, const AUX *data, bool isVector) const
CxxUtils::ConcurrentStrMap< BaseAccessorWrapper *, CxxUtils::SimpleUpdater > accessorCache_t
accessorCache_t m_accessorCache ATLAS_THREAD_SAFE
virtual std::vector< int > loadVecIntVariableFromString(const std::string &varname) const
virtual IProxyLoader::VariableType variableTypeFromString(const std::string &varname) const
virtual int loadIntVariableFromString(const std::string &varname) const
xAODVectorProxyLoader()=default
virtual double loadDoubleVariableFromString(const std::string &varname) const
void setData(const SG::AuxVectorData *auxElement)
virtual std::vector< double > loadVecDoubleVariableFromString(const std::string &varname) const
const SG::AuxVectorData * m_auxVectorData
Helper for making a thread-safe function call.
Base class for elements of a container that can have aux data.
SG::ConstAccessor< T, ALLOC > ConstAccessor
Handle mappings between names and auxid_t.
static AuxTypeRegistry & instance()
Return the singleton registry instance.
Manage lookup of vectors of auxiliary data.
virtual size_t size_v() const =0
Return the size of the container.
const SG::IConstAuxStore * getConstStore() const
Return the current store, as a const interface.
virtual const SG::auxid_set_t & getAuxIDs() const =0
Return a set of identifiers for existing data items in this store.
virtual const void * getData(SG::auxid_t auxid) const =0
Return the data vector for one aux data item.
A set of aux data identifiers.
Namespace holding all the expression evaluation code.
size_t auxid_t
Identifier for a particular aux data item.