Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
SG::ReadMetaHandle< T > Class Template Reference

#include <MetaCont.h>

Collaboration diagram for SG::ReadMetaHandle< T >:

Public Types

typedef T * pointer_type
 
typedef const T * const_pointer_type
 
typedef T & reference_type
 
typedef const T & const_reference_type
 

Public Member Functions

 ReadMetaHandle (const SG::ReadMetaHandleKey< T > &key)
 
 ReadMetaHandle (const SG::ReadMetaHandleKey< T > &key, const EventContext &ctx)
 
 ReadMetaHandle (SG::ReadMetaHandleKey< T > &&key)=delete
 
 ReadMetaHandle (SG::ReadMetaHandleKey< T > &&key, const EventContext &ctx)=delete
 
 ~ReadMetaHandle ()
 
const_pointer_type retrieve ()
 
const_pointer_type retrieve (const SG::SourceID &t)
 
const_pointer_type operator-> ()
 
const_pointer_type operator* ()
 
bool isValid ()
 

Private Member Functions

bool initMetaHandle ()
 

Private Attributes

SG::SourceID m_sid
 
const MetaCont< T > * m_cont {nullptr}
 
T * m_ent {nullptr}
 
const SG::ReadMetaHandleKey< T > & m_hkey
 

Detailed Description

template<typename T>
class SG::ReadMetaHandle< T >

Definition at line 21 of file MetaCont.h.

Member Typedef Documentation

◆ const_pointer_type

template<typename T >
typedef const T* SG::ReadMetaHandle< T >::const_pointer_type

Definition at line 31 of file ReadMetaHandle.h.

◆ const_reference_type

template<typename T >
typedef const T& SG::ReadMetaHandle< T >::const_reference_type

Definition at line 33 of file ReadMetaHandle.h.

◆ pointer_type

template<typename T >
typedef T* SG::ReadMetaHandle< T >::pointer_type

Definition at line 30 of file ReadMetaHandle.h.

◆ reference_type

template<typename T >
typedef T& SG::ReadMetaHandle< T >::reference_type

Definition at line 32 of file ReadMetaHandle.h.

Constructor & Destructor Documentation

◆ ReadMetaHandle() [1/4]

template<typename T >
SG::ReadMetaHandle< T >::ReadMetaHandle ( const SG::ReadMetaHandleKey< T > &  key)

Definition at line 69 of file ReadMetaHandle.h.

70  : ReadMetaHandle(key, Gaudi::Hive::currentContext())
71  {
72  }

◆ ReadMetaHandle() [2/4]

template<typename T >
SG::ReadMetaHandle< T >::ReadMetaHandle ( const SG::ReadMetaHandleKey< T > &  key,
const EventContext &  ctx 
)

Definition at line 77 of file ReadMetaHandle.h.

79  : m_sid( Atlas::getExtendedEventContext(ctx).proxy()->sourceID() )
80  , m_cont( key.getContainer() )
81  , m_hkey(key)
82  {
83  MsgStream msg(Athena::getMessageSvc(), "ReadMetaHandle");
84  if (ATH_UNLIKELY(!m_hkey.isInit())) {
85  msg << MSG::ERROR
86  << "ReadMetaHandleKey " << key.objKey() << " was not initialized"
87  << endmsg;
88  throw std::runtime_error("ReadMetaHandle: ReadMetaHandleKey was not initialized");
89  }
90 
91  if (ATH_UNLIKELY(m_cont == 0)) {
92  // Try to retrieve it
93  StoreGateSvc* ms = m_hkey.getStore();
94  MetaContBase* cb{nullptr};
95  if(ms->retrieve(cb, m_hkey.key()).isFailure()) {
96  msg << MSG::ERROR
97  << "can't retrieve " << m_hkey.fullKey()
98  << " via base class" << endmsg;
99  throw std::runtime_error("ReadCondHandle: ptr to CondCont<T> is zero");
100  }
101  else {
102  m_cont = dynamic_cast< MetaCont<T>* > (cb);
103  if(!m_cont) {
104  msg << MSG::ERROR
105  << "can't dcast MetaContBase to " << m_hkey.fullKey()
106  << endmsg;
107  throw std::runtime_error("ReadMetaHandle: ptr to MetaCont<T> is zero");
108  }
109  }
110  }
111  }

◆ ReadMetaHandle() [3/4]

template<typename T >
SG::ReadMetaHandle< T >::ReadMetaHandle ( SG::ReadMetaHandleKey< T > &&  key)
delete

◆ ReadMetaHandle() [4/4]

template<typename T >
SG::ReadMetaHandle< T >::ReadMetaHandle ( SG::ReadMetaHandleKey< T > &&  key,
const EventContext &  ctx 
)
delete

◆ ~ReadMetaHandle()

template<typename T >
SG::ReadMetaHandle< T >::~ReadMetaHandle ( )
inline

Definition at line 44 of file ReadMetaHandle.h.

44 {};

Member Function Documentation

◆ initMetaHandle()

template<typename T >
bool SG::ReadMetaHandle< T >::initMetaHandle
private

Definition at line 117 of file ReadMetaHandle.h.

118  {
119 
120  if (m_ent) return true;
121 
122  // Initialize sid from dbKey found at ReadMetaHandleKey initialize
123 // m_sid = m_hkey.dbKey(); ???? Do I need this ????
124 
125  if ( ATH_UNLIKELY(! m_cont->find(m_sid, m_ent)) ) {
126  std::ostringstream ost;
127  m_cont->list(ost);
128  MsgStream msg(Athena::getMessageSvc(), "ReadMetaHandle");
129  msg << MSG::ERROR
130  << "ReadMetaHandle:: could not find current SourceID "
131  << m_sid << " for key " << m_hkey.objKey() << "\n"
132  << ost.str() << endmsg;
133  m_ent = nullptr;
134  return false;
135  }
136 
137  return true;
138  }

◆ isValid()

template<typename T >
bool SG::ReadMetaHandle< T >::isValid

Definition at line 186 of file ReadMetaHandle.h.

186  {
187 
188  return initMetaHandle();
189  }

◆ operator*()

template<typename T >
const_pointer_type SG::ReadMetaHandle< T >::operator* ( )
inline

Definition at line 50 of file ReadMetaHandle.h.

50 { return retrieve(); }

◆ operator->()

template<typename T >
const_pointer_type SG::ReadMetaHandle< T >::operator-> ( )
inline

Definition at line 49 of file ReadMetaHandle.h.

49 { return retrieve(); }

◆ retrieve() [1/2]

template<typename T >
const T * SG::ReadMetaHandle< T >::retrieve

Definition at line 144 of file ReadMetaHandle.h.

145  {
146 
147  if (m_ent == 0) {
148  if (!initMetaHandle()) {
149  return nullptr;
150  }
151  }
152 
153  return m_ent;
154  }

◆ retrieve() [2/2]

template<typename T >
const T * SG::ReadMetaHandle< T >::retrieve ( const SG::SourceID t)

Definition at line 160 of file ReadMetaHandle.h.

161  {
162  if (sid == m_sid) {
163  return retrieve();
164  }
165 
166  pointer_type obj(0);
167  if (! (m_cont->find(sid, obj) ) ) {
168  std::ostringstream ost;
169  m_cont->list(ost);
170  MsgStream msg(Athena::getMessageSvc(), "ReadMetaHandle");
171  msg << MSG::ERROR
172  << "ReadMetaHandle::retrieve() could not find SourceID "
173  << sid << " for key " << m_hkey.objKey() << "\n"
174  << ost.str()
175  << endmsg;
176  return nullptr;
177  }
178 
179  return obj;
180  }

Member Data Documentation

◆ m_cont

template<typename T >
const MetaCont<T>* SG::ReadMetaHandle< T >::m_cont {nullptr}
private

Definition at line 59 of file ReadMetaHandle.h.

◆ m_ent

template<typename T >
T* SG::ReadMetaHandle< T >::m_ent {nullptr}
private

Definition at line 60 of file ReadMetaHandle.h.

◆ m_hkey

template<typename T >
const SG::ReadMetaHandleKey<T>& SG::ReadMetaHandle< T >::m_hkey
private

Definition at line 62 of file ReadMetaHandle.h.

◆ m_sid

template<typename T >
SG::SourceID SG::ReadMetaHandle< T >::m_sid
private

Definition at line 58 of file ReadMetaHandle.h.


The documentation for this class was generated from the following files:
python.trigbs_prescaleL1.ost
ost
Definition: trigbs_prescaleL1.py:104
StateLessPT_NewConfig.proxy
proxy
Definition: StateLessPT_NewConfig.py:395
SG::ReadMetaHandle::m_sid
SG::SourceID m_sid
Definition: ReadMetaHandle.h:58
ATH_UNLIKELY
#define ATH_UNLIKELY(x)
Definition: AthUnlikelyMacros.h:17
python.SystemOfUnits.ms
int ms
Definition: SystemOfUnits.py:132
Athena::getMessageSvc
IMessageSvc * getMessageSvc(bool quiet=false)
Definition: getMessageSvc.cxx:20
SG::ReadMetaHandle::initMetaHandle
bool initMetaHandle()
Definition: ReadMetaHandle.h:117
MetaContBase
Definition: MetaCont.h:24
Atlas::getExtendedEventContext
const ExtendedEventContext & getExtendedEventContext(const EventContext &ctx)
Retrieve an extended context from a context object.
Definition: ExtendedEventContext.cxx:32
StoreGateSvc
The Athena Transient Store API.
Definition: StoreGateSvc.h:124
MetaCont
Definition: MetaCont.h:48
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
SG::ReadMetaHandle::pointer_type
T * pointer_type
Definition: ReadMetaHandle.h:30
SG::ReadMetaHandle::m_cont
const MetaCont< T > * m_cont
Definition: ReadMetaHandle.h:59
SG::ReadMetaHandle::retrieve
const_pointer_type retrieve()
Definition: ReadMetaHandle.h:144
SG::ReadMetaHandle::ReadMetaHandle
ReadMetaHandle(const SG::ReadMetaHandleKey< T > &key)
Definition: ReadMetaHandle.h:69
SG::ReadMetaHandle::m_hkey
const SG::ReadMetaHandleKey< T > & m_hkey
Definition: ReadMetaHandle.h:62
python.PyAthena.obj
obj
Definition: PyAthena.py:132
SG::ReadMetaHandle::m_ent
T * m_ent
Definition: ReadMetaHandle.h:60
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37