Index: trunk/psModules/src/objects/pmPeaks.c
===================================================================
--- trunk/psModules/src/objects/pmPeaks.c	(revision 29004)
+++ trunk/psModules/src/objects/pmPeaks.c	(revision 31153)
@@ -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       	 = value; // set this by default: it is up to the user to supply a better value
+    tmp->rawFluxStdev  	 = NAN;
+    tmp->smoothFlux    	 = value; // set this by default: it is up to the user to supply a better value
+    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->SN;
-    psF32 fB = B->SN;
-    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);
-}
