17#ifndef ALICEO2_GPUCOMMON_TPCFASTTRANSFORMATION_Spline1DHelper_H
18#define ALICEO2_GPUCOMMON_TPCFASTTRANSFORMATION_Spline1DHelper_H
32template <
typename DataT>
54 double xMin,
double xMax,
55 const double vx[],
const double vf[], int32_t nDataPoints);
60 int32_t nAuxiliaryDataPoints = 4);
64 const double vx[],
const double vf[], int32_t nDataPoints);
68 int32_t nAuxiliaryDataPoints);
72 double xMin,
double xMax, std::function<
void(
double x,
double f[])> F);
81 double& cSl,
double& cDl,
double& cSr,
double& cDr);
84 double& cSl,
double& cDl,
double& cSr,
double& cDr);
87 double& cSl,
double& cDl,
double& cSr,
double& cDr);
90 double& cSl,
double& cDl,
double& cSr,
double& cDr);
93 double& cSl,
double& cDl,
double& cSr,
double& cDr);
95 double& cSl,
double& cDl,
double& cSr,
double& cDr);
100#if !defined(GPUCA_GPUCODE) && !defined(GPUCA_STANDALONE)
102 static int32_t test(const bool draw = 0, const bool drawDataPoints = 1);
107 int32_t storeError(int32_t code,
const char*
msg);
109 std::string mError =
"";
114 int32_t nAuxiliaryDataPoints, std::vector<double>& vx, std::vector<double>& vf);
Definition of Spline1D class.
Spline1DHelper(const Spline1DHelper &)=default
Copy constructor: disabled.
static void getScoefficients(const typename Spline1D< double >::KnotType &knotL, double u, double &cSl, double &cDl, double &cSr, double &cDr)
void approximateDataPoints(Spline1DContainer< DataT, FlatObject > &spline, double xMin, double xMax, const double vx[], const double vf[], int32_t nDataPoints)
_______________ Main functionality ________________________
const char * getLastError() const
Gives error string.
static void getDScoefficients(const typename Spline1D< double >::KnotType &knotL, double u, double &cSl, double &cDl, double &cSr, double &cDr)
void approximateFunction(Spline1DContainer< DataT, FlatObject > &spline, double xMin, double xMax, std::function< void(double x, double f[])> F, int32_t nAuxiliaryDataPoints=4)
Create best-fit spline parameters for a function F.
static void getDDScoefficients(const typename Spline1D< double >::KnotType &knotL, double u, double &cSl, double &cDl, double &cSr, double &cDr)
static void getDDScoefficientsRight(const typename Spline1D< double >::KnotType &knotL, double &cSl, double &cDl, double &cSr, double &cDr)
Spline1DHelper()
_____________ Constructors / destructors __________________________
void approximateFunctionGradually(Spline1DContainer< DataT, FlatObject > &spline, double xMin, double xMax, std::function< void(double x, double f[])> F, int32_t nAuxiliaryDataPoints)
Spline1DHelper & operator=(const Spline1DHelper &)=default
Assignment operator: disabled.
void approximateFunctionClassic(Spline1DContainer< DataT, FlatObject > &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 getDDDScoefficients(const typename Spline1D< double >::KnotType &knotL, double &cSl, double &cDl, double &cSr, double &cDr)
const Spline1D< double > & getSpline() const
_______________ Utilities ________________________
static void getDDScoefficientsLeft(const typename Spline1D< double >::KnotType &knotL, double &cSl, double &cDl, double &cSr, double &cDr)
void approximateDerivatives(Spline1DContainer< DataT, FlatObject > &spline, const double vx[], const double vf[], int32_t nDataPoints)
Approximate only derivatives assuming the spline values at knozts are already set.
~Spline1DHelper()=default
Destructor.
Forward declaration — specializations below select ClassDefNV based on FlatBase.
uint64_t const void const *restrict const msg