Commit 50a8694217ed666339d64d198d3713637f0a92f5
1 parent
03aa111b
Throw an exception if an event list is provided as input to ctcubemask.
Showing
4 changed files
with
60 additions
and
11 deletions
pyext/ctool.i
| ... | ... | @@ -99,6 +99,7 @@ public: |
| 99 | 99 | |
| 100 | 100 | // Protected methods that check user parameters |
| 101 | 101 | void require_inobs(const std::string& method); |
| 102 | + void require_inobs_nolist(const std::string& method); | |
| 102 | 103 | void require_inobs_nocube(const std::string& method); |
| 103 | 104 | |
| 104 | 105 | // Protected support methods | ... | ... |
src/ctcubemask/ctcubemask.cpp
| ... | ... | @@ -357,16 +357,11 @@ void ctcubemask::get_parameters(void) |
| 357 | 357 | // parameters |
| 358 | 358 | if (m_obs.size() == 0) { |
| 359 | 359 | |
| 360 | - // Throw exception if no infile is given | |
| 361 | - if ((*this)["inobs"].filename() == "NONE" || | |
| 362 | - (*this)["inobs"].filename() == "") { | |
| 363 | - std::string msg = "A valid file needs to be specified for the " | |
| 364 | - "\"inobs\" parameter, yet \""+ | |
| 365 | - (*this)["inobs"].filename()+"\" was given." | |
| 366 | - " Specify a valid observation definition or " | |
| 367 | - "event list FITS file to proceed."; | |
| 368 | - throw GException::invalid_value(G_GET_PARAMETERS, msg); | |
| 369 | - } | |
| 360 | + // Throw exception if no input observation file is given | |
| 361 | + require_inobs(G_GET_PARAMETERS); | |
| 362 | + | |
| 363 | + // Throw exception if event list is given | |
| 364 | + require_inobs_nolist(G_GET_PARAMETERS); | |
| 370 | 365 | |
| 371 | 366 | // Build observation container without response (not needed) |
| 372 | 367 | m_obs = get_observations(false); | ... | ... |
src/support/ctool.cpp
| ... | ... | @@ -684,6 +684,58 @@ void ctool::require_inobs(const std::string& method) |
| 684 | 684 | |
| 685 | 685 | |
| 686 | 686 | /***********************************************************************//** |
| 687 | + * @brief Throws exception if inobs parameter is an event list | |
| 688 | + * | |
| 689 | + * @param[in] method Method name. | |
| 690 | + * | |
| 691 | + * Throw an exception if the inobs parameter is an event list. | |
| 692 | + ***************************************************************************/ | |
| 693 | +void ctool::require_inobs_nolist(const std::string& method) | |
| 694 | +{ | |
| 695 | + // Get inobs filename | |
| 696 | + std::string filename = (*this)["inobs"].filename(); | |
| 697 | + | |
| 698 | + // Continue only if we have a FITS file | |
| 699 | + if (gammalib::is_fits(filename)) { | |
| 700 | + | |
| 701 | + // Signal no list | |
| 702 | + bool is_list = false; | |
| 703 | + | |
| 704 | + // Try loading file as counts cube. If this is successful then | |
| 705 | + // throw an exception | |
| 706 | + try { | |
| 707 | + | |
| 708 | + // Load list from file | |
| 709 | + GCTAEventList list(filename); | |
| 710 | + | |
| 711 | + // If we're still alive then signal that we have a list | |
| 712 | + is_list = true; | |
| 713 | + | |
| 714 | + } | |
| 715 | + | |
| 716 | + // Catch any exceptions | |
| 717 | + catch (...) { | |
| 718 | + ; | |
| 719 | + } | |
| 720 | + | |
| 721 | + // If we have an event list then throw an exception | |
| 722 | + if (is_list) { | |
| 723 | + std::string msg = "An event list has been specified for the " | |
| 724 | + "\"inobs\" parameter, yet no event list " | |
| 725 | + "can be specified as input observation." | |
| 726 | + " Instead, specify a counts cube or an " | |
| 727 | + "observation definition file."; | |
| 728 | + throw GException::invalid_value(method, msg); | |
| 729 | + } | |
| 730 | + | |
| 731 | + } // endif: we had a FITS file | |
| 732 | + | |
| 733 | + // Return | |
| 734 | + return; | |
| 735 | +} | |
| 736 | + | |
| 737 | + | |
| 738 | +/***********************************************************************//** | |
| 687 | 739 | * @brief Throws exception if inobs parameter is a counts cube |
| 688 | 740 | * |
| 689 | 741 | * @param[in] method Method name. |
| ... | ... | @@ -698,7 +750,7 @@ void ctool::require_inobs_nocube(const std::string& method) |
| 698 | 750 | // Continue only if we have a FITS file |
| 699 | 751 | if (gammalib::is_fits(filename)) { |
| 700 | 752 | |
| 701 | - // Signal su | |
| 753 | + // Signal no cube | |
| 702 | 754 | bool is_cube = false; |
| 703 | 755 | |
| 704 | 756 | // Try loading file as counts cube. If this is successful then | ... | ... |
src/support/ctool.hpp
| ... | ... | @@ -81,6 +81,7 @@ protected: |
| 81 | 81 | |
| 82 | 82 | // Protected methods that check user parameters |
| 83 | 83 | void require_inobs(const std::string& method); |
| 84 | + void require_inobs_nolist(const std::string& method); | |
| 84 | 85 | void require_inobs_nocube(const std::string& method); |
| 85 | 86 | |
| 86 | 87 | // Protected support methods | ... | ... |