1 #ifndef GAUDIALG_GAUDICOMMON_H 2 #define GAUDIALG_GAUDICOMMON_H 1 37 #elif __cplusplus > 201402L 38 # define WARN_UNUSED [[nodiscard]] 40 # define WARN_UNUSED [[gnu::warn_unused_result]] 91 template <
class PBASE>
105 static const bool IgnoreRootInTES =
false;
117 static const bool UseRootInTES =
true;
171 template <
class TYPE>
173 const bool useRootInTES = true )
const;
177 template <
class TYPE>
179 const bool useRootInTES =
true )
const;
206 template <
class TYPE>
235 template <
class TYPE,
class TYPE2>
237 const bool useRootInTES =
true )
const;
264 const bool useRootInTES =
true )
const;
267 const bool useRootInTES =
true )
const {
295 template <
class TOOL>
297 bool create =
true )
const;
320 template <
class TOOL>
344 template <
class SERVICE>
439 inline void Assert(
const bool ok,
const std::string& message =
"",
449 inline void Assert(
const bool ok,
const char* message,
480 void Exception(
const std::string& msg =
"no message",
485 inline StatisticsOwn
countersOwn()
const {
return m_countersOwn; }
513 auto p = this->findCounter( tag );
515 auto&
counter = m_countersOwn[tag];
516 this->declareCounter( tag,
counter );
519 return m_countersOwn[tag];
563 template <
class CallerClass>
565 updMgrSvc()->
registerCondition( dynamic_cast<CallerClass*>(
this ), condition, mf );
597 template <
class CallerClass,
class CondType>
600 updMgrSvc()->
registerCondition( dynamic_cast<CallerClass*>(
this ), condition, mf, condPtrDest );
603 template <
class CallerClass>
622 template <
class CallerClass,
class TargetClass>
624 updMgrSvc()->
registerCondition( dynamic_cast<CallerClass*>(
this ), condition, mf );
642 template <typename U = PBASE, typename = std::enable_if_t<std::is_base_of<Gaudi::Algorithm, PBASE>::value, U>>
644 initGaudiCommonConstructor();
648 template <typename U = PBASE, typename = std::enable_if_t<std::is_base_of<AlgTool, PBASE>::value, U>>
651 initGaudiCommonConstructor( this->parent() );
698 using PBASE::release;
703 const Services&
services()
const {
return m_services; }
724 void initGaudiCommonConstructor(
const IInterface* parent =
nullptr );
753 this->errorsPrint() ) {
757 "print the statistics of errors/warnings/exceptions"};
762 this->propsPrint() ) {
766 "print the properties of the component"};
774 "print the table of counters"};
776 "force printing of empty counters, otherwise only printed in DEBUG mode"};
783 " sum | mean/eff^* | rms/err^* | min | max |",
784 "the header row for the output Stat-table"};
786 this,
"RegularRowFormat",
" | %|-48.48s|%|50t||%|10d| |%|11.7g| |%|#11.5g| |%|#11.5g| |%|#12.5g| |%|#12.5g| |",
787 "the format for regular row in the output Stat-table"};
789 this,
"EfficiencyRowFormat",
790 " |*%|-48.48s|%|50t||%|10d| |%|11.5g| |(%|#9.6g| +- %|-#9.6g|)%%| ------- | ------- |",
791 "The format for \"efficiency\" row in the output Stat-table"};
793 "use the special format for printout of efficiency counters"};
796 this,
"CounterList", {
".*"},
"RegEx list, of simple integer counters for CounterSummary"};
798 this,
"StatEntityList", {},
"RegEx list, of StatEntity counters for CounterSummary"};
807 #endif // GAUDIALG_GAUDICOMMON_H std::map< std::string, StatEntity > StatisticsOwn
the actual type of general counters
The implementation of inline/templated methods for class GaudiCommon.
bool operator()(const SmartIF< IService > &s, const std::string &n) const
Counter m_warnings
counter of warnings
bool operator()(const std::string &n, const SmartIF< IService > &s) const
Define general base for Gaudi exception.
The ISvcLocator is the interface implemented by the Service Factory in the Application Manager to loc...
Counter m_exceptions
Counter of exceptions.
Implementation of property with value of concrete type.
const std::string & rootInTES() const
Returns the "rootInTES" string.
GaudiCommon(const std::string &name, ISvcLocator *pSvcLocator)
Algorithm constructor - the SFINAE constraint below ensures that this is constructor is only defined ...
StatEntity & counter(const std::string &tag)
std::vector< IAlgTool * > AlgTools
storage for active tools
constexpr const struct GaudiCommon_details::svc_eq_t svc_eq
void registerCondition(TargetClass *condition, StatusCode(CallerClass::*mf)()=NULL)
register the current instance to the UpdateManagerSvc as a consumer for a condition.
std::map< std::string, unsigned int > Counter
the actual type error/warning counter
Services m_services
List of active services.
bool operator()(const SmartIF< IService > &s, const SmartIF< IService > &n) const
StatisticsOwn m_countersOwn
General counters.
constexpr static const auto SUCCESS
Helper structure for implementation of "get"-functions for GaudiCommon<BASE>
const std::string & context() const
Returns the "context" string. Used to identify different processing states.
bool operator()(const std::string &n, const SmartIF< IService > &s) const
void registerCondition(char *condition, StatusCode(CallerClass::*mf)()=NULL)
just to avoid conflicts with the version using a pointer to a template class.
StatisticsOwn countersOwn() const
accessor to all owned counters
Data provider interface definition.
void registerCondition(const std::string &condition, StatusCode(CallerClass::*mf)()=nullptr)
register the current instance to the UpdateManagerSvc as a consumer for a condition.
const Services & services() const
get the list of aquired services
PropertyMgr & operator=(const PropertyMgr &)=delete
bool statPrint() const
Print statistical counters at finalization ?
StatEntity & counter(const std::string &tag) const
accessor to certain counter by name
constexpr const struct GaudiCommon_details::svc_lt_t svc_lt
Counter m_errors
Counter of errors.
This class is used for returning status codes from appropriate routines.
bool propsPrint() const
Print properties at initialization ?
Definition of the basic interface.
Counter m_infos
counter of infos
bool errorsPrint() const
Print error counters at finalization ?
void registerCondition(CallerClass *instance, const std::string &condition="", typename ObjectMemberFunction< CallerClass >::MemberFunctionType mf=nullptr)
Register an object (algorithm instance) to the service.
std::vector< SmartIF< IService > > Services
storage for active services
SmartIF< ICounterSummarySvc > m_counterSummarySvc
a pointer to the CounterSummarySvc
Interface class to the Update Manager service.
DataObject * put(IDataProviderSvc *svc, DataObject *object, const std::string &location, const bool useRootInTES=true) const
StatusCode runUpdate()
asks the UpdateManagerSvc to perform an update of the instance (if needed) without waiting the next B...
std::mutex m_countersOwnMutex
The mutex for m_countersOwn.
std::map< std::string, std::reference_wrapper< Gaudi::Accumulators::PrintableCounter > > Statistics
bool typePrint() const
Insert the actual C++ type of the algorithm/tool in the messages ?
StatusCode update(CallerClass *instance)
Update the given instance.
bool operator()(const SmartIF< IService > &s, const SmartIF< IService > &n) const
Alias for backward compatibility.
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.
constexpr static const auto FAILURE
Implements the common functionality between GaudiTools and GaudiAlgorithms.
AlgTools m_managedTools
List of active tools.
bool operator()(const SmartIF< IService > &s, const std::string &n) const
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...
backward compatible StatEntity class.
A DataObject is the base class of any identifiable object on any data store.
Gaudi::Sequence base_class
Helper functions to set/get the application return code.
Out1 * put(DataObjectHandle< Out1 > &out_handle, Out2 &&out)