The Gaudi Framework  v33r0 (d5ea422b)
GaudiCommon< PBASE > Class Template Reference

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

#include <GaudiAlg/GaudiCommon.h>

Inheritance diagram for GaudiCommon< PBASE >:
Collaboration diagram for GaudiCommon< PBASE >:

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...
 
DataObjectput (IDataProviderSvc *svc, std::unique_ptr< DataObject > object, const std::string &location, const bool useRootInTES=true) const
 Register a data object or container into Gaudi Event Transient Store. More...
 
DataObjectput (IDataProviderSvc *svc, DataObject *object, const std::string &location, const bool useRootInTES=true) const
 
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...
 
IUpdateManagerSvcupdMgrSvc () const
 Short-cut to locate the Update Manager Service. More...
 
WARN_UNUSED 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...
 
WARN_UNUSED 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...
 
WARN_UNUSED 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...
 
WARN_UNUSED 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...
 
StatEntitycounter (const std::string &tag) const
 accessor to certain counter by name More...
 
StatEntitycounter (const std::string &tag)
 
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, typename = std::enable_if_t<std::is_base_of_v<Gaudi::Algorithm, PBASE>, U>>
 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, typename = std::enable_if_t<std::is_base_of_v<AlgTool, PBASE>, U>>
 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 Servicesservices () const
 get the list of aquired services More...
 
const std::stringcontext () const
 Returns the "context" string. Used to identify different processing states. More...
 
- Public Member Functions inherited from FixTESPath< PBASE >
 FixTESPath (const std::string &name, ISvcLocator *pSvcLocator)
 Algorithm constructor - the SFINAE constraint below ensures that this is constructor is only defined if BASE derives from Algorithm. More...
 
 FixTESPath (const std::string &type, const std::string &name, const IInterface *ancestor)
 Tool constructor - SFINAE-ed to insure this constructor is only defined if BASE derives from AlgTool. More...
 
StatusCode initialize () override
 
const std::stringrootInTES () const
 Returns the "rootInTES" string. More...
 
std::string fullTESLocation (std::string_view location, bool useRootInTES) const
 Returns the full correct event location given the rootInTes settings. More...
 

Protected Types

using base_class = FixTESPath< PBASE >
 
typedef std::map< std::string, StatEntityStatisticsOwn
 the actual type of general counters More...
 
typedef std::map< std::string, std::reference_wrapper< Gaudi::Accumulators::PrintableCounter > > Statistics
 
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

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< ICounterSummarySvcm_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

StatisticsOwn countersOwn () const
 accessor to all owned counters More...
 
 GaudiCommon ()=delete
 
 GaudiCommon (const GaudiCommon &)=delete
 
GaudiCommonoperator= (const GaudiCommon &)=delete
 
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...
 
StatisticsOwn m_countersOwn
 General counters. More...
 
std::mutex m_countersOwnMutex
 The mutex for m_countersOwn. More...
 
IUpdateManagerSvcm_updMgrSvc = nullptr
 Pointer to the Update Manager Service instance. More...
 
Gaudi::Property< bool > m_errorsPrint
 
Gaudi::Property< bool > m_propsPrint
 
Gaudi::Property< bool > m_statPrint
 
Gaudi::Property< bool > m_printEmptyCounters
 
Gaudi::Property< bool > m_typePrint {this, "TypePrint", true, "add the actual C++ component type into the messages"}
 
Gaudi::Property< std::stringm_context {this, "Context", {}, "note: overridden by parent settings"}
 
Gaudi::Property< std::stringm_header
 
Gaudi::Property< std::stringm_format1
 
Gaudi::Property< std::stringm_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 101 of file GaudiCommon.h.

Member Typedef Documentation

◆ AlgTools

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

storage for active tools

Definition at line 136 of file GaudiCommon.h.

◆ base_class

template<class PBASE>
using GaudiCommon< PBASE >::base_class = FixTESPath<PBASE>
protected

Definition at line 103 of file GaudiCommon.h.

◆ Counter

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

the actual type error/warning counter

Definition at line 134 of file GaudiCommon.h.

◆ Services

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

storage for active services

Definition at line 138 of file GaudiCommon.h.

◆ Statistics

template<class PBASE>
typedef std::map<std::string, std::reference_wrapper<Gaudi::Accumulators::PrintableCounter> > GaudiCommon< PBASE >::Statistics
protected

Definition at line 132 of file GaudiCommon.h.

◆ StatisticsOwn

template<class PBASE>
typedef std::map<std::string, StatEntity> GaudiCommon< PBASE >::StatisticsOwn
protected

the actual type of general counters

Definition at line 131 of file GaudiCommon.h.

Constructor & Destructor Documentation

◆ GaudiCommon() [1/4]

template<class PBASE>
template<typename U = PBASE, typename = std::enable_if_t<std::is_base_of_v<Gaudi::Algorithm, PBASE>, U>>
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 652 of file GaudiCommon.h.

652  : base_class( name, pSvcLocator ) {
654  }
FixTESPath< PBASE > base_class
Definition: GaudiCommon.h:103
void initGaudiCommonConstructor(const IInterface *parent=nullptr)
Constructor initializations.

◆ GaudiCommon() [2/4]

template<class PBASE>
template<typename U = PBASE, typename = std::enable_if_t<std::is_base_of_v<AlgTool, PBASE>, U>>
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 658 of file GaudiCommon.h.

659  : base_class( type, name, ancestor ) {
660  initGaudiCommonConstructor( this->parent() );
661  }
FixTESPath< PBASE > base_class
Definition: GaudiCommon.h:103
void initGaudiCommonConstructor(const IInterface *parent=nullptr)
Constructor initializations.

◆ GaudiCommon() [3/4]

template<class PBASE>
GaudiCommon< PBASE >::GaudiCommon ( )
privatedelete

◆ GaudiCommon() [4/4]

template<class PBASE>
GaudiCommon< PBASE >::GaudiCommon ( const GaudiCommon< PBASE > &  )
privatedelete

Member Function Documentation

◆ addToServiceList()

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 276 of file GaudiCommon.icpp.

276  {
277  if ( svc ) {
279  if ( i == std::end( m_services ) || !GaudiCommon_details::svc_eq( *i, svc ) ) {
280  m_services.insert( i, std::move( svc ) );
281  } else {
282  this->warning() << "Service " << svc->name() << " already present -- skipping" << endmsg;
283  }
284  }
285 }
constexpr const struct GaudiCommon_details::svc_eq_t svc_eq
Services m_services
List of active services.
Definition: GaudiCommon.h:730
T end(T... args)
T lower_bound(T... args)
constexpr const struct GaudiCommon_details::svc_lt_t svc_lt
SmartIF< SERVICE > svc(const std::string &name, const bool create=true) const
A useful method for the easy location of services.
T move(T... args)
T insert(T... args)
T begin(T... args)
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:202

◆ Assert() [1/2]

template<class PBASE >
void GaudiCommon< PBASE >::Assert ( const bool  ok,
const std::string message = "",
const StatusCode  sc = StatusCodeStatusCode::FAILURE, true ) 
) const
inline

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

See also
GaudiException
Exceptions
Exceptionfor invalid condition
Parameters
okCondition which should be "true"
messageMessage to be associated with the exception

Definition at line 165 of file GaudiCommonImp.h.

165  {
166  if ( !ok ) Exception( msg, sc );
167 }
void Exception(const std::string &msg, const GaudiException &exc, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
Create and (re)-throw a given GaudiException.

◆ Assert() [2/2]

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

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

See also
GaudiException
Exceptions
Exceptionfor invalid condition
Parameters
okCondition which should be "true"
messageMessage to be associated with the exception

Definition at line 172 of file GaudiCommonImp.h.

172  {
173  if ( !ok ) Exception( msg, sc );
174 }
void Exception(const std::string &msg, const GaudiException &exc, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
Create and (re)-throw a given GaudiException.

◆ context()

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

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

Definition at line 717 of file GaudiCommon.h.

717 { return m_context; }
Gaudi::Property< std::string > m_context
Definition: GaudiCommon.h:779

◆ counter() [1/2]

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
tagcounter name
Returns
the counter itself

Definition at line 516 of file GaudiCommon.h.

516  {
517  return const_cast<GaudiCommon<PBASE>*>( this )->counter( tag );
518  }
StatEntity & counter(const std::string &tag) const
accessor to certain counter by name
Definition: GaudiCommon.h:516
Implements the common functionality between GaudiTools and GaudiAlgorithms.
Definition: GaudiCommon.h:101

◆ counter() [2/2]

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

Definition at line 519 of file GaudiCommon.h.

519  {
521  // Return referenced StatEntity if it already exists, else create it
522  auto p = this->findCounter( tag );
523  if ( !p ) {
524  auto& counter = m_countersOwn[tag];
525  this->declareCounter( tag, counter );
526  return counter;
527  }
528  return m_countersOwn[tag];
529  }
StatisticsOwn m_countersOwn
General counters.
Definition: GaudiCommon.h:741
T lock(T... args)
std::mutex m_countersOwnMutex
The mutex for m_countersOwn.
Definition: GaudiCommon.h:743
StatEntity & counter(const std::string &tag) const
accessor to certain counter by name
Definition: GaudiCommon.h:516

◆ countersOwn()

template<class PBASE>
StatisticsOwn GaudiCommon< PBASE >::countersOwn ( ) const
inlineprivate

accessor to all owned counters

Definition at line 494 of file GaudiCommon.h.

494 { return m_countersOwn; }
StatisticsOwn m_countersOwn
General counters.
Definition: GaudiCommon.h:741

◆ Error()

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
msgError message
stStatusCode to return
mxMaximum number of printouts for this message
Returns
StatusCode

Definition at line 296 of file GaudiCommon.icpp.

296  {
297  // increase local counter of errors
298  const size_t num = ++m_errors[msg];
299  // If suppressed, just return
300  if ( num > mx ) {
301  return st;
302  } else if ( UNLIKELY( num == mx ) ) // issue one-time suppression message
303  {
304  return Print( "The ERROR message is suppressed : '" + msg + "'", st, MSG::ERROR );
305  }
306  // return message
307  return Print( msg, st, MSG::ERROR );
308 }
#define UNLIKELY(x)
Definition: Kernel.h:106
Counter m_errors
Counter of errors.
Definition: GaudiCommon.h:733
WARN_UNUSED 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.

◆ errorsPrint()

template<class PBASE>
bool GaudiCommon< PBASE >::errorsPrint ( ) const
inline

Print error counters at finalization ?

Definition at line 539 of file GaudiCommon.h.

539 { return m_errorsPrint; }
Gaudi::Property< bool > m_errorsPrint
Definition: GaudiCommon.h:749

◆ Exception() [1/3]

template<class PBASE >
void GaudiCommon< PBASE >::Exception ( const std::string msg,
const GaudiException exc,
const StatusCode  sc = StatusCodeStatusCode::FAILURE, true ) 
) const

Create and (re)-throw a given GaudiException.

See also
GaudiException
Exceptions
GaudiExceptionalways thrown!
Parameters
msgException message
exc(previous) exception of type GaudiException

Definition at line 384 of file GaudiCommon.icpp.

384  {
385  // increase local counter of exceptions
386  ++m_exceptions[msg];
387  Print( "Exception (re)throw: " + msg, sc, MSG::FATAL ).ignore();
388  throw GaudiException( this->name() + ":: " + msg, this->name(), sc, exc );
389 }
Define general base for Gaudi exception.
Counter m_exceptions
Counter of exceptions.
Definition: GaudiCommon.h:739
const StatusCode & ignore() const
Ignore/check StatusCode.
Definition: StatusCode.h:164
WARN_UNUSED 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.

◆ Exception() [2/3]

template<class PBASE >
void GaudiCommon< PBASE >::Exception ( const std::string msg,
const std::exception exc,
const StatusCode  sc = StatusCodeStatusCode::FAILURE, true ) 
) const

Create and (re)-throw a given exception.

See also
GaudiException
Exceptions
std::exceptionalways thrown!
Parameters
msgException message
exc(previous) exception of type std::exception
scStatusCode

Definition at line 396 of file GaudiCommon.icpp.

396  {
397  // increase local counter of exceptions
398  ++m_exceptions[msg];
399  Print( "Exception (re)throw: " + msg, sc, MSG::FATAL ).ignore();
400  throw GaudiException( this->name() + ":: " + msg + "(" + exc.what() + ")", "", sc );
401 }
Define general base for Gaudi exception.
Counter m_exceptions
Counter of exceptions.
Definition: GaudiCommon.h:739
T what(T... args)
const StatusCode & ignore() const
Ignore/check StatusCode.
Definition: StatusCode.h:164
WARN_UNUSED 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.

◆ Exception() [3/3]

template<class PBASE >
void GaudiCommon< PBASE >::Exception ( const std::string msg = "no message",
const StatusCode  sc = StatusCodeStatusCode::FAILURE, true ) 
) const

Create and throw an exception with the given message.

See also
GaudiException
Exceptions
GaudiExceptionalways thrown!
Parameters
msgException message
scStatusCode

Definition at line 408 of file GaudiCommon.icpp.

408  {
409  // increase local counter of exceptions
410  ++m_exceptions[msg];
411  Print( "Exception throw: " + msg, sc, MSG::FATAL ).ignore();
412  throw GaudiException( this->name() + ":: " + msg, "", sc );
413 }
Define general base for Gaudi exception.
Counter m_exceptions
Counter of exceptions.
Definition: GaudiCommon.h:739
const StatusCode & ignore() const
Ignore/check StatusCode.
Definition: StatusCode.h:164
WARN_UNUSED 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.

◆ exist()

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
svcPointer to data provider service
locationAddress in Gaudi Transient Store
useRootInTESFlag to turn on(TRUE) off(FALSE) the use of the RootInTES location property
Returns
Boolean indicating status of the request
Return values
trueData object or container exists and implements a proper interface
trueFailed to locate the data object or container

Definition at line 62 of file GaudiCommonImp.h.

63  {
64  // check the environment
65  Assert( service, "exist():: IDataProvider* points to NULL!" );
66  // check the data object
68  return checker( service, this->fullTESLocation( location, useRootInTES ) );
69 }
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.
Helper structure for implementation of "exists"-functions for GaudiCommon<BASE>
Definition: GetData.h:324
std::string fullTESLocation(std::string_view location, bool useRootInTES) const
Returns the full correct event location given the rootInTes settings.
Definition: FixTESPath.h:65

◆ finalize()

template<class PBASE >
StatusCode GaudiCommon< PBASE >::finalize ( )
override

standard finalization method

Returns
status code

Definition at line 141 of file GaudiCommon.icpp.

141  {
143 
144  // print the general information about statistical counters
145  if ( this->msgLevel( MSG::DEBUG ) || ( statPrint() && this->nCounters() > 0 ) ) {
146  // print general statistical counters
148  }
149  // add all counters to the CounterSummarySvc
150  if ( m_counterSummarySvc && this->svcLoc()->existsService( "CounterSummarySvc" ) ) {
151  if ( this->msgLevel( MSG::DEBUG ) ) this->debug() << "adding counters to CounterSummarySvc" << endmsg;
152 
154  Gaudi::Utils::RegEx::matchList counterList{m_counterList.value()};
155 
156  for ( const auto& i : m_countersOwn ) {
157  if ( statList.Or( i.first ) )
158  m_counterSummarySvc->addCounter( this->name(), i.first, i.second, Gaudi::CounterSummary::SaveStatEntity );
159  else if ( counterList.Or( i.first ) )
160  m_counterSummarySvc->addCounter( this->name(), i.first, i.second );
161  }
162  }
163  // release all located tools and services
164  if ( this->msgLevel( MSG::DEBUG ) ) {
165  this->debug() << "Tools to release :";
166  for ( const auto& i : m_managedTools ) { this->debug() << " " << i->name(); }
167  this->debug() << endmsg;
168  }
169  while ( !m_managedTools.empty() ) {
171  }
172 
173  // release all located services
174  if ( this->msgLevel( MSG::DEBUG ) ) {
175  this->debug() << "Services to release :";
176  for ( const auto& i : m_services ) this->debug() << " " << i->name();
177  this->debug() << endmsg;
178  }
179  while ( !m_services.empty() ) {
181  }
182 
183  // release the CounterSummarySvc manually
185 
186  // format printout
187  if ( !m_errors.empty() || !m_warnings.empty() || !m_exceptions.empty() ) {
188  this->always() << "Exceptions/Errors/Warnings/Infos Statistics : " << m_exceptions.size() << "/" << m_errors.size()
189  << "/" << m_warnings.size() << "/" << m_infos.size() << endmsg;
190  if ( errorsPrint() ) { printErrors(); }
191  }
192 
193  // clear *ALL* counters explicitly
194  this->clearCounters();
195  m_countersOwn.clear(); // then delete any owned counters
197  m_infos.clear();
198  m_warnings.clear();
199  m_errors.clear();
200  m_counterList.clear();
201  m_statEntityList.clear();
202 
203  // finalize base class
204  return ( sc && base_class::finalize() ? StatusCode::SUCCESS : StatusCode::FAILURE );
205 }
Counter m_warnings
counter of warnings
Definition: GaudiCommon.h:735
T empty(T... args)
bool statPrint() const
Print statistical counters at finalization ?
Definition: GaudiCommon.h:537
Counter m_exceptions
Counter of exceptions.
Definition: GaudiCommon.h:739
bool errorsPrint() const
Print error counters at finalization ?
Definition: GaudiCommon.h:539
long printStat(const MSG::Level level=MSG::ALWAYS) const
perform the actual printout of statistical counters
T front(T... args)
Services m_services
List of active services.
Definition: GaudiCommon.h:730
StatisticsOwn m_countersOwn
General counters.
Definition: GaudiCommon.h:741
constexpr static const auto SUCCESS
Definition: StatusCode.h:96
long printErrors(const MSG::Level level=MSG::ALWAYS) const
perform the actual printout of error counters
Gaudi::Property< std::vector< std::string > > m_counterList
Definition: GaudiCommon.h:794
Counter m_errors
Counter of errors.
Definition: GaudiCommon.h:733
StatusCode releaseTool(const IAlgTool *tool) const
manual forced (and 'safe') release of the tool
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:61
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
Counter m_infos
counter of infos
Definition: GaudiCommon.h:737
StatusCode releaseSvc(const IInterface *svc) const
manual forced (and 'safe') release of the service
SmartIF< ICounterSummarySvc > m_counterSummarySvc
a pointer to the CounterSummarySvc
Definition: GaudiCommon.h:143
T clear(T... args)
T size(T... args)
T back(T... args)
constexpr static const auto FAILURE
Definition: StatusCode.h:97
AlgTools m_managedTools
List of active tools.
Definition: GaudiCommon.h:728
void reset(TYPE *ptr=nullptr)
Set the internal pointer to the passed one disposing of the old one.
Definition: SmartIF.h:96
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:202
Gaudi::Property< std::vector< std::string > > m_statEntityList
Definition: GaudiCommon.h:796

◆ get()

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
GaudiExceptionfor Invalid Data Provider Service
GaudiExceptionfor invalid/unavailable data
Parameters
svcPointer to data service (data provider)
locationdata location/address in Gaudi Transient Store
useRootInTESFlag to turn on(TRUE) off(FALSE) the use of the RootInTES location property
Returns
pointer to the data object

Definition at line 36 of file GaudiCommonImp.h.

36  {
37  // check the environment
38  Assert( service, "get():: IDataProvider* points to NULL!" );
39  // get the helper object:
41  return getter( *this, service, this->fullTESLocation( location, useRootInTES ) );
42 }
Helper structure for implementation of "get"-functions for GaudiCommon<BASE>
Definition: GaudiCommon.h:63
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.
std::string fullTESLocation(std::string_view location, bool useRootInTES) const
Returns the full correct event location given the rootInTes settings.
Definition: FixTESPath.h:65

◆ getIfExists()

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 49 of file GaudiCommonImp.h.

50  {
51  // check the environment
52  Assert( service, "get():: IDataProvider* points to NULL!" );
53  // get the helper object:
55  return getter( *this, service, this->fullTESLocation( location, useRootInTES ), false );
56 }
Helper structure for implementation of "get"-functions for GaudiCommon<BASE>
Definition: GaudiCommon.h:63
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.
std::string fullTESLocation(std::string_view location, bool useRootInTES) const
Returns the full correct event location given the rootInTes settings.
Definition: FixTESPath.h:65

◆ getOrCreate()

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
GaudiExceptionfor Invalid Data Provider Service
GaudiExceptionfor invalid/unavailable data
Parameters
svcPointer to data provider service
locationLocation in Gaudi Transient Event Store
useRootInTESFlag to turn on(TRUE) off(FALSE) the use of the RootInTES location property
Returns
A valid pointer to the data object

Definition at line 78 of file GaudiCommonImp.h.

79  {
80  // check the environment
81  Assert( service, "getOrCreate():: svc points to NULL!" );
82  // get the helper object
84  return getter( *this, service, this->fullTESLocation( location, useRootInTES ), location );
85 }
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.
Helper structure for implementation of "getOrCreate"-functions for GaudiCommon<BASE>
Definition: GetData.h:398
std::string fullTESLocation(std::string_view location, bool useRootInTES) const
Returns the full correct event location given the rootInTes settings.
Definition: FixTESPath.h:65

◆ Info()

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
msgInfo message
stStatusCode to return
mxMaximum number of printouts for this message
Returns
The given StatusCode

Definition at line 334 of file GaudiCommon.icpp.

334  {
335  // increase local counter of warnings
336  const size_t num = ++m_infos[msg];
337  // If suppressed, just return
338  if ( num > mx ) {
339  return st;
340  } else if ( UNLIKELY( num == mx ) ) // issue one-time suppression message
341  {
342  return Print( "The INFO message is suppressed : '" + msg + "'", st, MSG::INFO );
343  }
344  // return message
345  return Print( msg, st, MSG::INFO );
346 }
#define UNLIKELY(x)
Definition: Kernel.h:106
Counter m_infos
counter of infos
Definition: GaudiCommon.h:737
WARN_UNUSED 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.

◆ initGaudiCommonConstructor()

template<class PBASE >
void GaudiCommon< PBASE >::initGaudiCommonConstructor ( const IInterface parent = nullptr)
private

Constructor initializations.

Definition at line 75 of file GaudiCommon.icpp.

75  {
76  // setup context from parent if available
77  if ( parent ) {
78  if ( const GaudiAlgorithm* gAlg = dynamic_cast<const GaudiAlgorithm*>( parent ) ) {
79  m_context = gAlg->context();
80  } else if ( const GaudiTool* gTool = dynamic_cast<const GaudiTool*>( parent ) ) {
81  m_context = gTool->context();
82  }
83  }
84 
85  // Get the job option service
86  auto jos = PBASE::template service<IJobOptionsSvc>( "JobOptionsSvc" );
87  if ( !jos ) Exception( "Cannot get JobOptionsSvc" );
88 
89  // Get the "Context" option if in the file...
90  const auto myList = jos->getProperties( this->name() );
91  if ( myList ) {
92  // Iterate over the list to set the options
93  for ( const auto& iter : *myList ) {
94  const Gaudi::Property<std::string>* sp = dynamic_cast<const Gaudi::Property<std::string>*>( iter );
95  if ( sp && iter->name().compare( "Context" ) == 0 ) { m_context = sp->value(); }
96  }
97  }
98 }
Implementation of property with value of concrete type.
Definition: Property.h:370
void Exception(const std::string &msg, const GaudiException &exc, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
Create and (re)-throw a given GaudiException.
The useful base class for data processing algorithms.
Gaudi::Property< std::string > m_context
Definition: GaudiCommon.h:779
The useful base class for tools.
Definition: GaudiTool.h:111

◆ initialize()

template<class PBASE >
StatusCode GaudiCommon< PBASE >::initialize ( )
override

standard initialization method

Returns
status code

Definition at line 105 of file GaudiCommon.icpp.

105  {
106 
107  // initialize base class
108  const StatusCode sc = base_class::initialize();
109  if ( sc.isFailure() ) { return Error( "Failed to initialise base class PBASE", sc ); }
110 
111  // some debug printout
112  if ( this->msgLevel( MSG::DEBUG ) ) {
113  this->debug() << "Initialize base class GaudiCommon<" << System::typeinfoName( typeid( PBASE ) ) << ">" << endmsg;
114  if ( !context().empty() ) this->debug() << "Created with context = '" << context() << "'" << endmsg;
115  }
116 
117  // Set up the CounterSummarySvc May need to be changed
118  m_counterSummarySvc = this->svcLoc()->service( "CounterSummarySvc", false );
119  if ( this->msgLevel( MSG::DEBUG ) ) {
120  if ( !m_counterSummarySvc )
121  this->debug() << "could not locate CounterSummarySvc, no counter summary will be made" << endmsg;
122  else
123  this->debug() << "found CounterSummarySvc OK" << endmsg;
124  }
125 
126  // properties will be printed if asked for or in "MSG::DEBUG" mode
127  if ( propsPrint() ) {
129  } else if ( this->msgLevel( MSG::DEBUG ) ) {
131  }
132 
133  return sc;
134 }
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
Definition: System.cpp:308
WARN_UNUSED 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.
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:61
long printProps(const MSG::Level level=MSG::ALWAYS) const
perform the actual printout of properties
SmartIF< ICounterSummarySvc > m_counterSummarySvc
a pointer to the CounterSummarySvc
Definition: GaudiCommon.h:143
const std::string & context() const
Returns the "context" string. Used to identify different processing states.
Definition: GaudiCommon.h:717
bool propsPrint() const
Print properties at initialization ?
Definition: GaudiCommon.h:535
StatusCode initialize() override
Definition: FixTESPath.h:49
bool isFailure() const
Definition: StatusCode.h:141
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:202

◆ operator=()

template<class PBASE>
GaudiCommon& GaudiCommon< PBASE >::operator= ( const GaudiCommon< PBASE > &  )
privatedelete

◆ Print()

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
msgMessage to print
stStatusCode to return
levPrintout level for the given message
Returns
The given StatusCode

Definition at line 353 of file GaudiCommon.icpp.

353  {
354  // perform printout ?
355  if ( !this->msgLevel( lvl ) ) { return st; } // RETURN
356 
357  // use the predefined stream
358  MsgStream& str = this->msgStream( lvl );
359  if ( typePrint() ) { str << System::typeinfoName( typeid( *this ) ) << ":: "; }
360 
361  // print the message
362  str << msg;
363 
364  // test status code
365  if ( st.isSuccess() ) {
366  } else if ( StatusCode::FAILURE != st ) {
367  str << " StatusCode=" << st.getCode();
368  } else {
369  str << " StatusCode=FAILURE";
370  }
371 
372  // perform print operation
373  str << endmsg;
374 
375  // return
376  return st;
377 }
code_t getCode() const
Retrieve value ("checks" the StatusCode)
Definition: StatusCode.h:148
Definition of the MsgStream class used to transmit messages.
Definition: MsgStream.h:34
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
Definition: System.cpp:308
bool isSuccess() const
Definition: StatusCode.h:361
constexpr static const auto FAILURE
Definition: StatusCode.h:97
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:202
bool typePrint() const
Insert the actual C++ type of the algorithm/tool in the messages ?
Definition: GaudiCommon.h:533

◆ printErrors()

template<class PBASE >
long GaudiCommon< PBASE >::printErrors ( const MSG::Level  level = MSG::ALWAYS) const

perform the actual printout of error counters

Parameters
levelThe message level to print at
Returns
number of error counters

Definition at line 452 of file GaudiCommon.icpp.

452  {
453  // format for printout
454  boost::format ftm( " #%|-10s| = %|.8s| %|23t| Message = '%s'" );
455 
456  auto print = [&]( const Counter& c, const std::string& label ) {
457  for ( const auto& i : c ) { this->msgStream( level ) << ( ftm % label % i.second % i.first ) << endmsg; }
458  };
459 
460  print( m_exceptions, "EXCEPTIONS" );
461  print( m_errors, "ERRORS" );
462  print( m_warnings, "WARNINGS" );
463  print( m_infos, "INFOS" );
464 
465  // return total number of errors+warnings+exceptions
466  return m_exceptions.size() + m_errors.size() + m_warnings.size() + m_infos.size();
467 }
Counter m_warnings
counter of warnings
Definition: GaudiCommon.h:735
Counter m_exceptions
Counter of exceptions.
Definition: GaudiCommon.h:739
GAUDI_API std::string format(const char *,...)
MsgStream format utility "a la sprintf(...)".
Definition: MsgStream.cpp:119
std::map< std::string, unsigned int > Counter
the actual type error/warning counter
Definition: GaudiCommon.h:134
STL class.
Counter m_errors
Counter of errors.
Definition: GaudiCommon.h:733
Counter m_infos
counter of infos
Definition: GaudiCommon.h:737
T size(T... args)
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:202

◆ printProps()

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
levelThe message level to print at
Returns
number of properties
number of error counters

Definition at line 476 of file GaudiCommon.icpp.

476  {
477 
478  // print ALL properties
479  MsgStream& msg = this->msgStream( level );
480  const auto& properties = this->getProperties();
481  msg << "List of ALL properties of " << System::typeinfoName( typeid( *this ) ) << "/" << this->name()
482  << " #properties = " << properties.size() << endmsg;
483  for ( const auto& property : reverse( properties ) ) { msg << "Property ['Name': Value] = " << *property << endmsg; }
484  return properties.size();
485 }
Definition of the MsgStream class used to transmit messages.
Definition: MsgStream.h:34
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
Definition: System.cpp:308
::details::reverse_wrapper< T > reverse(T &&iterable)
Definition: reverse.h:59
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:202

◆ printStat()

template<class PBASE >
long GaudiCommon< PBASE >::printStat ( const MSG::Level  level = MSG::ALWAYS) const

perform the actual printout of statistical counters

Parameters
levelThe message level to print at
Returns
number of active statistical counters

Definition at line 420 of file GaudiCommon.icpp.

420  {
421  // check how many counters think they should be printed or how many
422  // we anyway want to print
423  auto countToBePrinted = [&]() {
424  unsigned n = 0;
425  this->forEachCounter( [&n]( const std::string&, const auto& counter ) { n += counter.toBePrinted(); } );
426  return n;
427  };
428  auto nbPrintedCounters =
429  ( ( !m_printEmptyCounters && !this->msgLevel( MSG::DEBUG ) ) ? countToBePrinted() : this->nCounters() );
430  // in case nothing should be printed, let's stop here
431  if ( nbPrintedCounters == 0 ) return 0;
432  MsgStream& msg = this->msgStream( level );
433  msg << "Number of counters : " << nbPrintedCounters << "\n" << m_header.value();
434  this->forEachCounter( [&]( const std::string& label, const auto& counter ) {
435  if ( m_printEmptyCounters || this->msgLevel( MSG::DEBUG ) || counter.toBePrinted() ) {
436  std::ostringstream ost;
437  counter.print( ost, label );
438  msg << "\n" << ost.str();
439  }
440  } );
441  //
442  msg << endmsg;
443  //
444  return nbPrintedCounters;
445 }
Gaudi::Property< bool > m_printEmptyCounters
Definition: GaudiCommon.h:775
Definition of the MsgStream class used to transmit messages.
Definition: MsgStream.h:34
STL class.
T str(T... args)
StatEntity & counter(const std::string &tag) const
accessor to certain counter by name
Definition: GaudiCommon.h:516
std::ostream & print(std::ostream &o, bool tableFormat, const std::string &name, bool flag=true, std::string fmtHead="%|-48.48s|%|27t|") const
Definition: StatEntity.h:159
Gaudi::Property< std::string > m_header
Definition: GaudiCommon.h:780
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:202

◆ propsPrint()

template<class PBASE>
bool GaudiCommon< PBASE >::propsPrint ( ) const
inline

Print properties at initialization ?

Definition at line 535 of file GaudiCommon.h.

535 { return m_propsPrint; }
Gaudi::Property< bool > m_propsPrint
Definition: GaudiCommon.h:758

◆ put() [1/2]

template<class PBASE >
DataObject * GaudiCommon< PBASE >::put ( IDataProviderSvc svc,
std::unique_ptr< 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
svcPointer to data provider service
objectData object or container to be registered
locationLocation in Gaudi Event Transient Store ("/Event" could be omitted )
useRootInTESFlag to turn on(TRUE) off(FALSE) the use of the RootInTES location property
Exceptions
GaudiExceptionfor invalid event data service
GaudiExceptionfor invalid object
GaudiExceptionfor error result from event data service
Returns
StatusCode
Return values
StatusCode::SUCCESSData was successfully placed in the TES.
StatusCode::FAILUREFailed to store data in the TES.

Definition at line 496 of file GaudiCommon.icpp.

497  {
498  // check arguments
499  Assert( svc, "put():: Invalid 'service'!" );
500  Assert( static_cast<bool>( object ), "put():: Invalid 'Object'!" );
501  Assert( !location.empty(), "put():: Invalid 'address' = '' " );
502  // final data location
503  const std::string& fullLocation = this->fullTESLocation( location, useRootInTES );
504  // register the object!
505  const StatusCode status = '/' == fullLocation[0] ? svc->registerObject( fullLocation, object.get() )
506  : svc->registerObject( "/Event/" + fullLocation, object.get() );
507  // check the result!
508  DataObject& obj = *object;
509  if ( status.isFailure() ) {
510  Exception( "put():: could not register '" + System::typeinfoName( typeid( obj ) ) + "' at address '" +
511  fullLocation + "'",
512  status );
513  }
514  if ( this->msgLevel( MSG::DEBUG ) ) {
515  Print( "The object of type '" + System::typeinfoName( typeid( obj ) ) + "' is registered in TS at address '" +
516  fullLocation + "'",
517  status, MSG::DEBUG )
518  .ignore();
519  }
520  // if we get here, ownership has been transferred to the IDataProviderSvc
521  return object.release();
522 }
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
Definition: System.cpp:308
void Exception(const std::string &msg, const GaudiException &exc, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
Create and (re)-throw a given GaudiException.
STL class.
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.
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:61
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.
SmartIF< SERVICE > svc(const std::string &name, const bool create=true) const
A useful method for the easy location of services.
const StatusCode & ignore() const
Ignore/check StatusCode.
Definition: StatusCode.h:164
std::string fullTESLocation(std::string_view location, bool useRootInTES) const
Returns the full correct event location given the rootInTes settings.
Definition: FixTESPath.h:65
WARN_UNUSED 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.
bool isFailure() const
Definition: StatusCode.h:141
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:40

◆ put() [2/2]

template<class PBASE>
DataObject* GaudiCommon< PBASE >::put ( IDataProviderSvc svc,
DataObject object,
const std::string location,
const bool  useRootInTES = true 
) const
inline

Definition at line 275 of file GaudiCommon.h.

276  {
277  return put( svc, std::unique_ptr<DataObject>( object ), location, useRootInTES );
278  }
DataObject * put(IDataProviderSvc *svc, std::unique_ptr< DataObject > object, const std::string &location, const bool useRootInTES=true) const
Register a data object or container into Gaudi Event Transient Store.
SmartIF< SERVICE > svc(const std::string &name, const bool create=true) const
A useful method for the easy location of services.
STL class.

◆ registerCondition() [1/4]

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
conditionthe path inside the Transient Detector Store to the condition object.
mfoptional 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");
// ...
}

Definition at line 573 of file GaudiCommon.h.

573  {
574  updMgrSvc()->registerCondition( dynamic_cast<CallerClass*>( this ), condition, mf );
575  }
IUpdateManagerSvc * updMgrSvc() const
Short-cut to locate the Update Manager Service.
void registerCondition(CallerClass *instance, const std::string &condition="", typename ObjectMemberFunction< CallerClass >::MemberFunctionType mf=nullptr)
Register an object (algorithm instance) to the service.

◆ registerCondition() [2/4]

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
conditionthe path inside the Transient Detector Store to the condition object.
condPtrDestpointer 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.
mfoptional 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);
// ...
}

Definition at line 607 of file GaudiCommon.h.

608  {
609  updMgrSvc()->registerCondition( dynamic_cast<CallerClass*>( this ), condition, mf, condPtrDest );
610  }
IUpdateManagerSvc * updMgrSvc() const
Short-cut to locate the Update Manager Service.
void registerCondition(CallerClass *instance, const std::string &condition="", typename ObjectMemberFunction< CallerClass >::MemberFunctionType mf=nullptr)
Register an object (algorithm instance) to the service.

◆ registerCondition() [3/4]

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 613 of file GaudiCommon.h.

613  {
614  updMgrSvc()->registerCondition( dynamic_cast<CallerClass*>( this ), std::string( condition ), mf );
615  }
IUpdateManagerSvc * updMgrSvc() const
Short-cut to locate the Update Manager Service.
STL class.
void registerCondition(CallerClass *instance, const std::string &condition="", typename ObjectMemberFunction< CallerClass >::MemberFunctionType mf=nullptr)
Register an object (algorithm instance) to the service.

◆ registerCondition() [4/4]

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
conditionthe path inside the Transient Detector Store to the condition object.
mfoptional 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");
// ...
}

Definition at line 632 of file GaudiCommon.h.

632  {
633  updMgrSvc()->registerCondition( dynamic_cast<CallerClass*>( this ), condition, mf );
634  }
IUpdateManagerSvc * updMgrSvc() const
Short-cut to locate the Update Manager Service.
void registerCondition(CallerClass *instance, const std::string &condition="", typename ObjectMemberFunction< CallerClass >::MemberFunctionType mf=nullptr)
Register an object (algorithm instance) to the service.

◆ release()

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
interfaceInterface pointer to the interface to be released
Returns
StatusCode
Return values
StatusCode::SUCCESSTool or service was successfully released
StatusCode::FAILUREError releasing too or service

Definition at line 216 of file GaudiCommon.icpp.

216  {
217  if ( !interface ) { return Error( "release(IInterface):: IInterface* points to NULL!" ); }
218  // dispatch between tools and services
219  const IAlgTool* algTool = dynamic_cast<const IAlgTool*>( interface );
220  // perform the actual release
221  return algTool ? releaseTool( algTool ) : releaseSvc( interface );
222 }
WARN_UNUSED 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.
StatusCode releaseTool(const IAlgTool *tool) const
manual forced (and 'safe') release of the tool
StatusCode releaseSvc(const IInterface *svc) const
manual forced (and 'safe') release of the service
The interface implemented by the AlgTool base class.
Definition: IAlgTool.h:33

◆ releaseSvc()

template<class PBASE >
StatusCode GaudiCommon< PBASE >::releaseSvc ( const IInterface svc) const
protected

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

Definition at line 257 of file GaudiCommon.icpp.

257  {
258  if ( !Svc ) return Error( "releaseSvc(IInterface):: IInterface* points to NULL!" );
259  SmartIF<IService> svc{const_cast<IInterface*>( Svc )};
260  if ( !svc ) return Warning( "releaseSvc(IInterface):: IInterface* is not a service" );
262  if ( it == m_services.end() || !GaudiCommon_details::svc_eq( *it, svc ) ) {
263  return Warning( "releaseSvc(IInterface):: IInterface* is not active" );
264  }
265  if ( this->msgLevel( MSG::DEBUG ) ) { this->debug() << "Releasing service '" << ( *it )->name() << "'" << endmsg; }
266  m_services.erase( it );
267  return StatusCode::SUCCESS;
268 }
constexpr const struct GaudiCommon_details::svc_eq_t svc_eq
Services m_services
List of active services.
Definition: GaudiCommon.h:730
WARN_UNUSED 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.
constexpr static const auto SUCCESS
Definition: StatusCode.h:96
T end(T... args)
T lower_bound(T... args)
constexpr const struct GaudiCommon_details::svc_lt_t svc_lt
SmartIF< SERVICE > svc(const std::string &name, const bool create=true) const
A useful method for the easy location of services.
T erase(T... args)
T begin(T... args)
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:202
WARN_UNUSED 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.

◆ releaseTool()

template<class PBASE >
StatusCode GaudiCommon< PBASE >::releaseTool ( const IAlgTool tool) const
protected

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

Definition at line 229 of file GaudiCommon.icpp.

229  {
230  if ( !algTool ) { return Error( "releaseTool(IAlgTool):: IAlgTool* points to NULL!" ); }
231  if ( !this->toolSvc() ) { return Error( "releaseTool(IAlgTool):: IToolSvc* points to NULL!" ); }
232  // find a tool in the list of active tools
233  auto it = std::find( m_managedTools.begin(), m_managedTools.end(), algTool );
234  if ( m_managedTools.end() == it ) { return Warning( "releaseTool(IAlgTool):: IAlgTool* is not active" ); }
235  // get the tool
236  IAlgTool* t = *it;
237  // cache name
238  const std::string name = t->name();
239  if ( this->msgLevel( MSG::DEBUG ) ) { this->debug() << "Releasing tool '" << name << "'" << endmsg; }
240  // remove the tool from the lists
241  base_class::deregisterTool( t );
242  m_managedTools.erase( it );
243  // release tool
244  if ( this->msgLevel( MSG::DEBUG ) ) {
245  this->debug() << "The tool '" << t->name() << "' of type '" << System::typeinfoName( typeid( *t ) )
246  << "' is released" << endmsg;
247  }
248  const StatusCode sc = this->toolSvc()->releaseTool( t );
249  return sc.isSuccess() ? sc : Warning( "releaseTool(IAlgTool):: error from IToolSvc releasing " + name, sc );
250 }
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
Definition: System.cpp:308
WARN_UNUSED 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.
T end(T... args)
virtual const std::string & name() const =0
Retrieve the name of the instance.
STL class.
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:61
T erase(T... args)
bool isSuccess() const
Definition: StatusCode.h:361
T find(T... args)
T begin(T... args)
The interface implemented by the AlgTool base class.
Definition: IAlgTool.h:33
AlgTools m_managedTools
List of active tools.
Definition: GaudiCommon.h:728
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:202
WARN_UNUSED 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.

◆ runUpdate()

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 646 of file GaudiCommon.h.

646 { return updMgrSvc()->update( this ); }
IUpdateManagerSvc * updMgrSvc() const
Short-cut to locate the Update Manager Service.
StatusCode update(CallerClass *instance)
Update the given instance.

◆ services()

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

get the list of aquired services

Definition at line 712 of file GaudiCommon.h.

712 { return m_services; } // get all services
Services m_services
List of active services.
Definition: GaudiCommon.h:730

◆ statPrint()

template<class PBASE>
bool GaudiCommon< PBASE >::statPrint ( ) const
inline

Print statistical counters at finalization ?

Definition at line 537 of file GaudiCommon.h.

537 { return m_statPrint; }
Gaudi::Property< bool > m_statPrint
Definition: GaudiCommon.h:767

◆ svc()

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
GaudiExceptionfor error in Algorithms::service
GaudiExceptionfor invalid service
Parameters
nameservice type name
createFlag for creation of non-existing services
Returns
A pointer to the service

Definition at line 131 of file GaudiCommonImp.h.

131  {
132  Assert( this->svcLoc(), "ISvcLocator* points to NULL!" );
134  // check if we already have this service
136  if ( it != std::end( m_services ) && GaudiCommon_details::svc_eq( *it, name ) ) {
137  // Try to get the requested interface
138  s = *it;
139  // check the results
140  if ( !s ) { Exception( "svc():: Could not retrieve Svc '" + name + "'", StatusCode::FAILURE ); }
141  } else {
142  auto baseSvc = this->svcLoc()->service( name, create );
143  // Try to get the requested interface
144  s = baseSvc;
145  // check the results
146  if ( !baseSvc || !s ) { Exception( "svc():: Could not retrieve Svc '" + name + "'", StatusCode::FAILURE ); }
147  // add the tool into list of known tools, to be properly released
148  addToServiceList( baseSvc );
149  }
150  // return *VALID* located service
151  return s;
152 }
Small smart pointer class with automatic reference counting for IInterface.
Definition: IConverter.h:25
constexpr const struct GaudiCommon_details::svc_eq_t svc_eq
Services m_services
List of active services.
Definition: GaudiCommon.h:730
void addToServiceList(SmartIF< IService > svc) const
Add the given service to the list of acquired services.
void Exception(const std::string &msg, const GaudiException &exc, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
Create and (re)-throw a given GaudiException.
T end(T... args)
T lower_bound(T... args)
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.
constexpr const struct GaudiCommon_details::svc_lt_t svc_lt
T begin(T... args)
string s
Definition: gaudirun.py:328
constexpr static const auto FAILURE
Definition: StatusCode.h:97

◆ tool() [1/2]

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
GaudiExceptionfor invalid Tool Service
GaudiExceptionfor error from Tool Service
GaudiExceptionfor invalid tool
Parameters
typeTool type
nameTool name
parentTool parent
createFlag for creation of nonexisting tools
Returns
A pointer to the tool

Definition at line 91 of file GaudiCommonImp.h.

92  {
93  // for empty names delegate to another method
94  if ( name.empty() ) return tool<TOOL>( type, parent, create );
95  Assert( this->toolSvc(), "tool():: IToolSvc* points to NULL!" );
96  // get the tool from Tool Service
97  TOOL* Tool = nullptr;
98  const StatusCode sc = this->toolSvc()->retrieveTool( type, name, Tool, parent, create );
99  if ( sc.isFailure() ) { Exception( "tool():: Could not retrieve Tool '" + type + "'/'" + name + "'", sc ); }
100  if ( !Tool ) { Exception( "tool():: Could not retrieve Tool '" + type + "'/'" + name + "'" ); }
101  // insert tool into list of tools
102  PBASE::registerTool( Tool );
103  m_managedTools.push_back( Tool );
104  // return *VALID* located tool
105  return Tool;
106 }
void Exception(const std::string &msg, const GaudiException &exc, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
Create and (re)-throw a given GaudiException.
T push_back(T... args)
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.
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:61
AlgTools m_managedTools
List of active tools.
Definition: GaudiCommon.h:728
bool isFailure() const
Definition: StatusCode.h:141

◆ tool() [2/2]

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
GaudiExceptionfor invalid Tool Service
GaudiExceptionfor error from Tool Service
GaudiExceptionfor invalid tool
Parameters
typeTool type, could be of "Type/Name" format
parentTool parent
createFlag for creation of non-existing tools
Returns
A pointer to the tool

Definition at line 112 of file GaudiCommonImp.h.

112  {
113  // check the environment
114  Assert( PBASE::toolSvc(), "IToolSvc* points to NULL!" );
115  // retrieve the tool from Tool Service
116  TOOL* Tool = nullptr;
117  const StatusCode sc = this->toolSvc()->retrieveTool( type, Tool, parent, create );
118  if ( sc.isFailure() ) { Exception( "tool():: Could not retrieve Tool '" + type + "'", sc ); }
119  if ( !Tool ) { Exception( "tool():: Could not retrieve Tool '" + type + "'" ); }
120  // add the tool into the list of known tools to be properly released
121  PBASE::registerTool( Tool );
122  m_managedTools.push_back( Tool );
123  // return *VALID* located tool
124  return Tool;
125 }
void Exception(const std::string &msg, const GaudiException &exc, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
Create and (re)-throw a given GaudiException.
T push_back(T... args)
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.
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:61
AlgTools m_managedTools
List of active tools.
Definition: GaudiCommon.h:728
bool isFailure() const
Definition: StatusCode.h:141

◆ typePrint()

template<class PBASE>
bool GaudiCommon< PBASE >::typePrint ( ) const
inline

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

Definition at line 533 of file GaudiCommon.h.

533 { return m_typePrint; }
Gaudi::Property< bool > m_typePrint
Definition: GaudiCommon.h:777

◆ updMgrSvc()

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

Short-cut to locate the Update Manager Service.

Definition at line 157 of file GaudiCommonImp.h.

157  {
158  if ( !m_updMgrSvc ) { m_updMgrSvc = svc<IUpdateManagerSvc>( "UpdateManagerSvc", true ); }
159  return m_updMgrSvc;
160 }
IUpdateManagerSvc * m_updMgrSvc
Pointer to the Update Manager Service instance.
Definition: GaudiCommon.h:746

◆ Warning()

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
msgWarning message
stStatusCode to return
mxMaximum number of printouts for this message
Returns
The given StatusCode

Definition at line 315 of file GaudiCommon.icpp.

315  {
316  // increase local counter of warnings
317  const size_t num = ++m_warnings[msg];
318  // If suppressed, just return
319  if ( num > mx ) {
320  return st;
321  } else if ( UNLIKELY( num == mx ) ) // issue one-time suppression message
322  {
323  return Print( "The WARNING message is suppressed : '" + msg + "'", st, MSG::WARNING );
324  }
325  // return message
326  return Print( msg, st, MSG::WARNING );
327 }
Counter m_warnings
counter of warnings
Definition: GaudiCommon.h:735
#define UNLIKELY(x)
Definition: Kernel.h:106
WARN_UNUSED 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.

Member Data Documentation

◆ IgnoreRootInTES

template<class PBASE>
const bool GaudiCommon< PBASE >::IgnoreRootInTES = false
staticprotected

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 114 of file GaudiCommon.h.

◆ m_context

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

Definition at line 779 of file GaudiCommon.h.

◆ m_counterList

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 794 of file GaudiCommon.h.

◆ m_countersOwn

template<class PBASE>
StatisticsOwn GaudiCommon< PBASE >::m_countersOwn
private

General counters.

Definition at line 741 of file GaudiCommon.h.

◆ m_countersOwnMutex

template<class PBASE>
std::mutex GaudiCommon< PBASE >::m_countersOwnMutex
private

The mutex for m_countersOwn.

Definition at line 743 of file GaudiCommon.h.

◆ m_counterSummarySvc

template<class PBASE>
SmartIF<ICounterSummarySvc> GaudiCommon< PBASE >::m_counterSummarySvc
protected

a pointer to the CounterSummarySvc

Definition at line 143 of file GaudiCommon.h.

◆ m_errors

template<class PBASE>
Counter GaudiCommon< PBASE >::m_errors
mutableprivate

Counter of errors.

Definition at line 733 of file GaudiCommon.h.

◆ m_errorsPrint

template<class PBASE>
Gaudi::Property<bool> GaudiCommon< PBASE >::m_errorsPrint
private
Initial value:
{this, "ErrorsPrint", true,
[this]( auto& ) {
if ( this->FSMState() >= Gaudi::StateMachine::INITIALIZED &&
this->errorsPrint() ) {
this->printErrors();
}
},
"print the statistics of errors/warnings/exceptions"}

Definition at line 749 of file GaudiCommon.h.

◆ m_exceptions

template<class PBASE>
Counter GaudiCommon< PBASE >::m_exceptions
mutableprivate

Counter of exceptions.

Definition at line 739 of file GaudiCommon.h.

◆ m_format1

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 784 of file GaudiCommon.h.

◆ m_format2

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 787 of file GaudiCommon.h.

◆ m_header

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 780 of file GaudiCommon.h.

◆ m_infos

template<class PBASE>
Counter GaudiCommon< PBASE >::m_infos
mutableprivate

counter of infos

Definition at line 737 of file GaudiCommon.h.

◆ m_managedTools

template<class PBASE>
AlgTools GaudiCommon< PBASE >::m_managedTools
mutableprivate

List of active tools.

Definition at line 728 of file GaudiCommon.h.

◆ m_printEmptyCounters

template<class PBASE>
Gaudi::Property<bool> GaudiCommon< PBASE >::m_printEmptyCounters
private
Initial value:
{this, "PrintEmptyCounters", false,
"force printing of empty counters, otherwise only printed in DEBUG mode"}

Definition at line 775 of file GaudiCommon.h.

◆ m_propsPrint

template<class PBASE>
Gaudi::Property<bool> GaudiCommon< PBASE >::m_propsPrint
private
Initial value:
{this, "PropertiesPrint", false,
[this]( auto& ) {
if ( this->FSMState() >= Gaudi::StateMachine::INITIALIZED &&
this->propsPrint() ) {
}
},
"print the properties of the component"}

Definition at line 758 of file GaudiCommon.h.

◆ m_services

template<class PBASE>
Services GaudiCommon< PBASE >::m_services
mutableprivate

List of active services.

Definition at line 730 of file GaudiCommon.h.

◆ m_statEntityList

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 796 of file GaudiCommon.h.

◆ m_statPrint

template<class PBASE>
Gaudi::Property<bool> GaudiCommon< PBASE >::m_statPrint
private
Initial value:
{this, "StatPrint", true,
[this]( auto& ) {
if ( this->FSMState() >= Gaudi::StateMachine::INITIALIZED && this->statPrint() ) {
}
},
"print the table of counters"}

Definition at line 767 of file GaudiCommon.h.

◆ m_typePrint

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 777 of file GaudiCommon.h.

◆ m_updMgrSvc

template<class PBASE>
IUpdateManagerSvc* GaudiCommon< PBASE >::m_updMgrSvc = nullptr
mutableprivate

Pointer to the Update Manager Service instance.

Definition at line 746 of file GaudiCommon.h.

◆ m_useEffFormat

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 791 of file GaudiCommon.h.

◆ m_warnings

template<class PBASE>
Counter GaudiCommon< PBASE >::m_warnings
mutableprivate

counter of warnings

Definition at line 735 of file GaudiCommon.h.

◆ UseRootInTES

template<class PBASE>
const bool GaudiCommon< PBASE >::UseRootInTES = true
staticprotected

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 126 of file GaudiCommon.h.


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