10#include <framework/logging/Logger.h>
31 template <
class BaseMeasurementCreatorType>
41 const std::string& creatorName = creatorWithParameterDictionary.first;
42 const std::map<std::string, std::string>& parameterDictionary = creatorWithParameterDictionary.second;
44 B2DEBUG(100,
"Creating measurement creator with name " << creatorName);
47 if (creatorPointer ==
nullptr) {
48 B2FATAL(
"Can not create a measurement creator with the name " << creatorName <<
". Creator not known to the factory.");
50 m_measurementCreators.push_back(std::move(std::shared_ptr<BaseMeasurementCreatorType>(creatorPointer)));
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);
67 const std::vector<std::shared_ptr<BaseMeasurementCreatorType>>&
getCreators()
const
73 std::map<std::string, std::map<std::string, std::string>>&
getParameters()
79 void setParameters(
const std::map<std::string, std::map<std::string, std::string>>& creatorsWithParametersDictionary)
This is the base class for all MeasurementCreatorFactories used in the MeasurementCreatorModule.
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.
std::map< std::string, std::map< std::string, std::string > > & getParameters()
Return a reference to the parameters you can use in the module.
BaseMeasurementCreatorType CreatorType
Typedef for convenience.
std::map< std::string, std::map< std::string, std::string > > m_creatorsWithParametersDictionary
The map of dictionaries of the parameters.
std::vector< std::shared_ptr< BaseMeasurementCreatorType > > m_measurementCreators
A vector with the measurement creators.
const std::vector< std::shared_ptr< BaseMeasurementCreatorType > > & getCreators() const
Return the creators to the module.
void setParameters(const std::map< std::string, std::map< std::string, std::string > > &creatorsWithParametersDictionary)
Set the parameters.
Abstract base class for different kinds of events.