Commit 96602a11dc5a53703bbdb2a49c5bfc88311d5c35
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 | ... | ... |