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,8 +259,8 @@ void ctlike::run(void)
259 if (ts_srcs.size() > 0) { 259 if (ts_srcs.size() > 0) {
260 260
261 // Store original maximum likelihood and models 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 // Loop over stored models, remove source and refit 265 // Loop over stored models, remove source and refit
266 for (int i = 0; i < ts_srcs.size(); ++i) { 266 for (int i = 0; i < ts_srcs.size(); ++i) {
@@ -426,6 +426,29 @@ void ctlike::optimize_lm(void) @@ -426,6 +426,29 @@ void ctlike::optimize_lm(void)
426 log.indent(1); 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 // Perform LM optimization 452 // Perform LM optimization
430 m_obs.optimize(*m_opt); 453 m_obs.optimize(*m_opt);
431 454