1 #ifndef GAUDIALG_GAUDICOMMON_H 2 #define GAUDIALG_GAUDICOMMON_H 1 39 # define WARN_UNUSED [[nodiscard]] 90 template <
class PBASE>
104 static const bool IgnoreRootInTES =
false;
116 static const bool UseRootInTES =
true;
170 template <
class TYPE>
172 const bool useRootInTES =
true )
const;
176 template <
class TYPE>
178 const bool useRootInTES =
true )
const;
205 template <
class TYPE>
234 template <
class TYPE,
class TYPE2>
236 const bool useRootInTES =
true )
const;
263 const bool useRootInTES =
true )
const;
266 const bool useRootInTES =
true )
const {
294 template <
class TOOL>
296 bool create =
true )
const;
319 template <
class TOOL>
343 template <
class SERVICE>
438 inline void Assert(
const bool ok,
const std::string& message =
"",
448 inline void Assert(
const bool ok,
const char* message,
479 void Exception(
const std::string& msg =
"no message",
484 inline StatisticsOwn
countersOwn()
const {
return m_countersOwn; }
512 auto p = this->findCounter( tag );
514 auto&
counter = m_countersOwn[tag];
515 this->declareCounter( tag,
counter );
518 return m_countersOwn[tag];
562 template <
class CallerClass>
564 updMgrSvc()->
registerCondition( dynamic_cast<CallerClass*>(
this ), condition, mf );
596 template <
class CallerClass,
class CondType>
599 updMgrSvc()->
registerCondition( dynamic_cast<CallerClass*>(
this ), condition, mf, condPtrDest );
602 template <
class CallerClass>
621 template <
class CallerClass,
class TargetClass>
623 updMgrSvc()->
registerCondition( dynamic_cast<CallerClass*>(
this ), condition, mf );
641 template <typename U = PBASE, typename = std::enable_if_t<std::is_base_of<Gaudi::Algorithm, PBASE>::value, U>>
643 initGaudiCommonConstructor();
647 template <typename U = PBASE, typename = std::enable_if_t<std::is_base_of<AlgTool, PBASE>::value, U>>
650 initGaudiCommonConstructor( this->parent() );
697 using PBASE::release;
702 const Services&
services()
const {
return m_services; }
714 void initGaudiCommonConstructor(
const IInterface* parent =
nullptr );
743 this->errorsPrint() ) {
747 "print the statistics of errors/warnings/exceptions"};
752 this->propsPrint() ) {
756 "print the properties of the component"};
764 "print the table of counters"};
766 "force printing of empty counters, otherwise only printed in DEBUG mode"};
772 " sum | mean/eff^* | rms/err^* | min | max |",
773 "the header row for the output Stat-table"};
775 this,
"RegularRowFormat",
" | %|-48.48s|%|50t||%|10d| |%|11.7g| |%|#11.5g| |%|#11.5g| |%|#12.5g| |%|#12.5g| |",
776 "the format for regular row in the output Stat-table"};
778 this,
"EfficiencyRowFormat",
779 " |*%|-48.48s|%|50t||%|10d| |%|11.5g| |(%|#9.6g| +- %|-#9.6g|)%%| ------- | ------- |",
780 "The format for \"efficiency\" row in the output Stat-table"};
782 "use the special format for printout of efficiency counters"};
785 this,
"CounterList", {
".*"},
"RegEx list, of simple integer counters for CounterSummary"};
787 this,
"StatEntityList", {},
"RegEx list, of StatEntity counters for CounterSummary"};
796 #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
class MergingTransformer< Out(const vector_of_const_< In > true
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.
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.
Out1 * put(const DataObjectHandle< Out1 > &out_handle, Out2 &&out)
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.
Header file for std:chrono::duration-based Counters.