|
Gaudi Framework, version v21r9 |
| Home | Generated: 3 May 2010 |
#include <GaudiAlg/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> | |
| 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. | |
| GaudiAlgorithm (const std::string &name, ISvcLocator *pSvcLocator) | |
| Standard constructor (protected). | |
| virtual | ~GaudiAlgorithm () |
| destructor, virtual and protected | |
| SmartIF< INTupleSvc > & | evtColSvc () const |
| Access the standard event collection service. | |
Private Member Functions | |
| GaudiAlgorithm () | |
| no public default constructor | |
| GaudiAlgorithm (const GaudiAlgorithm &) | |
| no public copy | |
| GaudiAlgorithm & | operator= (const GaudiAlgorithm &) |
| no public assignment | |
Private Attributes | |
| SmartIF< INTupleSvc > | m_evtColSvc |
| Event Tag Collection Service. | |
| std::vector< std::string > | m_vetoObjs |
| skip the event if any of these objects are present in TES | |
| std::vector< std::string > | m_requireObjs |
| process the event only if one or more of these objects are present in TES | |
Friends | |
| class | AlgFactory< 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" retrieve 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 95 of file GaudiAlgorithm.h.
| GaudiAlgorithm::GaudiAlgorithm | ( | const std::string & | name, | |
| ISvcLocator * | pSvcLocator | |||
| ) |
Standard constructor (protected).
| name | name of the algorithm | |
| pSvcLocator | pointer to Service Locator |
Definition at line 36 of file GaudiAlgorithm.cpp.
00038 : GaudiCommon<Algorithm> ( name , pSvcLocator ) 00039 // 00040 , m_evtColSvc () // pointer to Event Tag Collection Service 00041 { 00042 m_vetoObjs.clear(); 00043 m_requireObjs.clear(); 00044 00045 setProperty ( "RegisterForContextService" , true ).ignore() ; 00046 00047 declareProperty( "VetoObjects", m_vetoObjs, 00048 "Skip execute if one or more of these TES objects exists" ); 00049 declareProperty( "RequireObjects", m_requireObjs, 00050 "Execute only if one or more of these TES objects exists" ); 00051 }
| 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 59 of file GaudiAlgorithm.cpp.
00060 { 00061 // initialize the base class 00062 const StatusCode sc = GaudiCommon<Algorithm>::initialize() ; 00063 if ( sc.isFailure() ) { return sc; } 00064 00065 // Add any customisations here, that cannot go in GaudiCommon 00066 00067 // return 00068 return sc; 00069 }
| StatusCode GaudiAlgorithm::execute | ( | ) | [virtual] |
standard execution method
Reimplemented in GaudiSequencer, and Prescaler.
Definition at line 87 of file GaudiAlgorithm.cpp.
00088 { 00089 return Error ( "Default GaudiAlgorithm execute method called !!" ) ; 00090 }
| StatusCode GaudiAlgorithm::finalize | ( | void | ) | [virtual] |
standard finalization method
Reimplemented from GaudiCommon< Algorithm >.
Reimplemented in GaudiHistoAlg, GaudiSequencer, GaudiTupleAlg, Prescaler, GaudiHistos< GaudiAlgorithm >, and GaudiTuples< GaudiHistoAlg >.
Definition at line 73 of file GaudiAlgorithm.cpp.
00074 { 00075 if ( msgLevel(MSG::DEBUG) ) 00076 debug() << "Finalize base class GaudiAlgorithm" << endmsg; 00077 00078 // reset pointers 00079 m_evtColSvc.reset() ; 00080 00081 // finalize the base class and return 00082 return GaudiCommon<Algorithm>::finalize() ; 00083 }
| StatusCode GaudiAlgorithm::sysExecute | ( | ) | [virtual] |
the generic actions for the execution.
< guard/sentry
Reimplemented from Algorithm.
Definition at line 109 of file GaudiAlgorithm.cpp.
00110 { 00111 IAlgContextSvc* ctx = 0 ; 00112 if ( registerContext() ) { ctx = contextSvc() ; } 00113 // Lock the context 00114 Gaudi::Utils::AlgContext cnt ( ctx , this ) ; 00115 00116 // Do not execute if one or more of the m_vetoObjs exist in TES 00117 for( std::vector<std::string>::iterator it = m_vetoObjs.begin(); 00118 it != m_vetoObjs.end(); it++ ) { 00119 if( exist<DataObject>(*it) ) { 00120 debug() << *it << " found, skipping event " << endmsg; 00121 return StatusCode::SUCCESS; 00122 } 00123 } 00124 00125 // Execute if m_requireObjs is empty 00126 bool doIt = m_requireObjs.empty() ? true : false; 00127 00128 // Execute also if one or more of the m_requireObjs exist in TES 00129 for( std::vector<std::string>::iterator it = m_requireObjs.begin(); 00130 it != m_requireObjs.end(); it++ ) { 00131 if( exist<DataObject>(*it) ) { 00132 doIt = true; 00133 break; 00134 } 00135 } 00136 00137 if( doIt ) 00138 // execute the generic method: 00139 return Algorithm::sysExecute() ; 00140 else 00141 return StatusCode::SUCCESS; 00142 }
| 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 169 of file GaudiAlgorithm.h.
00173 { 00174 GaudiCommon<Algorithm>::put ( svc , object , address , useRootInTES ) ; 00175 }
| 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 208 of file GaudiAlgorithm.h.
00211 { 00212 GaudiCommon<Algorithm>::put ( evtSvc() , object , address , useRootInTES ) ; 00213 }
| Gaudi::Utils::GetData<TYPE>::return_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 249 of file GaudiAlgorithm.h.
00252 { 00253 return GaudiCommon<Algorithm>::get<TYPE> ( svc , location , useRootInTES ) ; 00254 }
| Gaudi::Utils::GetData<TYPE>::return_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 284 of file GaudiAlgorithm.h.
00286 { 00287 return GaudiCommon<Algorithm>::get<TYPE> ( evtSvc() , location , useRootInTES ) ; 00288 }
| 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 309 of file GaudiAlgorithm.h.
00311 { 00312 return GaudiCommon<Algorithm>::get<TYPE> ( svc , location , false ) ; 00313 }
| 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 333 of file GaudiAlgorithm.h.
00334 { 00335 return GaudiCommon<Algorithm>::get<TYPE> ( detSvc() , location , false ) ; 00336 }
| 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 365 of file GaudiAlgorithm.h.
00368 { 00369 return GaudiCommon<Algorithm>::exist<TYPE> ( svc , location , useRootInTES ) ; 00370 }
| 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.
| 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 398 of file GaudiAlgorithm.h.
00400 { 00401 return GaudiCommon<Algorithm>::exist<TYPE> ( evtSvc() , location , useRootInTES ) ; 00402 }
| 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 421 of file GaudiAlgorithm.h.
00423 { 00424 return GaudiCommon<Algorithm>::exist<TYPE> ( svc , location , false ) ; 00425 }
| 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 443 of file GaudiAlgorithm.h.
00444 { 00445 return GaudiCommon<Algorithm>::exist<TYPE> ( detSvc() , location , false ) ; 00446 }
| Gaudi::Utils::GetData<TYPE>::return_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 477 of file GaudiAlgorithm.h.
00480 { 00481 return GaudiCommon<Algorithm>::getOrCreate<TYPE,TYPE2> ( svc , location , useRootInTES ) ; 00482 }
| Gaudi::Utils::GetData<TYPE>::return_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 512 of file GaudiAlgorithm.h.
00514 { 00515 return GaudiCommon<Algorithm>::getOrCreate<TYPE,TYPE2> ( evtSvc() , location , useRootInTES ) ; 00516 }
| SmartIF< INTupleSvc > & GaudiAlgorithm::evtColSvc | ( | ) | const |
Access the standard event collection service.
Definition at line 94 of file GaudiAlgorithm.cpp.
00095 { 00096 if ( !m_evtColSvc.isValid() ) 00097 { m_evtColSvc = svc< INTupleSvc > ( "EvtTupleSvc" , true ) ; } 00098 // 00099 return m_evtColSvc ; 00100 }
| GaudiAlgorithm& GaudiAlgorithm::operator= | ( | const GaudiAlgorithm & | ) | [private] |
no public assignment
friend class AlgFactory< GaudiAlgorithm > [friend] |
Definition at line 98 of file GaudiAlgorithm.h.
SmartIF<INTupleSvc> GaudiAlgorithm::m_evtColSvc [mutable, private] |
std::vector<std::string> GaudiAlgorithm::m_vetoObjs [private] |
skip the event if any of these objects are present in TES
Definition at line 553 of file GaudiAlgorithm.h.
std::vector<std::string> GaudiAlgorithm::m_requireObjs [private] |
process the event only if one or more of these objects are present in TES
Definition at line 555 of file GaudiAlgorithm.h.