Index: trunk/psModules/src/detrend/pmFlatNormalize.c
===================================================================
--- trunk/psModules/src/detrend/pmFlatNormalize.c	(revision 9730)
+++ trunk/psModules/src/detrend/pmFlatNormalize.c	(revision 21183)
@@ -9,4 +9,6 @@
 
 #include "pmFlatNormalize.h"
+
+// XXX this function should take the abstract mask names and set bad values in a more precise way
 
 // I'm not sure that many many iterations are required, but rather suspect that the system converges within a
@@ -55,9 +57,9 @@
     // Take the logarithms
     psImage *flux = psImageCopy(NULL, bgMatrix, PS_TYPE_F32); // Copy of the input flux levels matrix
-    psImage *fluxMask = psImageAlloc(numChips, numExps, PS_TYPE_U8); // Mask for bad measurements
+    psImage *fluxMask = psImageAlloc(numChips, numExps, PS_TYPE_IMAGE_MASK); // Mask for bad measurements
     psImageInit(fluxMask, 0);
-    psVector *gainMask = psVectorAlloc(numChips, PS_TYPE_U8); // Mask for bad gains
+    psVector *gainMask = psVectorAlloc(numChips, PS_TYPE_VECTOR_MASK); // Mask for bad gains
     psVectorInit(gainMask, 0);
-    psVector *expMask = psVectorAlloc(numExps, PS_TYPE_U8); // Mask for bad exposures
+    psVector *expMask = psVectorAlloc(numExps, PS_TYPE_VECTOR_MASK); // Mask for bad exposures
     psVectorInit(expMask, 0);
     for (int i = 0; i < numChips; i++) {
@@ -75,5 +77,5 @@
             } else {
                 // Blank out this measurement
-                fluxMask->data.U8[j][i] = 1;
+                fluxMask->data.PS_TYPE_IMAGE_MASK_DATA[j][i] = 1;
                 flux->data.F32[j][i] = NAN;
             }
@@ -90,5 +92,5 @@
         int numFluxes = 0;              // Number of fluxes
         for (int i = 0; i < numExps; i++) {
-            if (expMask->data.U8[i]) {
+            if (expMask->data.PS_TYPE_VECTOR_MASK_DATA[i]) {
                 psTrace("psModules.detrend", 7, "Flux for exposure %d is masked.\n", i);
                 continue;
@@ -98,5 +100,5 @@
             int number = 0;             // Number of chips contributing
             for (int j = 0; j < numChips; j++) {
-                if (!gainMask->data.U8[j] && !fluxMask->data.U8[i][j]) {
+                if (!gainMask->data.PS_TYPE_VECTOR_MASK_DATA[j] && !fluxMask->data.PS_TYPE_IMAGE_MASK_DATA[i][j]) {
                     sum += flux->data.F32[i][j] - chipGains->data.F32[j];
                     number++;
@@ -106,5 +108,5 @@
                 expFluxes->data.F32[i] = sum / (float)number;
             } else {
-                expMask->data.U8[i] = 1;
+                expMask->data.PS_TYPE_VECTOR_MASK_DATA[i] = 1;
                 expFluxes->data.F32[i] = NAN;
             }
@@ -116,5 +118,5 @@
         int numGains = 0;               // Number of gains
         for (int i = 0; i < numChips; i++) {
-            if (gainMask->data.U8[i]) {
+            if (gainMask->data.PS_TYPE_VECTOR_MASK_DATA[i]) {
                 continue;
             }
@@ -122,5 +124,5 @@
             int number = 0;             // Numer of sources contributing
             for (int j = 0; j < numExps; j++) {
-                if (!fluxMask->data.U8[j][i]) {
+                if (!fluxMask->data.PS_TYPE_IMAGE_MASK_DATA[j][i]) {
                     sum += flux->data.F32[j][i] - expFluxes->data.F32[j];
                     number++;
@@ -130,5 +132,5 @@
                 chipGains->data.F32[i] = sum / (float)number;
             } else {
-                gainMask->data.U8[i] = 1;
+                gainMask->data.PS_TYPE_VECTOR_MASK_DATA[i] = 1;
                 chipGains->data.F32[i] = NAN;
             }
@@ -144,5 +146,5 @@
             diff = 0.0;
             for (int i = 0; i < numChips; i++) {
-                if (gainMask->data.U8[i]) {
+                if (gainMask->data.PS_TYPE_VECTOR_MASK_DATA[i]) {
                     continue;
                 }
@@ -151,5 +153,5 @@
             }
             for (int i = 0; i < numExps; i++) {
-                if (expMask->data.U8[i]) {
+                if (expMask->data.PS_TYPE_VECTOR_MASK_DATA[i]) {
                     continue;
                 }
@@ -171,10 +173,10 @@
     // Un-log the vectors
     for (int i = 0; i < numChips; i++) {
-        if (!gainMask->data.U8[i]) {
+        if (!gainMask->data.PS_TYPE_VECTOR_MASK_DATA[i]) {
             chipGains->data.F32[i] = expf(chipGains->data.F32[i]);
         }
     }
     for (int i = 0; i < numExps; i++) {
-        if (!expMask->data.U8[i]) {
+        if (!expMask->data.PS_TYPE_VECTOR_MASK_DATA[i]) {
             expFluxes->data.F32[i] = expf(expFluxes->data.F32[i]);
         }
