Commit 407d81a12772a429ec8a4b0a1e287336160bedbb
1 parent
a4a41902
Updated ctool.cpp and csobs2caldb to run in the latest GFilename scheme
Showing
2 changed files
with
45 additions
and
27 deletions
cscripts/csobs2caldb.py
| @@ -141,21 +141,27 @@ class csobs2caldb(ctools.cscript): | @@ -141,21 +141,27 @@ class csobs2caldb(ctools.cscript): | ||
| 141 | 141 | ||
| 142 | # retrieve response component | 142 | # retrieve response component |
| 143 | rsp = self.observation.response() | 143 | rsp = self.observation.response() |
| 144 | - | 144 | + |
| 145 | # Initialise FITS file | 145 | # Initialise FITS file |
| 146 | fits = gammalib.GFits() | 146 | fits = gammalib.GFits() |
| 147 | + | ||
| 148 | + # Create GFilename instances | ||
| 149 | + fname_aeff = gammalib.GFilename(rsp.aeff().filename()) | ||
| 150 | + fname_psf = gammalib.GFilename(rsp.psf().filename()) | ||
| 151 | + fname_edisp = gammalib.GFilename(rsp.edisp().filename()) | ||
| 152 | + fname_bkg = gammalib.GFilename(rsp.background().filename()) | ||
| 147 | 153 | ||
| 148 | # Open FITS files of response components | 154 | # Open FITS files of response components |
| 149 | - fits_aeff = gammalib.GFits(rsp.aeff().filename()) | ||
| 150 | - fits_psf = gammalib.GFits(rsp.psf().filename()) | ||
| 151 | - fits_edisp = gammalib.GFits(rsp.edisp().filename()) | ||
| 152 | - fits_bkg = gammalib.GFits(rsp.background().filename()) | 155 | + fits_aeff = gammalib.GFits(fname_aeff.filename()) |
| 156 | + fits_psf = gammalib.GFits(fname_psf.filename()) | ||
| 157 | + fits_edisp = gammalib.GFits(fname_edisp.filename()) | ||
| 158 | + fits_bkg = gammalib.GFits(fname_bkg.filename()) | ||
| 153 | 159 | ||
| 154 | # Bundle IRFs into one file | 160 | # Bundle IRFs into one file |
| 155 | - fits.append(fits_aeff["EFFECTIVE AREA"]) | ||
| 156 | - fits.append(fits_psf["POINT SPREAD FUNCTION"]) | ||
| 157 | - fits.append(fits_edisp["ENERGY DISPERSION"]) | ||
| 158 | - fits.append(fits_bkg["BACKGROUND"]) | 161 | + fits.append(fits_aeff[fname_aeff.extname("EFFECTIVE AREA")]) |
| 162 | + fits.append(fits_psf[fname_psf.extname("POINT SPREAD FUNCTION")]) | ||
| 163 | + fits.append(fits_edisp[fname_edisp.extname("ENERGY DISPERSION")]) | ||
| 164 | + fits.append(fits_bkg[fname_bkg.extname("BACKGROUND")]) | ||
| 159 | 165 | ||
| 160 | # Return fits file | 166 | # Return fits file |
| 161 | return fits | 167 | return fits |
src/support/ctool.cpp
| @@ -414,26 +414,38 @@ GEbounds ctool::create_ebounds(void) | @@ -414,26 +414,38 @@ GEbounds ctool::create_ebounds(void) | ||
| 414 | // Get filename | 414 | // Get filename |
| 415 | std::string ebinfile = (*this)["ebinfile"].filename(); | 415 | std::string ebinfile = (*this)["ebinfile"].filename(); |
| 416 | 416 | ||
| 417 | - // Open energy boundary file using the EBOUNDS or ENERGYBINS | ||
| 418 | - // extension. Throw an exception if opening fails. | ||
| 419 | - GFits file(ebinfile); | ||
| 420 | - if (file.contains("EBOUNDS")) { | ||
| 421 | - file.close(); | ||
| 422 | - ebounds.load(ebinfile,"EBOUNDS"); | ||
| 423 | - } | ||
| 424 | - else if (file.contains("ENERGYBINS")) { | ||
| 425 | - file.close(); | ||
| 426 | - ebounds.load(ebinfile,"ENERGYBINS"); | 417 | + // Create filename instance |
| 418 | + GFilename fname(ebinfile); | ||
| 419 | + | ||
| 420 | + // Check if extension name was provided | ||
| 421 | + if (!fname.has_extname()) { | ||
| 422 | + | ||
| 423 | + // Open energy boundary file using the EBOUNDS or ENERGYBINS | ||
| 424 | + // extension. Throw an exception if opening fails. | ||
| 425 | + GFits file(ebinfile); | ||
| 426 | + if (file.contains("EBOUNDS")) { | ||
| 427 | + file.close(); | ||
| 428 | + ebounds.load(ebinfile); | ||
| 429 | + } | ||
| 430 | + else if (file.contains("ENERGYBINS")) { | ||
| 431 | + file.close(); | ||
| 432 | + ebinfile += "[ENERGYBINS]"; | ||
| 433 | + ebounds.load(ebinfile); | ||
| 434 | + } | ||
| 435 | + else { | ||
| 436 | + file.close(); | ||
| 437 | + std::string msg = "No extension with name \"EBOUNDS\" or" | ||
| 438 | + " \"ENERGYBINS\" found in FITS file" | ||
| 439 | + " \""+ebinfile+"\".\n" | ||
| 440 | + "An \"EBOUNDS\" or \"ENERGYBINS\" extension" | ||
| 441 | + " is required if the parameter \"ebinalg\"" | ||
| 442 | + " is set to \"FILE\"."; | ||
| 443 | + throw GException::invalid_value(G_CREATE_EBOUNDS, msg); | ||
| 444 | + } | ||
| 427 | } | 445 | } |
| 428 | else { | 446 | else { |
| 429 | - file.close(); | ||
| 430 | - std::string msg = "No extension with name \"EBOUNDS\" or" | ||
| 431 | - " \"ENERGYBINS\" found in FITS file" | ||
| 432 | - " \""+ebinfile+"\".\n" | ||
| 433 | - "An \"EBOUNDS\" or \"ENERGYBINS\" extension" | ||
| 434 | - " is required if the parameter \"ebinalg\"" | ||
| 435 | - " is set to \"FILE\"."; | ||
| 436 | - throw GException::invalid_value(G_CREATE_EBOUNDS, msg); | 447 | + // Load ebounds from filename including extension |
| 448 | + ebounds.load(ebinfile); | ||
| 437 | } | 449 | } |
| 438 | 450 | ||
| 439 | } // endif: ebinalg was "FILE" | 451 | } // endif: ebinalg was "FILE" |