Changeset 1513 for trunk/doc/pslib/psLibSDRS.tex
- Timestamp:
- Aug 11, 2004, 6:19:18 PM (22 years ago)
- File:
-
- 1 edited
-
trunk/doc/pslib/psLibSDRS.tex (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/doc/pslib/psLibSDRS.tex
r1455 r1513 1 %%% $Id: psLibSDRS.tex,v 1.6 5 2004-08-10 23:08:40price Exp $1 %%% $Id: psLibSDRS.tex,v 1.66 2004-08-12 04:19:18 price Exp $ 2 2 \documentclass[panstarrs,spec]{panstarrs} 3 3 … … 3652 3652 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 3653 3653 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} 4169 3656 4170 3657 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Note:
See TracChangeset
for help on using the changeset viewer.
