Index: /branches/eam_branches/ipp-20110213/psModules/src/objects/models/pmModel_DEV.c
===================================================================
--- /branches/eam_branches/ipp-20110213/psModules/src/objects/models/pmModel_DEV.c	(revision 30973)
+++ /branches/eam_branches/ipp-20110213/psModules/src/objects/models/pmModel_DEV.c	(revision 30974)
@@ -249,5 +249,5 @@
 
     PAR[PM_PAR_SKY]  = 0.0;
-    PAR[PM_PAR_I0]   = peak->flux / Io;
+    PAR[PM_PAR_I0]   = peak->rawFlux / Io;
     PAR[PM_PAR_XPOS] = peak->xf;
     PAR[PM_PAR_YPOS] = peak->yf;
Index: /branches/eam_branches/ipp-20110213/psModules/src/objects/models/pmModel_EXP.c
===================================================================
--- /branches/eam_branches/ipp-20110213/psModules/src/objects/models/pmModel_EXP.c	(revision 30973)
+++ /branches/eam_branches/ipp-20110213/psModules/src/objects/models/pmModel_EXP.c	(revision 30974)
@@ -233,5 +233,5 @@
 
     PAR[PM_PAR_SKY]  = 0.0;
-    PAR[PM_PAR_I0]   = peak->flux;
+    PAR[PM_PAR_I0]   = peak->rawFlux;
     PAR[PM_PAR_XPOS] = peak->xf;
     PAR[PM_PAR_YPOS] = peak->yf;
Index: /branches/eam_branches/ipp-20110213/psModules/src/objects/models/pmModel_GAUSS.c
===================================================================
--- /branches/eam_branches/ipp-20110213/psModules/src/objects/models/pmModel_GAUSS.c	(revision 30973)
+++ /branches/eam_branches/ipp-20110213/psModules/src/objects/models/pmModel_GAUSS.c	(revision 30974)
@@ -207,5 +207,5 @@
 
     PAR[PM_PAR_SKY]  = 0.0;
-    PAR[PM_PAR_I0]   = peak->flux;
+    PAR[PM_PAR_I0]   = peak->rawFlux;
     PAR[PM_PAR_XPOS] = peak->xf;
     PAR[PM_PAR_YPOS] = peak->yf;
Index: /branches/eam_branches/ipp-20110213/psModules/src/objects/models/pmModel_PGAUSS.c
===================================================================
--- /branches/eam_branches/ipp-20110213/psModules/src/objects/models/pmModel_PGAUSS.c	(revision 30973)
+++ /branches/eam_branches/ipp-20110213/psModules/src/objects/models/pmModel_PGAUSS.c	(revision 30974)
@@ -207,5 +207,5 @@
 
     PAR[PM_PAR_SKY]  = 0.0;
-    PAR[PM_PAR_I0]   = peak->flux;
+    PAR[PM_PAR_I0]   = peak->rawFlux;
     PAR[PM_PAR_XPOS] = peak->xf;
     PAR[PM_PAR_YPOS] = peak->yf;
Index: /branches/eam_branches/ipp-20110213/psModules/src/objects/models/pmModel_PS1_V1.c
===================================================================
--- /branches/eam_branches/ipp-20110213/psModules/src/objects/models/pmModel_PS1_V1.c	(revision 30973)
+++ /branches/eam_branches/ipp-20110213/psModules/src/objects/models/pmModel_PS1_V1.c	(revision 30974)
@@ -236,5 +236,5 @@
 
     PAR[PM_PAR_SKY]  = 0.0;
-    PAR[PM_PAR_I0]   = peak->flux;
+    PAR[PM_PAR_I0]   = peak->rawFlux;
     PAR[PM_PAR_XPOS] = peak->xf;
     PAR[PM_PAR_YPOS] = peak->yf;
Index: /branches/eam_branches/ipp-20110213/psModules/src/objects/models/pmModel_QGAUSS.c
===================================================================
--- /branches/eam_branches/ipp-20110213/psModules/src/objects/models/pmModel_QGAUSS.c	(revision 30973)
+++ /branches/eam_branches/ipp-20110213/psModules/src/objects/models/pmModel_QGAUSS.c	(revision 30974)
@@ -237,5 +237,5 @@
 
     PAR[PM_PAR_SKY]  = 0.0;
-    PAR[PM_PAR_I0]   = peak->flux;
+    PAR[PM_PAR_I0]   = peak->rawFlux;
     PAR[PM_PAR_XPOS] = peak->xf;
     PAR[PM_PAR_YPOS] = peak->yf;
Index: /branches/eam_branches/ipp-20110213/psModules/src/objects/models/pmModel_RGAUSS.c
===================================================================
--- /branches/eam_branches/ipp-20110213/psModules/src/objects/models/pmModel_RGAUSS.c	(revision 30973)
+++ /branches/eam_branches/ipp-20110213/psModules/src/objects/models/pmModel_RGAUSS.c	(revision 30974)
@@ -226,5 +226,5 @@
 
     PAR[PM_PAR_SKY]  = 0.0;
-    PAR[PM_PAR_I0]   = peak->flux;
+    PAR[PM_PAR_I0]   = peak->rawFlux;
     PAR[PM_PAR_XPOS] = peak->xf;
     PAR[PM_PAR_YPOS] = peak->yf;
Index: /branches/eam_branches/ipp-20110213/psModules/src/objects/models/pmModel_SERSIC.c
===================================================================
--- /branches/eam_branches/ipp-20110213/psModules/src/objects/models/pmModel_SERSIC.c	(revision 30973)
+++ /branches/eam_branches/ipp-20110213/psModules/src/objects/models/pmModel_SERSIC.c	(revision 30974)
@@ -274,5 +274,5 @@
 
     PAR[PM_PAR_SKY]  = 0.0;
-    PAR[PM_PAR_I0]   = peak->flux / Io;
+    PAR[PM_PAR_I0]   = peak->rawFlux / Io;
     PAR[PM_PAR_XPOS] = peak->xf;
     PAR[PM_PAR_YPOS] = peak->yf;
Index: /branches/eam_branches/ipp-20110213/psModules/src/objects/pmFootprint.c
===================================================================
--- /branches/eam_branches/ipp-20110213/psModules/src/objects/pmFootprint.c	(revision 30973)
+++ /branches/eam_branches/ipp-20110213/psModules/src/objects/pmFootprint.c	(revision 30974)
@@ -98,7 +98,12 @@
 }
 
+// XXX not actually used anywhere
 pmFootprint *pmFootprintNormalize(pmFootprint *fp) {
     if (fp != NULL && !fp->normalized) {
-	fp->peaks = psArraySort(fp->peaks, pmPeakSortBySN);
+	if (PM_PEAKS_CULL_WITH_SMOOTHED_IMAGE) {
+	    fp->peaks = psArraySort(fp->peaks, pmPeaksSortBySmoothFluxDescend);
+	} else {
+	    fp->peaks = psArraySort(fp->peaks, pmPeaksSortByRawFluxDescend);
+	}
 	fp->normalized = true;
     }
Index: /branches/eam_branches/ipp-20110213/psModules/src/objects/pmFootprint.h
===================================================================
--- /branches/eam_branches/ipp-20110213/psModules/src/objects/pmFootprint.h	(revision 30973)
+++ /branches/eam_branches/ipp-20110213/psModules/src/objects/pmFootprint.h	(revision 30974)
@@ -10,4 +10,10 @@
 #ifndef PM_FOOTPRINT_H
 #define PM_FOOTPRINT_H
+
+// We need to choose up front if the culling algorithm uses the raw or smoothed image.
+// depending on which we choose, we should produce sorted peaks based on peak->rawFlux or
+// peak->smoothFlux
+
+# define PM_PEAKS_CULL_WITH_SMOOTHED_IMAGE 1
 
 typedef struct {
Index: /branches/eam_branches/ipp-20110213/psModules/src/objects/pmFootprintAssignPeaks.c
===================================================================
--- /branches/eam_branches/ipp-20110213/psModules/src/objects/pmFootprintAssignPeaks.c	(revision 30973)
+++ /branches/eam_branches/ipp-20110213/psModules/src/objects/pmFootprintAssignPeaks.c	(revision 30974)
@@ -60,4 +60,5 @@
 	if (ids) { assert (x >= 0 && x < numCols && y >= 0 && y < numRows);}
 	int id = ids ? ids->data.S32[y][x - col0] : 0;
+	// XXX I think the '[x - col0]' above is just wrong (should be [x], but never gets triggerd.
 
 	if (id == 0) {			// peak isn't in a footprint, so make one for it
@@ -86,5 +87,10 @@
 	if (fp->peaks->n == 1) continue;
 
-        fp->peaks = psArraySort(fp->peaks, pmPeakSortBySN);
+	// make sure the peaks are sorted in a way consistent with our cull process
+	if (PM_PEAKS_CULL_WITH_SMOOTHED_IMAGE) {
+	    fp->peaks = psArraySort(fp->peaks, pmPeaksSortBySmoothFluxDescend);
+	} else {
+	    fp->peaks = psArraySort(fp->peaks, pmPeaksSortByRawFluxDescend);
+	}
 
 	// XXX check for an assert on duplicates (I don't think they can happen, but
Index: /branches/eam_branches/ipp-20110213/psModules/src/objects/pmPeaks.c
===================================================================
--- /branches/eam_branches/ipp-20110213/psModules/src/objects/pmPeaks.c	(revision 30973)
+++ /branches/eam_branches/ipp-20110213/psModules/src/objects/pmPeaks.c	(revision 30974)
@@ -115,4 +115,5 @@
 XXX: Macro this.
 *****************************************************************************/
+# if (0)
 static bool isItInThisRegion(const psRegion valid,
                              psS32 x,
@@ -130,4 +131,5 @@
     return(false);
 }
+# endif
 
 /******************************************************************************
@@ -148,7 +150,10 @@
     tmp->x = x;
     tmp->y = y;
-    tmp->value = value;
-    tmp->flux = value;
-    tmp->SN = 0;
+    tmp->detValue      	 = value;
+    tmp->rawFlux       	 = NAN;
+    tmp->rawFluxStdev  	 = NAN;
+    tmp->smoothFlux    	 = NAN;
+    tmp->smoothFluxStdev = NAN;
+    // tmp->SN = 0;
     tmp->xf = x;
     tmp->yf = y;
@@ -170,9 +175,8 @@
 
 
-// psSort comparison function for peaks
+// psSort comparison functions for peaks
 // XXX: Add error-checking for NULL args
-int pmPeaksCompareAscend (const void **a, const void **b)
-{
-    psTrace("psModules.objects", 10, "---- %s() begin ----\n", __func__);
+int pmPeaksSortByDetValueAscend (const void **a, const void **b)
+{
     pmPeak *A = *(pmPeak **)a;
     pmPeak *B = *(pmPeak **)b;
@@ -180,21 +184,14 @@
     psF32 diff;
 
-    diff = A->value - B->value;
+    diff = A->detValue - B->detValue;
     if (diff < FLT_EPSILON) {
-        psTrace("psModules.objects", 10, "---- %s(-1) end ----\n", __func__);
         return (-1);
     } else if (diff > FLT_EPSILON) {
-        psTrace("psModules.objects", 10, "---- %s(+1) end ----\n", __func__);
         return (+1);
     }
-    psTrace("psModules.objects", 10, "---- %s(0) end ----\n", __func__);
     return (0);
 }
-
-// psSort comparison function for peaks
-// XXX: Add error-checking for NULL args
-int pmPeaksCompareDescend (const void **a, const void **b)
-{
-    psTrace("psModules.objects", 10, "---- %s() begin ----\n", __func__);
+int pmPeaksSortByDetValueDescend (const void **a, const void **b)
+{
     pmPeak *A = *(pmPeak **)a;
     pmPeak *B = *(pmPeak **)b;
@@ -202,47 +199,104 @@
     psF32 diff;
 
-    diff = A->value - B->value;
+    diff = A->detValue - B->detValue;
     if (diff < FLT_EPSILON) {
-        psTrace("psModules.objects", 10, "---- %s(+1) end ----\n", __func__);
         return (+1);
     } else if (diff > FLT_EPSILON) {
-        psTrace("psModules.objects", 10, "---- %s(-1) end ----\n", __func__);
         return (-1);
     }
-    psTrace("psModules.objects", 10, "---- %s(0) end ----\n", __func__);
     return (0);
 }
-
-// sort by SN (descending)
-int pmPeakSortBySN (const void **a, const void **b)
+int pmPeaksSortByRawFluxAscend (const void **a, const void **b)
 {
     pmPeak *A = *(pmPeak **)a;
     pmPeak *B = *(pmPeak **)b;
 
-    psF32 fA = A->flux;
-    psF32 fB = B->flux;
-    if (isnan (fA)) fA = 0;
-    if (isnan (fB)) fB = 0;
-
-    psF32 diff = fA - fB;
-    if (diff > FLT_EPSILON) return (-1);
-    if (diff < FLT_EPSILON) return (+1);
+    psF32 diff;
+
+    diff = A->rawFlux - B->rawFlux;
+    if (diff < FLT_EPSILON) {
+        return (-1);
+    } else if (diff > FLT_EPSILON) {
+        return (+1);
+    }
     return (0);
 }
-
-// sort by Y (ascending)
-int pmPeakSortByY (const void **a, const void **b)
+int pmPeaksSortByRawFluxDescend (const void **a, const void **b)
 {
     pmPeak *A = *(pmPeak **)a;
     pmPeak *B = *(pmPeak **)b;
 
-    psF32 fA = A->y;
-    psF32 fB = B->y;
-
-    psF32 diff = fA - fB;
-    if (diff > FLT_EPSILON) return (+1);
-    if (diff < FLT_EPSILON) return (-1);
+    psF32 diff;
+
+    diff = A->rawFlux - B->rawFlux;
+    if (diff < FLT_EPSILON) {
+        return (+1);
+    } else if (diff > FLT_EPSILON) {
+        return (-1);
+    }
     return (0);
 }
+int pmPeaksSortBySmoothFluxAscend (const void **a, const void **b)
+{
+    pmPeak *A = *(pmPeak **)a;
+    pmPeak *B = *(pmPeak **)b;
+
+    psF32 diff;
+
+    diff = A->smoothFlux - B->smoothFlux;
+    if (diff < FLT_EPSILON) {
+        return (-1);
+    } else if (diff > FLT_EPSILON) {
+        return (+1);
+    }
+    return (0);
+}
+int pmPeaksSortBySmoothFluxDescend (const void **a, const void **b)
+{
+    pmPeak *A = *(pmPeak **)a;
+    pmPeak *B = *(pmPeak **)b;
+
+    psF32 diff;
+
+    diff = A->smoothFlux - B->smoothFlux;
+    if (diff < FLT_EPSILON) {
+        return (+1);
+    } else if (diff > FLT_EPSILON) {
+        return (-1);
+    }
+    return (0);
+}
+
+// // sort by SN (descending)
+// int pmPeakSortBySN (const void **a, const void **b)
+// {
+//     pmPeak *A = *(pmPeak **)a;
+//     pmPeak *B = *(pmPeak **)b;
+// 
+//     psF32 fA = A->flux;
+//     psF32 fB = B->flux;
+//     if (isnan (fA)) fA = 0;
+//     if (isnan (fB)) fB = 0;
+// 
+//     psF32 diff = fA - fB;
+//     if (diff > FLT_EPSILON) return (-1);
+//     if (diff < FLT_EPSILON) return (+1);
+//     return (0);
+// }
+// 
+// // sort by Y (ascending)
+// int pmPeakSortByY (const void **a, const void **b)
+// {
+//     pmPeak *A = *(pmPeak **)a;
+//     pmPeak *B = *(pmPeak **)b;
+// 
+//     psF32 fA = A->y;
+//     psF32 fB = B->y;
+// 
+//     psF32 diff = fA - fB;
+//     if (diff > FLT_EPSILON) return (+1);
+//     if (diff < FLT_EPSILON) return (-1);
+//     return (0);
+// }
 
 /******************************************************************************
@@ -554,28 +608,2 @@
     return(list);
 }
-
-// return a new array of peaks which are in the valid region and below threshold
-// XXX this function is unused and probably could be dropped
-psArray *pmPeaksSubset(
-    psArray *peaks,
-    psF32 maxValue,
-    const psRegion valid)
-{
-    psTrace("psModules.objects", 10, "---- %s() begin ----\n", __func__);
-    PS_ASSERT_PTR_NON_NULL(peaks, NULL);
-
-    psArray *output = psArrayAllocEmpty (200);
-
-    psTrace ("psModules.objects", 3, "list size is %ld\n", peaks->n);
-
-    for (int i = 0; i < peaks->n; i++) {
-        pmPeak *tmpPeak = (pmPeak *) peaks->data[i];
-        if (tmpPeak->value > maxValue)
-            continue;
-        if (isItInThisRegion(valid, tmpPeak->x, tmpPeak->y))
-            continue;
-        psArrayAdd (output, 200, tmpPeak);
-    }
-    psTrace("psModules.objects", 10, "---- %s() end ----\n", __func__);
-    return(output);
-}
Index: /branches/eam_branches/ipp-20110213/psModules/src/objects/pmPeaks.h
===================================================================
--- /branches/eam_branches/ipp-20110213/psModules/src/objects/pmPeaks.h	(revision 30973)
+++ /branches/eam_branches/ipp-20110213/psModules/src/objects/pmPeaks.h	(revision 30974)
@@ -46,4 +46,12 @@
  *  associated with the source:
  *
+ *  There are 3 values which define the amplitude of the peak and which may be used to sort the
+ *  peaks: 
+ *  * detValue - the peak in the detection image (nominally, the S/N)
+ *  * rawFlux - the peak in the unsmoothed image
+ *  * smoothFlux - the peak in the smoothed image
+ * 
+ *  For a given image, peaks do necesarily not have the same sequence for these three values.
+ *  Depending on the analysis, it may make sense to sort by one or the other of these values
  */
 typedef struct
@@ -56,7 +64,10 @@
     float dx;                           ///< bicube fit error on peak coord (x)
     float dy;                           ///< bicube fit error on peak coord (y)
-    float value;                        ///< level in detection image
-    float flux;                         ///< level in unsmoothed sci image
-    float SN;                           ///< S/N implied by detection level
+    float detValue;                     ///< peak flux in detection image (= S/N)
+    float rawFlux;                      ///< peak flux in unsmoothed signal image
+    float rawFluxStdev;                 ///< peak stdev in unsmoothed signal image
+    float smoothFlux;                   ///< peak flux in smoothed signal image
+    float smoothFluxStdev;              ///< peak stdev in smoothed signal image
+    // float SNestimated;                  ///< S/N estimated from the detection image
     bool assigned;                      ///< is peak assigned to a source?
     pmPeakType type;                    ///< Description of peak.
@@ -137,9 +148,10 @@
 );
 
-int pmPeaksCompareAscend (const void **a, const void **b);
-int pmPeaksCompareDescend (const void **a, const void **b);
-
-int pmPeakSortBySN (const void **a, const void **b);
-int pmPeakSortByY (const void **a, const void **b);
+int pmPeaksSortByDetValueAscend (const void **a, const void **b);
+int pmPeaksSortByDetValueDescend (const void **a, const void **b);
+int pmPeaksSortByRawFluxAscend (const void **a, const void **b);
+int pmPeaksSortByRawFluxDescend (const void **a, const void **b);
+int pmPeaksSortBySmoothFluxAscend (const void **a, const void **b);
+int pmPeaksSortBySmoothFluxDescend (const void **a, const void **b);
 
 /// @}
Index: /branches/eam_branches/ipp-20110213/psModules/src/objects/pmPhotObj.c
===================================================================
--- /branches/eam_branches/ipp-20110213/psModules/src/objects/pmPhotObj.c	(revision 30973)
+++ /branches/eam_branches/ipp-20110213/psModules/src/objects/pmPhotObj.c	(revision 30974)
@@ -81,7 +81,7 @@
 	object->x  = source->peak->xf;
 	object->y  = source->peak->yf;
-	object->SN = source->peak->SN;
+	object->flux = source->peak->rawFlux;
     } else {
-	object->SN = PS_MAX(object->SN, source->peak->SN);
+	object->flux = PS_MAX(object->flux, source->peak->rawFlux);
     }
     psArrayAdd (object->sources, 1, source);
@@ -89,12 +89,12 @@
 }
 
-// sort by SN (descending)
-int pmPhotObjSortBySN (const void **a, const void **b)
+// sort by flux (descending)
+int pmPhotObjSortByFlux (const void **a, const void **b)
 {
     pmPhotObj *objA = *(pmPhotObj **)a;
     pmPhotObj *objB = *(pmPhotObj **)b;
 
-    psF32 fA = objA->SN;
-    psF32 fB = objB->SN;
+    psF32 fA = objA->flux;
+    psF32 fB = objB->flux;
 
     psF32 diff = fA - fB;
Index: /branches/eam_branches/ipp-20110213/psModules/src/objects/pmPhotObj.h
===================================================================
--- /branches/eam_branches/ipp-20110213/psModules/src/objects/pmPhotObj.h	(revision 30973)
+++ /branches/eam_branches/ipp-20110213/psModules/src/objects/pmPhotObj.h	(revision 30974)
@@ -34,5 +34,5 @@
     float x;
     float y;
-    float SN;				// max of peak->SN for all matched sources
+    float flux;				// max of peak->rawFlux for all matched sources
 } pmPhotObj;
 
@@ -41,5 +41,5 @@
 bool pmPhotObjAddSource(pmPhotObj *object, pmSource *source);
 
-int pmPhotObjSortBySN (const void **a, const void **b);
+int pmPhotObjSortByFlux (const void **a, const void **b);
 int pmPhotObjSortByX (const void **a, const void **b);
 
Index: /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSource.c
===================================================================
--- /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSource.c	(revision 30973)
+++ /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSource.c	(revision 30974)
@@ -171,9 +171,12 @@
     // peak has the same values as the original
     if (in->peak != NULL) {
-        source->peak = pmPeakAlloc (in->peak->x, in->peak->y, in->peak->value, in->peak->type);
+        source->peak = pmPeakAlloc (in->peak->x, in->peak->y, in->peak->detValue, in->peak->type);
         source->peak->xf = in->peak->xf;
         source->peak->yf = in->peak->yf;
-        source->peak->flux = in->peak->flux;
-        source->peak->SN = in->peak->SN;
+        source->peak->rawFlux         = in->peak->rawFlux;
+        source->peak->rawFluxStdev    = in->peak->rawFluxStdev;
+        source->peak->smoothFlux      = in->peak->smoothFlux;
+        source->peak->smoothFluxStdev = in->peak->smoothFluxStdev;
+        // source->peak->SN = in->peak->SN;
     }
 
@@ -462,13 +465,13 @@
         psStats *stats  = NULL;
 
-        // select the single highest peak
-        psArraySort (peaks, pmPeaksCompareDescend);
+        // select the single highest peak (note that we only have detValue, not rawFlux, etc
+        psArraySort (peaks, pmPeaksSortByDetValueDescend);
         clump = peaks->data[0];
-        psTrace ("psModules.objects", 2, "clump is at %d, %d (%f)\n", clump->x, clump->y, clump->value);
+        psTrace ("psModules.objects", 2, "clump is at %d, %d (%f)\n", clump->x, clump->y, clump->detValue);
 
 	// XXX store the mean sigma?
 	float meanSigma = psfClump.nSigma;
-	psfClump.nStars = clump->value;
-	psfClump.nSigma = clump->value / meanSigma;
+	psfClump.nStars = clump->detValue;
+	psfClump.nSigma = clump->detValue / meanSigma;
 
         // define section window for clump
@@ -666,7 +669,8 @@
 
             // the rest are probable stellar objects
+	    // the vectors below are accumulated to give user feedback on the S/N ranges
             starsn_moments->data.F32[starsn_moments->n] = source->moments->SN;
             starsn_moments->n ++;
-            starsn_peaks->data.F32[starsn_peaks->n] = source->peak->SN;
+            starsn_peaks->data.F32[starsn_peaks->n] = sqrt(source->peak->detValue);
             starsn_peaks->n ++;
             Nstar ++;
@@ -1186,11 +1190,11 @@
 
 // sort by SN (descending)
-int pmSourceSortBySN (const void **a, const void **b)
+int pmSourceSortByFlux (const void **a, const void **b)
 {
     pmSource *A = *(pmSource **)a;
     pmSource *B = *(pmSource **)b;
 
-    psF32 fA = (A->peak == NULL) ? 0 : A->peak->SN;
-    psF32 fB = (B->peak == NULL) ? 0 : B->peak->SN;
+    psF32 fA = (A->peak == NULL) ? 0 : A->peak->rawFlux;
+    psF32 fB = (B->peak == NULL) ? 0 : B->peak->rawFlux;
     if (isnan (fA)) fA = 0;
     if (isnan (fB)) fB = 0;
@@ -1203,5 +1207,5 @@
 
 // sort by SN (descending)
-int pmSourceSortByParentSN (const void **a, const void **b)
+int pmSourceSortByParentFlux (const void **a, const void **b)
 {
     pmSource *Ao = *(pmSource **)a;
@@ -1210,6 +1214,6 @@
     pmSource *B  = Bo->parent;
 
-    psF32 fA = (A->peak == NULL) ? 0 : A->peak->SN;
-    psF32 fB = (B->peak == NULL) ? 0 : B->peak->SN;
+    psF32 fA = (A->peak == NULL) ? 0 : A->peak->rawFlux;
+    psF32 fB = (B->peak == NULL) ? 0 : B->peak->rawFlux;
     if (isnan (fA)) fA = 0;
     if (isnan (fB)) fB = 0;
Index: /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSource.h
===================================================================
--- /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSource.h	(revision 30973)
+++ /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSource.h	(revision 30974)
@@ -293,6 +293,6 @@
 int  pmSourceSortBySeq (const void **a, const void **b);
 int  pmSourceSortByParentSeq (const void **a, const void **b);
-int  pmSourceSortBySN (const void **a, const void **b);
-int  pmSourceSortByParentSN (const void **a, const void **b);
+int  pmSourceSortByFlux (const void **a, const void **b);
+int  pmSourceSortByParentFlux (const void **a, const void **b);
 
 pmSourceMode pmSourceModeFromString (const char *name);
Index: /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceIO_CMF_PS1_DV1.c
===================================================================
--- /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceIO_CMF_PS1_DV1.c	(revision 30973)
+++ /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceIO_CMF_PS1_DV1.c	(revision 30974)
@@ -75,5 +75,5 @@
         if (source->seq == -1) {
           // let's write these out in S/N order
-          sources = psArraySort (sources, pmSourceSortBySN);
+          sources = psArraySort (sources, pmSourceSortByFlux);
         } else {
           sources = psArraySort (sources, pmSourceSortBySeq);
@@ -270,14 +270,10 @@
         // recreate the peak to match (xPos, yPos) +/- (xErr, yErr)
         source->peak = pmPeakAlloc(PAR[PM_PAR_XPOS], PAR[PM_PAR_YPOS], peakFlux, PM_PEAK_LONE);
-        source->peak->flux = peakFlux;
+        source->peak->rawFlux = peakFlux;
+        source->peak->smoothFlux = peakFlux;
         source->peak->xf   = PAR[PM_PAR_XPOS]; // more accurate position
         source->peak->yf   = PAR[PM_PAR_YPOS]; // more accurate position
         source->peak->dx   = dPAR[PM_PAR_XPOS];
         source->peak->dy   = dPAR[PM_PAR_YPOS];
-        if (isfinite (source->errMag) && (source->errMag > 0.0)) {
-          source->peak->SN = 1.0 / source->errMag;
-        } else {
-          source->peak->SN = sqrt(source->peak->flux); // an alternate proxy: various functions sort by peak S/N
-        }
 
         source->pixWeightNotBad = psMetadataLookupF32 (&status, row, "PSF_QF");
@@ -337,5 +333,5 @@
 
     // let's write these out in S/N order
-    sources = psArraySort (sources, pmSourceSortBySN);
+    sources = psArraySort (sources, pmSourceSortByFlux);
 
     table = psArrayAllocEmpty (sources->n);
@@ -510,5 +506,5 @@
 
     // let's write these out in S/N order
-    sources = psArraySort (sources, pmSourceSortBySN);
+    sources = psArraySort (sources, pmSourceSortByFlux);
 
     // we are writing one row per model; we need to write out same number of columns for each row: find the max Nparams
Index: /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceIO_CMF_PS1_DV2.c
===================================================================
--- /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceIO_CMF_PS1_DV2.c	(revision 30973)
+++ /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceIO_CMF_PS1_DV2.c	(revision 30974)
@@ -74,5 +74,5 @@
         if (source->seq == -1) {
           // let's write these out in S/N order
-          sources = psArraySort (sources, pmSourceSortBySN);
+          sources = psArraySort (sources, pmSourceSortByFlux);
         } else {
           sources = psArraySort (sources, pmSourceSortBySeq);
@@ -288,14 +288,10 @@
         // recreate the peak to match (xPos, yPos) +/- (xErr, yErr)
         source->peak = pmPeakAlloc(PAR[PM_PAR_XPOS], PAR[PM_PAR_YPOS], peakFlux, PM_PEAK_LONE);
-        source->peak->flux = peakFlux;
+        source->peak->rawFlux = peakFlux;
+        source->peak->smoothFlux = peakFlux;
         source->peak->xf   = PAR[PM_PAR_XPOS]; // more accurate position
         source->peak->yf   = PAR[PM_PAR_YPOS]; // more accurate position
         source->peak->dx   = dPAR[PM_PAR_XPOS];
         source->peak->dy   = dPAR[PM_PAR_YPOS];
-        if (isfinite (source->errMag) && (source->errMag > 0.0)) {
-          source->peak->SN = 1.0 / source->errMag;
-        } else {
-          source->peak->SN = sqrt(source->peak->flux); // an alternate proxy: various functions sort by peak S/N
-        }
 
         source->pixWeightNotBad = psMetadataLookupF32 (&status, row, "PSF_QF");
@@ -362,5 +358,5 @@
 
     // let's write these out in S/N order
-    sources = psArraySort (sources, pmSourceSortBySN);
+    sources = psArraySort (sources, pmSourceSortByFlux);
 
     table = psArrayAllocEmpty (sources->n);
@@ -535,5 +531,5 @@
 
     // let's write these out in S/N order
-    sources = psArraySort (sources, pmSourceSortBySN);
+    sources = psArraySort (sources, pmSourceSortByFlux);
 
     // we are writing one row per model; we need to write out same number of columns for each row: find the max Nparams
Index: /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceIO_CMF_PS1_SV1.c
===================================================================
--- /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceIO_CMF_PS1_SV1.c	(revision 30973)
+++ /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceIO_CMF_PS1_SV1.c	(revision 30974)
@@ -76,5 +76,5 @@
         pmSource *source = sources->data[0];
         if (source->seq == -1) {
-	    sources = psArraySort (sources, pmSourceSortBySN);
+	    sources = psArraySort (sources, pmSourceSortByFlux);
         } else {
 	    sources = psArraySort (sources, pmSourceSortBySeq);
@@ -287,14 +287,10 @@
         // recreate the peak to match (xPos, yPos) +/- (xErr, yErr)
         source->peak = pmPeakAlloc(PAR[PM_PAR_XPOS], PAR[PM_PAR_YPOS], peakFlux, PM_PEAK_LONE);
-        source->peak->flux = peakFlux;
+        source->peak->rawFlux = peakFlux;
+        source->peak->smoothFlux = peakFlux;
         source->peak->xf   = PAR[PM_PAR_XPOS]; // more accurate position
         source->peak->yf   = PAR[PM_PAR_YPOS]; // more accurate position
         source->peak->dx   = dPAR[PM_PAR_XPOS];
         source->peak->dy   = dPAR[PM_PAR_YPOS];
-        if (isfinite (source->errMag) && (source->errMag > 0.0)) {
-          source->peak->SN = 1.0 / source->errMag;
-        } else {
-          source->peak->SN = sqrt(source->peak->flux); // an alternate proxy: various functions sort by peak S/N
-        }
 
         source->pixWeightNotBad = psMetadataLookupF32 (&status, row, "PSF_QF");
@@ -384,5 +380,5 @@
 
     // let's write these out in S/N order
-    sources = psArraySort (sources, pmSourceSortBySN);
+    sources = psArraySort (sources, pmSourceSortByFlux);
 
     table = psArrayAllocEmpty (sources->n);
@@ -562,5 +558,5 @@
 
     // let's write these out in S/N order
-    sources = psArraySort (sources, pmSourceSortBySN);
+    sources = psArraySort (sources, pmSourceSortByFlux);
 
     // we are writing one row per model; we need to write out same number of columns for each row: find the max Nparams
@@ -732,5 +728,5 @@
 
     // let's write these out in S/N order
-    sources = psArraySort (sources, pmSourceSortBySN);
+    sources = psArraySort (sources, pmSourceSortByFlux);
 
     table = psArrayAllocEmpty (sources->n);
Index: /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceIO_CMF_PS1_V1.c
===================================================================
--- /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceIO_CMF_PS1_V1.c	(revision 30973)
+++ /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceIO_CMF_PS1_V1.c	(revision 30974)
@@ -72,5 +72,5 @@
         if (source->seq == -1) {
           // let's write these out in S/N order
-          sources = psArraySort (sources, pmSourceSortBySN);
+          sources = psArraySort (sources, pmSourceSortByFlux);
         } else {
           sources = psArraySort (sources, pmSourceSortBySeq);
@@ -255,14 +255,10 @@
         // recreate the peak to match (xPos, yPos) +/- (xErr, yErr)
         source->peak = pmPeakAlloc(PAR[PM_PAR_XPOS], PAR[PM_PAR_YPOS], peakFlux, PM_PEAK_LONE);
-        source->peak->flux = peakFlux;
+        source->peak->rawFlux = peakFlux;
+        source->peak->smoothFlux = peakFlux;
         source->peak->xf   = PAR[PM_PAR_XPOS]; // more accurate position
         source->peak->yf   = PAR[PM_PAR_YPOS]; // more accurate position
         source->peak->dx   = dPAR[PM_PAR_XPOS];
         source->peak->dy   = dPAR[PM_PAR_YPOS];
-        if (isfinite (source->errMag) && (source->errMag > 0.0)) {
-          source->peak->SN = 1.0 / source->errMag;
-        } else {
-          source->peak->SN = sqrt(source->peak->flux); // an alternate proxy: various functions sort by peak S/N
-        }
 
         source->pixWeightNotBad = psMetadataLookupF32 (&status, row, "PSF_QF");
@@ -312,5 +308,5 @@
 
     // let's write these out in S/N order
-    sources = psArraySort (sources, pmSourceSortBySN);
+    sources = psArraySort (sources, pmSourceSortByFlux);
 
     table = psArrayAllocEmpty (sources->n);
@@ -490,5 +486,5 @@
 
     // let's write these out in S/N order
-    sources = psArraySort (sources, pmSourceSortBySN);
+    sources = psArraySort (sources, pmSourceSortByFlux);
 
     // we are writing one row per model; we need to write out same number of columns for each row: find the max Nparams
Index: /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceIO_CMF_PS1_V2.c
===================================================================
--- /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceIO_CMF_PS1_V2.c	(revision 30973)
+++ /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceIO_CMF_PS1_V2.c	(revision 30974)
@@ -72,5 +72,5 @@
         if (source->seq == -1) {
 	    // let's write these out in S/N order
-	    sources = psArraySort (sources, pmSourceSortBySN);
+	    sources = psArraySort (sources, pmSourceSortByFlux);
         } else {
 	    sources = psArraySort (sources, pmSourceSortBySeq);
@@ -261,14 +261,10 @@
         // recreate the peak to match (xPos, yPos) +/- (xErr, yErr)
         source->peak = pmPeakAlloc(PAR[PM_PAR_XPOS], PAR[PM_PAR_YPOS], peakFlux, PM_PEAK_LONE);
-        source->peak->flux = peakFlux;
+        source->peak->rawFlux = peakFlux;
+        source->peak->smoothFlux = peakFlux;
         source->peak->xf   = PAR[PM_PAR_XPOS]; // more accurate position
         source->peak->yf   = PAR[PM_PAR_YPOS]; // more accurate position
         source->peak->dx   = dPAR[PM_PAR_XPOS];
         source->peak->dy   = dPAR[PM_PAR_YPOS];
-        if (isfinite (source->errMag) && (source->errMag > 0.0)) {
-          source->peak->SN = 1.0 / source->errMag;
-        } else {
-          source->peak->SN = sqrt(source->peak->flux); // an alternate proxy: various functions sort by peak S/N
-        }
 
         source->pixWeightNotBad = psMetadataLookupF32 (&status, row, "PSF_QF");
@@ -334,5 +330,5 @@
 
     // let's write these out in S/N order
-    sources = psArraySort (sources, pmSourceSortBySN);
+    sources = psArraySort (sources, pmSourceSortByFlux);
 
     table = psArrayAllocEmpty (sources->n);
@@ -553,5 +549,5 @@
 
     // let's write these out in S/N order
-    sources = psArraySort (sources, pmSourceSortBySN);
+    sources = psArraySort (sources, pmSourceSortByFlux);
 
     // we are writing one row per model; we need to write out same number of columns for each row: find the max Nparams
Index: /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceIO_CMF_PS1_V3.c
===================================================================
--- /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceIO_CMF_PS1_V3.c	(revision 30973)
+++ /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceIO_CMF_PS1_V3.c	(revision 30974)
@@ -72,5 +72,5 @@
         if (source->seq == -1) {
 	    // let's write these out in S/N order
-	    sources = psArraySort (sources, pmSourceSortBySN);
+	    sources = psArraySort (sources, pmSourceSortByFlux);
         } else {
 	    sources = psArraySort (sources, pmSourceSortBySeq);
@@ -284,14 +284,17 @@
         // recreate the peak to match (xPos, yPos) +/- (xErr, yErr)
         source->peak = pmPeakAlloc(PAR[PM_PAR_XPOS], PAR[PM_PAR_YPOS], peakFlux, PM_PEAK_LONE);
-        source->peak->flux = peakFlux;
+        source->peak->rawFlux = peakFlux;
+        source->peak->smoothFlux = peakFlux;
         source->peak->xf   = PAR[PM_PAR_XPOS]; // more accurate position
         source->peak->yf   = PAR[PM_PAR_YPOS]; // more accurate position
         source->peak->dx   = dPAR[PM_PAR_XPOS];
         source->peak->dy   = dPAR[PM_PAR_YPOS];
-        if (isfinite (source->errMag) && (source->errMag > 0.0)) {
-          source->peak->SN = 1.0 / source->errMag;
-        } else {
-          source->peak->SN = sqrt(source->peak->flux); // an alternate proxy: various functions sort by peak S/N
-        }
+
+	// we no longer sort by S/N, only flux
+        // if (isfinite (source->errMag) && (source->errMag > 0.0)) {
+        //   source->peak->SN = 1.0 / source->errMag;
+        // } else {
+        //   source->peak->SN = sqrt(source->peak->flux); // an alternate proxy: various functions sort by peak S/N
+        // }
 
         source->pixWeightNotBad = psMetadataLookupF32 (&status, row, "PSF_QF");
@@ -380,5 +383,5 @@
 
     // let's write these out in S/N order
-    sources = psArraySort (sources, pmSourceSortBySN);
+    sources = psArraySort (sources, pmSourceSortByFlux);
 
     table = psArrayAllocEmpty (sources->n);
@@ -552,5 +555,5 @@
 
     // let's write these out in S/N order
-    sources = psArraySort (sources, pmSourceSortBySN);
+    sources = psArraySort (sources, pmSourceSortByFlux);
 
     // we are writing one row per model; we need to write out same number of columns for each row: find the max Nparams
Index: /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceIO_PS1_CAL_0.c
===================================================================
--- /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceIO_PS1_CAL_0.c	(revision 30973)
+++ /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceIO_PS1_CAL_0.c	(revision 30974)
@@ -91,5 +91,5 @@
 
     // let's write these out in S/N order
-    sources = psArraySort (sources, pmSourceSortBySN);
+    sources = psArraySort (sources, pmSourceSortByFlux);
 
     table = psArrayAllocEmpty (sources->n);
@@ -136,5 +136,5 @@
 
 	float calMag = source->psfMag + magOffset;
-        float peakMag = (source->peak->flux > 0) ? -2.5*log10(source->peak->flux) : NAN;
+        float peakMag = (source->peak->rawFlux > 0) ? -2.5*log10(source->peak->rawFlux) : NAN;
         psS16 nImageOverlap = 1;
 
@@ -294,5 +294,6 @@
 
         source->peak       = pmPeakAlloc(PAR[PM_PAR_XPOS], PAR[PM_PAR_YPOS], peakFlux, PM_PEAK_LONE);
-        source->peak->flux = peakFlux;
+        source->peak->rawFlux = peakFlux;
+        source->peak->smoothFlux = peakFlux;
         source->peak->dx   = dPAR[PM_PAR_XPOS];
         source->peak->dy   = dPAR[PM_PAR_YPOS];
@@ -357,5 +358,5 @@
 
     // let's write these out in S/N order
-    sources = psArraySort (sources, pmSourceSortBySN);
+    sources = psArraySort (sources, pmSourceSortByFlux);
 
     table = psArrayAllocEmpty (sources->n);
@@ -576,5 +577,5 @@
 
     // let's write these out in S/N order
-    sources = psArraySort (sources, pmSourceSortBySN);
+    sources = psArraySort (sources, pmSourceSortByFlux);
 
     // we are writing one row per model; we need to write out same number of columns for each row: find the max Nparams
Index: /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceIO_PS1_DEV_0.c
===================================================================
--- /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceIO_PS1_DEV_0.c	(revision 30973)
+++ /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceIO_PS1_DEV_0.c	(revision 30974)
@@ -101,5 +101,5 @@
         }
 
-        float peakMag = (source->peak->flux > 0) ? -2.5*log10(source->peak->flux) : NAN;
+        float peakMag = (source->peak->rawFlux > 0) ? -2.5*log10(source->peak->rawFlux) : NAN;
         psS16 nImageOverlap = 1;
         psS32 ID = 0; // XXX need to figure out how to generate this
@@ -220,5 +220,6 @@
 
         source->peak = pmPeakAlloc(PAR[PM_PAR_XPOS], PAR[PM_PAR_YPOS], peakFlux, PM_PEAK_LONE);
-        source->peak->flux = peakFlux;
+        source->peak->rawFlux = peakFlux;
+        source->peak->smoothFlux = peakFlux;
         source->peak->dx   = dPAR[PM_PAR_XPOS];
         source->peak->dy   = dPAR[PM_PAR_YPOS];
Index: /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceIO_PS1_DEV_1.c
===================================================================
--- /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceIO_PS1_DEV_1.c	(revision 30973)
+++ /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceIO_PS1_DEV_1.c	(revision 30974)
@@ -73,5 +73,5 @@
 
     // let's write these out in S/N order
-    sources = psArraySort (sources, pmSourceSortBySN);
+    sources = psArraySort (sources, pmSourceSortByFlux);
 
     table = psArrayAllocEmpty (sources->n);
@@ -117,5 +117,5 @@
         }
 
-        float peakMag = (source->peak->flux > 0) ? -2.5*log10(source->peak->flux) : NAN;
+        float peakMag = (source->peak->rawFlux > 0) ? -2.5*log10(source->peak->rawFlux) : NAN;
         psS16 nImageOverlap = 1;
 
@@ -263,5 +263,6 @@
 
         source->peak = pmPeakAlloc(PAR[PM_PAR_XPOS], PAR[PM_PAR_YPOS], peakFlux, PM_PEAK_LONE);
-        source->peak->flux = peakFlux;
+        source->peak->rawFlux = peakFlux;
+        source->peak->smoothFlux = peakFlux;
         source->peak->dx   = dPAR[PM_PAR_XPOS];
         source->peak->dy   = dPAR[PM_PAR_YPOS];
@@ -307,5 +308,5 @@
 
     // let's write these out in S/N order
-    sources = psArraySort (sources, pmSourceSortBySN);
+    sources = psArraySort (sources, pmSourceSortByFlux);
 
     table = psArrayAllocEmpty (sources->n);
@@ -480,5 +481,5 @@
 
     // let's write these out in S/N order
-    sources = psArraySort (sources, pmSourceSortBySN);
+    sources = psArraySort (sources, pmSourceSortByFlux);
 
     // we are writing one row per model; we need to write out same number of columns for each row: find the max Nparams
Index: /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceIO_RAW.c
===================================================================
--- /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceIO_RAW.c	(revision 30973)
+++ /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceIO_RAW.c	(revision 30974)
@@ -126,5 +126,5 @@
                  source[0].apMag, source[0].type, source[0].mode,
                  logChi, logChiNorm,
-                 source[0].peak->SN,
+                 source[0].peak->rawFlux,
                  source[0].apRadius,
                  source[0].pixWeightNotBad,
@@ -188,5 +188,5 @@
                  log10(model[0].chisq/model[0].nDOF),
                  log10(model[0].chisqNorm/model[0].nDOF),
-                 source[0].peak->SN,
+                 source[0].peak->rawFlux,
                  source[0].apRadius,
                  source[0].pixWeightNotBad,
@@ -234,5 +234,5 @@
 
         fprintf (f, "%5d %5d  %7.1f  %7.1f %7.1f  %6.3f %6.3f  %8.1f %7.1f %7.1f %7.1f  %4d %2d\n",
-                 source->peak->x, source->peak->y, source->peak->value,
+                 source->peak->x, source->peak->y, source->peak->detValue,
                  moment->Mx, moment->My,
                  moment->Mxx, moment->Myy,
@@ -270,5 +270,5 @@
             continue;
         fprintf (f, "%5d %5d  %8.1f  %7.1f %7.1f  %6.3f %6.3f  %10.1f %7.1f %7.1f %7.1f  %4d %2d %#5x\n",
-                 source->peak->x, source->peak->y, source->peak->value,
+                 source->peak->x, source->peak->y, source->peak->detValue,
                  source->moments->Mx, source->moments->My,
                  source->moments->Mxx, source->moments->Myy,
@@ -299,8 +299,8 @@
             continue;
         fprintf (f, "%5d %5d  %7.1f %7.2f %7.2f %7.2f\n",
-                 peak->x, peak->y, peak->value, peak->SN, peak->xf, peak->yf);
-    }
-    fclose (f);
-    return true;
-}
-
+                 peak->x, peak->y, peak->detValue, peak->rawFlux, peak->xf, peak->yf);
+    }
+    fclose (f);
+    return true;
+}
+
Index: /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceIO_SMPDATA.c
===================================================================
--- /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceIO_SMPDATA.c	(revision 30973)
+++ /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceIO_SMPDATA.c	(revision 30974)
@@ -205,5 +205,5 @@
 
 	source->peak = pmPeakAlloc(PAR[PM_PAR_XPOS], PAR[PM_PAR_YPOS], peakFlux, PM_PEAK_LONE);
-        source->peak->flux = peakFlux;
+        source->peak->rawFlux = peakFlux;
 
         sources->data[i] = source;
Index: /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceMoments.c
===================================================================
--- /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceMoments.c	(revision 30973)
+++ /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceMoments.c	(revision 30974)
@@ -330,5 +330,5 @@
 
     psTrace ("psModules.objects", 3, "peak %f %f (%f = %f) Mx: %f  My: %f  Sum: %f  Mxx: %f  Mxy: %f  Myy: %f  sky: %f  Npix: %d\n",
-	     source->peak->xf, source->peak->yf, source->peak->flux, source->peak->SN, source->moments->Mx,   source->moments->My, Sum, source->moments->Mxx,   source->moments->Mxy,   source->moments->Myy, sky, source->moments->nPixels);
+	     source->peak->xf, source->peak->yf, source->peak->rawFlux, sqrt(source->peak->detValue), source->moments->Mx,   source->moments->My, Sum, source->moments->Mxx,   source->moments->Mxy,   source->moments->Myy, sky, source->moments->nPixels);
 
     return(true);
Index: /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceOutputs.c
===================================================================
--- /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceOutputs.c	(revision 30973)
+++ /branches/eam_branches/ipp-20110213/psModules/src/objects/pmSourceOutputs.c	(revision 30974)
@@ -143,5 +143,5 @@
 
     outputs->calMag = isfinite(magOffset) ? source->psfMag + magOffset : NAN;
-    outputs->peakMag = (source->peak->flux > 0) ? -2.5*log10(source->peak->flux) : NAN;
+    outputs->peakMag = (source->peak->rawFlux > 0) ? -2.5*log10(source->peak->rawFlux) : NAN;
 
     psSphere ptSky = {0.0, 0.0, 0.0, 0.0};
Index: /branches/eam_branches/ipp-20110213/psModules/test/objects/tap_pmPeaks.c
===================================================================
--- /branches/eam_branches/ipp-20110213/psModules/test/objects/tap_pmPeaks.c	(revision 30973)
+++ /branches/eam_branches/ipp-20110213/psModules/test/objects/tap_pmPeaks.c	(revision 30974)
@@ -650,95 +650,3 @@
     ok(test_pmPeaksInImage(TST02_NUM_ROWS, 2*TST02_NUM_COLS),
       "Tested pmPeaksInImage() on (%d, %d) image", TST02_NUM_ROWS, 2*TST02_NUM_COLS);
-
-
-    // ------------------------------------------------------------------------
-    // Test pmPeaksSubset()
-    // Calling pmPeaksSubset with NULL psList.  Should generate error.
-    {
-        psMemId id = psMemGetId();
-        psArray *outData = pmPeaksSubset(NULL, 0.0, psRegionSet(0, 0, 0, 0));
-        ok(outData == NULL, "pmPeaksSubset() returned a NULL with a NULL psArray input");
-        psFree(outData);
-        ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");
-    }
-
-
-    // Set peaks in input image.  All even-column and even-row pixels are
-    // set non-zero, all other pixels are set to zero.
-    psImage *imgData = psImageAlloc(NUM_COLS, NUM_ROWS, PS_TYPE_F32);
-    psS32 numPeaksOrig = 0;
-    for (psS32 i = 0 ; i < NUM_ROWS ; i++) {
-        for (psS32 j = 0 ; j < NUM_COLS ; j++) {
-            if ((0 == i%2) && (0 == j%2)) {
-                imgData->data.F32[i][j] = (float) (i + 10);
-                numPeaksOrig++;
-            } else {
-                imgData->data.F32[i][j] = 0.0;
-            }
-        }
-    }
-    // Call pmPeaksSubset() with large maxValue and disjoint psRegion.
-    // Should not remove any peaks.
-    {
-        psMemId id = psMemGetId();
-        psArray *outData = pmPeaksInImage(imgData, 0.0);
-        psArray *outData2 = pmPeaksSubset(outData, PS_MAX_F32, psRegionSet(20, 20, 20, 20));
-        ok(outData2 != NULL && psMemCheckArray(outData),
-           "pmPeaksSubset() returned a non-NULL psArray (large maxValue)");
-        ok(outData2->n == numPeaksOrig,
-          "pmPeaksSubset() returned correct number of peaks (was %d, should be %d)", outData2->n+1, numPeaksOrig);
-        psFree(outData);
-        psFree(outData2);
-        ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");
-    }
-
-
-    // Call pmPeaksSubset() with small maxValue and disjoint psRegion.
-    // Should not remove any peaks.
-    {
-        psMemId id = psMemGetId();
-        psArray *outData = pmPeaksInImage(imgData, 0.0);
-        psArray *outData2 = pmPeaksSubset(outData, 0.0, psRegionSet(20, 20, 20, 20));
-        ok(outData2 != NULL && psMemCheckArray(outData),
-           "pmPeaksSubset() returned a non-NULL psArray (small maxValue)");
-        ok(outData2->n == 0,
-          "pmPeaksSubset() returned correct number of peaks (was %d, should be %d)", outData2->n, 0);
-        psFree(outData);
-        psFree(outData2);
-        ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");
-    }
-
-
-    // Call pmPeaksSubset() with large maxValue and enclosing psRegion.
-    // Should remove aall peaks.
-    {
-        psMemId id = psMemGetId();
-        psArray *outData = pmPeaksInImage(imgData, 0.0);
-        psRegion tmpRegion = psRegionSet(-PS_MAX_F32, PS_MAX_F32, -PS_MAX_F32, PS_MAX_F32);
-        psArray *outData2 = pmPeaksSubset(outData, PS_MAX_F32, tmpRegion);
-        ok(outData2 != NULL && psMemCheckArray(outData),
-           "pmPeaksSubset() returned a non-NULL psArray (small maxValue, enclosing psRegion)");
-        ok(outData2->n == 0,
-          "pmPeaksSubset() returned correct number of peaks (was %d, should be %d)", outData2->n, 0);
-        psFree(outData);
-        psFree(outData2);
-        ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");
-    }
-
-
-    // Call pmPeaksSubset() with large maxValue and enclosing psRegion.
-    // Should remove aall peaks.
-    {
-        psMemId id = psMemGetId();
-        psArray *outData = pmPeaksInImage(imgData, 0.0);
-        psRegion tmpRegion = psRegionSet(-PS_MAX_F32, PS_MAX_F32, -PS_MAX_F32, PS_MAX_F32);
-        psArray *outData2 = pmPeaksSubset(outData, 0.0, tmpRegion);
-        ok(outData2 != NULL && psMemCheckArray(outData),
-           "pmPeaksSubset() returned a non-NULL psArray (small maxValue, inclusive psRegion)");
-        ok(outData2->n == 0,
-          "pmPeaksSubset() returned correct number of peaks (was %d, should be %d)", outData2->n, 0);
-        psFree(outData);
-        psFree(outData2);
-        ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");
-    }
 }
Index: /branches/eam_branches/ipp-20110213/psModules/test/objects/tap_pmSource.c
===================================================================
--- /branches/eam_branches/ipp-20110213/psModules/test/objects/tap_pmSource.c	(revision 30973)
+++ /branches/eam_branches/ipp-20110213/psModules/test/objects/tap_pmSource.c	(revision 30974)
@@ -21,5 +21,5 @@
         pmSourceCacheModel()
         pmSourceCachePSF()
-        pmSourceSortBySN()	(COMPILER ERRORS)
+        pmSourceSortByFlux()	(COMPILER ERRORS)
         pmSourceSortByY()	(COMPILER ERRORS)
     Must test
@@ -801,7 +801,7 @@
 
     // ----------------------------------------
-    // pmSourceSortBySN() tests
-    // int pmSourceSortBySN (const void **a, const void **b)
-    // Call pmSourceSortBySN() with acceptable input parameters.
+    // pmSourceSortByFlux() tests
+    // int pmSourceSortByFlux (const void **a, const void **b)
+    // Call pmSourceSortByFlux() with acceptable input parameters.
     // XXX: We don't test with NULL input parameters since this function has no PS_ASSERTS to protect
     // against that.
@@ -816,10 +816,10 @@
         src2->peak->SN = 20.0;
 
-        int rc = pmSourceSortBySN((const void **) &src1, (const void **) &src2);
-        ok(rc == 1, "pmSourceSortBySN() returned correct result (source1 < source2) (%d)", rc);
-        rc = pmSourceSortBySN((const void **) &src2, (const void **) &src1);
-        ok(rc == -1, "pmSourceSortBySN() returned correct result (source2 < source1) (%d)", rc);
-        rc = pmSourceSortBySN((const void **) &src1, (const void **) &src1);
-        ok(rc == 0, "pmSourceSortBySN() returned correct result (source1 == source2) (%d)", rc);
+        int rc = pmSourceSortByFlux((const void **) &src1, (const void **) &src2);
+        ok(rc == 1, "pmSourceSortByFlux() returned correct result (source1 < source2) (%d)", rc);
+        rc = pmSourceSortByFlux((const void **) &src2, (const void **) &src1);
+        ok(rc == -1, "pmSourceSortByFlux() returned correct result (source2 < source1) (%d)", rc);
+        rc = pmSourceSortByFlux((const void **) &src1, (const void **) &src1);
+        ok(rc == 0, "pmSourceSortByFlux() returned correct result (source1 == source2) (%d)", rc);
 
         psFree(src1);
