68 #include <TObjArray.h> 90 #ifdef _INC_CREATION_ALICHEB3D_ 91 AliCheb3D(
const char* funName, Int_t DimOut,
const Float_t *bmin,
const Float_t *bmax, Int_t *
npoints, Float_t prec=1E-6,
const Float_t* precD=0);
92 AliCheb3D(
void (*ptr)(
float*,
float*), Int_t DimOut, Float_t *bmin,Float_t *bmax, Int_t *npoints, Float_t prec=1E-6,
const Float_t* precD=0);
93 AliCheb3D(
void (*ptr)(
float*,
float*),
int DimOut, Float_t *bmin,Float_t *bmax, Int_t *npX,Int_t *npY,Int_t *npZ, Float_t prec=1E-6,
const Float_t* precD=0);
94 AliCheb3D(
void (*ptr)(
float*,
float*),
int DimOut, Float_t *bmin,Float_t *bmax, Float_t prec=1E-6, Bool_t run=kTRUE,
const Float_t* precD=0);
101 void Eval(
const Float_t *par, Float_t *
res);
102 Float_t
Eval(
const Float_t *par,
int idim);
103 void Eval(
const Double_t *par, Double_t *res);
104 Double_t
Eval(
const Double_t *par,
int idim);
106 void EvalDeriv(
int dimd,
const Float_t *par, Float_t *res);
107 void EvalDeriv2(
int dimd1,
int dimd2,
const Float_t *par,Float_t *res);
108 Float_t
EvalDeriv(
int dimd,
const Float_t *par,
int idim);
109 Float_t
EvalDeriv2(
int dimd1,
int dimd2,
const Float_t *par,
int idim);
110 void EvalDeriv3D(
const Float_t *par, Float_t dbdr[3][3]);
111 void EvalDeriv3D2(
const Float_t *par, Float_t dbdrdr[3][3][3]);
112 void Print(
const Option_t* opt=
"")
const;
113 Bool_t
IsInside(
const Float_t *par)
const;
114 Bool_t
IsInside(
const Double_t *par)
const;
127 #ifdef _INC_CREATION_ALICHEB3D_ 129 int*
GetNCNeeded(
float xyz[3],
int DimVar,
float mn,
float mx,
float prec, Int_t npCheck=30);
130 void EstimateNPoints(
float prec,
int gridBC[3][3],Int_t npd1=30,Int_t npd2=30,Int_t npd3=30);
131 void SaveData(
const char* outfile,Bool_t append=kFALSE)
const;
132 void SaveData(FILE* stream=stdout)
const;
137 TH1*
TestRMS(
int idim,
int npoints = 1000,TH1* histo=0);
138 static Int_t
CalcChebCoefs(
const Float_t *funval,
int np, Float_t *outCoefs, Float_t prec=-1);
145 void Clear(
const Option_t* option =
"");
146 void SetDimOut(
const int d,
const float* prec=0);
148 #ifdef _INC_CREATION_ALICHEB3D_ 188 for (
int i=3;i--;)
if (
fBMin[i]>par[i] || par[i]>
fBMax[i])
return kFALSE;
196 for (
int i=3;i--;)
if (
fBMin[i]>par[i] || par[i]>
fBMax[i])
return kFALSE;
248 for (
int ib=3;ib--;)
for (
int id=3;
id--;)
for (
int id1=3;id1--;)
292 #ifdef _BRING_TO_BOUNDARY_ 294 if (res<-1)
return -1;
295 if (res> 1)
return 1;
306 #ifdef _BRING_TO_BOUNDARY_ 308 if (res<-1)
return -1;
309 if (res> 1)
return 1;
Float_t Eval(const Float_t *par) const
int * GetNCNeeded(float xyz[3], int DimVar, float mn, float mx, float prec, Int_t npCheck=30)
Float_t GetBoundMin(int i) const
Float_t * GetBoundMax() const
TMethodCall * fUsrMacro
name of user macro containing the function of "void (*fcn)(float*,float*)" format ...
Float_t fArgsTmp[3]
number of used points in each dimension
void EvalDeriv2(int dimd1, int dimd2, const Float_t *par, Float_t *res)
Double_t MapToExternal(Double_t x, Int_t d) const
const Float_t * GetBScale() const
void SetDimOut(const int d, const float *prec=0)
AliCheb3DCalc * GetChebCalc(int i) const
void Eval(const Float_t *par, Float_t *res)
TH1 * TestRMS(int idim, int npoints=1000, TH1 *histo=0)
void Print(const Option_t *opt="") const
Float_t MapToInternal(Float_t x, Int_t d) const
void SetUsrFunction(const char *name)
Float_t EvalDeriv2(int dim1, int dim2, const Float_t *par) const
void EvalDeriv3D2(const Float_t *par, Float_t dbdrdr[3][3][3])
Float_t * GetBoundMin() const
TString fUsrFunName
start of grid for each dimension
Bool_t IsInside(const Float_t *par) const
Int_t fNPoints[3]
max possible number of coefs per parameterization
void EstimateNPoints(float prec, int gridBC[3][3], Int_t npd1=30, Int_t npd2=30, Int_t npd3=30)
Float_t EvalDeriv(int dim, const Float_t *par) const
Float_t MapToExternal(Float_t x, Int_t d) const
static const Float_t fgkMinPrec
Pointer to MethodCall for function from user macro.
void ShiftBound(int id, float dif)
Float_t * fResTmp
temporary vector for coefs caluclation
void SetPrecision(float prec)
Int_t fGridOffs[3]
temporary buffer for Chebyshef roots grid
void Clear(const Option_t *option="")
const Float_t * GetBOffset() const
void EvalDeriv(int dimd, const Float_t *par, Float_t *res)
AliCheb3D & operator=(const AliCheb3D &rhs)
void SaveData(const char *outfile, Bool_t append=kFALSE) const
static Int_t CalcChebCoefs(const Float_t *funval, int np, Float_t *outCoefs, Float_t prec=-1)
void LoadData(const char *inpFile)
void EvalDeriv3D(const Float_t *par, Float_t dbdr[3][3])
void DefineGrid(Int_t *npoints)
Float_t GetBoundMax(int i) const
TObjArray * GetChebCalcArray() const
void PrepareBoundaries(const Float_t *bmin, const Float_t *bmax)
Float_t GetPrecision() const
Float_t * fGrid
temporary vector for results of user function caluclation