17#ifndef ALICEO2_GPUCOMMON_TPCFASTTRANSFORMATION_Spline1DHelperOld_H
18#define ALICEO2_GPUCOMMON_TPCFASTTRANSFORMATION_Spline1DHelperOld_H
36template <
typename DataT>
73 double xMin,
double xMax,
74 double x[],
double f[], int32_t nDataPoints);
78 double xMin,
double xMax, std::function<
void(
double x,
double f[])> F,
79 int32_t nAuxiliaryDataPoints = 4);
83 double xMin,
double xMax, std::function<
void(
double x,
double f[])> F,
84 int32_t nAuxiliaryDataPoints = 4);
88 double xMin,
double xMax, std::function<
void(
double x,
double f[])> F);
99 void approximateFunction(DataT* Fparameters,
double xMin,
double xMax, std::function<
void(
double x,
double f[])> F)
const;
131 double& cSl,
double& cDl,
double& cSr,
double& cDr);
134 double& cSl,
double& cDl,
double& cSr,
double& cDr);
137 double& cSl,
double& cDl,
double& cSr,
double& cDr);
140 double& cSl,
double& cDl,
double& cSr,
double& cDr);
143 double& cSl,
double& cDl,
double& cSr,
double& cDr);
145 double& cSl,
double& cDl,
double& cSr,
double& cDr);
150#if !defined(GPUCA_GPUCODE) && !defined(GPUCA_STANDALONE)
152 static int32_t test(const bool draw = 0, const bool drawDataPoints = 1);
157 int32_t storeError(int32_t code,
const char*
msg);
159 std::string mError =
"";
164 int32_t mFdimensions;
165 std::vector<DataPoint> mDataPoints;
166 std::vector<int32_t> mKnotDataPoints;
167 std::vector<double> mLSMmatrixFull;
168 std::vector<double> mLSMmatrixSderivatives;
169 std::vector<double> mLSMmatrixSvalues;
Definition of Spline1D class.
static void getDDScoefficientsLeft(const typename Spline1D< double >::Knot &knotL, double &cSl, double &cDl, double &cSr, double &cDr)
void bandGauss(double A[], double b[], int32_t n)
_______________ Main functionality ________________________
const char * getLastError() const
Gives error string.
~Spline1DHelperOld()=default
Destructor.
Spline1DHelperOld()
_____________ Constructors / destructors __________________________
void approximateFunction(Spline1DContainer< DataT > &spline, double xMin, double xMax, std::function< void(double x, double f[])> F, int32_t nAuxiliaryDataPoints=4)
Create best-fit spline parameters for a given input function F.
static void getScoefficients(const typename Spline1D< double >::Knot &knotL, double u, double &cSl, double &cDl, double &cSr, double &cDr)
static void getDScoefficients(const typename Spline1D< double >::Knot &knotL, double u, double &cSl, double &cDl, double &cSr, double &cDr)
int32_t getKnotDataPoint(int32_t iknot) const
static void getDDScoefficientsRight(const typename Spline1D< double >::Knot &knotL, double &cSl, double &cDl, double &cSr, double &cDr)
void approximateDataPoints(Spline1DContainer< DataT > &spline, double xMin, double xMax, double x[], double f[], int32_t nDataPoints)
Create best-fit spline parameters for a given input function F.
void approximateFunctionGradually(Spline1DContainer< DataT > &spline, double xMin, double xMax, std::function< void(double x, double f[])> F, int32_t nAuxiliaryDataPoints=4)
Create best-fit spline parameters gradually for a given input function F.
void copySfromDataPoints(DataT *Fparameters, const double DataPointF[]) const
a tool for the gradual approximation: set spline values S_i at knots == function values
void approximateFunctionClassic(Spline1DContainer< DataT > &spline, double xMin, double xMax, std::function< void(double x, double f[])> F)
Create classic spline parameters for a given input function F.
static void getDDScoefficients(const typename Spline1D< double >::Knot &knotL, double u, double &cSl, double &cDl, double &cSr, double &cDr)
const Spline1D< double > & getSpline() const
_______________ Utilities ________________________
static void getDDDScoefficients(const typename Spline1D< double >::Knot &knotL, double &cSl, double &cDl, double &cSr, double &cDr)
int32_t setSpline(const Spline1DContainer< DataT > &spline, int32_t nFdimensions, int32_t nAuxiliaryDataPoints)
_______________ Interface for a step-wise construction of the best-fit spline _______________________...
Spline1DHelperOld & operator=(const Spline1DHelperOld &)=default
Assignment operator: disabled.
void approximateDerivatives(DataT *Fparameters, const double DataPointF[]) const
int32_t getNumberOfDataPoints() const
number of data points
const DataPoint & getDataPoint(int32_t ip) const
Spline1DHelperOld(const Spline1DHelperOld &)=default
Copy constructor: disabled.
GLboolean GLboolean GLboolean b
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
Helper structure for 1D spline construction.
double cZ0
a coefficient for s'0
double cS1
a coefficient for s1
double cS0
a coefficient for s0
bool isKnot
is the point placed at a knot
int32_t iKnot
index of the left knot of the segment
double cZ1
a coefficient for s'1
uint64_t const void const *restrict const msg