Index: trunk/psModules/src/imcombine/pmStack.c
===================================================================
--- trunk/psModules/src/imcombine/pmStack.c	(revision 21183)
+++ trunk/psModules/src/imcombine/pmStack.c	(revision 21363)
@@ -8,6 +8,6 @@
  *  @author GLG, MHPCC
  *
- *  @version $Revision: 1.46 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2009-01-27 06:39:38 $
+ *  @version $Revision: 1.47 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2009-02-06 02:31:25 $
  *  Copyright 2004-2007 Institute for Astronomy, University of Hawaii
  *
@@ -30,5 +30,6 @@
 #define PIXEL_LIST_BUFFER 100           // Number of entries to add to pixel list at a time
 #define PIXEL_MAP_BUFFER 2              // Number of entries to add to pixel map at a time
-//#define VARIANCE_FACTORS                // Use variance factors when calculating the variances?
+#define VARIANCE_FACTORS                // Use variance factors when calculating the variances?
+//#define ADD_VARIANCE                  // Allow additional variance (besides variance factor)?
 #define NUM_DIRECT_STDEV 5              // For less than this number of values, measure stdev directly
 
@@ -263,5 +264,5 @@
 
         psImage *image = data->readout->image; // Image of interest
-        psImage *variance = data->readout->weight; // Variance ("weight") map of interest
+        psImage *variance = data->readout->variance; // Variance map of interest
         pixelData->data.F32[num] = image->data.F32[yIn][xIn];
         if (variance) {
@@ -442,9 +443,9 @@
     *numCols = data->readout->image->numCols;
     *numRows = data->readout->image->numRows;
-    if (data->readout->weight) {
+    if (data->readout->variance) {
         *haveVariances = true;
-        PS_ASSERT_IMAGE_NON_NULL(data->readout->weight, false);
-        PS_ASSERT_IMAGES_SIZE_EQUAL(data->readout->image, data->readout->weight, false);
-        PS_ASSERT_IMAGE_TYPE(data->readout->weight, PS_TYPE_F32, false);
+        PS_ASSERT_IMAGE_NON_NULL(data->readout->variance, false);
+        PS_ASSERT_IMAGES_SIZE_EQUAL(data->readout->image, data->readout->variance, false);
+        PS_ASSERT_IMAGE_TYPE(data->readout->variance, PS_TYPE_F32, false);
     }
     *haveRejects = (data->reject != NULL);
@@ -473,7 +474,7 @@
         PS_ASSERT_IMAGES_SIZE_EQUAL(data->readout->image, data->readout->mask, false);
         if (*haveVariances) {
-            PS_ASSERT_IMAGE_NON_NULL(data->readout->weight, false);
-            PS_ASSERT_IMAGES_SIZE_EQUAL(data->readout->image, data->readout->weight, false);
-            PS_ASSERT_IMAGE_TYPE(data->readout->weight, PS_TYPE_F32, false);
+            PS_ASSERT_IMAGE_NON_NULL(data->readout->variance, false);
+            PS_ASSERT_IMAGES_SIZE_EQUAL(data->readout->image, data->readout->variance, false);
+            PS_ASSERT_IMAGE_TYPE(data->readout->variance, PS_TYPE_F32, false);
         }
     }
@@ -606,14 +607,11 @@
         weights->data.F32[i] = data->weight;
         stack->data[i] = psMemIncrRefCounter(data->readout);
-        // Variance factor
-        float vf = psMetadataLookupF32(NULL, data->readout->parent->concepts, "CELL.VARFACTOR"); // Var factor
-        if (!isfinite(vf)) {
-            psWarning("Non-finite CELL.VARFACTOR for image %d --- setting to unity.", i);
-            vf = 1.0;
-        }
-        varFactors->data.F32[i] = vf;
+        varFactors->data.F32[i] = data->readout->covariance ?
+            psImageCovarianceFactor(data->readout->covariance) : 1.0;
+#if 0
         if (isfinite(data->addVariance)) {
             varFactors->data.F32[i] *= data->addVariance;
         }
+#endif
         if (!haveRejects && !data->inspect) {
             data->inspect = psPixelsAllocEmpty(PIXEL_LIST_BUFFER);
@@ -649,5 +647,5 @@
         psImage *combinedImage = combined->image; // Combined image
         psImage *combinedMask = combined->mask; // Combined mask
-        psImage *combinedVariance = combined->weight; // Combined variance map
+        psImage *combinedVariance = combined->variance; // Combined variance map
 
         psArray *pixelMap = pixelMapGenerate(input, minInputCols, maxInputCols,
@@ -702,8 +700,8 @@
         }
 
-        psImage *combinedVariance = combined->weight; // Combined variance map
+        psImage *combinedVariance = combined->variance; // Combined variance map
         if (haveVariances && !combinedVariance) {
-            combined->weight = psImageAlloc(numCols, numRows, PS_TYPE_F32);
-            combinedVariance = combined->weight;
+            combined->variance = psImageAlloc(numCols, numRows, PS_TYPE_F32);
+            combinedVariance = combined->variance;
         }
 
