Commit 79cbc023c773bb19d6ebd4735e18c919d18153fa

Authored by Jürgen Knödlseder
1 parent be13013c

Integrate modifications for stacked energy dispersion.

.gitignore
... ... @@ -59,6 +59,7 @@ src/ctselect/ctselect
59 59 src/ctskymap/ctskymap
60 60 src/ctexpcube/ctexpcube
61 61 src/ctpsfcube/ctpsfcube
  62 +src/ctedispcube/ctedispcube
62 63 src/ctbkgcube/ctbkgcube
63 64 src/ctcubemask/ctcubemask
64 65 src/ctbutterfly/ctbutterfly
... ...
cscripts/cslightcrv.py
... ... @@ -40,7 +40,7 @@ class cslightcrv(ctools.cscript):
40 40  
41 41 # Set name
42 42 self.name = "cslightcrv"
43   - self.version = "1.0.0"
  43 + self.version = "1.1.0"
44 44  
45 45 # Initialise some members
46 46 self.obs = None
... ... @@ -435,7 +435,7 @@ class cslightcrv(ctools.cscript):
435 435  
436 436 # Header
437 437 if self.logTerse():
438   - self.log.header3("Creating PSF cube")
  438 + self.log.header3("Creating point spread function cube")
439 439  
440 440 # Create psf cube
441 441 psfcube = ctools.ctpsfcube(select.obs())
... ... @@ -454,6 +454,30 @@ class cslightcrv(ctools.cscript):
454 454 psfcube["proj"] = self.m_proj
455 455 psfcube.run()
456 456  
  457 + # Check if we need to include energy dispersion
  458 + if self.m_edisp:
  459 +
  460 + # Header
  461 + if self.logTerse():
  462 + self.log.header3("Creating energy dispersion cube")
  463 +
  464 + # Create edisp cube
  465 + edispcube = ctools.ctedispcube(select.obs())
  466 + edispcube["incube"] = "NONE"
  467 + edispcube["usepnt"] = False
  468 + edispcube["ebinalg"] = "LOG"
  469 + edispcube["xref"] = self.m_xref
  470 + edispcube["yref"] = self.m_yref
  471 + edispcube["binsz"] = self.m_binsz
  472 + edispcube["nxpix"] = self.m_nxpix
  473 + edispcube["nypix"] = self.m_nypix
  474 + edispcube["enumbins"] = self.m_ebins
  475 + edispcube["emin"] = self.m_emin
  476 + edispcube["emax"] = self.m_emax
  477 + edispcube["coordsys"] = self.m_coordsys
  478 + edispcube["proj"] = self.m_proj
  479 + edispcube.run()
  480 +
457 481 # Header
458 482 if self.logTerse():
459 483 self.log.header3("Creating background cube")
... ... @@ -482,30 +506,12 @@ class cslightcrv(ctools.cscript):
482 506 models = bkgcube.models()
483 507  
484 508 # Set precomputed binned response
485   - obs[0].response(expcube.expcube(), psfcube.psfcube(), bkgcube.bkgcube())
486   -
487   - # Check if we need to include energy dispersion
488 509 if self.m_edisp:
489   -
490   - # Create edisp cube
491   - edispcube = ctools.ctedispcube(select.obs())
492   - edispcube["incube"] = "NONE"
493   - edispcube["usepnt"] = False
494   - edispcube["ebinalg"] = "LOG"
495   - edispcube["xref"] = self.m_xref
496   - edispcube["yref"] = self.m_yref
497   - edispcube["binsz"] = self.m_binsz
498   - edispcube["nxpix"] = self.m_nxpix
499   - edispcube["nypix"] = self.m_nypix
500   - edispcube["enumbins"] = self.m_ebins
501   - edispcube["emin"] = self.m_emin
502   - edispcube["emax"] = self.m_emax
503   - edispcube["coordsys"] = self.m_coordsys
504   - edispcube["proj"] = self.m_proj
505   - edispcube.run()
506   -
507   - # Set precomputed binned response including energy dispersion
508   - obs[0].response(expcube.expcube(), psfcube.psfcube(), edispcube.edispcube(), bkgcube.bkgcube())
  510 + obs[0].response(expcube.expcube(), psfcube.psfcube(),
  511 + edispcube.edispcube(), bkgcube.bkgcube())
  512 + else:
  513 + obs[0].response(expcube.expcube(), psfcube.psfcube(),
  514 + bkgcube.bkgcube())
509 515  
510 516 # Fix background models if required
511 517 if self.m_fix_bkg:
... ...
cscripts/cspull.py
... ... @@ -247,10 +247,13 @@ class cspull(ctools.cscript):
247 247 psfcube["proj"] = self.m_proj
248 248 psfcube.run()
249 249  
  250 + # Notify Psf computation
  251 + if self.logTerse():
  252 + self.log("Computed Psf cube\n")
  253 +
  254 + # Optionally get stacked Edisp
250 255 if self.m_edisp:
251   -
252   - # Get stacked Edisp
253   - edispcube = ctools.ctpsfcube(self.obs)
  256 + edispcube = ctools.edispcube(self.obs)
254 257 edispcube["incube"] = "NONE"
255 258 edispcube["usepnt"] = True
256 259 edispcube["ebinalg"] = "LOG"
... ... @@ -263,17 +266,13 @@ class cspull(ctools.cscript):
263 266 edispcube["coordsys"] = self.m_coordsys
264 267 edispcube["proj"] = self.m_proj
265 268 edispcube.run()
266   -
  269 +
267 270 # Store result
268 271 self.m_edispcube = edispcube.edispcube().copy()
269 272  
270 273 # Logging
271 274 if self.logTerse():
272   - self.log("Computed Edisp cube\n")
273   -
274   - # Notify Psf computation
275   - if self.logTerse():
276   - self.log("Computed Psf cube\n")
  275 + self.log("Computed energy dispersion cube\n")
277 276  
278 277 # Get stacked background
279 278 bkgcube = ctools.ctbkgcube(self.obs)
... ... @@ -350,7 +349,6 @@ class cspull(ctools.cscript):
350 349 for n in result['colnames']:
351 350 headers[n] = n
352 351 writer.writerow(headers)
353   - #writer.writerow(dict((_,_) for _ in result['colnames']))
354 352 else:
355 353 file = open(self.m_outfile.url(), 'a')
356 354 writer = csv.DictWriter(file, result['colnames'])
... ... @@ -417,9 +415,11 @@ class cspull(ctools.cscript):
417 415 # If stacked, add stacked responses and model
418 416 if self.obs.size() > 1 and self.m_enumbins > 0:
419 417 if self.m_edisp:
420   - obs[0].response(self.m_exposure, self.m_psfcube, self.m_edispcube, self.m_bckcube)
  418 + obs[0].response(self.m_exposure, self.m_psfcube,
  419 + self.m_edispcube, self.m_bckcube)
421 420 else:
422   - obs[0].response(self.m_exposure, self.m_psfcube, self.m_bckcube)
  421 + obs[0].response(self.m_exposure, self.m_psfcube,
  422 + self.m_bckcube)
423 423 obs.models(self.m_stackmodels)
424 424  
425 425 # Determine number of events in simulation
... ...
cscripts/csresmap.py
... ... @@ -175,7 +175,6 @@ class csresmap(ctools.cscript):
175 175 # Skip ctbin step later on
176 176 self.m_skip_binning = True
177 177  
178   -
179 178 # Set models if we have none
180 179 if self.obs.models().size() == 0:
181 180 self.obs.models(self["inmodel"].filename())
... ... @@ -372,7 +371,6 @@ class csresmap(ctools.cscript):
372 371 # Get model map into GSkyMap object
373 372 modelmap = model.cube().map().copy()
374 373  
375   -
376 374 # Store counts map as residual map. Note that we need a
377 375 # special construct here to avoid memory leaks. This seems
378 376 # to be a SWIG feature as SWIG creates a new object when
... ...
cscripts/csspec.py
... ... @@ -2,7 +2,7 @@
2 2 # ==========================================================================
3 3 # Spectral points generation script.
4 4 #
5   -# Copyright (C) 2014-2015 Michael Mayer
  5 +# Copyright (C) 2014-2016 Michael Mayer
6 6 #
7 7 # This program is free software: you can redistribute it and/or modify
8 8 # it under the terms of the GNU General Public License as published by
... ... @@ -40,7 +40,7 @@ class csspec(ctools.cscript):
40 40  
41 41 # Set name
42 42 self.name = "csspec"
43   - self.version = "1.0.0"
  43 + self.version = "1.1.0"
44 44  
45 45 # Initialise some members
46 46 self.obs = gammalib.GObservations()
... ...
cscripts/cstsdist.py
... ... @@ -42,7 +42,7 @@ class cstsdist(ctools.cscript):
42 42 """
43 43 # Set name
44 44 self.name = "cstsdist"
45   - self.version = "1.0.0"
  45 + self.version = "1.1.0"
46 46  
47 47 # Initialise some members
48 48 self.obs = None
... ...
src/ctbutterfly/ctbutterfly.par
... ... @@ -5,7 +5,7 @@
5 5 # ------------------------------------------------------------------------- #
6 6 # #
7 7 # File: ctbutterfly #
8   -# Version: 1.0.0 #
  8 +# Version: 1.1.0 #
9 9 # #
10 10 # Author: Michael Mayer #
11 11 # michael.mayer@physik.hu-berlin.de #
... ...
src/ctedispcube/ctedispcube.cpp
1 1 /***************************************************************************
2   - * ctedispcube - EDISP cube generation tool *
  2 + * ctedispcube - Energy dispersion cube generation tool *
3 3 * ----------------------------------------------------------------------- *
4 4 * copyright (C) 2016 by Maria Haupt *
5 5 * ----------------------------------------------------------------------- *
... ... @@ -20,7 +20,7 @@
20 20 ***************************************************************************/
21 21 /**
22 22 * @file ctedispcube.cpp
23   - * @brief EDISP cube generation tool implementation
  23 + * @brief Energy dispersion cube generation tool implementation
24 24 * @author Maria Haupt
25 25 */
26 26  
... ... @@ -34,7 +34,7 @@
34 34 #include "GWcs.hpp"
35 35  
36 36 /* __ Method name definitions ____________________________________________ */
37   -#define G_GET_PARAMETERS "ctedispcube::get_parameters()"
  37 +#define G_GET_PARAMETERS "ctedispcube::get_parameters()"
38 38  
39 39 /* __ Debug definitions __________________________________________________ */
40 40  
... ... @@ -49,6 +49,8 @@
49 49  
50 50 /***********************************************************************//**
51 51 * @brief Void constructor
  52 + *
  53 + * Constructs an empty energy dispersion tool.
52 54 ***************************************************************************/
53 55 ctedispcube::ctedispcube(void) : ctool(CTEDISPCUBE_NAME, CTEDISPCUBE_VERSION)
54 56 {
... ... @@ -65,11 +67,11 @@ ctedispcube::ctedispcube(void) : ctool(CTEDISPCUBE_NAME, CTEDISPCUBE_VERSION)
65 67 *
66 68 * @param[in] obs Observation container.
67 69 *
68   - * This method creates an instance of the class by copying an existing
69   - * observations container.
  70 + * Constructs an energy dispersion tool from the information that is provided
  71 + * in an observation container @p obs.
70 72 ***************************************************************************/
71 73 ctedispcube::ctedispcube(const GObservations& obs) :
72   - ctool(CTEDISPCUBE_NAME, CTEDISPCUBE_VERSION)
  74 + ctool(CTEDISPCUBE_NAME, CTEDISPCUBE_VERSION)
73 75 {
74 76 // Initialise members
75 77 init_members();
... ... @@ -88,9 +90,12 @@ ctedispcube::ctedispcube(const GObservations& obs) :
88 90 *
89 91 * @param[in] argc Number of arguments in command line.
90 92 * @param[in] argv Array of command line arguments.
  93 + *
  94 + * Constructs an energy dispersion tool by parsing the arguments provided
  95 + * on the command line.
91 96 ***************************************************************************/
92 97 ctedispcube::ctedispcube(int argc, char *argv[]) :
93   - ctool(CTEDISPCUBE_NAME, CTEDISPCUBE_VERSION, argc, argv)
  98 + ctool(CTEDISPCUBE_NAME, CTEDISPCUBE_VERSION, argc, argv)
94 99 {
95 100 // Initialise members
96 101 init_members();
... ... @@ -103,7 +108,10 @@ ctedispcube::ctedispcube(int argc, char *argv[]) :
103 108 /***********************************************************************//**
104 109 * @brief Copy constructor
105 110 *
106   - * @param[in] app Application.
  111 + * @param[in] app Energy dispersion tool.
  112 + *
  113 + * Constructs an energy dispersion tool by copying anothere energy
  114 + * dispersion tool.
107 115 ***************************************************************************/
108 116 ctedispcube::ctedispcube(const ctedispcube& app) : ctool(app)
109 117 {
... ... @@ -120,6 +128,8 @@ ctedispcube::ctedispcube(const ctedispcube& app) : ctool(app)
120 128  
121 129 /***********************************************************************//**
122 130 * @brief Destructor
  131 + *
  132 + * Desctructs an energy dispersion tool.
123 133 ***************************************************************************/
124 134 ctedispcube::~ctedispcube(void)
125 135 {
... ... @@ -140,8 +150,10 @@ ctedispcube::~ctedispcube(void)
140 150 /***********************************************************************//**
141 151 * @brief Assignment operator
142 152 *
143   - * @param[in] app Application.
144   - * @return Application.
  153 + * @param[in] app Energy dispersion tool.
  154 + * @return Energy dispersion tool.
  155 + *
  156 + * Assigns energy dispersion tool.
145 157 ***************************************************************************/
146 158 ctedispcube& ctedispcube::operator=(const ctedispcube& app)
147 159 {
... ... @@ -174,7 +186,9 @@ ctedispcube& ctedispcube::operator=(const ctedispcube& app)
174 186 ==========================================================================*/
175 187  
176 188 /***********************************************************************//**
177   - * @brief Clear instance
  189 + * @brief Clear energy dispersion tool
  190 + *
  191 + * Set the energy disperison tool to an empty tool.
178 192 ***************************************************************************/
179 193 void ctedispcube::clear(void)
180 194 {
... ... @@ -194,11 +208,10 @@ void ctedispcube::clear(void)
194 208  
195 209  
196 210 /***********************************************************************//**
197   - * @brief Generate the model map(s)
  211 + * @brief Generate the energy dispersion cube
198 212 *
199   - * This method reads the task parameters from the parfile, sets up the
200   - * observation container, loops over all CTA observations in the container
201   - * and generates an EDISP cube from the CTA observations.
  213 + * Generates the energy dispersion cube by looping over all unbinned CTA
  214 + * observations in the observation container.
202 215 ***************************************************************************/
203 216 void ctedispcube::run(void)
204 217 {
... ... @@ -231,7 +244,7 @@ void ctedispcube::run(void)
231 244 // Write header
232 245 if (logTerse()) {
233 246 log << std::endl;
234   - log.header1("Generate EDISP cube");
  247 + log.header1("Generate energy dispersion cube");
235 248 }
236 249  
237 250 // Fill Edisp
... ... @@ -243,7 +256,10 @@ void ctedispcube::run(void)
243 256  
244 257  
245 258 /***********************************************************************//**
246   - * @brief Save Edisp cube
  259 + * @brief Save energy dispersion cube
  260 + *
  261 + * Saves the energy dispersion cube in a FITS file. The FITS filename is
  262 + * provided by the "outcube" parameter.
247 263 ***************************************************************************/
248 264 void ctedispcube::save(void)
249 265 {
... ... @@ -261,11 +277,11 @@ void ctedispcube::save(void)
261 277  
262 278 // Log filename
263 279 if (logTerse()) {
264   - log << "Save Edisp cube into file \""+m_outcube+"\".";
  280 + log << "Save energy dispersion cube into file \""+m_outcube+"\".";
265 281 log << std::endl;
266 282 }
267 283  
268   - // Save EDISP cube
  284 + // Save energy dispersion cube
269 285 m_edispcube.save(m_outcube, clobber());
270 286  
271 287 }
... ... @@ -288,8 +304,6 @@ void ctedispcube::init_members(void)
288 304 {
289 305 // Initialise members
290 306 m_outcube.clear();
291   -
292   - // Initialise protected members
293 307 m_obs.clear();
294 308 m_edispcube.clear();
295 309  
... ... @@ -301,16 +315,14 @@ void ctedispcube::init_members(void)
301 315 /***********************************************************************//**
302 316 * @brief Copy class members
303 317 *
304   - * @param[in] app Application.
  318 + * @param[in] app Energy dispersion cube.
305 319 ***************************************************************************/
306 320 void ctedispcube::copy_members(const ctedispcube& app)
307 321 {
308   - // Copy attributes
309   - m_outcube = app.m_outcube;
310   -
311   - // Copy protected members
312   - m_obs = app.m_obs;
313   - m_edispcube = app.m_edispcube;
  322 + // Copy members
  323 + m_outcube = app.m_outcube;
  324 + m_obs = app.m_obs;
  325 + m_edispcube = app.m_edispcube;
314 326  
315 327 // Return
316 328 return;
... ... @@ -354,7 +366,7 @@ void ctedispcube::get_parameters(void)
354 366 std::string incube = (*this)["incube"].filename();
355 367  
356 368 // Get additional binning parameters
357   - double mmax = (*this)["mmax"].real();
  369 + double migramax = (*this)["migramax"].real();
358 370 int migrabins = (*this)["migrabins"].integer();
359 371  
360 372 // Check for filename validity
... ... @@ -364,7 +376,7 @@ void ctedispcube::get_parameters(void)
364 376 GCTAEventCube cube = create_cube(m_obs);
365 377  
366 378 // Define edisp cube
367   - m_edispcube = GCTACubeEdisp(cube, mmax, migrabins);
  379 + m_edispcube = GCTACubeEdisp(cube, migramax, migrabins);
368 380  
369 381 }
370 382  
... ... @@ -375,7 +387,7 @@ void ctedispcube::get_parameters(void)
375 387 GCTAEventCube cube(incube);
376 388  
377 389 // Define Edisp cube
378   - m_edispcube = GCTACubeEdisp(cube, mmax, migrabins);
  390 + m_edispcube = GCTACubeEdisp(cube, migramax, migrabins);
379 391  
380 392 } // endelse: cube loaded from file
381 393  
... ...
src/ctedispcube/ctedispcube.hpp
1 1 /***************************************************************************
2   - * ctedispcube - EDISP cube generation tool *
  2 + * ctedispcube - Energy dispersion cube generation tool *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2014-2016 by Chia-Chun Lu *
  4 + * copyright (C) 2016 by Maria Haupt *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -20,7 +20,7 @@
20 20 ***************************************************************************/
21 21 /**
22 22 * @file ctedispcube.hpp
23   - * @brief EDISP cube generation tool definition
  23 + * @brief Energy dispersion cube generation tool definition
24 24 * @author Chia-Chun Lu
25 25 */
26 26  
... ... @@ -40,7 +40,7 @@
40 40 /***********************************************************************//**
41 41 * @class ctedispcube
42 42 *
43   - * @brief EDISP cube generation tool
  43 + * @brief Energy dispersion cube generation tool
44 44 ***************************************************************************/
45 45 class ctedispcube : public ctool {
46 46  
... ... @@ -56,9 +56,9 @@ public:
56 56 ctedispcube& operator=(const ctedispcube& app);
57 57  
58 58 // Methods
59   - void clear(void);
60   - void run(void);
61   - void save(void);
  59 + void clear(void);
  60 + void run(void);
  61 + void save(void);
62 62 const GCTACubeEdisp& edispcube(void) const;
63 63  
64 64 protected:
... ... @@ -69,18 +69,18 @@ protected:
69 69 void get_parameters(void);
70 70  
71 71 // User parameters
72   - GFilename m_outcube; //!< Output Edisp cube file name
  72 + GFilename m_outcube; //!< Output energy dispersion cube file name
73 73  
74 74 // Protected members
75   - GObservations m_obs; //!< Observation container
76   - GCTACubeEdisp m_edispcube; //!< Edisp cube
  75 + GObservations m_obs; //!< Observation container
  76 + GCTACubeEdisp m_edispcube; //!< Energy dispersion cube
77 77 };
78 78  
79 79  
80 80 /***********************************************************************//**
81   - * @brief Return EDISP cube
  81 + * @brief Return energy dispersion cube
82 82 *
83   - * @return EDISP cube
  83 + * @return Energy dispersion cube
84 84 ***************************************************************************/
85 85 inline
86 86 const GCTACubeEdisp& ctedispcube::edispcube(void) const
... ...
src/ctedispcube/ctedispcube.par
... ... @@ -18,10 +18,10 @@
18 18 # Observational parameters
19 19 #===================
20 20 inobs, f, a, "NONE",,, "Input event list or observation definition XML file"
21   -incube, f, a, "NONE",,, "Input counts cube file to extract PSF cube definition"
  21 +incube, f, a, "NONE",,, "Input counts cube file to extract energy dispersion cube definition"
22 22 caldb, s, a, "prod2",,, "Calibration database"
23 23 irf, s, a, "South_0.5h",,, "Instrument response function"
24   -outcube, f, a, "edispcube.fits",,, "Output PSF cube file"
  24 +outcube, f, a, "edispcube.fits",,, "Output energy dispersion cube file"
25 25  
26 26 #
27 27 # Energy binning parameters
... ... @@ -47,7 +47,7 @@ proj, s, a, &quot;CAR&quot;, AIT|AZP|CAR|MER|MOL|STG|TAN,, &quot;Projection method&quot;
47 47 #
48 48 # Angular separation binning parameters
49 49 #======================================
50   -mmax, r, h, 10.0,,, "Upper bound of fraction between recontructed and true photon energy"
  50 +migramax, r, h, 2.0,,, "Upper bound of ratio of recontructed to true photon energy"
51 51 migrabins, i, h, 100,,, "Number of migration bins"
52 52  
53 53 #
... ...
src/ctedispcube/main.cpp
1 1 /***************************************************************************
2   - * ctedispcube - CTA EDISP cube tool *
  2 + * ctedispcube - Energy dispersion cube generation tool *
3 3 * ----------------------------------------------------------------------- *
4 4 * copyright (C) 2016 by Maria Haupt *
5 5 * ----------------------------------------------------------------------- *
... ... @@ -20,7 +20,7 @@
20 20 ***************************************************************************/
21 21 /**
22 22 * @file ctedispcube/main.cpp
23   - * @brief CTA EDISP cube tool main code
  23 + * @brief Energy dispersion cube tool main code
24 24 * @author Maria Haupt
25 25 */
26 26  
... ...
src/cterror/cterror.par
... ... @@ -6,7 +6,7 @@
6 6 # ------------------------------------------------------------------------- #
7 7 # #
8 8 # File: cterror.par #
9   -# Version: 1.0.0 #
  9 +# Version: 1.1.0 #
10 10 # #
11 11 # Author: Florent Forest #
12 12 # florent.forest@isae.fr #
... ...
src/ctlike/ctlike.par
... ... @@ -5,7 +5,7 @@
5 5 # ------------------------------------------------------------------------- #
6 6 # #
7 7 # File: ctlike.par #
8   -# Version: 1.0.0 #
  8 +# Version: 1.1.0 #
9 9 # #
10 10 # Author: Jurgen Knodlseder #
11 11 # Jurgen.Knodlseder@irap.omp.eu #
... ...
src/ctulimit/ctulimit.par
... ... @@ -5,7 +5,7 @@
5 5 # ------------------------------------------------------------------------- #
6 6 # #
7 7 # File: ctulimit.par #
8   -# Version: 01-00-00 #
  8 +# Version: 1.1.0 #
9 9 # #
10 10 # Author: Michael Mayer #
11 11 # michael.mayer@physik.hu-berlin.de #
... ...
src/support/ctool.cpp
... ... @@ -862,16 +862,18 @@ void ctool::set_obs_response(GCTAObservation* obs)
862 862 // If the observation contains a counts cube, then first check whether
863 863 // the expcube and psfcube parameters exist and are not NONE
864 864 if (dynamic_cast<const GCTAEventCube*>(obs->events()) != NULL) {
865   - if (has_par("expcube") && has_par("psfcube") && has_par("bkgcube") && has_par("edispcube")) {
  865 + if (has_par("expcube") && has_par("psfcube") &&
  866 + has_par("edispcube") && has_par("bkgcube")) {
866 867  
867 868 // Get filenames
868   - std::string expcube = (*this)["expcube"].filename();
869   - std::string psfcube = (*this)["psfcube"].filename();
  869 + std::string expcube = (*this)["expcube"].filename();
  870 + std::string psfcube = (*this)["psfcube"].filename();
870 871 std::string edispcube = (*this)["edispcube"].filename();
871   - std::string bkgcube = (*this)["bkgcube"].filename();
  872 + std::string bkgcube = (*this)["bkgcube"].filename();
872 873  
873 874 // Extract response information if available
874   - if ((expcube != "NONE") && (psfcube != "NONE") && (bkgcube != "NONE") &&
  875 + if ((expcube != "NONE") && (psfcube != "NONE") &&
  876 + (bkgcube != "NONE") &&
875 877 (gammalib::strip_whitespace(expcube) != "") &&
876 878 (gammalib::strip_whitespace(psfcube) != "") &&
877 879 (gammalib::strip_whitespace(bkgcube) != "")) {
... ... @@ -881,8 +883,9 @@ void ctool::set_obs_response(GCTAObservation* obs)
881 883 GCTACubePsf psf(psfcube);
882 884 GCTACubeBackground background(bkgcube);
883 885  
884   - // Optionally load Edisp cube
885   - if (edispcube != "NONE" && (gammalib::strip_whitespace(edispcube) != "")) {
  886 + // Optionally load energy dispersion cube
  887 + if ((edispcube != "NONE") &&
  888 + (gammalib::strip_whitespace(edispcube) != "")) {
886 889 GCTACubeEdisp edisp(edispcube);
887 890 obs->response(exposure, psf, edisp, background);
888 891 }
... ... @@ -912,8 +915,9 @@ void ctool::set_obs_response(GCTAObservation* obs)
912 915 // to the observation definition XML file, in case an observation
913 916 // definition XML file is written.
914 917 std::string parameter = "parameter name=\"Calibration\""
915   - " database=\""+database+"\""
916   - " response=\""+irf+"\"";
  918 + " database=\""+database+"\""
  919 + " response=\""+irf+"\"";
  920 +
917 921 GXmlElement xml;
918 922 xml.append(parameter);
919 923  
... ... @@ -923,22 +927,6 @@ void ctool::set_obs_response(GCTAObservation* obs)
923 927 // Attach response to observation
924 928 obs->response(response);
925 929  
926   - // Set calibration database. If "database" is a valid directory then use
927   - // this as the pathname to the calibration database. Otherwise, interpret
928   - // "database" as the instrument name, the mission being "cta"
929   - /*
930   - GCaldb caldb;
931   - if (gammalib::dir_exists(database)) {
932   - caldb.rootdir(database);
933   - }
934   - else {
935   - caldb.open("cta", database);
936   - }
937   - */
938   -
939   - // Set reponse
940   - //obs->response(irf, caldb);
941   -
942 930 // Signal response availability
943 931 has_response = true;
944 932  
... ... @@ -975,11 +963,13 @@ void ctool::set_obs_bounds(GObservations&amp; obs)
975 963 // parameters and add them
976 964 if (list->ebounds().is_empty()) {
977 965  
978   - // If there are "emin" and "emax" parameters then use them
  966 + // If there are "emin" and "emax" parameters then use
  967 + // them
979 968 if (has_par("emin") && has_par("emax")) {
980 969 double emin = (*this)["emin"].real();
981 970 double emax = (*this)["emax"].real();
982   - GEbounds ebounds(GEnergy(emin, "TeV"), GEnergy(emax, "TeV"));
  971 + GEbounds ebounds(GEnergy(emin, "TeV"),
  972 + GEnergy(emax, "TeV"));
983 973 list->ebounds(ebounds);
984 974 }
985 975  
... ... @@ -1004,7 +994,6 @@ void ctool::set_obs_bounds(GObservations&amp; obs)
1004 994  
1005 995 } // endfor: looped over observations
1006 996  
1007   -
1008 997 // Return
1009 998 return;
1010 999 }
... ... @@ -1134,7 +1123,7 @@ void ctool::provide_help(void) const
1134 1123 char* ptr = std::getenv("CTOOLS");
1135 1124 if (ptr == NULL) {
1136 1125 std::string msg = "CTOOLS environment variable not set, cannot "
1137   - "display help file. Please define CTOOLS "
  1126 + "display help file. Please set the CTOOLS "
1138 1127 "environment variable.";
1139 1128 throw GException::invalid_value(G_PROVIDE_HELP, msg);
1140 1129 }
... ...
test/data/crab_edispcube.fits.gz
No preview for this file type
test/test_ctedispcube.py
... ... @@ -2,7 +2,7 @@
2 2 # ==========================================================================
3 3 # This scripts performs unit tests for the ctedispcube tool.
4 4 #
5   -# Copyright (C) 2014-2016 Juergen Knoedlseder
  5 +# Copyright (C) 2016 Maria Haupt
6 6 #
7 7 # This program is free software: you can redistribute it and/or modify
8 8 # it under the terms of the GNU General Public License as published by
... ... @@ -66,23 +66,23 @@ class Test(gammalib.GPythonTestSuite):
66 66 """
67 67 # Set-up ctedispcube
68 68 edispcube = ctools.ctedispcube()
69   - edispcube["inobs"] = self.events_name
70   - edispcube["incube"] = "NONE"
71   - edispcube["outcube"] = "edispcube.fits"
72   - edispcube["caldb"] = self.caldb
73   - edispcube["irf"] = self.irf
74   - edispcube["ebinalg"] = "LOG"
75   - edispcube["emin"] = 0.1
76   - edispcube["emax"] = 100
77   - edispcube["enumbins"] = 20
78   - edispcube["nxpix"] = 10
79   - edispcube["nypix"] = 10
80   - edispcube["binsz"] = 0.4
81   - edispcube["coordsys"] = "CEL"
82   - edispcube["proj"] = "CAR"
83   - edispcube["xref"] = 83.63
84   - edispcube["yref"] = 22.01
85   - edispcube["mmax"] = 0.3
  69 + edispcube["inobs"] = self.events_name
  70 + edispcube["incube"] = "NONE"
  71 + edispcube["outcube"] = "edispcube.fits"
  72 + edispcube["caldb"] = self.caldb
  73 + edispcube["irf"] = self.irf
  74 + edispcube["ebinalg"] = "LOG"
  75 + edispcube["emin"] = 0.1
  76 + edispcube["emax"] = 100
  77 + edispcube["enumbins"] = 20
  78 + edispcube["nxpix"] = 10
  79 + edispcube["nypix"] = 10
  80 + edispcube["binsz"] = 0.4
  81 + edispcube["coordsys"] = "CEL"
  82 + edispcube["proj"] = "CAR"
  83 + edispcube["xref"] = 83.63
  84 + edispcube["yref"] = 22.01
  85 + edispcube["migramax"] = 2.0
86 86 edispcube["migrabins"] = 10
87 87  
88 88 # Run tool
... ...
test/test_ctools.sh
... ... @@ -2,7 +2,7 @@
2 2 # ==========================================================================
3 3 # This script tests all ctools
4 4 #
5   -# Copyright (C) 2011-2015 Juergen Knoedlseder
  5 +# Copyright (C) 2011-2016 Juergen Knoedlseder
6 6 #
7 7 # This program is free software: you can redistribute it and/or modify
8 8 # it under the terms of the GNU General Public License as published by
... ... @@ -293,7 +293,7 @@ $ctedispcube inobs=&quot;data/crab_events.fits&quot; \
293 293 xref=83.63 \
294 294 yref=22.01 \
295 295 proj="CAR" \
296   - mmax=3.0 \
  296 + migramax=3.0 \
297 297 migrabins=10
298 298 $ECHO -n "."
299 299 if [ -s "edispcube1.fits" ]
... ... @@ -310,7 +310,7 @@ $ctedispcube inobs=&quot;events.fits&quot; \
310 310 outcube="edispcube2.fits" \
311 311 caldb="irf" \
312 312 irf="cta_dummy_irf" \
313   - mmax=3.0 \
  313 + migramax=3.0 \
314 314 migrabins=3
315 315 $ECHO -n "."
316 316 if [ -s "edispcube2.fits" ]
... ... @@ -388,7 +388,6 @@ fi
388 388 $ECHO " ok"
389 389  
390 390  
391   -
392 391 #
393 392 # Test ctmodel
394 393 # ============
... ... @@ -580,7 +579,6 @@ fi
580 579 $ECHO " ok"
581 580  
582 581  
583   -
584 582 #
585 583 # Test cttsmap
586 584 # ============
... ... @@ -609,8 +607,6 @@ fi
609 607 $ECHO " ok"
610 608  
611 609  
612   -
613   -
614 610 #
615 611 # Test ctcubemask
616 612 # ===============
... ...