|
Gaudi Framework, version v21r8 |
| Home | Generated: 17 Mar 2010 |
#include <GaudiKernel/AlgTool.h>


Public Member Functions | |
| virtual StatusCode | queryInterface (const InterfaceID &riid, void **ppvUnknown) |
| Query for a given interface. | |
| virtual const std::string & | name () const |
| Retrieve full identifying name of the concrete tool object. | |
| virtual const std::string & | type () const |
| Retrieve type (concrete class) of the sub-algtool. | |
| virtual const IInterface * | parent () const |
| Retrieve parent of the sub-algtool. | |
| virtual StatusCode | configure () |
| virtual StatusCode | initialize () |
| virtual StatusCode | start () |
| virtual StatusCode | stop () |
| virtual StatusCode | finalize () |
| virtual StatusCode | terminate () |
| virtual StatusCode | reinitialize () |
| virtual StatusCode | restart () |
| virtual Gaudi::StateMachine::State | FSMState () const |
| virtual Gaudi::StateMachine::State | targetFSMState () const |
| virtual StatusCode | sysInitialize () |
| Initialize AlgTool. | |
| virtual StatusCode | sysStart () |
| Start AlgTool. | |
| virtual StatusCode | sysStop () |
| Stop AlgTool. | |
| virtual StatusCode | sysFinalize () |
| Finalize AlgTool. | |
| virtual StatusCode | sysReinitialize () |
| Initialize AlgTool. | |
| virtual StatusCode | sysRestart () |
| Start AlgTool. | |
| virtual StatusCode | setProperty (const Property &p) |
| Default implementations for IProperty interface. | |
| virtual StatusCode | setProperty (const std::string &s) |
| virtual StatusCode | setProperty (const std::string &n, const std::string &v) |
| virtual StatusCode | getProperty (Property *p) const |
| virtual const Property & | getProperty (const std::string &name) const |
| virtual StatusCode | getProperty (const std::string &n, std::string &v) const |
| virtual const std::vector < Property * > & | getProperties () const |
| PropertyMgr * | getPropertyMgr () |
| template<class TYPE> | |
| StatusCode | setProperty (const std::string &name, const TYPE &value) |
| set the property form the value | |
| AlgTool (const std::string &type, const std::string &name, const IInterface *parent) | |
| Standard Constructor. | |
| ISvcLocator * | serviceLocator () const |
| Retrieve pointer to service locator. | |
| ISvcLocator * | svcLoc () const |
| shortcut for the method service locator | |
| IMessageSvc * | msgSvc () const |
| Retrieve pointer to message service. | |
| IToolSvc * | toolSvc () const |
| The standard ToolSvc service, Return a pointer to the service if present. | |
| StatusCode | setProperties () |
| Method for setting declared properties to the values specified in the jobOptions via the job option service. | |
| template<class T> | |
| StatusCode | service (const std::string &name, T *&svc, bool createIf=true) const |
| Access a service by name, creating it if it doesn't already exist. | |
| template<class T> | |
| StatusCode | service (const std::string &type, const std::string &name, T *&svc) const |
| Access a service by name, type creating it if it doesn't already exist. | |
| void | declInterface (const InterfaceID &, void *) |
| declare interface | |
| template<class T> | |
| Property * | declareProperty (const std::string &name, T &property, const std::string &doc="none") const |
| Declare the named property. | |
| Property * | declareRemoteProperty (const std::string &name, IProperty *rsvc, const std::string &rname="") const |
| Declare remote named properties. | |
| IAuditorSvc * | auditorSvc () const |
| Access the auditor service. | |
| IMonitorSvc * | monitorSvc () const |
| Access the monitor service. | |
| template<class T> | |
| void | declareInfo (const std::string &name, const T &var, const std::string &desc) const |
| Declare monitoring information. | |
| void | declareInfo (const std::string &name, const std::string &format, const void *var, int size, const std::string &desc) const |
| Declare monitoring information (special case). | |
Protected Member Functions | |
| int | outputLevel () const |
| get tool's output level | |
| IntegerProperty & | outputLevelProperty () |
| Accessor for the Message level property. | |
| void | initOutputLevel (Property &prop) |
| callback for output level property | |
| virtual | ~AlgTool () |
Private Types | |
| typedef std::list< std::pair < InterfaceID, void * > > | InterfaceList |
Private Member Functions | |
| StatusCode | service_i (const std::string &algName, bool createIf, const InterfaceID &iid, void **ppSvc) const |
| implementation of service method | |
| StatusCode | service_i (const std::string &svcType, const std::string &svcName, const InterfaceID &iid, void **ppS) const |
Private Attributes | |
| IntegerProperty | m_outputLevel |
| AlgTool output level. | |
| std::string | m_type |
| AlgTool type (concrete class name). | |
| const std::string | m_name |
| AlgTool full name. | |
| const IInterface * | m_parent |
| AlgTool parent. | |
| ISvcLocator * | m_svcLocator |
| Pointer to Service Locator service. | |
| IMessageSvc * | m_messageSvc |
| Message service. | |
| IToolSvc * | m_ptoolSvc |
| Tool service. | |
| IMonitorSvc * | m_pMonitorSvc |
| Online Monitoring Service. | |
| std::string | m_monitorSvcName |
| Name to use for Monitor Service. | |
| PropertyMgr * | m_propertyMgr |
| Property Manager. | |
| InterfaceList | m_interfaceList |
| Interface list. | |
| std::string | m_threadID |
| Thread Id for Alg Tool. | |
| IAuditorSvc * | m_pAuditorSvc |
| Auditor Service. | |
| BooleanProperty | m_auditInit |
| bool | m_auditorInitialize |
| flag for auditors in "initialize()" | |
| bool | m_auditorStart |
| flag for auditors in "start()" | |
| bool | m_auditorStop |
| flag for auditors in "stop()" | |
| bool | m_auditorFinalize |
| flag for auditors in "finalize()" | |
| bool | m_auditorReinitialize |
| flag for auditors in "reinitialize()" | |
| bool | m_auditorRestart |
| flag for auditors in "restart()" | |
| Gaudi::StateMachine::State | m_state |
| state of the Tool | |
| Gaudi::StateMachine::State | m_targetState |
| state of the Tool | |
Friends | |
| class | ToolSvc |
Classes | |
| class | declareInterface |
Specific methods for doing something useful should be implemented in the concrete tools. Sub-types of this class could implement an additional interface for behavior common to sets of concrete tools (for example vertexers).
Definition at line 35 of file AlgTool.h.
typedef std::list<std::pair<InterfaceID,void*> > AlgTool::InterfaceList [private] |
| AlgTool::AlgTool | ( | const std::string & | type, | |
| const std::string & | name, | |||
| const IInterface * | parent | |||
| ) |
Standard Constructor.
| type | the concrete class of the sub-algtool | |
| name | the full name of the concrete sub-algtool | |
| parent | the parent of the concrete sub-algtool |
Definition at line 181 of file AlgTool.cpp.
00185 : m_outputLevel ( MSG::NIL ) 00186 , m_type ( type ) 00187 , m_name ( name ) 00188 , m_parent ( parent ) 00189 , m_svcLocator ( 0 ) 00190 , m_messageSvc ( 0 ) 00191 , m_ptoolSvc ( 0 ) 00192 , m_pMonitorSvc ( NULL ) 00193 , m_propertyMgr ( new PropertyMgr() ) 00194 , m_interfaceList ( ) 00195 , m_threadID ( ) 00196 , m_pAuditorSvc ( 0 ) 00197 , m_auditInit ( false ) 00198 , m_state ( Gaudi::StateMachine::CONFIGURED ) 00199 , m_targetState ( Gaudi::StateMachine::CONFIGURED ) 00200 { 00201 addRef(); // Initial count set to 1 00202 00203 declareProperty( "MonitorService", m_monitorSvcName = "MonitorSvc" ); 00204 00205 { // get the "OutputLevel" property from parent 00206 const Property* _p = Gaudi::Utils::getProperty ( parent , "OutputLevel") ; 00207 if ( 0 != _p ) { m_outputLevel.assign( *_p ) ; } 00208 declareProperty ( "OutputLevel" , m_outputLevel ) ; 00209 m_outputLevel.declareUpdateHandler(&AlgTool::initOutputLevel, this); 00210 } 00211 00212 IInterface* _p = const_cast<IInterface*> ( parent ) ; 00213 00214 if ( Algorithm* _alg = dynamic_cast<Algorithm*> ( _p ) ) 00215 { 00216 m_svcLocator = _alg -> serviceLocator () ; 00217 m_messageSvc = _alg -> msgSvc () ; 00218 m_threadID = getGaudiThreadIDfromName ( _alg -> name() ) ; 00219 } 00220 else if ( Service* _svc = dynamic_cast<Service*> ( _p ) ) 00221 { 00222 m_svcLocator = _svc -> serviceLocator () ; 00223 m_messageSvc = _svc -> msgSvc () ; 00224 m_threadID = getGaudiThreadIDfromName ( _svc -> name() ) ; 00225 } 00226 else if ( AlgTool* _too = dynamic_cast<AlgTool*> ( _p ) ) 00227 { 00228 m_svcLocator = _too -> m_svcLocator; 00229 m_messageSvc = _too -> m_messageSvc; 00230 m_threadID = getGaudiThreadIDfromName ( _too ->m_threadID ) ; 00231 } 00232 else if ( Auditor* _aud = dynamic_cast<Auditor*> ( _p ) ) 00233 { 00234 m_svcLocator = _aud -> serviceLocator() ; 00235 m_messageSvc = _aud -> msgSvc() ; 00236 m_threadID = getGaudiThreadIDfromName ( _aud -> name() ) ; 00237 } 00238 else 00239 { 00240 throw GaudiException 00241 ( "Failure to create tool '" 00242 + type + "/" + name + "': illegal parent type '" 00243 + System::typeinfoName(typeid(*_p)) + "'", "AlgTool", 0 ); 00244 } 00245 00246 00247 { // audit tools 00248 SmartIF<IProperty> appMgr(m_svcLocator->service("ApplicationMgr")); 00249 if ( !appMgr.isValid() ) { 00250 throw GaudiException("Could not locate ApplicationMgr","AlgTool",0); 00251 } 00252 const Property* p = Gaudi::Utils::getProperty( appMgr , "AuditTools"); 00253 if ( 0 != p ) { m_auditInit.assign ( *p ) ; } 00254 declareProperty ( "AuditTools", m_auditInit ); 00255 bool audit = m_auditInit.value(); 00256 // Declare common AlgTool properties with their defaults 00257 declareProperty ( "AuditInitialize" , m_auditorInitialize = audit ) ; 00258 declareProperty ( "AuditStart" , m_auditorStart = audit ) ; 00259 declareProperty ( "AuditStop" , m_auditorStop = audit ) ; 00260 declareProperty ( "AuditFinalize" , m_auditorFinalize = audit ) ; 00261 } 00262 00263 // check thread ID and try if tool name indicates thread ID 00264 if ( m_threadID.empty() ) 00265 { m_threadID = getGaudiThreadIDfromName ( AlgTool::name() ) ; } 00266 }
| AlgTool::~AlgTool | ( | ) | [protected, virtual] |
Definition at line 571 of file AlgTool.cpp.
00573 { 00574 delete m_propertyMgr; 00575 if( m_ptoolSvc ) m_ptoolSvc->release(); 00576 if( m_pAuditorSvc ) m_pAuditorSvc->release(); 00577 if ( m_pMonitorSvc ) { m_pMonitorSvc->undeclareAll(this); m_pMonitorSvc->release(); } 00578 }
| StatusCode AlgTool::queryInterface | ( | const InterfaceID & | riid, | |
| void ** | ppvUnknown | |||
| ) | [virtual] |
Query for a given interface.
Reimplemented in extends1< AlgTool, IDataStreamTool >, extends1< GaudiTool, IFuncMinimum >, extends1< AlgTool, IGslErrorHandler >, extends1< AlgTool, IFileAccess >, extends1< AlgTool, IPartitionControl >, and extends1< GaudiTool, IEqSolver >.
Definition at line 20 of file AlgTool.cpp.
00023 { 00024 if ( 0 == ppvi ) { return StatusCode::FAILURE ; } // RETURN 00025 StatusCode sc = base_class::queryInterface(riid,ppvi); 00026 if (sc.isSuccess()) { 00027 return sc; 00028 } 00029 else { 00030 for ( InterfaceList::iterator it = m_interfaceList.begin() ; 00031 m_interfaceList.end() != it ; ++it ) 00032 { 00033 if ( !it->first.versionMatch ( riid ) ) { continue ; } 00034 // OK 00035 *ppvi = it->second ; 00036 addRef() ; 00037 return SUCCESS ; // RETURN 00038 } 00039 *ppvi = 0 ; 00040 return NO_INTERFACE ; // RETURN 00041 } 00042 // cannot reach this point 00043 }
| const std::string & AlgTool::name | ( | ) | const [virtual] |
Retrieve full identifying name of the concrete tool object.
Definition at line 53 of file AlgTool.cpp.
00055 { 00056 return m_name; 00057 }
| const std::string & AlgTool::type | ( | ) | const [virtual] |
Retrieve type (concrete class) of the sub-algtool.
Definition at line 60 of file AlgTool.cpp.
00062 { 00063 return m_type; 00064 }
| const IInterface * AlgTool::parent | ( | ) | const [virtual] |
Retrieve parent of the sub-algtool.
Definition at line 67 of file AlgTool.cpp.
00069 { 00070 return m_parent; 00071 }
| virtual StatusCode AlgTool::configure | ( | ) | [inline, virtual] |
| StatusCode AlgTool::initialize | ( | ) | [virtual] |
Reimplemented in GaudiHistoTool, GaudiTool, GaudiTupleTool, SequencerTimerTool, EqSolver, FuncMinimum, DataStreamTool, PartitionSwitchTool, GaudiCommon< AlgTool >, GaudiHistos< GaudiTool >, and GaudiTuples< GaudiHistoTool >.
Definition at line 304 of file AlgTool.cpp.
00306 { 00307 // For the time being there is nothing to be done here. 00308 // Setting the properties is done by the ToolSvc calling setProperties() 00309 // explicitly. 00310 return StatusCode::SUCCESS; 00311 }
| StatusCode AlgTool::start | ( | ) | [virtual] |
Definition at line 349 of file AlgTool.cpp.
00351 { 00352 // For the time being there is nothing to be done here. 00353 return StatusCode::SUCCESS; 00354 }
| StatusCode AlgTool::stop | ( | ) | [virtual] |
Definition at line 392 of file AlgTool.cpp.
00394 { 00395 // For the time being there is nothing to be done here. 00396 return StatusCode::SUCCESS; 00397 }
| StatusCode AlgTool::finalize | ( | void | ) | [virtual] |
Reimplemented in GaudiHistoTool, GaudiTool, GaudiTupleTool, SequencerTimerTool, EqSolver, FuncMinimum, GslErrorCount, DataStreamTool, PartitionSwitchTool, GaudiCommon< AlgTool >, GaudiHistos< GaudiTool >, and GaudiTuples< GaudiHistoTool >.
Definition at line 435 of file AlgTool.cpp.
00437 { 00438 // For the time being there is nothing to be done here. 00439 return StatusCode::SUCCESS; 00440 }
| virtual StatusCode AlgTool::terminate | ( | ) | [inline, virtual] |
| StatusCode AlgTool::reinitialize | ( | ) | [virtual] |
Definition at line 484 of file AlgTool.cpp.
00486 { 00487 /* @TODO 00488 * MCl 2008-10-23: the implementation of reinitialize as finalize+initialize 00489 * is causing too many problems 00490 * 00491 // Default implementation is finalize+initialize 00492 StatusCode sc = finalize(); 00493 if (sc.isFailure()) { 00494 MsgStream log ( msgSvc() , name() ); 00495 log << MSG::ERROR << "reinitialize(): cannot be finalized" << endmsg; 00496 return sc; 00497 } 00498 sc = initialize(); 00499 if (sc.isFailure()) { 00500 MsgStream log ( msgSvc() , name() ); 00501 log << MSG::ERROR << "reinitialize(): cannot be initialized" << endmsg; 00502 return sc; 00503 } 00504 */ 00505 return StatusCode::SUCCESS; 00506 }
| StatusCode AlgTool::restart | ( | ) | [virtual] |
Definition at line 551 of file AlgTool.cpp.
00553 { 00554 // Default implementation is stop+start 00555 StatusCode sc = stop(); 00556 if (sc.isFailure()) { 00557 MsgStream log ( msgSvc() , name() ); 00558 log << MSG::ERROR << "restart(): cannot be stopped" << endmsg; 00559 return sc; 00560 } 00561 sc = start(); 00562 if (sc.isFailure()) { 00563 MsgStream log ( msgSvc() , name() ); 00564 log << MSG::ERROR << "restart(): cannot be started" << endmsg; 00565 return sc; 00566 } 00567 return StatusCode::SUCCESS; 00568 }
| virtual Gaudi::StateMachine::State AlgTool::FSMState | ( | ) | const [inline, virtual] |
| virtual Gaudi::StateMachine::State AlgTool::targetFSMState | ( | ) | const [inline, virtual] |
| StatusCode AlgTool::sysInitialize | ( | ) | [virtual] |
Initialize AlgTool.
Definition at line 269 of file AlgTool.cpp.
00269 { 00270 //----------------------------------------------------------------------------- 00271 StatusCode sc; 00272 00273 try { 00274 m_targetState = Gaudi::StateMachine::ChangeState(Gaudi::StateMachine::INITIALIZE,m_state); 00275 Gaudi::Guards::AuditorGuard guard(this, 00276 // check if we want to audit the initialize 00277 (m_auditorInitialize) ? auditorSvc() : 0, 00278 IAuditor::Initialize); 00279 sc = initialize(); 00280 if (sc.isSuccess()) 00281 m_state = m_targetState; 00282 return sc; 00283 } 00284 catch( const GaudiException& Exception ) { 00285 MsgStream log ( msgSvc() , name() + ".sysInitialize()" ); 00286 log << MSG::FATAL << " Exception with tag=" << Exception.tag() 00287 << " is caught " << endmsg; 00288 log << MSG::ERROR << Exception << endmsg; 00289 } 00290 catch( const std::exception& Exception ) { 00291 MsgStream log ( msgSvc() , name() + ".sysInitialize()" ); 00292 log << MSG::FATAL << " Standard std::exception is caught " << endmsg; 00293 log << MSG::ERROR << Exception.what() << endmsg; 00294 } 00295 catch( ... ) { 00296 MsgStream log ( msgSvc() , name() + ".sysInitialize()" ); 00297 log << MSG::FATAL << "UNKNOWN Exception is caught " << endmsg; 00298 } 00299 return StatusCode::FAILURE ; 00300 00301 }
| StatusCode AlgTool::sysStart | ( | ) | [virtual] |
Start AlgTool.
Definition at line 314 of file AlgTool.cpp.
00314 { 00315 //----------------------------------------------------------------------------- 00316 StatusCode sc; 00317 00318 try { 00319 m_targetState = Gaudi::StateMachine::ChangeState(Gaudi::StateMachine::START,m_state); 00320 Gaudi::Guards::AuditorGuard guard(this, 00321 // check if we want to audit the initialize 00322 (m_auditorStart) ? auditorSvc() : 0, 00323 IAuditor::Start); 00324 sc = start(); 00325 if (sc.isSuccess()) 00326 m_state = m_targetState; 00327 return sc; 00328 } 00329 catch( const GaudiException& Exception ) { 00330 MsgStream log ( msgSvc() , name() + ".sysStart()" ); 00331 log << MSG::FATAL << " Exception with tag=" << Exception.tag() 00332 << " is caught " << endmsg; 00333 log << MSG::ERROR << Exception << endmsg; 00334 } 00335 catch( const std::exception& Exception ) { 00336 MsgStream log ( msgSvc() , name() + ".sysStart()" ); 00337 log << MSG::FATAL << " Standard std::exception is caught " << endmsg; 00338 log << MSG::ERROR << Exception.what() << endmsg; 00339 } 00340 catch( ... ) { 00341 MsgStream log ( msgSvc() , name() + ".sysStart()" ); 00342 log << MSG::FATAL << "UNKNOWN Exception is caught " << endmsg; 00343 } 00344 return StatusCode::FAILURE ; 00345 00346 }
| StatusCode AlgTool::sysStop | ( | ) | [virtual] |
Stop AlgTool.
Definition at line 357 of file AlgTool.cpp.
00357 { 00358 //----------------------------------------------------------------------------- 00359 StatusCode sc; 00360 00361 try { 00362 m_targetState = Gaudi::StateMachine::ChangeState(Gaudi::StateMachine::STOP,m_state); 00363 Gaudi::Guards::AuditorGuard guard(this, 00364 // check if we want to audit the initialize 00365 (m_auditorStop) ? auditorSvc() : 0, 00366 IAuditor::Stop); 00367 sc = stop(); 00368 if (sc.isSuccess()) 00369 m_state = m_targetState; 00370 return sc; 00371 } 00372 catch( const GaudiException& Exception ) { 00373 MsgStream log ( msgSvc() , name() + ".sysStop()" ); 00374 log << MSG::FATAL << " Exception with tag=" << Exception.tag() 00375 << " is caught " << endmsg; 00376 log << MSG::ERROR << Exception << endmsg; 00377 } 00378 catch( const std::exception& Exception ) { 00379 MsgStream log ( msgSvc() , name() + ".sysStop()" ); 00380 log << MSG::FATAL << " Standard std::exception is caught " << endmsg; 00381 log << MSG::ERROR << Exception.what() << endmsg; 00382 } 00383 catch( ... ) { 00384 MsgStream log ( msgSvc() , name() + ".sysStop()" ); 00385 log << MSG::FATAL << "UNKNOWN Exception is caught " << endmsg; 00386 } 00387 return StatusCode::FAILURE ; 00388 00389 }
| StatusCode AlgTool::sysFinalize | ( | ) | [virtual] |
Finalize AlgTool.
Definition at line 400 of file AlgTool.cpp.
00400 { 00401 //----------------------------------------------------------------------------- 00402 00403 StatusCode sc; 00404 00405 try { 00406 m_targetState = Gaudi::StateMachine::ChangeState(Gaudi::StateMachine::FINALIZE,m_state); 00407 Gaudi::Guards::AuditorGuard guard(this, 00408 // check if we want to audit the initialize 00409 (m_auditorFinalize) ? auditorSvc() : 0, 00410 IAuditor::Finalize); 00411 sc = finalize(); 00412 if (sc.isSuccess()) 00413 m_state = m_targetState; 00414 return sc; 00415 } 00416 catch( const GaudiException& Exception ) { 00417 MsgStream log ( msgSvc() , name() + ".sysFinalize()" ); 00418 log << MSG::FATAL << " Exception with tag=" << Exception.tag() 00419 << " is caught " << endmsg; 00420 log << MSG::ERROR << Exception << endmsg; 00421 } 00422 catch( const std::exception& Exception ) { 00423 MsgStream log ( msgSvc() , name() + ".sysFinalize()" ); 00424 log << MSG::FATAL << " Standard std::exception is caught " << endmsg; 00425 log << MSG::ERROR << Exception.what() << endmsg; 00426 } 00427 catch( ... ) { 00428 MsgStream log ( msgSvc() , name() + ".sysFinalize()" ); 00429 log << MSG::FATAL << "UNKNOWN Exception is caught " << endmsg; 00430 } 00431 return StatusCode::FAILURE; 00432 00433 }
| StatusCode AlgTool::sysReinitialize | ( | ) | [virtual] |
Initialize AlgTool.
Definition at line 443 of file AlgTool.cpp.
00443 { 00444 //----------------------------------------------------------------------------- 00445 StatusCode sc; 00446 00447 // Check that the current status is the correct one. 00448 if ( Gaudi::StateMachine::INITIALIZED != FSMState() ) { 00449 MsgStream log ( msgSvc() , name() ); 00450 log << MSG::ERROR 00451 << "sysReinitialize(): cannot reinitialize tool not initialized" 00452 << endmsg; 00453 return StatusCode::FAILURE; 00454 } 00455 00456 try { 00457 Gaudi::Guards::AuditorGuard guard(this, 00458 // check if we want to audit the initialize 00459 (m_auditorReinitialize) ? auditorSvc() : 0, 00460 IAuditor::ReInitialize); 00461 sc = reinitialize(); 00462 return sc; 00463 } 00464 catch( const GaudiException& Exception ) { 00465 MsgStream log ( msgSvc() , name() + ".sysReinitialize()" ); 00466 log << MSG::FATAL << " Exception with tag=" << Exception.tag() 00467 << " is caught" << endmsg; 00468 log << MSG::ERROR << Exception << endmsg; 00469 } 00470 catch( const std::exception& Exception ) { 00471 MsgStream log ( msgSvc() , name() + ".sysReinitialize()" ); 00472 log << MSG::FATAL << " Standard std::exception is caught" << endmsg; 00473 log << MSG::ERROR << Exception.what() << endmsg; 00474 } 00475 catch( ... ) { 00476 MsgStream log ( msgSvc() , name() + ".sysReinitialize()" ); 00477 log << MSG::FATAL << "UNKNOWN Exception is caught" << endmsg; 00478 } 00479 return StatusCode::FAILURE ; 00480 00481 }
| StatusCode AlgTool::sysRestart | ( | ) | [virtual] |
Start AlgTool.
Definition at line 509 of file AlgTool.cpp.
00509 { 00510 //----------------------------------------------------------------------------- 00511 StatusCode sc; 00512 00513 // Check that the current status is the correct one. 00514 if ( Gaudi::StateMachine::RUNNING != FSMState() ) { 00515 MsgStream log ( msgSvc() , name() ); 00516 log << MSG::ERROR 00517 << "sysRestart(): cannot reinitialize tool not started" 00518 << endmsg; 00519 return StatusCode::FAILURE; 00520 } 00521 00522 try { 00523 m_targetState = Gaudi::StateMachine::ChangeState(Gaudi::StateMachine::START,m_state); 00524 Gaudi::Guards::AuditorGuard guard(this, 00525 // check if we want to audit the initialize 00526 (m_auditorRestart) ? auditorSvc() : 0, 00527 IAuditor::ReStart); 00528 sc = restart(); 00529 return sc; 00530 } 00531 catch( const GaudiException& Exception ) { 00532 MsgStream log ( msgSvc() , name() + ".sysRestart()" ); 00533 log << MSG::FATAL << " Exception with tag=" << Exception.tag() 00534 << " is caught" << endmsg; 00535 log << MSG::ERROR << Exception << endmsg; 00536 } 00537 catch( const std::exception& Exception ) { 00538 MsgStream log ( msgSvc() , name() + ".sysRestart()" ); 00539 log << MSG::FATAL << " Standard std::exception is caught" << endmsg; 00540 log << MSG::ERROR << Exception.what() << endmsg; 00541 } 00542 catch( ... ) { 00543 MsgStream log ( msgSvc() , name() + ".sysRestart()" ); 00544 log << MSG::FATAL << "UNKNOWN Exception is caught" << endmsg; 00545 } 00546 return StatusCode::FAILURE ; 00547 00548 }
| StatusCode AlgTool::setProperty | ( | const Property & | p | ) | [virtual] |
Default implementations for IProperty interface.
Definition at line 101 of file AlgTool.cpp.
00103 { 00104 return m_propertyMgr->setProperty(p); 00105 }
| StatusCode AlgTool::setProperty | ( | const std::string & | s | ) | [virtual] |
Definition at line 108 of file AlgTool.cpp.
00110 { 00111 return m_propertyMgr->setProperty(s); 00112 }
| StatusCode AlgTool::setProperty | ( | const std::string & | n, | |
| const std::string & | v | |||
| ) | [virtual] |
Definition at line 115 of file AlgTool.cpp.
00117 { 00118 return m_propertyMgr->setProperty(n,v); 00119 }
| StatusCode AlgTool::getProperty | ( | Property * | p | ) | const [virtual] |
Definition at line 122 of file AlgTool.cpp.
00124 { 00125 return m_propertyMgr->getProperty(p); 00126 }
| const Property & AlgTool::getProperty | ( | const std::string & | name | ) | const [virtual] |
Definition at line 129 of file AlgTool.cpp.
00130 { 00131 return m_propertyMgr->getProperty(n); 00132 }
| StatusCode AlgTool::getProperty | ( | const std::string & | n, | |
| std::string & | v | |||
| ) | const [virtual] |
Definition at line 135 of file AlgTool.cpp.
00137 { 00138 return m_propertyMgr->getProperty(n,v); 00139 }
| const std::vector< Property * > & AlgTool::getProperties | ( | ) | const [virtual] |
Definition at line 142 of file AlgTool.cpp.
00144 { 00145 return m_propertyMgr->getProperties(); 00146 }
| PropertyMgr* AlgTool::getPropertyMgr | ( | ) | [inline] |
| StatusCode AlgTool::setProperty | ( | const std::string & | name, | |
| const TYPE & | value | |||
| ) | [inline] |
set the property form the value
std::vector<double> data = ... ; setProperty( "Data" , data ) ; std::map<std::string,double> cuts = ... ; setProperty( "Cuts" , cuts ) ; std::map<std::string,std::string> dict = ... ; setProperty( "Dictionary" , dict ) ;
Note: the interface IProperty allows setting of the properties either directly from other properties or from strings only
This is very convenient in resetting of the default properties in the derived classes. E.g. without this method one needs to convert everything into strings to use IProperty::setProperty
setProperty ( "OutputLevel" , "1" ) ; setProperty ( "Enable" , "True" ) ; setProperty ( "ErrorMax" , "10" ) ;
For simple cases it is more or less ok, but for complicated properties it is just ugly..
| name | name of the property | |
| value | value of the property |
Definition at line 136 of file AlgTool.h.
00138 { return Gaudi::Utils::setProperty ( m_propertyMgr , name , value ) ; }
| ISvcLocator * AlgTool::serviceLocator | ( | ) | const |
Retrieve pointer to service locator.
Definition at line 74 of file AlgTool.cpp.
00076 { 00077 return m_svcLocator; 00078 }
| ISvcLocator* AlgTool::svcLoc | ( | ) | const [inline] |
shortcut for the method service locator
Definition at line 154 of file AlgTool.h.
00154 { return serviceLocator() ; }
| IMessageSvc * AlgTool::msgSvc | ( | ) | const |
Retrieve pointer to message service.
Definition at line 81 of file AlgTool.cpp.
00083 { 00084 return m_messageSvc; 00085 }
| IToolSvc * AlgTool::toolSvc | ( | ) | const |
The standard ToolSvc service, Return a pointer to the service if present.
Definition at line 88 of file AlgTool.cpp.
00090 { 00091 if ( 0 == m_ptoolSvc ) { 00092 StatusCode sc = service( "ToolSvc", m_ptoolSvc, true ); 00093 if( sc.isFailure() ) { 00094 throw GaudiException("Service [ToolSvc] not found", name(), sc); 00095 } 00096 } 00097 return m_ptoolSvc; 00098 }
| StatusCode AlgTool::setProperties | ( | ) |
Method for setting declared properties to the values specified in the jobOptions via the job option service.
This method is called by the ToolSvc after creating the concrete tool, before passing it to the requesting parent and does not need to be called explicitly.
Definition at line 149 of file AlgTool.cpp.
00151 { 00152 if( m_svcLocator == 0) { 00153 return StatusCode::FAILURE; 00154 } 00155 SmartIF<IJobOptionsSvc> jos(m_svcLocator->service("JobOptionsSvc")); 00156 if( !jos.isValid() ) return StatusCode::FAILURE; 00157 00158 // set first generic Properties 00159 StatusCode sc = jos->setMyProperties( getGaudiThreadGenericName(name()), this ); 00160 if( sc.isFailure() ) return StatusCode::FAILURE; 00161 00162 // set specific Properties 00163 if (isGaudiThreaded(name())) { 00164 if(jos->setMyProperties( name(), this ).isFailure()) { 00165 return StatusCode::FAILURE; 00166 } 00167 } 00168 00169 // Change my own outputlevel 00170 if ( 0 != m_messageSvc ) 00171 { 00172 if ( MSG::NIL != m_outputLevel ) 00173 { m_messageSvc -> setOutputLevel ( name () , m_outputLevel ) ; } 00174 m_outputLevel = m_messageSvc -> outputLevel ( name () ) ; 00175 } 00176 00177 return StatusCode::SUCCESS; 00178 }
| StatusCode AlgTool::service | ( | const std::string & | name, | |
| T *& | svc, | |||
| bool | createIf = true | |||
| ) | const [inline] |
| StatusCode AlgTool::service | ( | const std::string & | type, | |
| const std::string & | name, | |||
| T *& | svc | |||
| ) | const [inline] |
| void AlgTool::declInterface | ( | const InterfaceID & | iid, | |
| void * | ii | |||
| ) |
declare interface
Definition at line 45 of file AlgTool.cpp.
00047 { 00048 m_interfaceList.push_back(std::make_pair(iid, ii)); 00049 }
| Property* AlgTool::declareProperty | ( | const std::string & | name, | |
| T & | property, | |||
| const std::string & | doc = "none" | |||
| ) | const [inline] |
Declare the named property.
MyTool ( const std::string& type , const std::string& name , const IInterface* parent ) : AlgTool ( type , name , pSvc ) , m_property1 ( ... ) , m_property2 ( ... ) { // declare the property declareProperty( "Property1" , m_property1 , "Doc fro property #1" ) ; // declare the property and attach the handler to it declareProperty( "Property2" , m_property2 , "Doc for property #2" ) -> declareUpdateHandler( &MyAlg::handler_2 ) ; }
| name | the property name | |
| property | the property itself, | |
| doc | the documentation string |
Definition at line 226 of file AlgTool.h.
00229 { 00230 return m_propertyMgr -> declareProperty ( name , property , doc ) ; 00231 }
| Property* AlgTool::declareRemoteProperty | ( | const std::string & | name, | |
| IProperty * | rsvc, | |||
| const std::string & | rname = "" | |||
| ) | const [inline] |
Declare remote named properties.
Definition at line 234 of file AlgTool.h.
00237 { 00238 return m_propertyMgr-> declareRemoteProperty ( name , rsvc , rname ) ; 00239 }
| IAuditorSvc * AlgTool::auditorSvc | ( | ) | const |
Access the auditor service.
Definition at line 602 of file AlgTool.cpp.
00602 { 00603 //--------------------------------------------------------------------------- 00604 if ( 0 == m_pAuditorSvc ) { 00605 StatusCode sc = service( "AuditorSvc", m_pAuditorSvc, true ); 00606 if( sc.isFailure() ) { 00607 throw GaudiException("Service [AuditorSvc] not found", name(), sc); 00608 } 00609 } 00610 return m_pAuditorSvc; 00611 }
| IMonitorSvc* AlgTool::monitorSvc | ( | ) | const [inline] |
Access the monitor service.
| NULL | No monitor service is present | |
| non-NULL | A monitor service is present and available to be used |
Definition at line 253 of file AlgTool.h.
00254 { 00255 // If not already located try to locate it without forcing a creation 00256 if ( !m_pMonitorSvc ){ 00257 service_i( m_monitorSvcName, false, 00258 IMonitorSvc::interfaceID(), pp_cast<void>(&m_pMonitorSvc) ).ignore(); 00259 } 00260 return m_pMonitorSvc; 00261 }
| void AlgTool::declareInfo | ( | const std::string & | name, | |
| const T & | var, | |||
| const std::string & | desc | |||
| ) | const [inline] |
Declare monitoring information.
| name | Monitoring information name known to the external system | |
| var | Monitoring Listener address (the item to monitor...) | |
| desc | Textual description of the information being monitored |
Definition at line 269 of file AlgTool.h.
00272 { 00273 IMonitorSvc* mS = monitorSvc(); 00274 if ( mS ) mS->declareInfo(name, var, desc, this); 00275 }
| void AlgTool::declareInfo | ( | const std::string & | name, | |
| const std::string & | format, | |||
| const void * | var, | |||
| int | size, | |||
| const std::string & | desc | |||
| ) | const [inline] |
Declare monitoring information (special case).
| name | Monitoring information name known to the external system | |
| format | Format information | |
| var | Monitoring Listener address | |
| size | Monitoring Listener address size | |
| desc | Textual description of the information being monitored |
Definition at line 284 of file AlgTool.h.
00289 { 00290 IMonitorSvc* mS = monitorSvc(); 00291 if ( mS ) mS->declareInfo(name, format, var, size, desc, this); 00292 }
| int AlgTool::outputLevel | ( | ) | const [inline, protected] |
get tool's output level
Definition at line 297 of file AlgTool.h.
00297 { return (int)m_outputLevel ; }
| IntegerProperty& AlgTool::outputLevelProperty | ( | ) | [inline, protected] |
Accessor for the Message level property.
Definition at line 300 of file AlgTool.h.
00300 { return m_outputLevel; }
| void AlgTool::initOutputLevel | ( | Property & | prop | ) | [protected] |
callback for output level property
Definition at line 615 of file AlgTool.cpp.
00615 { 00616 //----------------------------------------------------------------------------- 00617 // do nothing... yet ? 00618 }
| StatusCode AlgTool::service_i | ( | const std::string & | algName, | |
| bool | createIf, | |||
| const InterfaceID & | iid, | |||
| void ** | ppSvc | |||
| ) | const [private] |
implementation of service method
Definition at line 583 of file AlgTool.cpp.
00586 { 00587 const ServiceLocatorHelper helper(*serviceLocator(), *this); 00588 return helper.getService(svcName, createIf, iid, ppSvc); 00589 }
| StatusCode AlgTool::service_i | ( | const std::string & | svcType, | |
| const std::string & | svcName, | |||
| const InterfaceID & | iid, | |||
| void ** | ppS | |||
| ) | const [private] |
Definition at line 593 of file AlgTool.cpp.
00596 { 00597 const ServiceLocatorHelper helper(*serviceLocator(), *this); 00598 return helper.createService(svcType, svcName, iid, ppSvc); 00599 }
IntegerProperty AlgTool::m_outputLevel [private] |
std::string AlgTool::m_type [private] |
const std::string AlgTool::m_name [private] |
const IInterface* AlgTool::m_parent [private] |
ISvcLocator* AlgTool::m_svcLocator [mutable, private] |
IMessageSvc* AlgTool::m_messageSvc [mutable, private] |
IToolSvc* AlgTool::m_ptoolSvc [mutable, private] |
IMonitorSvc* AlgTool::m_pMonitorSvc [mutable, private] |
std::string AlgTool::m_monitorSvcName [private] |
PropertyMgr* AlgTool::m_propertyMgr [private] |
InterfaceList AlgTool::m_interfaceList [private] |
std::string AlgTool::m_threadID [private] |
IAuditorSvc* AlgTool::m_pAuditorSvc [mutable, private] |
BooleanProperty AlgTool::m_auditInit [private] |
bool AlgTool::m_auditorInitialize [private] |
bool AlgTool::m_auditorStart [private] |
bool AlgTool::m_auditorStop [private] |
bool AlgTool::m_auditorFinalize [private] |
bool AlgTool::m_auditorReinitialize [private] |
bool AlgTool::m_auditorRestart [private] |
Gaudi::StateMachine::State AlgTool::m_state [private] |