AmpGen 2.1
Loading...
Searching...
No Matches
Spline.h
Go to the documentation of this file.
1#ifndef AMPGEN_SPLINE_H
2#define AMPGEN_SPLINE_H
3
4#include <memory.h>
5#include <stddef.h>
6#include <memory>
7#include <string>
8#include <utility>
9#include <vector>
10
11#include <gsl/gsl_matrix.h>
12
13#include "AmpGen/Array.h"
14#include "AmpGen/Expression.h"
16#include "AmpGen/Types.h"
17
18namespace AmpGen {
19 class ASTResolver;
21 class MinuitParameter;
22
24 public:
25 // SplineTransfer();
26 SplineTransfer(const size_t &address, const std::string &name, const unsigned int &N, const double &min, const double &max);
27 void transfer(CompiledExpressionBase *destination) override;
29 void set(const unsigned int &N, MinuitParameter *f);
30 void set(const unsigned int &N, const double &value);
31 void print() const override;
32 size_t size() const override { return 2 * m_nKnots; }
33
34 SplineTransfer(const SplineTransfer &) = delete;
39
40 private:
41 gsl_matrix *m_transferMatrix = {nullptr};
42 std::vector<MinuitParameter *> m_parameters;
43 size_t m_nKnots;
44 double m_min;
45 double m_max;
46 };
47
48 class Spline : public IExpression {
49 public:
50 Spline(const std::string &name, const size_t &nKnots, const double &min, const double &max);
51
52 Spline(const Spline &spline, const Expression &x, DebugSymbols *db = nullptr);
53 void resolve(ASTResolver &resolver) const override;
54 std::string to_string(const ASTResolver *resolver = nullptr) const override;
55 operator Expression();
56 complex_t operator()() const override;
58 Expression eval(DebugSymbols *db = nullptr) const;
59
61 std::string m_name;
62 size_t m_nKnots;
63 double m_min;
64 double m_max;
67 };
68 Expression getSpline(const std::string &name, const Expression &x, const std::string &arrayName, DebugSymbols *dbexpressions = nullptr,
69 const bool &continueSpline = false);
70}
71
72#endif
(Internal) class to aide in the resolution of the dependencies of expression trees.
Definition ASTResolver.h:30
Expression for a fixed size array of values.
Definition Array.h:23
size_t address() const
CacheTransfer(const size_t &address, const std::string &name, const double &value=0, const size_t &size=1)
virtual std::string name() const
Base class for compiled expressions, i.e.
Wrapper class for shared_ptrs to virtual expressions for use in conjunction with operators to build e...
Definition Expression.h:135
Virtual base class for other expression tree components.
Definition Expression.h:116
void resolve(ASTResolver &resolver) const override
Resolve the dependencies of a tree using an ASTResolver, which keeps track of parameters,...
double m_min
Definition Spline.h:63
Expression operator()(const Expression &x, DebugSymbols *db)
Expression m_eval
Definition Spline.h:66
double m_max
Definition Spline.h:64
Array m_points
Definition Spline.h:60
std::string to_string(const ASTResolver *resolver=nullptr) const override
Called to convert the Expression tree into source code.
std::string m_name
Definition Spline.h:61
size_t m_nKnots
Definition Spline.h:62
Expression eval(DebugSymbols *db=nullptr) const
Spline(const std::string &name, const size_t &nKnots, const double &min, const double &max)
Expression m_x
Definition Spline.h:65
Spline(const Spline &spline, const Expression &x, DebugSymbols *db=nullptr)
complex_t operator()() const override
Evaluate the expression using the tree, will generally be very slow but ocassionally useful for debug...
SplineTransfer & operator=(SplineTransfer &&)=delete
SplineTransfer(SplineTransfer &&)=delete
SplineTransfer(const SplineTransfer &)=delete
void set(const unsigned int &N, const double &value)
void transfer(CompiledExpressionBase *destination) override
SplineTransfer & operator=(const SplineTransfer &)=delete
void set(const unsigned int &N, MinuitParameter *f)
SplineTransfer(const size_t &address, const std::string &name, const unsigned int &N, const double &min, const double &max)
size_t size() const override
Definition Spline.h:32
void print() const override
std::complex< real_t > complex_t
Definition Types.h:7
Expression getSpline(const std::string &name, const Expression &x, const std::string &arrayName, DebugSymbols *dbexpressions=nullptr, const bool &continueSpline=false)
std::vector< DebugSymbol > DebugSymbols
Definition Expression.h:111