| # Gaudi Framework, version v21r8 |

Home |  | Generated: 17 Mar 2010

# GaudiTool Class Reference

The useful base class for tools. More...

`#include <GaudiTools/GaudiTool.h>`

Inheritance diagram for GaudiTool:

[legend]
Collaboration diagram for GaudiTool:

[legend]

List of all members.

## Public Member Functions
virtual StatusCode | initialize ()
| standard initialization method
virtual StatusCode | finalize ()
| standard finalization method
INTupleSvc * | ntupleSvc () const
| Access the standard N-Tuple.
INTupleSvc * | evtColSvc () const
| Access the standard event collection service.
IDataProviderSvc * | detSvc () const
| accessor to detector service
IDataProviderSvc * | evtSvc () const
| accessor to event service service
IIncidentSvc * | incSvc () const
| accessor to Incident Service
IChronoStatSvc * | chronoSvc () const
| accessor to Chrono & Stat Service
IHistogramSvc * | histoSvc () const
| acessor to the histogram service
IAlgContextSvc * | contextSvc () const
| acessor to the Algorithm Context Service
DataObject * | put (IDataProviderSvc *svc, DataObject *object, const std::string &address, const bool useRootInTES=true) const
| Register a data object or container into Gaudi Event Transient Store.
DataObject * | put (DataObject *object, const std::string &address, const bool useRootInTES=true) const
| Register a data object or container into Gaudi Event Transient Store.
template<class TYPE>
Gaudi::Utils::GetData< TYPE > ::return_type | get (IDataProviderSvc *svc, const std::string &location, const bool useRootInTES=true) const
| Templated access to the data in Gaudi Transient Store.
template<class TYPE>
Gaudi::Utils::GetData< TYPE > ::return_type | get (const std::string &location, const bool useRootInTES=true) const
| Templated access to the data from Gaudi Event Transient Store.
template<class TYPE>
TYPE * | getDet (IDataProviderSvc *svc, const std::string &location) const
| Templated access to the detector data from the Gaudi Detector Transient Store.
template<class TYPE>
TYPE * | getDet (const std::string &location) const
| Templated access to the detector data from the Gaudi Detector Transient Store.
template<class TYPE>
bool | exist (IDataProviderSvc *svc, const std::string &location, const bool useRootInTES=true) const
| Check the existence of a data object or container in the Gaudi Transient Event Store.
template<class TYPE>
bool | exist (const std::string &location, const bool useRootInTES=true) const
| Check the existence of a data object or container in the Gaudi Transient Event Store.
template<class TYPE>
bool | existDet (IDataProviderSvc *svc, const std::string &location) const
| Check the existence of detector objects in the Gaudi Transient Detector Store.
template<class TYPE>
bool | existDet (const std::string &location) const
| Check the existence of detector objects in the Gaudi Transient Detector Store.
template<class TYPE, class TYPE2>
Gaudi::Utils::GetData< TYPE > ::return_type | getOrCreate (IDataProviderSvc *svc, const std::string &location, const bool useRootInTES=true) const
| Get the existing data object from Gaudi Event Transient store.
template<class TYPE, class TYPE2>
Gaudi::Utils::GetData< TYPE > ::return_type | getOrCreate (const std::string &location, const bool useRootInTES=true) const
| Get the existing data object from Gaudi Event Transient store.
## Protected Member Functions
| GaudiTool (const std::string &type, const std::string &name, const IInterface *parent)
| Standard constructor.
virtual | ~GaudiTool ()
| destructor, virtual and protected
## Private Member Functions
| GaudiTool ()
| no public default constructor
| GaudiTool (const GaudiTool &)
| no public copy constructor
GaudiTool & | operator= (const GaudiTool &)
| no public assignment operator
## Private Attributes
INTupleSvc * | m_ntupleSvc
| pointer to the N-Tuple service
INTupleSvc * | m_evtColSvc
| pointer to the event tag collection service
IDataProviderSvc * | m_evtSvc
| pointer to Event Data Service
IDataProviderSvc * | m_detSvc
| pointer to Detector Data Service
IChronoStatSvc * | m_chronoSvc
| pointer to Chrono & Stat Service
IIncidentSvc * | m_incSvc
| pointer to Incident Service
IHistogramSvc * | m_histoSvc
| pointer for histogram service
IAlgContextSvc * | m_contextSvc
| Algorithm Context Service.
std::string | m_contextSvcName
| Algorithm Context Service.
const std::string | m_local
| full tool name "type/name"

## Detailed Description

The useful base class for tools.

Small extension of ordinary the AlgTool base class.

This base class allows "easy"(=="1 line") access to tools and services. This access is safe in the sense that there is no need to worry about the reference counts for tools and services.

The base class allows "easy" (=="1 line") access to data in Gaudi Transient Stores. The functionality includes the checking of the presence of the data at the given location, checking the validity of the data, retrieval of valid data and "forced" retrive of valid data (create if there is no data).

The base class allows to perform an easy error, warning and exception treatments, including the accumulated statistics of exceptions, errors and warnings.

The base class also includes utilities for general statistical counters.

It has been reported that usage of this base class results in significant shrinkage of existing code lines.

Attention:
  See the class GaudiCommon, which implements some of the common functionality between GaudiTool and GaudiAlgorithm

Author:
  Vanya BELYAEV Ivan.Belyaev@itep.ru

  Chris Jones Christopher.Rob.Jones@cern.ch

Date:
  2003-07-07

Definition at line 99 of file GaudiTool.h.

## Constructor & Destructor Documentation

GaudiTool::GaudiTool | ( | const std::string & | type,
|  | const std::string & | name,
|  | const IInterface * | parent |
| ) |  |  | `[protected]`

Standard constructor.

See also:
  AlgTool

Parameters:

  | type | tool type (useless)
  | name | tool name
  | parent | pointer to parent object (service, algorithm or tool)

Definition at line 114 of file GaudiTool.cpp.

    00117   : GaudiCommon<AlgTool> ( this_type , this_name , parent )
    00118   //  services
    00119   , m_ntupleSvc   ( 0 )
    00120   , m_evtColSvc   ( 0 )
    00121   , m_evtSvc      ( 0 )
    00122   , m_detSvc      ( 0 )
    00123   , m_chronoSvc   ( 0 )
    00124   , m_incSvc      ( 0 )
    00125   , m_histoSvc    ( 0 )
    00126   , m_contextSvc  ( 0 ) // pointer to Algorithm Context Service
    00127   , m_contextSvcName ( "AlgContextSvc" ) // Algorithm Context Service name
    00128   //
    00129   , m_local       ( this_type + "/" + this_name )
    00130 {
    00131   declareProperty
    00132     ( "ContextService" ,
    00133       m_contextSvcName ,
    00134       "The name of Algorithm Context Service" ) ;
    00135   // make instance counts
    00136   GaudiToolLocal::s_InstanceCounter.increment ( m_local ) ;
    00137 }

GaudiTool::~GaudiTool | ( |  | ) | `[protected, virtual]`

destructor, virtual and protected

Definition at line 141 of file GaudiTool.cpp.

    00142 {
    00143   GaudiToolLocal::s_InstanceCounter.decrement ( m_local ) ;
    00144 }

GaudiTool::GaudiTool | ( |  | ) | `[private]`

no public default constructor

GaudiTool::GaudiTool | ( | const GaudiTool & |  | ) | `[private]`

no public copy constructor

## Member Function Documentation

StatusCode GaudiTool::initialize | ( |  | ) | `[virtual]`

standard initialization method

See also:
  AlgTool

  IAlgTool

Returns:
  status code

Reimplemented from GaudiCommon< AlgTool >.

Reimplemented in GaudiHistoTool, GaudiTupleTool, SequencerTimerTool, EqSolver, FuncMinimum, GaudiHistos< GaudiTool >, and GaudiTuples< GaudiHistoTool >.

Definition at line 148 of file GaudiTool.cpp.

    00149 {
    00150   // initialize the base class
    00151   const StatusCode sc = GaudiCommon<AlgTool>::initialize() ;
    00152   if ( sc.isFailure() ) { return sc; }
    00153
    00154   // increment the counter
    00155   GaudiToolLocal::s_FinalizeCounter.increment( m_local ) ;
    00156
    00157   // return
    00158   return sc;
    00159 }

StatusCode GaudiTool::finalize | ( | void |  | ) | `[virtual]`

standard finalization method

See also:
  AlgTool

  IAlgTool

Returns:
  status code

Reimplemented from GaudiCommon< AlgTool >.

Reimplemented in GaudiHistoTool, GaudiTupleTool, SequencerTimerTool, EqSolver, FuncMinimum, GaudiHistos< GaudiTool >, and GaudiTuples< GaudiHistoTool >.

Definition at line 163 of file GaudiTool.cpp.

    00164 {
    00165   if ( msgLevel(MSG::DEBUG) )
    00166     debug() << " ==> Finalize the base class GaudiTool " << endmsg;
    00167
    00168   // clear "explicit services"
    00169     m_evtSvc    = 0 ;
    00170     m_detSvc    = 0 ;
    00171     m_chronoSvc = 0 ;
    00172     m_incSvc    = 0 ;
    00173     m_histoSvc  = 0 ;
    00174
    00175   // finalize the base class
    00176   const StatusCode sc = GaudiCommon<AlgTool>::finalize() ;
    00177   if ( sc.isFailure() ) { return sc; }
    00178
    00179   // Decrement the counter
    00180   GaudiToolLocal::s_FinalizeCounter.decrement( m_local ) ;
    00181
    00182   // return
    00183   return sc;
    00184 }

INTupleSvc * GaudiTool::ntupleSvc | ( |  | ) | const

Access the standard N-Tuple.

Returns:
  pointer to N-Tuple service .

Definition at line 200 of file GaudiTool.cpp.

    00201 {
    00202   if ( 0 == m_ntupleSvc )
    00203   {
    00204     m_ntupleSvc = svc<INTupleSvc>( "NTupleSvc" , true ) ;
    00205   }
    00206   return m_ntupleSvc ;
    00207 }

INTupleSvc * GaudiTool::evtColSvc | ( |  | ) | const

Access the standard event collection service.

Returns:
  pointer to the event collection service

Definition at line 211 of file GaudiTool.cpp.

    00212 {
    00213   if ( 0 == m_evtColSvc )
    00214   {
    00215     m_evtColSvc = svc< INTupleSvc > ( "EvtTupleSvc" , true ) ;
    00216   }
    00217   return m_evtColSvc ;
    00218 }

IDataProviderSvc * GaudiTool::detSvc | ( |  | ) | const

accessor to detector service

Returns:
  pointer to detector service

Definition at line 188 of file GaudiTool.cpp.

    00189 {
    00190   if ( 0 == m_detSvc )
    00191   {
    00192     m_detSvc =
    00193       svc<IDataProviderSvc>( GaudiToolServices::s_DetectorDataSvc , true ) ;
    00194   }
    00195   return m_detSvc ;
    00196 }

IDataProviderSvc * GaudiTool::evtSvc | ( |  | ) | const

accessor to event service service

Returns:
  pointer to detector service

Definition at line 222 of file GaudiTool.cpp.

    00223 {
    00224   if ( 0 == m_evtSvc )
    00225   {
    00226     m_evtSvc =
    00227       svc<IDataProviderSvc>( GaudiToolServices::s_EventDataSvc , true ) ;
    00228   }
    00229   return m_evtSvc ;
    00230 }

IIncidentSvc * GaudiTool::incSvc | ( |  | ) | const

accessor to Incident Service

Returns:
  pointer to the Incident Service

Definition at line 234 of file GaudiTool.cpp.

    00235 {
    00236   if ( 0 == m_incSvc )
    00237   {
    00238     m_incSvc =
    00239       svc<IIncidentSvc> ( GaudiToolServices::s_IncidentSvc , true ) ;
    00240   }
    00241   return m_incSvc ;
    00242 }

IChronoStatSvc * GaudiTool::chronoSvc | ( |  | ) | const

accessor to Chrono & Stat Service

Returns:
  pointer to the Chrono & Stat Service

Definition at line 246 of file GaudiTool.cpp.

    00247 {
    00248   if ( 0 == m_chronoSvc )
    00249   {
    00250     m_chronoSvc =
    00251       svc<IChronoStatSvc> ( GaudiToolServices::s_ChronoStatSvc , true ) ;
    00252   }
    00253   return m_chronoSvc ;
    00254 }

IHistogramSvc * GaudiTool::histoSvc | ( |  | ) | const

acessor to the histogram service

Returns:
  pointer to the histogram service

Definition at line 258 of file GaudiTool.cpp.

    00259 {
    00260   if ( 0 == m_histoSvc )
    00261   {
    00262     m_histoSvc = svc<IHistogramSvc> ( GaudiToolServices::s_HistoSvc, true ) ;
    00263   }
    00264   return m_histoSvc;
    00265 }

IAlgContextSvc * GaudiTool::contextSvc | ( |  | ) | const

acessor to the Algorithm Context Service

Returns:
  pointer to the Algorithm Contetx Service

Definition at line 269 of file GaudiTool.cpp.

    00270 {
    00271   if ( 0 == m_contextSvc )
    00272   {
    00273     m_contextSvc = svc<IAlgContextSvc> ( m_contextSvcName , true ) ;
    00274   }
    00275   return m_contextSvc;
    00276 }

DataObject* GaudiTool::put | ( | IDataProviderSvc * | svc,
|  | DataObject * | object,
|  | const std::string & | address,
|  | const bool | useRootInTES = `true` |
| ) |  |  | const`[inline]`

Register a data object or container into Gaudi Event Transient Store.

      MCHits * hits = new MCHits();
      put( evtSvc(), hits, "/Event/MC/Hits" );

Attention:
  The method respects the setting of the job option RootInTES by prepending the value of this to the data location that is passed. The default setting for RootInTES is "" so has no effect. This behaviour can be suppressed by passing the arguement useRootInTES = false

See also:
  IDataProviderSvc

Parameters:

  | svc | Pointer to data provider service
  | object | Data object or container to be registered
  | address | Address in Gaudi Event Transient Store ("/Event" could be omitted )
  | useRootInTES | Flag to turn on(TRUE) off(FALSE) the use of the RootInTES location property

Exceptions:

  | GaudiException | for invalid event data service
  | GaudiException | for invalid object
  | GaudiException | for error result from event data service

Returns:
  StatusCode

Return values:

  | StatusCode::SUCCESS | Data was successfully placed in the TES.
  | StatusCode::FAILURE | Failed to store data in the TES.

Reimplemented from GaudiCommon< AlgTool >.

Definition at line 196 of file GaudiTool.h.

    00200   {
    00201     return GaudiCommon<AlgTool>::put ( svc , object , address , useRootInTES ) ;
    00202   }

DataObject* GaudiTool::put | ( | DataObject * | object,
|  | const std::string & | address,
|  | const bool | useRootInTES = `true` |
| ) |  |  | const`[inline]`

Register a data object or container into Gaudi Event Transient Store.

See also:
  IDataProviderSvc

      MCHits * hits = put( new MCHits(), "/Event/MC/Hits" );

Attention:
  The method respects the setting of the job option RootInTES by prepending the value of this to the data location that is passed. The default setting for RootInTES is "" so has no effect. This behaviour can be suppressed by passing the arguement useRootInTES = false

Parameters:

  | object | Data object or container to be registered
  | address | Address in Gaudi Event Transient Store ("/Event" could be omitted )
  | useRootInTES | Flag to turn on(TRUE) off(FALSE) the use of the RootInTES location property

Exceptions:

  | GaudiException | for invalid event data service
  | GaudiException | for invalid object
  | GaudiException | for error result from event data service

Returns:
  StatusCode

Return values:

  | StatusCode::SUCCESS | Data was successfully placed in the TES.
  | StatusCode::FAILURE | Failed to store data in the TES.

Definition at line 232 of file GaudiTool.h.

    00235   {
    00236     return GaudiCommon<AlgTool>::put ( evtSvc() , object , address , useRootInTES ) ;
    00237   }

template<class TYPE>

Gaudi::Utils::GetData<TYPE>::return_type GaudiTool::get | ( | IDataProviderSvc * | svc,
|  | const std::string & | location,
|  | const bool | useRootInTES = `true` |
| ) |  |  | const`[inline]`

Templated access to the data in Gaudi Transient Store.

Quick and safe access to the data in Gaudi transient store. The method located the data at given address and perform the debug printout about located data

      MCHits* hits = get<MCHits>( evtSvc() , "/Event/MC/Hits" );

Attention:
  The method respects the setting of the job option RootInTES by prepending the value of this to the data location that is passed. The default setting for RootInTES is "" so has no effect. This behaviour can be suppressed by passing the arguement useRootInTES = false

See also:
  IDataProviderSvc

  SmartDataPtr

Exceptions:

  | GaudiException | for Invalid Data Provider Service
  | GaudiException | for invalid/unavailable data

Parameters:

  | svc | Pointer to data service (data provider)
  | location | data location/address in Gaudi Transient Store
  | useRootInTES | Flag to turn on(TRUE) off(FALSE) the use of the RootInTES location property

Returns:
  pointer to the data object

Reimplemented from GaudiCommon< AlgTool >.

Definition at line 272 of file GaudiTool.h.

    00275   {
    00276     return GaudiCommon<AlgTool>::get<TYPE> ( svc , location , useRootInTES ) ;
    00277   }

template<class TYPE>

Gaudi::Utils::GetData<TYPE>::return_type GaudiTool::get | ( | const std::string & | location,
|  | const bool | useRootInTES = `true` |
| ) |  |  | const`[inline]`

Templated access to the data from Gaudi Event Transient Store.

Quick and safe access to the data in Gaudi transient store.

The method located the data at the given address and perform the debug printout about located data.

      MCParticles* mcps = get<MCParticles>( MCParticleLocation::Default );

Attention:
  The method respects the setting of the job option RootInTES by prepending the value of this to the data location that is passed. The default setting for RootInTES is "" so has no effect. This behaviour can be suppressed by passing the arguement useRootInTES = false

Parameters:

  | location | Data location/address in Gaudi Transient Store
  | useRootInTES | Flag to turn on(TRUE) off(FALSE) the use of the RootInTES location property

Returns:
  Pointer to the data object

Definition at line 306 of file GaudiTool.h.

    00308   {
    00309     return GaudiCommon<AlgTool>::get<TYPE> ( evtSvc() , location , useRootInTES ) ;
    00310   }

template<class TYPE>

TYPE* GaudiTool::getDet | ( | IDataProviderSvc * | svc,
|  | const std::string & | location |
| ) |  |  | const`[inline]`

Templated access to the detector data from the Gaudi Detector Transient Store.

Quick and safe access to the detector data in Gaudi transient store.

The method located the detector at the given address and perform the debug printout about located detector.

      MyDet* mdet = getDet<MyDet>( detSvc() , "/dd/Structure/LHCb/MyDet" );

Parameters:

  | svc | Pointer to data service (data provider)
  | location | Detector location/address in Gaudi Transient Store

Returns:
  Pointer to the detector object

Definition at line 331 of file GaudiTool.h.

    00333   {
    00334     return GaudiCommon<AlgTool>::get<TYPE> ( svc , location , false ) ;
    00335   }

template<class TYPE>

TYPE* GaudiTool::getDet | ( | const std::string & | location | ) | const`[inline]`

Templated access to the detector data from the Gaudi Detector Transient Store.

Quick and safe access to the detector data in Gaudi transient store.

The method located the detector at the given address and perform the debug printout about located detector.

      MyDet* mdet = getDet<MyDet>( "/dd/Structure/LHCb/MyDet" );

Parameters:

  | location | Detector location/address in Gaudi Transient Store

Returns:
  Pointer to the detector object

Definition at line 355 of file GaudiTool.h.

    00356   {
    00357     return GaudiCommon<AlgTool>::get<TYPE> ( detSvc() , location , false ) ;
    00358   }

template<class TYPE>

bool GaudiTool::exist | ( | IDataProviderSvc * | svc,
|  | const std::string & | location,
|  | const bool | useRootInTES = `true` |
| ) |  |  | const`[inline]`

Check the existence of a data object or container in the Gaudi Transient Event Store.

      bool a1 = exist<DataObject>( evtSvc(), "/Event/MyObject" ) ;
      bool a2 = exist<MyHits>    ( evtSvc(), "/Event/MyHits"   ) ;

Attention:
  The method respects the setting of the job option RootInTES by prepending the value of this to the data location that is passed. The default setting for RootInTES is "" so has no effect. This behaviour can be suppressed by passing the arguement useRootInTES = false

Parameters:

  | svc | Pointer to data service (data provider)
  | location | Address in Gaudi Transient Event Store
  | useRootInTES | Flag to turn on(TRUE) off(FALSE) the use of the RootInTES location property

Returns:
  Boolean indicating status of the request

Return values:

  | true | Data object or container exists and implements a proper interface
  | true | Failed to locate the data object or container

Reimplemented from GaudiCommon< AlgTool >.

Definition at line 386 of file GaudiTool.h.

    00389   {
    00390     return GaudiCommon<AlgTool>::exist<TYPE> ( svc , location , useRootInTES ) ;
    00391   }

template<class TYPE>

bool GaudiTool::exist | ( | const std::string & | location,
|  | const bool | useRootInTES = `true` |
| ) |  |  | const`[inline]`

Check the existence of a data object or container in the Gaudi Transient Event Store.

      bool a1 = exist<DataObject>( "/Event/MyObject" ) ;
      bool a2 = exist<MyHits>    ( "/Event/MyHits"   ) ;

Attention:
  The method respects the setting of the job option RootInTES by prepending the value of this to the data location that is passed. The default setting for RootInTES is "" so has no effect. This behaviour can be suppressed by passing the arguement useRootInTES = false

Parameters:

  | location | Address in Gaudi Transient Event Store

Returns:
  Boolean indicating status of the request

Return values:

  | true | Data object or container exists and implements a proper interface
  | true | Failed to locate the data object or container

Definition at line 416 of file GaudiTool.h.

    00418   {
    00419     return GaudiCommon<AlgTool>::exist<TYPE> ( evtSvc() , location , useRootInTES ) ;
    00420   }

template<class TYPE>

bool GaudiTool::existDet | ( | IDataProviderSvc * | svc,
|  | const std::string & | location |
| ) |  |  | const`[inline]`

Check the existence of detector objects in the Gaudi Transient Detector Store.

      bool a1 = existDet<DataObject> ( detSvc(), "/dd/Structure/MyObject"     ) ;
      bool a2 = existDet<Material>   ( detSvc(), "/dd/Structure/Material/Air" ) ;

Parameters:

  | svc | Pointer to data service (data provider)
  | location | Address in Gaudi Transient Detector Store

Returns:
  Boolean indicating status of the request

Return values:

  | true | Detector object exists and implements a proper interface
  | false | Failed to locate the data object

Definition at line 439 of file GaudiTool.h.

    00441   {
    00442     return GaudiCommon<AlgTool>::exist<TYPE> ( svc , location , false ) ;
    00443   }

template<class TYPE>

bool GaudiTool::existDet | ( | const std::string & | location | ) | const`[inline]`

Check the existence of detector objects in the Gaudi Transient Detector Store.

      bool a1 = existDet<DataObject> ( "/dd/Structure/MyObject"     ) ;
      bool a2 = existDet<Material>   ( "/dd/Structure/Material/Air" ) ;

Parameters:

  | location | Address in Gaudi Transient Detector Store

Returns:
  Boolean indicating status of the request

Return values:

  | true | Detector object exists and implements a proper interface
  | false | Failed to locate the data object

Definition at line 461 of file GaudiTool.h.

    00462   {
    00463     return GaudiCommon<AlgTool>::exist<TYPE> ( detSvc() , location , false ) ;
    00464   }

template<class TYPE, class TYPE2>

Gaudi::Utils::GetData<TYPE>::return_type GaudiTool::getOrCreate | ( | IDataProviderSvc * | svc,
|  | const std::string & | location,
|  | const bool | useRootInTES = `true` |
| ) |  |  | const`[inline]`

Get the existing data object from Gaudi Event Transient store.

Alternatively, create new object and register it in TES and return if object does not exist.

      MyHits* hits = getOrCreate<MyHits,MyHits>( evtSvc() , "/Event/MyHits" ) ;

Attention:
  The method respects the setting of the job option RootInTES by prepending the value of this to the data location that is passed. The default setting for RootInTES is "" so has no effect. This behaviour can be suppressed by passing the arguement useRootInTES = false

Exceptions:

  | GaudiException | for Invalid Data Provider Service
  | GaudiException | for invalid/unavailable data

Parameters:

  | svc | Pointer to data service (data provider)
  | location | Location in Gaudi Transient Event Store
  | useRootInTES | Flag to turn on(TRUE) off(FALSE) the use of the RootInTES location property

Returns:
  A valid pointer to the object

Reimplemented from GaudiCommon< AlgTool >.

Definition at line 494 of file GaudiTool.h.

    00497   {
    00498     return GaudiCommon<AlgTool>::getOrCreate<TYPE,TYPE2> ( svc , location , useRootInTES ) ;
    00499   }

template<class TYPE, class TYPE2>

Gaudi::Utils::GetData<TYPE>::return_type GaudiTool::getOrCreate | ( | const std::string & | location,
|  | const bool | useRootInTES = `true` |
| ) |  |  | const`[inline]`

Get the existing data object from Gaudi Event Transient store.

Alternatively, create new object and register it in TES and return if object does not exist.

      MyHits* hits = getOrCreate<MyHits,MyHits>( "/Event/MyHits" ) ;

Attention:
  The method respects the setting of the job option RootInTES by prepending the value of this to the data location that is passed. The default setting for RootInTES is "" so has no effect. This behaviour can be suppressed by passing the arguement useRootInTES = false

Exceptions:

  | GaudiException | for Invalid Data Provider Service
  | GaudiException | for invalid/unavailable data

Parameters:

  | location | Location in Gaudi Transient Event Store
  | useRootInTES | Flag to turn on(TRUE) off(FALSE) the use of the RootInTES location property

Returns:
  A valid pointer to the object

Definition at line 528 of file GaudiTool.h.

    00530   {
    00531     return GaudiCommon<AlgTool>::getOrCreate<TYPE,TYPE2> ( evtSvc() , location , useRootInTES ) ;
    00532   }

GaudiTool& GaudiTool::operator= | ( | const GaudiTool & |  | ) | `[private]`

no public assignment operator

## Member Data Documentation

INTupleSvc* GaudiTool::m_ntupleSvc`[mutable, private]`

pointer to the N-Tuple service

Definition at line 563 of file GaudiTool.h.

INTupleSvc* GaudiTool::m_evtColSvc`[mutable, private]`

pointer to the event tag collection service

Definition at line 565 of file GaudiTool.h.

IDataProviderSvc* GaudiTool::m_evtSvc`[mutable, private]`

pointer to Event Data Service

Definition at line 567 of file GaudiTool.h.

IDataProviderSvc* GaudiTool::m_detSvc`[mutable, private]`

pointer to Detector Data Service

Definition at line 569 of file GaudiTool.h.

IChronoStatSvc* GaudiTool::m_chronoSvc`[mutable, private]`

pointer to Chrono & Stat Service

Definition at line 571 of file GaudiTool.h.

IIncidentSvc* GaudiTool::m_incSvc`[mutable, private]`

pointer to Incident Service

Definition at line 573 of file GaudiTool.h.

IHistogramSvc* GaudiTool::m_histoSvc`[mutable, private]`

pointer for histogram service

Definition at line 575 of file GaudiTool.h.

IAlgContextSvc* GaudiTool::m_contextSvc`[mutable, private]`

Algorithm Context Service.

Definition at line 577 of file GaudiTool.h.

std::string GaudiTool::m_contextSvcName`[private]`

Algorithm Context Service.

Definition at line 579 of file GaudiTool.h.

const std::string GaudiTool::m_local`[private]`

full tool name "type/name"

Definition at line 584 of file GaudiTool.h.

The documentation for this class was generated from the following files:

- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v21r8/GaudiAlg/GaudiAlg/GaudiTool.h
- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v21r8/GaudiAlg/src/lib/GaudiTool.cpp