7 #ifndef Tomato_OXFITTER_H 8 #define Tomato_OXFITTER_H 21 template<
typename MeasureType >
33 virtual MeasureType *getParameters() {
return _Parameters; }
34 virtual MeasureType getMse()
const {
35 return _Model->calcCostValue(_Parameters) / _Model->getNSamples();
37 virtual const MeasureType getXTolerance()
const {
return _XTolerance; }
38 virtual const MeasureType getFTolerance()
const {
return _FTolerance; }
39 virtual const bool getUseGradient()
const {
return _UseGradient; }
40 virtual const unsigned int getMaxFunctionEvals()
const {
return _MaxFunctionEvals; }
41 virtual const unsigned int getThreadId()
const {
return _ThreadId; }
42 virtual const bool getVerbose()
const {
return _Verbose; }
43 virtual const bool getTrace()
const {
return _Trace; }
46 virtual void setParameters( MeasureType *_Parameters) { Fitter::_Parameters = _Parameters; }
47 virtual void setMse(MeasureType mse) { _Mse = mse; }
48 virtual void setXTolerance(
const MeasureType _XTolerance) { Fitter::_XTolerance = _XTolerance; }
49 virtual void setUseGradient(
const bool _UseGradient) { Fitter::_UseGradient = _UseGradient; }
50 virtual void setFTolerance(
const MeasureType _FTolerance) { Fitter::_FTolerance = _FTolerance; }
51 virtual void setMaxFunctionEvals(
const unsigned int _MaxFunctionEvals) { Fitter::_MaxFunctionEvals = _MaxFunctionEvals; }
52 virtual void setThreadId(
const unsigned int _ThreadId) { Fitter::_ThreadId = _ThreadId; }
53 virtual void setVerbose(
const bool _Verbose) { Fitter::_Verbose = _Verbose; }
54 virtual void setTrace(
const bool _Trace) { Fitter::_Trace = _Trace; }
61 if (!Fitter::_Model) {
62 throw std::runtime_error(
"_Model equals 0. Set _Model");
66 throw std::runtime_error(
"_Parameters equals 0. Set _Parameters");
69 for (
int i = 0; i < Fitter::_Model->getNDims(); ++i) {
70 _Parameters[i] = ptrFrom[i];
78 std::cout <<
"\nYou called disp() on a Fitter object " <<
this <<
"\n";
79 std::cout <<
"XTolerance: " << getXTolerance() << std::endl;
80 std::cout <<
"FTolerance: " << getFTolerance() << std::endl;
81 std::string temp = getUseGradient() ?
"true" :
"false";
82 std::cout <<
"UseGradient " << temp << std::endl;
83 std::cout <<
"MaxFunctionEvals: " << getMaxFunctionEvals() << std::endl;
84 std::cout <<
"ThreadId: " << getThreadId() << std::endl;
86 KWUtil::printArray(_Parameters != 0, _Model->getNDims(), _Parameters, (
char*)
"\nParameters: ");
87 std::cout <<
"This Fitter contains the following Model object: ";
102 _MaxFunctionEvals = 4000;
103 _UseGradient =
false;
118 _XTolerance = old._XTolerance;
119 _FTolerance = old._FTolerance;
120 _MaxFunctionEvals = old._MaxFunctionEvals;
121 _UseGradient = old._UseGradient;
122 _ThreadId = old._ThreadId;
123 _Verbose = old._Verbose;
141 MeasureType* _Parameters;
144 MeasureType _XTolerance;
145 MeasureType _FTolerance;
146 int _MaxFunctionEvals;
148 unsigned int _ThreadId;
155 #endif //Tomato_OXFITTER_H virtual ~Fitter()
do not forget about the virtual destructor, see https://stackoverflow.com/questions/461203/when-to-us...
Definition: OxFitter.h:137
Container for a model function, cost function and Least-Squares function. And derivatives.
Definition: OxModel.h:26
Fitter()
constructor
Definition: OxFitter.h:95
virtual int performFitting()=0
virtual void copyToParameters(const MeasureType *ptrFrom)
Definition: OxFitter.h:60
Fitter(const Fitter &old)
Definition: OxFitter.h:113
virtual void disp()
show me your Fitter
Definition: OxFitter.h:77
virtual Fitter< MeasureType > * newByCloning()=0
Definition: OxFitter.h:22
Definition: OxCalculator.h:19