![]() |
|
|
Generated: 18 Jul 2008 |
#include <GaudiAlg/GaudiAlgorithm.h>
Inheritance diagram for GaudiAlgorithm:


Small extension of ordinary the Algorithm 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.
Definition at line 93 of file GaudiAlgorithm.h.
Public Member Functions | |
| virtual StatusCode | initialize () |
| standard initialization method | |
| virtual StatusCode | execute () |
| standard execution method | |
| virtual StatusCode | finalize () |
| standard finalization method | |
| virtual StatusCode | sysExecute () |
| the generic actions for the execution. | |
| void | 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. | |
| void | 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> | |
| 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> | |
| 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> | |
| 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> | |
| TYPE * | getOrCreate (const std::string &location, const bool useRootInTES=true) const |
| Get the existing data object from Gaudi Event Transient store. | |
| GaudiAlgorithm (const std::string &name, ISvcLocator *pSvcLocator) | |
| Standard constructor (protected). | |
| virtual | ~GaudiAlgorithm () |
| destructor, virtual and protected | |
| bool | registerContext () const |
| register for Algorithm Context Service ? | |
| INTupleSvc * | evtColSvc () const |
| Access the standard event collection service. | |
| IAlgContextSvc * | contextSvc () const |
| Access the standard Algorithm Context Service. | |
Private Member Functions | |
| GaudiAlgorithm () | |
| no public default constructor | |
| GaudiAlgorithm (const GaudiAlgorithm &) | |
| no public copy | |
| GaudiAlgorithm & | operator= (const GaudiAlgorithm &) |
| no public assignment | |
Private Attributes | |
| INTupleSvc * | m_evtColSvc |
| Event Tag Collection Service. | |
| IAlgContextSvc * | m_contextSvc |
| Algorithm Context Service. | |
| std::string | m_contextSvcName |
| Algorithm Context Service. | |
| bool | m_registerContext |
| register in Algorithm Context Service | |
Friends | |
| class | AlgFactory< GaudiAlgorithm > |
| GaudiAlgorithm::GaudiAlgorithm | ( | const std::string & | name, | |
| ISvcLocator * | pSvcLocator | |||
| ) |
Standard constructor (protected).
| name | name of the algorithm | |
| pSvcLocator | poinetr to Service Locator |
Definition at line 35 of file GaudiAlgorithm.cpp.
References Algorithm::declareProperty(), m_contextSvcName, and m_registerContext.
00037 : GaudiCommon<Algorithm> ( name , pSvcLocator ) 00038 // 00039 , m_evtColSvc ( 0 ) // pointer to Event Tag Collection Service 00040 , m_contextSvc ( 0 ) // pointer to Algorithm Context Service 00041 , m_contextSvcName ( "AlgContextSvc" ) // Algorithm Context Service name 00042 // enforce the algorithm registration for Algorithm Context Service 00043 , m_registerContext ( true ) 00044 { 00045 declareProperty 00046 ( "ContextService" , 00047 m_contextSvcName , 00048 "The name of Algorithm Context Service" ) ; 00049 declareProperty 00050 ( "RegisterForContextService" , 00051 m_registerContext , 00052 "The flag to enforce the registration for Algorithm Context Service") ; 00053 }
| GaudiAlgorithm::~GaudiAlgorithm | ( | ) | [virtual] |
| GaudiAlgorithm::GaudiAlgorithm | ( | ) | [private] |
no public default constructor
| GaudiAlgorithm::GaudiAlgorithm | ( | const GaudiAlgorithm & | ) | [private] |
no public copy
| StatusCode GaudiAlgorithm::initialize | ( | ) | [virtual] |
standard initialization method
Reimplemented from GaudiCommon< Algorithm >.
Reimplemented in GaudiHistoAlg, GaudiSequencer, GaudiTupleAlg, Prescaler, GaudiHistos< GaudiAlgorithm >, and GaudiTuples< GaudiHistoAlg >.
Definition at line 61 of file GaudiAlgorithm.cpp.
References GaudiCommon< PBASE >::initialize(), and StatusCode::isFailure().
Referenced by Prescaler::initialize(), and GaudiSequencer::initialize().
00062 { 00063 // initialize the base class 00064 const StatusCode sc = GaudiCommon<Algorithm>::initialize() ; 00065 if ( sc.isFailure() ) { return sc; } 00066 00067 // Add any customisations here, that cannot go in GaudiCommon 00068 00069 // return 00070 return sc; 00071 }
| StatusCode GaudiAlgorithm::execute | ( | ) | [virtual] |
standard execution method
Implements IAlgorithm.
Reimplemented in GaudiSequencer, and Prescaler.
Definition at line 89 of file GaudiAlgorithm.cpp.
References GaudiCommon< Algorithm >::Error().
00090 { 00091 return Error ( "Default GaudiAlgorithm execute method called !!" ) ; 00092 }
| StatusCode GaudiAlgorithm::finalize | ( | ) | [virtual] |
standard finalization method
Reimplemented from GaudiCommon< Algorithm >.
Reimplemented in GaudiHistoAlg, GaudiSequencer, GaudiTupleAlg, Prescaler, GaudiHistos< GaudiAlgorithm >, and GaudiTuples< GaudiHistoAlg >.
Definition at line 75 of file GaudiAlgorithm.cpp.
References GaudiCommon< Algorithm >::debug(), MSG::DEBUG, endreq(), GaudiCommon< PBASE >::finalize(), m_evtColSvc, and GaudiCommon< Algorithm >::msgLevel().
Referenced by Prescaler::finalize(), and GaudiSequencer::finalize().
00076 { 00077 if ( msgLevel(MSG::DEBUG) ) 00078 debug() << "Finalize base class GaudiAlgorithm" << endreq; 00079 00080 // reset pointers 00081 m_evtColSvc = 0 ; 00082 00083 // finalize the base class and return 00084 return GaudiCommon<Algorithm>::finalize() ; 00085 }
| StatusCode GaudiAlgorithm::sysExecute | ( | ) | [virtual] |
the generic actions for the execution.
< guard/sentry
execute the generic method:
Reimplemented from Algorithm.
Definition at line 123 of file GaudiAlgorithm.cpp.
References contextSvc(), registerContext(), and Algorithm::sysExecute().
00124 { 00125 IAlgContextSvc* ctx = 0 ; 00126 if ( registerContext() ) { ctx = contextSvc() ; } 00127 // Lock the context 00128 Gaudi::Utils::AlgContext cnt ( ctx , this ) ; 00129 00130 return Algorithm::sysExecute() ; 00131 }
| void GaudiAlgorithm::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.
| 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 |
| GaudiException | for invalid event data service | |
| GaudiException | for invalid object | |
| GaudiException | for error result from event data service |
| StatusCode::SUCCESS | Data was successfully placed in the TES. | |
| StatusCode::FAILURE | Failed to store data in the TES. |
Reimplemented from GaudiCommon< Algorithm >.
Definition at line 167 of file GaudiAlgorithm.h.
References GaudiCommon< PBASE >::put(), and GaudiCommon< Algorithm >::svc().
00171 { 00172 GaudiCommon<Algorithm>::put ( svc , object , address , useRootInTES ) ; 00173 }
| void GaudiAlgorithm::put | ( | 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( hits, "/Event/MC/Hits" );
| 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 |
| GaudiException | for invalid event data service | |
| GaudiException | for invalid object | |
| GaudiException | for error result from event data service |
| StatusCode::SUCCESS | Data was successfully placed in the TES. | |
| StatusCode::FAILURE | Failed to store data in the TES. |
Definition at line 206 of file GaudiAlgorithm.h.
References Algorithm::evtSvc(), and GaudiCommon< PBASE >::put().
00209 { 00210 GaudiCommon<Algorithm>::put ( evtSvc() , object , address , useRootInTES ) ; 00211 }
| TYPE* GaudiAlgorithm::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" );
| GaudiException | for Invalid Data Provider Service | |
| GaudiException | for invalid/unavailable data |
| 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 |
Reimplemented from GaudiCommon< Algorithm >.
Definition at line 246 of file GaudiAlgorithm.h.
References GaudiCommon< Algorithm >::svc().
00249 { 00250 return GaudiCommon<Algorithm>::get<TYPE> ( svc , location , useRootInTES ) ; 00251 }
| TYPE* GaudiAlgorithm::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 );
| location | Data location/address in Gaudi Transient Store | |
| useRootInTES | Flag to turn on(TRUE) off(FALSE) the use of the RootInTES location property |
Definition at line 280 of file GaudiAlgorithm.h.
References Algorithm::evtSvc().
00282 { 00283 return GaudiCommon<Algorithm>::get<TYPE> ( evtSvc() , location , useRootInTES ) ; 00284 }
| TYPE* GaudiAlgorithm::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" );
| svc | Pointer to data service (data provider) | |
| location | Detector location/address in Gaudi Transient Store |
Definition at line 305 of file GaudiAlgorithm.h.
References GaudiCommon< Algorithm >::svc().
00307 { 00308 return GaudiCommon<Algorithm>::get<TYPE> ( svc , location , false ) ; 00309 }
| TYPE* GaudiAlgorithm::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" );
| location | Detector location/address in Gaudi Transient Store |
Definition at line 329 of file GaudiAlgorithm.h.
References Algorithm::detSvc().
00330 { 00331 return GaudiCommon<Algorithm>::get<TYPE> ( detSvc() , location , false ) ; 00332 }
| bool GaudiAlgorithm::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" ) ;
| 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 |
| true | Data object or container exists and implements a proper interface | |
| true | Failed to locate the data object or container |
Reimplemented from GaudiCommon< Algorithm >.
Definition at line 361 of file GaudiAlgorithm.h.
References GaudiCommon< Algorithm >::svc().
00364 { 00365 return GaudiCommon<Algorithm>::exist<TYPE> ( svc , location , useRootInTES ) ; 00366 }
| bool GaudiAlgorithm::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" ) ;
| location | Address in Gaudi Transient Event Store | |
| useRootInTES | Flag to turn on(TRUE) off(FALSE) the use of the RootInTES location property |
| true | Data object or container exists and implements a proper interface | |
| true | Failed to locate the data object or container |
Definition at line 394 of file GaudiAlgorithm.h.
References Algorithm::evtSvc().
00396 { 00397 return GaudiCommon<Algorithm>::exist<TYPE> ( evtSvc() , location , useRootInTES ) ; 00398 }
| bool GaudiAlgorithm::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" ) ;
| svc | Pointer to data service (data provider) | |
| location | Address in Gaudi Transient Detector Store |
| true | Detector object exists and implements a proper interface | |
| false | Failed to locate the data object |
Definition at line 417 of file GaudiAlgorithm.h.
References GaudiCommon< Algorithm >::svc().
00419 { 00420 return GaudiCommon<Algorithm>::exist<TYPE> ( svc , location , false ) ; 00421 }
| bool GaudiAlgorithm::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" ) ;
| location | Address in Gaudi Transient Detector Store |
| true | Detector object exists and implements a proper interface | |
| false | Failed to locate the data object |
Definition at line 439 of file GaudiAlgorithm.h.
References Algorithm::detSvc().
00440 { 00441 return GaudiCommon<Algorithm>::exist<TYPE> ( detSvc() , location , false ) ; 00442 }
| TYPE* GaudiAlgorithm::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" ) ;
| GaudiException | for Invalid Data Provider Service | |
| GaudiException | for invalid/unavailable data |
| 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 |
Reimplemented from GaudiCommon< Algorithm >.
Definition at line 472 of file GaudiAlgorithm.h.
References GaudiCommon< Algorithm >::svc().
00475 { 00476 return GaudiCommon<Algorithm>::getOrCreate<TYPE,TYPE2> ( svc , location , useRootInTES ) ; 00477 }
| TYPE* GaudiAlgorithm::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" ) ;
| GaudiException | for Invalid Data Provider Service | |
| GaudiException | for invalid/unavailable data |
| location | Location in Gaudi Transient Event Store | |
| useRootInTES | Flag to turn on(TRUE) off(FALSE) the use of the RootInTES location property |
Definition at line 506 of file GaudiAlgorithm.h.
References Algorithm::evtSvc().
00508 { 00509 return GaudiCommon<Algorithm>::getOrCreate<TYPE,TYPE2> ( evtSvc() , location , useRootInTES ) ; 00510 }
| bool GaudiAlgorithm::registerContext | ( | ) | const [inline] |
register for Algorithm Context Service ?
Definition at line 527 of file GaudiAlgorithm.h.
References m_registerContext.
Referenced by sysExecute().
00527 { return m_registerContext ; }
| INTupleSvc * GaudiAlgorithm::evtColSvc | ( | ) | const |
Access the standard event collection service.
Definition at line 96 of file GaudiAlgorithm.cpp.
References m_evtColSvc.
00097 { 00098 if ( 0 == m_evtColSvc ) 00099 { 00100 m_evtColSvc = svc< INTupleSvc > ( "EvtTupleSvc" , true ) ; 00101 } 00102 return m_evtColSvc ; 00103 }
| IAlgContextSvc * GaudiAlgorithm::contextSvc | ( | ) | const |
Access the standard Algorithm Context Service.
Definition at line 107 of file GaudiAlgorithm.cpp.
References m_contextSvc, and m_contextSvcName.
Referenced by sysExecute().
00108 { 00109 if ( 0 == m_contextSvc ) 00110 { 00111 m_contextSvc = svc< IAlgContextSvc > ( m_contextSvcName , true ) ; 00112 } 00113 return m_contextSvc ; 00114 }
| GaudiAlgorithm& GaudiAlgorithm::operator= | ( | const GaudiAlgorithm & | ) | [private] |
no public assignment
friend class AlgFactory< GaudiAlgorithm > [friend] |
Definition at line 96 of file GaudiAlgorithm.h.
INTupleSvc* GaudiAlgorithm::m_evtColSvc [mutable, private] |
Event Tag Collection Service.
Definition at line 555 of file GaudiAlgorithm.h.
Referenced by evtColSvc(), and finalize().
IAlgContextSvc* GaudiAlgorithm::m_contextSvc [mutable, private] |
std::string GaudiAlgorithm::m_contextSvcName [private] |
bool GaudiAlgorithm::m_registerContext [private] |
register in Algorithm Context Service
Definition at line 561 of file GaudiAlgorithm.h.
Referenced by GaudiAlgorithm(), and registerContext().