Belle II Software development
MeasurementCreatorFactory< BaseMeasurementCreatorType > Class Template Reference

This is the base class for all MeasurementCreatorFactories used in the MeasurementCreatorModule. More...

#include <MeasurementCreatorFactory.h>

Public Types

typedef BaseMeasurementCreatorType CreatorType
 Typedef for convenience.
 

Public Member Functions

void initialize ()
 Use the parameters given to the module and create the measurement creators from them.
 
virtual BaseMeasurementCreatorType * createMeasurementCreatorFromName (const std::string &) const
 Overload this method to create the measurement creators by their name.
 
const std::vector< std::shared_ptr< BaseMeasurementCreatorType > > & getCreators () const
 Return the creators to the module.
 
std::map< std::string, std::map< std::string, std::string > > & getParameters ()
 Return a reference to the parameters you can use in the module.
 
void setParameters (const std::map< std::string, std::map< std::string, std::string > > &creatorsWithParametersDictionary)
 Set the parameters.
 

Private Attributes

std::vector< std::shared_ptr< BaseMeasurementCreatorType > > m_measurementCreators
 A vector with the measurement creators.
 
std::map< std::string, std::map< std::string, std::string > > m_creatorsWithParametersDictionary
 The map of dictionaries of the parameters.
 

Detailed Description

template<class BaseMeasurementCreatorType>
class Belle2::MeasurementCreatorFactory< BaseMeasurementCreatorType >

This is the base class for all MeasurementCreatorFactories used in the MeasurementCreatorModule.

It knows about all MeasurementCreators for a given HitType and can setup the creators from the module parameters. You have to implement the createMeasurementCreatorFromName function - all other functions are already implemented in this base class. See the CDCMeasurementCreatorFactory for an example.

Definition at line 32 of file MeasurementCreatorFactory.h.

Member Typedef Documentation

◆ CreatorType

typedef BaseMeasurementCreatorType CreatorType

Typedef for convenience.

Definition at line 35 of file MeasurementCreatorFactory.h.

Member Function Documentation

◆ createMeasurementCreatorFromName()

virtual BaseMeasurementCreatorType * createMeasurementCreatorFromName ( const std::string &  ) const
inlinevirtual

Overload this method to create the measurement creators by their name.

Reimplemented in AdditionalMeasurementCreatorFactory, BKLMMeasurementCreatorFactory, CDCMeasurementCreatorFactory, EKLMMeasurementCreatorFactory, PXDMeasurementCreatorFactory, and SVDMeasurementCreatorFactory.

Definition at line 61 of file MeasurementCreatorFactory.h.

62 {
63 return nullptr;
64 }

◆ getCreators()

const std::vector< std::shared_ptr< BaseMeasurementCreatorType > > & getCreators ( ) const
inline

Return the creators to the module.

Definition at line 67 of file MeasurementCreatorFactory.h.

68 {
70 }
std::vector< std::shared_ptr< BaseMeasurementCreatorType > > m_measurementCreators
A vector with the measurement creators.

◆ getParameters()

std::map< std::string, std::map< std::string, std::string > > & getParameters ( )
inline

Return a reference to the parameters you can use in the module.

Definition at line 73 of file MeasurementCreatorFactory.h.

74 {
76 }
std::map< std::string, std::map< std::string, std::string > > m_creatorsWithParametersDictionary
The map of dictionaries of the parameters.

◆ initialize()

void initialize ( )
inline

Use the parameters given to the module and create the measurement creators from them.

Definition at line 38 of file MeasurementCreatorFactory.h.

39 {
40 for (const auto& creatorWithParameterDictionary : m_creatorsWithParametersDictionary) {
41 const std::string& creatorName = creatorWithParameterDictionary.first;
42 const std::map<std::string, std::string>& parameterDictionary = creatorWithParameterDictionary.second;
43
44 B2DEBUG(100, "Creating measurement creator with name " << creatorName);
45
46 BaseMeasurementCreatorType* creatorPointer = createMeasurementCreatorFromName(creatorName);
47 if (creatorPointer == nullptr) {
48 B2FATAL("Can not create a measurement creator with the name " << creatorName << ". Creator not known to the factory.");
49 }
50 m_measurementCreators.push_back(std::move(std::shared_ptr<BaseMeasurementCreatorType>(creatorPointer)));
51
52 for (const auto& parameterWithValue : parameterDictionary) {
53 const std::string& parameterName = parameterWithValue.first;
54 const std::string& parameterValue = parameterWithValue.second;
55 creatorPointer->setParameter(parameterName, parameterValue);
56 }
57 }
58 }
virtual BaseMeasurementCreatorType * createMeasurementCreatorFromName(const std::string &) const
Overload this method to create the measurement creators by their name.

◆ setParameters()

void setParameters ( const std::map< std::string, std::map< std::string, std::string > > &  creatorsWithParametersDictionary)
inline

Set the parameters.

Definition at line 79 of file MeasurementCreatorFactory.h.

80 {
81 m_creatorsWithParametersDictionary = std::move(creatorsWithParametersDictionary);
82 }

Member Data Documentation

◆ m_creatorsWithParametersDictionary

std::map<std::string, std::map<std::string, std::string> > m_creatorsWithParametersDictionary
private

The map of dictionaries of the parameters.

Fill it with the module parameters.

Definition at line 89 of file MeasurementCreatorFactory.h.

◆ m_measurementCreators

std::vector<std::shared_ptr<BaseMeasurementCreatorType> > m_measurementCreators
private

A vector with the measurement creators.

Is filled in initialize.

Definition at line 86 of file MeasurementCreatorFactory.h.


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