![]() |
|
|
Generated: 8 Jan 2009 |
00001 // $Id: GaudiTool.h,v 1.13 2008/10/10 13:38:28 marcocle Exp $ 00002 // ============================================================================ 00003 #ifndef GAUDIALG_GAUDITOOL_H 00004 #define GAUDIALG_GAUDITOOL_H 1 00005 // ============================================================================ 00006 // Include files 00007 // ============================================================================ 00008 // GaudiKernel 00009 // ============================================================================ 00010 #include "GaudiKernel/AlgTool.h" 00011 #include "GaudiKernel/DataObject.h" 00012 // ============================================================================ 00013 // GaudiAlg 00014 // ============================================================================ 00015 #include "GaudiAlg/GaudiAlg.h" 00016 #include "GaudiAlg/GaudiCommon.h" 00017 // ============================================================================ 00018 // forward declarations 00019 // ============================================================================ 00020 class IDataProviderSvc ; 00021 class IChronoStatSvc ; 00022 class IIncidentSvc ; 00023 class IHistogramSvc ; 00024 class GaudiException ; 00025 class INTupleSvc ; 00026 class IAlgContextSvc ; 00027 namespace std { class exception ; } 00028 // ============================================================================ 00064 // ============================================================================ 00098 // ============================================================================ 00099 class GaudiTool: public GaudiCommon<AlgTool> 00100 { 00101 public: 00102 00108 virtual StatusCode initialize (); 00109 00115 virtual StatusCode finalize (); 00116 00117 public: // accessors 00118 00122 INTupleSvc* ntupleSvc () const; 00123 00127 INTupleSvc* evtColSvc () const; 00128 00132 IDataProviderSvc* detSvc () const ; 00133 00137 IDataProviderSvc* evtSvc () const ; 00138 00142 IIncidentSvc* incSvc () const ; 00143 00147 IChronoStatSvc* chronoSvc () const ; 00148 00152 IHistogramSvc* histoSvc () const ; 00153 00157 IAlgContextSvc* contextSvc () const ; 00158 00159 public: 00160 00161 // following methods cannot go in GaudiCommon since they use methods ( evtSvc() 00162 // and detDvc() ) that are not members of AlgTool. 00163 // Also some methods seem which are members of the base class do not seem 00164 // to be found unless forwarding methods are put here ?? 00165 00196 inline DataObject* put ( IDataProviderSvc* svc , 00197 DataObject* object , 00198 const std::string& address , 00199 const bool useRootInTES = true ) const 00200 { 00201 return GaudiCommon<AlgTool>::put ( svc , object , address , useRootInTES ) ; 00202 } 00203 00232 inline DataObject* put ( DataObject* object , 00233 const std::string& address , 00234 const bool useRootInTES = true ) const 00235 { 00236 return GaudiCommon<AlgTool>::put ( evtSvc() , object , address , useRootInTES ) ; 00237 } 00238 00270 template < class TYPE > 00271 inline typename Gaudi::Utils::GetData<TYPE>::return_type 00272 get ( IDataProviderSvc* svc , 00273 const std::string& location , 00274 const bool useRootInTES = true ) const 00275 { 00276 return GaudiCommon<AlgTool>::get<TYPE> ( svc , location , useRootInTES ) ; 00277 } 00278 00304 template < class TYPE > 00305 inline typename Gaudi::Utils::GetData<TYPE>::return_type 00306 get ( const std::string& location , 00307 const bool useRootInTES = true ) const 00308 { 00309 return GaudiCommon<AlgTool>::get<TYPE> ( evtSvc() , location , useRootInTES ) ; 00310 } 00311 00330 template < class TYPE > 00331 inline TYPE* getDet ( IDataProviderSvc* svc , 00332 const std::string& location ) const 00333 { 00334 return GaudiCommon<AlgTool>::get<TYPE> ( svc , location , false ) ; 00335 } 00336 00354 template < class TYPE > 00355 inline TYPE* getDet ( const std::string& location ) const 00356 { 00357 return GaudiCommon<AlgTool>::get<TYPE> ( detSvc() , location , false ) ; 00358 } 00359 00385 template < class TYPE > 00386 inline bool exist ( IDataProviderSvc* svc , 00387 const std::string& location , 00388 const bool useRootInTES = true ) const 00389 { 00390 return GaudiCommon<AlgTool>::exist<TYPE> ( svc , location , useRootInTES ) ; 00391 } 00392 00415 template < class TYPE > 00416 inline bool exist ( const std::string& location , 00417 const bool useRootInTES = true ) const 00418 { 00419 return GaudiCommon<AlgTool>::exist<TYPE> ( evtSvc() , location , useRootInTES ) ; 00420 } 00421 00438 template < class TYPE > 00439 inline bool existDet ( IDataProviderSvc* svc , 00440 const std::string& location ) const 00441 { 00442 return GaudiCommon<AlgTool>::exist<TYPE> ( svc , location , false ) ; 00443 } 00444 00460 template < class TYPE > 00461 inline bool existDet ( const std::string& location ) const 00462 { 00463 return GaudiCommon<AlgTool>::exist<TYPE> ( detSvc() , location , false ) ; 00464 } 00465 00492 template < class TYPE , class TYPE2 > 00493 inline TYPE* getOrCreate ( IDataProviderSvc* svc , 00494 const std::string& location , 00495 const bool useRootInTES = true ) const 00496 { 00497 return GaudiCommon<AlgTool>::getOrCreate<TYPE,TYPE2> ( svc , location , useRootInTES ) ; 00498 } 00499 00525 template < class TYPE , class TYPE2 > 00526 inline TYPE* getOrCreate ( const std::string& location , 00527 const bool useRootInTES = true ) const 00528 { 00529 return GaudiCommon<AlgTool>::getOrCreate<TYPE,TYPE2> ( evtSvc() , location , useRootInTES ) ; 00530 } 00531 00532 protected: 00533 00540 GaudiTool ( const std::string& type , 00541 const std::string& name , 00542 const IInterface* parent ); 00543 00545 virtual ~GaudiTool(); 00546 00547 private: 00548 00550 GaudiTool(); 00551 00553 GaudiTool ( const GaudiTool& ); 00554 00556 GaudiTool& operator = ( const GaudiTool& ); 00557 00558 private: 00559 00561 mutable INTupleSvc* m_ntupleSvc ; 00563 mutable INTupleSvc* m_evtColSvc ; 00565 mutable IDataProviderSvc* m_evtSvc ; 00567 mutable IDataProviderSvc* m_detSvc ; 00569 mutable IChronoStatSvc* m_chronoSvc ; 00571 mutable IIncidentSvc* m_incSvc ; 00573 mutable IHistogramSvc * m_histoSvc ; 00574 // Pointer to the Algorithm Context Service 00575 mutable IAlgContextSvc* m_contextSvc ; 00576 // The name of the Algorithm Context Service 00577 std::string m_contextSvcName ; 00578 00579 private: 00580 00582 const std::string m_local ; 00583 00584 }; 00585 // ============================================================================ 00586 00587 // ============================================================================ 00588 // The END 00589 // ============================================================================ 00590 #endif // GAUDIALG_GAUDITOOL_H 00591 // ============================================================================ 00592 00593