Index: trunk/psModules/src/objects/pmPSF.c
===================================================================
--- trunk/psModules/src/objects/pmPSF.c	(revision 13898)
+++ trunk/psModules/src/objects/pmPSF.c	(revision 14652)
@@ -6,6 +6,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.25 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-06-20 02:22:26 $
+ *  @version $Revision: 1.26 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-08-24 00:11:02 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -28,9 +28,10 @@
 #include "pmMoments.h"
 #include "pmResiduals.h"
+#include "pmGrowthCurve.h"
+#include "pmPSF.h"
 #include "pmModel.h"
 #include "pmSource.h"
-#include "pmGrowthCurve.h"
-#include "pmPSF.h"
-#include "pmModelGroup.h"
+#include "pmModelClass.h"
+#include "pmModelUtils.h"
 #include "pmSourcePhotometry.h"
 #include "pmFPAMaskWeight.h"
@@ -74,5 +75,5 @@
     psFree (psf->ApTrend);
     psFree (psf->growth);
-    psFree (psf->params_NEW);
+    psFree (psf->params);
     psFree (psf->residuals);
     return;
@@ -103,4 +104,6 @@
     psf->skyBias  = 0.0;
     psf->skySat   = 0.0;
+    psf->nPSFstars  = 0;
+    psf->nApResid   = 0;
     psf->poissonErrors = poissonErrors;
 
@@ -124,10 +127,10 @@
     psf->residuals = NULL;
 
-    Nparams = pmModelParameterCount (type);
+    Nparams = pmModelClassParameterCount (type);
     if (!Nparams) {
         psError(PS_ERR_UNKNOWN, true, "Undefined pmModelType");
         return(NULL);
     }
-    psf->params_NEW = psArrayAlloc(Nparams);
+    psf->params = psArrayAlloc(Nparams);
 
     // the order of the PSF parameter (X,Y) fits is determined by the psfTrendMask polynomial
@@ -139,5 +142,5 @@
 
     if (psfTrendMask) {
-        for (int i = 0; i < psf->params_NEW->n; i++) {
+        for (int i = 0; i < psf->params->n; i++) {
             if (i == PM_PAR_SKY)
                 continue;
@@ -155,5 +158,5 @@
                 }
             }
-            psf->params_NEW->data[i] = param;
+            psf->params->data[i] = param;
         }
     }
@@ -161,31 +164,4 @@
     psMemSetDeallocator(psf, (psFreeFunc) pmPSFFree);
     return(psf);
-}
-
-/*****************************************************************************
-pmModelFromPSF (*modelEXT, *psf):  use the model position parameters to
-construct a realization of the PSF model at the object coordinates
- *****************************************************************************/
-pmModel *pmModelFromPSF (pmModel *modelEXT, pmPSF *psf)
-{
-
-    // need to define the relationship between the modelEXT and modelPSF ?
-
-    // find function used to set the model parameters
-    pmModelFromPSFFunc modelFromPSFFunc = pmModelFromPSFFunc_GetFunction (psf->type);
-
-    // allocate a new pmModel to hold the PSF version
-    pmModel *modelPSF = pmModelAlloc (psf->type);
-
-    // set model parameters for this source based on PSF information
-    if (!modelFromPSFFunc (modelPSF, modelEXT, psf)) {
-        psError(PM_ERR_PSF, false, "Failed to set model params from PSF");
-        psFree(modelPSF);
-        return NULL;
-    }
-    // XXX note that model->residuals is just a reference
-    modelPSF->residuals = psf->residuals;
-
-    return (modelPSF);
 }
 
@@ -335,9 +311,9 @@
     va_start(ap, sxy);
 
-    pmModelType type = pmModelSetType (typeName);
+    pmModelType type = pmModelClassGetType (typeName);
     psPolynomial2D *psfTrend = psPolynomial2DAlloc (PS_POLYNOMIAL_ORD, 0, 0);
     pmPSF *psf = pmPSFAlloc (type, true, psfTrend);
 
-    psVector *par = psVectorAlloc (psf->params_NEW->n, PS_TYPE_F32);
+    psVector *par = psVectorAlloc (psf->params->n, PS_TYPE_F32);
     par->data.F32[PM_PAR_SXX] = sxx;
     par->data.F32[PM_PAR_SYY] = syy;
@@ -348,15 +324,15 @@
     // set the psf shape parameters
     psPolynomial2D *poly = NULL;
-    poly = psf->params_NEW->data[PM_PAR_E0];
+    poly = psf->params->data[PM_PAR_E0];
     poly->coeff[0][0] = pol.e0;
 
-    poly = psf->params_NEW->data[PM_PAR_E1];
+    poly = psf->params->data[PM_PAR_E1];
     poly->coeff[0][0] = pol.e1;
 
-    poly = psf->params_NEW->data[PM_PAR_E2];
+    poly = psf->params->data[PM_PAR_E2];
     poly->coeff[0][0] = pol.e2;
 
-    for (int i = PM_PAR_SXY + 1; i < psf->params_NEW->n; i++) {
-        poly = psf->params_NEW->data[i];
+    for (int i = PM_PAR_SXY + 1; i < psf->params->n; i++) {
+        poly = psf->params->data[i];
         poly->coeff[0][0] = (psF32)va_arg(ap, psF64);
     }
