Index: trunk/psModules/src/objects/pmFootprintArrayGrow.c
===================================================================
--- trunk/psModules/src/objects/pmFootprintArrayGrow.c	(revision 21174)
+++ trunk/psModules/src/objects/pmFootprintArrayGrow.c	(revision 21183)
@@ -3,6 +3,6 @@
  * @author RHL, Princeton & IfA; EAM, IfA
  *
- * @version $Revision: 1.11 $ $Name: not supported by cvs2svn $
- * @date $Date: 2008-12-08 02:51:14 $
+ * @version $Revision: 1.12 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2009-01-27 06:39:38 $
  * Copyright 2006 Institute for Astronomy, University of Hawaii
  */
@@ -45,5 +45,5 @@
     // Use a separable convolution: should be faster
     idImage = (psImage*)psBinaryOp(idImage, idImage, "MIN", psScalarAlloc(1, PS_TYPE_S32));
-    psImage *idImageMask = psImageCopy(NULL, idImage, PS_TYPE_MASK); // Image with 1 = object
+    psImage *idImageMask = psImageCopy(NULL, idImage, PS_TYPE_IMAGE_MASK); // Image with 1 = object
     psImage *grownIdImage = psImageConvolveMask(NULL, idImageMask, 0x01, 0x01, -r, r, -r, r); // Grown mask
     if (!grownIdImage) {
Index: trunk/psModules/src/objects/pmFootprintFindAtPoint.c
===================================================================
--- trunk/psModules/src/objects/pmFootprintFindAtPoint.c	(revision 21174)
+++ trunk/psModules/src/objects/pmFootprintFindAtPoint.c	(revision 21183)
@@ -4,6 +4,6 @@
  * @author RHL, Princeton & IfA; EAM, IfA
  *
- * @version $Revision: 1.3 $ $Name: not supported by cvs2svn $
- * @date $Date: 2008-12-08 02:51:14 $
+ * @version $Revision: 1.4 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2009-01-27 06:39:38 $
  * Copyright 2006 Institute for Astronomy, University of Hawaii
  */
@@ -77,5 +77,5 @@
     
     if (mask != NULL) {			// remember that we've detected these pixels
-	psMaskType *mpix = &mask->data.PS_TYPE_MASK_DATA[span->y - mask->row0][span->x0 - mask->col0];
+	psImageMaskType *mpix = &mask->data.PS_TYPE_IMAGE_MASK_DATA[span->y - mask->row0][span->x0 - mask->col0];
 
 	for (int i = 0; i <= span->x1 - span->x0; i++) {
@@ -143,5 +143,5 @@
     psF32 *imgRowF32 = NULL;		// row pointer if F32
     psS32 *imgRowS32 = NULL;		//  "   "   "  "  !F32
-    psMaskType *maskRow = NULL;		//  masks's row pointer
+    psImageMaskType *maskRow = NULL;		//  masks's row pointer
     
     const int row0 = img->row0;
@@ -186,5 +186,5 @@
 	imgRowF32 = img->data.F32[i];	// only one of
 	imgRowS32 = img->data.S32[i];	//      these is valid!
-	maskRow = mask->data.PS_TYPE_MASK_DATA[i];
+	maskRow = mask->data.PS_TYPE_IMAGE_MASK_DATA[i];
 	//
 	// Search left from the pixel diagonally to the left of (i - di, x0). If there's
@@ -354,5 +354,5 @@
  * looking for the rest of the pmFootprint.  These are generally set from peaks.
  */
-   psImage *mask = psImageAlloc(numCols, numRows, PS_TYPE_MASK);
+   psImage *mask = psImageAlloc(numCols, numRows, PS_TYPE_IMAGE_MASK);
    P_PSIMAGE_SET_ROW0(mask, row0);
    P_PSIMAGE_SET_COL0(mask, col0);
@@ -365,5 +365,5 @@
        for (int i = 0; i < peaks->n; i++) {
 	   pmPeak *peak = peaks->data[i];
-	   mask->data.PS_TYPE_MASK_DATA[peak->y - mask->row0][peak->x - mask->col0] |= PM_SSPAN_STOP;
+	   mask->data.PS_TYPE_IMAGE_MASK_DATA[peak->y - mask->row0][peak->x - mask->col0] |= PM_SSPAN_STOP;
        }
    }
@@ -375,5 +375,5 @@
    imgRowF32 = img->data.F32[row];	// only one of
    imgRowS32 = img->data.S32[row];	//      these is valid!
-   psMaskType *maskRow = mask->data.PS_TYPE_MASK_DATA[row];
+   psImageMaskType *maskRow = mask->data.PS_TYPE_IMAGE_MASK_DATA[row];
    {
        int i;
Index: trunk/psModules/src/objects/pmGrowthCurveGenerate.c
===================================================================
--- trunk/psModules/src/objects/pmGrowthCurveGenerate.c	(revision 21174)
+++ trunk/psModules/src/objects/pmGrowthCurveGenerate.c	(revision 21183)
@@ -5,6 +5,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.4 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2008-12-08 02:51:14 $
+ *  @version $Revision: 1.5 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2009-01-27 06:39:38 $
  *
  *  Copyright 2004 Institute for Astronomy, University of Hawaii
@@ -41,5 +41,5 @@
 #include "pmErrorCodes.h"
 
-pmGrowthCurve *pmGrowthCurveForPosition (psImage *image, pmPSF *psf, bool ignore, psMaskType maskVal, psMaskType markVal, float xc, float yc);
+pmGrowthCurve *pmGrowthCurveForPosition (psImage *image, pmPSF *psf, bool ignore, psImageMaskType maskVal, psImageMaskType markVal, float xc, float yc);
 
 /*****************************************************************************/
@@ -48,5 +48,5 @@
 
 // we generate the growth curve for the center of the image with the specified psf model
-bool pmGrowthCurveGenerate (pmReadout *readout, pmPSF *psf, bool ignore, psMaskType maskVal, psMaskType markVal)
+bool pmGrowthCurveGenerate (pmReadout *readout, pmPSF *psf, bool ignore, psImageMaskType maskVal, psImageMaskType markVal)
 {
     PS_ASSERT_PTR_NON_NULL(readout, false);
@@ -119,5 +119,5 @@
 }
 
-pmGrowthCurve *pmGrowthCurveForPosition (psImage *image, pmPSF *psf, bool ignore, psMaskType maskVal, psMaskType markVal, float xc, float yc) {
+pmGrowthCurve *pmGrowthCurveForPosition (psImage *image, pmPSF *psf, bool ignore, psImageMaskType maskVal, psImageMaskType markVal, float xc, float yc) {
 
     float fitMag, apMag;
@@ -162,5 +162,5 @@
     psImage *view = psImageSubset (image, region);
     psImage *pixels = psImageCopy (NULL, view, PS_TYPE_F32);
-    psImage *mask = psImageCopy (NULL, view, PS_TYPE_U8);
+    psImage *mask = psImageCopy (NULL, view, PS_TYPE_IMAGE_MASK);
 
     psImageInit (pixels, 0.0);
@@ -189,5 +189,5 @@
 	    return NULL;
         }
-        psImageKeepCircle (mask, xc, yc, radius, "AND", PS_NOT_U8(markVal));
+        psImageKeepCircle (mask, xc, yc, radius, "AND", PS_NOT_IMAGE_MASK(markVal));
 
         // the 'ignore' mode is for testing
Index: trunk/psModules/src/objects/pmModel.c
===================================================================
--- trunk/psModules/src/objects/pmModel.c	(revision 21174)
+++ trunk/psModules/src/objects/pmModel.c	(revision 21183)
@@ -6,6 +6,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.25 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2008-11-09 00:28:18 $
+ *  @version $Revision: 1.26 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2009-01-27 06:39:38 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -172,5 +172,5 @@
                           pmModelOpMode mode,
                           bool add,
-                          psMaskType maskVal,
+                          psImageMaskType maskVal,
                           int dx,
                           int dy
@@ -229,5 +229,5 @@
     psF32 **Rx = NULL;
     psF32 **Ry = NULL;
-    psU8  **Rm = NULL;
+    psImageMaskType **Rm = NULL;
 
     if (model->residuals) {
@@ -237,5 +237,5 @@
 	Rx = (model->residuals->Rx)   ? model->residuals->Rx->data.F32 : NULL;
 	Ry = (model->residuals->Ry)   ? model->residuals->Ry->data.F32 : NULL;
-	Rm = (model->residuals->mask) ? model->residuals->mask->data.U8 : NULL;
+	Rm = (model->residuals->mask) ? model->residuals->mask->data.PS_TYPE_IMAGE_MASK_DATA : NULL;
 	if (Ro) {
 	    NX = model->residuals->Ro->numCols;
@@ -249,5 +249,5 @@
     for (psS32 iy = 0; iy < image->numRows; iy++) {
         for (psS32 ix = 0; ix < image->numCols; ix++) {
-            if ((mask != NULL) && (mask->data.U8[iy][ix] & maskVal))
+            if ((mask != NULL) && (mask->data.PS_TYPE_IMAGE_MASK_DATA[iy][ix] & maskVal))
                 continue;
 
@@ -351,5 +351,5 @@
                 pmModel *model,
                 pmModelOpMode mode,
-                psMaskType maskVal)
+                psImageMaskType maskVal)
 {
     psTrace("psModules.objects", 3, "---- %s() begin ----\n", __func__);
@@ -365,5 +365,5 @@
                 pmModel *model,
                 pmModelOpMode mode,
-                psMaskType maskVal)
+                psImageMaskType maskVal)
 {
     psTrace("psModules.objects", 3, "---- %s() begin ----\n", __func__);
@@ -379,5 +379,5 @@
                           pmModel *model,
                           pmModelOpMode mode,
-                          psMaskType maskVal,
+                          psImageMaskType maskVal,
                           int dx,
                           int dy)
@@ -395,5 +395,5 @@
                           pmModel *model,
                           pmModelOpMode mode,
-                          psMaskType maskVal,
+                          psImageMaskType maskVal,
                           int dx,
                           int dy)
Index: trunk/psModules/src/objects/pmModel.h
===================================================================
--- trunk/psModules/src/objects/pmModel.h	(revision 21174)
+++ trunk/psModules/src/objects/pmModel.h	(revision 21183)
@@ -5,6 +5,6 @@
  * @author EAM, IfA
  *
- * @version $Revision: 1.17 $ $Name: not supported by cvs2svn $
- * @date $Date: 2008-12-09 21:16:09 $
+ * @version $Revision: 1.18 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2009-01-27 06:39:38 $
  *
  * Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -150,5 +150,5 @@
     pmModel *model,                     ///< The input pmModel
     pmModelOpMode mode,                 ///< mode to control how the model is added into the image
-    psMaskType maskVal                  ///< Value to mask
+    psImageMaskType maskVal		///< Value to mask
 );
 
@@ -168,5 +168,5 @@
     pmModel *model,                     ///< The input pmModel
     pmModelOpMode mode,                 ///< mode to control how the model is added into the image
-    psMaskType maskVal                  ///< Value to mask
+    psImageMaskType maskVal		///< Value to mask
 );
 
@@ -175,5 +175,5 @@
                           pmModel *model,
                           pmModelOpMode mode,
-                          psMaskType maskVal,
+                          psImageMaskType maskVal,
                           int dx,
                           int dy);
@@ -183,5 +183,5 @@
                           pmModel *model,
                           pmModelOpMode mode,
-                          psMaskType maskVal,
+                          psImageMaskType maskVal,
                           int dx,
                           int dy);
Index: trunk/psModules/src/objects/pmPSF.h
===================================================================
--- trunk/psModules/src/objects/pmPSF.h	(revision 21174)
+++ trunk/psModules/src/objects/pmPSF.h	(revision 21183)
@@ -6,6 +6,6 @@
  * @author EAM, IfA
  *
- * @version $Revision: 1.21 $ $Name: not supported by cvs2svn $
- * @date $Date: 2008-12-09 21:16:09 $
+ * @version $Revision: 1.22 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2009-01-27 06:39:38 $
  * Copyright 2004 Maui High Performance Computing Center, University of Hawaii
  */
@@ -102,5 +102,5 @@
 double pmPSF_SXYtoModel (psF32 *fittedPar);
 
-bool pmGrowthCurveGenerate (pmReadout *readout, pmPSF *psf, bool ignore, psMaskType maskVal, psMaskType mark);
+bool pmGrowthCurveGenerate (pmReadout *readout, pmPSF *psf, bool ignore, psImageMaskType maskVal, psImageMaskType mark);
 pmPSF *pmPSFBuildSimple (char *typeName, float sxx, float syy, float sxy, ...);
 
Index: trunk/psModules/src/objects/pmPSF_IO.c
===================================================================
--- trunk/psModules/src/objects/pmPSF_IO.c	(revision 21174)
+++ trunk/psModules/src/objects/pmPSF_IO.c	(revision 21183)
@@ -6,6 +6,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.36 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2008-12-08 02:51:14 $
+ *  @version $Revision: 1.37 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2009-01-27 06:39:38 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -871,4 +871,5 @@
             psFitsReadImageBuffer(psf->residuals->Ry, file->fits, fullImage, 2); // Desired pixels
         }
+	// XXX notice that we are not saving the resid->mask
     }
 
Index: trunk/psModules/src/objects/pmPSFtry.c
===================================================================
--- trunk/psModules/src/objects/pmPSFtry.c	(revision 21174)
+++ trunk/psModules/src/objects/pmPSFtry.c	(revision 21183)
@@ -5,7 +5,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.68 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2009-01-27 00:01:33 $
- *
+ *  @version $Revision: 1.69 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2009-01-27 06:39:38 $
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
  *
@@ -115,5 +114,5 @@
     test->metricErr = psVectorAlloc (sources->n, PS_TYPE_F32);
     test->fitMag    = psVectorAlloc (sources->n, PS_TYPE_F32);
-    test->mask      = psVectorAlloc (sources->n, PS_TYPE_U8);
+    test->mask      = psVectorAlloc (sources->n, PS_TYPE_VECTOR_MASK);
 
     psVectorInit (test->mask,        0);
@@ -148,5 +147,5 @@
 
 // generate a pmPSFtry with a copy of the test PSF sources
-pmPSFtry *pmPSFtryModel (const psArray *sources, const char *modelName, pmPSFOptions *options, psMaskType maskVal, psMaskType markVal)
+pmPSFtry *pmPSFtryModel (const psArray *sources, const char *modelName, pmPSFOptions *options, psImageMaskType maskVal, psImageMaskType markVal)
 {
     bool status;
@@ -176,9 +175,9 @@
         pmSource *source = psfTry->sources->data[i];
 	if (!source->moments) {
-            psfTry->mask->data.U8[i] = PSFTRY_MASK_EXT_FAIL;
+            psfTry->mask->data.PS_TYPE_VECTOR_MASK_DATA[i] = PSFTRY_MASK_EXT_FAIL;
 	    continue;
 	}
 	if (!source->moments->nPixels) {
-            psfTry->mask->data.U8[i] = PSFTRY_MASK_EXT_FAIL;
+            psfTry->mask->data.PS_TYPE_VECTOR_MASK_DATA[i] = PSFTRY_MASK_EXT_FAIL;
 	    continue;
 	}
@@ -186,5 +185,5 @@
         source->modelEXT = pmSourceModelGuess (source, psfTry->psf->type);
         if (source->modelEXT == NULL) {
-            psfTry->mask->data.U8[i] = PSFTRY_MASK_EXT_FAIL;
+            psfTry->mask->data.PS_TYPE_VECTOR_MASK_DATA[i] = PSFTRY_MASK_EXT_FAIL;
             psTrace ("psModules.objects", 4, "masking %d (%d,%d) : failed to generate model guess\n", i, source->peak->x, source->peak->y);
             continue;
@@ -198,9 +197,9 @@
 
         // clear object mask to define valid pixels
-        psImageKeepCircle (source->maskObj, source->peak->x, source->peak->y, options->radius, "AND", PS_NOT_U8(markVal));
+        psImageKeepCircle (source->maskObj, source->peak->x, source->peak->y, options->radius, "AND", PS_NOT_IMAGE_MASK(markVal));
 
         // exclude the poor fits
         if (!status) {
-            psfTry->mask->data.U8[i] = PSFTRY_MASK_EXT_FAIL;
+            psfTry->mask->data.PS_TYPE_VECTOR_MASK_DATA[i] = PSFTRY_MASK_EXT_FAIL;
             psTrace ("psModules.objects", 4, "masking %d (%d,%d) : status is poor\n", i, source->peak->x, source->peak->y);
             continue;
@@ -231,5 +230,5 @@
 
         // masked for: bad model fit, outlier in parameters
-        if (psfTry->mask->data.U8[i] & PSFTRY_MASK_ALL) {
+        if (psfTry->mask->data.PS_TYPE_VECTOR_MASK_DATA[i] & PSFTRY_MASK_ALL) {
             psTrace ("psModules.objects", 4, "dropping %d (%d,%d) : source is masked\n", i, source->peak->x, source->peak->y);
             continue;
@@ -239,5 +238,5 @@
         source->modelPSF = pmModelFromPSF (source->modelEXT, psfTry->psf);
         if (source->modelPSF == NULL) {
-            psfTry->mask->data.U8[i] = PSFTRY_MASK_BAD_MODEL;
+            psfTry->mask->data.PS_TYPE_VECTOR_MASK_DATA[i] = PSFTRY_MASK_BAD_MODEL;
             abort();
             continue;
@@ -253,6 +252,6 @@
         // skip poor fits
         if (!status) {
-            psImageKeepCircle (source->maskObj, source->peak->x, source->peak->y, options->radius, "AND", PS_NOT_U8(markVal));
-            psfTry->mask->data.U8[i] = PSFTRY_MASK_PSF_FAIL;
+            psImageKeepCircle (source->maskObj, source->peak->x, source->peak->y, options->radius, "AND", PS_NOT_IMAGE_MASK(markVal));
+            psfTry->mask->data.PS_TYPE_VECTOR_MASK_DATA[i] = PSFTRY_MASK_PSF_FAIL;
             psTrace ("psModules.objects", 4, "dropping %d (%d,%d) : failed PSF fit\n", i, source->peak->x, source->peak->y);
             continue;
@@ -261,6 +260,6 @@
         status = pmSourceMagnitudes (source, psfTry->psf, PM_SOURCE_PHOT_INTERP, maskVal);
         if (!status || isnan(source->apMag)) {
-            psImageKeepCircle (source->maskObj, source->peak->x, source->peak->y, options->radius, "AND", PS_NOT_U8(markVal));
-            psfTry->mask->data.U8[i] = PSFTRY_MASK_BAD_PHOT;
+            psImageKeepCircle (source->maskObj, source->peak->x, source->peak->y, options->radius, "AND", PS_NOT_IMAGE_MASK(markVal));
+            psfTry->mask->data.PS_TYPE_VECTOR_MASK_DATA[i] = PSFTRY_MASK_BAD_PHOT;
             psTrace ("psModules.objects", 4, "dropping %d (%d,%d) : poor photometry\n", i, source->peak->x, source->peak->y);
             continue;
@@ -268,5 +267,5 @@
 
         // clear object mask to define valid pixels
-        psImageKeepCircle (source->maskObj, source->peak->x, source->peak->y, options->radius, "AND", PS_NOT_U8(markVal));
+        psImageKeepCircle (source->maskObj, source->peak->x, source->peak->y, options->radius, "AND", PS_NOT_IMAGE_MASK(markVal));
 
         psfTry->fitMag->data.F32[i] = source->psfMag;
@@ -292,5 +291,5 @@
     psVector *flux  = psVectorAlloc (psfTry->sources->n, PS_TYPE_F32);
     psVector *chisq = psVectorAlloc (psfTry->sources->n, PS_TYPE_F32);
-    psVector *mask  = psVectorAlloc (psfTry->sources->n, PS_TYPE_MASK);
+    psVector *mask  = psVectorAlloc (psfTry->sources->n, PS_TYPE_VECTOR_MASK);
 
     // generate the x and y vectors, and mask missing models
@@ -300,9 +299,9 @@
             flux->data.F32[i] = 0.0;
             chisq->data.F32[i] = 0.0;
-            mask->data.U8[i] = 0xff;
+            mask->data.PS_TYPE_VECTOR_MASK_DATA[i] = 0xff;
         } else {
             flux->data.F32[i] = source->modelPSF->params->data.F32[PM_PAR_I0];
             chisq->data.F32[i] = source->modelPSF->chisq / source->modelPSF->nDOF;
-            mask->data.U8[i] = 0;
+            mask->data.PS_TYPE_VECTOR_MASK_DATA[i] = 0;
         }
     }
@@ -312,6 +311,5 @@
 
     // linear clipped fit of chisq trend vs flux
-    bool result = psVectorClipFitPolynomial1D(psfTry->psf->ChiTrend, options->stats, mask,
-                                              0xff, chisq, NULL, flux);
+    bool result = psVectorClipFitPolynomial1D(psfTry->psf->ChiTrend, options->stats, mask, 0xff, chisq, NULL, flux);
     psStatsOptions meanStat = psStatsMeanOption(options->stats->options); // Statistic for mean
     psStatsOptions stdevStat = psStatsStdevOption(options->stats->options); // Statistic for stdev
@@ -370,5 +368,5 @@
 
     for (int i = 0; i < psfTry->sources->n; i++) {
-        if (psfTry->mask->data.U8[i] & PSFTRY_MASK_ALL)
+        if (psfTry->mask->data.PS_TYPE_VECTOR_MASK_DATA[i] & PSFTRY_MASK_ALL)
             continue;
         r2rflux->data.F32[i] = PS_SQR(RADIUS) * pow(10.0, 0.4*psfTry->fitMag->data.F32[i]);
@@ -379,5 +377,5 @@
         FILE *f = fopen ("apresid.dat", "w");
         for (int i = 0; i < psfTry->sources->n; i++) {
-            int keep = (psfTry->mask->data.U8[i] & PSFTRY_MASK_ALL);
+            int keep = (psfTry->mask->data.PS_TYPE_VECTOR_MASK_DATA[i] & PSFTRY_MASK_ALL);
 
             pmSource *source = psfTry->sources->data[i];
@@ -427,5 +425,5 @@
         psVector *apfit = psPolynomial1DEvalVector (poly, r2rflux);
         for (int i = 0; i < psfTry->sources->n; i++) {
-            int keep = (psfTry->mask->data.U8[i] & PSFTRY_MASK_ALL);
+            int keep = (psfTry->mask->data.PS_TYPE_VECTOR_MASK_DATA[i] & PSFTRY_MASK_ALL);
 
             pmSource *source = psfTry->sources->data[i];
@@ -603,5 +601,5 @@
     for (int i = 0; i < sources->n; i++) {
 	// skip any masked sources (failed to fit one of the model steps or get a magnitude)
-	if (srcMask->data.U8[i]) continue;
+	if (srcMask->data.PS_TYPE_VECTOR_MASK_DATA[i]) continue;
 	
         pmSource *source = sources->data[i];
@@ -624,5 +622,5 @@
 
         psVector *dz = NULL;
-        psVector *mask = psVectorAlloc (sources->n, PS_TYPE_U8);
+        psVector *mask = psVectorAlloc (sources->n, PS_TYPE_VECTOR_MASK);
 
         // check the fit residuals and increase Nx,Ny until the error is minimized
@@ -632,5 +630,5 @@
 	    // copy srcMask to mask (we do not want the mask values set in pmPSFFitShapeParamsMap to be sticky)
 	    for (int i = 0; i < mask->n; i++) {
-		mask->data.U8[i] = srcMask->data.U8[i];
+		mask->data.PS_TYPE_VECTOR_MASK_DATA[i] = srcMask->data.PS_TYPE_VECTOR_MASK_DATA[i];
 	    }
             if (!pmPSFFitShapeParamsMap (psf, i, &scatterTotal, mask, x, y, mag, e0, e1, e2, dz)) {
@@ -651,5 +649,5 @@
 	// copy srcMask to mask (we do not want the mask values set in pmPSFFitShapeParamsMap to be sticky)
 	for (int i = 0; i < mask->n; i++) {
-	    mask->data.U8[i] = srcMask->data.U8[i];
+	    mask->data.PS_TYPE_VECTOR_MASK_DATA[i] = srcMask->data.PS_TYPE_VECTOR_MASK_DATA[i];
 	}
         if (!pmPSFFitShapeParamsMap (psf, entryMin, &scatterTotal, mask, x, y, mag, e0, e1, e2, dz)) {
@@ -663,5 +661,5 @@
 	// copy mask back to srcMask
 	for (int i = 0; i < mask->n; i++) {
-	    srcMask->data.U8[i] = mask->data.U8[i];
+	    srcMask->data.PS_TYPE_VECTOR_MASK_DATA[i] = mask->data.PS_TYPE_VECTOR_MASK_DATA[i];
 	}
 
@@ -736,5 +734,5 @@
                      pmTrend2DEval (psf->params->data[PM_PAR_E1], x->data.F32[i], y->data.F32[i]),
                      pmTrend2DEval (psf->params->data[PM_PAR_E2], x->data.F32[i], y->data.F32[i]),
-                     srcMask->data.U8[i]);
+                     srcMask->data.PS_TYPE_VECTOR_MASK_DATA[i]);
         }
         fclose (f);
@@ -851,8 +849,8 @@
 
     // the mask marks the values not used to calculate the ApTrend
-    psVector *fitMask = psVectorAlloc (x_fit->n, PS_TYPE_U8);
+    psVector *fitMask = psVectorAlloc (x_fit->n, PS_TYPE_VECTOR_MASK);
     // copy mask values to fitMask as a starting point
     for (int i = 0; i < fitMask->n; i++) {
-	fitMask->data.U8[i] = mask->data.U8[i];
+	fitMask->data.PS_TYPE_VECTOR_MASK_DATA[i] = mask->data.PS_TYPE_VECTOR_MASK_DATA[i];
     }
 
@@ -943,5 +941,5 @@
     // XXX copy fitMask values back to mask
     for (int i = 0; i < fitMask->n; i++) {
-	mask->data.U8[i] = fitMask->data.U8[i];
+	mask->data.PS_TYPE_VECTOR_MASK_DATA[i] = fitMask->data.PS_TYPE_VECTOR_MASK_DATA[i];
     }
     psFree (fitMask);
@@ -951,5 +949,5 @@
 
 // calculate the scatter of the parameters
-bool pmPSFShapeParamsScatter(float *scatterTotal, psVector *e0res, psVector *e1res, psVector *e2res, psVector *mask, psMaskType maskValue, psStatsOptions stdevOpt)
+bool pmPSFShapeParamsScatter(float *scatterTotal, psVector *e0res, psVector *e1res, psVector *e2res, psVector *mask, psVectorMaskType maskValue, psStatsOptions stdevOpt)
 {
 
@@ -994,5 +992,5 @@
     psVector *dE1subset = psVectorAllocEmpty (nGroup, PS_TYPE_F32);
     psVector *dE2subset = psVectorAllocEmpty (nGroup, PS_TYPE_F32);
-    psVector *mkSubset  = psVectorAllocEmpty (nGroup, PS_TYPE_U8);
+    psVector *mkSubset  = psVectorAllocEmpty (nGroup, PS_TYPE_VECTOR_MASK);
 
     int n = 0;
@@ -1007,6 +1005,6 @@
             dE2subset->data.F32[j] = e2res->data.F32[N];
 
-            mkSubset->data.U8[j]   = mask->data.U8[N];
-	    if (!mask->data.U8[N]) nValid ++;
+            mkSubset->data.PS_TYPE_VECTOR_MASK_DATA[j]   = mask->data.PS_TYPE_VECTOR_MASK_DATA[N];
+	    if (!mask->data.PS_TYPE_VECTOR_MASK_DATA[N]) nValid ++;
         }
 	if (nValid < 3) continue;
Index: trunk/psModules/src/objects/pmPSFtry.h
===================================================================
--- trunk/psModules/src/objects/pmPSFtry.h	(revision 21174)
+++ trunk/psModules/src/objects/pmPSFtry.h	(revision 21183)
@@ -6,6 +6,6 @@
  * @author EAM, IfA
  *
- * @version $Revision: 1.21 $ $Name: not supported by cvs2svn $
- * @date $Date: 2009-01-27 00:02:16 $
+ * @version $Revision: 1.22 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2009-01-27 06:39:38 $
  * Copyright 2004 Maui High Performance Computing Center, University of Hawaii
  */
@@ -48,5 +48,5 @@
     pmPSF      *psf;                    ///< Add comment.
     psArray    *sources;                ///< pointers to the original sources
-    psVector   *mask;                   ///< Add comment.
+    psVector   *mask;                   ///< PS_TYPE_VECTOR_MASK to flag good and bad sources 
     psVector   *metric;                 ///< Add comment.
     psVector   *metricErr;              ///< Add comment.
@@ -89,5 +89,5 @@
  *
  */
-pmPSFtry *pmPSFtryModel (const psArray *sources, const char *modelName, pmPSFOptions *options, psMaskType maskVal, psMaskType mark);
+pmPSFtry *pmPSFtryModel (const psArray *sources, const char *modelName, pmPSFOptions *options, psImageMaskType maskVal, psImageMaskType mark);
 
 /** pmPSFtryMetric()
@@ -129,5 +129,5 @@
 bool pmPSFFitShapeParams (pmPSF *psf, psArray *sources, psVector *x, psVector *y, psVector *srcMask);
 bool pmPSFFitShapeParamsMap (pmPSF *psf, int scale, float *scatterTotal, psVector *mask, psVector *x, psVector *y, psVector *mag, psVector *e0obs, psVector *e1obs, psVector *e2obs, psVector *dz);
-bool pmPSFShapeParamsScatter(float *scatterTotal, psVector *e0res, psVector *e1res, psVector *e2res, psVector *mask, psMaskType maskValue, psStatsOptions stdevOpt);
+bool pmPSFShapeParamsScatter(float *scatterTotal, psVector *e0res, psVector *e1res, psVector *e2res, psVector *mask, psVectorMaskType maskValue, psStatsOptions stdevOpt);
 bool pmPSFShapeParamsErrors (float *errorFloor, psVector *mag, psVector *e0res, psVector *e1res, psVector *e2res, psVector *mask, int nGroup, psStatsOptions stdevOpt);
 
Index: trunk/psModules/src/objects/pmResiduals.c
===================================================================
--- trunk/psModules/src/objects/pmResiduals.c	(revision 21174)
+++ trunk/psModules/src/objects/pmResiduals.c	(revision 21183)
@@ -4,6 +4,6 @@
  *
  * @author EAM, IfA
- * @version $Revision: 1.3 $ $Name: not supported by cvs2svn $
- * @date $Date: 2007-11-10 01:09:20 $
+ * @version $Revision: 1.4 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2009-01-27 06:39:38 $
  * Copyright 2004 IfA, University of Hawaii
  */
@@ -43,5 +43,7 @@
     resid->Ry  = psImageAlloc (nX, nY, PS_TYPE_F32);
     resid->weight = psImageAlloc (nX, nY, PS_TYPE_F32);
-    resid->mask   = psImageAlloc (nX, nY, PS_TYPE_U8);
+    resid->mask   = psImageAlloc (nX, nY, PM_TYPE_RESID_MASK);
+
+    // NOTE : the residual mask is internal only : 1 byte is sufficient
 
     resid->xBin = xBin;
Index: trunk/psModules/src/objects/pmResiduals.h
===================================================================
--- trunk/psModules/src/objects/pmResiduals.h	(revision 21174)
+++ trunk/psModules/src/objects/pmResiduals.h	(revision 21183)
@@ -4,6 +4,6 @@
  *
  * @author EAM, IfA
- * @version $Revision: 1.3 $ $Name: not supported by cvs2svn $
- * @date $Date: 2007-11-10 01:09:20 $
+ * @version $Revision: 1.4 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2009-01-27 06:39:38 $
  * Copyright 2004 IfA, University of Hawaii
  */
@@ -31,4 +31,11 @@
 bool psMemCheckResiduals(psPtr ptr);
 
+// macros to abstract the resid mask type : these values must be consistent 
+#define PM_TYPE_RESID_MASK PS_TYPE_U8        /**< the psElemType to use for mask image */
+#define PM_TYPE_RESID_MASK_DATA U8           /**< the data member to use for mask image */
+#define PM_TYPE_RESID_MASK_NAME "psU8"       /**< the data type for mask as a string */
+typedef psU8 pmResidMaskType;               ///< the C datatype for a mask image
+#define PM_NOT_RESID_MASK(A)(UINT8_MAX-(A))
+
 /// @}
 # endif
Index: trunk/psModules/src/objects/pmSource.c
===================================================================
--- trunk/psModules/src/objects/pmSource.c	(revision 21174)
+++ trunk/psModules/src/objects/pmSource.c	(revision 21183)
@@ -6,6 +6,6 @@
  *  @author EAM, IfA: significant modifications.
  *
- *  @version $Revision: 1.66 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2008-12-08 02:51:14 $
+ *  @version $Revision: 1.67 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2009-01-27 06:39:38 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -171,5 +171,5 @@
 
     // the maskObj is a unique mask array; create a new mask image
-    source->maskObj = in->maskObj ? psImageCopy (NULL, in->maskObj, PS_TYPE_MASK) : NULL;
+    source->maskObj = in->maskObj ? psImageCopy (NULL, in->maskObj, PS_TYPE_IMAGE_MASK) : NULL;
 
     source->type = in->type;
@@ -205,5 +205,5 @@
         mySource->maskView = psImageSubset(readout->mask,  srcRegion);
         // the object mask is a copy, and used to define the source pixels
-        mySource->maskObj = psImageCopy(NULL, mySource->maskView, PS_TYPE_MASK);
+        mySource->maskObj = psImageCopy(NULL, mySource->maskView, PS_TYPE_IMAGE_MASK);
     }
     mySource->region   = srcRegion;
@@ -255,5 +255,5 @@
         // re-copy the main mask pixels.  NOTE: the user will need to reset the object mask
         // pixels (eg, with psImageKeepCircle)
-        mySource->maskObj = psImageCopy (mySource->maskObj, mySource->maskView, PS_TYPE_MASK);
+        mySource->maskObj = psImageCopy (mySource->maskObj, mySource->maskView, PS_TYPE_IMAGE_MASK);
 
         // drop the old modelFlux pixels and force the user to re-create
@@ -505,5 +505,5 @@
 *****************************************************************************/
 
-bool pmSourceRoughClass(psRegion *region, psArray *sources, psMetadata *recipe, pmPSFClump clump, psMaskType maskSat)
+bool pmSourceRoughClass(psRegion *region, psArray *sources, psMetadata *recipe, pmPSFClump clump, psImageMaskType maskSat)
 {
     psTrace("psModules.objects", 5, "---- begin ----");
@@ -738,5 +738,5 @@
         psF32 *vPix = source->pixels->data.F32[row];
         psF32 *vWgt = source->weight->data.F32[row];
-        psU8  *vMsk = (source->maskObj == NULL) ? NULL : source->maskObj->data.U8[row];
+        psImageMaskType *vMsk = (source->maskObj == NULL) ? NULL : source->maskObj->data.PS_TYPE_IMAGE_MASK_DATA[row];
 
         for (psS32 col = 0; col < source->pixels->numCols ; col++, vPix++, vWgt++) {
@@ -848,5 +848,5 @@
 # endif
 // construct a realization of the source model
-bool pmSourceCacheModel (pmSource *source, psMaskType maskVal) {
+bool pmSourceCacheModel (pmSource *source, psImageMaskType maskVal) {
     PS_ASSERT_PTR_NON_NULL(source, false);
     // select appropriate model
@@ -867,5 +867,5 @@
 // construct a realization of the source model
 // XXX this function should optionally save an existing psf image from modelFlux
-bool pmSourceCachePSF (pmSource *source, psMaskType maskVal) {
+bool pmSourceCachePSF (pmSource *source, psImageMaskType maskVal) {
     PS_ASSERT_PTR_NON_NULL(source, false);
 
@@ -885,5 +885,5 @@
 
 // should we call pmSourceCacheModel if it does not exist?
-bool pmSourceOp (pmSource *source, pmModelOpMode mode, bool add, psMaskType maskVal, int dx, int dy)
+bool pmSourceOp (pmSource *source, pmModelOpMode mode, bool add, psImageMaskType maskVal, int dx, int dy)
 {
     PS_ASSERT_PTR_NON_NULL(source, false);
@@ -915,7 +915,7 @@
         }
 
-        psU8 **mask = NULL;
+        psImageMaskType **mask = NULL;
         if (source->maskObj) {
-            mask = source->maskObj->data.U8;
+            mask = source->maskObj->data.PS_TYPE_IMAGE_MASK_DATA;
         }
 
@@ -957,17 +957,17 @@
 }
 
-bool pmSourceAdd (pmSource *source, pmModelOpMode mode, psMaskType maskVal) {
+bool pmSourceAdd (pmSource *source, pmModelOpMode mode, psImageMaskType maskVal) {
     return pmSourceOp (source, mode, true, maskVal, 0, 0);
 }
 
-bool pmSourceSub (pmSource *source, pmModelOpMode mode, psMaskType maskVal) {
+bool pmSourceSub (pmSource *source, pmModelOpMode mode, psImageMaskType maskVal) {
     return pmSourceOp (source, mode, false, maskVal, 0, 0);
 }
 
-bool pmSourceAddWithOffset (pmSource *source, pmModelOpMode mode, psMaskType maskVal, int dx, int dy) {
+bool pmSourceAddWithOffset (pmSource *source, pmModelOpMode mode, psImageMaskType maskVal, int dx, int dy) {
     return pmSourceOp (source, mode, true, maskVal, dx, dy);
 }
 
-bool pmSourceSubWithOffset (pmSource *source, pmModelOpMode mode, psMaskType maskVal, int dx, int dy) {
+bool pmSourceSubWithOffset (pmSource *source, pmModelOpMode mode, psImageMaskType maskVal, int dx, int dy) {
     return pmSourceOp (source, mode, false, maskVal, dx, dy);
 }
Index: trunk/psModules/src/objects/pmSource.h
===================================================================
--- trunk/psModules/src/objects/pmSource.h	(revision 21174)
+++ trunk/psModules/src/objects/pmSource.h	(revision 21183)
@@ -3,6 +3,6 @@
  * @author EAM, IfA; GLG, MHPCC
  *
- * @version $Revision: 1.26 $ $Name: not supported by cvs2svn $
- * @date $Date: 2008-12-09 21:16:09 $
+ * @version $Revision: 1.27 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2009-01-27 06:39:38 $
  * Copyright 2004 Maui High Performance Computing Center, University of Hawaii
  */
@@ -210,5 +210,5 @@
     psMetadata *metadata,               ///< Contains classification parameters
     pmPSFClump clump,                   ///< Statistics about the PSF clump
-    psMaskType maskSat                  ///< Mask value for saturated pixels
+    psImageMaskType maskSat		///< Mask value for saturated pixels
 );
 
@@ -231,12 +231,12 @@
 pmModel *pmSourceGetModel (bool *isPSF, const pmSource *source);
 
-bool pmSourceAdd (pmSource *source, pmModelOpMode mode, psMaskType maskVal);
-bool pmSourceSub (pmSource *source, pmModelOpMode mode, psMaskType maskVal);
-bool pmSourceAddWithOffset (pmSource *source, pmModelOpMode mode, psMaskType maskVal, int dx, int dy);
-bool pmSourceSubWithOffset (pmSource *source, pmModelOpMode mode, psMaskType maskVal, int dx, int dy);
-
-bool pmSourceOp (pmSource *source, pmModelOpMode mode, bool add, psMaskType maskVal, int dx, int dy);
-bool pmSourceCacheModel (pmSource *source, psMaskType maskVal);
-bool pmSourceCachePSF (pmSource *source, psMaskType maskVal);
+bool pmSourceAdd (pmSource *source, pmModelOpMode mode, psImageMaskType maskVal);
+bool pmSourceSub (pmSource *source, pmModelOpMode mode, psImageMaskType maskVal);
+bool pmSourceAddWithOffset (pmSource *source, pmModelOpMode mode, psImageMaskType maskVal, int dx, int dy);
+bool pmSourceSubWithOffset (pmSource *source, pmModelOpMode mode, psImageMaskType maskVal, int dx, int dy);
+
+bool pmSourceOp (pmSource *source, pmModelOpMode mode, bool add, psImageMaskType maskVal, int dx, int dy);
+bool pmSourceCacheModel (pmSource *source, psImageMaskType maskVal);
+bool pmSourceCachePSF (pmSource *source, psImageMaskType maskVal);
 
 int             pmSourceSortBySN (const void **a, const void **b);
Index: trunk/psModules/src/objects/pmSourceFitModel.c
===================================================================
--- trunk/psModules/src/objects/pmSourceFitModel.c	(revision 21174)
+++ trunk/psModules/src/objects/pmSourceFitModel.c	(revision 21183)
@@ -6,6 +6,6 @@
  *  @author GLG, MHPCC
  *
- *  @version $Revision: 1.28 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2008-12-08 02:51:14 $
+ *  @version $Revision: 1.29 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2009-01-27 06:39:38 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -56,5 +56,5 @@
                        pmModel *model,
                        pmSourceFitMode mode,
-                       psMaskType maskVal)
+                       psImageMaskType maskVal)
 {
     psTrace("psModules.objects", 5, "---- %s begin ----\n", __func__);
@@ -81,5 +81,5 @@
         for (psS32 j = 0; j < source->pixels->numCols; j++) {
             // skip masked points
-            if (source->maskObj->data.U8[i][j] & maskVal) {
+            if (source->maskObj->data.PS_TYPE_IMAGE_MASK_DATA[i][j] & maskVal) {
                 continue;
             }
@@ -121,5 +121,5 @@
     // create the minimization constraints
     psMinConstraint *constraint = psMinConstraintAlloc();
-    constraint->paramMask = psVectorAlloc (params->n, PS_TYPE_U8);
+    constraint->paramMask = psVectorAlloc (params->n, PS_TYPE_VECTOR_MASK);
     constraint->checkLimits = model->modelLimits;
 
@@ -131,5 +131,5 @@
         nParams = 1;
         psVectorInit (constraint->paramMask, 1);
-        constraint->paramMask->data.U8[PM_PAR_I0] = 0;
+        constraint->paramMask->data.PS_TYPE_VECTOR_MASK_DATA[PM_PAR_I0] = 0;
         break;
     case PM_SOURCE_FIT_PSF:
@@ -137,7 +137,7 @@
         nParams = 3;
         psVectorInit (constraint->paramMask, 1);
-        constraint->paramMask->data.U8[PM_PAR_I0] = 0;
-        constraint->paramMask->data.U8[PM_PAR_XPOS] = 0;
-        constraint->paramMask->data.U8[PM_PAR_YPOS] = 0;
+        constraint->paramMask->data.PS_TYPE_VECTOR_MASK_DATA[PM_PAR_I0] = 0;
+        constraint->paramMask->data.PS_TYPE_VECTOR_MASK_DATA[PM_PAR_XPOS] = 0;
+        constraint->paramMask->data.PS_TYPE_VECTOR_MASK_DATA[PM_PAR_YPOS] = 0;
         break;
     case PM_SOURCE_FIT_EXT:
@@ -145,5 +145,5 @@
         nParams = params->n - 1;
         psVectorInit (constraint->paramMask, 0);
-        constraint->paramMask->data.U8[PM_PAR_SKY] = 1;
+        constraint->paramMask->data.PS_TYPE_VECTOR_MASK_DATA[PM_PAR_SKY] = 1;
         break;
     default:
@@ -175,5 +175,5 @@
             fprintf (stderr, "%f ", params->data.F32[i]);
         }
-        if ((constraint->paramMask != NULL) && constraint->paramMask->data.U8[i])
+        if ((constraint->paramMask != NULL) && constraint->paramMask->data.PS_TYPE_VECTOR_MASK_DATA[i])
             continue;
         dparams->data.F32[i] = sqrt(covar->data.F32[i][i]);
@@ -192,13 +192,13 @@
     if (constraint->paramMask != NULL) {
         psVector *delta = psVectorAlloc (params->n, PS_TYPE_F32);
-        psVector *altmask = psVectorAlloc (params->n, PS_TYPE_U8);
-        altmask->data.U8[0] = 1;
+        psVector *altmask = psVectorAlloc (params->n, PS_TYPE_VECTOR_MASK);
+        altmask->data.PS_TYPE_VECTOR_MASK_DATA[0] = 1;
         for (int i = 1; i < dparams->n; i++) {
-            altmask->data.U8[i] = (constraint->paramMask->data.U8[i]) ? 0 : 1;
+            altmask->data.PS_TYPE_VECTOR_MASK_DATA[i] = (constraint->paramMask->data.PS_TYPE_VECTOR_MASK_DATA[i]) ? 0 : 1;
         }
         psMinimizeGaussNewtonDelta(delta, params, altmask, x, y, yErr, model->modelFunc);
 
         for (int i = 0; i < dparams->n; i++) {
-            if (!constraint->paramMask->data.U8[i])
+            if (!constraint->paramMask->data.PS_TYPE_VECTOR_MASK_DATA[i])
                 continue;
             // note that delta is the value *subtracted* from the parameter
Index: trunk/psModules/src/objects/pmSourceFitModel.h
===================================================================
--- trunk/psModules/src/objects/pmSourceFitModel.h	(revision 21174)
+++ trunk/psModules/src/objects/pmSourceFitModel.h	(revision 21183)
@@ -3,6 +3,6 @@
  * @author EAM, IfA; GLG, MHPCC
  *
- * @version $Revision: 1.6 $ $Name: not supported by cvs2svn $
- * @date $Date: 2007-06-20 02:22:26 $
+ * @version $Revision: 1.7 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2009-01-27 06:39:38 $
  * Copyright 2004 Maui High Performance Computing Center, University of Hawaii
  */
@@ -41,5 +41,5 @@
     pmModel *model,   ///< model to be fitted
     pmSourceFitMode mode,  ///< define parameters to be fitted
-    psMaskType maskVal                  ///< Value to mask
+    psImageMaskType maskVal		///< Value to mask
 );
 
@@ -71,5 +71,5 @@
     psArray *modelSet,   ///< model to be fitted
     pmSourceFitMode mode,  ///< define parameters to be fitted
-    psMaskType maskVal                  ///< Vale to mask
+    psImageMaskType maskVal		///< Vale to mask
 
 );
Index: trunk/psModules/src/objects/pmSourceFitSet.c
===================================================================
--- trunk/psModules/src/objects/pmSourceFitSet.c	(revision 21174)
+++ trunk/psModules/src/objects/pmSourceFitSet.c	(revision 21183)
@@ -6,7 +6,6 @@
  *  @author GLG, MHPCC
  *
- *  @version $Revision: 1.13 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2009-01-24 20:52:26 $
- *
+ *  @version $Revision: 1.14 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2009-01-27 06:39:38 $
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
  *
@@ -394,5 +393,5 @@
             for (int j = 0; j < paramOne->n; j++) {
                 if (j == PM_PAR_I0) continue;
-                constraint->paramMask->data.U8[n + j] = 1;
+                constraint->paramMask->data.PS_TYPE_VECTOR_MASK_DATA[n + j] = 1;
             }
             break;
@@ -403,10 +402,10 @@
                 if (j == PM_PAR_YPOS) continue;
                 if (j == PM_PAR_I0) continue;
-                constraint->paramMask->data.U8[n + j] = 1;
+                constraint->paramMask->data.PS_TYPE_VECTOR_MASK_DATA[n + j] = 1;
             }
             break;
           case PM_SOURCE_FIT_EXT:
             // EXT model fits all params (except sky)
-            constraint->paramMask->data.U8[n + PM_PAR_SKY] = 1;
+            constraint->paramMask->data.PS_TYPE_VECTOR_MASK_DATA[n + PM_PAR_SKY] = 1;
             break;
           default:
@@ -445,5 +444,5 @@
                      psArray *modelSet,
                      pmSourceFitMode mode,
-                     psMaskType maskVal)
+                     psImageMaskType maskVal)
 {
     psTrace("psModules.objects", 3, "---- %s begin ----\n", __func__);
@@ -469,5 +468,5 @@
         for (psS32 j = 0; j < source->pixels->numCols; j++) {
             // skip masked points
-            if (source->maskObj->data.U8[i][j] & maskVal) {
+            if (source->maskObj->data.PS_TYPE_IMAGE_MASK_DATA[i][j] & maskVal) {
                 continue;
             }
@@ -515,5 +514,5 @@
     // create the minimization constraints
     psMinConstraint *constraint = psMinConstraintAlloc();
-    constraint->paramMask = psVectorAlloc (thisSet->nParamSet, PS_TYPE_U8);
+    constraint->paramMask = psVectorAlloc (thisSet->nParamSet, PS_TYPE_VECTOR_MASK);
     constraint->checkLimits = pmSourceFitSetCheckLimits;
 
@@ -528,5 +527,5 @@
     if (psTraceGetLevel("psModules.objects") >= 5) {
         for (int i = 0; i < params->n; i++) {
-            fprintf (stderr, "%d %f %d\n", i, params->data.F32[i], constraint->paramMask->data.U8[i]);
+            fprintf (stderr, "%d %f %d\n", i, params->data.F32[i], constraint->paramMask->data.PS_TYPE_VECTOR_MASK_DATA[i]);
         }
     }
@@ -560,5 +559,5 @@
     psVector *dparams = psVectorAlloc (thisSet->nParamSet, PS_TYPE_F32);
     for (int i = 0; i < dparams->n; i++) {
-        if ((constraint->paramMask != NULL) && constraint->paramMask->data.U8[i])
+        if ((constraint->paramMask != NULL) && constraint->paramMask->data.PS_TYPE_VECTOR_MASK_DATA[i])
             continue;
         dparams->data.F32[i] = sqrt(covar->data.F32[i][i]);
@@ -568,13 +567,13 @@
     if (constraint->paramMask != NULL) {
         psVector *delta = psVectorAlloc (params->n, PS_TYPE_F32);
-        psVector *altmask = psVectorAlloc (params->n, PS_TYPE_U8);
-        altmask->data.U8[0] = 1;
+        psVector *altmask = psVectorAlloc (params->n, PS_TYPE_VECTOR_MASK);
+        altmask->data.PS_TYPE_VECTOR_MASK_DATA[0] = 1;
         for (int i = 1; i < dparams->n; i++) {
-            altmask->data.U8[i] = (constraint->paramMask->data.U8[i]) ? 0 : 1;
+            altmask->data.PS_TYPE_VECTOR_MASK_DATA[i] = (constraint->paramMask->data.PS_TYPE_VECTOR_MASK_DATA[i]) ? 0 : 1;
         }
         psMinimizeGaussNewtonDelta(delta, params, altmask, x, y, yErr, pmSourceFitSetFunction);
 
         for (int i = 0; i < dparams->n; i++) {
-            if (!constraint->paramMask->data.U8[i])
+            if (!constraint->paramMask->data.PS_TYPE_VECTOR_MASK_DATA[i])
                 continue;
             // note that delta is the value *subtracted* from the parameter
Index: trunk/psModules/src/objects/pmSourceFitSet.h
===================================================================
--- trunk/psModules/src/objects/pmSourceFitSet.h	(revision 21174)
+++ trunk/psModules/src/objects/pmSourceFitSet.h	(revision 21183)
@@ -3,6 +3,6 @@
  * @author EAM, IfA; GLG, MHPCC
  *
- * @version $Revision: 1.7 $ $Name: not supported by cvs2svn $
- * @date $Date: 2009-01-24 20:52:26 $
+ * @version $Revision: 1.8 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2009-01-27 06:39:38 $
  * Copyright 2004 Maui High Performance Computing Center, University of Hawaii
  */
@@ -54,8 +54,8 @@
  */
 bool pmSourceFitSet(
-    pmSource *source,   ///< The input pmSource
-    psArray *modelSet,   ///< model to be fitted
-    pmSourceFitMode mode,  ///< define parameters to be fitted
-    psMaskType maskVal                  ///< Vale to mask
+    pmSource *source,			///< The input pmSource
+    psArray *modelSet,			///< model to be fitted
+    pmSourceFitMode mode,		///< define parameters to be fitted
+    psImageMaskType maskVal		///< Vale to mask
 
 );
Index: trunk/psModules/src/objects/pmSourceMatch.c
===================================================================
--- trunk/psModules/src/objects/pmSourceMatch.c	(revision 21174)
+++ trunk/psModules/src/objects/pmSourceMatch.c	(revision 21183)
@@ -122,5 +122,5 @@
     match->image = psVectorAllocEmpty(num, PS_TYPE_U32);
     match->index = psVectorAllocEmpty(num, PS_TYPE_U32);
-    match->mask = psVectorAllocEmpty(num, PS_TYPE_MASK);
+    match->mask = psVectorAllocEmpty(num, PS_TYPE_VECTOR_MASK);
 
     return match;
@@ -143,5 +143,5 @@
     match->image->data.S32[num] = image;
     match->index->data.S32[num] = index;
-    match->mask->data.PS_TYPE_MASK_DATA[num] = 0;
+    match->mask->data.PS_TYPE_VECTOR_MASK_DATA[num] = 0;
     match->num++;
 
@@ -316,5 +316,5 @@
         double star = 0.0, starErr = 0.0; // Accumulators for star
         for (int j = 0; j < match->num; j++) {
-            if (match->mask->data.PS_TYPE_MASK_DATA[j]) {
+            if (match->mask->data.PS_TYPE_VECTOR_MASK_DATA[j]) {
                 continue;
             }
@@ -347,5 +347,5 @@
         pmSourceMatch *match = matches->data[i]; // Matched stars
         for (int j = 0; j < match->num; j++) {
-            if (match->mask->data.PS_TYPE_MASK_DATA[j]) {
+            if (match->mask->data.PS_TYPE_VECTOR_MASK_DATA[j]) {
                 continue;
             }
@@ -373,5 +373,5 @@
         pmSourceMatch *match = matches->data[i]; // Matched stars
         for (int j = 0; j < match->num; j++) {
-            if (match->mask->data.PS_TYPE_MASK_DATA[j]) {
+            if (match->mask->data.PS_TYPE_VECTOR_MASK_DATA[j]) {
                 continue;
             }
@@ -474,5 +474,5 @@
         pmSourceMatch *match = matches->data[i]; // Matched stars
         for (int j = 0; j < match->num; j++) {
-            if (match->mask->data.PS_TYPE_MASK_DATA[j]) {
+            if (match->mask->data.PS_TYPE_VECTOR_MASK_DATA[j]) {
                 continue;
             }
@@ -488,5 +488,5 @@
             if (PS_SQR(dev) > starClip * (PS_SQR(magErr) + sysErr2)) {
                 numRejected++;
-                match->mask->data.PS_TYPE_MASK_DATA[j] = 0xFF;
+                match->mask->data.PS_TYPE_VECTOR_MASK_DATA[j] = 0xFF;
             }
         }
Index: trunk/psModules/src/objects/pmSourceMoments.c
===================================================================
--- trunk/psModules/src/objects/pmSourceMoments.c	(revision 21174)
+++ trunk/psModules/src/objects/pmSourceMoments.c	(revision 21183)
@@ -6,6 +6,6 @@
  *  @author EAM, IfA: significant modifications.
  *
- *  @version $Revision: 1.6 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2008-12-08 02:51:14 $
+ *  @version $Revision: 1.7 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2009-01-27 06:39:38 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -100,5 +100,5 @@
         psF32 *vPix = source->pixels->data.F32[row];
         psF32 *vWgt = source->weight->data.F32[row];
-        psU8  *vMsk = (source->maskObj == NULL) ? NULL : source->maskObj->data.U8[row];
+        psImageMaskType *vMsk = (source->maskObj == NULL) ? NULL : source->maskObj->data.PS_TYPE_IMAGE_MASK_DATA[row];
 
         for (psS32 col = 0; col < source->pixels->numCols ; col++, vPix++, vWgt++) {
@@ -190,5 +190,5 @@
         psF32 *vPix = source->pixels->data.F32[row];
         psF32 *vWgt = source->weight->data.F32[row];
-        psU8  *vMsk = (source->maskObj == NULL) ? NULL : source->maskObj->data.U8[row];
+        psImageMaskType  *vMsk = (source->maskObj == NULL) ? NULL : source->maskObj->data.PS_TYPE_IMAGE_MASK_DATA[row];
 
         for (psS32 col = 0; col < source->pixels->numCols ; col++, vPix++, vWgt++) {
@@ -342,5 +342,5 @@
         psF32 *vPix = source->pixels->data.F32[row];
         psF32 *vWgt = source->weight->data.F32[row];
-        psU8  *vMsk = (source->maskObj == NULL) ? NULL : source->maskObj->data.U8[row];
+        psImageMaskType  *vMsk = (source->maskObj == NULL) ? NULL : source->maskObj->data.PS_TYPE_IMAGE_MASK_DATA[row];
 
         for (psS32 col = 0; col < source->pixels->numCols ; col++, vPix++, vWgt++) {
Index: trunk/psModules/src/objects/pmSourcePhotometry.c
===================================================================
--- trunk/psModules/src/objects/pmSourcePhotometry.c	(revision 21174)
+++ trunk/psModules/src/objects/pmSourcePhotometry.c	(revision 21183)
@@ -3,6 +3,6 @@
  *  @author EAM, IfA; GLG, MHPCC
  *
- *  @version $Revision: 1.47 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2008-12-08 02:51:14 $
+ *  @version $Revision: 1.48 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2009-01-27 06:39:38 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -66,5 +66,5 @@
 
 // XXX masked region should be (optionally) elliptical
-bool pmSourceMagnitudes (pmSource *source, pmPSF *psf, pmSourcePhotometryMode mode, psMaskType maskVal)
+bool pmSourceMagnitudes (pmSource *source, pmPSF *psf, pmSourcePhotometryMode mode, psImageMaskType maskVal)
 {
     PS_ASSERT_PTR_NON_NULL(source, false);
@@ -306,5 +306,5 @@
 
 // return source aperture magnitude
-bool pmSourcePhotometryAper (float *apMag, pmModel *model, psImage *image, psImage *mask, psMaskType maskVal)
+bool pmSourcePhotometryAper (float *apMag, pmModel *model, psImage *image, psImage *mask, psImageMaskType maskVal)
 {
     PS_ASSERT_PTR_NON_NULL(apMag, false);
@@ -324,5 +324,5 @@
 
     psF32 **imData = image->data.F32;
-    psU8 **mkData = mask->data.U8;
+    psImageMaskType **mkData = mask->data.PS_TYPE_IMAGE_MASK_DATA;
 
     // measure apMag
@@ -344,5 +344,5 @@
 
 // return source aperture magnitude
-bool pmSourcePixelWeight (float *pixWeight, pmModel *model, psImage *image, psImage *mask, psMaskType maskVal)
+bool pmSourcePixelWeight (float *pixWeight, pmModel *model, psImage *image, psImage *mask, psImageMaskType maskVal)
 {
     PS_ASSERT_PTR_NON_NULL(pixWeight, false);
@@ -412,5 +412,5 @@
             if (my >= NY)
                 continue;
-            if (mask->data.U8[my][mx] & maskVal)
+            if (mask->data.PS_TYPE_IMAGE_MASK_DATA[my][mx] & maskVal)
                 continue;
 
@@ -475,7 +475,7 @@
     for (yi = yIs, yj = yJs; yi < yIe; yi++, yj++) {
         for (xi = xIs, xj = xJs; xi < xIe; xi++, xj++) {
-            if (Ti->data.U8[yi][xi])
-                continue;
-            if (Tj->data.U8[yj][xj])
+            if (Ti->data.PS_TYPE_IMAGE_MASK_DATA[yi][xi])
+                continue;
+            if (Tj->data.PS_TYPE_IMAGE_MASK_DATA[yj][xj])
                 continue;
 
@@ -540,7 +540,7 @@
     for (yi = yIs, yj = yJs; yi < yIe; yi++, yj++) {
         for (xi = xIs, xj = xJs; xi < xIe; xi++, xj++) {
-            if (Ti->data.U8[yi][xi])
-                continue;
-            if (Tj->data.U8[yj][xj])
+            if (Ti->data.PS_TYPE_IMAGE_MASK_DATA[yi][xi])
+                continue;
+            if (Tj->data.PS_TYPE_IMAGE_MASK_DATA[yj][xj])
                 continue;
 
@@ -578,5 +578,5 @@
     for (int yi = 0; yi < Pi->numRows; yi++) {
         for (int xi = 0; xi < Pi->numCols; xi++) {
-            if (Ti->data.U8[yi][xi])
+            if (Ti->data.PS_TYPE_IMAGE_MASK_DATA[yi][xi])
                 continue;
             if (!unweighted_sum) {
@@ -613,5 +613,5 @@
 
 bool pmSourceChisq (pmModel *model, psImage *image, psImage *mask, psImage *weight,
-                    psMaskType maskVal)
+                    psImageMaskType maskVal)
 {
     PS_ASSERT_PTR_NON_NULL(model, false);
@@ -624,5 +624,5 @@
     for (int j = 0; j < image->numRows; j++) {
         for (int i = 0; i < image->numCols; i++) {
-            if (mask->data.U8[j][i] & maskVal)
+            if (mask->data.PS_TYPE_IMAGE_MASK_DATA[j][i] & maskVal)
                 continue;
             if (weight->data.F32[j][i] <= 0)
@@ -657,5 +657,5 @@
     for (int yi = 0; yi < Pi->numRows; yi++) {
         for (int xi = 0; xi < Pi->numCols; xi++) {
-            if (Ti->data.U8[yi][xi])
+            if (Ti->data.PS_TYPE_IMAGE_MASK_DATA[yi][xi])
                 continue;
             if (!unweighted_sum) {
@@ -734,7 +734,7 @@
     for (yi = yIs, yj = yJs; yi < yIe; yi++, yj++) {
         for (xi = xIs, xj = xJs; xi < xIe; xi++, xj++) {
-            if (Ti->data.U8[yi][xi])
-                continue;
-            if (Tj->data.U8[yj][xj])
+            if (Ti->data.PS_TYPE_IMAGE_MASK_DATA[yi][xi])
+                continue;
+            if (Tj->data.PS_TYPE_IMAGE_MASK_DATA[yj][xj])
                 continue;
 
@@ -798,7 +798,7 @@
     for (yi = yIs, yj = yJs; yi < yIe; yi++, yj++) {
         for (xi = xIs, xj = xJs; xi < xIe; xi++, xj++) {
-            if (Ti->data.U8[yi][xi])
-                continue;
-            if (Tj->data.U8[yj][xj])
+            if (Ti->data.PS_TYPE_IMAGE_MASK_DATA[yi][xi])
+                continue;
+            if (Tj->data.PS_TYPE_IMAGE_MASK_DATA[yj][xj])
                 continue;
 
Index: trunk/psModules/src/objects/pmSourcePhotometry.h
===================================================================
--- trunk/psModules/src/objects/pmSourcePhotometry.h	(revision 21174)
+++ trunk/psModules/src/objects/pmSourcePhotometry.h	(revision 21183)
@@ -4,6 +4,6 @@
  * @author EAM, IfA; GLG, MHPCC
  *
- * @version $Revision: 1.11 $ $Name: not supported by cvs2svn $
- * @date $Date: 2008-07-15 20:25:00 $
+ * @version $Revision: 1.12 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2009-01-27 06:39:38 $
  * Copyright 2004 Maui High Performance Computing Center, University of Hawaii
  */
@@ -46,11 +46,11 @@
     psImage *image,                     ///< image pixels to be used
     psImage *mask,                      ///< mask of pixels to ignore
-    psMaskType maskVal                  ///< Value to mask
+    psImageMaskType maskVal		///< Value to mask
 );
 
 bool pmSourceMagnitudesInit (psMetadata *config);
-bool pmSourceMagnitudes (pmSource *source, pmPSF *psf, pmSourcePhotometryMode mode, psMaskType maskVal);
-bool pmSourcePixelWeight (float *pixWeight, pmModel *model, psImage *image, psImage *mask, psMaskType maskVal);
-bool pmSourceChisq (pmModel *model, psImage *image, psImage *mask, psImage *weight, psMaskType maskVal);
+bool pmSourceMagnitudes (pmSource *source, pmPSF *psf, pmSourcePhotometryMode mode, psImageMaskType maskVal);
+bool pmSourcePixelWeight (float *pixWeight, pmModel *model, psImage *image, psImage *mask, psImageMaskType maskVal);
+bool pmSourceChisq (pmModel *model, psImage *image, psImage *mask, psImage *weight, psImageMaskType maskVal);
 
 
Index: trunk/psModules/src/objects/pmSourceSky.c
===================================================================
--- trunk/psModules/src/objects/pmSourceSky.c	(revision 21174)
+++ trunk/psModules/src/objects/pmSourceSky.c	(revision 21183)
@@ -6,6 +6,6 @@
  *  @author EAM, IfA: significant modifications.
  *
- *  @version $Revision: 1.18 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2008-12-08 02:51:14 $
+ *  @version $Revision: 1.19 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2009-01-27 06:39:38 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -52,6 +52,6 @@
     psStatsOptions statsOptions,
     psF32 Radius,
-    psMaskType maskVal,
-    psMaskType markVal)
+    psImageMaskType maskVal,
+    psImageMaskType markVal)
 {
     psTrace("psModules.objects", 3, "---- %s() begin ----\n", __func__);
@@ -86,5 +86,5 @@
         return false;
     }
-    psImageMaskRegion(mask, srcRegion, "AND", PS_NOT_U8(markVal));
+    psImageMaskRegion(mask, srcRegion, "AND", PS_NOT_IMAGE_MASK(markVal));
     double value = psStatsGetValue(myStats, statistic);
     psFree(myStats);
@@ -107,6 +107,6 @@
     psStatsOptions statsOptions,
     psF32 Radius,
-    psMaskType maskVal,
-    psMaskType markVal
+    psImageMaskType maskVal,
+    psImageMaskType markVal
 )
 {
@@ -142,5 +142,5 @@
         return false;
     }
-    psImageMaskRegion(mask, srcRegion, "AND", PS_NOT_U8(markVal));
+    psImageMaskRegion(mask, srcRegion, "AND", PS_NOT_IMAGE_MASK(markVal));
     double value = psStatsGetValue(myStats, statistic);
     psFree(myStats);
Index: trunk/psModules/src/objects/pmSourceSky.h
===================================================================
--- trunk/psModules/src/objects/pmSourceSky.h	(revision 21174)
+++ trunk/psModules/src/objects/pmSourceSky.h	(revision 21183)
@@ -2,6 +2,6 @@
  * @author EAM, IfA; GLG, MHPCC
  *
- * @version $Revision: 1.4 $ $Name: not supported by cvs2svn $
- * @date $Date: 2007-06-20 02:22:26 $
+ * @version $Revision: 1.5 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2009-01-27 06:39:38 $
  * Copyright 2004 Maui High Performance Computing Center, University of Hawaii
  */
@@ -30,6 +30,6 @@
     psStatsOptions statsOptions, ///< The statistic used in calculating the background sky
     float Radius,   ///< The inner radius of the square annulus to exclude
-    psMaskType maskVal,                 ///< Value to mask
-    psMaskType mark                     ///< Mask value for marking
+    psImageMaskType maskVal,                 ///< Value to mask
+    psImageMaskType mark                     ///< Mask value for marking
 );
 
@@ -40,6 +40,6 @@
     psStatsOptions statsOptions, ///< The statistic used in calculating the background sky
     float Radius,   ///< The inner radius of the square annulus to exclude
-    psMaskType maskVal,                 ///< Value to mask
-    psMaskType mark                     ///< Mask value for marking
+    psImageMaskType maskVal,                 ///< Value to mask
+    psImageMaskType mark                     ///< Mask value for marking
 );
 
Index: trunk/psModules/src/objects/pmSourceVisual.c
===================================================================
--- trunk/psModules/src/objects/pmSourceVisual.c	(revision 21174)
+++ trunk/psModules/src/objects/pmSourceVisual.c	(revision 21183)
@@ -57,5 +57,5 @@
 	model->data.F32[i] = pmTrend2DEval (trend, x->data.F32[i], y->data.F32[i]);
 	resid->data.F32[i] = param->data.F32[i] - model->data.F32[i];
-	if (mask->data.U8[i]) continue;
+	if (mask->data.PS_TYPE_VECTOR_MASK_DATA[i]) continue;
 	min = PS_MIN (min, resid->data.F32[i]);
 	max = PS_MAX (max, resid->data.F32[i]);
Index: trunk/psModules/src/objects/pmTrend2D.c
===================================================================
--- trunk/psModules/src/objects/pmTrend2D.c	(revision 21174)
+++ trunk/psModules/src/objects/pmTrend2D.c	(revision 21183)
@@ -3,6 +3,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.11 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2009-01-27 00:00:44 $
+ *  @version $Revision: 1.12 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2009-01-27 06:39:38 $
  *  Copyright 2004 Institute for Astronomy, University of Hawaii
  *
@@ -179,5 +179,5 @@
 }
 
-bool pmTrend2DFit(pmTrend2D *trend, psVector *mask, psMaskType maskVal, const psVector *x,
+bool pmTrend2DFit(pmTrend2D *trend, psVector *mask, psVectorMaskType maskVal, const psVector *x,
                   const psVector *y, const psVector *f, const psVector *df)
 {
@@ -234,5 +234,5 @@
 }
 
-psVector *pmTrend2DEvalVector(const pmTrend2D *trend, psVector *mask, psMaskType maskValue, const psVector *x, const psVector *y)
+psVector *pmTrend2DEvalVector(const pmTrend2D *trend, psVector *mask, psVectorMaskType maskValue, const psVector *x, const psVector *y)
 {
     PM_ASSERT_TREND2D_NON_NULL(trend, NULL);
Index: trunk/psModules/src/objects/pmTrend2D.h
===================================================================
--- trunk/psModules/src/objects/pmTrend2D.h	(revision 21174)
+++ trunk/psModules/src/objects/pmTrend2D.h	(revision 21183)
@@ -5,6 +5,6 @@
  * @author EAM, IfA
  *
- * @version $Revision: 1.8 $ $Name: not supported by cvs2svn $
- * @date $Date: 2009-01-27 00:00:45 $
+ * @version $Revision: 1.9 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2009-01-27 06:39:38 $
  * Copyright 2004 Maui High Performance Computing Center, University of Hawaii
  */
@@ -80,5 +80,5 @@
 bool pmTrend2DFit(pmTrend2D *trend,
                   psVector *mask,       // Warning: mask is modified!
-                  psMaskType maskVal,
+                  psVectorMaskType maskVal,
                   const psVector *x,
                   const psVector *y,
@@ -90,5 +90,5 @@
                      float x, float y
     );
-psVector *pmTrend2DEvalVector(const pmTrend2D *trend, psVector *mask, psMaskType maskValue, 
+psVector *pmTrend2DEvalVector(const pmTrend2D *trend, psVector *mask, psVectorMaskType maskValue, 
                               const psVector *x, const psVector *y
     );
