FittingFunctionGaussian.h

Go to the documentation of this file.
00001 // FittingFunctionGaussian.h: interface for the FittingFunctionGaussian class.
00002 //
00004 
00005 #if !defined(AFX_FITTINGFUNCTIONGAUSSIAN_H__D5D48CC1_0CF7_4D31_93F4_43A21F7659E6__INCLUDED_)
00006 #define AFX_FITTINGFUNCTIONGAUSSIAN_H__D5D48CC1_0CF7_4D31_93F4_43A21F7659E6__INCLUDED_
00007 
00008 #if _MSC_VER > 1000
00009 #pragma once
00010 #endif // _MSC_VER > 1000
00011 
00012 #include "FittingFunction.h"
00013 
00014 #define SEARCH_LIMIT            1.0E-4
00015 #define NB_ITERATION_MAX        100
00016 
00017 //##ModelId=43849A030005
00018 class FittingFunctionGaussian : public FittingFunction  
00019 {
00020 public:
00021         
00022         //##ModelId=43849A030016
00023         FittingFunctionGaussian();
00024         //##ModelId=43849A030017
00025         FittingFunctionGaussian(long lNbIteration,double dLimitSearch);
00026         //##ModelId=43849A03001A
00027         virtual ~FittingFunctionGaussian();
00028 
00029         //##ModelId=43849A03001C
00030         virtual PtrFunction                             getFunction() const;
00031         //##ModelId=43849A030025
00032         virtual PtrFunctionDerivate             getFunctionDerivate() const; 
00033         //##ModelId=43849A030027
00034         virtual PtrFunctionAndDerivate  getFunctionAndDerivate() const;
00035         
00036         //##ModelId=43849A030029
00037         static int Function                             (const gsl_vector *peak_params, void *calc_data, gsl_vector *func);
00038         //##ModelId=43849A03002E
00039         static int FunctionDerivate             (const gsl_vector *peak_params, void *calc_data, gsl_matrix *Jacobian);
00040         //##ModelId=43849A030037
00041         static int FunctionAndDerivate  (const gsl_vector *peak_params, void *calc_data ,gsl_vector *func, gsl_matrix *Jacobian);
00042 
00043         //##ModelId=43849A03003D
00044         virtual int doFit(long points, gsl_vector *x,gsl_vector *y,gsl_vector *sigma, gsl_vector* guess, bool bEstimateGuess, int iSearchStoppingMethod=1, bool bUseScaled=true);
00045         //##ModelId=43849A030049
00046         virtual int generateFunctionFit(double dValMinX,double dResolutionX,long lNbPoints,gsl_vector* funcX,gsl_vector* funcY);
00047 
00048         virtual int generateFunctionFit(long lNbPoints, gsl_vector *x, gsl_vector* funcX,gsl_vector* funcY);
00049 
00050         //##ModelId=43849A030055
00051         void printState (size_t iter, gsl_multifit_fdfsolver * s);
00052         //##ModelId=43849A030058
00053         void printResults();
00054         double  computeValue(double dX,double dPosition, double dWidth, double dHeight, double dBackground=0.0);
00055         double  computeDerivateValue(double dX,double dPosition, double dWidth, double dHeight);
00056 
00057 
00058         void    initializeInitialsParameters(gsl_vector* vExperimentalDataX,gsl_vector* vExperimentalDataY,gsl_vector* vInitialGuess,bool bEstimate);
00059         
00060         void    estimateInitialGuess(gsl_vector* vExperimentalDataX,gsl_vector* vExperimentalDataY);
00061 
00062 
00063 
00064         double  estimateInitialPosition(gsl_vector *vExperimentalDataX, gsl_vector *vExperimentalDataY);
00065         double  estimateInitialSigma(gsl_vector *vExperimentalDataX, gsl_vector *vExperimentalDataY);
00066         double  estimateInitialHeight(gsl_vector *vExperimentalDataX, gsl_vector *vExperimentalDataY);
00067         double  estimateInitialBackground(gsl_vector *vExperimentalDataX, gsl_vector *vExperimentalDataY);
00068 
00069         std::string     getEquation() const;
00070 };
00071 
00072 #endif // !defined(AFX_FITTINGFUNCTIONGAUSSIAN_H__D5D48CC1_0CF7_4D31_93F4_43A21F7659E6__INCLUDED_)

Generated on Tue Apr 14 09:34:27 2009 for Data Fitting Library by  doxygen 1.4.5