| The Gaudi Framework v32r1 (f65d50dc)

Public Member Functions | Private Attributes | List of all members
GaudiAlgorithm Class Reference

The useful base class for data processing algorithms. More...

`#include <GaudiAlg/GaudiAlgorithm.h>`

Inheritance diagram for GaudiAlgorithm:
[legend]
Collaboration diagram for GaudiAlgorithm:
[legend]

## Public Member Functions
StatusCode | initialize () override
| standard initialization method More...
StatusCode | execute () override
| standard execution method More...
StatusCode | finalize () override
| standard finalization method More...
StatusCode | sysExecute (const EventContext &ctx) override
| the generic actions for the execution. More...
void | put (IDataProviderSvc *svc, DataObject *object, const std::string &address, const bool useRootInTES=true) const
| Register a data object or container into Gaudi Event Transient Store. More...
void | put (IDataProviderSvc *svc, std::unique_ptr< DataObject > object, const std::string &address, const bool useRootInTES=true) const
const DataObject * | put (DataObject *object, const std::string &address, const bool useRootInTES=true) const
| Register a data object or container into Gaudi Event Transient Store. More...
const DataObject * | put (std::unique_ptr< DataObject > object, const std::string &address, const bool useRootInTES=true) const
template<class TYPE >
Gaudi::Utils::GetData< TYPE >::return_type | get (IDataProviderSvc *svc, const std::string &location, const bool useRootInTES=true) const
| Templated access to the data in Gaudi Transient Store. More...
template<class TYPE >
Gaudi::Utils::GetData< TYPE >::return_type | getIfExists (IDataProviderSvc *svc, const std::string &location, const bool useRootInTES=true) const
| Templated access to the data in Gaudi Transient Store. More...
template<class TYPE >
Gaudi::Utils::GetData< TYPE >::return_type | get (const std::string &location, const bool useRootInTES=true) const
| Templated access to the data from Gaudi Event Transient Store. More...
template<class TYPE >
Gaudi::Utils::GetData< TYPE >::return_type | getIfExists (const std::string &location, const bool useRootInTES=true) const
| Templated access to the data in Gaudi Transient Store. More...
template<class TYPE >
TYPE * | getDet (IDataProviderSvc *svc, const std::string &location) const
| Templated access to the detector data from the Gaudi Detector Transient Store. More...
template<class TYPE >
Gaudi::Utils::GetData< TYPE >::return_type | getDetIfExists (IDataProviderSvc *svc, const std::string &location) const
| Templated access to the detector data from the Gaudi Detector Transient Store. More...
template<class TYPE >
TYPE * | getDet (const std::string &location) const
| Templated access to the detector data from the Gaudi Detector Transient Store. More...
template<class TYPE >
Gaudi::Utils::GetData< TYPE >::return_type | getDetIfExists (const std::string &location) const
| Templated access to the detector data from the Gaudi Detector Transient Store. More...
template<class TYPE >
bool | exist (IDataProviderSvc *svc, const std::string &location, const bool useRootInTES=true) const
| Check the existence of a data object or container in the Gaudi Transient Event Store. More...
template<class TYPE >
bool | exist (const std::string &location, const bool useRootInTES=true) const
| Check the existence of a data object or container in the Gaudi Transient Event Store. More...
template<class TYPE >
bool | existDet (IDataProviderSvc *svc, const std::string &location) const
| Check the existence of detector objects in the Gaudi Transient Detector Store. More...
template<class TYPE >
bool | existDet (const std::string &location) const
| Check the existence of detector objects in the Gaudi Transient Detector Store. More...
template<class TYPE , class TYPE2 >
Gaudi::Utils::GetData< TYPE >::return_type | getOrCreate (IDataProviderSvc *svc, const std::string &location, const bool useRootInTES=true) const
| Get the existing data object from Gaudi Event Transient store. More...
template<class TYPE , class TYPE2 >
Gaudi::Utils::GetData< TYPE >::return_type | getOrCreate (const std::string &location, const bool useRootInTES=true) const
| Get the existing data object from Gaudi Event Transient store. More...
| GaudiAlgorithm (const std::string &name, ISvcLocator *pSvcLocator)
| Standard constructor. More...
| GaudiAlgorithm (const GaudiAlgorithm &)=delete
GaudiAlgorithm & | operator= (const GaudiAlgorithm &)=delete
SmartIF< INTupleSvc > & | evtColSvc () const
| Access the standard event collection service. More...
Public Member Functions inherited from GaudiCommon< Algorithm >
Gaudi::Utils::GetData< TYPE >::return_type | get (IDataProviderSvc *svc, const std::string &location, const bool useRootInTES=true) const
| Templated access to the data in Gaudi Transient Store. More...
Gaudi::Utils::GetData< TYPE >::return_type | getIfExists (IDataProviderSvc *svc, const std::string &location, const bool useRootInTES=true) const
| Quicker version of the get function which bypasses the check on the retrieved data. More...
bool | exist (IDataProviderSvc *svc, const std::string &location, const bool useRootInTES=true) const
| Check the existence of a data object or container in the Gaudi Transient Event Store. More...
Gaudi::Utils::GetData< TYPE >::return_type | getOrCreate (IDataProviderSvc *svc, const std::string &location, const bool useRootInTES=true) const
| Get the existing data object from Gaudi Event Transient store. More...
DataObject * | put (IDataProviderSvc *svc, std::unique_ptr< DataObject > object, const std::string &location, const bool useRootInTES=true) const
| Register a data object or container into Gaudi Event Transient Store. More...
DataObject * | put (IDataProviderSvc *svc, DataObject *object, const std::string &location, const bool useRootInTES=true) const
TOOL * | tool (const std::string &type, const std::string &name, const IInterface *parent=0, bool create=true) const
| Useful method for the easy location of tools. More...
TOOL * | tool (const std::string &type, const IInterface *parent=0, bool create=true) const
| A useful method for the easy location of tools. More...
SmartIF< SERVICE > | svc (const std::string &name, const bool create=true) const
| A useful method for the easy location of services. More...
IUpdateManagerSvc * | updMgrSvc () const
| Short-cut to locate the Update Manager Service. More...
WARN_UNUSED StatusCode | Error (const std::string &msg, const StatusCode st=StatusCode::FAILURE, const size_t mx=10) const
| Print the error message and return with the given StatusCode. More...
WARN_UNUSED StatusCode | Warning (const std::string &msg, const StatusCode st=StatusCode::FAILURE, const size_t mx=10) const
| Print the warning message and return with the given StatusCode. More...
WARN_UNUSED StatusCode | Info (const std::string &msg, const StatusCode st=StatusCode::SUCCESS, const size_t mx=10) const
| Print the info message and return with the given StatusCode. More...
WARN_UNUSED StatusCode | Print (const std::string &msg, const StatusCode st=StatusCode::SUCCESS, const MSG::Level lev=MSG::INFO) const
| Print the message and return with the given StatusCode. More...
void | Assert (const bool ok, const std::string &message="", const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
| Assertion - throw exception if the given condition is not fulfilled. More...
void | Assert (const bool ok, const char *message, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
| Assertion - throw exception if the given condition is not fulfilled. More...
void | Exception (const std::string &msg, const GaudiException &exc, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
| Create and (re)-throw a given GaudiException. More...
void | Exception (const std::string &msg, const std::exception &exc, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
| Create and (re)-throw a given exception. More...
void | Exception (const std::string &msg="no message", const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
| Create and throw an exception with the given message. More...
StatEntity & | counter (const std::string &tag) const
| accessor to certain counter by name More...
StatEntity & | counter (const std::string &tag)
bool | typePrint () const
| Insert the actual C++ type of the algorithm/tool in the messages ? More...
bool | propsPrint () const
| Print properties at initialization ? More...
bool | statPrint () const
| Print statistical counters at finalization ? More...
bool | errorsPrint () const
| Print error counters at finalization ? More...
long | printStat (const MSG::Level level=MSG::ALWAYS) const
| perform the actual printout of statistical counters More...
long | printErrors (const MSG::Level level=MSG::ALWAYS) const
| perform the actual printout of error counters More...
long | printProps (const MSG::Level level=MSG::ALWAYS) const
| perform the actual printout of properties More...
void | registerCondition (const std::string &condition, StatusCode(CallerClass::*mf)()=nullptr)
| register the current instance to the UpdateManagerSvc as a consumer for a condition. More...
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. More...
void | registerCondition (char *condition, StatusCode(CallerClass::*mf)()=NULL)
| just to avoid conflicts with the version using a pointer to a template class. More...
void | registerCondition (TargetClass *condition, StatusCode(CallerClass::*mf)()=NULL)
| register the current instance to the UpdateManagerSvc as a consumer for a condition. More...
StatusCode | runUpdate ()
| asks the UpdateManagerSvc to perform an update of the instance (if needed) without waiting the next BeginEvent incident. More...
| GaudiCommon (const std::string &name, ISvcLocator *pSvcLocator)
| Algorithm constructor - the SFINAE constraint below ensures that this is constructor is only defined if PBASE derives from Algorithm. More...
| 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. More...
StatusCode | initialize () override
| standard initialization method More...
StatusCode | finalize () override
| standard finalization method More...
StatusCode | release (const IInterface *interface) const
| Manual forced (and 'safe') release of the active tool or service. More...
const Services & | services () const
| get the list of aquired services More...
const std::string & | context () const
| Returns the "context" string. Used to identify different processing states. More...
Public Member Functions inherited from FixTESPath< BASE >
template<typename U = BASE, typename = std::enable_if_t<std::is_base_of_v<Gaudi::Algorithm, BASE>, U>>
| FixTESPath (const std::string &name, ISvcLocator *pSvcLocator)
| Algorithm constructor - the SFINAE constraint below ensures that this is constructor is only defined if BASE derives from Algorithm. More...
template<typename U = BASE, typename = std::enable_if_t<std::is_base_of_v<AlgTool, BASE>, U>>
| FixTESPath (const std::string &type, const std::string &name, const IInterface *ancestor)
| Tool constructor - SFINAE-ed to insure this constructor is only defined if BASE derives from AlgTool. More...
StatusCode | initialize () override
const std::string & | rootInTES () const
| Returns the "rootInTES" string. More...
std::string | fullTESLocation (std::string_view location, bool useRootInTES) const
| Returns the full correct event location given the rootInTes settings. More...

## Private Attributes
SmartIF< INTupleSvc > | m_evtColSvc
| Event Tag Collection Service. More...
Gaudi::Property< std::vector< std::string > > | m_vetoObjs
Gaudi::Property< std::vector< std::string > > | m_requireObjs

## Additional Inherited Members
Protected Types inherited from GaudiCommon< Algorithm >
using | base_class = FixTESPath< Algorithm >
typedef std::map< std::string, StatEntity > | StatisticsOwn
| the actual type of general counters More...
typedef std::map< std::string, std::reference_wrapper< Gaudi::Accumulators::PrintableCounter > > | Statistics
typedef std::map< std::string, unsigned int > | Counter
| the actual type error/warning counter More...
typedef std::vector< IAlgTool * > | AlgTools
| storage for active tools More...
typedef std::vector< SmartIF< IService > > | Services
| storage for active services More...
Protected Member Functions inherited from GaudiCommon< Algorithm >
StatusCode | releaseTool (const IAlgTool *tool) const
| manual forced (and 'safe') release of the tool More...
StatusCode | releaseSvc (const IInterface *svc) const
| manual forced (and 'safe') release of the service More...
Protected Attributes inherited from GaudiCommon< Algorithm >
SmartIF< ICounterSummarySvc > | m_counterSummarySvc
| a pointer to the CounterSummarySvc More...
Static Protected Attributes inherited from GaudiCommon< Algorithm >
static const bool | IgnoreRootInTES
| Simple definition to be used with the new useRootInTES argument get<TYPE> and put methods. More...
static const bool | UseRootInTES
| Simple definition to be used with the new useRootInTES argument get<TYPE> and put methods. More...

## Detailed Description

The useful base class for data processing algorithms.

Small extension of ordinary the Algorithm base class.

This base class allows "easy"(=="1 line") access to tools and services. This access is safe in the sense that there is no need to worry about the reference counts for tools and services.

The base class allows "easy" (=="1 line") access to data in Gaudi Transient Stores. The functionality includes the checking of the presence of the data at the given location, checking the validity of the data, retrieval of valid data and "forced" retrieve of valid data (create if there is no data).

The base class allows to perform an easy error, warning and exception treatments, including the accumulated statistics of exceptions, errors and warnings.

The base class also includes utilities for general statistical counters.

It has been reported that usage of this base class results in significant shrinkage of existing code lines.

Attention
  See also the class GaudiCommon, which implements some of the common functionality between GaudiTool and GaudiAlgorithm.

Author
  Vanya BELYAEV Ivan..nosp@m.Bely.nosp@m.aev@i.nosp@m.tep..nosp@m.ru
  Chris Jones Chris.nosp@m.toph.nosp@m.er.Ro.nosp@m.b.Jo.nosp@m.nes@c.nosp@m.ern..nosp@m.ch

Date
  30/06/2001

Definition at line 94 of file GaudiAlgorithm.h.

## Constructor & Destructor Documentation

## ◆ GaudiAlgorithm() [1/2]

GaudiAlgorithm::GaudiAlgorithm | ( | const std::string & | name,
|  | ISvcLocator * | pSvcLocator
| ) |  |

Standard constructor.

See also
  Algorithm

Parameters

  name | name of the algorithm
  pSvcLocator | pointer to Service Locator

Definition at line 35 of file GaudiAlgorithm.cpp.

36 : GaudiCommon<Algorithm>( name, pSvcLocator ) {
37 setProperty( "RegisterForContextService", true ).ignore();
38 }
gaudiComponentHelp.name
name
Definition: gaudiComponentHelp.py:41
setProperty
bool PyHelper() setProperty(IInterface *p, char *name, char *value)
Definition: Bootstrap.cpp:233
GaudiCommon< Algorithm >

## ◆ GaudiAlgorithm() [2/2]

GaudiAlgorithm::GaudiAlgorithm | ( | const GaudiAlgorithm & |  | ) |
| delete

## Member Function Documentation

## ◆ evtColSvc()

SmartIF< INTupleSvc > & GaudiAlgorithm::evtColSvc | ( |  | ) | const

Access the standard event collection service.

Returns
  pointer to the event collection service

Definition at line 71 of file GaudiAlgorithm.cpp.

71 {
72 if ( !m_evtColSvc ) { m_evtColSvc = svc<INTupleSvc>( "EvtTupleSvc", true ); }
73 //
74 return m_evtColSvc;
75 }
GaudiAlgorithm::m_evtColSvc
SmartIF< INTupleSvc > m_evtColSvc
Event Tag Collection Service.
Definition: GaudiAlgorithm.h:652

## ◆ execute()

StatusCode GaudiAlgorithm::execute | ( |  | ) |
| override

standard execution method

See also
  Algorithm
  IAlgorithm

Returns
  status code

Definition at line 67 of file GaudiAlgorithm.cpp.

67 { return Error( "Default GaudiAlgorithm execute method called !!" ); }
GaudiCommon< Algorithm >::Error
WARN_UNUSED StatusCode Error(const std::string &msg, const StatusCode st=StatusCode::FAILURE, const size_t mx=10) const
Print the error message and return with the given StatusCode.
Definition: GaudiCommon.icpp:286

## ◆ exist() [1/2]

template<class TYPE >

bool GaudiAlgorithm::exist | ( | IDataProviderSvc * | svc,
|  | const std::string & | location,
|  | const bool | useRootInTES = `true`
| ) |  | const
| inline

Check the existence of a data object or container in the Gaudi Transient Event Store.

bool a1 = exist<DataObject>( evtSvc(), "/Event/MyObject" ) ;
bool a2 = exist<MyHits> ( evtSvc(), "/Event/MyHits" ) ;

Attention
  The method respects the setting of the job option RootInTES by prepending the value of this to the data location that is passed. The default setting for RootInTES is "" so has no effect. This behavior can be suppressed by passing the argument useRootInTES = false

Parameters

  svc | Pointer to data service (data provider)
  location | Address in Gaudi Transient Event Store
  useRootInTES | Flag to turn on(TRUE) off(FALSE) the use of the RootInTES location property

Returns
  Boolean indicating status of the request

Return values

  true | Data object or container exists and implements a proper interface
  true | Failed to locate the data object or container

Definition at line 486 of file GaudiAlgorithm.h.

486 {
487 return GaudiCommon<Algorithm>::exist<TYPE>( svc, location, useRootInTES );
488 }
GaudiPython.HistoUtils.location
location
Definition: HistoUtils.py:936
GaudiCommon< Algorithm >::svc
SmartIF< SERVICE > svc(const std::string &name, const bool create=true) const
A useful method for the easy location of services.
Definition: GaudiCommonImp.h:121
GaudiCommon
Implements the common functionality between GaudiTools and GaudiAlgorithms.
Definition: GaudiCommon.h:91

## ◆ exist() [2/2]

template<class TYPE >

bool GaudiAlgorithm::exist | ( | const std::string & | location,
|  | const bool | useRootInTES = `true`
| ) |  | const
| inline

Check the existence of a data object or container in the Gaudi Transient Event Store.

bool a1 = exist<DataObject>( "/Event/MyObject" ) ;
bool a2 = exist<MyHits> ( "/Event/MyHits" ) ;

Attention
  The method respects the setting of the job option RootInTES by prepending the value of this to the data location that is passed. The default setting for RootInTES is "" so has no effect. This behavior can be suppressed by passing the argument useRootInTES = false

Parameters

  location | Address in Gaudi Transient Event Store
  useRootInTES | Flag to turn on(TRUE) off(FALSE) the use of the RootInTES location property

Returns
  Boolean indicating status of the request

Return values

  true | Data object or container exists and implements a proper interface
  true | Failed to locate the data object or container

Definition at line 516 of file GaudiAlgorithm.h.

516 {
517 return GaudiCommon<Algorithm>::exist<TYPE>( evtSvc(), location, useRootInTES );
518 }
GaudiPython.HistoUtils.location
location
Definition: HistoUtils.py:936
GaudiCommon
Implements the common functionality between GaudiTools and GaudiAlgorithms.
Definition: GaudiCommon.h:91

## ◆ existDet() [1/2]

template<class TYPE >

bool GaudiAlgorithm::existDet | ( | IDataProviderSvc * | svc,
|  | const std::string & | location
| ) |  | const
| inline

Check the existence of detector objects in the Gaudi Transient Detector Store.

bool a1 = existDet<DataObject> ( detSvc(), "/dd/Structure/MyObject" ) ;
bool a2 = existDet<Material> ( detSvc(), "/dd/Structure/Material/Air" ) ;

Parameters

  svc | Pointer to data service (data provider)
  location | Address in Gaudi Transient Detector Store

Returns
  Boolean indicating status of the request

Return values

  true | Detector object exists and implements a proper interface
  false | Failed to locate the data object

Definition at line 537 of file GaudiAlgorithm.h.

537 {
538 return GaudiCommon<Algorithm>::exist<TYPE>( svc, location, false );
539 }
GaudiPython.HistoUtils.location
location
Definition: HistoUtils.py:936
GaudiCommon< Algorithm >::svc
SmartIF< SERVICE > svc(const std::string &name, const bool create=true) const
A useful method for the easy location of services.
Definition: GaudiCommonImp.h:121
GaudiCommon
Implements the common functionality between GaudiTools and GaudiAlgorithms.
Definition: GaudiCommon.h:91

## ◆ existDet() [2/2]

template<class TYPE >

bool GaudiAlgorithm::existDet | ( | const std::string & | location | ) | const
| inline

Check the existence of detector objects in the Gaudi Transient Detector Store.

bool a1 = existDet<DataObject> ( "/dd/Structure/MyObject" ) ;
bool a2 = existDet<Material> ( "/dd/Structure/Material/Air" ) ;

Parameters

  location | Address in Gaudi Transient Detector Store

Returns
  Boolean indicating status of the request

Return values

  true | Detector object exists and implements a proper interface
  false | Failed to locate the data object

Definition at line 557 of file GaudiAlgorithm.h.

557 {
558 return GaudiCommon<Algorithm>::exist<TYPE>( detSvc(), location, false );
559 }
GaudiPython.HistoUtils.location
location
Definition: HistoUtils.py:936
GaudiCommon
Implements the common functionality between GaudiTools and GaudiAlgorithms.
Definition: GaudiCommon.h:91

## ◆ finalize()

StatusCode GaudiAlgorithm::finalize | ( |  | ) |
| override

standard finalization method

See also
  Algorithm
  IAlgorithm

Returns
  status code

Definition at line 55 of file GaudiAlgorithm.cpp.

55 {
56 if ( msgLevel( MSG::DEBUG ) ) debug() << "Finalize base class GaudiAlgorithm" << endmsg;
57
58 // reset pointers
59 m_evtColSvc.reset();
60
61 // finalize the base class and return
62 return GaudiCommon<Algorithm>::finalize();
63 }
GaudiAlgorithm::m_evtColSvc
SmartIF< INTupleSvc > m_evtColSvc
Event Tag Collection Service.
Definition: GaudiAlgorithm.h:652
MSG::DEBUG
Definition: IMessageSvc.h:15
GaudiCommon::finalize
StatusCode finalize() override
standard finalization method
Definition: GaudiCommon.icpp:131
SmartIF::reset
void reset(TYPE *ptr=nullptr)
Set the internal pointer to the passed one disposing of the old one.
Definition: SmartIF.h:86
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:192

## ◆ get() [1/2]

template<class TYPE >

Gaudi::Utils::GetData<TYPE>::return_type GaudiAlgorithm::get | ( | IDataProviderSvc * | svc,
|  | const std::string & | location,
|  | const bool | useRootInTES = `true`
| ) |  | const
| inline

Templated access to the data in Gaudi Transient Store.

Quick and safe access to the data in Gaudi transient store. The method located the data at given address and perform the debug printout about located data

MCHits* hits = get<MCHits>( evtSvc() , "/Event/MC/Hits" );

Attention
  The method respects the setting of the job option RootInTES by prepending the value of this to the data location that is passed. The default setting for RootInTES is "" so has no effect. This behavior can be suppressed by passing the argument useRootInTES = false

See also
  IDataProviderSvc
  SmartDataPtr

Exceptions

  GaudiException | for Invalid Data Provider Service
  GaudiException | for invalid/unavailable data

Parameters

  svc | Pointer to data service (data provider)
  location | data location/address in Gaudi Transient Store
  useRootInTES | Flag to turn on(TRUE) off(FALSE) the use of the RootInTES location property

Returns
  pointer to the data object

Definition at line 246 of file GaudiAlgorithm.h.

247 {
248 return GaudiCommon<Algorithm>::get<TYPE>( svc, location, useRootInTES );
249 }
GaudiPython.HistoUtils.location
location
Definition: HistoUtils.py:936
GaudiCommon< Algorithm >::svc
SmartIF< SERVICE > svc(const std::string &name, const bool create=true) const
A useful method for the easy location of services.
Definition: GaudiCommonImp.h:121
GaudiCommon
Implements the common functionality between GaudiTools and GaudiAlgorithms.
Definition: GaudiCommon.h:91

## ◆ get() [2/2]

template<class TYPE >

Gaudi::Utils::GetData<TYPE>::return_type GaudiAlgorithm::get | ( | const std::string & | location,
|  | const bool | useRootInTES = `true`
| ) |  | const
| inline

Templated access to the data from Gaudi Event Transient Store.

Quick and safe access to the data in Gaudi transient store.

The method located the data at the given address and perform the debug printout about located data.

MCParticles* mcps = get<MCParticles>( MCParticleLocation::Default );

Attention
  The method respects the setting of the job option RootInTES by prepending the value of this to the data location that is passed. The default setting for RootInTES is "" so has no effect. This behavior can be suppressed by passing the argument useRootInTES = false

Parameters

  location | Data location/address in Gaudi Transient Store
  useRootInTES | Flag to turn on(TRUE) off(FALSE) the use of the RootInTES location property

Returns
  Pointer to the data object

Definition at line 317 of file GaudiAlgorithm.h.

318 {
319 return GaudiCommon<Algorithm>::get<TYPE>( evtSvc(), location, useRootInTES );
320 }
GaudiPython.HistoUtils.location
location
Definition: HistoUtils.py:936
GaudiCommon
Implements the common functionality between GaudiTools and GaudiAlgorithms.
Definition: GaudiCommon.h:91

## ◆ getDet() [1/2]

template<class TYPE >

TYPE* GaudiAlgorithm::getDet | ( | IDataProviderSvc * | svc,
|  | const std::string & | location
| ) |  | const
| inline

Templated access to the detector data from the Gaudi Detector Transient Store.

Quick and safe access to the detector data in Gaudi transient store.

The method located the detector at the given address and perform the debug printout about located detector.

MyDet* mdet = getDet<MyDet>( detSvc() , "/dd/Structure/LHCb/MyDet" );

Parameters

  svc | Pointer to data service (data provider)
  location | Detector location/address in Gaudi Transient Store

Returns
  Pointer to the detector object

Definition at line 379 of file GaudiAlgorithm.h.

379 {
380 return GaudiCommon<Algorithm>::get<TYPE>( svc, location, false );
381 }
GaudiPython.HistoUtils.location
location
Definition: HistoUtils.py:936
GaudiCommon< Algorithm >::svc
SmartIF< SERVICE > svc(const std::string &name, const bool create=true) const
A useful method for the easy location of services.
Definition: GaudiCommonImp.h:121
GaudiCommon
Implements the common functionality between GaudiTools and GaudiAlgorithms.
Definition: GaudiCommon.h:91

## ◆ getDet() [2/2]

template<class TYPE >

TYPE* GaudiAlgorithm::getDet | ( | const std::string & | location | ) | const
| inline

Templated access to the detector data from the Gaudi Detector Transient Store.

Quick and safe access to the detector data in Gaudi transient store.

The method located the detector at the given address and perform the debug printout about located detector.

MyDet* mdet = getDet<MyDet>( "/dd/Structure/LHCb/MyDet" );

Parameters

  location | Detector location/address in Gaudi Transient Store

Returns
  Pointer to the detector object

Definition at line 429 of file GaudiAlgorithm.h.

429 {
430 return GaudiCommon<Algorithm>::get<TYPE>( detSvc(), location, false );
431 }
GaudiPython.HistoUtils.location
location
Definition: HistoUtils.py:936
GaudiCommon
Implements the common functionality between GaudiTools and GaudiAlgorithms.
Definition: GaudiCommon.h:91

## ◆ getDetIfExists() [1/2]

template<class TYPE >

Gaudi::Utils::GetData<TYPE>::return_type GaudiAlgorithm::getDetIfExists | ( | IDataProviderSvc * | svc,
|  | const std::string & | location
| ) |  | const
| inline

Templated access to the detector data from the Gaudi Detector Transient Store.

Quick and safe access to the detector data in Gaudi transient store.

The method located the detector at the given address and perform the debug printout about located detector.

Skips the check on the data as performed by 'get'. No exception is thrown if the data is missing.

MyDet* mdet = getDetIfExists<MyDet>( detSvc() , "/dd/Structure/LHCb/MyDet" );

Parameters

  svc | Pointer to data service (data provider)
  location | Detector location/address in Gaudi Transient Store

Returns
  Pointer to the detector object

Return values

  NULL | If the detector object does not exist.

Definition at line 406 of file GaudiAlgorithm.h.

407 {
408 return GaudiCommon<Algorithm>::getIfExists<TYPE>( svc, location, false );
409 }
GaudiPython.HistoUtils.location
location
Definition: HistoUtils.py:936
GaudiCommon< Algorithm >::svc
SmartIF< SERVICE > svc(const std::string &name, const bool create=true) const
A useful method for the easy location of services.
Definition: GaudiCommonImp.h:121
GaudiCommon
Implements the common functionality between GaudiTools and GaudiAlgorithms.
Definition: GaudiCommon.h:91

## ◆ getDetIfExists() [2/2]

template<class TYPE >

Gaudi::Utils::GetData<TYPE>::return_type GaudiAlgorithm::getDetIfExists | ( | const std::string & | location | ) | const
| inline

Templated access to the detector data from the Gaudi Detector Transient Store.

Quick and safe access to the detector data in Gaudi transient store.

The method located the detector at the given address and perform the debug printout about located detector.

Skips the check on the data as performed by 'get'. No exception is thrown if the data is missing.

MyDet* mdet = getDetIfExists<MyDet>( "/dd/Structure/LHCb/MyDet" );

Parameters

  location | Detector location/address in Gaudi Transient Store

Returns
  Pointer to the detector object

Return values

  NULL | If the detector object does not exist.

Definition at line 455 of file GaudiAlgorithm.h.

455 {
456 return GaudiCommon<Algorithm>::getIfExists<TYPE>( detSvc(), location, false );
457 }
GaudiPython.HistoUtils.location
location
Definition: HistoUtils.py:936
GaudiCommon
Implements the common functionality between GaudiTools and GaudiAlgorithms.
Definition: GaudiCommon.h:91

## ◆ getIfExists() [1/2]

template<class TYPE >

Gaudi::Utils::GetData<TYPE>::return_type GaudiAlgorithm::getIfExists | ( | IDataProviderSvc * | svc,
|  | const std::string & | location,
|  | const bool | useRootInTES = `true`
| ) |  | const
| inline

Templated access to the data in Gaudi Transient Store.

Quick and safe access to the data in Gaudi transient store. The method located the data at given address and perform the debug printout about located data.

Skips the check on the data as performed by 'get'. No exception is thrown if the data is missing.

MCHits* hits = getIfExists<MCHits>( evtSvc() , "/Event/MC/Hits" );

Attention
  The method respects the setting of the job option RootInTES by prepending the value of this to the data location that is passed. The default setting for RootInTES is "" so has no effect. This behavior can be suppressed by passing the argument useRootInTES = false

See also
  IDataProviderSvc
  SmartDataPtr

Parameters

  svc | Pointer to data service (data provider)
  location | data location/address in Gaudi Transient Store
  useRootInTES | Flag to turn on(TRUE) off(FALSE) the use of the RootInTES location property

Returns
  pointer to the data object.

Return values

  NULL | If data does not exist.

Definition at line 285 of file GaudiAlgorithm.h.

286 {
287 return GaudiCommon<Algorithm>::getIfExists<TYPE>( svc, location, useRootInTES );
288 }
GaudiPython.HistoUtils.location
location
Definition: HistoUtils.py:936
GaudiCommon< Algorithm >::svc
SmartIF< SERVICE > svc(const std::string &name, const bool create=true) const
A useful method for the easy location of services.
Definition: GaudiCommonImp.h:121
GaudiCommon
Implements the common functionality between GaudiTools and GaudiAlgorithms.
Definition: GaudiCommon.h:91

## ◆ getIfExists() [2/2]

template<class TYPE >

Gaudi::Utils::GetData<TYPE>::return_type GaudiAlgorithm::getIfExists | ( | const std::string & | location,
|  | const bool | useRootInTES = `true`
| ) |  | const
| inline

Templated access to the data in Gaudi Transient Store.

Quick and safe access to the data in Gaudi transient store. The method located the data at given address and perform the debug printout about located data.

Skips the check on the data as performed by 'get'. No exception is thrown if the data is missing.

MCHits* hits = getIfExists<MCHits>( "/Event/MC/Hits" );

Attention
  The method respects the setting of the job option RootInTES by prepending the value of this to the data location that is passed. The default setting for RootInTES is "" so has no effect. This behavior can be suppressed by passing the argument useRootInTES = false

See also
  IDataProviderSvc
  SmartDataPtr

Parameters

  location | data location/address in Gaudi Transient Store
  useRootInTES | Flag to turn on(TRUE) off(FALSE) the use of the RootInTES location property

Returns
  pointer to the data object.

Return values

  NULL | If data does not exist.

Definition at line 355 of file GaudiAlgorithm.h.

356 {
357 return GaudiCommon<Algorithm>::getIfExists<TYPE>( evtSvc(), location, useRootInTES );
358 }
GaudiPython.HistoUtils.location
location
Definition: HistoUtils.py:936
GaudiCommon
Implements the common functionality between GaudiTools and GaudiAlgorithms.
Definition: GaudiCommon.h:91

## ◆ getOrCreate() [1/2]

template<class TYPE , class TYPE2 >

Gaudi::Utils::GetData<TYPE>::return_type GaudiAlgorithm::getOrCreate | ( | IDataProviderSvc * | svc,
|  | const std::string & | location,
|  | const bool | useRootInTES = `true`
| ) |  | const
| inline

Get the existing data object from Gaudi Event Transient store.

Alternatively, create new object and register it in TES and return if object does not exist.

MyHits* hits = getOrCreate<MyHits,MyHits>( evtSvc() , "/Event/MyHits" ) ;

Attention
  The method respects the setting of the job option RootInTES by prepending the value of this to the data location that is passed. The default setting for RootInTES is "" so has no effect. This behavior can be suppressed by passing the argument useRootInTES = false

Exceptions

  GaudiException | for Invalid Data Provider Service
  GaudiException | for invalid/unavailable data

Parameters

  svc | Pointer to data service (data provider)
  location | Location in Gaudi Transient Event Store
  useRootInTES | Flag to turn on(TRUE) off(FALSE) the use of the RootInTES location property

Returns
  A valid pointer to the object

Definition at line 589 of file GaudiAlgorithm.h.

590 {
591 return GaudiCommon<Algorithm>::getOrCreate<TYPE, TYPE2>( svc, location, useRootInTES );
592 }
GaudiPython.HistoUtils.location
location
Definition: HistoUtils.py:936
GaudiCommon< Algorithm >::svc
SmartIF< SERVICE > svc(const std::string &name, const bool create=true) const
A useful method for the easy location of services.
Definition: GaudiCommonImp.h:121
GaudiCommon
Implements the common functionality between GaudiTools and GaudiAlgorithms.
Definition: GaudiCommon.h:91

## ◆ getOrCreate() [2/2]

template<class TYPE , class TYPE2 >

Gaudi::Utils::GetData<TYPE>::return_type GaudiAlgorithm::getOrCreate | ( | const std::string & | location,
|  | const bool | useRootInTES = `true`
| ) |  | const
| inline

Get the existing data object from Gaudi Event Transient store.

Alternatively, create new object and register it in TES and return if object does not exist.

MyHits* hits = getOrCreate<MyHits,MyHits>( "/Event/MyHits" ) ;

Attention
  The method respects the setting of the job option RootInTES by prepending the value of this to the data location that is passed. The default setting for RootInTES is "" so has no effect. This behavior can be suppressed by passing the argument useRootInTES = false

Exceptions

  GaudiException | for Invalid Data Provider Service
  GaudiException | for invalid/unavailable data

Parameters

  location | Location in Gaudi Transient Event Store
  useRootInTES | Flag to turn on(TRUE) off(FALSE) the use of the RootInTES location property

Returns
  A valid pointer to the object

Definition at line 621 of file GaudiAlgorithm.h.

622 {
623 return GaudiCommon<Algorithm>::getOrCreate<TYPE, TYPE2>( evtSvc(), location, useRootInTES );
624 }
GaudiPython.HistoUtils.location
location
Definition: HistoUtils.py:936
GaudiCommon
Implements the common functionality between GaudiTools and GaudiAlgorithms.
Definition: GaudiCommon.h:91

## ◆ initialize()

StatusCode GaudiAlgorithm::initialize | ( |  | ) |
| override

standard initialization method

See also
  Algorithm
  IAlgorithm

Returns
  status code

Definition at line 42 of file GaudiAlgorithm.cpp.

42 {
43 // initialize the base class
44 const StatusCode sc = GaudiCommon<Algorithm>::initialize();
45 if ( sc.isFailure() ) { return sc; }
46
47 // Add any customisations here, that cannot go in GaudiCommon
48
49 // return
50 return sc;
51 }
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:50
GaudiCommon::initialize
StatusCode initialize() override
standard initialization method
Definition: GaudiCommon.icpp:95
StatusCode::isFailure
bool isFailure() const
Definition: StatusCode.h:130

## ◆ operator=()

GaudiAlgorithm& GaudiAlgorithm::operator= | ( | const GaudiAlgorithm & |  | ) |
| delete

## ◆ put() [1/4]

void GaudiAlgorithm::put | ( | IDataProviderSvc * | svc,
|  | DataObject * | object,
|  | const std::string & | address,
|  | const bool | useRootInTES = `true`
| ) |  | const
| inline

Register a data object or container into Gaudi Event Transient Store.

MCHits * hits = new MCHits();
put( evtSvc(), hits, "/Event/MC/Hits" );

Attention
  The method respects the setting of the job option RootInTES by prepending the value of this to the data location that is passed. The default setting for RootInTES is "" so has no effect. This behavior can be suppressed by passing the argument useRootInTES = false

See also
  IDataProviderSvc

Parameters

  svc | Pointer to data provider service
  object | Data object or container to be registered
  address | Address in Gaudi Event Transient Store ("/Event" could be omitted )
  useRootInTES | Flag to turn on(TRUE) off(FALSE) the use of the RootInTES location property

Exceptions

  GaudiException | for invalid event data service
  GaudiException | for invalid object
  GaudiException | for error result from event data service

Returns
  StatusCode

Return values

  StatusCode::SUCCESS | Data was successfully placed in the TES.
  StatusCode::FAILURE | Failed to store data in the TES.

Definition at line 165 of file GaudiAlgorithm.h.

166 {
167 put( svc, std::unique_ptr<DataObject>( object ), address, useRootInTES );
168 }
GaudiCommon< Algorithm >::svc
SmartIF< SERVICE > svc(const std::string &name, const bool create=true) const
A useful method for the easy location of services.
Definition: GaudiCommonImp.h:121
std::unique_ptr
STL class.
GaudiAlgorithm::put
void put(IDataProviderSvc *svc, DataObject *object, const std::string &address, const bool useRootInTES=true) const
Register a data object or container into Gaudi Event Transient Store.
Definition: GaudiAlgorithm.h:165

## ◆ put() [2/4]

void GaudiAlgorithm::put | ( | IDataProviderSvc * | svc,
|  | std::unique_ptr< DataObject > | object,
|  | const std::string & | address,
|  | const bool | useRootInTES = `true`
| ) |  | const
| inline

Definition at line 169 of file GaudiAlgorithm.h.

170 {
171 GaudiCommon<Algorithm>::put( svc, std::move( object ), address, useRootInTES );
172 }
GaudiCommon::put
DataObject * put(IDataProviderSvc *svc, std::unique_ptr< DataObject > object, const std::string &location, const bool useRootInTES=true) const
Register a data object or container into Gaudi Event Transient Store.
Definition: GaudiCommon.icpp:486
GaudiCommon< Algorithm >::svc
SmartIF< SERVICE > svc(const std::string &name, const bool create=true) const
A useful method for the easy location of services.
Definition: GaudiCommonImp.h:121
std::move
T move(T... args)

## ◆ put() [3/4]

const DataObject* GaudiAlgorithm::put | ( | DataObject * | object,
|  | const std::string & | address,
|  | const bool | useRootInTES = `true`
| ) |  | const
| inline

Register a data object or container into Gaudi Event Transient Store.

See also
  IDataProviderSvc

MCHits * hits = new MCHits();
put( hits, "/Event/MC/Hits" );

Attention
  The method respects the setting of the job option RootInTES by prepending the value of this to the data location that is passed. The default setting for RootInTES is "" so has no effect. This behavior can be suppressed by passing the argument useRootInTES = false

Parameters

  object | Data object or container to be registered
  address | Address in Gaudi Event Transient Store ("/Event" could be omitted )
  useRootInTES | Flag to turn on(TRUE) off(FALSE) the use of the RootInTES location property

Exceptions

  GaudiException | for invalid event data service
  GaudiException | for invalid object
  GaudiException | for error result from event data service

Returns
  StatusCode

Return values

  StatusCode::SUCCESS | Data was successfully placed in the TES.
  StatusCode::FAILURE | Failed to store data in the TES.

Definition at line 205 of file GaudiAlgorithm.h.

205 {
206 return put( std::unique_ptr<DataObject>( object ), address, useRootInTES );
207 }
std::unique_ptr
STL class.
GaudiAlgorithm::put
void put(IDataProviderSvc *svc, DataObject *object, const std::string &address, const bool useRootInTES=true) const
Register a data object or container into Gaudi Event Transient Store.
Definition: GaudiAlgorithm.h:165

## ◆ put() [4/4]

const DataObject* GaudiAlgorithm::put | ( | std::unique_ptr< DataObject > | object,
|  | const std::string & | address,
|  | const bool | useRootInTES = `true`
| ) |  | const
| inline

Definition at line 208 of file GaudiAlgorithm.h.

209 {
210 return GaudiCommon<Algorithm>::put( evtSvc(), std::move( object ), address, useRootInTES );
211 }
GaudiCommon::put
DataObject * put(IDataProviderSvc *svc, std::unique_ptr< DataObject > object, const std::string &location, const bool useRootInTES=true) const
Register a data object or container into Gaudi Event Transient Store.
Definition: GaudiCommon.icpp:486
std::move
T move(T... args)

## ◆ sysExecute()

StatusCode GaudiAlgorithm::sysExecute | ( | const EventContext & | ctx | ) |
| override

the generic actions for the execution.

See also
  Algorithm
  IAlgorithm
  Algorithm::sysExecute

Returns
  status code

< guard/sentry

Definition at line 84 of file GaudiAlgorithm.cpp.

84 {
85 StatusCode sc{StatusCode::SUCCESS};
86
87 IAlgContextSvc* algCtx = nullptr;
88 if ( registerContext() ) { algCtx = contextSvc(); }
89 // Lock the context
90 Gaudi::Utils::AlgContext cnt( this, algCtx, ctx );
91
92 // Do not execute if one or more of the m_vetoObjs exist in TES
93 const auto it = find_if( begin( m_vetoObjs ), end( m_vetoObjs ),
94 [&]( const std::string& loc ) { return this->exist<DataObject>( loc ); } );
95 if ( it != end( m_vetoObjs ) ) {
96 if ( msgLevel( MSG::DEBUG ) ) debug() << *it << " found, skipping event " << endmsg;
97 return sc;
98 }
99
100 // Execute if m_requireObjs is empty
101 // or if one or more of the m_requireObjs exist in TES
102 bool doIt =
103 m_requireObjs.empty() || any_of( begin( m_requireObjs ), end( m_requireObjs ),
104 [&]( const std::string& loc ) { return this->exist<DataObject>( loc ); } );
105
106 // execute the generic method:
107 if ( doIt ) sc = Algorithm::sysExecute( ctx );
108 return sc;
109 }
Gaudi::Utils::AlgContext
Helper "sentry" class to automatize the safe register/unregister the algorithm's context.
Definition: IAlgContextSvc.h:74
MSG::DEBUG
Definition: IMessageSvc.h:15
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
std::string
STL class.
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:50
IOTest.end
def end
Definition: IOTest.py:112
std::find_if
T find_if(T... args)
GaudiAlgorithm::m_requireObjs
Gaudi::Property< std::vector< std::string > > m_requireObjs
Definition: GaudiAlgorithm.h:656
GaudiAlgorithm::m_vetoObjs
Gaudi::Property< std::vector< std::string > > m_vetoObjs
Definition: GaudiAlgorithm.h:654
std::any_of
T any_of(T... args)
IAlgContextSvc
An abstract interface for Algorithm Context Service.
Definition: IAlgContextSvc.h:23
Gaudi::Utils::begin
AttribStringParser::Iterator begin(const AttribStringParser &parser)
Definition: AttribStringParser.h:120
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:192
Gaudi::Algorithm::sysExecute
StatusCode sysExecute(const EventContext &ctx) override
The actions to be performed by the algorithm on an event.
Definition: Algorithm.cpp:438

## Member Data Documentation

## ◆ m_evtColSvc

SmartIF<INTupleSvc> GaudiAlgorithm::m_evtColSvc
| mutable private

Event Tag Collection Service.

Definition at line 652 of file GaudiAlgorithm.h.

## ◆ m_requireObjs

Gaudi::Property<std::vector<std::string> > GaudiAlgorithm::m_requireObjs
| private

Initial value:
{
this, "RequireObjects", {}, "execute only if one or more of these TES objects exist"}

Definition at line 656 of file GaudiAlgorithm.h.

## ◆ m_vetoObjs

Gaudi::Property<std::vector<std::string> > GaudiAlgorithm::m_vetoObjs
| private

Initial value:
{
this, "VetoObjects", {}, "skip execute if one or more of these TES objects exist"}

Definition at line 654 of file GaudiAlgorithm.h.

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

- GaudiAlg/GaudiAlg/GaudiAlgorithm.h
- GaudiAlg/src/lib/GaudiAlgorithm.cpp