/***************************************************************************
* GException_sky.cpp - sky exception handlers *
* ----------------------------------------------------------------------- *
* copyright (C) 2010-2015 by Jurgen Knodlseder *
* ----------------------------------------------------------------------- *
* *
* 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_sky.cpp
* @brief Sky module exception classes implementation
* @author J. Knodlseder
*/
/* __ Includes ___________________________________________________________ */
#ifdef HAVE_CONFIG_H
#include
#endif
#include "GException.hpp"
#include "GTools.hpp"
/***********************************************************************//**
* @brief General GSkyMap error
*
* @param[in] origin Method that throws the error.
* @param[in] message Error message.
***************************************************************************/
GException::skymap::skymap(std::string origin,
std::string message)
{
// Set origin and message
m_origin = origin;
m_message = message;
// Return
return;
}
/***********************************************************************//**
* @brief Bad sky map parameter
*
* @param[in] origin Method that throws the error.
* @param[in] par Map parameter.
* @param[in] message Error message.
***************************************************************************/
GException::skymap_bad_par::skymap_bad_par(std::string origin,
int par,
std::string message)
{
// Set origin and message
m_origin = origin;
m_message = "Invalid map parameter ("+gammalib::str(par)+"). " + message;
// Return
return;
}
/***********************************************************************//**
* @brief Incompatible data size
*
* @param[in] origin Method that throws the error.
* @param[in] size Encountered data size.
* @param[in] expected Expected data size.
* @param[in] message Error message.
***************************************************************************/
GException::skymap_bad_size::skymap_bad_size(std::string origin,
int size,
int expected,
std::string message)
{
// Set origin and message
m_origin = origin;
m_message = "Data size ("+gammalib::str(size)+") is incompatible with "
"expected size ("+gammalib::str(expected)+"). " + message;
// Return
return;
}
/***********************************************************************//**
* @brief Incompatible ctype keywords
*
* @param[in] origin Method that throws the error.
* @param[in] ctype1 Encountered ctype1 keyword.
* @param[in] ctype2 Encountered ctype2 keyword.
* @param[in] message Error message.
***************************************************************************/
GException::skymap_bad_ctype::skymap_bad_ctype(std::string origin,
std::string ctype1,
std::string ctype2,
std::string message)
{
// Set origin and message
m_origin = origin;
m_message = "CTYPE1 "+ctype1+") and CTYPE2 ("+ctype2+") header keywords"
" are not compatible. " + message;
// Return
return;
}
/***********************************************************************//**
* @brief Bad image dimension
*
* @param[in] origin Method that throws the error.
* @param[in] naxis Encountered number of axes.
* @param[in] message Error message.
***************************************************************************/
GException::skymap_bad_image_dim::skymap_bad_image_dim(std::string origin,
int naxis,
std::string message)
{
// Set origin and message
m_origin = origin;
m_message = "Invalid number of image dimensions (naxis="+gammalib::str(naxis)+")."
" " + message;
// Return
return;
}
/***********************************************************************//**
* @brief General GWcs error
*
* @param[in] origin Method that throws the error.
* @param[in] message Error message.
***************************************************************************/
GException::wcs::wcs(std::string origin,
std::string message)
{
// Set origin and message
m_origin = origin;
m_message = message;
// Return
return;
}
/***********************************************************************//**
* @brief Invalid WCS code
*
* @param[in] origin Method that throws the error.
* @param[in] wcs WCS.
* @param[in] message Optional error message.
***************************************************************************/
GException::wcs_invalid::wcs_invalid(std::string origin,
std::string wcs,
std::string message)
{
// Set origin and message
m_origin = origin;
m_message = "Invalid World Coordinate System code ("+wcs+"). " + message;
// Return
return;
}
/***********************************************************************//**
* @brief Coordinate system invalid
*
* @param[in] origin Method that throws the error.
* @param[in] coordsys Specified coordinate system.
***************************************************************************/
GException::wcs_bad_coords::wcs_bad_coords(std::string origin,
std::string coordsys)
{
// Set origin and message
m_origin = origin;
m_message = "Invalid WCS coordinate system ("+coordsys+"). "
"Should be one of EQU/CEL/GAL/ECL/HEL/SGL.";
// Return
return;
}
/***********************************************************************//**
* @brief No projection function declared
*
* @param[in] origin Method that throws the error.
* @param[in] message Optional error message.
***************************************************************************/
GException::wcs_no_proj_fct::wcs_no_proj_fct(std::string origin,
std::string message)
{
// Set origin and message
m_origin = origin;
m_message = "No projection function declared. " + message;
// Return
return;
}
/***********************************************************************//**
* @brief Healpix resolution invalid
*
* @param[in] origin Method that throws the error.
* @param[in] nside Specified nside parameter.
***************************************************************************/
GException::wcs_hpx_bad_nside::wcs_hpx_bad_nside(std::string origin,
int nside)
{
// Set origin and message
m_origin = origin;
m_message = "Invalid Healpix nside value ("+gammalib::str(nside)+"). "
"Should be one of 1,2,4,8,16,32,64,128,256,512,1024,2048,"
"4096,8192.";
// Return
return;
}
/***********************************************************************//**
* @brief Healpix pixel ordering invalid
*
* @param[in] origin Method that throws the error.
* @param[in] ordering Specified pixel ordering.
***************************************************************************/
GException::wcs_hpx_bad_ordering::wcs_hpx_bad_ordering(std::string origin,
std::string ordering)
{
// Set origin and message
m_origin = origin;
m_message = "Invalid pixel ordering ("+ordering+"). "
"Should be either 'RING' or 'NESTED'.";
// Return
return;
}
/***********************************************************************//**
* @brief Singular matrix encountered
*
* @param[in] origin Method that throws the error.
* @param[in] naxis Matrix size (naxis*naxis).
* @param[in] mat Matrix (stored in vector).
***************************************************************************/
GException::wcs_singular_matrix::wcs_singular_matrix(std::string origin,
int naxis,
const std::vector& mat)
{
// Set origin and message
m_origin = origin;
m_message = "Singular matrix encountered: mat=[";
for (int i = 0, ij = 0; i < naxis; ++i) {
if (i > 0) {
m_message += ",";
}
m_message += "[";
for (int j = 0; j < naxis; ++j, ++ij) {
if (j > 0) {
m_message += ",";
}
if (ij < mat.size()) {
m_message += gammalib::str(mat[ij]);
}
else {
m_message += " ... ";
}
}
m_message += "]";
}
m_message += "].";
// Return
return;
}
/***********************************************************************//**
* @brief Invalid WCS parameter
*
* @param[in] origin Method that throws the error.
* @param[in] message Optional error message.
***************************************************************************/
GException::wcs_invalid_parameter::wcs_invalid_parameter(std::string origin,
std::string message)
{
// Set origin and message
m_origin = origin;
m_message = "Invalid WCS parameter encountered.";
if (message.length() > 0)
m_message += " "+message;
// Return
return;
}
/***********************************************************************//**
* @brief Invalid (x,y) coordinate(s)
*
* @param[in] origin Method that throws the error.
* @param[in] num Number of invalid coordinates.
* @param[in] message Optional error message.
***************************************************************************/
GException::wcs_invalid_x_y::wcs_invalid_x_y(std::string origin,
int num,
std::string message)
{
// Set origin and message
m_origin = origin;
m_message = gammalib::str(num)+" (x,y) coordinates were invalid.";
if (message.length() > 0)
m_message += " "+message;
// Return
return;
}
/***********************************************************************//**
* @brief Invalid (phi,theta) coordinate(s)
*
* @param[in] origin Method that throws the error.
* @param[in] num Number of invalid coordinates.
* @param[in] message Optional error message.
***************************************************************************/
GException::wcs_invalid_phi_theta::wcs_invalid_phi_theta(std::string origin,
int num,
std::string message)
{
// Set origin and message
m_origin = origin;
m_message = gammalib::str(num)+" (phi,theta) coordinates were invalid.";
if (message.length() > 0)
m_message += " "+message;
// Return
return;
}