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,6 +241,18 @@ void ctlike::run(void)
241 log << std::endl; 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 // Write observation(s) into logger 256 // Write observation(s) into logger
245 if (logTerse()) { 257 if (logTerse()) {
246 log << std::endl; 258 log << std::endl;
@@ -275,6 +287,14 @@ void ctlike::run(void) @@ -275,6 +287,14 @@ void ctlike::run(void)
275 log << m_obs.models() << std::endl; 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 // Return 298 // Return
279 return; 299 return;
280 } 300 }
@@ -403,8 +423,9 @@ void ctlike::get_parameters(void) @@ -403,8 +423,9 @@ void ctlike::get_parameters(void)
403 423
404 } // endif: no models were associated with observations 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 // Optionally read ahead parameters so that they get correctly 430 // Optionally read ahead parameters so that they get correctly
410 // dumped into the log file 431 // dumped into the log file
@@ -486,12 +507,13 @@ void ctlike::init_members(void) @@ -486,12 +507,13 @@ void ctlike::init_members(void)
486 m_irf.clear(); 507 m_irf.clear();
487 m_outmdl.clear(); 508 m_outmdl.clear();
488 m_obs.clear(); 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 // Set logger properties 518 // Set logger properties
497 log.date(true); 519 log.date(true);
@@ -509,17 +531,18 @@ void ctlike::init_members(void) @@ -509,17 +531,18 @@ void ctlike::init_members(void)
509 void ctlike::copy_members(const ctlike& app) 531 void ctlike::copy_members(const ctlike& app)
510 { 532 {
511 // Copy attributes 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 // Return 547 // Return
525 return; 548 return;
src/ctlike/ctlike.hpp
@@ -71,11 +71,12 @@ protected: @@ -71,11 +71,12 @@ protected:
71 void free_members(void); 71 void free_members(void);
72 72
73 // User parameters 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 // Members 81 // Members
81 GObservations m_obs; //!< Observations 82 GObservations m_obs; //!< Observations
src/ctlike/ctlike.par
@@ -17,13 +17,14 @@ @@ -17,13 +17,14 @@
17 # 17 #
18 # General parameters 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 # Standard parameters 29 # Standard parameters
29 #==================== 30 #====================