17#ifndef ALICEO2_GPUCOMMON_TPCFASTTRANSFORMATION_SPLINEHELPER_H
18#define ALICEO2_GPUCOMMON_TPCFASTTRANSFORMATION_SPLINEHELPER_H
39template <
typename DataT>
61 const double xMin[],
const double xMax[],
62 std::function<
void(
const double x[],
double f[])> F,
63 const int32_t nAxiliaryDataPoints[] =
nullptr);
72 DataT* Fparameters,
const double xMin[],
const double xMax[],
73 std::function<
void(
const double x[],
double f[])> F)
const;
77 DataT* Fparameters,
const double xMin[],
const double xMax[],
78 std::function<
void(
const std::vector<double>
x[],
double f[])> F,
79 uint32_t batchsize)
const;
83 DataT* Fparameters,
const double DataPointF[])
const;
96#if !defined(GPUCA_GPUCODE) && !defined(GPUCA_STANDALONE)
98 static int32_t
test(
const bool draw = 0,
const bool drawDataPoints = 1);
101 static int32_t
arraytopoints(int32_t point, int32_t
result[],
const int32_t numbers[], int32_t dim);
107 int32_t storeError(Int_t code,
const char*
msg);
110 int32_t mXdimensions;
111 int32_t mFdimensions;
112 int32_t mNumberOfParameters;
113 int32_t mNumberOfDataPoints;
114 std::vector<Spline1DHelperOld<DataT>> mHelpers;
117template <
typename DataT>
120 const double xMin[],
const double xMax[],
121 std::function<
void(
const double x[],
double f[])> F,
122 const int32_t nAxiliaryDataPoints[])
125 setSpline(spline, nAxiliaryDataPoints);
126 approximateFunction(spline.getParameters(), xMin, xMax, F);
127 DataT xxMin[spline.getXdimensions()];
128 DataT xxMax[spline.getXdimensions()];
129 for (int32_t
i = 0;
i < spline.getXdimensions();
i++) {
133 spline.setXrange(xxMin, xxMax);
136template <
typename DataT>
145 mXdimensions = spline.getXdimensions();
146 mFdimensions = spline.getYdimensions();
147 mNumberOfParameters = spline.getNumberOfParameters();
148 mNumberOfDataPoints = 1;
150 mHelpers.resize(mXdimensions);
151 for (int32_t
i = 0;
i < mXdimensions;
i++) {
152 int32_t np = (nAxiliaryPoints !=
nullptr) ? nAxiliaryPoints[
i] : 4;
153 if (mHelpers[
i].setSpline(spline.getGrid(
i), mFdimensions, np) != 0) {
154 ret = storeError(-2,
"SplineHelper::setSpline: error by setting an axis");
156 mNumberOfDataPoints *= mHelpers[
i].getNumberOfDataPoints();
Definition of Spline1DHelperOld class.
Definition of Spline1D class.
Definition of Spline class.
void approximateFunction(SplineContainer< DataT > &spline, const double xMin[], const double xMax[], std::function< void(const double x[], double f[])> F, const int32_t nAxiliaryDataPoints[]=nullptr)
_______________ Main functionality ________________________
static int32_t pointstoarray(const int32_t indices[], const int32_t numbers[], int32_t dim)
SplineHelper()
_____________ Constructors / destructors __________________________
int32_t getNumberOfDataPoints(int32_t dimX) const
int32_t getNumberOfDataPoints() const
static int32_t arraytopoints(int32_t point, int32_t result[], const int32_t numbers[], int32_t dim)
void approximateFunctionBatch(DataT *Fparameters, const double xMin[], const double xMax[], std::function< void(const std::vector< double > x[], double f[])> F, uint32_t batchsize) const
approximate std::function, output in Fparameters. F calculates values for a batch of points.
int32_t setSpline(const SplineContainer< DataT > &spline, const int32_t nAxiliaryPoints[])
_______________ Interface for a step-wise construction of the best-fit spline _______________________...
SplineHelper & operator=(const SplineHelper &)=delete
Assignment operator: disabled.
const char * getLastError() const
_______________ Utilities ________________________
~SplineHelper()=default
Destructor.
const Spline1DHelperOld< DataT > & getHelper(int32_t dimX) const
SplineHelper(const SplineHelper &)=delete
Copy constructor: disabled.
GLsizei GLenum const void * indices
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
FIXME: do not use data model tables.
uint64_t const void const *restrict const msg