diff --git a/src/ctlike/ctlike.cpp b/src/ctlike/ctlike.cpp index 24a7e15..43ee690 100644 --- a/src/ctlike/ctlike.cpp +++ b/src/ctlike/ctlike.cpp @@ -1,7 +1,7 @@ /*************************************************************************** * ctlike - Maximum likelihood fitting tool * * ----------------------------------------------------------------------- * - * copyright (C) 2010-2015 by Juergen Knoedlseder * + * copyright (C) 2010-2016 by Juergen Knoedlseder * * ----------------------------------------------------------------------- * * * * This program is free software: you can redistribute it and/or modify * @@ -441,7 +441,9 @@ void ctlike::get_parameters(void) /***********************************************************************//** - * @brief Optimize model parameters using Levenberg-Marquardt method + * @brief Optimise model parameters + * + * Optimise model parameters using a maximum likelihood fit. ***************************************************************************/ void ctlike::optimize_lm(void) { @@ -518,8 +520,10 @@ void ctlike::optimize_lm(void) /***********************************************************************//** - * @brief Re-optimize model parameters using Levenberg-Marquardt method - * for TS computation + * @brief Re-optimise model parameters for TS computation + * + * Re-optimise the model parameters using a maximum likelihood fit for + * computation of the Test Statistic value for a given source. ***************************************************************************/ double ctlike::reoptimize_lm(void) { @@ -530,23 +534,26 @@ double ctlike::reoptimize_lm(void) log.indent(1); } + // Create a clone of the optimizer for the re-optimisation + GOptimizer* opt = m_opt->clone(); + // Perform LM optimization - m_obs.optimize(*m_opt); + m_obs.optimize(*opt); // Optionally refit if (m_refit) { - m_obs.optimize(*m_opt); + m_obs.optimize(*opt); } // Store maximum log likelihood value - double logL = -(m_opt->value()); + double logL = -(opt->value()); // Write optimization results log.indent(0); if (logTerse()) { log << std::endl; log.header1("Maximum likelihood re-optimisation results"); - log << *m_opt << std::endl; + log << *opt << std::endl; } // Return