Commit 6c5f557d0a84287eec21b30e002973c76ad14bc0

Authored by Jürgen Knödlseder
1 parent b1ae56cb

Updated ctool.cpp to run in the latest GFilename scheme

Integrate code
Showing 1 changed file with 30 additions and 18 deletions
src/support/ctool.cpp
... ... @@ -414,26 +414,38 @@ GEbounds ctool::create_ebounds(void)
414 414 // Get filename
415 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 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 451 } // endif: ebinalg was "FILE"
... ...