00001
00002
00014 #ifndef _LMFitter_H_
00015 #define _LMFitter_H_
00016
00017 #include "Fitter.h"
00018
00019 namespace hippodraw {
00020
00033 class MDL_HIPPOPLOT_API LMFitter : public Fitter
00034 {
00035
00036 private:
00037
00040 LMFitter ( const LMFitter & );
00041
00043 std::vector < std::vector < double > > m_alpha;
00044
00046 std::vector < double > m_beta;
00047
00051 double m_chi_cutoff;
00052
00054 double m_start_lambda;
00055
00057 double m_lambda;
00058
00060 double m_lambda_shrink_factor;
00061
00063 double m_lambda_expand_factor;
00064
00065 public:
00066
00069 LMFitter ( const char * name );
00070
00071 Fitter * clone () const;
00072
00075 virtual bool calcBestFit ();
00076
00079 virtual bool calcStep ();
00080
00082 virtual void calcAlpha ();
00083
00087 virtual int calcCovariance ( std::vector< std::vector < double > >& cov );
00088
00090 virtual bool solveSystem ();
00091
00095 virtual void setFCN ( StatedFCN * fcn );
00096
00097 };
00098
00099 }
00100
00101 #endif // _LMFitter_H_