IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 1513


Ignore:
Timestamp:
Aug 11, 2004, 6:19:18 PM (22 years ago)
Author:
Paul Price
Message:

Exported the astronomy images and astrometry section to its own file.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/doc/pslib/psLibSDRS.tex

    r1455 r1513  
    1 %%% $Id: psLibSDRS.tex,v 1.65 2004-08-10 23:08:40 price Exp $
     1%%% $Id: psLibSDRS.tex,v 1.66 2004-08-12 04:19:18 price Exp $
    22\documentclass[panstarrs,spec]{panstarrs}
    33
     
    36523652%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    36533653
    3654 \subsection{Astronomical Images}
    3655 
    3656 \subsubsection{Overview}
    3657 
    3658 Above, we have defined a basic container for a single 2D collection of
    3659 pixels (\code{psImage}), along with basic operations to manipulate the
    3660 image pixels.  For astronomical applications, this data structure is
    3661 insufficient for two reasons.  First, it does provide sufficient
    3662 additional metadata to describe the data in detail.  Second, astronomy
    3663 applications frequent involve multiple, related images.  For
    3664 PanSTARRS, and for general astronomical applications, we require a
    3665 richer collection of data structures which describe a very general
    3666 image concept.  We have defined several layers in the hierarchy which
    3667 are necessary to describe the image data which will be produced by the
    3668 PanSTARRS Gigapixel cameras as well as other standard astronomical
    3669 images. 
    3670 
    3671 A simple 2D image is a basic data unit for much of astronomical
    3672 imaging.  If we consider various optical and IR array cameras, a
    3673 single readout of the detector produces a collection of pixels
    3674 measurements.  We define our lowest-level astronomical image
    3675 structure, \code{psReadout}, to contain the pixels produced by a
    3676 single readout of the detector, along with metadata needed to define
    3677 that readout: the origin and binning of the image relative to the
    3678 original detector pixels explicitly in the structure, and pointers to
    3679 the general metadata and derived objects, if any.
    3680 
    3681 A single detector may produce more than one read which is associated.
    3682 For example, infrared detectors frequently produce an image
    3683 immediately after the detector is reset followed by an image after the
    3684 basic exposure is complete.  Both readouts correspond to the same
    3685 pixels, though the binning or rastering may be different between the
    3686 two readouts.  Another example is the video sequence produced by the
    3687 PanSTARRS Gigapix camera guide cells, each of which represents a
    3688 series of many images from a subraster of pixels in the detector
    3689 readout portion.  The second level of our image container hierarchy,
    3690 \code{psCell}, consists of a collection of readouts from a single
    3691 detector.
    3692 
    3693 In the PanSTARRS Gigapix camera, the basic readout region is a
    3694 fraction of the full imaging area of a single CCD chip.  The chip is
    3695 divided into 64 cells, any fraction of which may have been readout
    3696 for a given exposure.  In other cameras, such as Megacam at CFHT, the
    3697 individual CCDs have multiple amplifiers addressing contiguous
    3698 portions of the detector.  In such cameras, each amplifier produces a
    3699 separate collection of pixels.  In the third level of our image
    3700 container hierarchy, the data structure \code{psChip} represents a
    3701 collection of different cells.   
    3702 
    3703 The top level of our image container hierarchy is a complete focal
    3704 plane array (\code{psFPA}).  This structure represents the collection
    3705 of chips in the camera, all of which are read out in a given
    3706 exposure. 
    3707 
    3708 For example, take a mosaic camera consisting of eight $2k\times 4k$
    3709 CCDs, each of which is read out through two amplifiers.  Then there
    3710 would be sixteen cells in total, each of which is presumably $2k\times
    3711 2k$.  There would be eight chips, each consisting of two cells, and
    3712 the focal plane consists of these eight chips.
    3713 
    3714 As another example, consider an observation by PS1.  The focal plane
    3715 would consist of 60 chips, each of which consist of 64 cells (or less;
    3716 a few cells may be dead).  Some cells (those containing guide stars
    3717 for the orthogonal transfer) will contain multiple readouts.
    3718 
    3719 These data structures represent containers with which to carry around
    3720 the collection of related image data.  There is no requirement on the
    3721 functions or the structures that each instance of one of these data
    3722 structures represent the physical hardware.  For example, it is not
    3723 necessary that an instance of \code{psFPA} always carry the data for
    3724 all 60 (or 64) Gigapixel camera OTAs.  The usage of these structures
    3725 is such that all astronomical operations which apply to a CCD image
    3726 should be performed on an instance of \code{psFPA}.  If a particular
    3727 circumstance only requires a single 2D image, then that is represented
    3728 by an instance of \code{psFPA} with one \code{psChip}, which in turn
    3729 has one \code{psCell}, which in turn has one \code{psReadout}. 
    3730 
    3731 These container levels also include in their definition the information
    3732 needed to transform the coordinates in one of the levels to the
    3733 coordinate system relevant at the higher levels. 
    3734 
    3735 \subsubsection{A Readout}
    3736 
    3737 A readout is the result of a single read of a cell (or a portion
    3738 thereof).  It contains a pointer to the pixel data, and additional
    3739 pointers to the objects found in the readout, and the readout
    3740 metadata.  It also contains the offset from the lower-left corner of
    3741 the chip, in the case that the CCD was windowed.
    3742 
    3743 \begin{verbatim}
    3744 typedef struct {
    3745     const int x0, y0;                ///< Offset from the lower-left corner
    3746     const int nx, ny;                ///< Image binning
    3747     psImage *image;                  ///< imaging area of cell
    3748     psList *objects;                ///< objects derived from cell
    3749     psMetadata *md;                  ///< Readout-level metadata
    3750 } psReadout;
    3751 \end{verbatim}   
    3752 
    3753 \subsubsection{A Cell}
    3754 
    3755 A cell consists of one or more readouts (usually only one except in the
    3756 case that the cell has been used for fast guiding).  It also contains
    3757 a pointer to the cell metadata, and a pointer to its parent chip.  On
    3758 the astrometry side, it also contains coordinate transforms from the
    3759 cell to the chip and, as a convenience, from the cell to the focal
    3760 plane.  It is expected that these transforms will consist of two
    3761 first-order 2D polynomials, simply specifying a translation, rotation
    3762 and magnification; hence they are easily inverted, and there is no
    3763 need to add reverse transformations.  We also add an additional
    3764 transformation, which is intended to provide a ``quick and dirty''
    3765 transform from the cell coordinates to the sky; this transformation
    3766 not guaranteed to be as precise as the ``standard'' transformation of
    3767 Cell $\rightarrow$ Chip $\rightarrow$ Focal Plane $\rightarrow$
    3768 Tangent Plane $\rightarrow$ Sky, but will be faster.
    3769 
    3770 \begin{verbatim}
    3771 typedef struct {
    3772     int nReadouts;                      ///< number of readouts in this cell
    3773     struct psReadout *readouts;         ///< Readouts from the cell
    3774     psMetadata *md;                     ///< Cell-level metadata
    3775     psPlaneTransform *cellToChip;       ///< Transformations from cell to chip coords
    3776     psPlaneTransform *cellToFPA;        ///< Transformations from cell to FPA coords
    3777     psPlaneTransform *cellToSky;        ///< Direct from cell to sky coords
    3778     struct psChip  *parentChip;         ///< chip which contains this cell
    3779 } psCell;
    3780 \end{verbatim}
    3781 
    3782 \subsubsection{A Chip}
    3783 
    3784 A chip consists of one or more cells (according to the number of
    3785 amplifiers on the CCD).  It contains a pointer to the chip metadata,
    3786 and a pointer to the parent focal plane.  For astrometry, it contains
    3787 a coordinate transform from the chip to the focal plane.  It is
    3788 expected that this transforms will consist of two second-order 2D
    3789 polynomials; hence we think that it is prudent to include a reverse
    3790 transformation which will be derived from numerically inverting the
    3791 forward transformation.
    3792 
    3793 \begin{verbatim}
    3794 typedef struct {
    3795     int nCells;                         ///< Number of Cells assigned
    3796     struct psCell *cells;               ///< Cells in the Chip
    3797     psMetadata *md;                     ///< Chip-level metadata
    3798     psPlaneTransform *chipToFPA;        ///< Transformations from chip to FPA coords
    3799     psPlaneTransform *FPAtoChip;        ///< Transformations from FPA to chip
    3800     struct psFPA *parentFPA;            ///< FPA which contains this chip
    3801 } psChip;
    3802 \end{verbatim}
    3803 
    3804 \subsubsection{A Focal Plane}
    3805 
    3806 A focal plane consists of one or more chips (according to the number
    3807 of pieces of contiguous silicon).  It contains pointers to the focal
    3808 plane metadata and the exposure information.  For astrometry, it
    3809 contains a transformation from the focal plane to the tangent plane
    3810 and the fixed pattern residuals.  It is expected that the
    3811 transformation will consist of two 4D polynomials (i.e.\ a function of
    3812 two coordinates in position, the magnitude of the object, and the
    3813 color of the object) in order to correct for optical distortions and
    3814 the effects of the atmosphere; hence we think that it is prudent to
    3815 include a reverse transformation which will be derived from
    3816 numerically inverting the forward transformation.  Since colors are
    3817 involved in the transformation, it is necessary to specify the color
    3818 the transformation is defined for.  We also include some values to
    3819 characterize the quality of the transformation: the root mean square
    3820 deviation for the x and y transformation fits, and the $\chi^2$ for
    3821 the transformation fit.
    3822 
    3823 \begin{verbatim}
    3824 typedef struct {
    3825     int nChips;                         ///< Number of Cells assigned
    3826     int nAlloc;                         ///< Number of Cells available
    3827     struct psChip *chips;               ///< Chips in the Focal Plane Array
    3828     psMetadata *md;                     ///< FPA-level metadata
    3829     psPlaneDistort *TPtoFP;             ///< Transformation term from
    3830     psPlaneDistort *FPtoTP;             ///< Transformation term from
    3831     psFixedPattern *pattern;            ///< Fixed pattern residual offsets
    3832     const psExposure *exp;              ///< information about this exposure
    3833     psPhotSystem colorPlus, colorMinus; ///< Colour reference
    3834     float rmsX, rmsY;                   ///< Dispersion in astrometric solution
    3835     float chi2;                         ///< chi^2 of astrometric solution
    3836 } psFPA;
    3837 \end{verbatim}
    3838 
    3839 \subsubsection{Exposure information}
    3840 
    3841 We need several quantities from the telescope in order to make a
    3842 first guess at the astrometric solution.  From these quantities,
    3843 further quantities can be derived and stored for later use.
    3844 
    3845 \begin{verbatim}
    3846 typedef struct {
    3847     const double ra, dec;               ///< Telescope boresight
    3848     const double ha;                    ///< Hour angle
    3849     const double zd;                    ///< Zenith distance
    3850     const double az;                    ///< Azimuth
    3851     const double lst;                   ///< Local Sidereal Time
    3852     const float mjd;                    ///< MJD of observation
    3853     const float rotAngle;               ///< Rotator position angle
    3854     const float temp;                   ///< Air temperature, for estimating refraction
    3855     const float pressure;               ///< Air pressure, for calculating refraction
    3856     const float humidity;               ///< Relative humidity, for refraction
    3857     const float exptime;                ///< Exposure time
    3858     /* Derived quantities */
    3859     const float posAngle;               ///< Position angle
    3860     const float parallactic;            ///< Parallactic angle
    3861     const float airmass;                ///< Airmass, calculated from zenith distance
    3862     const float pf;                     ///< Parallactic factor
    3863     const char *cameraName;             ///< name of camera which provided exposure
    3864     const char *telescopeName;          ///< name of telescope which provided exposure
    3865 } psExposure;
    3866 \end{verbatim}
    3867 
    3868 \subsubsection{Constructors and Destructors}
    3869 
    3870 Each of the above structures needs an appropriate constructor and
    3871 destructor.  Other than \code{psExposure}, which contains significant
    3872 non-pointer types, the constructors should not take any arguments, and
    3873 the destructors should only take the structure to be destroyed.
    3874 The constructor for \code{psExposure} is specified below.
    3875 
    3876 \begin{verbatim}
    3877 psExposure *
    3878 psExposureAlloc(double ra, double dec,  ///< Telescope boresight
    3879                 double ha,              ///< Hour angle
    3880                 double zd,              ///< Zenith distance
    3881                 double az,              ///< Azimuth
    3882                 double lst,             ///< Local Sidereal Time
    3883                 float mjd,              ///< MJD
    3884                 float rotAngle,         ///< Rotator position angle
    3885                 float temp,             ///< Temperature
    3886                 float pressure,         ///< Pressure
    3887                 float humidity,         ///< Relative humidity
    3888                 float exptime);         ///< Exposure time
    3889 \end{verbatim}
    3890 
    3891 \subsection{Astrometry}
    3892 
    3893 Astrometry is a basic functionality required for the IPP that will be
    3894 used repeatedly, both for low-precision (roughly where is my favorite
    3895 object?) and high-precision (what is the proper motion of this star?).
    3896 As such, it must be flexible, yet robust.  Accordingly, we will wrap
    3897 the StarLink Astronomy Libraries (SLALib), which has already been
    3898 developed.
    3899 
    3900 \subsubsection{Coordinate frames}
    3901 \label{sec:coordinateFrames}
    3902 
    3903 There are five coordinate frames that we need to worry about for the
    3904 purposes of astrometry:
    3905 \begin{itemize}
    3906 \item Cell: $(x,y)$ in pixels --- raw coordinates;
    3907 \item Chip: $(X,Y)$ in pixels --- the location on the silicon;
    3908 \item Focal Plane: $(p,q)$ in microns --- the location on the focal plane;
    3909 \item Tangent Plane: $(l,m)$ in arcsec from the telescope boresight; and
    3910 \item Sky: (RA,Dec) --- ICRS.
    3911 \end{itemize}
    3912 
    3913 The following steps are required to convert from the cell coordinates to
    3914 the sky:
    3915 \begin{itemize}
    3916 \item Cell $\longleftrightarrow$ Chip: two 2D polynomials, $(X,Y) = f(x,y)$;
    3917 \item Chip $\longleftrightarrow$ FP: two 2D polynomials, $(p,q) = g(X,Y)$;
    3918 \item FP $\longleftrightarrow$ TP: two 4D polynomials, $(l,m) =
    3919 h(p,q,m,c)$, where $m$ and $c$ are the magnitude and color of the
    3920 object, respectively; and
    3921 \item TP $\longleftrightarrow$ Sky: SLALib transformation using a
    3922 transform pre-computed for each pointing.
    3923 \end{itemize}
    3924 
    3925 Note that the transformation between the Focal Plane and the Tangent
    3926 Plane is a four-dimensional polynomial, in order to account for any
    3927 possible dependencies in the astrometry on the stellar magnitude and
    3928 color; the former serves as a check for charge transfer
    3929 inefficiencies, while the latter will correct chromatic refraction,
    3930 both through the atmosphere and the corrector lenses.
    3931 
    3932 We require structures to contain each of the above transformations as
    3933 well as the pixel data.
    3934 
    3935 \subsubsection{SLALib information}
    3936 
    3937 SLALib requires several elements to perform the transformations
    3938 between the tangent plane and the sky.  Pre-computing these quantities
    3939 for each exposure means that subsequent transformations are faster.
    3940 For historical reasons, this structure is known colloquially as
    3941 ``Wallace's Grommit''.
    3942 
    3943 \begin{verbatim}
    3944 typedef struct {
    3945     const double latitude;              ///< geodetic latitude (radians)
    3946     const double sinLat, cosLat;        ///< sine and cosine of geodetic latitude
    3947     const double abberationMag;         ///< magnitude of diurnal aberration vector
    3948     const double height;                ///< height (HM)
    3949     const double temperature;           ///< ambient temperature (TDK)
    3950     const double pressure;              ///< pressure (PMB)
    3951     const double humidity;              ///< relative humidity (RH)
    3952     const double wavelength;            ///< wavelength (WL)
    3953     const double lapseRate;             ///< lapse rate (TLR)
    3954     const double refractA, refractB;    ///< refraction constants A and B (radians)
    3955     const double longitudeOffset;       ///< longitude + ... (radians)
    3956     const double siderealTime;          ///< local apparent sidereal time (radians)
    3957 } psGrommit;
    3958 \end{verbatim}
    3959 
    3960 The \code{psGrommit} is calculated from telescope information for the
    3961 particular exposure:
    3962 \begin{verbatim}
    3963 psGrommit *psGrommitAlloc(const psExposure *exp);
    3964 void p_psGrommitFree(psGrommit *grommit);
    3965 \end{verbatim}
    3966 
    3967 \subsubsection{Fixed Pattern}
    3968 
    3969 The fixed pattern is a correction to the general astrometric solution
    3970 formed by summing the residuals from many observations.  The intent is
    3971 to correct for higher-order distortions in the camera system on a
    3972 coarse grid (larger than individual pixels, but smaller than a single
    3973 cell).  Hence, in addition to the offsets, we need to specify the size
    3974 and scale of the grid in $x$ and $y$, as well as the origin of the
    3975 grid.
    3976 
    3977 \begin{verbatim}
    3978 typedef struct {
    3979     int nX, nY;                         ///< Number of elements in x and y
    3980     double x0, y0;                      ///< Position of 0,0 corner on focal plane
    3981     double xScale, yScale;              ///< Scale of the grid
    3982     double **x, **y;                    ///< The grid of offsets in x and y
    3983 } psFixedPattern;
    3984 \end{verbatim}
    3985 
    3986 \subsubsection{Position Finding}
    3987 
    3988 We require functions to return the structure containing given
    3989 coordinates.  For example, we want the chip that corresponds to the
    3990 focal plane coordinates $(p,q) = (-1.234,+5.678)$.  These routines
    3991 handle the one-to-many problem --- i.e., for one given focal plane
    3992 coordinate, there are many chips that this coordinate may be
    3993 correspond to; these functions will select the correct one.
    3994 %
    3995 \begin{verbatim}
    3996 psCell *psCellInFPA (psCell *out, const psPlane *coord, const psFPA *fpa);
    3997 psChip *psChipInFPA (psChip *out, const psPlane *coord, const psFPA *fpa);
    3998 psCell *psCellInChip(psCell *out, const psPlane *coord, const psChip *chip);
    3999 \end{verbatim}
    4000 
    4001 \subsubsection{Conversion Functions}
    4002 
    4003 We require functions to convert between the various coordinate frames
    4004 (Section~\ref{sec:coordinateFrames}).  The hierarchy of the coordinate
    4005 frames and the transformations between each are shown in
    4006 Figure~\ref{fig:coco}.  The functions that employ the transformations
    4007 are shown in Figure~\ref{fig:cocoFunc}.  In addition to
    4008 transformations between each adjoining coordinate frame in the
    4009 hierarchy, we also require higher-level functions to convert between
    4010 the Cell and Sky coordinate frames; these will simply perform the
    4011 intermediate steps.
    4012 
    4013 \begin{figure}
    4014 \psfig{file=coordinateFrames,height=7in,angle=-90}
    4015 \caption{The coordinate systems in the \PS{} IPP, and the relation
    4016 between each by transformations contained in the appropriate
    4017 structures.}
    4018 \label{fig:coco}
    4019 \end{figure}
    4020 
    4021 \begin{figure}
    4022 \psfig{file=coordinateConv,height=7in,angle=-90}
    4023 \caption{Conversion between coordinate systems by PSLib.}
    4024 \label{fig:cocoFunc}
    4025 \end{figure}
    4026 
    4027 We specify the following functions to convert between coordinates in
    4028 one type of frame to another type of frame.  The first group consist
    4029 of unambiguous transformations: from the coordinates in a low-level
    4030 frame to the coordinates in the containing higher-level frame, of
    4031 which only one exists.  In all of these functions, the output
    4032 coordinate structure may be \code{NULL} or may be supplied by the
    4033 calling function.  In the former case, the structure must be
    4034 allocated; in the latter case, the supplied structure must be used.
    4035 
    4036 \begin{verbatim}
    4037 psPlane *psCoordCellToChip (psPlane *out, const psPlane *in, const psCell *cell);
    4038 \end{verbatim}
    4039 which converts coordindates \code{in} on the specified \code{cell} to
    4040 the coordinates on the parent chip.
    4041 
    4042 \begin{verbatim}
    4043 psPlane *psCoordChipToFPA (psPlane *out, const psPlane *in, const psChip *chip);
    4044 \end{verbatim}
    4045 which converts the coordinates \code{in} on the specified \code{chip}
    4046 to the coordinates on the parent FPA.
    4047 
    4048 \begin{verbatim}
    4049 psPlane *psCoordFPAToTP(psPlane *out, const psPlane *in, const psFPA *fpa);
    4050 \end{verbatim}
    4051 which converts coordinates \code{in} on the specified focal plane
    4052 \code{fpa} to tangent plane coordinates, applying the appropriate
    4053 distortion terms.
    4054 
    4055 \begin{verbatim}
    4056 psSphere *psCoordTPToSky(psSphere *out, const psPlane *in, const psGrommit *grommit);
    4057 \end{verbatim}
    4058 which converts the tangent plane coordinates \code{in} to (RA,Dec) on
    4059 the sky, based on the environmental information specified by
    4060 \code{grommit}.
    4061 
    4062 \begin{verbatim}
    4063 psPlane *psCoordCellToFPA(psPlane *out, const psPlane *in, const psCell *cell);
    4064 \end{verbatim}
    4065 which performs the single-step conversion between Cell coordinates
    4066 \code{in} and FPA coordinates.
    4067 
    4068 \begin{verbatim}
    4069 psSphere *psCoordCellToSky(psSphere *out, const psPlane *in, const psCell *cell);
    4070 \end{verbatim}
    4071 which converts coordinates on the specified cell to (RA,Dec).  This
    4072 transformation must be performed using the intermediate stage
    4073 transformations of Cell to Chip, Chip to FPA, FPA to Tangent Plane,
    4074 Tangent Plane to Sky.  The information needed for each of these
    4075 transformations is available in the \code{.parent} elements of
    4076 \code{psCell} and \code{psChip}, and the \code{psFPA.exposure}
    4077 element.
    4078 
    4079 \begin{verbatim}
    4080 psSphere *psCoordCellToSkyQuick(psSphere *out, const psPlane *in, const psCell *cell);
    4081 \end{verbatim}
    4082 which uses the 'quick-and-dirty' transformation to convert coordinates
    4083 on the specified cell to (RA,Dec).  This transformation should use the
    4084 locally linear transformation specified by the element
    4085 \code{psCell.cellToSky}.  Although the accuracy of this transformation
    4086 is lower than the complete transformation above, the calculation is
    4087 substantially faster as it only involves linear transformations.
    4088 
    4089 The following functions convert from high-level frames to the
    4090 coordinates of contained lower-level frames. 
    4091 
    4092 \begin{verbatim}
    4093 psPlane *psCoordSkyToTP(psPlane *out, const psSphere *in, const psGrommit *grommit);
    4094 \end{verbatim}
    4095 which converts (RA,Dec) coordinates \code{in} to tangent plane coords
    4096 based on the enviromental information supplied by \code{grommit}.
    4097 
    4098 \begin{verbatim}
    4099 psPlane *psCoordTPToFPA(psPlane *out, const psPlane *in, const psFPA *fpa);
    4100 \end{verbatim}
    4101 which converts the tangent plane coordinates \code{in} to focal plane coordinates.
    4102 
    4103 \begin{verbatim}
    4104 psPlane *psCoordFPAToChip (psPlane *out, const psPlane *in, const psChip *chip);
    4105 \end{verbatim}
    4106 which converts the specified FPA coordinates \code{in} to the
    4107 coordinates on the given Chip.  The specified chip need not contain
    4108 the input coordinate.  To find the chip which contains a particular
    4109 coordinate, the function \code{psChipInFPA}, defined above, should be
    4110 used.
    4111 
    4112 \begin{verbatim}
    4113 psPlane *psCoordChipToCell (psPlane *out, const psPlane *in, const psCell *cell);
    4114 \end{verbatim}
    4115 which converts the specified Chip coordinate \code{in} to the
    4116 coordinate on the given Cell.  The specified Cell need not contain the
    4117 input coordinate.  To find the cell which contains a particular
    4118 coordinate, the function \code{psCellInChip}, defined above, should be
    4119 used.
    4120 
    4121 \begin{verbatim}
    4122 psPlane *psCoordSkyToCell(psPlane *out, const psSphere *in, psCell *cell);
    4123 \end{verbatim}
    4124 which directly converts (RA,Dec) \code{in} to coordinates on the
    4125 specified cell.  The specified cell need not contain the input
    4126 coordinates.
    4127 
    4128 \begin{verbatim}
    4129 psPlane *psCoordSkyToCellQuick(psPlane *out, const psSphere *in, psCell *cell);
    4130 \end{verbatim}
    4131 which directly converts (RA,Dec) \code{in} to coordinates on the
    4132 specified cell.  The specified cell need not contain the input
    4133 coordinates.  This transformation should use the locally linear
    4134 transformation specified by the element \code{psCell.cellToSky}.
    4135 Although the accuracy of this transformation is lower than the
    4136 complete transformation above, the calculation is substantially faster
    4137 as it only involves linear transformations.
    4138 
    4139 \subsubsection{Additional functions}
    4140 
    4141 We require additional functions to perform general functions which
    4142 will be useful for astrometry.  Given coordinates on the sky, we
    4143 need to get the airmass, the parallactic angle, and an estimate of
    4144 the atmospheric refraction.
    4145 
    4146 \begin{verbatim}
    4147 float psGetAirmass(const psSphere *coord, double siderealTime, float height);
    4148 \end{verbatim}
    4149 which returns the airmass for a given position and sidereal time.
    4150 
    4151 \begin{verbatim}
    4152 float psGetParallactic(const psSphere *coord, double siderealTime);
    4153 \end{verbatim}
    4154 which returns the parallactic angle for a given position and sidereal time.
    4155 
    4156 \begin{verbatim}
    4157 float psGetRefraction(float colour,            ///< Colour of object
    4158                       psPhotSystem colorPlus,  ///< Colour reference
    4159                       psPhotSystem colorMinus, ///< Colour reference
    4160                       const psExposure *exp);  ///< Telescope pointing information
    4161 \end{verbatim}
    4162 which provides an estimate of the atmospheric refraction, along the parallactic angle.
    4163 
    4164 \begin{verbatim}
    4165 double psGetParallaxFactor(const psExposure *exp)
    4166 \end{verbatim}
    4167 Calculate the parallax factor for the given exposure \tbd{why do we
    4168   need this?}.
     3654%%% Astronomical Images and Astrometry
     3655\include{psLibSDRS_Astrom}
    41693656
    41703657%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Note: See TracChangeset for help on using the changeset viewer.