ATLAS Offline Software
Public Member Functions | Private Member Functions | Private Attributes | List of all members
TrigCostAuditor Class Reference

Gaudi Auditor implementation to hook algorithm executions and notify the Trigger Cost Service. More...

#include <TrigCostAuditor.h>

Inheritance diagram for TrigCostAuditor:
Collaboration diagram for TrigCostAuditor:

Public Member Functions

 TrigCostAuditor (const std::string &name, ISvcLocator *svcloc)
 < Inherit CustomEventType as a noop More...
 
virtual StatusCode initialize () override
 Initialise auditor. More...
 
virtual StatusCode finalize () override
 Does nothing. More...
 
virtual void before (StandardEventType evt, const std::string &caller) override
 Audit before an algorithm standard event type is called. More...
 
virtual void after (StandardEventType evt, const std::string &, const StatusCode &sc) override
 Audit after an algorithm standard event type is called. More...
 
virtual void before (StandardEventType evt, INamedInterface *caller) override
 Redirects to the const std::string& interface. More...
 
virtual void after (StandardEventType evt, INamedInterface *caller, const StatusCode &sc) override
 Redirects to the const std::string& interface. More...
 
bool msgLvl (const MSG::Level lvl) const
 Test the output level. More...
 
MsgStream & msg () const
 The standard message stream. More...
 
MsgStream & msg (const MSG::Level lvl) const
 The standard message stream. More...
 
void setLevel (MSG::Level lvl)
 Change the current logging level. More...
 

Private Member Functions

void callService (const std::string &caller, ITrigCostSvc::AuditType type)
 Performs internal call to the trigger cost service. More...
 
MsgStream & msg () const
 The standard message stream. More...
 
MsgStream & msg (const MSG::Level lvl) const
 The standard message stream. More...
 
void initMessaging () const
 Initialize our message level and MessageSvc. More...
 

Private Attributes

ServiceHandle< ITrigCostSvcm_trigCostSvcHandle
 
std::string m_nm
 Message source name. More...
 
boost::thread_specific_ptr< MsgStream > m_msg_tls
 MsgStream instance (a std::cout like with print-out levels) More...
 
std::atomic< IMessageSvc * > m_imsg { nullptr }
 MessageSvc pointer. More...
 
std::atomic< MSG::Level > m_lvl { MSG::NIL }
 Current logging level. More...
 
std::atomic_flag m_initialized ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
 Messaging initialized (initMessaging) More...
 

Detailed Description

Gaudi Auditor implementation to hook algorithm executions and notify the Trigger Cost Service.

Only monitors the Execute event type from the available StandardEventTypes: {Initialize, ReInitialize, Execute, BeginRun, EndRun, Finalize, Start, Stop, ReStart}

Definition at line 22 of file TrigCostAuditor.h.

Constructor & Destructor Documentation

◆ TrigCostAuditor()

TrigCostAuditor::TrigCostAuditor ( const std::string &  name,
ISvcLocator *  svcloc 
)

< Inherit CustomEventType as a noop

Standard Gaudi Auditor constructor

Parameters
[in]nameThe algorithm object's name
[in]svclocA pointer to a service location service

Definition at line 13 of file TrigCostAuditor.cxx.

13  :
14 Auditor(name, pSvcLocator),
16 {
17  ATH_MSG_DEBUG("TrigCostAuditor constructor");
18 }

Member Function Documentation

◆ after() [1/2]

void TrigCostAuditor::after ( StandardEventType  evt,
const std::string &  caller,
const StatusCode &  sc 
)
overridevirtual

Audit after an algorithm standard event type is called.

Parameters
[in]evtThe event type. Only Execute is monitored
[in]callerThe name of the calling algorithm

Definition at line 46 of file TrigCostAuditor.cxx.

46  {
47  if (evt != StandardEventType::Execute) return; // I only care for execution time
48  ATH_MSG_DEBUG("After Execute: " << caller << " " << sc);
49  callService(caller, ITrigCostSvc::AuditType::After);
50 }

◆ after() [2/2]

void TrigCostAuditor::after ( StandardEventType  evt,
INamedInterface *  caller,
const StatusCode &  sc 
)
inlineoverridevirtual

Redirects to the const std::string& interface.

Definition at line 92 of file TrigCostAuditor.h.

92  {
93  return this->after(evt, caller->name(), sc);
94 }

◆ before() [1/2]

void TrigCostAuditor::before ( StandardEventType  evt,
const std::string &  caller 
)
overridevirtual

Audit before an algorithm standard event type is called.

Parameters
[in]evtThe event type. Only Execute is monitored
[in]callerThe name of the calling algorithm

Definition at line 37 of file TrigCostAuditor.cxx.

37  {
38  if (evt != StandardEventType::Execute) return; // I only care for execution time
39  ATH_MSG_DEBUG("Before Execute: " << caller);
40  callService(caller, ITrigCostSvc::AuditType::Before);
41 
42 }

◆ before() [2/2]

void TrigCostAuditor::before ( StandardEventType  evt,
INamedInterface *  caller 
)
inlineoverridevirtual

Redirects to the const std::string& interface.

Definition at line 88 of file TrigCostAuditor.h.

88  {
89  return this->before(evt, caller->name());
90 }

◆ callService()

void TrigCostAuditor::callService ( const std::string &  caller,
ITrigCostSvc::AuditType  type 
)
private

Performs internal call to the trigger cost service.

Parameters
[in]callerName of algorithm being audited
[in]typeAuditType::Before or AuditType::After depending on if the start or stop of execution

Definition at line 54 of file TrigCostAuditor.cxx.

54  {
55  // Note: Using ThreadLocalContext.h, better would be for the auditor to be told the Context
56  if (m_trigCostSvcHandle->processAlg(Gaudi::Hive::currentContext(), caller, type).isFailure()) {
57  ATH_MSG_FATAL("Error in TrigCostSvc called by TrigCostAuditor, auditing algorithm: " << caller);
58  throw std::runtime_error("TrigCostAuditor exception");
59  }
60 }

◆ finalize()

StatusCode TrigCostAuditor::finalize ( )
overridevirtual

Does nothing.

Returns
Success

Definition at line 30 of file TrigCostAuditor.cxx.

30  {
31  ATH_MSG_DEBUG("TrigCostAuditor finalize()");
32  return StatusCode::SUCCESS;
33 }

◆ initialize()

StatusCode TrigCostAuditor::initialize ( )
overridevirtual

Initialise auditor.

Return handle to Trigger Cost Service

Returns
Success if service handle obtained

Definition at line 22 of file TrigCostAuditor.cxx.

22  {
23  ATH_MSG_DEBUG("TrigCostAuditor initialize()");
24  ATH_CHECK( m_trigCostSvcHandle.retrieve() );
25  return StatusCode::SUCCESS;
26 }

◆ initMessaging()

void AthMessaging::initMessaging ( ) const
privateinherited

Initialize our message level and MessageSvc.

This method should only be called once.

Definition at line 39 of file AthMessaging.cxx.

40 {
42  m_lvl = m_imsg ?
43  static_cast<MSG::Level>( m_imsg.load()->outputLevel(m_nm) ) :
44  MSG::INFO;
45 }

◆ msg() [1/4]

MsgStream & AthMessaging::msg
inlineprivate

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 92 of file AthMessaging.h.

165 {
166  MsgStream* ms = m_msg_tls.get();
167  if (!ms) {
168  if (!m_initialized.test_and_set()) initMessaging();
169  ms = new MsgStream(m_imsg,m_nm);
170  m_msg_tls.reset( ms );
171  }
172 
173  ms->setLevel (m_lvl);
174  return *ms;
175 }

◆ msg() [2/4]

MsgStream & AthMessaging::msg ( ) const
inlineinherited

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 164 of file AthMessaging.h.

165 {
166  MsgStream* ms = m_msg_tls.get();
167  if (!ms) {
168  if (!m_initialized.test_and_set()) initMessaging();
169  ms = new MsgStream(m_imsg,m_nm);
170  m_msg_tls.reset( ms );
171  }
172 
173  ms->setLevel (m_lvl);
174  return *ms;
175 }

◆ msg() [3/4]

MsgStream & AthMessaging::msg
inlineprivate

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 99 of file AthMessaging.h.

180 { return msg() << lvl; }

◆ msg() [4/4]

MsgStream & AthMessaging::msg ( const MSG::Level  lvl) const
inlineinherited

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 179 of file AthMessaging.h.

180 { return msg() << lvl; }

◆ msgLvl()

bool AthMessaging::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Test the output level.

Parameters
lvlThe message level to test against
Returns
boolean Indicating if messages at given level will be printed
Return values
trueMessages at level "lvl" will be printed

Definition at line 151 of file AthMessaging.h.

152 {
153  if (!m_initialized.test_and_set()) initMessaging();
154  if (m_lvl <= lvl) {
155  msg() << lvl;
156  return true;
157  } else {
158  return false;
159  }
160 }

◆ setLevel()

void AthMessaging::setLevel ( MSG::Level  lvl)
inherited

Change the current logging level.

Use this rather than msg().setLevel() for proper operation with MT.

Definition at line 28 of file AthMessaging.cxx.

29 {
30  m_lvl = lvl;
31 }

Member Data Documentation

◆ ATLAS_THREAD_SAFE

std::atomic_flag m_initialized AthMessaging::ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
mutableprivateinherited

Messaging initialized (initMessaging)

Definition at line 141 of file AthMessaging.h.

◆ m_imsg

std::atomic<IMessageSvc*> AthMessaging::m_imsg { nullptr }
mutableprivateinherited

MessageSvc pointer.

Definition at line 135 of file AthMessaging.h.

◆ m_lvl

std::atomic<MSG::Level> AthMessaging::m_lvl { MSG::NIL }
mutableprivateinherited

Current logging level.

Definition at line 138 of file AthMessaging.h.

◆ m_msg_tls

boost::thread_specific_ptr<MsgStream> AthMessaging::m_msg_tls
mutableprivateinherited

MsgStream instance (a std::cout like with print-out levels)

Definition at line 132 of file AthMessaging.h.

◆ m_nm

std::string AthMessaging::m_nm
privateinherited

Message source name.

Definition at line 129 of file AthMessaging.h.

◆ m_trigCostSvcHandle

ServiceHandle<ITrigCostSvc> TrigCostAuditor::m_trigCostSvcHandle
private
Initial value:
{ this, "TrigCostSvc", "TrigCostSvc",
"The trigger cost service to pass audit information to" }

Definition at line 83 of file TrigCostAuditor.h.


The documentation for this class was generated from the following files:
AthMessaging::m_lvl
std::atomic< MSG::Level > m_lvl
Current logging level.
Definition: AthMessaging.h:138
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
TrigCostAuditor::callService
void callService(const std::string &caller, ITrigCostSvc::AuditType type)
Performs internal call to the trigger cost service.
Definition: TrigCostAuditor.cxx:54
LArG4FSStartPointFilter.evt
evt
Definition: LArG4FSStartPointFilter.py:42
AthMessaging::m_imsg
std::atomic< IMessageSvc * > m_imsg
MessageSvc pointer.
Definition: AthMessaging.h:135
python.SystemOfUnits.ms
int ms
Definition: SystemOfUnits.py:132
Athena::getMessageSvc
IMessageSvc * getMessageSvc(bool quiet=false)
Definition: getMessageSvc.cxx:20
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
TrigCostAuditor::before
virtual void before(StandardEventType evt, const std::string &caller) override
Audit before an algorithm standard event type is called.
Definition: TrigCostAuditor.cxx:37
LArPulseShapeRunConfig.Execute
Execute
Definition: LArPulseShapeRunConfig.py:62
AthMessaging::AthMessaging
AthMessaging()
Default constructor:
TrigConf::MSGTC::Level
Level
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:21
StdJOSetup.msgSvc
msgSvc
Provide convenience handles for various services.
Definition: StdJOSetup.py:36
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
TrigCostAuditor::m_trigCostSvcHandle
ServiceHandle< ITrigCostSvc > m_trigCostSvcHandle
Definition: TrigCostAuditor.h:83
AthMessaging::msg
MsgStream & msg() const
The standard message stream.
Definition: AthMessaging.h:164
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
AthMessaging::m_nm
std::string m_nm
Message source name.
Definition: AthMessaging.h:129
AthMessaging::initMessaging
void initMessaging() const
Initialize our message level and MessageSvc.
Definition: AthMessaging.cxx:39
AthMessaging::m_msg_tls
boost::thread_specific_ptr< MsgStream > m_msg_tls
MsgStream instance (a std::cout like with print-out levels)
Definition: AthMessaging.h:132
TrigCostAuditor::after
virtual void after(StandardEventType evt, const std::string &, const StatusCode &sc) override
Audit after an algorithm standard event type is called.
Definition: TrigCostAuditor.cxx:46