| The Gaudi Framework v28r2-patches (bc4ad17a)

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Static Protected Attributes | Private Member Functions | Private Attributes | List of all members
GaudiCommon< PBASE > Class Template Reference

Implements the common functionality between GaudiTools and GaudiAlgorithms. More...

`#include <GaudiAlg/GaudiCommon.h>`

Inheritance diagram for GaudiCommon< PBASE >:
[legend]
Collaboration diagram for GaudiCommon< PBASE >:
[legend]

## Public Member Functions
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. More...
template<class TYPE >
Gaudi::Utils::GetData< TYPE >::return_type | getIfExists (IDataProviderSvc *svc, const std::string &location, const bool useRootInTES=true) const
| Quicker version of the get function which bypasses the check on the retrieved data. More...
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. More...
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. More...
DataObject * | put (IDataProviderSvc *svc, DataObject *object, const std::string &location, const bool useRootInTES=true) const
| Register a data object or container into Gaudi Event Transient Store. More...
template<class TOOL >
TOOL * | tool (const std::string &type, const std::string &name, const IInterface *parent=0, bool create=true) const
| Useful method for the easy location of tools. More...
template<class TOOL >
TOOL * | tool (const std::string &type, const IInterface *parent=0, bool create=true) const
| A useful method for the easy location of tools. More...
template<class SERVICE >
SmartIF< SERVICE > | svc (const std::string &name, const bool create=true) const
| A useful method for the easy location of services. More...
IUpdateManagerSvc * | updMgrSvc () const
| Short-cut to locate the Update Manager Service. More...
StatusCode | Error (const std::string &msg, const StatusCode st=StatusCode::FAILURE, const size_t mx=10) const
| Print the error message and return with the given StatusCode. More...
StatusCode | Warning (const std::string &msg, const StatusCode st=StatusCode::FAILURE, const size_t mx=10) const
| Print the warning message and return with the given StatusCode. More...
StatusCode | Info (const std::string &msg, const StatusCode st=StatusCode::SUCCESS, const size_t mx=10) const
| Print the info message and return with the given StatusCode. More...
StatusCode | Print (const std::string &msg, const StatusCode st=StatusCode::SUCCESS, const MSG::Level lev=MSG::INFO) const
| Print the message and return with the given StatusCode. More...
void | Assert (const bool ok, const std::string &message="", const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
| Assertion - throw exception if the given condition is not fulfilled. More...
void | Assert (const bool ok, const char *message, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
| Assertion - throw exception if the given condition is not fulfilled. More...
void | Exception (const std::string &msg, const GaudiException &exc, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
| Create and (re)-throw a given GaudiException. More...
void | Exception (const std::string &msg, const std::exception &exc, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
| Create and (re)-throw a given exception. More...
void | Exception (const std::string &msg="no message", const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
| Create and throw an exception with the given message. More...
const Statistics & | counters () const
| accessor to all counters More...
StatEntity & | counter (const std::string &tag) const
| accessor to certain counter by name More...
bool | typePrint () const
| Insert the actual C++ type of the algorithm/tool in the messages ? More...
bool | propsPrint () const
| Print properties at initialization ? More...
bool | statPrint () const
| Print statistical counters at finalization ? More...
bool | errorsPrint () const
| Print error counters at finalization ? More...
long | printStat (const MSG::Level level=MSG::ALWAYS) const
| perform the actual printout of statistical counters More...
long | printErrors (const MSG::Level level=MSG::ALWAYS) const
| perform the actual printout of error counters More...
long | printProps (const MSG::Level level=MSG::ALWAYS) const
| perform the actual printout of properties More...
template<class CallerClass >
void | registerCondition (const std::string &condition, StatusCode(CallerClass::*mf)()=nullptr)
| register the current instance to the UpdateManagerSvc as a consumer for a condition. More...
template<class CallerClass , class CondType >
void | registerCondition (const std::string &condition, CondType *&condPtrDest, StatusCode(CallerClass::*mf)()=NULL)
| register the current instance to the UpdateManagerSvc as a consumer for a condition. More...
template<class CallerClass >
void | registerCondition (char *condition, StatusCode(CallerClass::*mf)()=NULL)
| just to avoid conflicts with the version using a pointer to a template class. More...
template<class CallerClass , class TargetClass >
void | registerCondition (TargetClass *condition, StatusCode(CallerClass::*mf)()=NULL)
| register the current instance to the UpdateManagerSvc as a consumer for a condition. More...
StatusCode | runUpdate ()
| asks the UpdateManagerSvc to perform an update of the instance (if needed) without waiting the next BeginEvent incident. More...
template<typename U = PBASE, class = typename std::enable_if<std::is_base_of<Algorithm,PBASE>::value,U>::type>
| GaudiCommon (const std::string &name, ISvcLocator *pSvcLocator)
| Algorithm constructor - the SFINAE constraint below ensures that this is constructor is only defined if PBASE derives from Algorithm. More...
template<typename U = PBASE, class = typename std::enable_if<std::is_base_of<AlgTool,PBASE>::value,U>::type>
| GaudiCommon (const std::string &type, const std::string &name, const IInterface *ancestor)
| Tool constructor - SFINAE-ed to insure this constructor is only defined if PBASE derives from AlgTool. More...
StatusCode | initialize () override
| standard initialization method More...
StatusCode | finalize () override
| standard finalization method More...
StatusCode | release (const IInterface *interface) const
| Manual forced (and 'safe') release of the active tool or service. More...
const Services & | services () const
| get the list of aquired services More...
const std::string & | context () const
| Returns the "context" string. Used to identify different processing states. More...
const std::string & | rootInTES () const
| Returns the "rootInTES" string. More...
const std::string | fullTESLocation (const std::string &location, const bool useRootInTES) const
| Returns the full correct event location given the rootInTes settings. More...

## Protected Types
using | base_class = PBASE
typedef std::map< std::string, StatEntity > | Statistics
| the actual type of general counters More...
typedef std::map< std::string, unsigned int > | Counter
| the actual type error/warning counter More...
typedef std::vector< IAlgTool * > | AlgTools
| storage for active tools More...
typedef std::vector< SmartIF< IService > > | Services
| storage for active services More...

## Protected Member Functions
| ~GaudiCommon () override=default
| Destructor. More...
StatusCode | releaseTool (const IAlgTool *tool) const
| manual forced (and 'safe') release of the tool More...
StatusCode | releaseSvc (const IInterface *svc) const
| manual forced (and 'safe') release of the service More...

## Protected Attributes
SmartIF< ICounterSummarySvc > | m_counterSummarySvc
| a pointer to the CounterSummarySvc More...

## Static Protected Attributes
static const bool | IgnoreRootInTES = false
| Simple definition to be used with the new useRootInTES argument get<TYPE> and put methods. More...
static const bool | UseRootInTES = true
| Simple definition to be used with the new useRootInTES argument get<TYPE> and put methods. More...

## Private Member Functions
| GaudiCommon ()=delete
| GaudiCommon (const GaudiCommon &)=delete
GaudiCommon & | operator= (const GaudiCommon &)=delete
void | printErrorHandler (Gaudi::Details::PropertyBase &)
| handler for "ErrorPrint" property More...
void | printPropsHandler (Gaudi::Details::PropertyBase &)
| handler for "PropertiesPrint" property More...
void | printStatHandler (Gaudi::Details::PropertyBase &)
| handler for "StatPrint" property More...
void | addToServiceList (SmartIF< IService > svc) const
| Add the given service to the list of acquired services. More...
void | initGaudiCommonConstructor (const IInterface *parent=nullptr)
| Constructor initializations. More...

## Private Attributes
AlgTools | m_managedTools
| List of active tools. More...
Services | m_services
| List of active services. More...
Counter | m_errors
| Counter of errors. More...
Counter | m_warnings
| counter of warnings More...
Counter | m_infos
| counter of infos More...
Counter | m_exceptions
| Counter of exceptions. More...
Statistics | m_counters
| General counters. More...
IUpdateManagerSvc * | m_updMgrSvc = nullptr
| Pointer to the Update Manager Service instance. More...
Gaudi::Property< bool > | m_errorsPrint {this, "ErrorsPrint", true, "print the statistics of errors/warnings/exceptions"}
Gaudi::Property< bool > | m_propsPrint {this, "PropertiesPrint", false, "print the properties of the component"}
Gaudi::Property< bool > | m_statPrint {this, "StatPrint", true, "print the table of counters"}
Gaudi::Property< bool > | m_typePrint {this, "TypePrint", true, "add the actual C++ component type into the messages"}
Gaudi::Property< std::string > | m_context {this, "Context", {}, "note: overridden by parent settings"}
Gaudi::Property< std::string > | m_rootInTES {this, "RootInTES", {}, "note: overridden by parent settings"}
Gaudi::Property< std::string > | m_header
Gaudi::Property< std::string > | m_format1
Gaudi::Property< std::string > | m_format2
Gaudi::Property< bool > | m_useEffFormat
Gaudi::Property< std::vector< std::string > > | m_counterList
Gaudi::Property< std::vector< std::string > > | m_statEntityList

## Detailed Description

### template<class PBASE>
class GaudiCommon< PBASE >

Implements the common functionality between GaudiTools and GaudiAlgorithms.

Author
  Chris Jones Chris.nosp@m.toph.nosp@m.er.Ro.nosp@m.b.Jo.nosp@m.nes@c.nosp@m.ern..nosp@m.ch
  Vanya BELYAEV Ivan..nosp@m.Bely.nosp@m.aev@i.nosp@m.tep..nosp@m.ru
  Rob Lambert Rob.L.nosp@m.ambe.nosp@m.rt@ce.nosp@m.rn.c.nosp@m.h

Date
  2009-08-04

Definition at line 80 of file GaudiCommon.h.

## Member Typedef Documentation

template<class PBASE>

typedef std::vector<IAlgTool*> GaudiCommon< PBASE >::AlgTools
| protected

storage for active tools

Definition at line 115 of file GaudiCommon.h.

template<class PBASE>

using GaudiCommon< PBASE >::base_class = PBASE
| protected

Definition at line 83 of file GaudiCommon.h.

template<class PBASE>

typedef std::map<std::string, unsigned int> GaudiCommon< PBASE >::Counter
| protected

the actual type error/warning counter

Definition at line 113 of file GaudiCommon.h.

template<class PBASE>

typedef std::vector<SmartIF<IService> > GaudiCommon< PBASE >::Services
| protected

storage for active services

Definition at line 117 of file GaudiCommon.h.

template<class PBASE>

typedef std::map<std::string, StatEntity> GaudiCommon< PBASE >::Statistics
| protected

the actual type of general counters

Definition at line 111 of file GaudiCommon.h.

## Constructor & Destructor Documentation

template<class PBASE>
template<typename U = PBASE, class = typename std::enable_if<std::is_base_of<Algorithm,PBASE>::value,U>::type>

GaudiCommon< PBASE >::GaudiCommon | ( | const std::string & | name,
|  | ISvcLocator * | pSvcLocator
| ) |  |
| inline

Algorithm constructor - the SFINAE constraint below ensures that this is constructor is only defined if PBASE derives from Algorithm.

Definition at line 610 of file GaudiCommon.h.

611 : base_class( name, pSvcLocator )
612 {
613 initGaudiCommonConstructor();
614 }
GaudiCommon::base_class
PBASE base_class
Definition: GaudiCommon.h:83
GaudiCommon::initGaudiCommonConstructor
void initGaudiCommonConstructor(const IInterface *parent=nullptr)
Constructor initializations.
Definition: GaudiCommon.icpp:65
template<class PBASE>
template<typename U = PBASE, class = typename std::enable_if<std::is_base_of<AlgTool,PBASE>::value,U>::type>

GaudiCommon< PBASE >::GaudiCommon | ( | const std::string & | type,
|  | const std::string & | name,
|  | const IInterface * | ancestor
| ) |  |
| inline

Tool constructor - SFINAE-ed to insure this constructor is only defined if PBASE derives from AlgTool.

Definition at line 618 of file GaudiCommon.h.

620 : base_class( type, name, ancestor)
621 {
622 initGaudiCommonConstructor(this->parent());
623 }
GaudiCommon::base_class
PBASE base_class
Definition: GaudiCommon.h:83
GaudiCommon::initGaudiCommonConstructor
void initGaudiCommonConstructor(const IInterface *parent=nullptr)
Constructor initializations.
Definition: GaudiCommon.icpp:65
template<class PBASE>

GaudiCommon< PBASE >::~GaudiCommon | ( |  | ) |
| override protected default

Destructor.

template<class PBASE>

GaudiCommon< PBASE >::GaudiCommon | ( |  | ) |
| private delete

template<class PBASE>

GaudiCommon< PBASE >::GaudiCommon | ( | const GaudiCommon< PBASE > & |  | ) |
| private delete

## Member Function Documentation

template<class PBASE >

void GaudiCommon< PBASE >::addToServiceList | ( | SmartIF< IService > | svc | ) | const
| private

Add the given service to the list of acquired services.

Definition at line 361 of file GaudiCommon.icpp.

362 {
363 if ( svc ) {
364 auto i = std::lower_bound( std::begin( m_services ), std::end( m_services ), svc, GaudiCommon_details::svc_lt );
365 if ( i == std::end( m_services ) || !GaudiCommon_details::svc_eq( *i, svc ) ) {
366 m_services.insert( i, std::move( svc ) );
367 } else {
368 this->warning() << "Service " << svc->name() << " already present -- skipping" << endmsg;
369 }
370 }
371 }
GaudiCommon_details::svc_eq
constexpr const struct GaudiCommon_details::svc_eq_t svc_eq
GaudiCommon::m_services
Services m_services
List of active services.
Definition: GaudiCommon.h:726
std::end
T end(T...args)
std::lower_bound
T lower_bound(T...args)
GaudiCommon_details::svc_lt
constexpr const struct GaudiCommon_details::svc_lt_t svc_lt
std::move
T move(T...args)
std::vector::insert
T insert(T...args)
std::begin
T begin(T...args)
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
template<class PBASE >

void GaudiCommon< PBASE >::Assert | ( | const bool | ok,
|  | const std::string & | message = `""`,
|  | const StatusCode | sc = `StatusCode( StatusCode::FAILURE, true )`
| ) |  | const
| inline

Assertion - throw exception if the given condition is not fulfilled.

See also
  GaudiException

Exceptions

  Exception | for invalid condition

Parameters

  ok | Condition which should be "true"
  message | Message to be associated with the exception

Definition at line 224 of file GaudiCommonImp.h.

227 {
228 if (!ok) Exception( msg , sc );
229 }
GaudiMP.FdsRegistry.msg
msg
Definition: FdsRegistry.py:8
GaudiCommon::Exception
void Exception(const std::string &msg, const GaudiException &exc, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
Create and (re)-throw a given GaudiException.
Definition: GaudiCommon.icpp:478
template<class PBASE >

void GaudiCommon< PBASE >::Assert | ( | const bool | ok,
|  | const char * | message,
|  | const StatusCode | sc = `StatusCode( StatusCode::FAILURE, true )`
| ) |  | const
| inline

Assertion - throw exception if the given condition is not fulfilled.

See also
  GaudiException

Exceptions

  Exception | for invalid condition

Parameters

  ok | Condition which should be "true"
  message | Message to be associated with the exception

Definition at line 234 of file GaudiCommonImp.h.

237 {
238 if (!ok) Exception( msg , sc );
239 }
GaudiMP.FdsRegistry.msg
msg
Definition: FdsRegistry.py:8
GaudiCommon::Exception
void Exception(const std::string &msg, const GaudiException &exc, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
Create and (re)-throw a given GaudiException.
Definition: GaudiCommon.icpp:478
template<class PBASE>

const std::string& GaudiCommon< PBASE >::context | ( |  | ) | const
| inline

Returns the "context" string. Used to identify different processing states.

Definition at line 704 of file GaudiCommon.h.

704 { return m_context; }
GaudiCommon::m_context
Gaudi::Property< std::string > m_context
Definition: GaudiCommon.h:748
template<class PBASE>

StatEntity& GaudiCommon< PBASE >::counter | ( | const std::string & | tag | ) | const
| inline

accessor to certain counter by name

if ( OK ) { ++counter("OK") ; }
// additive counter ('Flag')
counter("#Tracks") += tracks->size() ;
// multiplicative counter ('Weight')
counter("ProbTot") *= probability ;

See also
  StatEntuty

Parameters

  tag | counter name

Returns
  the counter itself

Definition at line 484 of file GaudiCommon.h.

484 { return m_counters[tag]; }
GaudiCommon::m_counters
Statistics m_counters
General counters.
Definition: GaudiCommon.h:737
template<class PBASE>

const Statistics& GaudiCommon< PBASE >::counters | ( |  | ) | const
| inline

accessor to all counters

Definition at line 465 of file GaudiCommon.h.

465 { return m_counters; }
GaudiCommon::m_counters
Statistics m_counters
General counters.
Definition: GaudiCommon.h:737
template<class PBASE >

StatusCode GaudiCommon< PBASE >::Error | ( | const std::string & | msg,
|  | const StatusCode | st = `StatusCode::FAILURE`,
|  | const size_t | mx = `10`
| ) |  | const

Print the error message and return with the given StatusCode.

Also performs statistical analysis of the error messages and suppression after the defined number of error instances.

if( a < 0 ) { return Error("a is negative!") ;}
if( b < 0 ) { return Error("b is illegal!" , StatusCode(25) );
if( c < 0 )
{ return Error("c is negative" , StatusCode(35) , 50 );

See also
  MsgStream
  IMessageSvc
  StatusCode

Parameters

  msg | Error message
  st | StatusCode to return
  mx | Maximum number of printouts for this message

Returns
  StatusCode

Definition at line 382 of file GaudiCommon.icpp.

383 {
384 // increase local counter of errors
385 const size_t num = ++m_errors[msg];
386 // If suppressed, just return
387 if ( num > mx ) {
388 return st;
389 } else if ( UNLIKELY( num == mx ) ) // issue one-time suppression message
390 {
391 return Print( "The ERROR message is suppressed : '" + msg + "'", st, MSG::ERROR );
392 }
393 // return message
394 return Print( msg, st, MSG::ERROR );
395 }
UNLIKELY
#define UNLIKELY(x)
Definition: Kernel.h:126
GaudiCommon::m_errors
Counter m_errors
Counter of errors.
Definition: GaudiCommon.h:729
GaudiCommon::Print
StatusCode Print(const std::string &msg, const StatusCode st=StatusCode::SUCCESS, const MSG::Level lev=MSG::INFO) const
Print the message and return with the given StatusCode.
Definition: GaudiCommon.icpp:442
GaudiMP.FdsRegistry.msg
msg
Definition: FdsRegistry.py:8
MSG::ERROR
Definition: IMessageSvc.h:21
template<class PBASE>

bool GaudiCommon< PBASE >::errorsPrint | ( |  | ) | const
| inline

Print error counters at finalization ?

Definition at line 494 of file GaudiCommon.h.

494 { return m_errorsPrint; }
GaudiCommon::m_errorsPrint
Gaudi::Property< bool > m_errorsPrint
Definition: GaudiCommon.h:743
template<class PBASE >

void GaudiCommon< PBASE >::Exception | ( | const std::string & | msg,
|  | const GaudiException & | exc,
|  | const StatusCode | sc = `StatusCode( StatusCode::FAILURE, true )`
| ) |  | const

Create and (re)-throw a given GaudiException.

See also
  GaudiException

Exceptions

  GaudiException | always thrown!

Parameters

  msg | Exception message
  exc | (previous) exception of type GaudiException

Definition at line 478 of file GaudiCommon.icpp.

479 {
480 // increase local counter of exceptions
481 ++m_exceptions[msg];
482 Print( "Exception (re)throw: " + msg, sc, MSG::FATAL ).ignore();
483 throw GaudiException( this->name() + ":: " + msg, this->name(), sc, exc );
484 }
GaudiException
Define general base for Gaudi exception.
Definition: GaudiException.h:23
GaudiCommon::m_exceptions
Counter m_exceptions
Counter of exceptions.
Definition: GaudiCommon.h:735
gaudiComponentHelp.name
name
Definition: gaudiComponentHelp.py:28
MSG::FATAL
Definition: IMessageSvc.h:22
GaudiCommon::Print
StatusCode Print(const std::string &msg, const StatusCode st=StatusCode::SUCCESS, const MSG::Level lev=MSG::INFO) const
Print the message and return with the given StatusCode.
Definition: GaudiCommon.icpp:442
GaudiMP.FdsRegistry.msg
msg
Definition: FdsRegistry.py:8
StatusCode::ignore
void ignore() const
Definition: StatusCode.h:106
template<class PBASE >

void GaudiCommon< PBASE >::Exception | ( | const std::string & | msg,
|  | const std::exception & | exc,
|  | const StatusCode | sc = `StatusCode( StatusCode::FAILURE, true )`
| ) |  | const

Create and (re)-throw a given exception.

See also
  GaudiException

Exceptions

  std::exception | always thrown!

Parameters

  msg | Exception message
  exc | (previous) exception of type std::exception
  sc | StatusCode

Definition at line 491 of file GaudiCommon.icpp.

492 {
493 // increase local counter of exceptions
494 ++m_exceptions[msg];
495 Print( "Exception (re)throw: " + msg, sc, MSG::FATAL ).ignore();
496 throw GaudiException( this->name() + ":: " + msg + "(" + exc.what() + ")", "", sc );
497 }
GaudiException
Define general base for Gaudi exception.
Definition: GaudiException.h:23
GaudiCommon::m_exceptions
Counter m_exceptions
Counter of exceptions.
Definition: GaudiCommon.h:735
gaudiComponentHelp.name
name
Definition: gaudiComponentHelp.py:28
MSG::FATAL
Definition: IMessageSvc.h:22
std::exception::what
T what(T...args)
GaudiCommon::Print
StatusCode Print(const std::string &msg, const StatusCode st=StatusCode::SUCCESS, const MSG::Level lev=MSG::INFO) const
Print the message and return with the given StatusCode.
Definition: GaudiCommon.icpp:442
GaudiMP.FdsRegistry.msg
msg
Definition: FdsRegistry.py:8
StatusCode::ignore
void ignore() const
Definition: StatusCode.h:106
template<class PBASE >

void GaudiCommon< PBASE >::Exception | ( | const std::string & | msg = `"no message"`,
|  | const StatusCode | sc = `StatusCode( StatusCode::FAILURE, true )`
| ) |  | const

Create and throw an exception with the given message.

See also
  GaudiException

Exceptions

  GaudiException | always thrown!

Parameters

  msg | Exception message
  sc | StatusCode

Definition at line 504 of file GaudiCommon.icpp.

505 {
506 // increase local counter of exceptions
507 ++m_exceptions[msg];
508 Print( "Exception throw: " + msg, sc, MSG::FATAL ).ignore();
509 throw GaudiException( this->name() + ":: " + msg, "", sc );
510 }
GaudiException
Define general base for Gaudi exception.
Definition: GaudiException.h:23
GaudiCommon::m_exceptions
Counter m_exceptions
Counter of exceptions.
Definition: GaudiCommon.h:735
gaudiComponentHelp.name
name
Definition: gaudiComponentHelp.py:28
MSG::FATAL
Definition: IMessageSvc.h:22
GaudiCommon::Print
StatusCode Print(const std::string &msg, const StatusCode st=StatusCode::SUCCESS, const MSG::Level lev=MSG::INFO) const
Print the message and return with the given StatusCode.
Definition: GaudiCommon.icpp:442
GaudiMP.FdsRegistry.msg
msg
Definition: FdsRegistry.py:8
StatusCode::ignore
void ignore() const
Definition: StatusCode.h:106
template<class PBASE >
template<class TYPE >

bool GaudiCommon< PBASE >::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 behavior can be suppressed by passing the argument useRootInTES = false

Parameters

  svc | Pointer to data provider service
  location | Address in Gaudi Transient 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

Definition at line 92 of file GaudiCommonImp.h.

95 {
96 // check the environment
97 Assert( service , "exist():: IDataProvider* points to NULL!" ) ;
98 // check the data object
99 Gaudi::Utils::CheckData<TYPE> checker ;
100 return checker ( service,
101 fullTESLocation ( location , useRootInTES ) ) ;
102 }
Gaudi::Utils::CheckData
Helper structure for implementation of "exists"-functions for GaudiCommon<BASE>
Definition: GetData.h:314
GaudiCommon::Assert
void Assert(const bool ok, const std::string &message="", const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
Assertion - throw exception if the given condition is not fulfilled.
Definition: GaudiCommonImp.h:224
GaudiCommon::fullTESLocation
const std::string fullTESLocation(const std::string &location, const bool useRootInTES) const
Returns the full correct event location given the rootInTes settings.
Definition: GaudiCommonImp.h:25
template<class PBASE >

StatusCode GaudiCommon< PBASE >::finalize | ( |  | ) |
| override

standard finalization method

Returns
  status code

Definition at line 207 of file GaudiCommon.icpp.

208 {
209 StatusCode sc = StatusCode::SUCCESS;
210
211 // print the general information about statistical counters
212 if ( this->msgLevel( MSG::DEBUG ) || ( statPrint() && !counters().empty() ) ) {
213 // print general statistical counters
214 printStat( statPrint() ? MSG::ALWAYS : MSG::DEBUG );
215 }
216 // add all counters to the CounterSummarySvc
217 if ( m_counterSummarySvc && this->svcLoc()->existsService( "CounterSummarySvc" ) ) {
218 if ( this->msgLevel( MSG::DEBUG ) ) this->debug() << "adding counters to CounterSummarySvc" << endmsg;
219
220 Gaudi::Utils::RegEx::matchList statList{m_statEntityList.value()};
221 Gaudi::Utils::RegEx::matchList counterList{m_counterList.value()};
222
223 for ( const auto& i : this->counters() ) {
224 if ( statList.Or( i.first ) )
225 m_counterSummarySvc->addCounter( this->name(), i.first, i.second, Gaudi::CounterSummary::SaveStatEntity );
226 else if ( counterList.Or( i.first ) )
227 m_counterSummarySvc->addCounter( this->name(), i.first, i.second );
228 }
229 }
230 // release all located tools and services
231 if ( this->msgLevel( MSG::DEBUG ) ) {
232 this->debug() << "Tools to release :";
233 for ( const auto& i : m_managedTools ) {
234 this->debug() << " " << i->name();
235 }
236 this->debug() << endmsg;
237 }
238 while ( !m_managedTools.empty() ) {
239 sc = releaseTool( m_managedTools.back() ) && sc;
240 }
241
242 // release all located services
243 if ( this->msgLevel( MSG::DEBUG ) ) {
244 this->debug() << "Services to release :";
245 for ( const auto& i : m_services ) this->debug() << " " << i->name();
246 this->debug() << endmsg;
247 }
248 while ( !m_services.empty() ) {
249 sc = releaseSvc( m_services.front() ) && sc;
250 }
251
252 // release the CounterSummarySvc manually
253 m_counterSummarySvc.reset();
254
255 // format printout
256 if ( !m_errors.empty() || !m_warnings.empty() || !m_exceptions.empty() ) {
257 this->always() << "Exceptions/Errors/Warnings/Infos Statistics : " << m_exceptions.size() << "/" << m_errors.size()
258 << "/" << m_warnings.size() << "/" << m_infos.size() << endmsg;
259 if ( errorsPrint() ) {
260 printErrors();
261 }
262 }
263
264 // clear *ALL* counters explicitly
265 m_counters.clear();
266 m_exceptions.clear();
267 m_infos.clear();
268 m_warnings.clear();
269 m_errors.clear();
270 m_counterList.clear();
271 m_statEntityList.clear();
272
273 // finalize base class
274 return sc && PBASE::finalize();
275 }
GaudiCommon::m_warnings
Counter m_warnings
counter of warnings
Definition: GaudiCommon.h:731
StatusCode::SUCCESS
Definition: StatusCode.h:30
std::map::empty
T empty(T...args)
GaudiCommon::m_exceptions
Counter m_exceptions
Counter of exceptions.
Definition: GaudiCommon.h:735
GaudiCommon::releaseSvc
StatusCode releaseSvc(const IInterface *svc) const
manual forced (and &#39;safe&#39;) release of the service
Definition: GaudiCommon.icpp:339
GaudiCommon::m_services
Services m_services
List of active services.
Definition: GaudiCommon.h:726
Gaudi::Utils::RegEx::matchList
Definition: RegEx.h:27
MSG::DEBUG
Definition: IMessageSvc.h:18
GaudiCommon::m_counters
Statistics m_counters
General counters.
Definition: GaudiCommon.h:737
GaudiCommon::counters
const Statistics & counters() const
accessor to all counters
Definition: GaudiCommon.h:465
GaudiCommon::m_counterList
Gaudi::Property< std::vector< std::string > > m_counterList
Definition: GaudiCommon.h:765
GaudiCommon::statPrint
bool statPrint() const
Print statistical counters at finalization ?
Definition: GaudiCommon.h:492
Gaudi::CounterSummary::SaveStatEntity
store only the flag()
Definition: ICounterSummarySvc.h:20
GaudiCommon::m_errors
Counter m_errors
Counter of errors.
Definition: GaudiCommon.h:729
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
ICounterSummarySvc::addCounter
virtual void addCounter(const std::string, const std::string name, const StatEntity &, const Gaudi::CounterSummary::SaveType saveType=Gaudi::CounterSummary::SaveSimpleCounter)=0
declare a counter, StatEntity, to be filled in the Counter summary
GaudiCommon::m_infos
Counter m_infos
counter of infos
Definition: GaudiCommon.h:733
GaudiCommon::errorsPrint
bool errorsPrint() const
Print error counters at finalization ?
Definition: GaudiCommon.h:494
GaudiCommon::m_counterSummarySvc
SmartIF< ICounterSummarySvc > m_counterSummarySvc
a pointer to the CounterSummarySvc
Definition: GaudiCommon.h:122
std::map::clear
T clear(T...args)
std::map::size
T size(T...args)
GaudiCommon::releaseTool
StatusCode releaseTool(const IAlgTool *tool) const
manual forced (and &#39;safe&#39;) release of the tool
Definition: GaudiCommon.icpp:302
GaudiCommon::m_managedTools
AlgTools m_managedTools
List of active tools.
Definition: GaudiCommon.h:724
SmartIF::reset
void reset(TYPE *ptr=nullptr)
Set the internal pointer to the passed one disposing of the old one.
Definition: SmartIF.h:88
GaudiCommon::printStat
long printStat(const MSG::Level level=MSG::ALWAYS) const
perform the actual printout of statistical counters
Definition: GaudiCommon.icpp:517
MSG::ALWAYS
Definition: IMessageSvc.h:23
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
GaudiCommon::m_statEntityList
Gaudi::Property< std::vector< std::string > > m_statEntityList
Definition: GaudiCommon.h:767
GaudiCommon::printErrors
long printErrors(const MSG::Level level=MSG::ALWAYS) const
perform the actual printout of error counters
Definition: GaudiCommon.icpp:546
template<class PBASE >

const std::string GaudiCommon< PBASE >::fullTESLocation | ( | const std::string & | location,
|  | const bool | useRootInTES
| ) |  | const
| inline

Returns the full correct event location given the rootInTes settings.

Definition at line 25 of file GaudiCommonImp.h.

27 {
28 // The logic is:
29 // if no R.I.T., give back location
30 // if R.I.T., this is the mapping:
31 // (note that R.I.T. contains a trailing '/')
32 // location -> result
33 // -------------------------------------------------
34 // "" -> R.I.T.[:-1] ("rit")
35 // "/Event" -> R.I.T.[:-1] ("rit")
36 // "/Event/MyObj" -> R.I.T. + "MyObj" ("rit/MyObj")
37 // "MyObj" -> R.I.T. + "MyObj" ("rit/MyObj")
38 return ( !useRootInTES || rootInTES().empty() ?
39 location
40 :
41 location.empty() || ( location == "/Event" ) ?
42 rootInTES().substr(0,rootInTES().size()-1)
43 :
44 0 == location.find("/Event/") ?
45 rootInTES() + location.substr(7)
46 : location[0] == '/' ?
47 rootInTES() + location.substr(1)
48 : rootInTES() + location );
49 }
std::string::empty
T empty(T...args)
GaudiCommon::rootInTES
const std::string & rootInTES() const
Returns the "rootInTES" string.
Definition: GaudiCommon.h:708
GaudiPython.HistoUtils.location
location
Definition: HistoUtils.py:774
std::string::find
T find(T...args)
std::string::substr
T substr(T...args)
template<class PBASE >
template<class TYPE >

Gaudi::Utils::GetData< TYPE >::return_type GaudiCommon< PBASE >::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

// Will access MCHits from the given location
MCHits* hits = get<MCHits>( evtSvc () , "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 behavior can be suppressed by passing the argument 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

Definition at line 56 of file GaudiCommonImp.h.

59 {
60 // check the environment
61 Assert( service , "get():: IDataProvider* points to NULL!" ) ;
62 // get the helper object:
63 Gaudi::Utils::GetData<TYPE> getter ;
64 return getter ( *this ,
65 service ,
66 fullTESLocation ( location , useRootInTES ) ) ;
67 }
Gaudi::Utils::GetData
Helper structure for implementation of "get"-functions for GaudiCommon<BASE>
Definition: GaudiCommon.h:41
GaudiCommon::Assert
void Assert(const bool ok, const std::string &message="", const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
Assertion - throw exception if the given condition is not fulfilled.
Definition: GaudiCommonImp.h:224
GaudiCommon::fullTESLocation
const std::string fullTESLocation(const std::string &location, const bool useRootInTES) const
Returns the full correct event location given the rootInTes settings.
Definition: GaudiCommonImp.h:25
template<class PBASE >
template<class TYPE >

Gaudi::Utils::GetData< TYPE >::return_type GaudiCommon< PBASE >::getIfExists | ( | IDataProviderSvc * | svc,
|  | const std::string & | location,
|  | const bool | useRootInTES = `true`
| ) |  | const
| inline

Quicker version of the get function which bypasses the check on the retrieved data.

Definition at line 74 of file GaudiCommonImp.h.

77 {
78 // check the environment
79 Assert( service , "get():: IDataProvider* points to NULL!" ) ;
80 // get the helper object:
81 Gaudi::Utils::GetData<TYPE> getter ;
82 return getter ( *this ,
83 service ,
84 fullTESLocation ( location , useRootInTES ),
85 false) ;
86 }
Gaudi::Utils::GetData
Helper structure for implementation of "get"-functions for GaudiCommon<BASE>
Definition: GaudiCommon.h:41
GaudiCommon::Assert
void Assert(const bool ok, const std::string &message="", const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
Assertion - throw exception if the given condition is not fulfilled.
Definition: GaudiCommonImp.h:224
GaudiCommon::fullTESLocation
const std::string fullTESLocation(const std::string &location, const bool useRootInTES) const
Returns the full correct event location given the rootInTes settings.
Definition: GaudiCommonImp.h:25
template<class PBASE >
template<class TYPE , class TYPE2 >

Gaudi::Utils::GetData< TYPE >::return_type GaudiCommon< PBASE >::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 behavior can be suppressed by passing the argument useRootInTES = false

Exceptions

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

Parameters

  svc | Pointer to data provider service
  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 data object

Definition at line 111 of file GaudiCommonImp.h.

114 {
115 // check the environment
116 Assert ( service , "getOrCreate():: svc points to NULL!" ) ;
117 // get the helper object
118 Gaudi::Utils::GetOrCreateData<TYPE,TYPE2> getter ;
119 return getter ( *this ,
120 service ,
121 fullTESLocation( location, useRootInTES ) ,
122 location ) ;
123 }
Gaudi::Utils::GetOrCreateData
Helper structure for implementation of "getOrCreate"-functions for GaudiCommon<BASE> ...
Definition: GetData.h:402
GaudiCommon::Assert
void Assert(const bool ok, const std::string &message="", const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
Assertion - throw exception if the given condition is not fulfilled.
Definition: GaudiCommonImp.h:224
GaudiCommon::fullTESLocation
const std::string fullTESLocation(const std::string &location, const bool useRootInTES) const
Returns the full correct event location given the rootInTes settings.
Definition: GaudiCommonImp.h:25
template<class PBASE >

StatusCode GaudiCommon< PBASE >::Info | ( | const std::string & | msg,
|  | const StatusCode | st = `StatusCode::SUCCESS`,
|  | const size_t | mx = `10`
| ) |  | const

Print the info message and return with the given StatusCode.

Also performs statistical analysis of the info messages and suppression after the defined number of instances.

See also
  MsgStream
  IMessageSvc
  StatusCode
  GaudiCommon::Warning

Parameters

  msg | Info message
  st | StatusCode to return
  mx | Maximum number of printouts for this message

Returns
  The given StatusCode

Definition at line 422 of file GaudiCommon.icpp.

423 {
424 // increase local counter of warnings
425 const size_t num = ++m_infos[msg];
426 // If suppressed, just return
427 if ( num > mx ) {
428 return st;
429 } else if ( UNLIKELY( num == mx ) ) // issue one-time suppression message
430 {
431 return Print( "The INFO message is suppressed : '" + msg + "'", st, MSG::INFO );
432 }
433 // return message
434 return Print( msg, st, MSG::INFO );
435 }
UNLIKELY
#define UNLIKELY(x)
Definition: Kernel.h:126
GaudiCommon::m_infos
Counter m_infos
counter of infos
Definition: GaudiCommon.h:733
GaudiCommon::Print
StatusCode Print(const std::string &msg, const StatusCode st=StatusCode::SUCCESS, const MSG::Level lev=MSG::INFO) const
Print the message and return with the given StatusCode.
Definition: GaudiCommon.icpp:442
GaudiMP.FdsRegistry.msg
msg
Definition: FdsRegistry.py:8
MSG::INFO
Definition: IMessageSvc.h:19
template<class PBASE >

void GaudiCommon< PBASE >::initGaudiCommonConstructor | ( | const IInterface * | parent = `nullptr` | ) |
| private

Constructor initializations.

Definition at line 65 of file GaudiCommon.icpp.

66 {
67 m_errorsPrint.declareUpdateHandler( &GaudiCommon<PBASE>::printErrorHandler, this );
68 m_propsPrint.declareUpdateHandler( &GaudiCommon<PBASE>::printPropsHandler, this );
69 m_statPrint.declareUpdateHandler( &GaudiCommon<PBASE>::printStatHandler, this );
70
71 // setup context from parent if available
72 if ( parent ) {
73 if ( const GaudiAlgorithm* gAlg = dynamic_cast<const GaudiAlgorithm*>( parent ) ) {
74 m_context = gAlg->context();
75 m_rootInTES = gAlg->rootInTES();
76 } else if ( const GaudiTool* gTool = dynamic_cast<const GaudiTool*>( parent ) ) {
77 m_context = gTool->context();
78 m_rootInTES = gTool->rootInTES();
79 }
80 }
81
82 // Get the job option service
83 auto jos = PBASE::template service<IJobOptionsSvc>("JobOptionsSvc");
84 if (!jos) Exception("Cannot get JobOptionsSvc");
85
86 // Get the "Context" option if in the file...
87 const auto myList = jos->getProperties( this->name() );
88 if ( myList ) {
89 // Iterate over the list to set the options
90 for ( const auto& iter : *myList ) {
91 const Gaudi::Property<std::string>* sp = dynamic_cast<const Gaudi::Property<std::string>*>( iter );
92 if ( sp ) {
93 if ( iter->name().compare( "Context" ) == 0 ) {
94 m_context = sp->value();
95 } else if ( iter->name().compare( "RootInTES" ) == 0 ) {
96 m_rootInTES = sp->value();
97 }
98 }
99 }
100 }
101 }
GaudiCommon::m_rootInTES
Gaudi::Property< std::string > m_rootInTES
Definition: GaudiCommon.h:749
gaudiComponentHelp.name
name
Definition: gaudiComponentHelp.py:28
Gaudi::Property
Implementation of property with value of concrete type.
Definition: Property.h:314
GaudiCommon::m_errorsPrint
Gaudi::Property< bool > m_errorsPrint
Definition: GaudiCommon.h:743
boost::spirit
Definition: iter_pos.hpp:13
GaudiAlgorithm
The useful base class for data processing algorithms.
Definition: GaudiAlgorithm.h:94
GaudiCommon::m_statPrint
Gaudi::Property< bool > m_statPrint
Definition: GaudiCommon.h:745
GaudiCommon::m_propsPrint
Gaudi::Property< bool > m_propsPrint
Definition: GaudiCommon.h:744
GaudiCommon::m_context
Gaudi::Property< std::string > m_context
Definition: GaudiCommon.h:748
GaudiTool
The useful base class for tools.
Definition: GaudiTool.h:101
GaudiCommon
Implements the common functionality between GaudiTools and GaudiAlgorithms.
Definition: GaudiCommon.h:80
Gaudi::Property::value
const ValueType & value() const
Backward compatibility (.
Definition: Property.h:475
GaudiCommon::Exception
void Exception(const std::string &msg, const GaudiException &exc, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
Create and (re)-throw a given GaudiException.
Definition: GaudiCommon.icpp:478
template<class PBASE >

StatusCode GaudiCommon< PBASE >::initialize | ( |  | ) |
| override

standard initialization method

Returns
  status code

Definition at line 114 of file GaudiCommon.icpp.

115 {
116
117 // initialize base class
118 const StatusCode sc = PBASE::initialize();
119 if ( sc.isFailure() ) {
120 return Error( "Failed to initialise base class PBASE", sc );
121 }
122
123 // some debug printout
124 if ( this->msgLevel( MSG::DEBUG ) ) {
125 this->debug() << "Initialize base class GaudiCommon<" << System::typeinfoName( typeid( PBASE ) ) << ">" << endmsg;
126 if ( !context().empty() ) this->debug() << "Created with context = '" << context() << "'" << endmsg;
127 }
128
129 // Check rootInTES ends with a /
130 if ( !m_rootInTES.empty() && m_rootInTES[m_rootInTES.size() - 1] != '/' ) m_rootInTES = m_rootInTES + "/";
131
132 // Set up the CounterSummarySvc May need to be changed
133 m_counterSummarySvc = this->svcLoc()->service( "CounterSummarySvc", false );
134 if ( this->msgLevel( MSG::DEBUG ) ) {
135 if ( !m_counterSummarySvc )
136 this->debug() << "could not locate CounterSummarySvc, no counter summary will be made" << endmsg;
137 else
138 this->debug() << "found CounterSummarySvc OK" << endmsg;
139 }
140
141 // properties will be printed if asked for or in "MSG::DEBUG" mode
142 if ( propsPrint() ) {
143 printProps( MSG::ALWAYS );
144 } else if ( this->msgLevel( MSG::DEBUG ) ) {
145 printProps( MSG::DEBUG );
146 }
147
148 // update DataHandles to point to full TES location
149
150 // get root of DataManager
151 SmartIF<IDataManagerSvc> dataMgrSvc( PBASE::evtSvc() );
152 auto rootName = dataMgrSvc->rootName();
153 if ( !rootName.empty() && '/' != rootName.back() ) rootName += "/";
154
155 auto fixLocation = [this, rootName] ( const std::string & location ) -> std::string {
156 auto tokens = boost::tokenizer<boost::char_separator<char>>{location, boost::char_separator<char>{":"}};
157 auto result = std::accumulate( tokens.begin(), tokens.end(), std::string{},
158 [&](std::string s, const std::string& tok) {
159 std::string r = fullTESLocation(tok, UseRootInTES);
160 //check whether we have an absolute path if yes use it - else prepend DataManager Root
161 if (r[0]!='/') r = rootName + r;
162 return s.empty() ? r : s + ':' + r;
163 } );
164 if ( result != location && this->msgLevel( MSG::DEBUG ) )
165 this->debug() << "Changing " << location << " to " << result << endmsg;
166 return result;
167 };
168
169 class DHHFixer : public IDataHandleVisitor
170 {
171 public:
172 DHHFixer( std::function<std::string( const std::string& )> f ): m_f( std::move( f ) ) {}
173 void visit( const IDataHandleHolder* idhh ) override {
174 if (!idhh) return;
175
176 std::string r;
177 for ( auto h : idhh->inputHandles() ) {
178 r = m_f( h->objKey() );
179 if ( r != h->objKey() ) h->updateKey( r );
180 }
181 for ( auto h : idhh->outputHandles() ) {
182 r = m_f( h->objKey() );
183 if ( r != h->objKey() ) h->updateKey( r );
184 }
185 }
186
187 private:
188 std::function<std::string( const std::string& )> m_f;
189 };
190
191 this->m_updateDataHandles = std::make_unique<DHHFixer>( fixLocation );
192
193 return sc;
194 }
SmartIF< IDataManagerSvc >
std::string::empty
T empty(T...args)
GaudiCommon::m_rootInTES
Gaudi::Property< std::string > m_rootInTES
Definition: GaudiCommon.h:749
std::function
System::typeinfoName
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
Definition: System.cpp:299
GaudiCommon::Error
StatusCode Error(const std::string &msg, const StatusCode st=StatusCode::FAILURE, const size_t mx=10) const
Print the error message and return with the given StatusCode.
Definition: GaudiCommon.icpp:382
GaudiPython.HistoUtils.location
location
Definition: HistoUtils.py:774
MSG::DEBUG
Definition: IMessageSvc.h:18
std
STL namespace.
GaudiCommon::context
const std::string & context() const
Returns the "context" string. Used to identify different processing states.
Definition: GaudiCommon.h:704
StatusCode::isFailure
bool isFailure() const
Test for a status code of FAILURE.
Definition: StatusCode.h:84
std::string
STL class.
IDataHandleHolder::inputHandles
virtual std::vector< Gaudi::DataHandle * > inputHandles() const =0
IDataHandleHolder::outputHandles
virtual std::vector< Gaudi::DataHandle * > outputHandles() const =0
IDataHandleHolder
Definition: IDataHandleHolder.h:14
HiveAlgSequencer.h
h
Definition: HiveAlgSequencer.py:24
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
GaudiCommon::propsPrint
bool propsPrint() const
Print properties at initialization ?
Definition: GaudiCommon.h:490
GaudiCommon::UseRootInTES
static const bool UseRootInTES
Simple definition to be used with the new useRootInTES argument get<TYPE> and put methods...
Definition: GaudiCommon.h:106
GaudiCommon::m_counterSummarySvc
SmartIF< ICounterSummarySvc > m_counterSummarySvc
a pointer to the CounterSummarySvc
Definition: GaudiCommon.h:122
std::move
T move(T...args)
IDataHandleVisitor
Definition: IDataHandleHolder.h:38
gaudirun.s
string s
Definition: gaudirun.py:245
GaudiCommon::fullTESLocation
const std::string fullTESLocation(const std::string &location, const bool useRootInTES) const
Returns the full correct event location given the rootInTes settings.
Definition: GaudiCommonImp.h:25
std::accumulate
T accumulate(T...args)
GaudiCommon::printProps
long printProps(const MSG::Level level=MSG::ALWAYS) const
perform the actual printout of properties
Definition: GaudiCommon.icpp:573
MSG::ALWAYS
Definition: IMessageSvc.h:23
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
template<class PBASE>

GaudiCommon& GaudiCommon< PBASE >::operator= | ( | const GaudiCommon< PBASE > & |  | ) |
| private delete

template<class PBASE >

StatusCode GaudiCommon< PBASE >::Print | ( | const std::string & | msg,
|  | const StatusCode | st = `StatusCode::SUCCESS`,
|  | const MSG::Level | lev = `MSG::INFO`
| ) |  | const

Print the message and return with the given StatusCode.

See also
  MsgStream
  IMessageSvc
  StatusCode

Parameters

  msg | Message to print
  st | StatusCode to return
  lev | Printout level for the given message

Returns
  The given StatusCode

Definition at line 442 of file GaudiCommon.icpp.

443 {
444 // perform printout ?
445 if ( !this->msgLevel( lvl ) ) {
446 return st;
447 } // RETURN
448
449 // use the predefined stream
450 MsgStream& str = this->msgStream( lvl );
451 if ( typePrint() ) {
452 str << System::typeinfoName( typeid( *this ) ) << ":: ";
453 }
454
455 // print the message
456 str << msg;
457
458 // test status code
459 if ( st.isSuccess() ) {
460 } else if ( StatusCode::FAILURE != st.getCode() ) {
461 str << " StatusCode=" << st.getCode();
462 } else {
463 str << " StatusCode=FAILURE";
464 }
465
466 // perform print operation
467 str << endmsg;
468
469 // return
470 return st;
471 }
MsgStream
Definition of the MsgStream class used to transmit messages.
Definition: MsgStream.h:24
StatusCode::FAILURE
Definition: StatusCode.h:29
StatusCode::getCode
unsigned long getCode() const
Get the status code by value.
Definition: StatusCode.h:91
System::typeinfoName
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
Definition: System.cpp:299
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:74
GaudiCommon::typePrint
bool typePrint() const
Insert the actual C++ type of the algorithm/tool in the messages ?
Definition: GaudiCommon.h:488
GaudiMP.FdsRegistry.msg
msg
Definition: FdsRegistry.py:8
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
template<class PBASE >

void GaudiCommon< PBASE >::printErrorHandler | ( | Gaudi::Details::PropertyBase & |  | ) |
| private

handler for "ErrorPrint" property

Definition at line 628 of file GaudiCommon.icpp.

629 {
630 // no action if not yet initialized
631 if ( this->FSMState() < Gaudi::StateMachine::INITIALIZED ) {
632 return;
633 }
634 if ( this->errorsPrint() ) {
635 this->printErrors();
636 }
637 }
Gaudi::StateMachine::INITIALIZED
Definition: StateMachine.h:15
GaudiCommon::errorsPrint
bool errorsPrint() const
Print error counters at finalization ?
Definition: GaudiCommon.h:494
GaudiCommon::printErrors
long printErrors(const MSG::Level level=MSG::ALWAYS) const
perform the actual printout of error counters
Definition: GaudiCommon.icpp:546
template<class PBASE >

long GaudiCommon< PBASE >::printErrors | ( | const MSG::Level | level = `MSG::ALWAYS` | ) | const

perform the actual printout of error counters

Parameters

  level | The message level to print at

Returns
  number of error counters

Definition at line 546 of file GaudiCommon.icpp.

547 {
548 // format for printout
549 boost::format ftm( " #%|-10s| = %|.8s| %|23t| Message = '%s'" );
550
551 auto print = [&]( const Counter& c, const std::string& label ) {
552 for ( const auto& i : c ) {
553 this->msgStream( level ) << ( ftm % label % i.second % i.first ) << endmsg;
554 }
555 };
556
557 print( m_exceptions, "EXCEPTIONS" );
558 print( m_errors, "ERRORS" );
559 print( m_warnings, "WARNINGS" );
560 print( m_infos, "INFOS" );
561
562 // return total number of errors+warnings+exceptions
563 return m_exceptions.size() + m_errors.size() + m_warnings.size() + m_infos.size();
564 }
GaudiCommon::m_warnings
Counter m_warnings
counter of warnings
Definition: GaudiCommon.h:731
GaudiCommon::m_exceptions
Counter m_exceptions
Counter of exceptions.
Definition: GaudiCommon.h:735
format
GAUDI_API std::string format(const char *,...)
MsgStream format utility "a la sprintf(...)".
Definition: MsgStream.cpp:119
gaudirun.c
c
Definition: gaudirun.py:391
GaudiCommon::Counter
std::map< std::string, unsigned int > Counter
the actual type error/warning counter
Definition: GaudiCommon.h:113
std::string
STL class.
GaudiCommon::m_errors
Counter m_errors
Counter of errors.
Definition: GaudiCommon.h:729
GaudiCommon::m_infos
Counter m_infos
counter of infos
Definition: GaudiCommon.h:733
std::map::size
T size(T...args)
print
void print(string text)
Definition: mergesort.cpp:33
gaudirun.level
level
Definition: gaudirun.py:261
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
template<class PBASE >

long GaudiCommon< PBASE >::printProps | ( | const MSG::Level | level = `MSG::ALWAYS` | ) | const

perform the actual printout of properties

perform the printout of properties

Parameters

  level | The message level to print at

Returns
  number of properties
  number of error counters

Definition at line 573 of file GaudiCommon.icpp.

574 {
575
576 // print ALL properties
577 MsgStream& msg = this->msgStream( level );
578 const auto& properties = this->getProperties();
579 msg << "List of ALL properties of " << System::typeinfoName( typeid( *this ) ) << "/" << this->name()
580 << " #properties = " << properties.size() << endmsg;
581 for ( const auto& property : reverse( properties ) ) {
582 msg << "Property ['Name': Value] = " << *property << endmsg;
583 }
584 return properties.size();
585 }
MsgStream
Definition of the MsgStream class used to transmit messages.
Definition: MsgStream.h:24
gaudiComponentHelp.name
name
Definition: gaudiComponentHelp.py:28
System::typeinfoName
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
Definition: System.cpp:299
property
Gaudi::Details::PropertyBase * property(const std::string &name) const
reverse
reverse_wrapper< T > reverse(T &&iterable)
Definition: reverse.h:33
gaudiComponentHelp.properties
properties
Definition: gaudiComponentHelp.py:37
GaudiMP.FdsRegistry.msg
msg
Definition: FdsRegistry.py:8
gaudirun.level
level
Definition: gaudirun.py:261
getProperties
const std::vector< Gaudi::Details::PropertyBase * > & getProperties() const override
get all properties
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
template<class PBASE >

void GaudiCommon< PBASE >::printPropsHandler | ( | Gaudi::Details::PropertyBase & |  | ) |
| private

handler for "PropertiesPrint" property

Definition at line 642 of file GaudiCommon.icpp.

643 {
644 // no action if not yet initialized
645 if ( this->FSMState() < Gaudi::StateMachine::INITIALIZED ) {
646 return;
647 }
648 if ( this->propsPrint() ) {
649 this->printProps( MSG::ALWAYS );
650 }
651 }
Gaudi::StateMachine::INITIALIZED
Definition: StateMachine.h:15
GaudiCommon::propsPrint
bool propsPrint() const
Print properties at initialization ?
Definition: GaudiCommon.h:490
GaudiCommon::printProps
long printProps(const MSG::Level level=MSG::ALWAYS) const
perform the actual printout of properties
Definition: GaudiCommon.icpp:573
MSG::ALWAYS
Definition: IMessageSvc.h:23
template<class PBASE >

long GaudiCommon< PBASE >::printStat | ( | const MSG::Level | level = `MSG::ALWAYS` | ) | const

perform the actual printout of statistical counters

Parameters

  level | The message level to print at

Returns
  number of active statistical counters

Definition at line 517 of file GaudiCommon.icpp.

518 {
519 // print statistics
520 if ( counters().empty() ) {
521 return 0;
522 }
523 MsgStream& msg = this->msgStream( level );
524 //
525 msg << "Number of counters : " << counters().size();
526 //
527 if ( !counters().empty() ) {
528 msg << std::endl << m_header.value();
529 }
530 //
531 for ( const auto& entry : counters() ) {
532 msg << std::endl
533 << Gaudi::Utils::formatAsTableRow( entry.first, entry.second, m_useEffFormat, m_format1, m_format2 );
534 }
535 //
536 msg << endmsg;
537 //
538 return counters().size();
539 }
MsgStream
Definition of the MsgStream class used to transmit messages.
Definition: MsgStream.h:24
std::endl
T endl(T...args)
GaudiCommon::counters
const Statistics & counters() const
accessor to all counters
Definition: GaudiCommon.h:465
GaudiCommon::m_format2
Gaudi::Property< std::string > m_format2
Definition: GaudiCommon.h:758
GaudiCommon::m_format1
Gaudi::Property< std::string > m_format1
Definition: GaudiCommon.h:755
Gaudi::Utils::formatAsTableRow
GAUDI_API std::string formatAsTableRow(const StatEntity &counter, const bool flag, const std::string &format1=" |%|7d| |%|11.7g| |%|#11.5g| |%|#10.5g| |%|#10.5g| |%|#10.5g| |", const std::string &format2="*|%|7d| |%|11.5g| |(%|#9.7g| +- %|-#8.6g|)%%| ----- | ----- |")
print the counter in a form of the table row
Definition: StatEntity.cpp:326
GaudiCommon::m_useEffFormat
Gaudi::Property< bool > m_useEffFormat
Definition: GaudiCommon.h:762
GaudiCommon::m_header
Gaudi::Property< std::string > m_header
Definition: GaudiCommon.h:751
std::map::size
T size(T...args)
GaudiMP.FdsRegistry.msg
msg
Definition: FdsRegistry.py:8
gaudirun.level
level
Definition: gaudirun.py:261
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
template<class PBASE >

void GaudiCommon< PBASE >::printStatHandler | ( | Gaudi::Details::PropertyBase & |  | ) |
| private

handler for "StatPrint" property

Definition at line 656 of file GaudiCommon.icpp.

657 {
658 // no action if not yet initialized
659 if ( this->FSMState() < Gaudi::StateMachine::INITIALIZED ) {
660 return;
661 }
662 if ( this->statPrint() ) {
663 this->printStat( MSG::ALWAYS );
664 }
665 }
Gaudi::StateMachine::INITIALIZED
Definition: StateMachine.h:15
GaudiCommon::statPrint
bool statPrint() const
Print statistical counters at finalization ?
Definition: GaudiCommon.h:492
GaudiCommon::printStat
long printStat(const MSG::Level level=MSG::ALWAYS) const
perform the actual printout of statistical counters
Definition: GaudiCommon.icpp:517
MSG::ALWAYS
Definition: IMessageSvc.h:23
template<class PBASE>

bool GaudiCommon< PBASE >::propsPrint | ( |  | ) | const
| inline

Print properties at initialization ?

Definition at line 490 of file GaudiCommon.h.

490 { return m_propsPrint; }
GaudiCommon::m_propsPrint
Gaudi::Property< bool > m_propsPrint
Definition: GaudiCommon.h:744
template<class PBASE >

DataObject * GaudiCommon< PBASE >::put | ( | IDataProviderSvc * | svc,
|  | DataObject * | object,
|  | const std::string & | location,
|  | const bool | useRootInTES = `true`
| ) |  | const

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

See also
  IDataProviderSvc

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 behavior can be suppressed by passing the argument useRootInTES = false

Parameters

  svc | Pointer to data provider service
  object | Data object or container to be registered
  location | Location 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 596 of file GaudiCommon.icpp.

598 {
599 // check arguments
600 Assert( svc, "put():: Invalid 'service'!" );
601 Assert( object, "put():: Invalid 'Object'!" );
602 Assert( !location.empty(), "put():: Invalid 'address' = '' " );
603 // final data location
604 const std::string& fullLocation = fullTESLocation( location, useRootInTES );
605 // register the object!
606 const StatusCode status = '/' == fullLocation[0] ? svc->registerObject( fullLocation, object )
607 : svc->registerObject( "/Event/" + fullLocation, object );
608 // check the result!
609 if ( status.isFailure() ) {
610 Exception( "put():: could not register '" + System::typeinfoName( typeid( *object ) ) + "' at address '" +
611 fullLocation + "'",
612 status );
613 }
614 if ( this->msgLevel( MSG::DEBUG ) ) {
615 Print( "The object of type '" + System::typeinfoName( typeid( *object ) ) + "' is registered in TS at address '" +
616 fullLocation + "'",
617 status, MSG::DEBUG )
618 .ignore();
619 }
620 return object;
621 }
std::string::empty
T empty(T...args)
System::typeinfoName
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
Definition: System.cpp:299
MSG::DEBUG
Definition: IMessageSvc.h:18
StatusCode::isFailure
bool isFailure() const
Test for a status code of FAILURE.
Definition: StatusCode.h:84
std::string
STL class.
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
GaudiCommon::Print
StatusCode Print(const std::string &msg, const StatusCode st=StatusCode::SUCCESS, const MSG::Level lev=MSG::INFO) const
Print the message and return with the given StatusCode.
Definition: GaudiCommon.icpp:442
GaudiCommon::Assert
void Assert(const bool ok, const std::string &message="", const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
Assertion - throw exception if the given condition is not fulfilled.
Definition: GaudiCommonImp.h:224
GaudiCommon::fullTESLocation
const std::string fullTESLocation(const std::string &location, const bool useRootInTES) const
Returns the full correct event location given the rootInTes settings.
Definition: GaudiCommonImp.h:25
StatusCode::ignore
void ignore() const
Definition: StatusCode.h:106
IDataProviderSvc::registerObject
virtual StatusCode registerObject(const std::string &fullPath, DataObject *pObject)=0
Register object with the data store.
GaudiCommon::Exception
void Exception(const std::string &msg, const GaudiException &exc, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
Create and (re)-throw a given GaudiException.
Definition: GaudiCommon.icpp:478
template<class PBASE>
template<class CallerClass >

void GaudiCommon< PBASE >::registerCondition | ( | const std::string & | condition,
|  | StatusCode(CallerClass::*)() | mf = `nullptr`
| ) |  |
| inline

register the current instance to the UpdateManagerSvc as a consumer for a condition.

Parameters

  condition | the path inside the Transient Detector Store to the condition object.
  mf | optional pointer to the member function to call when the condition object is updated. If the pointer is omitted the user must explicitly provide the class name to the method. StatusCode MyAlg::initialize(){ // ... registerCondition("/dd/Conditions/Readout/MyDet/MyCond",&MyAlg::i_CallBack); registerCondition<MyAlg>("/dd/Conditions/Readout/MyDet/MyOtherCond"); // ... return StatusCode.SUCCESS; }

Definition at line 528 of file GaudiCommon.h.

529 {
530 updMgrSvc()->registerCondition( dynamic_cast<CallerClass*>( this ), condition, mf );
531 }
GaudiCommon::updMgrSvc
IUpdateManagerSvc * updMgrSvc() const
Short-cut to locate the Update Manager Service.
Definition: GaudiCommonImp.h:214
IUpdateManagerSvc::registerCondition
void registerCondition(CallerClass *instance, const std::string &condition="", typename ObjectMemberFunction< CallerClass >::MemberFunctionType mf=nullptr)
Register an object (algorithm instance) to the service.
Definition: IUpdateManagerSvc.h:182
template<class PBASE>
template<class CallerClass , class CondType >

void GaudiCommon< PBASE >::registerCondition | ( | const std::string & | condition,
|  | CondType *& | condPtrDest,
|  | StatusCode(CallerClass::*)() | mf = `NULL`
| ) |  |
| inline

register the current instance to the UpdateManagerSvc as a consumer for a condition.

This version of the method allow the user to specify where to put a copy of the pointer to the condition object.

Parameters

  condition | the path inside the Transient Detector Store to the condition object.
  condPtrDest | pointer to fill with the location of the condition object. Note: the pointer can be safely used only in the execute method or in the member function triggered by the update.
  mf | optional pointer to the member function to call when the condition object is updated. If the pointer is omitted the user must explicitly provide the class name to the method. class MyAlg: public GaudiAlgorithm { // ... public: virtual StatusCode i_CallBack(); private: Condition *m_MyCond; SpecialCondition *m_MyOtherCond; // ... }; StatusCode MyAlg::initialize(){ // ... registerCondition("/dd/Conditions/Readout/MyDet/MyCond",m_MyCond,&MyAlg::i_CallBack); registerCondition<MyAlg>("/dd/Conditions/Readout/MyDet/MyOtherCond",m_MyOtherCond); // ... return StatusCode.SUCCESS; }

Definition at line 563 of file GaudiCommon.h.

565 {
566 updMgrSvc()->registerCondition( dynamic_cast<CallerClass*>( this ), condition, mf, condPtrDest );
567 }
GaudiCommon::updMgrSvc
IUpdateManagerSvc * updMgrSvc() const
Short-cut to locate the Update Manager Service.
Definition: GaudiCommonImp.h:214
IUpdateManagerSvc::registerCondition
void registerCondition(CallerClass *instance, const std::string &condition="", typename ObjectMemberFunction< CallerClass >::MemberFunctionType mf=nullptr)
Register an object (algorithm instance) to the service.
Definition: IUpdateManagerSvc.h:182
template<class PBASE>
template<class CallerClass >

void GaudiCommon< PBASE >::registerCondition | ( | char * | condition,
|  | StatusCode(CallerClass::*)() | mf = `NULL`
| ) |  |
| inline

just to avoid conflicts with the version using a pointer to a template class.

Definition at line 570 of file GaudiCommon.h.

571 {
572 updMgrSvc()->registerCondition( dynamic_cast<CallerClass*>( this ), std::string( condition ), mf );
573 }
GaudiCommon::updMgrSvc
IUpdateManagerSvc * updMgrSvc() const
Short-cut to locate the Update Manager Service.
Definition: GaudiCommonImp.h:214
std::string
STL class.
IUpdateManagerSvc::registerCondition
void registerCondition(CallerClass *instance, const std::string &condition="", typename ObjectMemberFunction< CallerClass >::MemberFunctionType mf=nullptr)
Register an object (algorithm instance) to the service.
Definition: IUpdateManagerSvc.h:182
template<class PBASE>
template<class CallerClass , class TargetClass >

void GaudiCommon< PBASE >::registerCondition | ( | TargetClass * | condition,
|  | StatusCode(CallerClass::*)() | mf = `NULL`
| ) |  |
| inline

register the current instance to the UpdateManagerSvc as a consumer for a condition.

Parameters

  condition | the path inside the Transient Detector Store to the condition object.
  mf | optional pointer to the member function to call when the condition object is updated. If the pointer is omitted the user must explicitly provide the class name to the method. StatusCode MyAlg::initialize(){ // ... registerCondition("/dd/Conditions/Readout/MyDet/MyCond",&MyAlg::i_CallBack); registerCondition<MyAlg>("/dd/Conditions/Readout/MyDet/MyOtherCond"); // ... return StatusCode.SUCCESS; }

Definition at line 590 of file GaudiCommon.h.

591 {
592 updMgrSvc()->registerCondition( dynamic_cast<CallerClass*>( this ), condition, mf );
593 }
GaudiCommon::updMgrSvc
IUpdateManagerSvc * updMgrSvc() const
Short-cut to locate the Update Manager Service.
Definition: GaudiCommonImp.h:214
IUpdateManagerSvc::registerCondition
void registerCondition(CallerClass *instance, const std::string &condition="", typename ObjectMemberFunction< CallerClass >::MemberFunctionType mf=nullptr)
Register an object (algorithm instance) to the service.
Definition: IUpdateManagerSvc.h:182
template<class PBASE >

StatusCode GaudiCommon< PBASE >::release | ( | const IInterface * | interface | ) | const

Manual forced (and 'safe') release of the active tool or service.

IMyTool* mytool = tool<IMyTool>( .... ) ;
mytool->spendCPUtime() ;
release ( mytool ) ;
IMySvc* msvc = svc<IMySvc>( .... ) ;
msvc->spendCPUtime() ;
release ( msvc ) ;

Parameters

  interface | Interface pointer to the interface to be released

Returns
  StatusCode

Return values

  StatusCode::SUCCESS | Tool or service was successfully released
  StatusCode::FAILURE | Error releasing too or service

Definition at line 286 of file GaudiCommon.icpp.

287 {
288 if ( !interface ) {
289 return Error( "release(IInterface):: IInterface* points to NULL!" );
290 }
291 // dispatch between tools and services
292 const IAlgTool* algTool = dynamic_cast<const IAlgTool*>( interface );
293 // perform the actual release
294 return algTool ? releaseTool( algTool ) : releaseSvc( interface );
295 }
GaudiCommon::releaseSvc
StatusCode releaseSvc(const IInterface *svc) const
manual forced (and &#39;safe&#39;) release of the service
Definition: GaudiCommon.icpp:339
GaudiCommon::Error
StatusCode Error(const std::string &msg, const StatusCode st=StatusCode::FAILURE, const size_t mx=10) const
Print the error message and return with the given StatusCode.
Definition: GaudiCommon.icpp:382
GaudiCommon::releaseTool
StatusCode releaseTool(const IAlgTool *tool) const
manual forced (and &#39;safe&#39;) release of the tool
Definition: GaudiCommon.icpp:302
IAlgTool
The interface implemented by the AlgTool base class.
Definition: IAlgTool.h:23
template<class PBASE >

StatusCode GaudiCommon< PBASE >::releaseSvc | ( | const IInterface * | svc | ) | const
| protected

manual forced (and 'safe') release of the service

Definition at line 339 of file GaudiCommon.icpp.

340 {
341 if ( !Svc ) return Error( "releaseSvc(IInterface):: IInterface* points to NULL!" );
342 SmartIF<IService> svc{const_cast<IInterface*>( Svc )};
343 if ( !svc ) return Warning( "releaseSvc(IInterface):: IInterface* is not a service" );
344 auto it = std::lower_bound( std::begin( m_services ), std::end( m_services ), svc, GaudiCommon_details::svc_lt );
345 if ( it == m_services.end() || !GaudiCommon_details::svc_eq( *it, svc ) ) {
346 return Warning( "releaseSvc(IInterface):: IInterface* is not active" );
347 }
348 if ( this->msgLevel( MSG::DEBUG ) ) {
349 this->debug() << "Releasing service '" << ( *it )->name() << "'" << endmsg;
350 }
351 m_services.erase( it );
352 return StatusCode::SUCCESS;
353 }
StatusCode::SUCCESS
Definition: StatusCode.h:30
SmartIF< IService >
GaudiCommon_details::svc_eq
constexpr const struct GaudiCommon_details::svc_eq_t svc_eq
GaudiCommon::m_services
Services m_services
List of active services.
Definition: GaudiCommon.h:726
GaudiCommon::Error
StatusCode Error(const std::string &msg, const StatusCode st=StatusCode::FAILURE, const size_t mx=10) const
Print the error message and return with the given StatusCode.
Definition: GaudiCommon.icpp:382
MSG::DEBUG
Definition: IMessageSvc.h:18
std::end
T end(T...args)
std::lower_bound
T lower_bound(T...args)
GaudiCommon_details::svc_lt
constexpr const struct GaudiCommon_details::svc_lt_t svc_lt
IInterface
Definition of the basic interface.
Definition: IInterface.h:234
std::vector::erase
T erase(T...args)
GaudiCommon::Warning
StatusCode Warning(const std::string &msg, const StatusCode st=StatusCode::FAILURE, const size_t mx=10) const
Print the warning message and return with the given StatusCode.
Definition: GaudiCommon.icpp:402
std::begin
T begin(T...args)
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
template<class PBASE >

StatusCode GaudiCommon< PBASE >::releaseTool | ( | const IAlgTool * | tool | ) | const
| protected

manual forced (and 'safe') release of the tool

Definition at line 302 of file GaudiCommon.icpp.

303 {
304 if ( !algTool ) {
305 return Error( "releaseTool(IAlgTool):: IAlgTool* points to NULL!" );
306 }
307 if ( !this->toolSvc() ) {
308 return Error( "releaseTool(IAlgTool):: IToolSvc* points to NULL!" );
309 }
310 // find a tool in the list of active tools
311 auto it = std::find( m_managedTools.begin(), m_managedTools.end(), algTool );
312 if ( m_managedTools.end() == it ) {
313 return Warning( "releaseTool(IAlgTool):: IAlgTool* is not active" );
314 }
315 // get the tool
316 IAlgTool* t = *it;
317 // cache name
318 const std::string name = t->name();
319 if ( this->msgLevel( MSG::DEBUG ) ) {
320 this->debug() << "Releasing tool '" << name << "'" << endmsg;
321 }
322 // remove the tool from the lists
323 PBASE::deregisterTool( t );
324 m_managedTools.erase( it );
325 // release tool
326 if ( this->msgLevel( MSG::DEBUG ) ) {
327 this->debug() << "The tool '" << t->name() << "' of type '" << System::typeinfoName( typeid( *t ) )
328 << "' is released" << endmsg;
329 }
330 const StatusCode sc = this->toolSvc()->releaseTool( t );
331 return sc.isSuccess() ? sc : Warning( "releaseTool(IAlgTool):: error from IToolSvc releasing " + name, sc );
332 }
gaudiComponentHelp.name
name
Definition: gaudiComponentHelp.py:28
System::typeinfoName
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
Definition: System.cpp:299
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:74
GaudiCommon::Error
StatusCode Error(const std::string &msg, const StatusCode st=StatusCode::FAILURE, const size_t mx=10) const
Print the error message and return with the given StatusCode.
Definition: GaudiCommon.icpp:382
MSG::DEBUG
Definition: IMessageSvc.h:18
std::vector::end
T end(T...args)
std::string
STL class.
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
std::vector::erase
T erase(T...args)
GaudiCommon::Warning
StatusCode Warning(const std::string &msg, const StatusCode st=StatusCode::FAILURE, const size_t mx=10) const
Print the warning message and return with the given StatusCode.
Definition: GaudiCommon.icpp:402
std::find
T find(T...args)
std::vector::begin
T begin(T...args)
IAlgTool
The interface implemented by the AlgTool base class.
Definition: IAlgTool.h:23
GaudiCommon::m_managedTools
AlgTools m_managedTools
List of active tools.
Definition: GaudiCommon.h:724
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
INamedInterface::name
virtual const std::string & name() const =0
Retrieve the name of the instance.
template<class PBASE>

const std::string& GaudiCommon< PBASE >::rootInTES | ( |  | ) | const
| inline

Returns the "rootInTES" string.

Used as the directory root in the TES for which all data access refers to (both saving and retrieving).

Definition at line 708 of file GaudiCommon.h.

708 { return m_rootInTES; }
GaudiCommon::m_rootInTES
Gaudi::Property< std::string > m_rootInTES
Definition: GaudiCommon.h:749
template<class PBASE>

StatusCode GaudiCommon< PBASE >::runUpdate | ( |  | ) |
| inline

asks the UpdateManagerSvc to perform an update of the instance (if needed) without waiting the next BeginEvent incident.

It is useful if the instance can be instantiated after a BeginEvent incident, and used before the next one (for example with tools).

StatusCode MyTool::initialize(){
// ...
return runUpdate();
}

Definition at line 605 of file GaudiCommon.h.

605 { return updMgrSvc()->update( this ); }
GaudiCommon::updMgrSvc
IUpdateManagerSvc * updMgrSvc() const
Short-cut to locate the Update Manager Service.
Definition: GaudiCommonImp.h:214
IUpdateManagerSvc::update
StatusCode update(CallerClass *instance)
Update the given instance.
Definition: IUpdateManagerSvc.h:245
template<class PBASE>

const Services& GaudiCommon< PBASE >::services | ( |  | ) | const
| inline

get the list of aquired services

Definition at line 690 of file GaudiCommon.h.

690 { return m_services; } // get all services
GaudiCommon::m_services
Services m_services
List of active services.
Definition: GaudiCommon.h:726
template<class PBASE>

bool GaudiCommon< PBASE >::statPrint | ( |  | ) | const
| inline

Print statistical counters at finalization ?

Definition at line 492 of file GaudiCommon.h.

492 { return m_statPrint; }
GaudiCommon::m_statPrint
Gaudi::Property< bool > m_statPrint
Definition: GaudiCommon.h:745
template<class PBASE >
template<class SERVICE >

SmartIF< SERVICE > GaudiCommon< PBASE >::svc | ( | const std::string & | name,
|  | const bool | create = `true`
| ) |  | const
| inline

A useful method for the easy location of services.

IMyService* mySvc = svc<IMyService>( "MyServiceType" );

Attention
  The services located with this method will be released automatically

See also
  IService
  ISevcLocator
  Service

Exceptions

  GaudiException | for error in Algorithms::service
  GaudiException | for invalid service

Parameters

  name | service type name
  create | Flag for creation of non-existing services

Returns
  A pointer to the service

Definition at line 181 of file GaudiCommonImp.h.

183 {
184 Assert ( this->svcLoc(), "ISvcLocator* points to NULL!" );
185 SmartIF<SERVICE> s;
186 // check if we already have this service
187 auto it = std::lower_bound( std::begin(m_services), std::end(m_services), name, GaudiCommon_details::svc_lt );
188 if ( it != std::end(m_services) && GaudiCommon_details::svc_eq(*it,name) ) {
189 // Try to get the requested interface
190 s = *it;
191 // check the results
192 if ( !s ) {
193 Exception ("svc():: Could not retrieve Svc '" + name + "'", StatusCode::FAILURE);
194 }
195 } else {
196 auto baseSvc = this->svcLoc()->service(name, create);
197 // Try to get the requested interface
198 s = baseSvc;
199 // check the results
200 if ( !baseSvc || !s ) {
201 Exception ("svc():: Could not retrieve Svc '" + name + "'", StatusCode::FAILURE);
202 }
203 // add the tool into list of known tools, to be properly released
204 addToServiceList(baseSvc);
205 }
206 // return *VALID* located service
207 return s;
208 }
SmartIF
Small smart pointer class with automatic reference counting for IInterface.
Definition: IConverter.h:14
StatusCode::FAILURE
Definition: StatusCode.h:29
GaudiCommon::addToServiceList
void addToServiceList(SmartIF< IService > svc) const
Add the given service to the list of acquired services.
Definition: GaudiCommon.icpp:361
GaudiCommon_details::svc_eq
constexpr const struct GaudiCommon_details::svc_eq_t svc_eq
GaudiCommon::m_services
Services m_services
List of active services.
Definition: GaudiCommon.h:726
std::end
T end(T...args)
std::lower_bound
T lower_bound(T...args)
GaudiCommon_details::svc_lt
constexpr const struct GaudiCommon_details::svc_lt_t svc_lt
std::begin
T begin(T...args)
GaudiCommon::Assert
void Assert(const bool ok, const std::string &message="", const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
Assertion - throw exception if the given condition is not fulfilled.
Definition: GaudiCommonImp.h:224
gaudirun.s
string s
Definition: gaudirun.py:245
GaudiCommon::Exception
void Exception(const std::string &msg, const GaudiException &exc, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
Create and (re)-throw a given GaudiException.
Definition: GaudiCommon.icpp:478
template<class PBASE >
template<class TOOL >

TOOL * GaudiCommon< PBASE >::tool | ( | const std::string & | type,
|  | const std::string & | name,
|  | const IInterface * | parent = `0`,
|  | bool | create = `true`
| ) |  | const
| inline

Useful method for the easy location of tools.

IMyTool* myTool =
tool<IMyTool>( "MyToolType", "MyToolName", this );

Attention
  The tools located with this method will be released automatically

See also
  IToolSvc
  IAlgTool

Exceptions

  GaudiException | for invalid Tool Service
  GaudiException | for error from Tool Service
  GaudiException | for invalid tool

Parameters

  type | Tool type
  name | Tool name
  parent | Tool parent
  create | Flag for creation of nonexisting tools

Returns
  A pointer to the tool

Definition at line 129 of file GaudiCommonImp.h.

133 {
134 // for empty names delegate to another method
135 if ( name.empty() ) return tool<TOOL>( type , parent , create ) ;
136 Assert( this->toolSvc(), "tool():: IToolSvc* points to NULL!" ) ;
137 // get the tool from Tool Service
138 TOOL* Tool = nullptr ;
139 const StatusCode sc =
140 this->toolSvc()->retrieveTool ( type , name , Tool , parent , create ) ;
141 if ( sc.isFailure() )
142 { Exception("tool():: Could not retrieve Tool '" + type + "'/'" + name + "'", sc ) ; }
143 if ( !Tool )
144 { Exception("tool():: Could not retrieve Tool '" + type + "'/'" + name + "'" ) ; }
145 // insert tool into list of tools
146 PBASE::registerTool(Tool);
147 m_managedTools.push_back(Tool);
148 // return *VALID* located tool
149 return Tool ;
150 }
std::string::empty
T empty(T...args)
StatusCode::isFailure
bool isFailure() const
Test for a status code of FAILURE.
Definition: StatusCode.h:84
std::vector::push_back
T push_back(T...args)
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
GaudiCommon::Assert
void Assert(const bool ok, const std::string &message="", const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
Assertion - throw exception if the given condition is not fulfilled.
Definition: GaudiCommonImp.h:224
GaudiCommon::m_managedTools
AlgTools m_managedTools
List of active tools.
Definition: GaudiCommon.h:724
GaudiCommon::Exception
void Exception(const std::string &msg, const GaudiException &exc, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
Create and (re)-throw a given GaudiException.
Definition: GaudiCommon.icpp:478
template<class PBASE >
template<class TOOL >

TOOL * GaudiCommon< PBASE >::tool | ( | const std::string & | type,
|  | const IInterface * | parent = `0`,
|  | bool | create = `true`
| ) |  | const
| inline

A useful method for the easy location of tools.

IMyTool* myTool = tool<IMyTool>( "PublicToolType" );

Attention
  The tools located with this method will be released automatically

See also
  IToolSvc
  IAlgTool

Exceptions

  GaudiException | for invalid Tool Service
  GaudiException | for error from Tool Service
  GaudiException | for invalid tool

Parameters

  type | Tool type, could be of "Type/Name" format
  parent | Tool parent
  create | Flag for creation of non-existing tools

Returns
  A pointer to the tool

Definition at line 156 of file GaudiCommonImp.h.

159 {
160 // check the environment
161 Assert ( PBASE::toolSvc(), "IToolSvc* points to NULL!" );
162 // retrieve the tool from Tool Service
163 TOOL* Tool = nullptr ;
164 const StatusCode sc =
165 this->toolSvc() -> retrieveTool ( type, Tool, parent , create );
166 if ( sc.isFailure() )
167 { Exception("tool():: Could not retrieve Tool '" + type + "'", sc ) ; }
168 if ( !Tool )
169 { Exception("tool():: Could not retrieve Tool '" + type + "'" ) ; }
170 // add the tool into the list of known tools to be properly released
171 PBASE::registerTool(Tool);
172 m_managedTools.push_back(Tool);
173 // return *VALID* located tool
174 return Tool ;
175 }
StatusCode::isFailure
bool isFailure() const
Test for a status code of FAILURE.
Definition: StatusCode.h:84
std::vector::push_back
T push_back(T...args)
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
GaudiCommon::Assert
void Assert(const bool ok, const std::string &message="", const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
Assertion - throw exception if the given condition is not fulfilled.
Definition: GaudiCommonImp.h:224
GaudiCommon::m_managedTools
AlgTools m_managedTools
List of active tools.
Definition: GaudiCommon.h:724
GaudiCommon::Exception
void Exception(const std::string &msg, const GaudiException &exc, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
Create and (re)-throw a given GaudiException.
Definition: GaudiCommon.icpp:478
template<class PBASE>

bool GaudiCommon< PBASE >::typePrint | ( |  | ) | const
| inline

Insert the actual C++ type of the algorithm/tool in the messages ?

Definition at line 488 of file GaudiCommon.h.

488 { return m_typePrint; }
GaudiCommon::m_typePrint
Gaudi::Property< bool > m_typePrint
Definition: GaudiCommon.h:746
template<class PBASE >

IUpdateManagerSvc * GaudiCommon< PBASE >::updMgrSvc | ( |  | ) | const
| inline

Short-cut to locate the Update Manager Service.

Definition at line 214 of file GaudiCommonImp.h.

215 {
216 if ( !m_updMgrSvc )
217 { m_updMgrSvc = svc<IUpdateManagerSvc>("UpdateManagerSvc",true); }
218 return m_updMgrSvc ;
219 }
GaudiCommon::m_updMgrSvc
IUpdateManagerSvc * m_updMgrSvc
Pointer to the Update Manager Service instance.
Definition: GaudiCommon.h:740
template<class PBASE >

StatusCode GaudiCommon< PBASE >::Warning | ( | const std::string & | msg,
|  | const StatusCode | st = `StatusCode::FAILURE`,
|  | const size_t | mx = `10`
| ) |  | const

Print the warning message and return with the given StatusCode.

Also performs statistical analysis of the warning messages and suppression after the defined number of error instances.

if( a < 0 ) { return Warning("a is negative!") ;}
if( b < 0 ) { return Warning("b is illegal!" , StatusCode(25) );
if( c < 0 )
{ return Warning("c is negative" , StatusCode(35) , 50 );

See also
  MsgStream
  IMessageSvc
  StatusCode

Parameters

  msg | Warning message
  st | StatusCode to return
  mx | Maximum number of printouts for this message

Returns
  The given StatusCode

Definition at line 402 of file GaudiCommon.icpp.

403 {
404 // increase local counter of warnings
405 const size_t num = ++m_warnings[msg];
406 // If suppressed, just return
407 if ( num > mx ) {
408 return st;
409 } else if ( UNLIKELY( num == mx ) ) // issue one-time suppression message
410 {
411 return Print( "The WARNING message is suppressed : '" + msg + "'", st, MSG::WARNING );
412 }
413 // return message
414 return Print( msg, st, MSG::WARNING );
415 }
GaudiCommon::m_warnings
Counter m_warnings
counter of warnings
Definition: GaudiCommon.h:731
UNLIKELY
#define UNLIKELY(x)
Definition: Kernel.h:126
GaudiCommon::Print
StatusCode Print(const std::string &msg, const StatusCode st=StatusCode::SUCCESS, const MSG::Level lev=MSG::INFO) const
Print the message and return with the given StatusCode.
Definition: GaudiCommon.icpp:442
GaudiMP.FdsRegistry.msg
msg
Definition: FdsRegistry.py:8
MSG::WARNING
Definition: IMessageSvc.h:20

## Member Data Documentation

template<class PBASE>

const bool GaudiCommon< PBASE >::IgnoreRootInTES = false
| static protected

Simple definition to be used with the new useRootInTES argument get<TYPE> and put methods.

If used with cause the RootInTES option to be IGNORED.

Useful to aid with code readability. e.g.

// Get data, ignoring the setting of rootInTES()
MyData * data = get<MyData>( "/Event/MyData", IgnoreRootInTES );

Definition at line 94 of file GaudiCommon.h.

template<class PBASE>

Gaudi::Property<std::string> GaudiCommon< PBASE >::m_context {this, "Context", {}, "note: overridden by parent settings"}
| private

Definition at line 748 of file GaudiCommon.h.

template<class PBASE>

Gaudi::Property<std::vector<std::string> > GaudiCommon< PBASE >::m_counterList
| private

Initial value:
{
this, "CounterList", {".*"}, "RegEx list, of simple integer counters for CounterSummary"}

Definition at line 765 of file GaudiCommon.h.

template<class PBASE>

Statistics GaudiCommon< PBASE >::m_counters
| mutable private

General counters.

Definition at line 737 of file GaudiCommon.h.

template<class PBASE>

SmartIF<ICounterSummarySvc> GaudiCommon< PBASE >::m_counterSummarySvc
| protected

a pointer to the CounterSummarySvc

Definition at line 122 of file GaudiCommon.h.

template<class PBASE>

Counter GaudiCommon< PBASE >::m_errors
| mutable private

Counter of errors.

Definition at line 729 of file GaudiCommon.h.

template<class PBASE>

Gaudi::Property<bool> GaudiCommon< PBASE >::m_errorsPrint {this, "ErrorsPrint", true, "print the statistics of errors/warnings/exceptions"}
| private

Definition at line 743 of file GaudiCommon.h.

template<class PBASE>

Counter GaudiCommon< PBASE >::m_exceptions
| mutable private

Counter of exceptions.

Definition at line 735 of file GaudiCommon.h.

template<class PBASE>

Gaudi::Property<std::string> GaudiCommon< PBASE >::m_format1
| private

Initial value:
{
this, "RegularRowFormat", " | %|-48.48s|%|50t||%|10d| |%|11.7g| |%|#11.5g| |%|#11.5g| |%|#12.5g| |%|#12.5g| |",
"the format for regular row in the output Stat-table"}

Definition at line 755 of file GaudiCommon.h.

template<class PBASE>

Gaudi::Property<std::string> GaudiCommon< PBASE >::m_format2
| private

Initial value:
{
this, "EfficiencyRowFormat",
" |*%|-48.48s|%|50t||%|10d| |%|11.5g| |(%|#9.6g| +- %|-#9.6g|)%%| ------- | ------- |",
"The format for \"efficiency\" row in the output Stat-table"}

Definition at line 758 of file GaudiCommon.h.

template<class PBASE>

Gaudi::Property<std::string> GaudiCommon< PBASE >::m_header
| private

Initial value:
{this, "StatTableHeader",
" | Counter | # | "
" sum | mean/eff^* | rms/err^* | min | max |",
"the header row for the output Stat-table"}

Definition at line 751 of file GaudiCommon.h.

template<class PBASE>

Counter GaudiCommon< PBASE >::m_infos
| mutable private

counter of infos

Definition at line 733 of file GaudiCommon.h.

template<class PBASE>

AlgTools GaudiCommon< PBASE >::m_managedTools
| mutable private

List of active tools.

Definition at line 724 of file GaudiCommon.h.

template<class PBASE>

Gaudi::Property<bool> GaudiCommon< PBASE >::m_propsPrint {this, "PropertiesPrint", false, "print the properties of the component"}
| private

Definition at line 744 of file GaudiCommon.h.

template<class PBASE>

Gaudi::Property<std::string> GaudiCommon< PBASE >::m_rootInTES {this, "RootInTES", {}, "note: overridden by parent settings"}
| private

Definition at line 749 of file GaudiCommon.h.

template<class PBASE>

Services GaudiCommon< PBASE >::m_services
| mutable private

List of active services.

Definition at line 726 of file GaudiCommon.h.

template<class PBASE>

Gaudi::Property<std::vector<std::string> > GaudiCommon< PBASE >::m_statEntityList
| private

Initial value:
{
this, "StatEntityList", {}, "RegEx list, of StatEntity counters for CounterSummary"}

Definition at line 767 of file GaudiCommon.h.

template<class PBASE>

Gaudi::Property<bool> GaudiCommon< PBASE >::m_statPrint {this, "StatPrint", true, "print the table of counters"}
| private

Definition at line 745 of file GaudiCommon.h.

template<class PBASE>

Gaudi::Property<bool> GaudiCommon< PBASE >::m_typePrint {this, "TypePrint", true, "add the actual C++ component type into the messages"}
| private

Definition at line 746 of file GaudiCommon.h.

template<class PBASE>

IUpdateManagerSvc* GaudiCommon< PBASE >::m_updMgrSvc = nullptr
| mutable private

Pointer to the Update Manager Service instance.

Definition at line 740 of file GaudiCommon.h.

template<class PBASE>

Gaudi::Property<bool> GaudiCommon< PBASE >::m_useEffFormat
| private

Initial value:
{this, "UseEfficiencyRowFormat", true,
"use the special format for printout of efficiency counters"}

Definition at line 762 of file GaudiCommon.h.

template<class PBASE>

Counter GaudiCommon< PBASE >::m_warnings
| mutable private

counter of warnings

Definition at line 731 of file GaudiCommon.h.

template<class PBASE>

const bool GaudiCommon< PBASE >::UseRootInTES = true
| static protected

Simple definition to be used with the new useRootInTES argument get<TYPE> and put methods.

If used with cause the RootInTES option to be USED

Useful to aid with code readability. e.g.

// Get data, using the setting of rootInTES()
MyData * data = get<MyData>( "/Event/MyData", UseRootInTES );
// note the default setting is true, so this is equivalent to
MyData * data = get<MyData>( "/Event/MyData" );

Definition at line 106 of file GaudiCommon.h.

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

- GaudiAlg/GaudiAlg/GaudiCommon.h
- GaudiAlg/GaudiAlg/GaudiCommonImp.h
- GaudiAlg/src/lib/GaudiCommon.icpp