00001 /* -*- mode: c++ -*- */ 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 } // namespace hippodraw 00100 00101 #endif // _LMFitter_H_