ComPWA
Common Partial-Wave-Analysis Framework
FunctionTreeIntensity.cpp
Go to the documentation of this file.
4 #include "Data/DataSet.hpp"
5 
6 namespace ComPWA {
7 namespace FunctionTree {
8 FunctionTreeIntensity::FunctionTreeIntensity(std::shared_ptr<TreeNode> Tree_,
9  ParameterList Parameters_,
10  ParameterList Data_)
11  : Tree(Tree_), Parameters(Parameters_), Data(Data_) {
12  Tree->parameter();
13 }
14 
15 std::vector<double>
18  auto val =
19  std::dynamic_pointer_cast<Value<std::vector<double>>>(Tree->parameter());
20  return val->value();
21 }
22 
25 }
26 
28  const std::vector<double> &params) {
29  size_t pos = 0;
30  for (auto p : Parameters.doubleParameters()) {
31  p->setValue(params[pos]);
32  ++pos;
33  }
34 }
35 
36 std::vector<ComPWA::Parameter> FunctionTreeIntensity::getParameters() const {
37  std::vector<ComPWA::Parameter> params;
38  for (auto p : Parameters.doubleParameters()) {
39  params.push_back(ComPWA::Parameter{p->name(), p->value()});
40  }
41  return params;
42 }
43 
44 std::tuple<std::shared_ptr<ComPWA::FunctionTree::TreeNode>,
48  return std::make_tuple(Tree, Parameters);
49 }
50 
51 std::string FunctionTreeIntensity::print(int level) const {
52  return Tree->print(level);
53 }
54 
56  // just loop over the vectors and fill in the data
57  if (Data.mDoubleValues().size() > data.size()) {
58  std::stringstream ss;
59  ss << "FunctionTreeIntensity::updateDataContainers(): given data "
60  "container does not have enough variables! (required: "
61  << Data.mDoubleValues().size() << ", given: " << data.size() << ")";
62  throw std::out_of_range(ss.str());
63  }
64  for (size_t i = 0; i < Data.mDoubleValues().size(); ++i) {
65  Data.mDoubleValue(i)->setValue(data.at(Data.mDoubleValue(i)->name()));
66  }
67 }
68 
69 } // namespace FunctionTree
70 } // namespace ComPWA
Template implementation of Parameter for simple values.
FunctionTreeIntensity(std::shared_ptr< TreeNode > Tree_, ParameterList Parameters_, ParameterList Data_)
void updateParametersFrom(const std::vector< double > &params)
It is important to input the vector in the same length and order as defined in the getParameters() me...
std::vector< double > evaluate(const ComPWA::DataMap &data) noexcept
std::tuple< std::shared_ptr< ComPWA::FunctionTree::TreeNode >, ComPWA::FunctionTree::ParameterList > bind(const ComPWA::DataMap &data)
virtual std::vector< std::shared_ptr< Value< std::vector< double > > > > & mDoubleValues()
std::vector< ComPWA::Parameter > getParameters() const
void updateDataContainers(ParameterList Data, const ComPWA::DataMap &data)
std::unordered_map< std::string, std::vector< double > > DataMap
Definition: Function.hpp:15
void updateDataContainers(const ComPWA::DataMap &data)
virtual T value() const
Definition: Value.hpp:45
virtual std::vector< std::shared_ptr< FitParameter > > & doubleParameters()
TreeNode class.
This class provides a list of parameters and values of different types.
virtual std::shared_ptr< Value< std::vector< double > > > mDoubleValue(size_t i) const