Commit 96602a11dc5a53703bbdb2a49c5bfc88311d5c35

Authored by Jürgen Knödlseder
1 parent d774f1a0

Add warning to ctlike if all parameters are fixed.

Showing 1 changed file with 25 additions and 2 deletions
src/ctlike/ctlike.cpp
... ... @@ -259,8 +259,8 @@ void ctlike::run(void)
259 259 if (ts_srcs.size() > 0) {
260 260  
261 261 // Store original maximum likelihood and models
262   - double logL_src = m_logL;
263   - GModels models = m_obs.models();
  262 + double logL_src = m_logL;
  263 + GModels models = m_obs.models();
264 264  
265 265 // Loop over stored models, remove source and refit
266 266 for (int i = 0; i < ts_srcs.size(); ++i) {
... ... @@ -426,6 +426,29 @@ void ctlike::optimize_lm(void)
426 426 log.indent(1);
427 427 }
428 428  
  429 + // Compute number of fitted parameters
  430 + int nfit = 0;
  431 + for (int i = 0; i < m_obs.models().size(); ++i) {
  432 + const GModel* model = m_obs.models()[i];
  433 + for (int k = 0; k < model->size(); ++k) {
  434 + if ((*model)[k].is_free()) {
  435 + nfit++;
  436 + }
  437 + }
  438 + }
  439 +
  440 + // Notify if all parameters are fixed
  441 + if (nfit == 0) {
  442 + if (logTerse()) {
  443 + log << "WARNING: All model parameters are fixed!";
  444 + log << std::endl;
  445 + log << " ctlike will proceed without fitting parameters.";
  446 + log << std::endl;
  447 + log << " All curvature matrix elements will be zero.";
  448 + log << std::endl;
  449 + }
  450 + }
  451 +
429 452 // Perform LM optimization
430 453 m_obs.optimize(*m_opt);
431 454  
... ...