Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Public Types | Public Member Functions | Private Attributes | Friends | List of all members
CaloUtils::ToolWithConstants< BASE > Class Template Reference

Hold constants for a tool. More...

#include <ToolWithConstants.h>

Inheritance diagram for CaloUtils::ToolWithConstants< BASE >:
Collaboration diagram for CaloUtils::ToolWithConstants< BASE >:

Public Types

typedef ToolWithConstants base_class
 Shorthand for derived classes. More...
 
using Context = CaloUtils::ToolConstantsContext
 Convenient alias for the Context type. More...
 
template<CxxUtils::FromArrayrep T>
using Constant = ToolConstant< T >
 Alias for the Constant type. More...
 

Public Member Functions

virtual StatusCode initialize () override
 Initialize method. More...
 
Context context (const EventContext &ctx) const
 Create a Context object. More...
 
virtual void writeConstants (std::ostream &stream, const std::string &name, const EventContext &ctx) const
 Dump method (for debugging) More...
 
virtual StatusCode mergeConstants (CaloRec::ToolConstants &out, const EventContext &ctx) const override
 Merge our constants into out with the proper prefix. More...
 
virtual int toolVersion () const
 Return the version number for this tool. More...
 
virtual const std::string & toolType () const
 Return the name of the type of this tool. More...
 

Private Attributes

SG::ReadCondHandleKey< CaloRec::ToolConstantsm_DBHandle { this, "DBHandleKey", "", "" }
 Handle to a ToolConstants conditions object. More...
 
StringProperty m_prefix { this, "prefix", "", "" }
 Prefix for finding our constants within the ToolConstants object. More...
 
ToolWithConstantsImpl m_impl { this->name(), m_prefix, m_DBHandle }
 Internal implementation object. More...
 
Constant< int > m_order { this, "order", 0 }
 Used to fix the ordering of tools when we're initializing from COOL based on a hierarchical tag. More...
 
Constant< bool > m_isdummy {this, "isDummy", false }
 If true, then this is a dummy tool that should not be executed. More...
 

Friends

template<CxxUtils::FromArrayrep T>
class CaloUtils::ToolConstant
 

Detailed Description

template<HasProperties BASE>
class CaloUtils::ToolWithConstants< BASE >

Hold constants for a tool.

Certain tools, such as correction tools, have a large number of constants associated with them. One does not want to hard-code these constants; instead, the tools should be able to get them either from job options or from a COOL database.

This class extends Gaudi components to manage a set of ‘Constants’, which are like properties but can be set either from job options or from COOL (or possibly defaulted). The constants may either be scalar arithmetic types (floating-point, integer, boolean) or an specialization of CxxUtils::Array<N>. (Note, however, that the values are always stored as single-precision floating-point.)

A Constant may be declared similarly to a Gaudi property. To retrieve its value, call context() and then pass that to the operator() method of the Constant.

This is probably best shown as an example.

class MyTool
: public CaloUtils::ToolWithConstants<AthAlgTool>
{
// Define a floating-point constant, with a default value.
Constant<float> m_cf
{ this, "FloatConst", 1.5, "A description" };
// Define an integer constant, with no default value.
Constant<int> m_ci
{ this, "IntConst", "A description" };
// Define a two-dimensional array constant.
// Array constants do not have defaults.
Constant<CxxUtils::Array<2> > m_ca
{ this, "ArrayConst", "A description" };
public:
// The constructor can be delegated to the base class.
using base_base::base_class;
// If you have an initialize() method, you must call the
// base class version.
virtual StatusCode initialize() override
{
return StatusCode::SUCCESS;
}
void doit (const EventContext& ctx) const
{
// Make a local context object.
Context myctx = context (ctx);
// Retrieve the constants.
float cf = m_cf (myctx);
int ci = m_ci (myctx);
CxxUtils::Array<2> ca = m_ca (myctx);

Constants that come from COOL are kept in a ToolConstants conditions object; the key of this object is set from the DBHandleKey property. Constants for multiple tools may be combined in a single ToolConstants object. Each tool has a string prefix (unique within such a group) that is added to the constant name when it is looked up in the ToolConstants object.

For data that are stored as inline COOL data, a conditions algorithm is used to populate a ToolConstants object from COOL.

Settings from COOL may be overridden with settings from job options. For values that are arrays, the value should be set as a string.

Definition at line 445 of file ToolWithConstants.h.

Member Typedef Documentation

◆ base_class

template<HasProperties BASE>
typedef ToolWithConstants CaloUtils::ToolWithConstants< BASE >::base_class

Shorthand for derived classes.

Definition at line 450 of file ToolWithConstants.h.

◆ Constant

template<HasProperties BASE>
template<CxxUtils::FromArrayrep T>
using CaloUtils::ToolWithConstants< BASE >::Constant = ToolConstant<T>

Alias for the Constant type.

Definition at line 463 of file ToolWithConstants.h.

◆ Context

template<HasProperties BASE>
using CaloUtils::ToolWithConstants< BASE >::Context = CaloUtils::ToolConstantsContext

Convenient alias for the Context type.

Definition at line 458 of file ToolWithConstants.h.

Member Function Documentation

◆ context()

template<HasProperties BASE>
Context CaloUtils::ToolWithConstants< BASE >::context ( const EventContext &  ctx) const

Create a Context object.

This can then be passed to Constant::operator().

◆ initialize()

template<HasProperties BASE>
virtual StatusCode CaloUtils::ToolWithConstants< BASE >::initialize ( )
overridevirtual

◆ mergeConstants()

template<HasProperties BASE>
virtual StatusCode CaloUtils::ToolWithConstants< BASE >::mergeConstants ( CaloRec::ToolConstants out,
const EventContext &  ctx 
) const
overridevirtual

Merge our constants into out with the proper prefix.

Parameters
[out]outObject to receive our constants.
ctxEvent context.

◆ toolType()

template<HasProperties BASE>
virtual const std::string& CaloUtils::ToolWithConstants< BASE >::toolType ( ) const
virtual

Return the name of the type of this tool.

A saved set of constants includes both the C++ class name and a version number. Normally, the class name is taken from the Gaudi type() method, but that may be changed by overriding this method. This can be used, for example, when there are tools with distinct C++ classes but which are yet similar enough to combine together.

◆ toolVersion()

template<HasProperties BASE>
virtual int CaloUtils::ToolWithConstants< BASE >::toolVersion ( ) const
virtual

Return the version number for this tool.

A saved set of constants includes both the C++ class name and a version number. The idea is that the version number can be bumped whenever there's a backwards-incompatible change; this gives some protection against trying to use an old version of a tool with an incompatible newer set of constants.

If you want a tool to have a version number, override this method. Otherwise, it will default to a version number of 0.

◆ writeConstants()

template<HasProperties BASE>
virtual void CaloUtils::ToolWithConstants< BASE >::writeConstants ( std::ostream &  stream,
const std::string &  name,
const EventContext &  ctx 
) const
virtual

Dump method (for debugging)

Parameters
streamOstream to which to write.
nameName to go in output
ctxEvent context.

Friends And Related Function Documentation

◆ CaloUtils::ToolConstant

template<HasProperties BASE>
template<CxxUtils::FromArrayrep T>
friend class CaloUtils::ToolConstant
friend

Definition at line 531 of file ToolWithConstants.h.

Member Data Documentation

◆ m_DBHandle

template<HasProperties BASE>
SG::ReadCondHandleKey<CaloRec::ToolConstants> CaloUtils::ToolWithConstants< BASE >::m_DBHandle { this, "DBHandleKey", "", "" }
private

Handle to a ToolConstants conditions object.

Definition at line 534 of file ToolWithConstants.h.

◆ m_impl

template<HasProperties BASE>
ToolWithConstantsImpl CaloUtils::ToolWithConstants< BASE >::m_impl { this->name(), m_prefix, m_DBHandle }
private

Internal implementation object.

Definition at line 542 of file ToolWithConstants.h.

◆ m_isdummy

template<HasProperties BASE>
Constant<bool> CaloUtils::ToolWithConstants< BASE >::m_isdummy {this, "isDummy", false }
private

If true, then this is a dummy tool that should not be executed.

This is used for the case of reading from COOL using hierarchical tags: we need to have such tags associated with some object in each folder, regardless of whether or not the correction from that folder is actually used. [Every folder that IOVDbSvc knows about at configuration time needs to have a valid object for the configured tag, else IOVDbSvc will raise a fatal error. But we don't know at configuration time which folders we're actually going to need, so we gotta configure all of them.]

Definition at line 560 of file ToolWithConstants.h.

◆ m_order

template<HasProperties BASE>
Constant<int> CaloUtils::ToolWithConstants< BASE >::m_order { this, "order", 0 }
private

Used to fix the ordering of tools when we're initializing from COOL based on a hierarchical tag.

Tools should be executed in order of increasing m_order.

Definition at line 547 of file ToolWithConstants.h.

◆ m_prefix

template<HasProperties BASE>
StringProperty CaloUtils::ToolWithConstants< BASE >::m_prefix { this, "prefix", "", "" }
private

Prefix for finding our constants within the ToolConstants object.

Definition at line 538 of file ToolWithConstants.h.


The documentation for this class was generated from the following file:
CaloUtils::ToolWithConstants::Context
CaloUtils::ToolConstantsContext Context
Convenient alias for the Context type.
Definition: ToolWithConstants.h:458
CaloUtils::ToolWithConstants::initialize
virtual StatusCode initialize() override
Initialize method.
WriteCaloSwCorrections.ca
ca
Definition: WriteCaloSwCorrections.py:28
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
CxxUtils::Array< 2 >
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
CaloUtils::ToolWithConstants::context
Context context(const EventContext &ctx) const
Create a Context object.
CaloUtils::ToolWithConstants
Hold constants for a tool.
Definition: ToolWithConstants.h:447