| The Gaudi Framework v29r1 (5cd95fa2)

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

GetData.h
Go to the documentation of this file.
1 #ifndef GAUDIUTILS_GETDATA_H
2 #define GAUDIUTILS_GETDATA_H 1
3 // ============================================================================
4 // Include files
5 // ============================================================================
6 // GaudiKernel
7 // ============================================================================
8 #include "GaudiKernel/IDataProviderSvc.h"
9 #include "GaudiKernel/IMessageSvc.h"
10 #include "GaudiKernel/IRegistry.h"
11 #include "GaudiKernel/MsgStream.h"
12 #include "GaudiKernel/SmartDataPtr.h"
13 #include "GaudiKernel/StatusCode.h"
14 // ============================================================================
15 // GaudiUtils
16 // ============================================================================
17 #include "GaudiKernel/AnyDataWrapper.h"
18 #include "GaudiKernel/NamedRange.h"
19 #include "GaudiKernel/Range.h"
20 // ============================================================================
21 // Forward declaration
22 // ============================================================================
23 template <class BASE>
24 class GaudiCommon; // GaudiAlg
25 // ============================================================================
26 namespace Gaudi
27 {
28 namespace Utils
29 {
30 // ========================================================================
37 template <class TYPE>
38 struct _GetType {
39 typedef TYPE* return_type;
40 };
41 // ========================================================================
43 template <class TYPE>
44 struct _GetType<TYPE*> {
45 typedef TYPE* return_type;
46 };
47 // ========================================================================
49 template <class TYPE>
50 struct _GetType<TYPE&> {
51 typedef TYPE* return_type;
52 };
53 // ========================================================================
55 template <class CONTAINER>
56 struct _GetType<Gaudi::Range_<CONTAINER>> {
57 typedef Gaudi::Range_<CONTAINER> return_type;
58 };
59 // ========================================================================
61 template <class CONTAINER>
62 struct _GetType<Gaudi::NamedRange_<CONTAINER>> {
63 typedef Gaudi::NamedRange_<CONTAINER> return_type;
64 };
65 // ========================================================================
70 template <class TYPE, typename std::enable_if<!std::is_constructible<TYPE>::value, void*>::type = nullptr>
71 inline typename _GetType<TYPE>::return_type getFromTS( IDataProviderSvc* service, const std::string& location )
72 {
73 DataObject* obj = nullptr;
74 // Return the casted pointer if the retrieve was successful or nullptr otherwise.
75 StatusCode sc = service->retrieveObject( location, obj );
76 if ( sc.isSuccess() ) {
77 typename _GetType<TYPE>::return_type tobj = dynamic_cast<typename _GetType<TYPE>::return_type>( obj );
78 return tobj;
79 } else {
80 return nullptr;
81 }
82 }
83 // ========================================================================
89 template <class TYPE, typename std::enable_if<std::is_constructible<TYPE>::value, void*>::type = nullptr>
90 inline typename _GetType<TYPE>::return_type getFromTS( IDataProviderSvc* service, const std::string& location )
91 {
92 DataObject* obj = nullptr;
93 // Return the casted pointer if the retrieve was successful or nullptr otherwise.
94 StatusCode sc = service->retrieveObject( location, obj );
95 if ( sc.isSuccess() ) {
96 typename _GetType<TYPE>::return_type tobj = dynamic_cast<typename _GetType<TYPE>::return_type>( obj );
97 if ( !tobj ) {
98 // try with AnyDataWrapper
99 AnyDataWrapper<TYPE>* tobj2 = dynamic_cast<AnyDataWrapper<TYPE>*>( obj );
100 if ( tobj2 ) {
101 tobj = &( tobj2->getData() );
102 }
103 }
104 return tobj;
105 } else {
106 return nullptr;
107 }
108 }
109 // ========================================================================
118 template <class TYPE>
119 struct GetData {
120 public:
121 // ======================================================================
122 typedef TYPE Type;
124 typedef typename _GetType<Type>::return_type return_type;
125 // ======================================================================
126 public:
127 // ======================================================================
135 template <class COMMON>
136 inline return_type operator()( const COMMON& common, IDataProviderSvc* service, const std::string& location,
137 const bool checkData = true ) const
138 {
139 // use Data Provider Service
140 return_type obj = getFromTS<Type>( service, location );
141 if ( checkData ) { // check the data
142 common.Assert( obj, "get():: No valid data at '" + location + "'" );
143 }
144 // debug printout
145 if ( common.msgLevel( MSG::DEBUG ) ) {
146 common.debug() << "The object of type '" << System::typeinfoName( typeid( obj ) ) << "' "
147 << ( obj ? "has been" : "could not be" ) << " retrieved from TS at address '" << location
148 << "'" << endmsg;
149 }
150 // return located data
151 return obj;
152 // ======================================================================
153 }
154 };
155 // ========================================================================
157 template <class TYPE>
158 struct GetData<Gaudi::Range_<std::vector<const TYPE*>>> {
159 public:
160 // ======================================================================
162 typedef Gaudi::Range_<std::vector<const TYPE*>> Type;
163 typedef typename _GetType<Type>::return_type return_type;
164 // ======================================================================
165 public:
166 // ======================================================================
174 template <class COMMON>
175 inline return_type operator()( const COMMON& common, IDataProviderSvc* service, const std::string& location,
176 const bool checkData = true ) const
177 {
180 DataObject* object = this->getData( service, location );
181 if ( object ) {
183 typedef typename TYPE::Selection Selection_;
184 const Selection_* sel = dynamic_cast<Selection_*>( object );
185 if ( sel ) {
186 if ( common.msgLevel( MSG::DEBUG ) ) {
187 common.debug() << "The object of type '" << System::typeinfoName( typeid( *object ) )
188 << "' has been retrieved from TS at address '" << location << "'" << endmsg;
189 }
190 return make_range( sel );
191 }
193 typedef typename TYPE::Container Container_;
194 const Container_* cnt = dynamic_cast<Container_*>( object );
195 if ( cnt ) {
196 if ( common.msgLevel( MSG::DEBUG ) ) {
197 common.debug() << "The object of type '" << System::typeinfoName( typeid( *object ) )
198 << "' has been retrieved from TS at address '" << location << "'" << endmsg;
199 }
200 return make_range( cnt );
201 }
202 // no valid data
203 if ( checkData ) common.Assert( false, "get():: No valid data at '" + location + "'" );
204 }
205 // no valid data
206 if ( checkData ) common.Assert( false, "get():: No data at '" + location + "'" );
207 // the fictive return
208 return return_type();
209 }
210 // ======================================================================
211 public:
212 // ======================================================================
213 // create the range from the container
214 return_type make_range( const typename TYPE::Container* cnt ) const
215 {
216 return 0 == cnt ? return_type() : make_range( cnt->begin(), cnt->end() );
217 }
218 // create the range from the selection
219 return_type make_range( const typename TYPE::Selection* cnt ) const
220 {
221 return 0 == cnt ? return_type() : return_type( cnt->begin(), cnt->end() );
222 }
223 // ======================================================================
229 DataObject* getData( IDataProviderSvc* service, const std::string& location ) const
230 {
232 SmartDataObjectPtr getter( SmartDataObjectPtr::ObjectLoader::access(), service, nullptr, location );
233 return getter.accessData();
234 }
235 // ======================================================================
236 private:
237 // ======================================================================
238 template <class ITERATOR>
239 return_type make_range( ITERATOR first, ITERATOR last ) const
240 {
241 auto _begin = reinterpret_cast<typename return_type::const_iterator*>( &first );
242 auto _end = reinterpret_cast<typename return_type::const_iterator*>( &last );
243 return return_type( *_begin, *_end );
244 }
245 // ======================================================================
246 };
247 // ========================================================================
249 template <class TYPE>
250 struct GetData<Gaudi::NamedRange_<std::vector<const TYPE*>>> {
251 public:
252 // ======================================================================
254 typedef Gaudi::NamedRange_<std::vector<const TYPE*>> Type;
255 typedef typename _GetType<Type>::return_type return_type;
256 // ======================================================================
257 public:
258 // ======================================================================
266 template <class COMMON>
267 inline return_type operator()( const COMMON& common, IDataProviderSvc* service, const std::string& location,
268 const bool checkData = true ) const
269 {
270 return return_type( m_range( common, service, location, checkData ), location );
271 }
272 // ======================================================================
273 public:
274 // ======================================================================
275 // create the range from the container
276 return_type make_range( const typename TYPE::Container* cnt ) const
277 {
278 if ( !cnt ) {
279 return return_type();
280 }
281 static const std::string s_empty = "";
282 const IRegistry* reg = cnt->registry();
283 return return_type( m_range.make_range( cnt ), reg ? reg->identifier() : s_empty );
284 }
285 // create the range from the selection
286 return_type make_range( const typename TYPE::Selection* cnt ) const
287 {
288 if ( !cnt ) {
289 return return_type();
290 }
291 static const std::string s_empty = "";
292 const IRegistry* reg = cnt->registry();
293 return return_type( m_range.make_range( cnt ), reg ? reg->identifier() : s_empty );
294 }
295 // ======================================================================
301 DataObject* getData( IDataProviderSvc* service, const std::string& location ) const
302 {
303 return m_range.getData( service, location );
304 }
305 // ======================================================================
306 private:
309 GetData<Gaudi::Range_<std::vector<const TYPE*>>> m_range;
310 // ======================================================================
311 };
312 // ========================================================================
314 template <class TYPE>
315 struct GetData<const TYPE> : public GetData<TYPE> {
316 };
317 // ========================================================================
319 template <class TYPE>
320 struct GetData<TYPE*> : public GetData<TYPE> {
321 };
322 // ========================================================================
324 template <class TYPE>
325 struct GetData<TYPE&> : public GetData<TYPE> {
326 };
327 // ========================================================================
336 template <class TYPE>
337 struct CheckData {
338 public:
339 // ======================================================================
346 inline bool operator()( IDataProviderSvc* service, const std::string& location ) const
347 {
349 return getFromTS<TYPE>( service, location );
350 }
351 // ======================================================================
352 };
353 // ========================================================================
355 template <class TYPE>
356 struct CheckData<Gaudi::Range_<std::vector<const TYPE*>>> {
357 public:
358 // ======================================================================
365 inline bool operator()( IDataProviderSvc* service, const std::string& location ) const
366 {
367 DataObject* object = this->getData( service, location );
368 if ( !object ) {
369 return false;
370 }
371 return dynamic_cast<typename TYPE::Selection*>( object ) || dynamic_cast<typename TYPE::Container*>( object );
372 }
373 // ======================================================================
374 protected:
375 // ======================================================================
381 DataObject* getData( IDataProviderSvc* service, const std::string& location ) const
382 {
384 SmartDataObjectPtr getter( SmartDataObjectPtr::ObjectLoader::access(), service, nullptr, location );
385 return getter.accessData();
386 }
387 // ======================================================================
388 };
389 // ========================================================================
391 template <class TYPE>
392 struct CheckData<Gaudi::NamedRange_<std::vector<const TYPE*>>>
393 : public CheckData<Gaudi::Range_<std::vector<const TYPE*>>> {
394 };
395 // ========================================================================
397 template <class TYPE>
398 struct CheckData<TYPE*> : public CheckData<TYPE> {
399 };
400 // ========================================================================
402 template <class TYPE>
403 struct CheckData<TYPE&> : public CheckData<TYPE> {
404 };
405 // ========================================================================
407 template <class TYPE>
408 struct CheckData<const TYPE> : public CheckData<TYPE> {
409 };
410 // ========================================================================
419 template <class TYPE, class TYPE2>
420 struct GetOrCreateData {
421 private:
422 // ======================================================================
424 typedef GetData<TYPE> Getter; // the actual data getter
425 // ======================================================================
426 public:
427 // ======================================================================
428 typedef typename Getter::Type Type;
430 typedef typename Getter::return_type return_type;
431 // ======================================================================
432 public:
433 // ======================================================================
440 template <class COMMON>
441 inline return_type operator()( const COMMON& common, IDataProviderSvc* service, const std::string& location,
442 const std::string& location2 ) const
443 {
444 SmartDataPtr<TYPE> obj( service, location );
445 if ( !obj ) {
446 TYPE2* o = new TYPE2();
447 common.put( service, o, location2 );
448 if ( common.msgLevel( MSG::DEBUG ) ) {
449 common.debug() << "The object of type '" << System::typeinfoName( typeid( *o ) )
450 << "' has been created from TS at address '" << location2 << "'" << endmsg;
451 }
452 return o;
453 }
454 auto ret = obj.ptr();
456 common.Assert( !( !ret ), "get():: No valid data at '" + location + "'" );
457 if ( common.msgLevel( MSG::DEBUG ) ) {
458 common.debug() << "The object of type '" << System::typeinfoName( typeid( *ret ) )
459 << "' has been retrieved from TS at address '" << location << "'" << endmsg;
460 }
461 // return *VALID* data
462 return ret;
463 // ====================================================================
464 }
465 };
466 // ========================================================================
467 template <class TYPE, class TYPE2>
468 struct GetOrCreateData<Gaudi::Range_<std::vector<const TYPE*>>, TYPE2> {
469 private:
470 // ======================================================================
471 typedef Gaudi::Range_<std::vector<const TYPE*>> Range;
473 typedef GetData<Range> Getter; // the actual data getter
475 typedef CheckData<Range> Checker; // the actual data checker
476 // ======================================================================
477 public:
478 // ======================================================================
479 typedef typename Getter::Type Type;
481 typedef typename Getter::return_type return_type;
482 // ======================================================================
483 public:
484 // ======================================================================
491 template <class COMMON>
492 inline return_type operator()( const COMMON& common, IDataProviderSvc* service, const std::string& location,
493 const std::string& location2 ) const
494 {
495 DataObject* obj = m_getter.getData( service, location );
496 if ( !obj ) {
497 common.put( service, new TYPE2(), location2 );
498 if ( common.msgLevel( MSG::DEBUG ) ) {
499 common.debug() << "The object of type '" << System::typeinfoName( typeid( TYPE2 ) )
500 << "' has been created from TS at address '" << location2 << "'" << endmsg;
501 }
502 }
503 return m_getter( common, service, location );
504 // ====================================================================
505 }
506 // ======================================================================
507 private:
508 // ======================================================================
510 Getter m_getter; // the actual data getter
511 // ======================================================================
512 };
513 // ========================================================================
514 template <class TYPE, class TYPE2>
515 struct GetOrCreateData<Gaudi::NamedRange_<std::vector<const TYPE*>>, TYPE2> {
516 private:
517 // ======================================================================
518 typedef Gaudi::NamedRange_<std::vector<const TYPE*>> Range;
519 typedef Gaudi::Range_<std::vector<const TYPE*>> Range_;
520 typedef GetOrCreateData<Range_, TYPE2> Helper;
522 typedef GetData<Range> Getter; // the actual data getter
523 // ======================================================================
524 public:
525 // ======================================================================
526 typedef typename Getter::Type Type;
528 typedef typename Getter::return_type return_type;
529 // ======================================================================
530 public:
531 // ======================================================================
538 template <class COMMON>
539 inline return_type operator()( const COMMON& common, IDataProviderSvc* service, const std::string& location,
540 const std::string& location2 ) const
541 {
542 return return_type( m_range( common, service, location, location2 ), location );
543 }
544 // ======================================================================
545 private:
546 // ======================================================================
548 Helper m_range; // the actual data getter
549 // ======================================================================
550 };
551 // ========================================================================
552 template <class TYPE, class TYPE2>
553 struct GetOrCreateData<TYPE, TYPE2*> : public GetOrCreateData<TYPE, TYPE2> {
554 };
555 template <class TYPE, class TYPE2>
556 struct GetOrCreateData<TYPE*, TYPE2> : public GetOrCreateData<TYPE, TYPE2> {
557 };
558 template <class TYPE, class TYPE2>
559 struct GetOrCreateData<TYPE*, TYPE2*> : public GetOrCreateData<TYPE, TYPE2> {
560 };
561 // ========================================================================
562 template <class TYPE, class TYPE2>
563 struct GetOrCreateData<TYPE, const TYPE2> : public GetOrCreateData<TYPE, TYPE2> {
564 };
565 template <class TYPE, class TYPE2>
566 struct GetOrCreateData<const TYPE, TYPE2> : public GetOrCreateData<TYPE, TYPE2> {
567 };
568 template <class TYPE, class TYPE2>
569 struct GetOrCreateData<const TYPE, const TYPE2> : public GetOrCreateData<TYPE, TYPE2> {
570 };
571 // ========================================================================
572 template <class TYPE, class TYPE2>
573 struct GetOrCreateData<TYPE, TYPE2&> : public GetOrCreateData<TYPE, TYPE2> {
574 };
575 template <class TYPE, class TYPE2>
576 struct GetOrCreateData<TYPE&, TYPE2> : public GetOrCreateData<TYPE, TYPE2> {
577 };
578 template <class TYPE, class TYPE2>
579 struct GetOrCreateData<TYPE&, TYPE2&> : public GetOrCreateData<TYPE, TYPE2> {
580 };
581 // ========================================================================
582 } // end of namespace Gaudi::Utils
583 // ==========================================================================
584 } // end of namespace Gaudi
585 // ============================================================================
586 // The END
587 // ============================================================================
588 #endif // GAUDIUTILS_GETDATA_H
589 // ============================================================================
Gaudi::Utils::CheckData< Gaudi::Range_< std::vector< const TYPE * > > >::operator()
bool operator()(IDataProviderSvc *service, const std::string &location) const
the only one essential method
Definition: GetData.h:365
Gaudi::Utils::_GetType< Gaudi::NamedRange_< CONTAINER > >::return_type
Gaudi::NamedRange_< CONTAINER > return_type
Definition: GetData.h:63
Gaudi::Utils::_GetType
Helper structure to define the proper return type for "get"-functions.
Definition: GetData.h:38
Gaudi::Utils::GetOrCreateData< Gaudi::Range_< std::vector< const TYPE * > >, TYPE2 >::operator()
return_type operator()(const COMMON &common, IDataProviderSvc *service, const std::string &location, const std::string &location2) const
the only one essential method
Definition: GetData.h:492
Gaudi::Utils::GetOrCreateData< Gaudi::NamedRange_< std::vector< const TYPE * > >, TYPE2 >::Range
Gaudi::NamedRange_< std::vector< const TYPE * > > Range
Definition: GetData.h:518
Gaudi::Utils::GetOrCreateData< Gaudi::Range_< std::vector< const TYPE * > >, TYPE2 >::m_getter
Getter m_getter
the actual data getter
Definition: GetData.h:510
Gaudi::Utils::GetOrCreateData< Gaudi::NamedRange_< std::vector< const TYPE * > >, TYPE2 >::Getter
GetData< Range > Getter
the actual data getter
Definition: GetData.h:522
MsgStream.h
Gaudi::Utils::GetData< Gaudi::NamedRange_< std::vector< const TYPE * > > >::Type
Gaudi::NamedRange_< std::vector< const TYPE * > > Type
the actual return type
Definition: GetData.h:254
System::typeinfoName
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
Definition: System.cpp:329
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:75
Gaudi::Utils::GetData< Gaudi::Range_< std::vector< const TYPE * > > >::getData
DataObject * getData(IDataProviderSvc *service, const std::string &location) const
get the data form transient store
Definition: GetData.h:229
Gaudi::Utils::GetOrCreateData< Gaudi::NamedRange_< std::vector< const TYPE * > >, TYPE2 >::operator()
return_type operator()(const COMMON &common, IDataProviderSvc *service, const std::string &location, const std::string &location2) const
the only one essential method
Definition: GetData.h:539
Gaudi::Utils::GetData< Gaudi::Range_< std::vector< const TYPE * > > >::make_range
return_type make_range(const typename TYPE::Selection *cnt) const
Definition: GetData.h:219
GaudiPython.HistoUtils.location
location
Definition: HistoUtils.py:899
MSG::DEBUG
Definition: IMessageSvc.h:16
IOTest.sel
sel
Definition: IOTest.py:95
Gaudi::Utils::GetData< Gaudi::Range_< std::vector< const TYPE * > > >::return_type
_GetType< Type >::return_type return_type
Definition: GetData.h:163
Gaudi::Utils::GetOrCreateData< Gaudi::Range_< std::vector< const TYPE * > >, TYPE2 >::Getter
GetData< Range > Getter
the actual data getter
Definition: GetData.h:473
AnyDataWrapper.h
Gaudi::Utils::GetData
Helper structure for implementation of "get"-functions for GaudiCommon<BASE>
Definition: GaudiCommon.h:41
Gaudi::Utils::CheckData::operator()
bool operator()(IDataProviderSvc *service, const std::string &location) const
the only one essential method
Definition: GetData.h:346
IDataProviderSvc
Data provider interface definition.
Definition: IDataProviderSvc.h:45
Gaudi::Utils::_GetType< TYPE * >::return_type
TYPE * return_type
Definition: GetData.h:45
Gaudi::Utils::GetOrCreateData< Gaudi::NamedRange_< std::vector< const TYPE * > >, TYPE2 >::Helper
GetOrCreateData< Range_, TYPE2 > Helper
Definition: GetData.h:520
AnyDataWrapper::getData
const T & getData() const
Definition: AnyDataWrapper.h:22
Gaudi::Utils::GetOrCreateData< Gaudi::NamedRange_< std::vector< const TYPE * > >, TYPE2 >::return_type
Getter::return_type return_type
the actual return type
Definition: GetData.h:528
Gaudi::Utils::GetData< Gaudi::Range_< std::vector< const TYPE * > > >::make_range
return_type make_range(ITERATOR first, ITERATOR last) const
Definition: GetData.h:239
std::string
STL class.
SmartDataStorePtr< TYPE, SmartDataObjectPtr::ObjectLoader >::ptr
TYPE * ptr()
Automatic conversion to data type.
Definition: SmartDataStorePtr.h:90
Gaudi::Utils::CheckData< Gaudi::Range_< std::vector< const TYPE * > > >::getData
DataObject * getData(IDataProviderSvc *service, const std::string &location) const
get the data form transient store
Definition: GetData.h:381
Gaudi::Utils::GetData< Gaudi::NamedRange_< std::vector< const TYPE * > > >::make_range
return_type make_range(const typename TYPE::Selection *cnt) const
Definition: GetData.h:286
Gaudi::Utils::GetData< Gaudi::Range_< std::vector< const TYPE * > > >::operator()
return_type operator()(const COMMON &common, IDataProviderSvc *service, const std::string &location, const bool checkData=true) const
the only one essential method
Definition: GetData.h:175
Gaudi::Utils::GetOrCreateData< Gaudi::NamedRange_< std::vector< const TYPE * > >, TYPE2 >::Type
Getter::Type Type
Definition: GetData.h:526
Gaudi::Utils::GetOrCreateData< Gaudi::NamedRange_< std::vector< const TYPE * > >, TYPE2 >::m_range
Helper m_range
the actual data getter
Definition: GetData.h:548
Gaudi::Utils::GetOrCreateData::operator()
return_type operator()(const COMMON &common, IDataProviderSvc *service, const std::string &location, const std::string &location2) const
the only one essential method
Definition: GetData.h:441
IDataProviderSvc.h
SmartDataPtr.h
Gaudi::Utils::GetData< Gaudi::Range_< std::vector< const TYPE * > > >::make_range
return_type make_range(const typename TYPE::Container *cnt) const
Definition: GetData.h:214
IRegistry::identifier
virtual const id_type & identifier() const =0
Full identifier (or key)
Gaudi::Utils::CheckData
Helper structure for implementation of "exists"-functions for GaudiCommon<BASE>
Definition: GetData.h:337
AnyDataWrapper
Definition: AnyDataWrapper.h:14
Gaudi::Utils::GetData< Gaudi::NamedRange_< std::vector< const TYPE * > > >::operator()
return_type operator()(const COMMON &common, IDataProviderSvc *service, const std::string &location, const bool checkData=true) const
the only one essential method
Definition: GetData.h:267
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:28
Gaudi::Utils::_GetType::return_type
TYPE * return_type
Definition: GetData.h:39
NamedRange.h
This file has been imported from LoKi project "C++ ToolKit for Smart and Friendly Physics Analysis" ...
gaudirun.type
type
Definition: gaudirun.py:133
SmartDataObjectPtr::accessData
DataObject * accessData()
Static Object retrieval method: must call specific function.
Definition: SmartDataObjectPtr.h:91
Gaudi::Utils::GetOrCreateData
Helper structure for implementation of "getOrCreate"-functions for GaudiCommon<BASE> ...
Definition: GetData.h:420
IRegistry.h
IRegistry
The IRegistry represents the entry door to the environment any data object residing in a transient da...
Definition: IRegistry.h:22
Gaudi::Utils::GetOrCreateData< Gaudi::Range_< std::vector< const TYPE * > >, TYPE2 >::return_type
Getter::return_type return_type
the actual return type
Definition: GetData.h:481
Gaudi::Utils::GetOrCreateData::Type
Getter::Type Type
Definition: GetData.h:428
IMessageSvc.h
Range.h
This file has been imported from LoKi project "C++ ToolKit for Smart and Friendly Physics Analysis" ...
Gaudi::Utils::GetData::return_type
_GetType< Type >::return_type return_type
the actual return type
Definition: GetData.h:124
Gaudi::Utils::GetData< Gaudi::NamedRange_< std::vector< const TYPE * > > >::make_range
return_type make_range(const typename TYPE::Container *cnt) const
Definition: GetData.h:276
Gaudi::Utils::GetOrCreateData::return_type
Getter::return_type return_type
the actual return type
Definition: GetData.h:430
SmartDataObjectPtr
A small class used to access easily (and efficiently) data items residing in data stores...
Definition: SmartDataObjectPtr.h:32
Gaudi::Utils::getFromTS
_GetType< TYPE >::return_type getFromTS(IDataProviderSvc *service, const std::string &location)
Helper function to provide the minimal lookup and cast functionality of SmartDataPtr used in the help...
Definition: GetData.h:71
Gaudi::Utils::GetData< Gaudi::NamedRange_< std::vector< const TYPE * > > >::getData
DataObject * getData(IDataProviderSvc *service, const std::string &location) const
get the data form transient store
Definition: GetData.h:301
Gaudi::Utils::GetData< Gaudi::NamedRange_< std::vector< const TYPE * > > >::return_type
_GetType< Type >::return_type return_type
Definition: GetData.h:255
Gaudi::Utils::GetOrCreateData< Gaudi::Range_< std::vector< const TYPE * > >, TYPE2 >::Checker
CheckData< Range > Checker
the actual data checker
Definition: GetData.h:475
Gaudi::Utils::GetData< Gaudi::NamedRange_< std::vector< const TYPE * > > >::m_range
GetData< Gaudi::Range_< std::vector< const TYPE * > > > m_range
===================================================================== the actual processor ...
Definition: GetData.h:309
Gaudi::Utils::GetData::Type
TYPE Type
Definition: GetData.h:122
SmartDataObjectPtr::ObjectLoader::access
static AccessFunction access()
Definition: SmartDataObjectPtr.cpp:17
Gaudi::Utils::GetData< Gaudi::Range_< std::vector< const TYPE * > > >::Type
Gaudi::Range_< std::vector< const TYPE * > > Type
the actual return type
Definition: GetData.h:162
Gaudi::Range_
Useful class for representation of "sequence" of the objects through the range of valid iterators...
Definition: Range.h:108
SmartDataPtr
A small class used to access easily (and efficiently) data items residing in data stores...
Definition: SmartDataPtr.h:47
GaudiCommon
Implements the common functionality between GaudiTools and GaudiAlgorithms.
Definition: GaudiCommon.h:80
Gaudi::Utils::GetOrCreateData< Gaudi::Range_< std::vector< const TYPE * > >, TYPE2 >::Range
Gaudi::Range_< std::vector< const TYPE * > > Range
Definition: GetData.h:471
StatusCode.h
Gaudi::Utils::GetOrCreateData< Gaudi::Range_< std::vector< const TYPE * > >, TYPE2 >::Type
Getter::Type Type
Definition: GetData.h:479
Gaudi::Utils::GetOrCreateData< Gaudi::NamedRange_< std::vector< const TYPE * > >, TYPE2 >::Range_
Gaudi::Range_< std::vector< const TYPE * > > Range_
Definition: GetData.h:519
Gaudi::Utils::GetData::operator()
return_type operator()(const COMMON &common, IDataProviderSvc *service, const std::string &location, const bool checkData=true) const
the only one essential method
Definition: GetData.h:136
Gaudi::Utils::_GetType< TYPE & >::return_type
TYPE * return_type
Definition: GetData.h:51
DataObject
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:29
Gaudi::Utils::_GetType< Gaudi::Range_< CONTAINER > >::return_type
Gaudi::Range_< CONTAINER > return_type
Definition: GetData.h:57
Gaudi::NamedRange_
Definition: NamedRange.h:43
Gaudi
Helper functions to set/get the application return code.
Definition: __init__.py:1
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
Gaudi::Utils::GetOrCreateData::Getter
GetData< TYPE > Getter
the actual data getter
Definition: GetData.h:424
IDataProviderSvc::retrieveObject
virtual StatusCode retrieveObject(IRegistry *pDirectory, const std::string &path, DataObject *&pObject)=0
Retrieve object identified by its directory entry.