ROOT logo
AliRoot » STEER » STEERBASE » AliCheb3D

class AliCheb3D: public TNamed

Function Members (Methods)

public:
AliCheb3D()
AliCheb3D(const AliCheb3D& src)
AliCheb3D(const char* inpFile)
AliCheb3D(FILE* stream)
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)
AliCheb3D(void (*)(float*,float*) ptr, Int_t DimOut, Float_t* bmin, Float_t* bmax, Int_t* npoints, Float_t prec = 1E-6, const Float_t* precD = 0)
AliCheb3D(void (*)(float*,float*) ptr, int DimOut, Float_t* bmin, Float_t* bmax, Float_t prec = 1E-6, Bool_t run = kTRUE, const Float_t* precD = 0)
AliCheb3D(void (*)(float*,float*) ptr, 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)
virtual~AliCheb3D()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
static Int_tCalcChebCoefs(const Float_t* funval, int np, Float_t* outCoefs, Float_t prec = -1)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual TObject*TNamed::Clone(const char* newname = "") const
virtual Int_tTNamed::Compare(const TObject* obj) const
virtual voidTNamed::Copy(TObject& named) const
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
voidEstimateNPoints(float prec, int** gridBC, Int_t npd1 = 30, Int_t npd2 = 30, Int_t npd3 = 30)
voidEval(const Float_t* par, Float_t* res)
Float_tEval(const Float_t* par, int idim)
voidEval(const Double_t* par, Double_t* res)
Double_tEval(const Double_t* par, int idim)
voidEvalDeriv(int dimd, const Float_t* par, Float_t* res)
Float_tEvalDeriv(int dimd, const Float_t* par, int idim)
voidEvalDeriv2(int dimd1, int dimd2, const Float_t* par, Float_t* res)
Float_tEvalDeriv2(int dimd1, int dimd2, const Float_t* par, int idim)
voidEvalDeriv3D(const Float_t* par, Float_t** dbdr)
voidEvalDeriv3D2(const Float_t* par, Float_t*** dbdrdr)
voidEvalUsrFunction(const Float_t* x, Float_t* res)
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual voidTNamed::FillBuffer(char*& buffer)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
Float_t*GetBoundMax() const
Float_tGetBoundMax(int i) const
Float_t*GetBoundMin() const
Float_tGetBoundMin(int i) const
AliCheb3DCalc*GetChebCalc(int i) const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const char*TObject::GetIconName() const
virtual const char*TNamed::GetName() const
int*GetNCNeeded(float* xyz, int DimVar, float mn, float mx, float prec, Int_t npCheck = 30)
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
Float_tGetPrecision() const
virtual const char*TNamed::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTNamed::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
voidInvertSign()
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tIsInside(const Float_t* par) const
Bool_tIsInside(const Double_t* par) const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTNamed::IsSortable() const
Bool_tTObject::IsZombie() const
voidLoadData(const char* inpFile)
voidLoadData(FILE* stream)
virtual voidTNamed::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
AliCheb3D&operator=(const AliCheb3D& rhs)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidPrint(Option_t* opt = "") const
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
voidSaveData(FILE* stream = stdout) const
voidSaveData(const char* outfile, Bool_t append = kFALSE) const
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
virtual voidTNamed::SetName(const char* name)MENU
virtual voidTNamed::SetNameTitle(const char* name, const char* title)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidTNamed::SetTitle(const char* title = "")MENU
virtual voidTObject::SetUniqueID(UInt_t uid)
voidSetUsrFunction(const char* name)
voidSetUsrFunction(void (*)(float*,float*) ptr)
voidShiftBound(int id, float dif)
virtual voidShowMembers(TMemberInspector&)
virtual Int_tTNamed::Sizeof() const
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
TH1*TestRMS(int idim, int npoints = 1000, TH1* histo = 0)
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
protected:
Int_tChebFit()
Int_tChebFit(int dmOut)
virtual voidClear(Option_t* option = "")
voidDefineGrid(Int_t* npoints)
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidEvalUsrFunction()
voidTObject::MakeZombie()
Float_tMapToExternal(Float_t x, Int_t d) const
Double_tMapToExternal(Double_t x, Int_t d) const
Float_tMapToInternal(Float_t x, Int_t d) const
Double_tMapToInternal(Double_t x, Int_t d) const
voidPrepareBoundaries(const Float_t* bmin, const Float_t* bmax)
voidSetDimOut(const int d, const float* prec = 0)
voidSetPrecision(float prec)

Data Members

protected:
Float_tfArgsTmp[3]! temporary vector for coefs caluclation
Float_tfBMax[3]max boundaries in each dimension
Float_tfBMin[3]min boundaries in each dimension
Float_tfBOffset[3]offset for boundary mapping to [-1:1] interval
Float_tfBScale[3]scale for boundary mapping to [-1:1] interval
TObjArrayfChebCalcChebyshev parameterization for each output dimension
Int_tfDimOutdimension of the ouput array
Float_t*fGrid! temporary buffer for Chebyshef roots grid
Int_tfGridOffs[3]! start of grid for each dimension
Int_tfMaxCoefs! max possible number of coefs per parameterization
Int_tfNPoints[3]! number of used points in each dimension
TStringTNamed::fNameobject identifier
Float_tfPrecrequested precision
Float_t*fResTmp! temporary vector for results of user function caluclation
TStringTNamed::fTitleobject title
TStringfUsrFunName! name of user macro containing the function of "void (*fcn)(float*,float*)" format
TMethodCall*fUsrMacro! Pointer to MethodCall for function from user macro
static const Float_tfgkMinPrecsmallest precision

Class Charts

Inheritance Chart:
TNamed
AliCheb3D

Function documentation

AliCheb3D()
 Default constructor
AliCheb3D(const AliCheb3D& src)
 read coefs from text file
AliCheb3D(const char* inpFile)
 read coefs from text file
AliCheb3D(FILE* stream)
 read coefs from stream
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)
 Construct the parameterization for the function
 funName : name of the file containing the function: void funName(Float_t * inp,Float_t * out)
 DimOut  : dimension of the vector computed by the user function
 bmin    : array of 3 elements with the lower boundaries of the region where the function is defined
 bmax    : array of 3 elements with the upper boundaries of the region where the function is defined
 npoints : array of 3 elements with the number of points to compute in each of 3 dimension
 prec    : max allowed absolute difference between the user function and computed parameterization on the requested grid
 precD   : optional array with precisions per output dimension (if >fgkMinPrec will override common prec)
AliCheb3D(void (*)(float*,float*) ptr, int DimOut, Float_t* bmin, Float_t* bmax, Float_t prec = 1E-6, Bool_t run = kTRUE, const Float_t* precD = 0)
 Construct the parameterization for the function
 ptr     : pointer on the function: void fun(Float_t * inp,Float_t * out)
 DimOut  : dimension of the vector computed by the user function
 bmin    : array of 3 elements with the lower boundaries of the region where the function is defined
 bmax    : array of 3 elements with the upper boundaries of the region where the function is defined
 npoints : array of 3 elements with the number of points to compute in each of 3 dimension
 prec    : max allowed absolute difference between the user function and computed parameterization on the requested grid
 precD   : optional array with precisions per output dimension (if >fgkMinPrec will override common prec)

AliCheb3D(void (*)(float*,float*) ptr, 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)
 Construct very economic  parameterization for the function
 ptr     : pointer on the function: void fun(Float_t * inp,Float_t * out)
 DimOut  : dimension of the vector computed by the user function
 bmin    : array of 3 elements with the lower boundaries of the region where the function is defined
 bmax    : array of 3 elements with the upper boundaries of the region where the function is defined
 npX     : array of 3 elements with the number of points to compute in each dimension for 1st component
 npY     : array of 3 elements with the number of points to compute in each dimension for 2nd component
 npZ     : array of 3 elements with the number of points to compute in each dimension for 3d  component
 prec    : max allowed absolute difference between the user function and computed parameterization on the requested grid
 precD   : optional array with precisions per output dimension (if >fgkMinPrec will override common prec)

AliCheb3D(void (*)(float*,float*) ptr, int DimOut, Float_t* bmin, Float_t* bmax, Float_t prec = 1E-6, Bool_t run = kTRUE, const Float_t* precD = 0)
 Construct very economic  parameterization for the function with automatic calculation of the root's grid
 ptr     : pointer on the function: void fun(Float_t * inp,Float_t * out)
 DimOut  : dimension of the vector computed by the user function
 bmin    : array of 3 elements with the lower boundaries of the region where the function is defined
 bmax    : array of 3 elements with the upper boundaries of the region where the function is defined
 prec    : max allowed absolute difference between the user function and computed parameterization on the requested grid
 precD   : optional array with precisions per output dimension (if >fgkMinPrec will override common prec)

AliCheb3D& operator=(const AliCheb3D& rhs)
 assignment operator

void Clear(Option_t* option = "")
 clear all dynamic structures

void Print(Option_t* opt = "") const
 print info

void PrepareBoundaries(const Float_t* bmin, const Float_t* bmax)
 Set and check boundaries defined by user, prepare coefficients for their conversion to [-1:1] interval

void EvalUsrFunction()
 call user supplied function
void SetUsrFunction(const char* name)
 load user macro with function definition and compile it
void SetUsrFunction(void (*)(float*,float*) ptr)
 assign user training function

void EvalUsrFunction(const Float_t* x, Float_t* res)
 evaluate user function value

Int_t CalcChebCoefs(const Float_t* funval, int np, Float_t* outCoefs, Float_t prec = -1)
 Calculate Chebyshev coeffs using precomputed function values at np roots.
 If prec>0, estimate the highest coeff number providing the needed precision

void DefineGrid(Int_t* npoints)
 prepare the grid of Chebyshev roots in each dimension
Int_t ChebFit()
 prepare parameterization for all output dimensions
Int_t ChebFit(int dmOut)
 prepare paramaterization of 3D function for dmOut-th dimension
void SaveData(const char* outfile, Bool_t append = kFALSE) const
 writes coefficients data to output text file, optionallt appending on the end of existing file
void SaveData(FILE* stream = stdout) const
 writes coefficients data to existing output stream

void InvertSign()
 invert the sign of all parameterizations
void LoadData(const char* inpFile)
 load coefficients data from txt file

void LoadData(FILE* stream)
 load coefficients data from stream

void SetDimOut(const int d, const float* prec = 0)
 init output dimensions
void ShiftBound(int id, float dif)
 modify the bounds of the grid

TH1* TestRMS(int idim, int npoints = 1000, TH1* histo = 0)
 fills the difference between the original function and parameterization (for idim-th component of the output)
 to supplied histogram. Calculations are done in npoints random points.
 If the hostgram was not supplied, it will be created. It is up to the user to delete it!
void EstimateNPoints(float prec, int** gridBC, Int_t npd1 = 30, Int_t npd2 = 30, Int_t npd3 = 30)
 Estimate number of points to generate a training data

int* GetNCNeeded(float* xyz, int DimVar, float mn, float mx, float prec, Int_t npCheck = 30)
 estimate needed number of chebyshev coefs for given function description in DimVar dimension
 The values for two other dimensions must be set beforehand

Bool_t IsInside(const Float_t* par) const
Bool_t IsInside(const Double_t* par) const
void Eval(const Float_t* par, Float_t* res)
void Eval(const Double_t* par, Double_t* res)
Double_t Eval(const Double_t* par, int idim)
Float_t Eval(const Float_t* par, int idim)
void EvalDeriv3D(const Float_t* par, Float_t** dbdr)
void EvalDeriv3D2(const Float_t* par, Float_t*** dbdrdr)
void EvalDeriv(int dimd, const Float_t* par, Float_t* res)
void EvalDeriv2(int dimd1, int dimd2, const Float_t* par, Float_t* res)
Float_t EvalDeriv(int dimd, const Float_t* par, int idim)
Float_t EvalDeriv2(int dimd1, int dimd2, const Float_t* par, int idim)
Float_t MapToInternal(Float_t x, Int_t d) const
Double_t MapToInternal(Double_t x, Int_t d) const
~AliCheb3D()
{Clear();}
AliCheb3DCalc* GetChebCalc(int i) const
{return (AliCheb3DCalc*)fChebCalc.UncheckedAt(i);}
Float_t GetBoundMin(int i) const
{return fBMin[i];}
Float_t GetBoundMax(int i) const
{return fBMax[i];}
Float_t* GetBoundMin() const
{return (float*)fBMin;}
Float_t* GetBoundMax() const
{return (float*)fBMax;}
Float_t GetPrecision() const
{return fPrec;}
void SetPrecision(float prec)
{fPrec = prec;}
Float_t MapToExternal(Float_t x, Int_t d) const
{return x/fBScale[d]+fBOffset[d];}
Double_t MapToExternal(Double_t x, Int_t d) const
{return x/fBScale[d]+fBOffset[d];}