1 #ifndef GAUDIALG_GAUDICOMMON_H 2 #define GAUDIALG_GAUDICOMMON_H 1 34 #if defined( __GNUC__ ) && __GNUC__ >= 5 35 #pragma GCC diagnostic push 36 #pragma GCC diagnostic ignored "-Wsuggest-override" 38 #include "tbb/concurrent_unordered_map.h" 39 #if defined( __GNUC__ ) && __GNUC__ >= 5 40 #pragma GCC diagnostic pop 45 #elif __cplusplus > 201402L 46 #define WARN_UNUSED [[nodiscard]] 48 #define WARN_UNUSED [[gnu::warn_unused_result]] 100 template <
class PBASE>
115 static const bool IgnoreRootInTES =
false;
127 static const bool UseRootInTES =
true;
132 typedef tbb::concurrent_unordered_map<std::string, StatEntity>
Statistics;
180 template <
class TYPE>
182 const bool useRootInTES = true )
const;
186 template <
class TYPE>
188 const bool useRootInTES =
true )
const;
215 template <
class TYPE>
244 template <
class TYPE,
class TYPE2>
246 const bool useRootInTES =
true )
const;
273 const bool useRootInTES =
true )
const;
276 const bool useRootInTES =
true )
const 305 template <
class TOOL>
307 bool create =
true )
const;
330 template <
class TOOL>
354 template <
class SERVICE>
449 inline void Assert(
const bool ok,
const std::string& message =
"",
459 inline void Assert(
const bool ok,
const char* message,
490 void Exception(
const std::string& msg =
"no message",
496 inline const Statistics&
counters()
const {
return m_counters; }
558 template <
class CallerClass>
561 updMgrSvc()->
registerCondition( dynamic_cast<CallerClass*>(
this ), condition, mf );
593 template <
class CallerClass,
class CondType>
597 updMgrSvc()->
registerCondition( dynamic_cast<CallerClass*>(
this ), condition, mf, condPtrDest );
600 template <
class CallerClass>
620 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<Algorithm, PBASE>::value, U>>
644 initGaudiCommonConstructor();
648 template <typename U = PBASE, typename = std::enable_if_t<std::is_base_of<AlgTool, PBASE>::value, U>>
652 initGaudiCommonConstructor( this->parent() );
662 return i_gcInitialize();
673 return i_gcFinalize();
713 using PBASE::release;
718 const Services&
services()
const {
return m_services; }
748 void initGaudiCommonConstructor(
const IInterface* parent =
nullptr );
771 Gaudi::Property<bool> m_errorsPrint{
this,
"ErrorsPrint",
true,
"print the statistics of errors/warnings/exceptions"};
781 " sum | mean/eff^* | rms/err^* | min | max |",
782 "the header row for the output Stat-table"};
784 this,
"RegularRowFormat",
" | %|-48.48s|%|50t||%|10d| |%|11.7g| |%|#11.5g| |%|#11.5g| |%|#12.5g| |%|#12.5g| |",
785 "the format for regular row in the output Stat-table"};
787 this,
"EfficiencyRowFormat",
788 " |*%|-48.48s|%|50t||%|10d| |%|11.5g| |(%|#9.6g| +- %|-#9.6g|)%%| ------- | ------- |",
789 "The format for \"efficiency\" row in the output Stat-table"};
791 "use the special format for printout of efficiency counters"};
794 this,
"CounterList", {
".*"},
"RegEx list, of simple integer counters for CounterSummary"};
796 this,
"StatEntityList", {},
"RegEx list, of StatEntity counters for CounterSummary"};
805 #endif // GAUDIALG_GAUDICOMMON_H 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
constexpr static const auto FAILURE
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 ...
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
Statistics m_counters
General counters.
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.
const Statistics & counters() const
accessor to all counters
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.
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
tbb::concurrent_unordered_map< std::string, StatEntity > Statistics
the actual type of general counters
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
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
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...
constexpr static const auto SUCCESS
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
Base class from which all concrete algorithm classes should be derived.
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.
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...
The basic counter used for Monitoring purposes.
A DataObject is the base class of any identifiable object on any data store.
Helper functions to set/get the application return code.
Out1 * put(DataObjectHandle< Out1 > &out_handle, Out2 &&out)