/***************************************************************************
* GException_obs.cpp - observations exception handlers *
* ----------------------------------------------------------------------- *
* copyright (C) 2010-2012 by Juergen Knoedlseder *
* ----------------------------------------------------------------------- *
* *
* This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation, either version 3 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program. If not, see . *
* *
***************************************************************************/
/**
* @file GException_obs.cpp
* @brief Observation exception handler interface implementation
* @author Juergen Knoedlseder
*/
/* __ Includes ___________________________________________________________ */
#ifdef HAVE_CONFIG_H
#include
#endif
#include "GException.hpp"
#include "GTools.hpp"
#include "GObservationRegistry.hpp"
/***********************************************************************//**
* @brief No valid instrument response found
*
* @param[in] origin Name of method that has thrown the exception.
* @param[in] message Optional error message.
***************************************************************************/
GException::no_response::no_response(std::string origin, std::string message)
{
// Set method name
m_origin = origin;
// Set error message
m_message = "No valid instrument response found in observation."
" Set event container before using this method.";
if (message.length() > 0) {
m_message += " " + message;
}
// Return
return;
}
/***********************************************************************//**
* @brief No valid event container found
*
* @param[in] origin Method that throws the error.
* @param[in] message Optional error message.
***************************************************************************/
GException::no_events::no_events(std::string origin, std::string message)
{
// Set method name
m_origin = origin;
// Set error message
m_message = "No valid event container found in observation."
" Set event container before using this method.";
if (message.length() > 0) {
m_message += " " + message;
}
// Return
return;
}
/***********************************************************************//**
* @brief No valid event list found
*
* @param[in] origin Method that throws the error.
* @param[in] message Optional error message.
***************************************************************************/
GException::no_list::no_list(std::string origin, std::string message)
{
// Set method name
m_origin = origin;
// Set error message
m_message = "No valid event list found in observation."
" Set event list before using this method.";
if (message.length() > 0) {
m_message += " " + message;
}
// Return
return;
}
/***********************************************************************//**
* @brief No valid event cube found
*
* @param[in] origin Method that throws the error.
* @param[in] message Optional error message.
***************************************************************************/
GException::no_cube::no_cube(std::string origin, std::string message)
{
// Set method name
m_origin = origin;
// Set error message
m_message = "No valid event cube found in observation."
" Set event cube before using this method.";
if (message.length() > 0) {
m_message += " " + message;
}
// Return
return;
}
/***********************************************************************//**
* @brief No valid region of interest found
*
* @param[in] origin Method that throws the error.
* @param[in] message Optional error message.
***************************************************************************/
GException::no_roi::no_roi(std::string origin, std::string message)
{
// Set method name
m_origin = origin;
// Set error message
m_message = "No valid region of interest (ROI) found in observation."
" Set region of interest before using this method.";
if (message.length() > 0) {
m_message += " " + message;
}
// Return
return;
}
/***********************************************************************//**
* @brief Mismatch between gradient vector and number of model parameters
*
* @param[in] origin Method that throws the error.
* @param[in] nsize Gradient vector size.
* @param[in] npars Number of parameters in model.
***************************************************************************/
GException::gradient_par_mismatch::gradient_par_mismatch(std::string origin,
int nsize,
int npars)
{
// Set method name
m_origin = origin;
// Set error message
m_message = "Gradient vector size "+gammalib::str(nsize)+
" mismatches number "+gammalib::str(npars)+" of model parameters.";
// Return
return;
}
/***********************************************************************//**
* @brief Calibration database directory not found
*
* @param[in] origin Name of method that has thrown the exception.
* @param[in] caldb Name of calibration database.
* @param[in] message Optional error message.
***************************************************************************/
GException::caldb_not_found::caldb_not_found(std::string origin,
std::string caldb,
std::string message)
{
// Set method name
m_origin = origin;
// Set error message
m_message = "Calibration database \""+caldb+"\" not found.";
if (message.length() > 0) {
m_message += " " + message;
}
// Return
return;
}
/***********************************************************************//**
* @brief Response error: invalid response type specified
*
* @param[in] origin Method that throws the error.
* @param[in] type Specified response type.
* @param[in] message Optional error message.
***************************************************************************/
GException::rsp_invalid_type::rsp_invalid_type(std::string origin,
std::string type,
std::string message)
{
// Set method name
m_origin = origin;
// Set error message
m_message = "Invalid response type \""+type+"\" specified.";
if (message.length() > 0) {
m_message += " " + message;
}
// Return
return;
}
/***********************************************************************//**
* @brief Invalid Good Time Interval found
*
* @param[in] origin Method that throws the error.
* @param[in] tstart Good Time Interval start time.
* @param[in] tstop Good Time Interval stop time.
* @param[in] message Optional error message.
***************************************************************************/
GException::gti_invalid::gti_invalid(std::string origin, GTime tstart,
GTime tstop, std::string message)
{
// Set method name
m_origin = origin;
// Set error message
m_message = "Invalid Good Time Interval (" + tstart.print() + "-" +
tstop.print() + ") specified.";
if (message.length() > 0) {
m_message += " " + message;
}
// Return
return;
}
/***********************************************************************//**
* @brief Invalid energy range found
*
* @param[in] origin Method that throws the error.
* @param[in] emin Minimum energy in MeV.
* @param[in] emax Maximum energy in MeV.
* @param[in] message Optional error message.
***************************************************************************/
GException::erange_invalid::erange_invalid(std::string origin, double emin,
double emax, std::string message)
{
// Set method name
m_origin = origin;
// Set error message
m_message = "Invalid energy range (Emin="+gammalib::str(emin)+" MeV, Emax="+
gammalib::str(emax)+" MeV) specified.";
if (message.length() > 0) {
m_message += " " + message;
}
// Return
return;
}
/***********************************************************************//**
* @brief Invalid optimization statistics
*
* @param[in] origin Method that throws the error.
* @param[in] statistics Encountered statistics.
* @param[in] message Optional error message.
***************************************************************************/
GException::invalid_statistics::invalid_statistics(std::string origin,
std::string statistics,
std::string message)
{
// Set method name
m_origin = origin;
// Set error message
m_message = "Invalid optimization statistics \""+statistics+
"\" specified.";
if (message.length() > 0) {
m_message += " " + message;
}
// Return
return;
}
/***********************************************************************//**
* @brief Invalid instrument encountered
*
* @param[in] origin Method that throws the error.
* @param[in] instrument Encountered instrument.
* @param[in] message Optional error message.
***************************************************************************/
GException::invalid_instrument::invalid_instrument(std::string origin,
std::string instrument,
std::string message)
{
// Set origin and message
m_origin = origin;
m_message = "Invalid instrument \""+instrument+"\" encountered.";
if (message.length() > 0) {
m_message += " " + message;
}
// Add list of valid instruments
GObservationRegistry registry;
if (registry.size() > 0) {
m_message += " The following instruments are registered: ";
for (int i = 0; i < registry.size(); ++i) {
if (i > 0) {
m_message += ", ";
}
m_message += "\"" + registry.name(i) + "\"";
}
m_message += ".";
}
else {
m_message += "No instruments are registered.";
}
// Return
return;
}
/***********************************************************************//**
* @brief Invalid time unit encountered
*
* @param[in] origin Method that throws the error.
* @param[in] unit Time unit.
* @param[in] message Optional error message.
***************************************************************************/
GException::time_invalid_unit::time_invalid_unit(const std::string& origin,
const std::string& unit,
const std::string& message)
{
// Set origin and message
m_origin = origin;
m_message = "Invalid time unit \""+unit+"\" encountered.";
if (message.length() > 0) {
m_message += " " + message;
}
// Return
return;
}
/***********************************************************************//**
* @brief No valid reference MJD found
*
* @param[in] origin Method that throws the error.
* @param[in] message Optional error message.
***************************************************************************/
GException::no_valid_time_ref::no_valid_time_ref(const std::string& origin,
const std::string& message)
{
// Set origin and message
m_origin = origin;
m_message = "No valid time reference Modified Julian Day found.";
if (message.length() > 0) {
m_message += " " + message;
}
// Return
return;
}