![]() |
ATLAS Offline Software
|
Hold constants for a tool. More...
#include <ToolWithConstants.h>
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::ToolConstants > | m_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 |
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.
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.
typedef ToolWithConstants CaloUtils::ToolWithConstants< BASE >::base_class |
Shorthand for derived classes.
Definition at line 450 of file ToolWithConstants.h.
using CaloUtils::ToolWithConstants< BASE >::Constant = ToolConstant<T> |
Alias for the Constant type.
Definition at line 463 of file ToolWithConstants.h.
using CaloUtils::ToolWithConstants< BASE >::Context = CaloUtils::ToolConstantsContext |
Convenient alias for the Context type.
Definition at line 458 of file ToolWithConstants.h.
Context CaloUtils::ToolWithConstants< BASE >::context | ( | const EventContext & | ctx | ) | const |
Create a Context
object.
This can then be passed to Constant::operator()
.
|
overridevirtual |
Initialize method.
Derived classes must call this.
Reimplemented in CaloClusterCorrection, CaloSwGap_v2, CaloFillRectangularCluster, CaloTopoEMlayers, CaloSwGap_v3, CaloSwDeadOTX_back, CaloSwDeadOTX_ps, CaloSwGap_g3, CaloClusterBadChannelList, CaloDummyCorrection, CaloTopoEMGap, and CaloUtils::ToolWithConstantsTestTool.
|
overridevirtual |
Merge our constants into out
with the proper prefix.
[out] | out | Object to receive our constants. |
ctx | Event context. |
|
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.
|
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.
|
virtual |
Dump method (for debugging)
stream | Ostream to which to write. |
name | Name to go in output |
ctx | Event context. |
|
friend |
Definition at line 531 of file ToolWithConstants.h.
|
private |
Handle to a ToolConstants conditions object.
Definition at line 534 of file ToolWithConstants.h.
|
private |
Internal implementation object.
Definition at line 542 of file ToolWithConstants.h.
|
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.
|
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.
|
private |
Prefix for finding our constants within the ToolConstants object.
Definition at line 538 of file ToolWithConstants.h.