00001 /* -*- mode: c++ -*- */ 00002 00014 #ifndef PyFunctionRep_H 00015 #define PyFunctionRep_H 00016 00017 #include <string> 00018 #include <vector> 00019 00020 namespace hippodraw { 00021 00022 class DataRep; 00023 class PyDataRep; 00024 class FunctionRep; 00025 class FunctionBase; 00026 class PlotterBase; 00027 class QtDisplay; 00028 00041 class PyFunctionRep 00042 { 00043 00044 private: 00045 00047 FunctionRep * m_rep; 00048 00050 PlotterBase * m_target; 00051 00052 public: 00053 00056 PyFunctionRep ( const std::string & function_name, PyDataRep * rep ); 00057 00060 PyFunctionRep ( FunctionBase * function, PyDataRep * rep ); 00061 00064 PyFunctionRep ( FunctionBase * function ); 00065 00067 void addTo ( QtDisplay * display ); 00068 00070 hippodraw::DataRep * getRep () const; 00071 00073 const std::vector < std::string > & parmNames () const; 00074 00080 const std::vector < double > & parameters () const; 00081 00083 const std::vector < double > & principleErrors () const; 00084 00090 bool fitFunction (); 00091 00093 void setParameters( const std::vector<double> & params ); 00094 00097 double operator () ( double x ); 00098 00100 double objectiveValue(); 00101 00104 const std::vector < std::vector < double > > & covarianceMatrix (); 00105 00107 int degreesOfFreedom(); 00108 00110 void setFixedFlags( const std::vector<int> & flags ); 00111 00114 void setFitter ( const std::string & name ); 00115 00118 const std::string & getFitterName () const; 00119 00123 QtDisplay * createResidualsDisplay () const; 00124 00127 void setFitRange ( double low, double high ); 00128 00131 void setFitRangeEnabled ( bool yes = true ); 00132 00133 }; 00134 00135 } // namespace hippodraw 00136 00137 #endif // PyFunctionRep_H