Commit 1c268e73ecd80bcab7f9bdea8a3382a995faaea3

Authored by Michael Mayer
1 parent 41606bea

removed error computation from GOptimizerLM::optimize and added error()-method t…

…o GOptimizer base class. Further implemented GObservations::errors()
include/GObservations.hpp
... ... @@ -125,6 +125,7 @@ public:
125 125 void models(const std::string& filename);
126 126 const GModels& models(void) const;
127 127 void optimize(GOptimizer& opt);
  128 + void errors(GOptimizer& opt);
128 129 void eval(void);
129 130 double logL(void) const;
130 131 double npred(void) const;
... ...
include/GOptimizer.hpp
... ... @@ -67,6 +67,7 @@ public:
67 67 virtual GOptimizer* clone(void) const = 0;
68 68 virtual std::string classname(void) const = 0;
69 69 virtual void optimize(GOptimizerFunction& fct, GOptimizerPars& pars) = 0;
  70 + virtual void errors(GOptimizerFunction& fct, GOptimizerPars& pars) = 0;
70 71 virtual double value(void) const = 0;
71 72 virtual int status(void) const = 0;
72 73 virtual int iter(void) const = 0;
... ...
include/GOptimizerLM.hpp
... ... @@ -66,6 +66,7 @@ public:
66 66 virtual GOptimizerLM* clone(void) const;
67 67 virtual std::string classname(void) const;
68 68 virtual void optimize(GOptimizerFunction& fct, GOptimizerPars& pars);
  69 + void errors(GOptimizerFunction& fct, GOptimizerPars& pars);
69 70 virtual double value(void) const { return m_value; } //!< @brief Return function value
70 71 virtual int status(void) const { return m_status; } //!< @brief Return optimization status
71 72 virtual int iter(void) const { return m_iter; } //!< @brief Return number of iterations
... ... @@ -94,7 +95,6 @@ protected:
94 95 void copy_members(const GOptimizerLM& opt);
95 96 void free_members(void);
96 97 void iteration(GOptimizerFunction& fct, GOptimizerPars& pars);
97   - void errors(GOptimizerFunction& fct, GOptimizerPars& pars);
98 98 double step_size(const GVector& grad, const GOptimizerPars& pars);
99 99  
100 100 // Protected members
... ...
src/obs/GObservations.cpp
... ... @@ -722,6 +722,27 @@ void GObservations::optimize(GOptimizer&amp; opt)
722 722  
723 723  
724 724 /***********************************************************************//**
  725 + * @brief Computes parameter errors using optimizer
  726 + *
  727 + * @param[in] opt Optimizer.
  728 + *
  729 + * Calculates the errors of the free parameters of the models by using
  730 + * the optimizer that has been provided by the @p opt argument.
  731 + ***************************************************************************/
  732 +void GObservations::errors(GOptimizer& opt)
  733 +{
  734 + // Extract optimizer parameter container from model container
  735 + GOptimizerPars pars = m_models.pars();
  736 +
  737 + // Optimize model parameters
  738 + opt.errors(m_fct, pars);
  739 +
  740 + // Return
  741 + return;
  742 +}
  743 +
  744 +
  745 +/***********************************************************************//**
725 746 * @brief Evaluate function
726 747 *
727 748 * Evaluates the likelihood funtion at the actual set of parameters.
... ...
src/opt/GOptimizerLM.cpp
... ... @@ -409,9 +409,6 @@ void GOptimizerLM::optimize(GOptimizerFunction&amp; fct, GOptimizerPars&amp; pars)
409 409 }
410 410  
411 411 } // endfor: iterations
412   -
413   - // Compute parameter uncertainties
414   - errors(fct, pars);
415 412  
416 413 // Free now all temporarily frozen parameters so that the resulting
417 414 // model has the same attributes as the initial model
... ... @@ -432,7 +429,12 @@ void GOptimizerLM::optimize(GOptimizerFunction&amp; fct, GOptimizerPars&amp; pars)
432 429  
433 430 // ... otherwise just execute final step
434 431 else {
435   - errors(fct, pars);
  432 +
  433 + // Evaluate function
  434 + fct.eval(pars);
  435 +
  436 + // Save function value
  437 + m_value = fct.value();
436 438 }
437 439  
438 440 // Return
... ...