GammaLib
2.0.0
|
Zenithal/azimuthal perspective (AZP) projection class definition. More...
#include <GWcsAZP.hpp>
Public Member Functions | |
GWcsAZP (void) | |
Void constructor. More... | |
GWcsAZP (const std::string &coords, const double &crval1, const double &crval2, const double &crpix1, const double &crpix2, const double &cdelt1, const double &cdelt2) | |
Constructor. More... | |
GWcsAZP (const GWcsAZP &wcs) | |
Copy constructor. More... | |
virtual | ~GWcsAZP (void) |
Destructor. More... | |
GWcsAZP & | operator= (const GWcsAZP &wcs) |
Assignment operator. More... | |
virtual void | clear (void) |
Clear instance. More... | |
virtual GWcsAZP * | clone (void) const |
Clone instance. More... | |
virtual std::string | classname (void) const |
Return class name. More... | |
virtual std::string | code (void) const |
Return projection code. More... | |
virtual std::string | name (void) const |
Return projection name. More... | |
virtual std::string | print (const GChatter &chatter=NORMAL) const |
Print WCS information. More... | |
Public Member Functions inherited from GWcs | |
GWcs (void) | |
Void constructor. More... | |
GWcs (const std::string &coords, const double &crval1, const double &crval2, const double &crpix1, const double &crpix2, const double &cdelt1, const double &cdelt2) | |
Standard WCS sky map constructor. More... | |
GWcs (const GFitsHDU &hdu) | |
Construct from FITS HDU table. More... | |
GWcs (const GWcs &wcs) | |
Copy constructor. More... | |
virtual | ~GWcs (void) |
Destructor. More... | |
virtual GWcs & | operator= (const GWcs &wcs) |
Assignment operator. More... | |
virtual int | size (void) const |
Return dimension of projection. More... | |
virtual void | read (const GFitsHDU &hdu) |
Read WCS definition from FITS header. More... | |
virtual void | write (GFitsHDU &hdu) const |
Write WCS definition into FITS HDU header. More... | |
virtual double | solidangle (const GSkyPixel &pixel) const |
Returns solid angle of pixel in units of steradians. More... | |
virtual GSkyDir | pix2dir (const GSkyPixel &pixel) const |
Returns sky direction of sky map pixel. More... | |
virtual GSkyPixel | dir2pix (const GSkyDir &dir) const |
Returns sky map pixel of sky direction. More... | |
void | set (const std::string &coords, const double &crval1, const double &crval2, const double &crpix1, const double &crpix2, const double &cdelt1, const double &cdelt2) |
Set World Coordinate System parameters. More... | |
double | crval (const int &inx) const |
Return value of reference pixel. More... | |
double | crpix (const int &inx) const |
Return reference pixel. More... | |
double | cdelt (const int &inx) const |
Return pixel size. More... | |
Public Member Functions inherited from GSkyProjection | |
GSkyProjection (void) | |
Void constructor. More... | |
GSkyProjection (const GSkyProjection &proj) | |
Copy constructor. More... | |
virtual | ~GSkyProjection (void) |
Destructor. More... | |
virtual GSkyProjection & | operator= (const GSkyProjection &proj) |
Assignment operator. More... | |
virtual std::string | coordsys (void) const |
Returns coordinate system. More... | |
virtual void | coordsys (const std::string &coordsys) |
Set coordinate system. More... | |
Public Member Functions inherited from GBase | |
virtual | ~GBase (void) |
Destructor. More... | |
Private Member Functions | |
void | init_members (void) |
Initialise class members. More... | |
void | copy_members (const GWcsAZP &wcs) |
Copy class members. More... | |
void | free_members (void) |
Delete class members. More... | |
void | prj_set (void) const |
Setup of projection. More... | |
void | prj_x2s (int nx, int ny, int sxy, int spt, const double *x, const double *y, double *phi, double *theta, int *stat) const |
Pixel-to-spherical deprojection. More... | |
void | prj_s2x (int nphi, int ntheta, int spt, int sxy, const double *phi, const double *theta, double *x, double *y, int *stat) const |
Generic spherical-to-pixel projection. More... | |
Additional Inherited Members | |
Protected Member Functions inherited from GWcs | |
void | init_members (void) |
Initialise class members. More... | |
void | copy_members (const GWcs &wcs) |
Copy class members. More... | |
void | free_members (void) |
Delete class members. More... | |
void | set_members (const std::string &coords, const double &crval1, const double &crval2, const double &crpix1, const double &crpix2, const double &cdelt1, const double &cdelt2) |
Set World Coordinate System parameters. More... | |
virtual bool | compare (const GSkyProjection &proj) const |
Compares sky projection. More... | |
bool | undefined (const double &value) const |
Check if value is undefined. More... | |
void | wcs_ini (int naxis) |
Initialise World Coordinate System. More... | |
void | wcs_set (void) const |
Setup of World Coordinate System. More... | |
void | wcs_set_radesys (void) const |
Set radesys and equinox members. More... | |
void | wcs_set_ctype (void) const |
Set CTYPEa keywords. More... | |
void | wcs_p2s (int ncoord, int nelem, const double *pixcrd, double *imgcrd, double *phi, double *theta, double *world, int *stat) const |
Pixel-to-world transformation. More... | |
void | wcs_s2p (int ncoord, int nelem, const double *world, double *phi, double *theta, double *imgcrd, double *pixcrd, int *stat) const |
World-to-pixel transformation. More... | |
std::string | wcs_print (const GChatter &chatter=NORMAL) const |
Print WCS information. More... | |
std::string | wcs_print_value (const double &value) const |
Helper function for value printing. More... | |
void | cel_ini (void) const |
Initialise celestial transformation parameters. More... | |
void | cel_set (void) const |
Setup of celestial transformation. More... | |
void | cel_x2s (int nx, int ny, int sxy, int sll, const double *x, const double *y, double *phi, double *theta, double *lng, double *lat, int *stat) const |
Pixel-to-world celestial transformation. More... | |
void | cel_s2x (int nlng, int nlat, int sll, int sxy, const double *lng, const double *lat, double *phi, double *theta, double *x, double *y, int *stat) const |
World-to-pixel celestial transformation. More... | |
void | sph_x2s (int nphi, int ntheta, int spt, int sll, const double *phi, const double *theta, double *lng, double *lat) const |
Rotation in the pixel-to-world direction. More... | |
void | sph_s2x (int nlng, int nlat, int sll, int spt, const double *lng, const double *lat, double *phi, double *theta) const |
Rotation in the pixel-to-world direction. More... | |
void | spc_ini (void) |
Initialise spectral transformation parameters. More... | |
void | lin_ini (int naxis) |
Initialise linear transformation parameters. More... | |
void | lin_set (void) const |
Initialise linear transformation parameters. More... | |
void | lin_p2x (int ncoord, int nelem, const double *pixcrd, double *imgcrd) const |
Pixel-to-world linear transformation. More... | |
void | lin_x2p (int ncoord, int nelem, const double *imgcrd, double *pixcrd) const |
World-to-pixel linear transformation. More... | |
void | lin_matinv (const std::vector< double > &mat, std::vector< double > &inv) const |
Invert linear transformation matrix. More... | |
void | prj_ini (void) const |
Initialise projection parameters. More... | |
void | prj_off (const double &phi0, const double &theta0) const |
Compute fiducial offset to force (x,y) = (0,0) at (phi0,theta0) More... | |
int | prj_bchk (const double &tol, const int &nphi, const int &ntheta, const int &spt, double *phi, double *theta, int *stat) const |
Performs bounds checking on native spherical coordinates. More... | |
void | init_lock (const int &lock_id=0) const |
Initializes an OpenMP lock with a specific name. More... | |
void | set_lock (const int &lock_id=0) const |
Sets an OpenMP lock with a specific name. More... | |
void | unset_lock (const int &lock_id=0) const |
Releases a previously set OpenMP lock. More... | |
Protected Member Functions inherited from GSkyProjection | |
void | init_members (void) |
Initialise class members. More... | |
void | copy_members (const GSkyProjection &proj) |
Copy class members. More... | |
void | free_members (void) |
Delete class members. More... | |
Protected Attributes inherited from GWcs | |
bool | m_wcsset |
WCS information is set. More... | |
int | m_naxis |
Number of axes. More... | |
std::vector< double > | m_crval |
CRVALia keyvalues for each coord axis. More... | |
std::vector< std::string > | m_cunit |
CUNITia keyvalues for each coord axis. More... | |
std::vector< std::string > | m_ctype |
CTYPEia keyvalues for each coord axis. More... | |
std::vector< std::string > | m_ctype_c |
CTYPEia comments for each coord axis. More... | |
double | m_lonpole |
LONPOLEa keyvalue. More... | |
double | m_latpole |
LATPOLEa keyvalue. More... | |
double | m_restfrq |
RESTFRQa keyvalue. More... | |
double | m_restwav |
RESTWAVa keyvalue. More... | |
std::string | m_radesys |
RADESYS keyvalue. More... | |
double | m_equinox |
EQUINOX keyvalue. More... | |
std::vector< double > | m_cd |
CDi_ja linear transformation matrix. More... | |
std::vector< double > | m_crota |
CROTAia keyvalues for each coord axis. More... | |
int | m_lng |
Longitude axis. More... | |
int | m_lat |
Latitude axis. More... | |
int | m_spec |
Spectral axis. More... | |
bool | m_linset |
Linear transformation is set. More... | |
bool | m_unity |
Signals unity PC matrix. More... | |
std::vector< double > | m_crpix |
CRPIXja keyvalues for each pixel axis. More... | |
std::vector< double > | m_pc |
PCi_ja linear transformation matrix. More... | |
std::vector< double > | m_cdelt |
CDELTia keyvalues for each coord axis. More... | |
std::vector< double > | m_piximg |
Pixel to image transformation matrix. More... | |
std::vector< double > | m_imgpix |
Image to pixel transformation matrix. More... | |
bool | m_celset |
Celestial transformation is set. More... | |
bool | m_offset |
Force (x,y) = (0,0) at (phi_0,theta_0) More... | |
double | m_phi0 |
Native azimuth angle of fiducial point. More... | |
double | m_theta0 |
Native zenith angle of fiducial point. More... | |
double | m_ref [4] |
Celestial coordinates of fiducial. More... | |
double | m_euler [5] |
Euler angles and functions thereof. More... | |
int | m_latpreq |
LATPOLEa requirement. More... | |
bool | m_isolat |
True if |latitude| is preserved. More... | |
bool | m_prjset |
Projection is set. More... | |
double | m_r0 |
Radius of the generating sphere. More... | |
double | m_pv [PVN] |
Projection parameters. More... | |
bool | m_bounds |
Enable strict bounds checking. More... | |
double | m_x0 |
Fiducial x offset. More... | |
double | m_y0 |
Fiducial y offset. More... | |
std::vector< double > | m_w |
Intermediate values. More... | |
bool | m_has_pix2dir_cache |
Has valid pix2dir cache value. More... | |
bool | m_has_dir2pix_cache |
Has valid dir2pix cache value. More... | |
GSkyDir | m_last_pix2dir_dir |
Last sky direction for pix2dir. More... | |
GSkyDir | m_last_dir2pix_dir |
Last sky direction for dir2pix. More... | |
GSkyPixel | m_last_pix2dir_pix |
Last pixel for pix2dir. More... | |
GSkyPixel | m_last_dir2pix_pix |
Last pixel for dir2pix. More... | |
Protected Attributes inherited from GSkyProjection | |
int | m_coordsys |
0=CEL, 1=GAL More... | |
Zenithal/azimuthal perspective (AZP) projection class definition.
This class implements the "zenithal/azimuthal perspective" projection for the World Coordinate System.
Definition at line 43 of file GWcsAZP.hpp.
GWcsAZP::GWcsAZP | ( | void | ) |
Void constructor.
Definition at line 67 of file GWcsAZP.cpp.
References init_members().
Referenced by clone().
GWcsAZP::GWcsAZP | ( | const std::string & | coords, |
const double & | crval1, | ||
const double & | crval2, | ||
const double & | crpix1, | ||
const double & | crpix2, | ||
const double & | cdelt1, | ||
const double & | cdelt2 | ||
) |
Constructor.
[in] | coords | Coordinate system. |
[in] | crval1 | X value of reference pixel. |
[in] | crval2 | Y value of reference pixel. |
[in] | crpix1 | X index of reference pixel (starting from 1). |
[in] | crpix2 | Y index of reference pixel (starting from 1). |
[in] | cdelt1 | Increment in x direction at reference pixel [deg]. |
[in] | cdelt2 | Increment in y direction at reference pixel [deg]. |
Definition at line 88 of file GWcsAZP.cpp.
References init_members(), and GWcs::wcs_set().
GWcsAZP::GWcsAZP | ( | const GWcsAZP & | wcs | ) |
Copy constructor.
[in] | wcs | World Coordinate System. |
Definition at line 111 of file GWcsAZP.cpp.
References copy_members(), and init_members().
|
virtual |
|
inlinevirtual |
Return class name.
Implements GWcs.
Definition at line 87 of file GWcsAZP.hpp.
|
virtual |
Clear instance.
This method properly resets the object to an initial state.
Implements GWcs.
Definition at line 184 of file GWcsAZP.cpp.
References free_members(), GSkyProjection::free_members(), GWcs::free_members(), init_members(), GSkyProjection::init_members(), and GWcs::init_members().
|
virtual |
Clone instance.
Implements GWcs.
Definition at line 206 of file GWcsAZP.cpp.
References GWcsAZP().
|
inlinevirtual |
Return projection code.
Returns the projection code "AZP".
Implements GWcs.
Definition at line 101 of file GWcsAZP.hpp.
|
private |
Copy class members.
[in] | wcs | World Coordinate System. |
Definition at line 261 of file GWcsAZP.cpp.
Referenced by GWcsAZP(), and operator=().
|
private |
Delete class members.
Definition at line 271 of file GWcsAZP.cpp.
Referenced by clear(), operator=(), and ~GWcsAZP().
|
private |
Initialise class members.
Definition at line 249 of file GWcsAZP.cpp.
Referenced by clear(), GWcsAZP(), and operator=().
|
inlinevirtual |
Return projection name.
Returns the projection name.
Implements GWcs.
Definition at line 115 of file GWcsAZP.hpp.
Assignment operator.
[in] | wcs | World Coordinate System. |
Definition at line 149 of file GWcsAZP.cpp.
References copy_members(), free_members(), init_members(), and GWcs::operator=().
Print WCS information.
[in] | chatter | Chattiness (defaults to NORMAL). |
Implements GWcs.
Definition at line 219 of file GWcsAZP.cpp.
References SILENT, and GWcs::wcs_print().
|
privatevirtual |
Generic spherical-to-pixel projection.
[in] | nphi | Longitude vector length. |
[in] | ntheta | Latitude vector length (0=no replication). |
[in] | spt | Input vector step. |
[in] | sxy | Output vector step. |
[in] | phi | Longitude vector of the projected point in native spherical coordinates [deg]. |
[in] | theta | Latitude vector of the projected point in native spherical coordinates [deg]. |
[out] | x | Vector of projected x coordinates. |
[out] | y | Vector of projected y coordinates. |
[out] | stat | Status return value for each vector element (always 0) |
Project native spherical coordinates (phi,theta) to pixel (x,y) coordinates in the plane of projection.
This method has been adapted from the wcslib function prj.c::azps2x(). The interface follows very closely that of wcslib. In contrast to the wcslib routine, however, the method assumes that the projection has been setup previously (as this will be done by the constructor).
Implements GWcs.
Definition at line 495 of file GWcsAZP.cpp.
References abs(), gammalib::asind(), gammalib::atand(), gammalib::check_prj_s2x_status(), G_PRJ_S2X, GWcs::m_bounds, GWcs::m_prjset, GWcs::m_pv, GWcs::m_w, GWcs::m_x0, GWcs::m_y0, prj_set(), gammalib::sincosd(), and sqrt().
|
privatevirtual |
Setup of projection.
This method sets up the projection information. The method has been adapted from the wcslib function prj.c::azpset.
GException::runtime_error | PV(1) or PV(2) are invalid. |
Given: m_pv[1] Distance parameter, mu in units of r0. m_pv[2] Tilt angle, gamma in degrees.
Given and/or returned: m_r0 Reset to 180/pi if 0. m_phi0 Reset to 0.0 if undefined. m_theta0 Reset to 90.0 if undefined.
Returned: m_x0 Fiducial offset in x. m_y0 Fiducial offset in y. m_w[0] r0*(mu+1) m_w[1] tan(gamma) m_w[2] sec(gamma) m_w[3] cos(gamma) m_w[4] sin(gamma) m_w[5] asin(-1/mu) for |mu| >= 1, -90 otherwise m_w[6] mu*cos(gamma) m_w[7] 1 if |mu*cos(gamma)| < 1, 0 otherwise
Implements GWcs.
Definition at line 308 of file GWcsAZP.cpp.
References abs(), gammalib::asind(), gammalib::cosd(), G_PRJ_SET, GWcs::m_prjset, GWcs::m_pv, GWcs::m_r0, GWcs::m_w, GWcs::prj_off(), gammalib::rad2deg, gammalib::sind(), and GWcs::undefined().
|
privatevirtual |
Pixel-to-spherical deprojection.
[in] | nx | X vector length. |
[in] | ny | Y vector length (0=no replication). |
[in] | sxy | Input vector step. |
[in] | spt | Output vector step. |
[in] | x | Vector of projected x coordinates. |
[in] | y | Vector of projected y coordinates. |
[out] | phi | Longitude of the projected point in native spherical coordinates [deg]. |
[out] | theta | Latitude of the projected point in native spherical coordinates [deg]. |
[out] | stat | Status return value for each vector element (always 0) |
Deproject pixel (x,y) coordinates in the plane of projection to native spherical coordinates (phi,theta).
This method has been adapted from the wcslib function prj.c::azpx2s(). The interface follows very closely that of wcslib. In contrast to the wcslib routine, however, the method assumes that the projection has been setup previously (as this will be done by the constructor).
Implements GWcs.
Definition at line 376 of file GWcsAZP.cpp.
References abs(), gammalib::asind(), gammalib::atan2d(), gammalib::check_prj_x2s_status(), G_PRJ_X2S, GWcs::m_prjset, GWcs::m_pv, GWcs::m_w, GWcs::m_x0, GWcs::m_y0, prj_set(), and sqrt().