diff --git a/src/ctlike/ctlike.cpp b/src/ctlike/ctlike.cpp index 1dd4f39..7f24def 100644 --- a/src/ctlike/ctlike.cpp +++ b/src/ctlike/ctlike.cpp @@ -241,6 +241,18 @@ void ctlike::run(void) log << std::endl; } + // Set energy dispersion flag for all CTA observations and save old + // values in save_edisp vector + std::vector save_edisp; + save_edisp.assign(m_obs.size(), false); + for (int i = 0; i < m_obs.size(); ++i) { + GCTAObservation* obs = dynamic_cast(m_obs[i]); + if (obs != NULL) { + save_edisp[i] = obs->response().apply_edisp(); + obs->response().apply_edisp(m_apply_edisp); + } + } + // Write observation(s) into logger if (logTerse()) { log << std::endl; @@ -275,6 +287,14 @@ void ctlike::run(void) log << m_obs.models() << std::endl; } + // Restore energy dispersion flag for all CTA observations + for (int i = 0; i < m_obs.size(); ++i) { + GCTAObservation* obs = dynamic_cast(m_obs[i]); + if (obs != NULL) { + obs->response().apply_edisp(save_edisp[i]); + } + } + // Return return; } @@ -403,8 +423,9 @@ void ctlike::get_parameters(void) } // endif: no models were associated with observations - // Get standard parameters - m_refit = (*this)["refit"].boolean(); + // Get other parameters + m_refit = (*this)["refit"].boolean(); + m_apply_edisp = (*this)["edisp"].boolean(); // Optionally read ahead parameters so that they get correctly // dumped into the log file @@ -486,12 +507,13 @@ void ctlike::init_members(void) m_irf.clear(); m_outmdl.clear(); m_obs.clear(); - m_refit = false; - m_max_iter = 100; // Set maximum number of iterations - m_max_stall = 10; // Set maximum number of stalls - m_logL = 0.0; - m_opt = NULL; - m_read_ahead = false; + m_refit = false; + m_max_iter = 100; // Set maximum number of iterations + m_max_stall = 10; // Set maximum number of stalls + m_logL = 0.0; + m_opt = NULL; + m_read_ahead = false; + m_apply_edisp = false; // Set logger properties log.date(true); @@ -509,17 +531,18 @@ void ctlike::init_members(void) void ctlike::copy_members(const ctlike& app) { // Copy attributes - m_stat = app.m_stat; - m_refit = app.m_refit; - m_caldb = app.m_caldb; - m_irf = app.m_irf; - m_outmdl = app.m_outmdl; - m_obs = app.m_obs; - m_max_iter = app.m_max_iter; - m_max_stall = app.m_max_stall; - m_logL = app.m_logL; - m_opt = app.m_opt->clone(); - m_read_ahead = app.m_read_ahead; + m_stat = app.m_stat; + m_refit = app.m_refit; + m_caldb = app.m_caldb; + m_irf = app.m_irf; + m_outmdl = app.m_outmdl; + m_obs = app.m_obs; + m_max_iter = app.m_max_iter; + m_max_stall = app.m_max_stall; + m_logL = app.m_logL; + m_opt = app.m_opt->clone(); + m_read_ahead = app.m_read_ahead; + m_apply_edisp = app.m_apply_edisp; // Return return; diff --git a/src/ctlike/ctlike.hpp b/src/ctlike/ctlike.hpp index 86bcdf1..a53781e 100644 --- a/src/ctlike/ctlike.hpp +++ b/src/ctlike/ctlike.hpp @@ -71,11 +71,12 @@ protected: void free_members(void); // User parameters - 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_outmdl; //!< Source model output XML file + 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_outmdl; //!< Source model output XML file + bool m_apply_edisp; //!< Apply energy dispersion? // Members GObservations m_obs; //!< Observations diff --git a/src/ctlike/ctlike.par b/src/ctlike/ctlike.par index 89d205f..85d939b 100644 --- a/src/ctlike/ctlike.par +++ b/src/ctlike/ctlike.par @@ -17,13 +17,14 @@ # # General parameters #=================== -infile, f, a, "test/data/crab_events.fits.gz",,,"Event list, counts map or observation definition file" -stat, s, h, "POISSON",,, "Optimization statistics" -refit, b, h, no,,, "Do refitting?" -caldb, s, a, "",,, "Calibration database" -irf, s, a, "cta_dummy_irf",,, "Instrument response function" -srcmdl, f, a, "test/data/crab.xml",,, "Source model" -outmdl, f, a, "crab_results.xml",,, "Source model output file" +infile, f, a, "events.fits",,,"Event list, counts map or observation definition file" +stat, s, h, "POISSON",,, "Optimization statistics" +refit, b, h, no,,, "Do refitting?" +edisp, b, h, no,,, "Apply energy dispersion?" +caldb, s, a, "$CTOOLS/share/caldb/data/cta/dummy",,, "Calibration database" +irf, s, a, "cta_dummy_irf",,, "Instrument response function" +srcmdl, f, a, "$CTOOLS/share/models/crab.xml",,, "Source model" +outmdl, f, a, "crab_results.xml",,, "Source model output file" # # Standard parameters #====================