Index: trunk/psModules/src/objects/Makefile.am
===================================================================
--- trunk/psModules/src/objects/Makefile.am	(revision 19878)
+++ trunk/psModules/src/objects/Makefile.am	(revision 19879)
@@ -19,4 +19,5 @@
      pmModelUtils.c \
      pmSource.c \
+     pmSourceMoments.c \
      pmSourceExtendedPars.c \
      pmSourceUtils.c \
Index: trunk/psModules/src/objects/models/pmModel_GAUSS.c
===================================================================
--- trunk/psModules/src/objects/models/pmModel_GAUSS.c	(revision 19878)
+++ trunk/psModules/src/objects/models/pmModel_GAUSS.c	(revision 19879)
@@ -193,10 +193,11 @@
 {
     pmMoments *moments = source->moments;
+    pmPeak    *peak    = source->peak;
     psF32     *PAR  = model->params->data.F32;
 
     psEllipseMoments emoments;
-    emoments.x2 = moments->Sx;
-    emoments.y2 = moments->Sy;
-    emoments.xy = moments->Sxy;
+    emoments.x2 = moments->Mxx;
+    emoments.y2 = moments->Myy;
+    emoments.xy = moments->Mxy;
 
     // force the axis ratio to be < 20.0
@@ -205,7 +206,7 @@
 
     PAR[PM_PAR_SKY]  = moments->Sky;
-    PAR[PM_PAR_I0]   = moments->Peak - moments->Sky;
-    PAR[PM_PAR_XPOS] = moments->x;
-    PAR[PM_PAR_YPOS] = moments->y;
+    PAR[PM_PAR_I0]   = peak->flux;
+    PAR[PM_PAR_XPOS] = peak->xf;
+    PAR[PM_PAR_YPOS] = peak->yf;
     PAR[PM_PAR_SXX] = PS_MAX(0.5, M_SQRT2*shape.sx);
     PAR[PM_PAR_SYY] = PS_MAX(0.5, M_SQRT2*shape.sy);
Index: trunk/psModules/src/objects/models/pmModel_PGAUSS.c
===================================================================
--- trunk/psModules/src/objects/models/pmModel_PGAUSS.c	(revision 19878)
+++ trunk/psModules/src/objects/models/pmModel_PGAUSS.c	(revision 19879)
@@ -194,10 +194,11 @@
 {
     pmMoments *moments = source->moments;
+    pmPeak    *peak    = source->peak;
     psF32     *PAR     = model->params->data.F32;
 
     psEllipseMoments emoments;
-    emoments.x2 = moments->Sx;
-    emoments.y2 = moments->Sx;
-    emoments.xy = moments->Sxy;
+    emoments.x2 = moments->Mxx;
+    emoments.xy = moments->Mxy;
+    emoments.y2 = moments->Myy;
 
     psEllipseAxes axes = psEllipseMomentsToAxes (emoments, 20.0);
@@ -205,7 +206,7 @@
 
     PAR[PM_PAR_SKY]  = moments->Sky;
-    PAR[PM_PAR_I0]   = moments->Peak - moments->Sky;
-    PAR[PM_PAR_XPOS] = moments->x; // XXX use peak->xf, peak->yf?
-    PAR[PM_PAR_YPOS] = moments->y;
+    PAR[PM_PAR_I0]   = peak->flux;
+    PAR[PM_PAR_XPOS] = peak->xf;
+    PAR[PM_PAR_YPOS] = peak->yf;
     PAR[PM_PAR_SXX] = PS_MAX(0.5, M_SQRT2*shape.sx);
     PAR[PM_PAR_SYY] = PS_MAX(0.5, M_SQRT2*shape.sy);
Index: trunk/psModules/src/objects/models/pmModel_QGAUSS.c
===================================================================
--- trunk/psModules/src/objects/models/pmModel_QGAUSS.c	(revision 19878)
+++ trunk/psModules/src/objects/models/pmModel_QGAUSS.c	(revision 19879)
@@ -220,7 +220,7 @@
 
     psEllipseMoments emoments;
-    emoments.x2 = moments->Sx;
-    emoments.y2 = moments->Sy;
-    emoments.xy = moments->Sxy;
+    emoments.x2 = moments->Mxx;
+    emoments.xy = moments->Mxy;
+    emoments.y2 = moments->Myy;
 
     // force the axis ratio to be < 20.0
@@ -239,7 +239,7 @@
     // XXX turn this off here for now PAR[PM_PAR_SKY]  = moments->Sky;
     PAR[PM_PAR_SKY]  = 0.0;
-    PAR[PM_PAR_I0]   = moments->Peak;
-    PAR[PM_PAR_XPOS] = peak->x;
-    PAR[PM_PAR_YPOS] = peak->y;
+    PAR[PM_PAR_I0]   = peak->flux;
+    PAR[PM_PAR_XPOS] = peak->xf;
+    PAR[PM_PAR_YPOS] = peak->yf;
     PAR[PM_PAR_SXX]  = PS_MAX(0.5, M_SQRT2*shape.sx);
     PAR[PM_PAR_SYY]  = PS_MAX(0.5, M_SQRT2*shape.sy);
Index: trunk/psModules/src/objects/models/pmModel_RGAUSS.c
===================================================================
--- trunk/psModules/src/objects/models/pmModel_RGAUSS.c	(revision 19878)
+++ trunk/psModules/src/objects/models/pmModel_RGAUSS.c	(revision 19879)
@@ -213,7 +213,7 @@
 
     psEllipseMoments emoments;
-    emoments.x2 = moments->Sx;
-    emoments.y2 = moments->Sy;
-    emoments.xy = moments->Sxy;
+    emoments.x2 = moments->Mxx;
+    emoments.xy = moments->Mxy;
+    emoments.y2 = moments->Myy;
 
     // force the axis ratio to be < 20.0
@@ -231,7 +231,7 @@
 
     PAR[PM_PAR_SKY]  = moments->Sky;
-    PAR[PM_PAR_I0]   = moments->Peak - moments->Sky;
-    PAR[PM_PAR_XPOS] = peak->x;
-    PAR[PM_PAR_YPOS] = peak->y;
+    PAR[PM_PAR_I0]   = peak->flux;
+    PAR[PM_PAR_XPOS] = peak->xf;
+    PAR[PM_PAR_YPOS] = peak->yf;
     PAR[PM_PAR_SXX]  = PS_MAX(0.5, M_SQRT2*shape.sx);
     PAR[PM_PAR_SYY]  = PS_MAX(0.5, M_SQRT2*shape.sy);
Index: trunk/psModules/src/objects/models/pmModel_SERSIC.c
===================================================================
--- trunk/psModules/src/objects/models/pmModel_SERSIC.c	(revision 19878)
+++ trunk/psModules/src/objects/models/pmModel_SERSIC.c	(revision 19879)
@@ -230,7 +230,7 @@
 
     psEllipseMoments emoments;
-    emoments.x2 = moments->Sx;
-    emoments.y2 = moments->Sy;
-    emoments.xy = moments->Sxy;
+    emoments.x2 = moments->Mxx;
+    emoments.xy = moments->Mxy;
+    emoments.y2 = moments->Myy;
 
     // force the axis ratio to be < 20.0
@@ -249,7 +249,7 @@
     // XXX PAR[PM_PAR_SKY]  = moments->Sky;
     PAR[PM_PAR_SKY]  = 0.0;
-    PAR[PM_PAR_I0]   = moments->Peak;
-    PAR[PM_PAR_XPOS] = peak->x;
-    PAR[PM_PAR_YPOS] = peak->y;
+    PAR[PM_PAR_I0]   = peak->flux;
+    PAR[PM_PAR_XPOS] = peak->xf;
+    PAR[PM_PAR_YPOS] = peak->yf;
     PAR[PM_PAR_SXX]  = PS_MAX(0.5, M_SQRT2*shape.sx);
     PAR[PM_PAR_SYY]  = PS_MAX(0.5, M_SQRT2*shape.sy);
Index: trunk/psModules/src/objects/pmMoments.c
===================================================================
--- trunk/psModules/src/objects/pmMoments.c	(revision 19878)
+++ trunk/psModules/src/objects/pmMoments.c	(revision 19879)
@@ -6,6 +6,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.5 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2006-09-15 09:49:01 $
+ *  @version $Revision: 1.6 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2008-10-03 20:59:16 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -29,9 +29,22 @@
     psTrace("psModules.objects", 3, "---- %s() begin ----\n", __func__);
     pmMoments *tmp = (pmMoments *) psAlloc(sizeof(pmMoments));
-    tmp->x = 0.0;
-    tmp->y = 0.0;
-    tmp->Sx = 0.0;
-    tmp->Sy = 0.0;
-    tmp->Sxy = 0.0;
+    tmp->Mx = 0.0;
+    tmp->My = 0.0;
+
+    tmp->Mxx = 0.0;
+    tmp->Mxy = 0.0;
+    tmp->Myy = 0.0;
+
+    tmp->Mxxx = 0.0;
+    tmp->Mxxy = 0.0;
+    tmp->Mxyy = 0.0;
+    tmp->Myyy = 0.0;
+
+    tmp->Mxxxx = 0.0;
+    tmp->Mxxxy = 0.0;
+    tmp->Mxxyy = 0.0;
+    tmp->Mxyyy = 0.0;
+    tmp->Myyyy = 0.0;
+
     tmp->Sum = 0.0;
     tmp->Peak = 0.0;
@@ -42,3 +55,2 @@
     return(tmp);
 }
-
Index: trunk/psModules/src/objects/pmMoments.h
===================================================================
--- trunk/psModules/src/objects/pmMoments.h	(revision 19878)
+++ trunk/psModules/src/objects/pmMoments.h	(revision 19879)
@@ -4,6 +4,6 @@
  * @author GLG, MHPCC
  *
- * @version $Revision: 1.4 $ $Name: not supported by cvs2svn $
- * @date $Date: 2008-10-02 20:50:41 $
+ * @version $Revision: 1.5 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2008-10-03 20:59:16 $
  * Copyright 2004 Maui High Performance Computing Center, University of Hawaii
  */
@@ -24,15 +24,27 @@
 typedef struct
 {
-    float x;     ///< X-coord of centroid.
-    float y;     ///< Y-coord of centroid.
-    float Sx;    ///< x-second moment = sigma_x^2 = = (FWHM_x/2.355)^2
-    float Sy;    ///< y-second moment = sigma_y^2 = = (FWHM_y/2.355)^2
-    float Sxy;   ///< xy cross moment = sigma_xy
-    float Sum;   ///< Pixel sum above sky (background).
-    float Peak;  ///< Peak counts above sky.
-    float Sky;   ///< Sky level (background).
-    float dSky;  ///< local Sky variance
-    float SN;    ///< approx signal-to-noise
-    int nPixels; ///< Number of pixels used.
+    float Mx;     ///< X-coord of centroid.
+    float My;     ///< Y-coord of centroid.
+    float Mxx;    ///< x-second moment = sigma_x^2 = = (FWHM_x/2.355)^2
+    float Mxy;    ///< xy cross moment = sigma_xy
+    float Myy;    ///< y-second moment = sigma_y^2 = = (FWHM_y/2.355)^2
+
+    float Mxxx;    ///< third moment
+    float Mxxy;    ///< third moment
+    float Mxyy;    ///< third moment
+    float Myyy;    ///< third moment
+
+    float Mxxxx;   ///< fourth moment
+    float Mxxxy;   ///< fourth moment
+    float Mxxyy;   ///< fourth moment
+    float Mxyyy;   ///< fourth moment
+    float Myyyy;   ///< fourth moment
+
+    float Sum;    ///< Pixel sum above sky (background).
+    float Peak;   ///< Peak counts above sky.
+    float Sky;    ///< Sky level (background).
+    float dSky;   ///< local Sky variance
+    float SN;     ///< approx signal-to-noise
+    int nPixels;  ///< Number of pixels used.
 }
 pmMoments;
Index: trunk/psModules/src/objects/pmSource.c
===================================================================
--- trunk/psModules/src/objects/pmSource.c	(revision 19878)
+++ trunk/psModules/src/objects/pmSource.c	(revision 19879)
@@ -6,6 +6,6 @@
  *  @author EAM, IfA: significant modifications.
  *
- *  @version $Revision: 1.56 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2008-10-02 20:51:29 $
+ *  @version $Revision: 1.57 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2008-10-03 20:59:16 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -330,11 +330,11 @@
 
             // Sx,Sy are limited at 0.  a peak at 0,0 is artificial
-            if (fabs(tmpSrc->moments->Sx) < 0.05)
-                continue;
-            if (fabs(tmpSrc->moments->Sy) < 0.05)
-                continue;
-            if ((tmpSrc->moments->Sx / tmpSrc->moments->Sy) > AR_MAX)
-                continue;
-            if ((tmpSrc->moments->Sx / tmpSrc->moments->Sy) < AR_MIN)
+            if (fabs(tmpSrc->moments->Mxx) < 0.05)
+                continue;
+            if (fabs(tmpSrc->moments->Myy) < 0.05)
+                continue;
+            if ((tmpSrc->moments->Mxx / tmpSrc->moments->Myy) > AR_MAX)
+                continue;
+            if ((tmpSrc->moments->Mxx / tmpSrc->moments->Myy) < AR_MIN)
                 continue;
             if (tmpSrc->mode & PM_SOURCE_MODE_BLEND)
@@ -342,5 +342,5 @@
 
             // for the moment, force splane dimensions to be 10x10 image pix
-            binX = tmpSrc->moments->Sx/SCALE;
+            binX = tmpSrc->moments->Mxx/SCALE;
             if (binX < 0)
                 continue;
@@ -348,5 +348,5 @@
                 continue;
 
-            binY = tmpSrc->moments->Sy/SCALE;
+            binY = tmpSrc->moments->Myy/SCALE;
             if (binY < 0)
                 continue;
@@ -427,14 +427,14 @@
                 continue;
 
-            if (tmpSrc->moments->Sx < minSx)
-                continue;
-            if (tmpSrc->moments->Sx > maxSx)
-                continue;
-            if (tmpSrc->moments->Sy < minSy)
-                continue;
-            if (tmpSrc->moments->Sy > maxSy)
-                continue;
-            tmpSx->data.F32[tmpSx->n] = tmpSrc->moments->Sx;
-            tmpSy->data.F32[tmpSy->n] = tmpSrc->moments->Sy;
+            if (tmpSrc->moments->Mxx < minSx)
+                continue;
+            if (tmpSrc->moments->Mxx > maxSx)
+                continue;
+            if (tmpSrc->moments->Myy < minSy)
+                continue;
+            if (tmpSrc->moments->Myy > maxSy)
+                continue;
+            tmpSx->data.F32[tmpSx->n] = tmpSrc->moments->Mxx;
+            tmpSy->data.F32[tmpSy->n] = tmpSrc->moments->Myy;
             tmpSx->n++;
             tmpSy->n++;
@@ -519,6 +519,6 @@
         }
 
-        psF32 sigX = source->moments->Sx;
-        psF32 sigY = source->moments->Sy;
+        psF32 sigX = source->moments->Mxx;
+        psF32 sigY = source->moments->Myy;
 
         // XXX EAM : can we use the value of SATURATE if mask is NULL?
@@ -635,4 +635,6 @@
 # define VALID_RADIUS(X,Y,RAD2) (((RAD2) >= (PS_SQR(X) + PS_SQR(Y))) ? 1 : 0)
 
+/*** this been moved to pmSourceMoments.c ***/
+# if (0)
 bool pmSourceMoments(pmSource *source,
                      psF32 radius)
@@ -774,9 +776,9 @@
     }
 
-    source->moments->x = x + xPeak;
-    source->moments->y = y + yPeak;
+    source->moments->Mx = x + xPeak;
+    source->moments->My = y + yPeak;
 
     // XXX EAM : Sxy needs to have x*y subtracted
-    source->moments->Sxy = XY/Sum - x*y;
+    source->moments->Mxy = XY/Sum - x*y;
     source->moments->Sum = Sum;
     source->moments->SN  = Sum / sqrt(Var);
@@ -786,18 +788,18 @@
     // XXX EAM : these values can be negative, so we need to limit the range
     // XXX EAM : make the use of this consistent: should this be the second moment or sqrt?
-    // source->moments->Sx = sqrt(PS_MAX(X2/Sum - PS_SQR(x), 0));
-    // source->moments->Sy = sqrt(PS_MAX(Y2/Sum - PS_SQR(y), 0));
-    source->moments->Sx = PS_MAX(X2/Sum - PS_SQR(x), 0);
-    source->moments->Sy = PS_MAX(Y2/Sum - PS_SQR(y), 0);
+    // source->moments->Mxx = sqrt(PS_MAX(X2/Sum - PS_SQR(x), 0));
+    // source->moments->Myy = sqrt(PS_MAX(Y2/Sum - PS_SQR(y), 0));
+    source->moments->Mxx = PS_MAX(X2/Sum - PS_SQR(x), 0);
+    source->moments->Myy = PS_MAX(Y2/Sum - PS_SQR(y), 0);
 
     psTrace ("psModules.objects", 4,
-             "sky: %f  Sum: %f  x: %f  y: %f  Sx: %f  Sy: %f  Sxy: %f\n",
-             sky, Sum, source->moments->x, source->moments->y,
-             source->moments->Sx, source->moments->Sy, source->moments->Sxy);
+             "sky: %f  Sum: %f  Mx: %f  My: %f  Mxx: %f  Myy: %f  Mxy: %f\n",
+             sky, Sum, source->moments->Mx, source->moments->My,
+             source->moments->Mxx, source->moments->Myy, source->moments->Mxy);
 
     psTrace("psModules.objects", 5, "---- end ----\n");
     return(true);
 }
-
+# endif
 // construct a realization of the source model
 bool pmSourceCacheModel (pmSource *source, psMaskType maskVal) {
Index: trunk/psModules/src/objects/pmSourceIO_RAW.c
===================================================================
--- trunk/psModules/src/objects/pmSourceIO_RAW.c	(revision 19878)
+++ trunk/psModules/src/objects/pmSourceIO_RAW.c	(revision 19879)
@@ -3,6 +3,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.18 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-11-10 01:09:20 $
+ *  @version $Revision: 1.19 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2008-10-03 20:59:16 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -225,6 +225,6 @@
         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,
-                 moment->x, moment->y,
-                 moment->Sx, moment->Sy,
+                 moment->Mx, moment->My,
+                 moment->Mxx, moment->Myy,
                  moment->Sum, moment->Peak,
                  moment->Sky, moment->SN,
@@ -258,6 +258,6 @@
         fprintf (f, "%5d %5d  %7.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->moments->x, source->moments->y,
-                 source->moments->Sx, source->moments->Sy,
+                 source->moments->Mx, source->moments->My,
+                 source->moments->Mxx, source->moments->Myy,
                  source->moments->Sum, source->moments->Peak,
                  source->moments->Sky, source->moments->SN,
Index: trunk/psModules/src/objects/pmSourcePlotMoments.c
===================================================================
--- trunk/psModules/src/objects/pmSourcePlotMoments.c	(revision 19878)
+++ trunk/psModules/src/objects/pmSourcePlotMoments.c	(revision 19879)
@@ -5,6 +5,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.11 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2008-07-15 20:25:00 $
+ *  @version $Revision: 1.12 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2008-10-03 20:59:16 $
  *
  *  Copyright 2006 IfA, University of Hawaii
@@ -117,6 +117,6 @@
             continue;
 
-        xFaint->data.F32[nF] = source->moments->Sx;
-        yFaint->data.F32[nF] = source->moments->Sy;
+        xFaint->data.F32[nF] = source->moments->Mxx;
+        yFaint->data.F32[nF] = source->moments->Myy;
         nF++;
 
@@ -125,6 +125,6 @@
             continue;
 
-        xBright->data.F32[nB] = source->moments->Sx;
-        yBright->data.F32[nB] = source->moments->Sy;
+        xBright->data.F32[nB] = source->moments->Mxx;
+        yBright->data.F32[nB] = source->moments->Myy;
         nB++;
     }
Index: trunk/psModules/src/objects/pmSourcePlotPSFModel.c
===================================================================
--- trunk/psModules/src/objects/pmSourcePlotPSFModel.c	(revision 19878)
+++ trunk/psModules/src/objects/pmSourcePlotPSFModel.c	(revision 19879)
@@ -5,6 +5,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.12 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-11-10 01:09:20 $
+ *  @version $Revision: 1.13 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2008-10-03 20:59:16 $
  *
  *  Copyright 2006 IfA, University of Hawaii
@@ -123,7 +123,7 @@
 
         psEllipseMoments moments;
-        moments.x2 = source->moments->Sx;
-        moments.y2 = source->moments->Sy;
-        moments.xy = source->moments->Sxy;
+        moments.x2 = source->moments->Mxx;
+        moments.xy = source->moments->Mxy;
+        moments.y2 = source->moments->Myy;
 
         // force the axis ratio to be < 20.0
