00001 /* -*- mode: c++ -*- */ 00002 00014 #ifndef _LinearSumFunction_H_ 00015 #define _LinearSumFunction_H_ 00016 00017 #include "functions/FunctionBase.h" 00018 00024 class MDL_HIPPOPLOT_API LinearSumFunction : public FunctionBase 00025 { 00026 00027 private: 00028 00029 typedef std::vector < FunctionBase * > FunctionList_t; 00030 FunctionList_t m_functions; 00031 00032 protected: 00033 00035 virtual void initialize (); 00036 00037 public: 00038 00040 LinearSumFunction ( ); 00041 00043 LinearSumFunction ( const LinearSumFunction & ); 00044 00045 virtual FunctionBase * clone () const; 00046 00047 const std::vector < std::string > & parmNames() const; 00048 00049 void freeParmNames ( std::vector< std::string > & names ) const; 00050 00051 virtual const std::vector< double > & getParameters (); 00052 00053 virtual std::vector< double >::const_iterator 00054 setParameters ( std::vector< double >::const_iterator it ); 00055 00058 virtual int count (); 00059 00060 virtual int size () const; 00061 00063 virtual bool isComposite () const; 00064 00066 virtual void addToComposite ( FunctionBase * ); 00067 00069 virtual void removeFromComposite ( FunctionBase * ); 00070 00072 virtual double operator () ( double x ) const; 00073 00074 virtual void initialParameters ( const FunctionHelper * helper ); 00075 00076 virtual double derivByParm ( int i, double x ) const; 00077 00078 }; 00079 00080 #endif // _LinearSumFunction_H_