Commit 05b49446b822f8c3d8f761b30aa8d304722c25ae

Authored by Jürgen Knödlseder
1 parent 817bb2df

Adapt for energy dispersion handling

src/ctlike/ctlike.cpp
... ... @@ -241,6 +241,18 @@ void ctlike::run(void)
241 241 log << std::endl;
242 242 }
243 243  
  244 + // Set energy dispersion flag for all CTA observations and save old
  245 + // values in save_edisp vector
  246 + std::vector<bool> save_edisp;
  247 + save_edisp.assign(m_obs.size(), false);
  248 + for (int i = 0; i < m_obs.size(); ++i) {
  249 + GCTAObservation* obs = dynamic_cast<GCTAObservation*>(m_obs[i]);
  250 + if (obs != NULL) {
  251 + save_edisp[i] = obs->response().apply_edisp();
  252 + obs->response().apply_edisp(m_apply_edisp);
  253 + }
  254 + }
  255 +
244 256 // Write observation(s) into logger
245 257 if (logTerse()) {
246 258 log << std::endl;
... ... @@ -275,6 +287,14 @@ void ctlike::run(void)
275 287 log << m_obs.models() << std::endl;
276 288 }
277 289  
  290 + // Restore energy dispersion flag for all CTA observations
  291 + for (int i = 0; i < m_obs.size(); ++i) {
  292 + GCTAObservation* obs = dynamic_cast<GCTAObservation*>(m_obs[i]);
  293 + if (obs != NULL) {
  294 + obs->response().apply_edisp(save_edisp[i]);
  295 + }
  296 + }
  297 +
278 298 // Return
279 299 return;
280 300 }
... ... @@ -403,8 +423,9 @@ void ctlike::get_parameters(void)
403 423  
404 424 } // endif: no models were associated with observations
405 425  
406   - // Get standard parameters
407   - m_refit = (*this)["refit"].boolean();
  426 + // Get other parameters
  427 + m_refit = (*this)["refit"].boolean();
  428 + m_apply_edisp = (*this)["edisp"].boolean();
408 429  
409 430 // Optionally read ahead parameters so that they get correctly
410 431 // dumped into the log file
... ... @@ -486,12 +507,13 @@ void ctlike::init_members(void)
486 507 m_irf.clear();
487 508 m_outmdl.clear();
488 509 m_obs.clear();
489   - m_refit = false;
490   - m_max_iter = 100; // Set maximum number of iterations
491   - m_max_stall = 10; // Set maximum number of stalls
492   - m_logL = 0.0;
493   - m_opt = NULL;
494   - m_read_ahead = false;
  510 + m_refit = false;
  511 + m_max_iter = 100; // Set maximum number of iterations
  512 + m_max_stall = 10; // Set maximum number of stalls
  513 + m_logL = 0.0;
  514 + m_opt = NULL;
  515 + m_read_ahead = false;
  516 + m_apply_edisp = false;
495 517  
496 518 // Set logger properties
497 519 log.date(true);
... ... @@ -509,17 +531,18 @@ void ctlike::init_members(void)
509 531 void ctlike::copy_members(const ctlike& app)
510 532 {
511 533 // Copy attributes
512   - m_stat = app.m_stat;
513   - m_refit = app.m_refit;
514   - m_caldb = app.m_caldb;
515   - m_irf = app.m_irf;
516   - m_outmdl = app.m_outmdl;
517   - m_obs = app.m_obs;
518   - m_max_iter = app.m_max_iter;
519   - m_max_stall = app.m_max_stall;
520   - m_logL = app.m_logL;
521   - m_opt = app.m_opt->clone();
522   - m_read_ahead = app.m_read_ahead;
  534 + m_stat = app.m_stat;
  535 + m_refit = app.m_refit;
  536 + m_caldb = app.m_caldb;
  537 + m_irf = app.m_irf;
  538 + m_outmdl = app.m_outmdl;
  539 + m_obs = app.m_obs;
  540 + m_max_iter = app.m_max_iter;
  541 + m_max_stall = app.m_max_stall;
  542 + m_logL = app.m_logL;
  543 + m_opt = app.m_opt->clone();
  544 + m_read_ahead = app.m_read_ahead;
  545 + m_apply_edisp = app.m_apply_edisp;
523 546  
524 547 // Return
525 548 return;
... ...
src/ctlike/ctlike.hpp
... ... @@ -71,11 +71,12 @@ protected:
71 71 void free_members(void);
72 72  
73 73 // User parameters
74   - std::string m_stat; //!< Optimisation statistics (poisson/gaussian)
75   - bool m_refit; //!< Refitting
76   - std::string m_caldb; //!< Calibration database
77   - std::string m_irf; //!< Instrument response functions
78   - std::string m_outmdl; //!< Source model output XML file
  74 + std::string m_stat; //!< Optimisation statistics (poisson/gaussian)
  75 + bool m_refit; //!< Refitting
  76 + std::string m_caldb; //!< Calibration database
  77 + std::string m_irf; //!< Instrument response functions
  78 + std::string m_outmdl; //!< Source model output XML file
  79 + bool m_apply_edisp; //!< Apply energy dispersion?
79 80  
80 81 // Members
81 82 GObservations m_obs; //!< Observations
... ...
src/ctlike/ctlike.par
... ... @@ -17,13 +17,14 @@
17 17 #
18 18 # General parameters
19 19 #===================
20   -infile, f, a, "test/data/crab_events.fits.gz",,,"Event list, counts map or observation definition file"
21   -stat, s, h, "POISSON",,, "Optimization statistics"
22   -refit, b, h, no,,, "Do refitting?"
23   -caldb, s, a, "",,, "Calibration database"
24   -irf, s, a, "cta_dummy_irf",,, "Instrument response function"
25   -srcmdl, f, a, "test/data/crab.xml",,, "Source model"
26   -outmdl, f, a, "crab_results.xml",,, "Source model output file"
  20 +infile, f, a, "events.fits",,,"Event list, counts map or observation definition file"
  21 +stat, s, h, "POISSON",,, "Optimization statistics"
  22 +refit, b, h, no,,, "Do refitting?"
  23 +edisp, b, h, no,,, "Apply energy dispersion?"
  24 +caldb, s, a, "$CTOOLS/share/caldb/data/cta/dummy",,, "Calibration database"
  25 +irf, s, a, "cta_dummy_irf",,, "Instrument response function"
  26 +srcmdl, f, a, "$CTOOLS/share/models/crab.xml",,, "Source model"
  27 +outmdl, f, a, "crab_results.xml",,, "Source model output file"
27 28 #
28 29 # Standard parameters
29 30 #====================
... ...