Index: trunk/psModules/src/pmSubtractBias.c
===================================================================
--- trunk/psModules/src/pmSubtractBias.c	(revision 2481)
+++ trunk/psModules/src/pmSubtractBias.c	(revision 2777)
@@ -6,6 +6,6 @@
  *  @author George Gusciora, MHPCC
  *
- *  @version $Revision: 1.18 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2004-11-25 02:54:45 $
+ *  @version $Revision: 1.19 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2004-12-21 20:41:29 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -33,5 +33,6 @@
 
     if (bias == NULL) {
-        printf("WARNING: bias frame is NULL\n");
+        psLogMsg(__func__, PS_LOG_WARN,
+                 "WARNING: pmSubtractBias.c: psSubtractFrame(): bias frame is NULL.  Returning original image.\n");
         return(in);
     }
@@ -133,5 +134,6 @@
     }
     if (numOptions != 1) {
-        printf("WARNING: Too many statistics options have been specified\n");
+        psLogMsg(__func__, PS_LOG_WARN,
+                 "WARNING: pmSubtractBias.c: GenNewStatOptions(): Too many statistics options have been specified\n");
     }
     return(opt);
@@ -153,5 +155,7 @@
                               pmFit fit)
 {
-    printf("ScaleOverscanVector(%d)\n", n);
+    psTrace(".psModule.pmSubtracBias.ScaleOverscanVector", 4,
+            "---- ScaleOverscanVector() begin ----\n");
+
     if (NULL == overscanVector) {
         return(overscanVector);
@@ -189,7 +193,9 @@
         }
     } else {
-        psError(PS_ERR_UNKNOWN,true, "unknown fit type\n");
-    }
-
+        psError(PS_ERR_UNKNOWN, true, "unknown fit type\n");
+    }
+
+    psTrace(".psModule.pmSubtracBias.ScaleOverscanVector", 4,
+            "---- ScaleOverscanVector() exit ----\n");
     return(newVec);
 }
@@ -204,4 +210,13 @@
                           const psReadout *bias)
 {
+    psTrace(".psModule.pmSubtracBias.pmSubtractBias", 4,
+            "---- ScaleOverscanVector() begin ----\n");
+    PS_READOUT_CHECK_NULL(in, NULL);
+    PS_READOUT_CHECK_EMPTY(in, NULL);
+    PS_READOUT_CHECK_TYPE(in, PS_TYPE_F32, NULL);
+    if ((overscans == NULL) && (overScanAxis != PM_OVERSCAN_NONE)) {
+        psError(PS_ERR_UNKNOWN,true, "(overscans == NULL) && (overScanAxis != PM_OVERSCAN_NONE)\n");
+        return(in);
+    }
     int i;
     int j;
@@ -218,7 +233,4 @@
     psSpline1D *mySpline;
     int nBin;
-
-    PS_PTR_CHECK_NULL(in,NULL);
-
     //
     //  Determine if multiple options are specified in stat.
@@ -228,7 +240,10 @@
     }
 
-    if ((overscans == NULL) && (overScanAxis != PM_OVERSCAN_NONE)) {
-        psError(PS_ERR_UNKNOWN,true, "(overscans == NULL) && (overScanAxis != PM_OVERSCAN_NONE)\n");
-        return(in);
+    if (overScanAxis == PM_OVERSCAN_NONE) {
+        if (overscans != NULL) {
+            psLogMsg(__func__, PS_LOG_WARN,
+                     "WARNING: pmSubtractBias.(): overScanAxis equals NONE and overscans does not equal NULL\n");
+        }
+        return(psSubtractFrame(in, bias));
     }
 
@@ -236,18 +251,16 @@
             (overScanAxis == PM_OVERSCAN_ALL)) &&
             (fit == PM_FIT_NONE)) {
-        printf("WARNING: overScanAxis equals NONE or ALL, and fit equals NONE\n");
-        //XXX: Then what?
-    }
-
-    if (overScanAxis == PM_OVERSCAN_NONE) {
-        if (overscans != NULL) {
-            printf("WARNING: overScanAxis equals NONE and overscans does not equal NULL\n");
-        }
-        return(psSubtractFrame(in, bias));
-    }
+        psLogMsg(__func__, PS_LOG_WARN,
+                 "WARNING: pmSubtractBias.(): overScanAxis equals NONE or ALL, and fit equals NONE\n");
+    }
+
 
     //
     // We subtract each overscan region from the image data.
     //
+    // XXX: Do we generate a single stat from all the overscan regions, and
+    // subtract that from the input image?  Or do we generate a single stat
+    // from each overscan region, and subtract them from the input image?
+    // The SDR is ambiguous.
     if (overScanAxis == PM_OVERSCAN_ALL) {
         tmpOverscan = (psListElem *) overscans->head;
@@ -286,5 +299,5 @@
                         tmpRow->data.F32[j] = myOverscanImage->data.F32[j][i];
                     }
-                    stat = psVectorStats(stat, tmpRow, NULL, 0);
+                    stat = psVectorStats(stat, tmpRow, NULL, NULL, 0);
                     p_psGetStatValue(stat, &statValue);
                     overscanVector->data.F32[i] = statValue;
@@ -292,5 +305,6 @@
                 psFree(tmpRow);
                 if ((fit == PM_FIT_POLYNOMIAL) || (fit == PM_FIT_SPLINE)) {
-                    psVector *newVec = ScaleOverscanVector(overscanVector, (in->image)->numCols, fitSpec, fit);
+                    psVector *newVec = ScaleOverscanVector(overscanVector,
+                                                           (in->image)->numCols, fitSpec, fit);
                     psFree(overscanVector);
                     overscanVector = newVec;
@@ -310,5 +324,5 @@
                         tmpCol->data.F32[j] = myOverscanImage->data.F32[i][j];
                     }
-                    stat = psVectorStats(stat, tmpCol, NULL, 0);
+                    stat = psVectorStats(stat, tmpCol, NULL, NULL, 0);
                     p_psGetStatValue(stat, &statValue);
                     overscanVector->data.F32[i] = statValue;
@@ -317,5 +331,6 @@
                 psFree(tmpCol);
                 if ((fit == PM_FIT_POLYNOMIAL) || (fit == PM_FIT_SPLINE)) {
-                    psVector *newVec = ScaleOverscanVector(overscanVector, (in->image)->numRows, fitSpec, fit);
+                    psVector *newVec = ScaleOverscanVector(overscanVector,
+                                                           (in->image)->numRows, fitSpec, fit);
                     psFree(overscanVector);
                     overscanVector = newVec;
@@ -342,5 +357,5 @@
                         }
                     }
-                    stat = psVectorStats(stat, binVec, NULL, 0);
+                    stat = psVectorStats(stat, binVec, NULL, NULL, 0);
                     p_psGetStatValue(stat, &statValue);
                     myBin->data.F32[i] = statValue;
@@ -372,5 +387,5 @@
                 } else if (fit == PM_FIT_SPLINE) {
                     mySpline = (psSpline1D *) fitSpec;
-                    // XXX: The spline functions do not currently work if the number of
+                    // XXX: The spline functions do not work if the number of
                     // data points and the number of splines are not equal.
                 }
@@ -404,4 +419,7 @@
 
 
+    psTrace(".psModule.pmSubtracBias.pmSubtractBias", 4,
+            "---- ScaleOverscanVector() exit ----\n");
+
     if (bias != NULL) {
         return(psSubtractFrame(in, bias));
