Commit 6ad3b7a3 authored by Gerhard Raven's avatar Gerhard Raven
Browse files

Make Counters work with Gaudi::Algorithm

* introduce CounterHolder, which keeps track of the
  available counters, and provides declareCounter,
  findCounter, forEachCounter, nCounters and clearCounters
parent 70404da2
......@@ -490,9 +490,6 @@ private:
/// accessor to all owned counters
inline StatisticsOwn countersOwn() const { return m_countersOwn; }
public:
// ==========================================================================
/// accessor to all counters
inline const Statistics counters() const { return m_counters; }
/** accessor to certain counter by name
*
* @code
......@@ -518,20 +515,15 @@ public:
}
inline StatEntity& counter( const std::string& tag )
{
std::lock_guard<std::mutex> lock( m_countersMutex );
// Return referenced StatEntity if it already exists, else create it
auto p = m_counters.find( tag );
if ( p == end( m_counters ) ) {
auto p = this->findCounter( tag );
if ( !p ) {
auto& counter = m_countersOwn[tag];
p = m_counters.emplace( tag, counter ).first;
this->declareCounter( tag, counter );
return counter;
}
return m_countersOwn[tag];
}
inline void registerCounter( const std::string& tag, Gaudi::Accumulators::PrintableCounter& r )
{
std::lock_guard<std::mutex> lock( m_countersMutex );
m_counters.emplace( tag, r );
}
// ==========================================================================
public:
/// Insert the actual C++ type of the algorithm/tool in the messages ?
......@@ -675,25 +667,11 @@ public:
/** standard initialization method
* @return status code
*/
StatusCode initialize() override
#ifdef __ICC
{
return i_gcInitialize();
}
StatusCode i_gcInitialize()
#endif
;
StatusCode initialize() override;
/** standard finalization method
* @return status code
*/
StatusCode finalize() override
#ifdef __ICC
{
return i_gcFinalize();
}
StatusCode i_gcFinalize()
#endif
;
StatusCode finalize() override;
private:
GaudiCommon() = delete;
......@@ -773,9 +751,6 @@ private:
mutable Counter m_exceptions;
/// General counters
StatisticsOwn m_countersOwn;
Statistics m_counters;
/// The counters mutex
std::mutex m_countersMutex;
// ==========================================================================
/// Pointer to the Update Manager Service instance
mutable IUpdateManagerSvc* m_updMgrSvc = nullptr;
......@@ -813,7 +788,6 @@ private:
Gaudi::Property<std::string> m_context{this, "Context", {}, "note: overridden by parent settings"};
Gaudi::Property<std::string> m_rootInTES{this, "RootInTES", {}, "note: overridden by parent settings"};
Gaudi::Property<std::string> m_header{this, "StatTableHeader",
" | Counter | # | "
" sum | mean/eff^* | rms/err^* | min | max |",
......
......@@ -6,6 +6,7 @@
// GaudiKernel
// ============================================================================
#include "GaudiKernel/AlgTool.h"
#include "GaudiKernel/CounterHolder.h"
#include "GaudiKernel/DataObject.h"
// ============================================================================
// GaudiAlg
......@@ -98,7 +99,7 @@ namespace std
* @date 2003-07-07
*/
// ============================================================================
class GAUDI_API GaudiTool : public GaudiCommon<AlgTool>
class GAUDI_API GaudiTool : public GaudiCommon<CounterHolder<AlgTool>>
{
public:
// ==========================================================================
......@@ -194,7 +195,7 @@ public:
inline void put( IDataProviderSvc* svc, std::unique_ptr<DataObject> object, const std::string& address,
const bool useRootInTES = true ) const
{
GaudiCommon<AlgTool>::put( svc, std::move( object ), address, useRootInTES );
GaudiCommon<CounterHolder<AlgTool>>::put( svc, std::move( object ), address, useRootInTES );
}
/** @brief Register a data object or container into Gaudi Event Transient Store
......@@ -232,7 +233,7 @@ public:
inline const DataObject* put( std::unique_ptr<DataObject> object, const std::string& address,
const bool useRootInTES = true ) const
{
return GaudiCommon<AlgTool>::put( evtSvc(), std::move( object ), address, useRootInTES );
return GaudiCommon<CounterHolder<AlgTool>>::put( evtSvc(), std::move( object ), address, useRootInTES );
}
/** @brief Templated access to the data in Gaudi Transient Store
......@@ -270,7 +271,7 @@ public:
inline typename Gaudi::Utils::GetData<TYPE>::return_type get( IDataProviderSvc* svc, const std::string& location,
const bool useRootInTES = true ) const
{
return GaudiCommon<AlgTool>::get<TYPE>( svc, location, useRootInTES );
return GaudiCommon<CounterHolder<AlgTool>>::get<TYPE>( svc, location, useRootInTES );
}
/** @brief Templated access to the data in Gaudi Transient Store
......@@ -310,7 +311,7 @@ public:
inline typename Gaudi::Utils::GetData<TYPE>::return_type
getIfExists( IDataProviderSvc* svc, const std::string& location, const bool useRootInTES = true ) const
{
return GaudiCommon<AlgTool>::getIfExists<TYPE>( svc, location, useRootInTES );
return GaudiCommon<CounterHolder<AlgTool>>::getIfExists<TYPE>( svc, location, useRootInTES );
}
/** @brief Templated access to the data from Gaudi Event Transient Store
......@@ -342,7 +343,7 @@ public:
inline typename Gaudi::Utils::GetData<TYPE>::return_type get( const std::string& location,
const bool useRootInTES = true ) const
{
return GaudiCommon<AlgTool>::get<TYPE>( evtSvc(), location, useRootInTES );
return GaudiCommon<CounterHolder<AlgTool>>::get<TYPE>( evtSvc(), location, useRootInTES );
}
/** @brief Templated access to the data in Gaudi Transient Store
......@@ -381,7 +382,7 @@ public:
inline typename Gaudi::Utils::GetData<TYPE>::return_type getIfExists( const std::string& location,
const bool useRootInTES = true ) const
{
return GaudiCommon<AlgTool>::getIfExists<TYPE>( evtSvc(), location, useRootInTES );
return GaudiCommon<CounterHolder<AlgTool>>::getIfExists<TYPE>( evtSvc(), location, useRootInTES );
}
/** @brief Templated access to the detector data from the
......@@ -405,7 +406,7 @@ public:
template <class TYPE>
inline TYPE* getDet( IDataProviderSvc* svc, const std::string& location ) const
{
return GaudiCommon<AlgTool>::get<TYPE>( svc, location, false );
return GaudiCommon<CounterHolder<AlgTool>>::get<TYPE>( svc, location, false );
}
/** @brief Templated access to the detector data from the
......@@ -434,7 +435,7 @@ public:
inline typename Gaudi::Utils::GetData<TYPE>::return_type getDetIfExists( IDataProviderSvc* svc,
const std::string& location ) const
{
return GaudiCommon<AlgTool>::getIfExists<TYPE>( svc, location, false );
return GaudiCommon<CounterHolder<AlgTool>>::getIfExists<TYPE>( svc, location, false );
}
/** @brief Templated access to the detector data from the
......@@ -457,7 +458,7 @@ public:
template <class TYPE>
inline TYPE* getDet( const std::string& location ) const
{
return GaudiCommon<AlgTool>::get<TYPE>( detSvc(), location, false );
return GaudiCommon<CounterHolder<AlgTool>>::get<TYPE>( detSvc(), location, false );
}
/** @brief Templated access to the detector data from the
......@@ -484,7 +485,7 @@ public:
template <class TYPE>
inline typename Gaudi::Utils::GetData<TYPE>::return_type getDetIfExists( const std::string& location ) const
{
return GaudiCommon<AlgTool>::getIfExists<TYPE>( detSvc(), location, false );
return GaudiCommon<CounterHolder<AlgTool>>::getIfExists<TYPE>( detSvc(), location, false );
}
/** @brief Check the existence of a data object or container
......@@ -515,7 +516,7 @@ public:
template <class TYPE>
inline bool exist( IDataProviderSvc* svc, const std::string& location, const bool useRootInTES = true ) const
{
return GaudiCommon<AlgTool>::exist<TYPE>( svc, location, useRootInTES );
return GaudiCommon<CounterHolder<AlgTool>>::exist<TYPE>( svc, location, useRootInTES );
}
/** @brief Check the existence of a data object or container
......@@ -543,7 +544,7 @@ public:
template <class TYPE>
inline bool exist( const std::string& location, const bool useRootInTES = true ) const
{
return GaudiCommon<AlgTool>::exist<TYPE>( evtSvc(), location, useRootInTES );
return GaudiCommon<CounterHolder<AlgTool>>::exist<TYPE>( evtSvc(), location, useRootInTES );
}
/** @brief Check the existence of detector objects in the Gaudi
......@@ -565,7 +566,7 @@ public:
template <class TYPE>
inline bool existDet( IDataProviderSvc* svc, const std::string& location ) const
{
return GaudiCommon<AlgTool>::exist<TYPE>( svc, location, false );
return GaudiCommon<CounterHolder<AlgTool>>::exist<TYPE>( svc, location, false );
}
/** @brief Check the existence of detector objects in the Gaudi
......@@ -586,7 +587,7 @@ public:
template <class TYPE>
inline bool existDet( const std::string& location ) const
{
return GaudiCommon<AlgTool>::exist<TYPE>( detSvc(), location, false );
return GaudiCommon<CounterHolder<AlgTool>>::exist<TYPE>( detSvc(), location, false );
}
/** @brief Get the existing data object from Gaudi Event Transient store.
......@@ -619,7 +620,7 @@ public:
inline typename Gaudi::Utils::GetData<TYPE>::return_type
getOrCreate( IDataProviderSvc* svc, const std::string& location, const bool useRootInTES = true ) const
{
return GaudiCommon<AlgTool>::getOrCreate<TYPE, TYPE2>( svc, location, useRootInTES );
return GaudiCommon<CounterHolder<AlgTool>>::getOrCreate<TYPE, TYPE2>( svc, location, useRootInTES );
}
/** @brief Get the existing data object from Gaudi Event Transient store.
......@@ -651,7 +652,7 @@ public:
inline typename Gaudi::Utils::GetData<TYPE>::return_type getOrCreate( const std::string& location,
const bool useRootInTES = true ) const
{
return GaudiCommon<AlgTool>::getOrCreate<TYPE, TYPE2>( evtSvc(), location, useRootInTES );
return GaudiCommon<CounterHolder<AlgTool>>::getOrCreate<TYPE, TYPE2>( evtSvc(), location, useRootInTES );
}
// ==========================================================================
public:
......@@ -682,7 +683,7 @@ public:
inline StatusCode Error( const std::string& msg, const StatusCode st = StatusCode::FAILURE,
const size_t mx = 10 ) const
{
return GaudiCommon<AlgTool>::Error( m_isPublic ? msg + getCurrentAlgName() : msg, st, mx );
return GaudiCommon<CounterHolder<AlgTool>>::Error( m_isPublic ? msg + getCurrentAlgName() : msg, st, mx );
}
/** Print the warning message and return with the given StatusCode.
*
......@@ -710,7 +711,7 @@ public:
inline StatusCode Warning( const std::string& msg, const StatusCode st = StatusCode::FAILURE,
const size_t mx = 10 ) const
{
return GaudiCommon<AlgTool>::Warning( m_isPublic ? msg + getCurrentAlgName() : msg, st, mx );
return GaudiCommon<CounterHolder<AlgTool>>::Warning( m_isPublic ? msg + getCurrentAlgName() : msg, st, mx );
}
/** Print the info message and return with the given StatusCode.
*
......@@ -730,7 +731,7 @@ public:
inline StatusCode Info( const std::string& msg, const StatusCode st = StatusCode::SUCCESS,
const size_t mx = 10 ) const
{
return GaudiCommon<AlgTool>::Info( m_isPublic ? msg + getCurrentAlgName() : msg, st, mx );
return GaudiCommon<CounterHolder<AlgTool>>::Info( m_isPublic ? msg + getCurrentAlgName() : msg, st, mx );
}
// ==========================================================================
public:
......
......@@ -101,13 +101,7 @@ void GaudiCommon<PBASE>::initGaudiCommonConstructor( const IInterface* parent )
// Initialise the common functionality
//=============================================================================
template <class PBASE>
StatusCode GaudiCommon<PBASE>::
#ifdef __ICC
i_gcInitialize
#else
initialize
#endif
()
StatusCode GaudiCommon<PBASE>::initialize()
{
// initialize base class
......@@ -195,18 +189,12 @@ StatusCode GaudiCommon<PBASE>::
// Finalize the common functionality
//=============================================================================
template <class PBASE>
StatusCode GaudiCommon<PBASE>::
#ifdef __ICC
i_gcFinalize
#else
finalize
#endif
()
StatusCode GaudiCommon<PBASE>::finalize()
{
StatusCode sc = StatusCode::SUCCESS;
// print the general information about statistical counters
if ( this->msgLevel( MSG::DEBUG ) || ( statPrint() && !m_counters.empty() ) ) {
if ( this->msgLevel( MSG::DEBUG ) || ( statPrint() && this->nCounters() > 0 ) ) {
// print general statistical counters
printStat( statPrint() ? MSG::ALWAYS : MSG::DEBUG );
}
......@@ -259,7 +247,7 @@ StatusCode GaudiCommon<PBASE>::
}
// clear *ALL* counters explicitly
m_counters.clear(); // delete pointers first
this->clearCounters();
m_countersOwn.clear(); // then delete any owned counters
m_exceptions.clear();
m_infos.clear();
......@@ -516,27 +504,24 @@ long GaudiCommon<PBASE>::printStat( const MSG::Level level ) const
{
// check how many counters think they should be printed or how many
// we anyway want to print
unsigned int nbPrintedCounters = 0;
if ( !m_printEmptyCounters && !this->msgLevel( MSG::DEBUG ) ) {
nbPrintedCounters = std::accumulate(
m_counters.begin(), m_counters.end(), nbPrintedCounters,
[]( unsigned int& sum, const auto& entry ) { return sum + entry.second.get().toBePrinted(); } );
} else {
nbPrintedCounters = m_counters.size();
}
auto countToBePrinted = [&]() {
unsigned n = 0;
this->forEachCounter( [&n]( const std::string&, const auto& counter ) { n += counter.toBePrinted(); } );
return n;
};
auto nbPrintedCounters =
( ( !m_printEmptyCounters && !this->msgLevel( MSG::DEBUG ) ) ? countToBePrinted() : this->nCounters() );
// in case nothing should be printed, let's stop here
if ( nbPrintedCounters == 0 ) {
return 0;
}
if ( nbPrintedCounters == 0 ) return 0;
MsgStream& msg = this->msgStream( level );
msg << "Number of counters : " << nbPrintedCounters << "\n" << m_header.value();
for ( const auto& entry : m_counters ) {
if ( m_printEmptyCounters || this->msgLevel( MSG::DEBUG ) || entry.second.get().toBePrinted() ) {
this->forEachCounter( [&]( const std::string& label, const auto& counter ) {
if ( m_printEmptyCounters || this->msgLevel( MSG::DEBUG ) || counter.toBePrinted() ) {
std::ostringstream ost;
entry.second.get().print( ost, entry.first );
counter.print( ost, label );
msg << "\n" << ost.str();
}
}
} );
//
msg << endmsg;
//
......
......@@ -28,7 +28,7 @@
// ============================================================================
#include "GaudiCommon.icpp"
// ============================================================================
template class GaudiCommon<AlgTool>;
template class GaudiCommon<CounterHolder<AlgTool>>;
// ============================================================================
/** @namespace GaudiToolServices
* Collection of default services names to be used
......@@ -136,7 +136,7 @@ bool GaudiTool::summaryEnabled() // is summary enabled?
// Standard constructor
// ============================================================================
GaudiTool::GaudiTool( const std::string& this_type, const std::string& this_name, const IInterface* parent )
: GaudiCommon<AlgTool>( this_type, this_name, parent ), m_local( this_type + "/" + this_name )
: GaudiCommon<CounterHolder<AlgTool>>( this_type, this_name, parent ), m_local( this_type + "/" + this_name )
{
// make instance counts
GaudiToolLocal::s_InstanceCounter.increment( m_local );
......@@ -151,7 +151,7 @@ GaudiTool::~GaudiTool() { GaudiToolLocal::s_InstanceCounter.decrement( m_local )
StatusCode GaudiTool::initialize()
{
// initialize the base class
const StatusCode sc = GaudiCommon<AlgTool>::initialize();
const StatusCode sc = GaudiCommon<CounterHolder<AlgTool>>::initialize();
if ( sc.isFailure() ) {
return sc;
}
......@@ -179,7 +179,7 @@ StatusCode GaudiTool::finalize()
m_histoSvc.reset();
// finalize the base class
const StatusCode sc = GaudiCommon<AlgTool>::finalize();
const StatusCode sc = GaudiCommon<CounterHolder<AlgTool>>::finalize();
if ( sc.isFailure() ) {
return sc;
}
......
......@@ -42,6 +42,7 @@
* @date 2018-02-13
*/
// ============================================================================
class CounterNewAlg : public Gaudi::Functional::Producer<int()>
{
public:
......@@ -53,12 +54,6 @@ public:
setProperty( "StatPrint", "true" ).ignore();
}
// copy constructor is disabled
CounterNewAlg( const CounterNewAlg& ) = delete;
// assignement operator is disabled
CounterNewAlg& operator=( const CounterNewAlg& ) = delete;
private:
// counters
mutable StatEntity m_assign_counter{this, "assign"};
......@@ -115,7 +110,10 @@ int CounterNewAlg::operator()() const
const int print = (int)executed.flag();
if ( 0 == print % 1000 ) {
info() << " Event number " << print << endmsg;
printStat();
always() << "Number of counters : " << nCounters();
this->forEachCounter(
[&]( const std::string& label, const auto& counter ) { counter.print( this->always() << '\n', label ); } );
always() << endmsg;
info() << " Efficiency (binomial counter: \"eff\"): (" << m_eff_counter.eff() * 100.0 << " +- "
<< m_eff_counter.effErr() * 100.0 << ")%" << endmsg;
}
......
JobOptionsSvc INFO # =======> /home/marco/Devel/LHCb/workspace/Gaudi/GaudiExamples/options/Services.opts
JobOptionsSvc INFO # =======> /project/bfys/graven/master/Gaudi/GaudiExamples/options/Services.opts
JobOptionsSvc INFO # (12,1): AuditorSvc.Auditors = ["ChronoAuditor"]
JobOptionsSvc INFO # =======> /home/marco/Devel/LHCb/workspace/Gaudi/GaudiExamples/options/Common.opts
JobOptionsSvc INFO # =======> /project/bfys/graven/master/Gaudi/GaudiExamples/options/Common.opts
JobOptionsSvc INFO # (9,1): ApplicationMgr.StatusCodeCheck = 1
JobOptionsSvc INFO # =======> /home/marco/Devel/LHCb/workspace/Gaudi/GaudiExamples/options/AlgTools.opts
JobOptionsSvc INFO # =======> /project/bfys/graven/master/Gaudi/GaudiExamples/options/AlgTools.opts
JobOptionsSvc INFO # (9,1): ApplicationMgr.TopAlg = ["MyAlgorithm/MyAlg"]
JobOptionsSvc INFO # (12,1): MessageSvc.OutputLevel = 3
JobOptionsSvc INFO # (17,1): ApplicationMgr.EvtMax = 10
......@@ -23,11 +23,11 @@ JobOptionsSvc INFO # (43,1): ToolSvc.ToolA.Tools = ["TestTool/ToolB"]
JobOptionsSvc INFO # (44,1): ToolSvc.ToolB.Tools = ["TestTool/ToolA"]
JobOptionsSvc INFO # (45,1): ToolSvc.ToolA.OutputLevel = 2
JobOptionsSvc INFO # (46,1): ToolSvc.ToolB.OutputLevel = 2
JobOptionsSvc INFO Job options successfully read in from /home/marco/Devel/LHCb/workspace/Gaudi/GaudiExamples/options/AlgTools.opts
JobOptionsSvc INFO Job options successfully read in from /project/bfys/graven/master/Gaudi/GaudiExamples/options/AlgTools.opts
ApplicationMgr SUCCESS
====================================================================================================================================
Welcome to ApplicationMgr (GaudiCoreSvc v4r1)
running on pcphlbc16 on Sat Jun 25 00:28:19 2016
Welcome to ApplicationMgr (GaudiCoreSvc v30r5)
running on stbc-i5.nikhef.nl on Sun Jan 27 20:46:48 2019
====================================================================================================================================
ApplicationMgr INFO Application Manager Configured successfully
StatusCodeSvc INFO initialize
......@@ -60,9 +60,9 @@ MyAlg.ToolWithName INFO Bool = 1
MyAlg INFO ....initialization done
ToolSvc.ToolA DEBUG Property update for OutputLevel : new value = 2
ToolSvc.ToolA DEBUG Initialize
ToolSvc.ToolA DEBUG Initialize base class GaudiCommon<AlgTool>
ToolSvc.ToolA DEBUG Initialize base class GaudiCommon<CounterHolder<AlgTool>>
ToolSvc.ToolA DEBUG could not locate CounterSummarySvc, no counter summary will be made
ToolSvc.ToolA DEBUG List of ALL properties of TestTool/ToolSvc.ToolA #properties = 24
ToolSvc.ToolA DEBUG List of ALL properties of TestTool/ToolSvc.ToolA #properties = 26
ToolSvc.ToolA DEBUG Property ['Name': Value] = 'Tools':[ 'TestTool/ToolB' ]
ToolSvc.ToolA DEBUG Property ['Name': Value] = 'ContextService':AlgContextSvc
ToolSvc.ToolA DEBUG Property ['Name': Value] = 'StatEntityList':[ ]
......@@ -78,22 +78,23 @@ ToolSvc.ToolA DEBUG Property ['Name': Value] = 'PrintEmptyCounters':False
ToolSvc.ToolA DEBUG Property ['Name': Value] = 'StatPrint':True
ToolSvc.ToolA DEBUG Property ['Name': Value] = 'PropertiesPrint':False
ToolSvc.ToolA DEBUG Property ['Name': Value] = 'ErrorsPrint':True
ToolSvc.ToolA DEBUG Property ['Name': Value] = 'ExtraOutputs':[]
ToolSvc.ToolA DEBUG Property ['Name': Value] = 'ExtraInputs':[]
ToolSvc.ToolA DEBUG Property ['Name': Value] = 'AuditRestart':False
ToolSvc.ToolA DEBUG Property ['Name': Value] = 'AuditReinitialize':False
ToolSvc.ToolA DEBUG Property ['Name': Value] = 'AuditFinalize':False
ToolSvc.ToolA DEBUG Property ['Name': Value] = 'AuditStop':False
ToolSvc.ToolA DEBUG Property ['Name': Value] = 'AuditStart':False
ToolSvc.ToolA DEBUG Property ['Name': Value] = 'AuditInitialize':False
ToolSvc.ToolA DEBUG Property ['Name': Value] = 'AuditTools':False
ToolSvc.ToolA DEBUG Property ['Name': Value] = 'MonitorService':MonitorSvc
ToolSvc.ToolA DEBUG Property ['Name': Value] = 'OutputLevel':2
ToolSvc.ToolA DEBUG Property ['Name': Value] = 'ExtraOutputs':[]
ToolSvc.ToolA DEBUG Property ['Name': Value] = 'ExtraInputs':[]
ToolSvc.ToolA DEBUG Loading tool ToolB of type TestTool
ToolSvc.ToolB DEBUG Property update for OutputLevel : new value = 2
ToolSvc.ToolB DEBUG Initialize
ToolSvc.ToolB DEBUG Initialize base class GaudiCommon<AlgTool>
ToolSvc.ToolB DEBUG Initialize base class GaudiCommon<CounterHolder<AlgTool>>
ToolSvc.ToolB DEBUG could not locate CounterSummarySvc, no counter summary will be made
ToolSvc.ToolB DEBUG List of ALL properties of TestTool/ToolSvc.ToolB #properties = 24
ToolSvc.ToolB DEBUG List of ALL properties of TestTool/ToolSvc.ToolB #properties = 26
ToolSvc.ToolB DEBUG Property ['Name': Value] = 'Tools':[ 'TestTool/ToolA' ]
ToolSvc.ToolB DEBUG Property ['Name': Value] = 'ContextService':AlgContextSvc
ToolSvc.ToolB DEBUG Property ['Name': Value] = 'StatEntityList':[ ]
......@@ -109,16 +110,17 @@ ToolSvc.ToolB DEBUG Property ['Name': Value] = 'PrintEmptyCounters':False
ToolSvc.ToolB DEBUG Property ['Name': Value] = 'StatPrint':True
ToolSvc.ToolB DEBUG Property ['Name': Value] = 'PropertiesPrint':False
ToolSvc.ToolB DEBUG Property ['Name': Value] = 'ErrorsPrint':True
ToolSvc.ToolB DEBUG Property ['Name': Value] = 'ExtraOutputs':[]
ToolSvc.ToolB DEBUG Property ['Name': Value] = 'ExtraInputs':[]
ToolSvc.ToolB DEBUG Property ['Name': Value] = 'AuditRestart':False
ToolSvc.ToolB DEBUG Property ['Name': Value] = 'AuditReinitialize':False
ToolSvc.ToolB DEBUG Property ['Name': Value] = 'AuditFinalize':False
ToolSvc.ToolB DEBUG Property ['Name': Value] = 'AuditStop':False
ToolSvc.ToolB DEBUG Property ['Name': Value] = 'AuditStart':False
ToolSvc.ToolB DEBUG Property ['Name': Value] = 'AuditInitialize':False
ToolSvc.ToolB DEBUG Property ['Name': Value] = 'AuditTools':False
ToolSvc.ToolB DEBUG Property ['Name': Value] = 'MonitorService':MonitorSvc
ToolSvc.ToolB DEBUG Property ['Name': Value] = 'OutputLevel':2
ToolSvc.ToolB DEBUG Property ['Name': Value] = 'ExtraOutputs':[]
ToolSvc.ToolB DEBUG Property ['Name': Value] = 'ExtraInputs':[]
ToolSvc.ToolB DEBUG Loading tool ToolA of type TestTool
ToolSvc.ToolB DEBUG Registering tool ToolSvc.ToolA
ToolSvc.ToolA DEBUG Registering tool ToolSvc.ToolB
......
JobOptionsSvc INFO # =======> /bld2/leggett/work/ToolRetrieveError/gaudi/gsrc/GaudiExamples/options/Services.opts
JobOptionsSvc INFO # =======> /project/bfys/graven/master/Gaudi/GaudiExamples/options/Services.opts
JobOptionsSvc INFO # (12,1): AuditorSvc.Auditors = ["ChronoAuditor"]
JobOptionsSvc INFO # =======> /bld2/leggett/work/ToolRetrieveError/gaudi/gsrc/GaudiExamples/options/Common.opts
JobOptionsSvc INFO # =======> /project/bfys/graven/master/Gaudi/GaudiExamples/options/Common.opts
JobOptionsSvc INFO # (9,1): ApplicationMgr.StatusCodeCheck = 1
JobOptionsSvc INFO # =======> /bld2/leggett/work/ToolRetrieveError/gaudi/gsrc/GaudiExamples/options/AlgTools2.opts
JobOptionsSvc INFO # =======> /project/bfys/graven/master/Gaudi/GaudiExamples/options/AlgTools2.opts
JobOptionsSvc INFO # (10,1): ApplicationMgr.TopAlg = ["MyGaudiAlgorithm/MyAlg"]
JobOptionsSvc INFO # (13,1): MessageSvc.OutputLevel = 3
JobOptionsSvc INFO # (18,1): ApplicationMgr.EvtMax = 10
......@@ -24,18 +24,18 @@ JobOptionsSvc INFO # (46,1): ToolSvc.ToolA.Tools = ["TestTool/ToolB"]
JobOptionsSvc INFO # (47,1): ToolSvc.ToolB.Tools = ["TestTool/ToolA"]
JobOptionsSvc INFO # (48,1): ToolSvc.ToolA.OutputLevel = 2
JobOptionsSvc INFO # (49,1): ToolSvc.ToolB.OutputLevel = 2
JobOptionsSvc INFO Job options successfully read in from /bld2/leggett/work/ToolRetrieveError/gaudi/gsrc/GaudiExamples/options/AlgTools2.opts
JobOptionsSvc INFO Job options successfully read in from /project/bfys/graven/master/Gaudi/GaudiExamples/options/AlgTools2.opts
ApplicationMgr SUCCESS
====================================================================================================================================
Welcome to ApplicationMgr (GaudiCoreSvc v30r1)
running on zeus on Mon Jan 29 11:30:04 2018
Welcome to ApplicationMgr (GaudiCoreSvc v30r5)
running on stbc-i5.nikhef.nl on Sun Jan 27 20:46:48 2019
====================================================================================================================================
ApplicationMgr INFO Application Manager Configured successfully
StatusCodeSvc INFO initialize
MyAlg DEBUG Property update for OutputLevel : new value = 2
MyAlg DEBUG Initialize base class GaudiCommon<Algorithm>
MyAlg DEBUG could not locate CounterSummarySvc, no counter summary will be made
MyAlg DEBUG List of ALL properties of MyGaudiAlgorithm/MyAlg #properties = 49
MyAlg DEBUG List of ALL properties of MyGaudiAlgorithm/MyAlg #properties = 50
MyAlg DEBUG Property ['Name': Value] = 'UndefinedToolHandle':
MyAlg DEBUG Property ['Name': Value] = 'LegacyToolHandle':MyTool/LegacyToolHandle
MyAlg DEBUG Property ['Name': Value] = 'trackSelection':/Event/MyAnalysis/Tracks
......@@ -107,9 +107,9 @@ ToolSvc.MyGaudi... INFO String = hundred
ToolSvc.MyGaudi... INFO Bool = 1
MyAlg DEBUG Registering tool ToolSvc.MyGaudiTool
MyAlg.MyGaudiTool DEBUG Property update for OutputLevel : new value = 2
MyAlg.MyGaudiTool DEBUG Initialize base class GaudiCommon<AlgTool>
MyAlg.MyGaudiTool DEBUG Initialize base class GaudiCommon<CounterHolder<AlgTool>>
MyAlg.MyGaudiTool DEBUG could not locate CounterSummarySvc, no counter summary will be made
MyAlg.MyGaudiTool DEBUG List of ALL properties of MyGaudiTool/MyAlg.MyGaudiTool #properties = 28
MyAlg.MyGaudiTool DEBUG List of ALL properties of MyGaudiTool/MyAlg.MyGaudiTool #properties = 29
MyAlg.MyGaudiTool DEBUG Property ['Name': Value] = 'Bool':True
MyAlg.MyGaudiTool DEBUG Property ['Name': Value] = 'String':hundred
MyAlg.MyGaudiTool DEBUG Property ['Name': Value] = 'Double':100.00000
......@@ -202,9 +202,9 @@ MyAlg DEBUG Data Deps for MyAlg
+ OUTPUT '/Event/MyAnalysis/Tracks'
ToolSvc.ToolA DEBUG Property update for OutputLevel : new value = 2
ToolSvc.ToolA DEBUG Initialize
ToolSvc.ToolA DEBUG Initialize base class GaudiCommon<AlgTool>
ToolSvc.ToolA DEBUG Initialize base class GaudiCommon<CounterHolder<AlgTool>>
ToolSvc.ToolA DEBUG could not locate CounterSummarySvc, no counter summary will be made
ToolSvc.ToolA DEBUG List of ALL properties of TestTool/ToolSvc.ToolA #properties = 25
ToolSvc.ToolA DEBUG List of ALL properties of TestTool/ToolSvc.ToolA #properties = 26
ToolSvc.ToolA DEBUG Property ['Name': Value] = 'Tools':[ 'TestTool/ToolB' ]
ToolSvc.ToolA DEBUG Property ['Name': Value] = 'ContextService':AlgContextSvc
ToolSvc.ToolA DEBUG Property ['Name': Value] = 'StatEntityList':[ ]
......@@ -234,9 +234,9 @@ ToolSvc.ToolA DEBUG Property ['Name': Value] = 'ExtraInputs':[]
ToolSvc.ToolA DEBUG Loading tool ToolB of type TestTool
ToolSvc.ToolB DEBUG Property update for OutputLevel : new value = 2
ToolSvc.ToolB DEBUG Initialize
ToolSvc.ToolB DEBUG Initialize base class GaudiCommon<AlgTool>
ToolSvc.ToolB DEBUG Initialize base class GaudiCommon<CounterHolder<AlgTool>>
ToolSvc.ToolB DEBUG could not locate CounterSummarySvc, no counter summary will be made
ToolSvc.ToolB DEBUG List of ALL properties of TestTool/ToolSvc.ToolB #properties = 25
ToolSvc.ToolB DEBUG List of ALL properties of TestTool/ToolSvc.ToolB #properties = 26
ToolSvc.ToolB DEBUG Property ['Name': Value] = 'Tools':[ 'TestTool/ToolA' ]
ToolSvc.ToolB DEBUG Property ['Name': Value] = 'ContextService':AlgContextSvc
ToolSvc.ToolB DEBUG Property ['Name': Value] = 'StatEntityList':[ ]
......
# setting LC_ALL to "C"
# --> Including file '/bld2/leggett/work/ToolRetrieveError/gaudi/gsrc/GaudiExamples/options/AlgTools.py'
# <-- End of file '/bld2/leggett/work/ToolRetrieveError/gaudi/gsrc/GaudiExamples/options/AlgTools.py'
# --> Including file '/project/bfys/graven/master/Gaudi/GaudiExamples/options/AlgTools.py'
# <-- End of file '/project/bfys/graven/master/Gaudi/GaudiExamples/options/AlgTools.py'
# applying configuration of GaudiExamplesCommonConf
# /***** User GaudiExamplesCommonConf/GaudiExamplesCommonConf ****************************************
# |-OutputLevel = 3
......@@ -8,8 +8,8 @@
# \----- (End of User GaudiExamplesCommonConf/GaudiExamplesCommonConf) -------------------------------
ApplicationMgr SUCCESS
====================================================================================================================================
Welcome to ApplicationMgr (GaudiCoreSvc v30r1)
running on zeus on Mon Jan 29 11:30:05 2018
Welcome to ApplicationMgr (GaudiCoreSvc v30r5)
running on stbc-i5.nikhef.nl on Tue Jan 29 00:40:45 2019
====================================================================================================================================
ApplicationMgr INFO Application Manager Configured successfully
StatusCodeSvc INFO initialize
......@@ -89,9 +89,9 @@ MyGaudiAlg.Lega... INFO String = hundred
MyGaudiAlg.Lega... INFO Bool = 1
ToolSvc.ToolA DEBUG Property update for OutputLevel : new value = 2
ToolSvc.ToolA DEBUG Initialize
ToolSvc.ToolA DEBUG Initialize base class GaudiCommon<AlgTool>
ToolSvc.ToolA DEBUG Initialize base class GaudiCommon<CounterHolder<AlgTool>>
ToolSvc.ToolA DEBUG could not locate CounterSummarySvc, no counter summary will be made
ToolSvc.ToolA DEBUG List of ALL properties of TestTool/ToolSvc.ToolA #properties = 25
ToolSvc.ToolA DEBUG List of ALL properties of TestTool/ToolSvc.ToolA #properties = 26
ToolSvc.ToolA DEBUG Property ['Name': Value] = 'Tools':[ 'TestTool/ToolB' ]
ToolSvc.ToolA DEBUG Property ['Name': Value] = 'ContextService':AlgContextSvc
ToolSvc.ToolA DEBUG Property ['Name': Value] = 'StatEntityList':[ ]
......@@ -121,9 +121,9 @@ ToolSvc.ToolA DEBUG Property ['Name': Value] = 'ExtraInputs':[]
ToolSvc.ToolA DEBUG Loading tool ToolB of type TestTool
ToolSvc.ToolB DEBUG Property update for OutputLevel : new value = 2
ToolSvc.ToolB DEBUG Initialize
ToolSvc.ToolB DEBUG Initialize base class GaudiCommon<AlgTool>
ToolSvc.ToolB DEBUG Initialize base class GaudiCommon<CounterHolder<AlgTool>>
ToolSvc.ToolB DEBUG could not locate CounterSummarySvc, no counter summary will be made
ToolSvc.ToolB DEBUG List of ALL properties of TestTool/ToolSvc.ToolB #properties = 25
ToolSvc.ToolB DEBUG List of ALL properties of TestTool/ToolSvc.ToolB #properties = 26
ToolSvc.ToolB DEBUG Property ['Name': Value] = 'Tools':[ 'TestTool/ToolA' ]
ToolSvc.ToolB DEBUG Property ['Name': Value] = 'ContextService':AlgContextSvc
ToolSvc.ToolB DEBUG Property ['Name': Value] = 'StatEntityList':[ ]
......
......@@ -15,6 +15,7 @@
// Extra include files (forward declarations should be sufficient)
#include "GaudiKernel/CommonMessaging.h"