| The Gaudi Framework v32r1 (f65d50dc)

Public Member Functions | Private Member Functions | Private Attributes | List of all members
Gaudi::Utils::AlgContext Class Referencefinal

Helper "sentry" class to automatize the safe register/unregister the algorithm's context. More...

`#include <GaudiKernel/IAlgContextSvc.h>`

Collaboration diagram for Gaudi::Utils::AlgContext:
[legend]

## Public Member Functions
| AlgContext (IAlgorithm *alg, IAlgContextSvc *svc, const EventContext &context)
| constructor from the service and the algorithm Internally invokes IAlgContextSvc::setCurrentAlg More...
| AlgContext (IAlgorithm *alg, IAlgContextSvc *svc)
| constructor from the service and the algorithm (single thread case) Internally invokes IAlgContextSvc::setCurrentAlg More...
| AlgContext (IAlgorithm *alg, IAlgContextSvc *svc, EventContext &&context)=delete
| Prevent use of temporary EventContext as current context. More...
| ~AlgContext ()
| destructor Internally invokes IAlgContextSvc::unSetCurrentAlg More...

## Private Member Functions
| AlgContext (const AlgContext &right)=delete
AlgContext & | operator= (const AlgContext &right)=delete

## Private Attributes
SmartIF< IAlgContextSvc > | m_svc
SmartIF< IAlgorithm > | m_alg
const EventContext & | m_context

## Detailed Description

Helper "sentry" class to automatize the safe register/unregister the algorithm's context.

Typical explicit usage:

StatusCode MyAlg::execute()
{
IAlgContextSvc* acs = ... ;
// define the context
Gaudi::Utils::AlgContext sentry ( this , acs ) ;
...
return StatusCode::SUCCESS ;
}

Note: for the regular job the context is properly defined with the help of corresponding auditor AlgContextAuditor. This helper class is needed only if one needs to ensure that the algorithm must register its context independently on job/auditor configuration

See also
  AlgContextAuditor

Author
  Vanya BELYAEV ibely.nosp@m.aev@.nosp@m.phys..nosp@m.syr..nosp@m.edu

Date
  2007-03-07

Definition at line 74 of file IAlgContextSvc.h.

## Constructor & Destructor Documentation

## ◆ AlgContext() [1/4]

Gaudi::Utils::AlgContext::AlgContext | ( | IAlgorithm * | alg,
|  | IAlgContextSvc * | svc,
|  | const EventContext & | context
| ) |  |

constructor from the service and the algorithm Internally invokes IAlgContextSvc::setCurrentAlg

See also
  IAlgorithm
  IAlgContextSvc

Parameters

  alg | pointer to the current algorithm
  svc | pointer to algorithm context service
  context | current event context

Definition at line 16 of file AlgContext.cpp.

17 : m_svc( svc ), m_alg( alg ), m_context( context ) {
18 if ( m_svc && m_alg ) { m_svc->setCurrentAlg( m_alg.get(), m_context ).ignore(); }
19 }
ManySmallAlgs.alg
alg
Definition: ManySmallAlgs.py:69
Gaudi::Utils::AlgContext::m_context
const EventContext & m_context
Definition: IAlgContextSvc.h:115
SmartIF::get
TYPE * get() const
Get interface pointer.
Definition: SmartIF.h:76
Gaudi::Utils::AlgContext::m_svc
SmartIF< IAlgContextSvc > m_svc
Definition: IAlgContextSvc.h:113
IAlgContextSvc::setCurrentAlg
virtual StatusCode setCurrentAlg(IAlgorithm *a, const EventContext &context)=0
set the currently executing algorithm ("push_back")
Gaudi::Utils::AlgContext::m_alg
SmartIF< IAlgorithm > m_alg
Definition: IAlgContextSvc.h:114

## ◆ AlgContext() [2/4]

Gaudi::Utils::AlgContext::AlgContext | ( | IAlgorithm * | alg,
|  | IAlgContextSvc * | svc
| ) |  |

constructor from the service and the algorithm (single thread case) Internally invokes IAlgContextSvc::setCurrentAlg

See also
  IAlgorithm
  IAlgContextSvc

Parameters

  alg | pointer to the current algorithm
  svc | pointer to algorithm context service

Definition at line 21 of file AlgContext.cpp.

22 : AlgContext( alg, svc, s_dummyDefaultCtx ) {}
ManySmallAlgs.alg
alg
Definition: ManySmallAlgs.py:69
Gaudi::Utils::AlgContext::AlgContext
AlgContext(IAlgorithm *alg, IAlgContextSvc *svc, const EventContext &context)
constructor from the service and the algorithm Internally invokes IAlgContextSvc::setCurrentAlg
Definition: AlgContext.cpp:16

## ◆ AlgContext() [3/4]

Gaudi::Utils::AlgContext::AlgContext | ( | IAlgorithm * | alg,
|  | IAlgContextSvc * | svc,
|  | EventContext && | context
| ) |  |
| delete

Prevent use of temporary EventContext as current context.

See also
  gaudi/Gaudi#73

## ◆ ~AlgContext()

Gaudi::Utils::AlgContext::~AlgContext | ( |  | ) |

destructor Internally invokes IAlgContextSvc::unSetCurrentAlg

See also
  IAlgorithm
  IAlgContextSvc

Definition at line 24 of file AlgContext.cpp.

24 {
25 if ( m_svc && m_alg ) { m_svc->unSetCurrentAlg( m_alg.get(), m_context ).ignore(); }
26 }
Gaudi::Utils::AlgContext::m_context
const EventContext & m_context
Definition: IAlgContextSvc.h:115
SmartIF::get
TYPE * get() const
Get interface pointer.
Definition: SmartIF.h:76
IAlgContextSvc::unSetCurrentAlg
virtual StatusCode unSetCurrentAlg(IAlgorithm *a, const EventContext &context)=0
remove the algorithm ("pop_back")
Gaudi::Utils::AlgContext::m_svc
SmartIF< IAlgContextSvc > m_svc
Definition: IAlgContextSvc.h:113
Gaudi::Utils::AlgContext::m_alg
SmartIF< IAlgorithm > m_alg
Definition: IAlgContextSvc.h:114

## ◆ AlgContext() [4/4]

Gaudi::Utils::AlgContext::AlgContext | ( | const AlgContext & | right | ) |
| private delete

## Member Function Documentation

## ◆ operator=()

AlgContext& Gaudi::Utils::AlgContext::operator= | ( | const AlgContext & | right | ) |
| private delete

## Member Data Documentation

## ◆ m_alg

SmartIF<IAlgorithm> Gaudi::Utils::AlgContext::m_alg
| private

Definition at line 114 of file IAlgContextSvc.h.

## ◆ m_context

const EventContext& Gaudi::Utils::AlgContext::m_context
| private

Definition at line 115 of file IAlgContextSvc.h.

## ◆ m_svc

SmartIF<IAlgContextSvc> Gaudi::Utils::AlgContext::m_svc
| private

Definition at line 113 of file IAlgContextSvc.h.

The documentation for this class was generated from the following files:

- GaudiKernel/GaudiKernel/IAlgContextSvc.h
- GaudiKernel/src/Lib/AlgContext.cpp