Belle II Software  release-05-01-25
ParameterVariant.cc
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2015 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Oliver Frost *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 #include <tracking/trackFindingCDC/utilities/ParameterVariant.h>
11 
12 #include <framework/core/ModuleParamList.templateDetails.h>
13 #include <framework/core/ModuleParam.templateDetails.h>
14 
15 #include <framework/logging/Logger.h>
16 
17 using namespace Belle2;
18 using namespace TrackFindingCDC;
19 
21  const std::string& paramName)
22  : m_moduleParamList(moduleParamList)
23  , m_paramName(paramName)
24 {
25 }
26 
28 template <class T>
29 void AssignParameterVisitor::operator()(const T& t) const
30 {
31  B2DEBUG(200, "Received parameter of type " << ModuleParam<T>::TypeInfo());
32  m_moduleParamList->getParameter<T>(m_paramName).setDefaultValue(t);
33 }
34 
35 // Make explicit template function instances of
36 // namespace Belle2 {
37 // namespace TrackingFindingCDC {
38 // /// template<typename T> AssignParameterVisitor::operator()(const T&) const;
39 // /// for each of the parameter types in ParameterVariant
40 // void instantiate_AssignParameterVisitor_operator() __attribute__((unused));
41 // void instantiate_AssignParameterVisitor_operator()
42 // {
43 // ModuleParamList moduleParamList;
44 // const std::string name = "";
45 // ParameterVariant value;
46 // AssignParameterVisitor psv(&moduleParamList, name);
47 // boost::apply_visitor(psv, value);
48 // }
49 // }
50 // }
51 // Does the same as above but explicit. The above however reacts to changes in the variant automatically.
52 // Make explicit template instances for each of the parameter types in FilterParamVariant
53 template void AssignParameterVisitor::operator()(const bool&) const;
54 template void AssignParameterVisitor::operator()(const int&) const;
55 template void AssignParameterVisitor::operator()(const double&) const;
56 template void AssignParameterVisitor::operator()(const std::string&) const;
57 template void AssignParameterVisitor::operator()(const std::vector<double>&) const;
58 template void AssignParameterVisitor::operator()(const std::vector<std::string>&) const;
59 
Belle2::TrackFindingCDC::AssignParameterVisitor::operator()
void operator()(const T &t) const
Function call that receives the parameter value from the boost::variant with the correct type.
Belle2::TrackFindingCDC::AssignParameterVisitor::m_moduleParamList
ModuleParamList * m_moduleParamList
Parameter list which contains the parameter to be set.
Definition: ParameterVariant.h:69
Belle2::ModuleParamList::getParameter
ModuleParam< T > & getParameter(const std::string &name) const
Returns a reference to a parameter.
Definition: ModuleParamList.templateDetails.h:90
Belle2::TrackFindingCDC::AssignParameterVisitor::AssignParameterVisitor
AssignParameterVisitor(ModuleParamList *moduleParamList, const std::string &paramName)
Constructor taking the module parameter list and the name of the parameter to be set from the boost::...
Definition: ParameterVariant.cc:20
Belle2::TrackFindingCDC::AssignParameterVisitor::m_paramName
std::string m_paramName
Name of the parameter to be set.
Definition: ParameterVariant.h:72
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::ModuleParam
A single parameter of the module.
Definition: DisplayUI.h:34
Belle2::ModuleParamList
The Module parameter list class.
Definition: ModuleParamList.h:46