00001 #ifndef __BASIS_FUNC_EXPANSION_H__
00002 #define __BASIS_FUNC_EXPANSION_H__
00003
00004 #include "objects1d.h"
00005 #include "dataset.h"
00006 #include "parametermap.h"
00007
00008 class CBasisFunctionExpansion1d: public CObject1d, public CDataSet {
00009 public:
00010 double xmin, xmax;
00011 int min_deriv,max_deriv;
00012
00013
00014 CBasisFunctionExpansion1d(int _l=0, int _m=0, bool r=true, int N=1, double _xmin=0., double _xmax=100.0):
00015 CObject1d(_l,_m,r), CDataSet(N), xmin(_xmin), xmax(_xmax), min_deriv(0), max_deriv(0){}
00016 CBasisFunctionExpansion1d(const CBasisFunctionExpansion1d& h):
00017 CObject1d(h), CDataSet(h), xmin(h.xmin), xmax(h.xmax), min_deriv(h.min_deriv), max_deriv(h.max_deriv){}
00018
00019
00020 virtual ~CBasisFunctionExpansion1d( void ){}
00021
00022
00023 bool Read(const parameterMap& m);
00024 bool Write(parameterMap& m);
00025
00026
00027 double getValue(double x) const;
00028 double getError(double x) const;
00029 double getCovariance(double x1, double x2) const;
00030
00031
00032 virtual double basisFunction(double x, int i, int jderiv=0) const=0;
00033 double basisFunction(double x, int i, int jderiv=0)
00034 {return const_cast<const CBasisFunctionExpansion1d*>(this)->basisFunction(x,i,jderiv);}
00035
00036
00037 virtual void CopyState(const CBasisFunctionExpansion1d& a)
00038 {CDataSet::CopyState(a);CObject1d::CopyState(a);xmin=a.xmin;xmax=a.xmax;}
00039
00040
00041 virtual double getLeftSupport(int i) const=0;
00042 virtual double getRightSupport(int i) const=0;
00043
00044
00045 virtual bool setDim(int __ndata){return CDataSet::redim(__ndata);}
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062 };
00063
00064 #endif