00001 #include "func_expansion1d.h"
00002 #include <cmath>
00003
00005 bool CBasisFunctionExpansion1d::Read(const parameterMap& m){
00006 xmin=parameter::getD(m,"xmin",xmin);
00007 xmax=parameter::getD(m,"xmax",xmax);
00008 return CObject1d::Read(m) && CDataSet::Read(m);
00009 }
00010
00011
00012 bool CBasisFunctionExpansion1d::Write(parameterMap& m){
00013 parameter::set(m,"xmin",xmin);
00014 parameter::set(m,"xmax",xmax);
00015 return CObject1d::Write(m) && CDataSet::Write(m);
00016 }
00017
00019 double CBasisFunctionExpansion1d::getValue(double x) const{
00020 if ( (x<xmin)||(x>xmax) ) return 0.0;
00021 double sum=0.0;
00022 for (int i=0;i<ndata;++i){sum+=data[i]*basisFunction(x,i);}
00023 return sum;
00024 }
00025
00027 double CBasisFunctionExpansion1d::getError(double x) const{
00028 if ( (x<xmin)||(x>xmax) ) return 0.0;
00029 double sum=0.0;
00030 for (int i=0;i<ndata;++i){sum+=(uncert[i]*uncert[i]*basisFunction(x,i)*basisFunction(x,i));}
00031 return sqrt(sum);
00032 }
00033
00035 double CBasisFunctionExpansion1d::getCovariance(double x1, double x2) const{
00036 if ( (x1<xmin)||(x1>xmax) || (x2<xmin)||(x2>xmax) ) return 0.0;
00037 double sum=0.0;
00038 for (int i=0;i<ndata;++i){
00039 if (covmtx_is_active){
00040 for (int j=0;j<ndata;++j) sum+=covmtx[i][j]*basisFunction(x1,i)*basisFunction(x2,j);
00041 }
00042 else sum+=uncert[i]*uncert[i]*basisFunction(x1,i)*basisFunction(x2,i);
00043 }
00044 return sum;
00045 }
00046