From fb15d981e6d29dd83608880cab5fdb3c9ddd27f2 Mon Sep 17 00:00:00 2001 From: knodlseder <> Date: Fri, 26 Nov 2010 02:48:49 +0000 Subject: [PATCH] add refit and stat parameters --- src/ctlike/ctlike.cpp | 14 +++++++++++--- src/ctlike/ctlike.hpp | 2 ++ src/ctlike/ctlike.par | 2 ++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/ctlike/ctlike.cpp b/src/ctlike/ctlike.cpp index 741e4bb..b1c8530 100644 --- a/src/ctlike/ctlike.cpp +++ b/src/ctlike/ctlike.cpp @@ -152,6 +152,8 @@ void ctlike::get_parameters(void) { // Get standard parameters m_method = toupper(par("method")->value()); + m_stat = toupper(par("stat")->value()); + m_refit = par("refit")->boolean(); m_caldb = par("caldb")->value(); m_irf = par("irf")->value(); m_srcmdl = par("srcmdl")->value(); @@ -179,8 +181,8 @@ void ctlike::optimize_lm(void) { // Allocate optimizer. The logger is only passed to the optimizer // constructor if optimizer logging is requested. - GOptimizerLM* opt = (logExplicit()) ? new GOptimizerLM(log) - : new GOptimizerLM(); + GOptimizerLM* opt = (logTerse()) ? new GOptimizerLM(log) + : new GOptimizerLM(); // Assign optimizer m_opt = opt; @@ -189,7 +191,7 @@ void ctlike::optimize_lm(void) opt->max_iter(m_max_iter); // Write Header for optimization and indent for optimizer logging - if (logExplicit()) { + if (logTerse()) { log << std::endl; log.header1("Maximum likelihood optimisation"); log.indent(1); @@ -198,6 +200,10 @@ void ctlike::optimize_lm(void) // Perform LM optimization m_obs.optimize(*m_opt); + // Optionally refit + if (m_refit) + m_obs.optimize(*m_opt); + // Get models back m_models = *(m_obs.models()); @@ -236,6 +242,7 @@ void ctlike::unbinned(const std::string& evfile) { // Declare observations GCTAObservation run; + run.statistics(m_stat); // DUMMY: Setup ROI covered by data. This is needed since actual test // data do not contain any ROI informations. @@ -282,6 +289,7 @@ void ctlike::binned(const std::string& cntmap) { // Declare observations GCTAObservation run; + run.statistics(m_stat); // Load binned CTA observation run.load_binned(cntmap); diff --git a/src/ctlike/ctlike.hpp b/src/ctlike/ctlike.hpp index 32008be..098529c 100644 --- a/src/ctlike/ctlike.hpp +++ b/src/ctlike/ctlike.hpp @@ -55,6 +55,8 @@ protected: // User parameters std::string m_method; //!< Likelihood fitting method (binned/unbinned) + std::string m_stat; //!< Optimisation statistics (poisson/gaussian) + bool m_refit; //!< Refitting std::string m_caldb; //!< Calibration database std::string m_irf; //!< Instrument response functions std::string m_srcmdl; //!< Source model XML file diff --git a/src/ctlike/ctlike.par b/src/ctlike/ctlike.par index 7bf9625..bdf7387 100644 --- a/src/ctlike/ctlike.par +++ b/src/ctlike/ctlike.par @@ -26,6 +26,8 @@ cntmap, f, a, "test/data/run_00006028_cntmap.fits.gz",,, "Counts map" # General parameters #=================== method, s, a, "UNBINNED",,, "Maximum likelihood method" +stat, s, a, "POISSON",,, "Optimization statistics" +refit, b, a, no,,, "Do refitting?" caldb, s, a, "test/irf",,, "Calibration database" irf, s, a, "kb_E_50h_v3",,, "Instrument response function" srcmdl, f, a, "test/data/source1.xml",,, "Source model" -- libgit2 0.21.4