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 {
25 public:
26// SplineTransfer();
27 SplineTransfer( const size_t& address, const std::string& name, const unsigned int& N, const double& min, const double& max );
28 void transfer( CompiledExpressionBase* destination ) override;
30 void set( const unsigned int& N, MinuitParameter* f );
31 void set( const unsigned int& N, const double& value );
32 void print() const override;
33 size_t size() const override { return 2*m_nKnots; }
34
35 SplineTransfer( const SplineTransfer&) = delete;
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,
51 const size_t& nKnots,
52 const double& min,
53 const double& max );
54
55 Spline( const Spline& spline, const Expression& x, DebugSymbols* db =nullptr );
56 void resolve( ASTResolver& resolver ) const override ;
57 std::string to_string(const ASTResolver* resolver=nullptr) const override;
58 operator Expression() ;
59 complex_t operator()() const override ;
61 Expression eval(DebugSymbols* db=nullptr) const ;
62
64 std::string m_name;
65 size_t m_nKnots;
66 double m_min;
67 double m_max;
70 };
71 Expression getSpline( const std::string& name, const Expression& x, const std::string& arrayName,
72 DebugSymbols* dbexpressions = nullptr, const bool& continueSpline = false );
73}
74
75#endif
(Internal) class to aide in the resolution of the dependencies of expression trees.
Definition ASTResolver.h:29
Expression for a fixed size array of values.
Definition Array.h:25
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:66
Expression operator()(const Expression &x, DebugSymbols *db)
Expression m_eval
Definition Spline.h:69
double m_max
Definition Spline.h:67
Array m_points
Definition Spline.h:63
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:64
size_t m_nKnots
Definition Spline.h:65
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:68
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:33
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