7 #ifndef Tomato_OXFACTORYOFFitters_HXX 8 #define Tomato_OXFACTORYOFFitters_HXX 14 #ifdef USE_PRIVATE_NR2 15 #include "OxFitterAmoebaPrivateNr2.h" 21 #include "OxFitterLevenbergMarquardtTomatoFit.h" 22 #include "OxFitterRobustTomatoFit.h" 28 template <
typename TYPE >
30 FactoryOfFitters<TYPE>
31 ::newByFactory(TomatoOptions<TYPE> *opts){
32 Fitter<TYPE> *fitter = 0;
34 switch (opts->fitting_method){
37 fitter =
new FitterAmoebaVnl<TYPE>();
41 fitter =
new FitterLevenbergMarquardtVnl<TYPE>();
45 #ifdef USE_PRIVATE_NR2 46 case AmoebaPrivateNr2: {
47 fitter =
new FitterAmoebaPrivateNr2<TYPE>();
53 fitter =
new FitterLevenbergMarquardtLmfit<TYPE>();
58 case LevMarTomatoFit: {
59 fitter =
new FitterLevenbergMarquardtTomatoFit<TYPE>();
62 case RobustTomatoFit: {
63 fitter =
new FitterRobustTomatoFit<TYPE>();
68 throw std::runtime_error(
"fitting_method not available");
71 fitter->setMaxFunctionEvals(opts->max_function_evals);
72 fitter->setFTolerance(opts->fTolerance);
73 fitter->setUseGradient(opts->use_gradient);
78 template <
typename TYPE >
80 FactoryOfFitters<TYPE>
81 ::disp(
int fitting_method){
83 if (fitting_method >= 0) {
84 printf(
"%-28s%-22s",
" fitting_method: ", fittersTypeNames[fitting_method]);
87 printf(
"options: [ ");
89 for (
int i = 0; i < lastFitterType+1; i++){
91 if(fittersAvailability[i]){
92 printf(
"%s ", fittersTypeNames[i]);
101 #endif //Tomato_OXFACTORYOFFitters_HXX
Definition: OxCalculator.h:19