Index: trunk/archive/pslib/include/psAstrom.h
===================================================================
--- trunk/archive/pslib/include/psAstrom.h	(revision 399)
+++ trunk/archive/pslib/include/psAstrom.h	(revision 621)
@@ -23,16 +23,16 @@
 /** Information needed (by SLALIB) to convert Apparent to Observed Position */
 typedef struct {
-    double latitude;                    ///< geodetic latitude (radians)
-    double sinLat, cosLat;              ///< sine and cosine of geodetic latitude
-    double abberationMag;               ///< magnitude of diurnal aberration vector
-    double height;                      ///< height (HM)
-    double temperature;                 ///< ambient temperature (TDK)
-    double pressure;                    ///< pressure (PMB)
-    double humidity;                    ///< relative humidity (RH)
-    double wavelength;                  ///< wavelength (WL)
-    double lapseRate;                   ///< lapse rate (TLR)
-    double refractA, refractB;          ///< refraction constants A and B (radians)
-    double longitudeOffset;             ///< longitude + eqn of equinoxes + ``sidereal UT'' (radians)
-    double siderealTime;                ///< local apparent sidereal time (radians)
+    const double latitude;		///< geodetic latitude (radians)
+    const double sinLat, cosLat;	///< sine and cosine of geodetic latitude
+    const double abberationMag;		///< magnitude of diurnal aberration vector
+    const double height;		///< height (HM)
+    const double temperature;		///< ambient temperature (TDK)
+    const double pressure;		///< pressure (PMB)
+    const double humidity;		///< relative humidity (RH)
+    const double wavelength;		///< wavelength (WL)
+    const double lapseRate;		///< lapse rate (TLR)
+    const double refractA, refractB;	///< refraction constants A and B (radians)
+    const double longitudeOffset;	///< longitude + eqn of equinoxes + ``sidereal UT'' (radians)
+    const double siderealTime;		///< local apparent sidereal time (radians)
 } psGrommit;
 
@@ -40,23 +40,22 @@
 typedef struct {
     // Telescope longitude, latitude and height are stored separately, since they don't change with pointing
-    double ra, dec;                     ///< Telescope boresight
-    double ha;                          ///< Hour angle
-    double zd;                          ///< Zenith distance
-    double az;                          ///< Azimuth
-    double lst;                         ///< Local Sidereal Time
-    float mjd;                          ///< MJD of observation
-    float rotAngle;                     ///< Rotator position angle
-    float temp;                         ///< Air temperature, for estimating refraction
-    float pressure;                     ///< Air pressure, for calculating refraction
-    float humidity;                     ///< Relative humidity, for calculating refraction
-    float exptime;                      ///< Exposure time
+    const double ra, dec;		///< Telescope boresight
+    const double ha;			///< Hour angle
+    const double zd;			///< Zenith distance
+    const double az;			///< Azimuth
+    const double lst;			///< Local Sidereal Time
+    const float mjd;			///< MJD of observation
+    const float rotAngle;		///< Rotator position angle
+    const float temp;			///< Air temperature, for estimating refraction
+    const float pressure;		///< Air pressure, for calculating refraction
+    const float humidity;		///< Relative humidity, for calculating refraction
+    const float exptime;		///< Exposure time
     /* Derived quantities */
-    float posAngle;                     ///< Position angle
-    float parallactic;                  ///< Parallactic angle
-    float airmass;                      ///< Airmass, calculated from zenith distance
-    float pf;                           ///< Parallactic factor
-    char *cameraName;                   ///< name of camera which provided exposure
-    char *telescopeName;                ///< name of telescope which provided exposure
-    psGrommit *grommit;                 ///< Data needed to convert from the sky to the tangent plane
+    const float posAngle;		///< Position angle
+    const float parallactic;		///< Parallactic angle
+    const float airmass;		///< Airmass, calculated from zenith distance
+    const float pf;			///< Parallactic factor
+    const char *cameraName;		///< name of camera which provided exposure
+    const char *telescopeName;		///< name of telescope which provided exposure
 } psExposure;
 
@@ -83,5 +82,5 @@
     psDistortion *FPtoTP;		///< Transformation term from 
     psFixedPattern *pattern;		///< Fixed pattern residual offsets
-    psExposure *exp;                    ///< information about this exposure
+    const psExposure *exp;		///< information about this exposure
     psPhotSystem colorPlus, colorMinus; ///< Colour reference
     float rmsX, rmsY;                   ///< Dispersion in astrometric solution
@@ -120,9 +119,8 @@
 /** a Readout: a collection of pixels */
 typedef struct {
-    const int x0, y0;			///< Offset from the lower-left corner
-    const int nx, ny;			///< Image binning
+    const int x0, y0;			///< Offset from the lower-left corner of the physical device
+    const int xBin, yBin;		///< Image binning
     psImage *image;                     ///< imaging area of cell 
     psDlist *objects;			///< objects derived from cell
-    psImage *overscan;                  ///< bias region (subimage) of cell
     psMetadata *md;			///< Readout-level metadata
 } psReadout;
@@ -289,4 +287,15 @@
 psExposureFree(psExposure *restrict myExp ///< Object to destroy
 	       );
+
+/** Constructor */
+psGrommit *
+psGrommitAlloc(const psExposure *exp	///< Relevant exposure
+    );
+
+/** Destructor */
+void
+psGrommitFree(psGrommit *grommit	///< Grommit to destroy
+    );
+
 /* \} */ // End of AstroGroup Functions
 
