00001
00002
00014 #ifndef _LinearSumFunction_H_
00015 #define _LinearSumFunction_H_
00016
00017 #include "functions/FunctionBase.h"
00018
00019 namespace hippodraw {
00020
00026 class MDL_HIPPOPLOT_API LinearSumFunction : public FunctionBase
00027 {
00028
00029 private:
00030
00031 typedef std::vector < FunctionBase * > FunctionList_t;
00032 FunctionList_t m_functions;
00033
00034 protected:
00035
00037 virtual void initialize ();
00038
00039 public:
00040
00042 LinearSumFunction ( );
00043
00045 LinearSumFunction ( const LinearSumFunction & );
00046
00047 virtual FunctionBase * clone () const;
00048
00049 const std::vector < std::string > & parmNames() const;
00050
00051 void freeParmNames ( std::vector< std::string > & names ) const;
00052
00053 virtual const std::vector< double > & getParameters () const;
00054
00055 virtual const std::vector < int > & getFixedFlags () const;
00056
00057 virtual std::vector< double >::const_iterator
00058 setParameters ( std::vector< double >::const_iterator it );
00059
00062 virtual int count ();
00063
00064 virtual int size () const;
00065
00067 virtual bool isComposite () const;
00068
00070 virtual void addToComposite ( FunctionBase * );
00071
00073 virtual void removeFromComposite ( FunctionBase * );
00074
00076 virtual double operator () ( double x ) const;
00077
00078 virtual void initialParameters ( const FunctionHelper * helper );
00079
00080 virtual double derivByParm ( int i, double x ) const;
00081
00082 };
00083
00084 }
00085
00086 #endif // _LinearSumFunction_H_