ATLAS Offline Software
|
Type-safe wrapper for multiple-target associator tools. More...
#include <MultiAssociationTool.h>
Public Member Functions | |
MultiAssociationTool (const std::string &type, const std::string &name, const IInterface *parent) | |
Standard Gaudi tool constructor. More... | |
virtual const std::type_info & | fromTypeinfo () const |
Return the std::type_info for the source of the association. More... | |
virtual StatusCode | resetUntyped (const void *p) |
Start the iteration for a new association. More... | |
virtual StatusCode | reset (const FROM_T &p)=0 |
Start the iteration for a new association. More... | |
virtual const std::type_info & | elementTypeinfo () const |
Return the element type for the target of the association. More... | |
virtual const void * | nextUntyped () |
Return a pointer to the next element in the association. More... | |
virtual const FROM_T * | next ()=0 |
Return a pointer to the next element in the association. More... | |
virtual void | releaseElementUntyped (const void *p) |
Release an object retrieved from the association. More... | |
virtual void | releaseElement (const FROM_T *p) |
Release an object retrieved from the association. More... | |
virtual StatusCode | configureD3PD (IAddVariable *tree, const std::type_info &ti) |
Configure during initialization: type-check. More... | |
StatusCode | configureD3PD (IAddVariable *tree) |
Configure the parent tree. More... | |
virtual StatusCode | book () |
Create any needed tuple variables. More... | |
virtual StatusCode | addVariable (const std::string &name, const std::type_info &ti, void *&ptr, const std::string &docstring="", const void *defval=0) |
Add a variable to the tuple. More... | |
template<class T > | |
StatusCode | addVariable (const std::string &name, T *&ptr, const std::string &docstring="") |
Make the template implementation from IAddVariable visible. More... | |
template<class T , class U > | |
StatusCode | addVariable (const std::string &name, T *&ptr, const std::string &docstring, const U &defval) |
Make the template implementation from IAddVariable visible. More... | |
virtual StatusCode | addVariable (const std::string &name, const std::type_info &ti, void *&ptr, const std::string &docstring="", const void *defval=0)=0 |
Make the template implementation from IAddVariable visible. More... | |
template<class T > | |
StatusCode | addVariable (const std::string &name, T *&ptr, const std::string &docstring="") |
Add a variable to the tuple. More... | |
template<class T , class U > | |
StatusCode | addVariable (const std::string &name, T *&ptr, const std::string &docstring, const U &defval) |
Add a variable to the tuple. More... | |
virtual StatusCode | addDimensionedVariable (const std::string &name, const std::type_info &ti, void *&ptr, const std::string &dim, const std::string &docstring="", const void *defval=0) |
Add a variable to the tuple. More... | |
template<class T > | |
StatusCode | addDimensionedVariable (const std::string &name, T *&ptr, const std::string &dim, const std::string &docstring="") |
Add a variable to the tuple. More... | |
template<class T , class U > | |
StatusCode | addDimensionedVariable (const std::string &name, T *&ptr, const std::string &dim, const std::string &docstring, const U &defval) |
Add a variable to the tuple. More... | |
virtual StatusCode | addDimensionedVariable (const std::string &name, const std::type_info &ti, void *&ptr, const std::string &dim, const std::string &docstring="", const void *defval=0)=0 |
Add a variable to the tuple. More... | |
template<class T > | |
StatusCode | addDimensionedVariable (const std::string &name, T *&ptr, const std::string &dim, const std::string &docstring="") |
Add a variable to the tuple. More... | |
template<class T , class U > | |
StatusCode | addDimensionedVariable (const std::string &name, T *&ptr, const std::string &dim, const std::string &docstring, const U &defval) |
Add a variable to the tuple. More... | |
Protected Member Functions | |
const void * | doConversion (const void *p) |
Helper to convert pointers to source objects. More... | |
StatusCode | configureMulti (D3PD::IAddVariable *tree, const std::type_info &ti, const std::vector< const std::type_info * > &tis, size_t &which) |
Configure during initialization: type-check. More... | |
Protected Attributes | |
ObjectMetadata | m_metadata |
Metadata about the variables created by this object. More... | |
Private Attributes | |
std::string | m_prefix |
Parameter: source object prefix. More... | |
std::string | m_blockName |
Property: the name of this block. More... | |
TypeConverter | m_inputConverter |
Helper to convert source object pointers. More... | |
const std::string & | m_suffix |
Reference to the variable suffix. More... | |
IAddVariable * | m_tree |
Reference to the block name. More... | |
Static Private Attributes | |
static const std::string | s_emptyString |
Used to provide a default value for blockName. More... | |
Type-safe wrapper for multiple-target associator tools.
This can serve as the base class for a multiple-target association tool, that associates from one source object to a set of target objects.
The template arguments give the types of the objects.
Derived classes should define the reset()
and next()
methods to carry out the association, and optionally releaseElement()
.
You may also specify that the tool can take as input any one of a set of types. To do this, use D3PD::Types<...> as the template argument; for example
In this case, you should define separate reset
methods taking both Obj1
and Obj2
.
If the output type TO_T
is also Types
, then the corresponding output type for each input type is taken from it. In this case, there are multiple next()
methods, each returning a different type. In order to be able to differentiate between these via overload resolution, the next()
methods take a dummy pointer argument giving the source type. Examples:
Note that the choice of which input type to use is made once, during configuration; it is not dynamic.
Definition at line 156 of file MultiAssociationTool.h.
D3PD::MultiAssociationTool< FROM_T, TO_T >::MultiAssociationTool | ( | const std::string & | type, |
const std::string & | name, | ||
const IInterface * | parent | ||
) |
|
virtualinherited |
Add a variable to the tuple.
name | The name of the variable. |
type | The type of the variable. |
ptr | Pointer to the type of the variable. The pointer need not be initialized; the D3PD software will set the pointer prior to calling fill() . |
dim | Dimension for the variable. (Presently unimplemented!) |
docstring | Documentation string for this variable. |
defval | Pointer to the default value to use for this variable. Null for no default (generally means to fill with zeros). Of the type given by ti . Only works for basic types. |
If called from the constructor, the only effect is to clear ptr
.
Implements D3PD::IAddVariable.
Definition at line 123 of file AddVariable.cxx.
|
inherited |
Add a variable to the tuple.
name | The name of the variable. |
type | The type of the variable. |
ptr | Pointer to the type of the variable. The pointer need not be initialized; the D3PD software will set the pointer prior to calling fill() . |
dim | Dimension for the variable. (Presently unimplemented!) |
docstring | Documentation string for this variable. |
defval | Pointer to the default value to use for this variable. Null for no default (generally means to fill with zeros). Of the type given by ti . Only works for basic types. |
If called from the constructor, the only effect is to clear ptr
.
|
inherited |
Add a variable to the tuple.
name | The name of the variable. |
ptr | Pointer to the type of the variable. The pointer need not be initialized; the D3PD software will set the pointer prior to calling fill() . |
dim | Dimension for the variable. (Presently unimplemented!) |
docstring | Documentation string for this variable. |
defval | Pointer to the default value to use for this variable. Only works for basic types. |
If called from the constructor, the only effect is to clear ptr
.
|
inherited |
Add a variable to the tuple.
name | The name of the variable. |
ptr | Pointer to the type of the variable. The pointer need not be initialized; the D3PD software will set the pointer prior to calling fill() . |
dim | Dimension for the variable. (Presently unimplemented!) |
docstring | Documentation string for this variable. |
defval | Pointer to the default value to use for this variable. Only works for basic types. |
If called from the constructor, the only effect is to clear ptr
.
|
inherited |
Add a variable to the tuple.
name | The name of the variable. |
ptr | Pointer to the type of the variable. The pointer need not be initialized; the D3PD software will set the pointer prior to calling fill() . |
dim | Dimension for the variable. (Presently unimplemented!) |
docstring | Documentation string for this variable. |
If called from the constructor, the only effect is to clear ptr
.
|
inherited |
Add a variable to the tuple.
name | The name of the variable. |
ptr | Pointer to the type of the variable. The pointer need not be initialized; the D3PD software will set the pointer prior to calling fill() . |
dim | Dimension for the variable. (Presently unimplemented!) |
docstring | Documentation string for this variable. |
If called from the constructor, the only effect is to clear ptr
.
|
virtualinherited |
Add a variable to the tuple.
name | The name of the variable. |
type | The type of the variable. |
ptr | Pointer to the type of the variable. The pointer need not be initialized; the D3PD software will set the pointer prior to calling fill() . |
docstring | Documentation string for this variable. |
defval | Pointer to the default value to use for this variable. Null for no default (generally means to fill with zeros). Of the type given by ti . Only works for basic types. |
If called from the constructor, the only effect is to clear ptr
.
Implements D3PD::IAddVariable.
Definition at line 85 of file AddVariable.cxx.
|
inherited |
Make the template implementation from IAddVariable
visible.
|
inherited |
Make the template implementation from IAddVariable
visible.
|
inherited |
Add a variable to the tuple.
name | The name of the variable. |
ptr | Pointer to the type of the variable. The pointer need not be initialized; the D3PD software will set the pointer prior to calling fill() . |
docstring | Documentation string for this variable. |
defval | Pointer to the default value to use for this variable. Only works for basic types. |
If called from the constructor, the only effect is to clear ptr
.
|
inherited |
Make the template implementation from IAddVariable
visible.
|
inherited |
Add a variable to the tuple.
name | The name of the variable. |
ptr | Pointer to the type of the variable. The pointer need not be initialized; the D3PD software will set the pointer prior to calling fill() . |
docstring | Documentation string for this variable. |
If called from the constructor, the only effect is to clear ptr
.
|
virtualinherited |
Create any needed tuple variables.
This is called at the start of the first event. The default implementation is a no-op.
Reimplemented in D3PD::ElectronJetDRAssociator, and D3PD::VertexTrackParticleAssociationTool.
Definition at line 92 of file MultiAssociationToolImpl.cxx.
|
inherited |
Configure the parent tree.
tree | The parent IAddVariable instance. |
Definition at line 61 of file AddVariable.cxx.
|
virtualinherited |
Configure during initialization: type-check.
tree | Our parent for tuple making. |
ti | Gives the type of the object being passed to resetUntyped . |
configureD3PD
should check that the type of the object coming as input (to getUntyped
) is compatible with what it expects, and raise an error otherwise.
Reimplemented in D3PD::ElectronJetDRAssociator, and D3PD::MultiAssociationTool< Types< T0 >, TO_T >.
Definition at line 51 of file MultiAssociationToolImpl.cxx.
|
protectedinherited |
Configure during initialization: type-check.
Alternate implementation for the case where we have to choose among multiple possible input types.
tree | Our parent for tuple making. | |
ti | Gives the type of the object being passed to getUntyped . | |
tis | List of possible input types that we can accept. | |
[out] | which | Index of the accepted type. |
configureMulti
should check that the type of the object coming as input (to getUntyped
) is compatible with what it expects, and raise an error otherwise.
Definition at line 74 of file MultiAssociationToolImpl.cxx.
Helper to convert pointers to source objects.
p | Source object, as a pointer to the type passed to configureD3PD . return Source object, as a pointer to the type given by fromTypeinfo . |
Definition at line 104 of file MultiAssociationToolImpl.cxx.
|
virtualinherited |
Return the element type for the target of the association.
I.e., nextUntyped
returns a pointer to this type.
|
virtual |
Return the std::type_info
for the source of the association.
Implements D3PD::MultiAssociationToolImpl.
|
pure virtualinherited |
Return a pointer to the next element in the association.
Return 0 when the association has been exhausted.
|
virtualinherited |
Return a pointer to the next element in the association.
Return 0 when the association has been exhausted.
|
virtualinherited |
Release an object retrieved from the association.
p | The object to release. |
Call this when you are done with the object returned by next()
. The default implementation is a no-op, but if the association dynamically allocated the object which it returned, this gives it a chance to free it.
|
virtualinherited |
Release an object retrieved from the association.
p | The object to release. |
Call this when you are done with the object returned by nextUntyped()
. The default implementation is a no-op, but if the association dynamically allocated the object which it returned, this gives it a chance to free it.
|
pure virtual |
Start the iteration for a new association.
p | The object from which to associate. |
Implemented in D3PD::TruthParticleChildAssociationTool, D3PD::TruthParticleParentAssociationTool, D3PD::ConversionVertexAssociationTool, D3PD::ElectronJetDRAssociator, D3PD::TileCosmicMuonTileCellAssociationTool, D3PD::DRConeAssociationTool, D3PD::TileCellRawAssociationTool, and D3PD::TileCellDigitAssociationTool.
|
virtual |
Start the iteration for a new association.
p | The object from which to associate. |
|
privateinherited |
Property: the name of this block.
Definition at line 122 of file MultiAssociationToolImpl.h.
|
privateinherited |
Helper to convert source object pointers.
Definition at line 125 of file MultiAssociationToolImpl.h.
|
protectedinherited |
Metadata about the variables created by this object.
Definition at line 129 of file AddVariable.h.
|
privateinherited |
Parameter: source object prefix.
Definition at line 119 of file MultiAssociationToolImpl.h.
|
privateinherited |
Reference to the variable suffix.
Definition at line 137 of file AddVariable.h.
|
privateinherited |
Reference to the block name.
The parent IAddVariable
instance.
Definition at line 143 of file AddVariable.h.
|
staticprivateinherited |
Used to provide a default value for blockName.
Definition at line 41 of file AddVariable.h.