17#ifndef ALICEO2_GPUCOMMON_TPCFASTTRANSFORMATION_Spline1DHelper_H
18#define ALICEO2_GPUCOMMON_TPCFASTTRANSFORMATION_Spline1DHelper_H
34template <
typename DataT>
56 double xMin,
double xMax,
57 const double vx[],
const double vf[], int32_t nDataPoints);
62 int32_t nAuxiliaryDataPoints = 4);
66 const double vx[],
const double vf[], int32_t nDataPoints);
70 int32_t nAuxiliaryDataPoints);
74 double xMin,
double xMax, std::function<
void(
double x,
double f[])> F);
83 double& cSl,
double& cDl,
double& cSr,
double& cDr);
86 double& cSl,
double& cDl,
double& cSr,
double& cDr);
89 double& cSl,
double& cDl,
double& cSr,
double& cDr);
92 double& cSl,
double& cDl,
double& cSr,
double& cDr);
95 double& cSl,
double& cDl,
double& cSr,
double& cDr);
97 double& cSl,
double& cDl,
double& cSr,
double& cDr);
102#if !defined(GPUCA_GPUCODE) && !defined(GPUCA_STANDALONE)
104 static int32_t test(const bool draw = 0, const bool drawDataPoints = 1);
109 int32_t storeError(int32_t code,
const char*
msg);
111 std::string mError =
"";
116 int32_t nAuxiliaryDataPoints, std::vector<double>& vx, std::vector<double>& vf);
Definition of Spline1D class.
Spline1DHelper(const Spline1DHelper &)=default
Copy constructor: disabled.
static void getDDScoefficientsRight(const typename Spline1D< double >::Knot &knotL, double &cSl, double &cDl, double &cSr, double &cDr)
const char * getLastError() const
Gives error string.
static void getDDScoefficientsLeft(const typename Spline1D< double >::Knot &knotL, double &cSl, double &cDl, double &cSr, double &cDr)
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 function F.
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.
void approximateDataPoints(Spline1DContainer< DataT > &spline, double xMin, double xMax, const double vx[], const double vf[], int32_t nDataPoints)
_______________ Main functionality ________________________
void approximateFunctionGradually(Spline1DContainer< DataT > &spline, double xMin, double xMax, std::function< void(double x, double f[])> F, int32_t nAuxiliaryDataPoints)
static void getDDScoefficients(const typename Spline1D< double >::Knot &knotL, double u, double &cSl, double &cDl, double &cSr, double &cDr)
Spline1DHelper()
_____________ Constructors / destructors __________________________
static void getDDDScoefficients(const typename Spline1D< double >::Knot &knotL, double &cSl, double &cDl, double &cSr, double &cDr)
Spline1DHelper & operator=(const Spline1DHelper &)=default
Assignment operator: disabled.
static void getDScoefficients(const typename Spline1D< double >::Knot &knotL, double u, double &cSl, double &cDl, double &cSr, double &cDr)
void approximateDerivatives(Spline1DContainer< DataT > &spline, const double vx[], const double vf[], int32_t nDataPoints)
Approximate only derivatives assuming the spline values at knozts are already set.
const Spline1D< double > & getSpline() const
_______________ Utilities ________________________
static void getScoefficients(const typename Spline1D< double >::Knot &knotL, double u, double &cSl, double &cDl, double &cSr, double &cDr)
~Spline1DHelper()=default
Destructor.
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
uint64_t const void const *restrict const msg