Index: trunk/ppImage/src/ppImageDetrendCell.c
===================================================================
--- trunk/ppImage/src/ppImageDetrendCell.c	(revision 5858)
+++ trunk/ppImage/src/ppImageDetrendCell.c	(revision 6064)
@@ -1,15 +1,17 @@
 # include "ppImage.h"
+#include "pmFPA.h"
 
 // mask, bias, dark, flat are defined per Cell
 // pedestal is constructed for each readout, which may have different exposure times
 
-pmReadout *ppDetrendSelectFirst (pmCell *cell, char *name, bool doThis) {
+pmReadout *ppDetrendSelectFirst(pmCell *cell, char *name, bool doThis)
+{
 
     if (!doThis) {
-	return NULL;
+        return NULL;
     }
 
     if (cell->readouts->n > 1) {
-	psLogMsg("phase2", PS_LOG_WARN, "%s contains multiple readouts: only the first will be used.", name);
+        psLogMsg("phase2", PS_LOG_WARN, "%s contains multiple readouts: only the first will be used.", name);
     }
 
@@ -19,49 +21,48 @@
 }
 
-bool ppDetrendCell (ppDetrend *detrend, ppOptions *options, ppConfig *config) {
+bool ppDetrendCell(ppDetrend *detrend, ppOptions *options, ppConfig *config)
+{
 
-    pmReadout *mask = ppDetrendSelectFirst (detrend->mask, "mask", options->doMask);
-    pmReadout *bias = ppDetrendSelectFirst (detrend->bias, "bias", options->doBias);
-    pmReadout *dark = ppDetrendSelectFirst (detrend->dark, "dark", options->doDark);
-    // pmReadout *flat = ppDetrendSelectFirst (detrend->flat, "flat", options->doFlat);
+    pmCellSetWeights(detrend->input);
+
+    pmReadout *mask = ppDetrendSelectFirst(detrend->mask, "mask", options->doMask);
+    pmReadout *bias = ppDetrendSelectFirst(detrend->bias, "bias", options->doBias);
+    pmReadout *dark = ppDetrendSelectFirst(detrend->dark, "dark", options->doDark);
+    pmReadout *flat = ppDetrendSelectFirst(detrend->flat, "flat", options->doFlat);
 
     // Dark time for dark image
-    float darkTime = 1.0;       
+    float darkTime = 1.0;
     if (options->doDark) {
-	darkTime = psMetadataLookupF32(NULL, detrend->dark->concepts, "CELL.DARKTIME");
-	if (darkTime <= 0.0) {
-	    psErrorStackPrint(stderr, "DARKTIME for dark image (%f) is non-positive.\n", darkTime);
-	    exit(EXIT_FAILURE);
-	}
+        darkTime = psMetadataLookupF32(NULL, detrend->dark->concepts, "CELL.DARKTIME");
+        if (darkTime <= 0.0) {
+            psErrorStackPrint(stderr, "DARKTIME for dark image (%f) is non-positive.\n", darkTime);
+            exit(EXIT_FAILURE);
+        }
     }
-
-    // the pedestal combines the bias and dark contributions for a single readout
-    pmReadout *pedestal = NULL;
 
     for (int k = 0; k < detrend->input->readouts->n; k++) {
 
-	pmReadout *input = detrend->input->readouts->data[k]; // Readout of interest in input image
+        pmReadout *input = detrend->input->readouts->data[k]; // Readout of interest in input image
 
-	// Mask bad pixels
-	if (options->doMask) {
-	    ppDetrendMask (detrend->input, input, mask);
-	}
+        // Mask bad pixels
+        if (options->doMask) {
+            ppDetrendMask (detrend->input, input, mask);
+        }
 
-	// Non-linearity correction
-	if (options->doNonLin) {
-	    ppDetrendNonLinear (detrend->input, input, options);
-	}
+        // Non-linearity correction
+        if (options->doNonLin) {
+            ppDetrendNonLinear (detrend->input, input, options);
+        }
 
-	// generate the pedestal image (passes through the old pedestal if current exptime == last exptime)
-	pedestal = ppDetrendPedestal (pedestal, detrend->input, bias, dark, darkTime, options);
+        // Bias, dark and overscan subtraction are all merged.
+        ppDetrendBias(input, bias, dark, options);
 
-	// Bias, dark and overscan subtraction are all merged.
-	ppDetrendBias (detrend->input, input, pedestal, options);
-
-	// Flat-field correction (no options used?)
-	if (options->doFlat) {
-	    psLogMsg("phase2", PS_LOG_INFO, "flat field disabled.\n");
-	    // pmFlatField (input, flat);
-	}
+        // Flat-field correction (no options used?)
+        if (options->doFlat) {
+#if 0
+            psLogMsg("phase2", PS_LOG_INFO, "flat field disabled.\n");
+#endif
+            pmFlatField(input, flat);
+        }
     }
     return true;
