Index: /branches/rel10_ifa/psModules/src/objects/pmGrowthCurve.c
===================================================================
--- /branches/rel10_ifa/psModules/src/objects/pmGrowthCurve.c	(revision 6750)
+++ /branches/rel10_ifa/psModules/src/objects/pmGrowthCurve.c	(revision 6751)
@@ -5,6 +5,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.1.4.2 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2006-03-09 03:14:23 $
+ *  @version $Revision: 1.1.4.3 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2006-04-01 02:47:20 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -26,5 +26,5 @@
 }
 
-pmGrowthCurve *pmGrowthCurveAlloc (psF32 minRadius, psF32 maxRadius, psF32 dRadius)
+pmGrowthCurve *pmGrowthCurveAlloc (psF32 minRadius, psF32 maxRadius, psF32 refRadius)
 {
 
@@ -32,9 +32,10 @@
     psMemSetDeallocator(growth, (psFreeFunc) pmGrowthCurveFree);
 
-    growth->radius = psVectorCreate (NULL, minRadius, maxRadius, dRadius, PS_TYPE_F32);
+    // fractional pixel radii are not well defined; use integer steps
+    growth->radius = psVectorCreate (NULL, minRadius, maxRadius, 1.0, PS_TYPE_F32);
     growth->apMag  = psVectorAlloc (growth->radius->n, PS_TYPE_F32);
 
     // XXX may want to extend this to allow for a different refRadius;
-    growth->refRadius = maxRadius;
+    growth->refRadius = refRadius;
     growth->maxRadius = maxRadius;
     growth->apLoss = 0.0;
@@ -111,5 +112,5 @@
 
     if (n1 == 0) {
-        int n0 = psVectorBracket (index, key, FALSE);
+        n0 = psVectorBracket (index, key, FALSE);
         n1 = n0 + 1;
     }
Index: /branches/rel10_ifa/psModules/src/objects/pmGrowthCurve.h
===================================================================
--- /branches/rel10_ifa/psModules/src/objects/pmGrowthCurve.h	(revision 6750)
+++ /branches/rel10_ifa/psModules/src/objects/pmGrowthCurve.h	(revision 6751)
@@ -15,5 +15,5 @@
 pmGrowthCurve;
 
-pmGrowthCurve *pmGrowthCurveAlloc (psF32 minRadius, psF32 maxRadius, psF32 dRadius);
+pmGrowthCurve *pmGrowthCurveAlloc (psF32 minRadius, psF32 maxRadius, psF32 refRadius);
 int psVectorBracket (psVector *index, psF32 key, bool above);
 psF32 psVectorInterpolate (psVector *index, psVector *value, psF32 key);
Index: /branches/rel10_ifa/psModules/src/objects/pmModel.c
===================================================================
--- /branches/rel10_ifa/psModules/src/objects/pmModel.c	(revision 6750)
+++ /branches/rel10_ifa/psModules/src/objects/pmModel.c	(revision 6751)
@@ -6,6 +6,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.1.2.2 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2006-03-09 03:14:23 $
+ *  @version $Revision: 1.1.2.3 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2006-04-01 02:47:20 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -50,5 +50,5 @@
     tmp->chisq = 0.0;
     tmp->nIter = 0;
-    tmp->radius = 0;
+    tmp->radiusTMP = 0;
     tmp->status = PM_MODEL_UNTRIED;
 
@@ -82,5 +82,5 @@
     new->nIter  = model->nIter;
     new->status = model->status;
-    new->radius = model->radius;
+    new->radiusTMP = model->radiusTMP;
 
     for (int i = 0; i < new->params->n; i++) {
Index: /branches/rel10_ifa/psModules/src/objects/pmModel.h
===================================================================
--- /branches/rel10_ifa/psModules/src/objects/pmModel.h	(revision 6750)
+++ /branches/rel10_ifa/psModules/src/objects/pmModel.h	(revision 6751)
@@ -6,6 +6,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.1.2.2 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2006-03-09 03:14:23 $
+ *  @version $Revision: 1.1.2.3 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2006-04-01 02:47:20 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -45,5 +45,5 @@
     int nIter;    ///< number of iterations to reach min
     pmModelStatus status;  ///< fit status
-    float radius;   ///< fit radius actually used
+    float radiusTMP;   ///< fit radius actually used
 }
 pmModel;
Index: /branches/rel10_ifa/psModules/src/objects/pmSourceFitModel.c
===================================================================
--- /branches/rel10_ifa/psModules/src/objects/pmSourceFitModel.c	(revision 6750)
+++ /branches/rel10_ifa/psModules/src/objects/pmSourceFitModel.c	(revision 6751)
@@ -6,6 +6,6 @@
  *  @author GLG, MHPCC
  *
- *  @version $Revision: 1.1.2.2 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2006-03-09 03:14:23 $
+ *  @version $Revision: 1.1.2.3 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2006-04-01 02:47:20 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -117,12 +117,17 @@
     psMinConstrain *constrain = psMinConstrainAlloc();
 
-    // PSF model only fits first 4 parameters, EXT model fits all
+    // PSF model only fits x,y,Io, EXT model fits all (both skip sky)
+    paramMask = psVectorAlloc (params->n, PS_TYPE_U8);
+    paramMask->data.U8[0] = 1;
     if (PSF) {
-        paramMask = psVectorAlloc (params->n, PS_TYPE_U8);
-        for (int i = 0; i < 4; i++) {
+        for (int i = 1; i < 4; i++) {
             paramMask->data.U8[i] = 0;
         }
         for (int i = 4; i < paramMask->n; i++) {
             paramMask->data.U8[i] = 1;
+        }
+    } else {
+        for (int i = 1; i < paramMask->n; i++) {
+            paramMask->data.U8[i] = 0;
         }
     }
Index: /branches/rel10_ifa/psModules/src/objects/pmSourceFitSet.c
===================================================================
--- /branches/rel10_ifa/psModules/src/objects/pmSourceFitSet.c	(revision 6750)
+++ /branches/rel10_ifa/psModules/src/objects/pmSourceFitSet.c	(revision 6751)
@@ -3,6 +3,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.1.2.2 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2006-03-09 03:14:23 $
+ *  @version $Revision: 1.1.2.3 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2006-04-01 02:47:20 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -150,5 +150,7 @@
     constrain->paramMin->data.F32[0]   = oneParMin->data.F32[0];
     constrain->paramMax->data.F32[0]   = oneParMax->data.F32[0];
-    constrain->paramMask->data.U8[0]   = 0;
+
+    // XXX all models skip the sky
+    constrain->paramMask->data.U8[0]   = 1;
     for (int i = 0; i < nSrc; i++) {
         model = modelSet->data[i];
Index: /branches/rel10_ifa/psModules/src/objects/pmSourceIO_RAW.c
===================================================================
--- /branches/rel10_ifa/psModules/src/objects/pmSourceIO_RAW.c	(revision 6750)
+++ /branches/rel10_ifa/psModules/src/objects/pmSourceIO_RAW.c	(revision 6751)
@@ -3,6 +3,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.1.2.2 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2006-03-28 02:14:56 $
+ *  @version $Revision: 1.1.2.3 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2006-04-01 02:47:20 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -95,5 +95,5 @@
                  log10(model[0].chisq/model[0].nDOF),
                  source[0].moments->SN,
-                 model[0].radius,
+                 model[0].radiusTMP,
                  model[0].nDOF,
                  model[0].nIter);
@@ -125,5 +125,5 @@
         if (source->type != PM_SOURCE_TYPE_EXTENDED)
             continue;
-        model = pmSourceMagnitudes (source, NULL, 0.0);
+        model = pmSourceMagnitudes (source, NULL, false, false);
         if (model == NULL)
             continue;
@@ -151,5 +151,5 @@
                  log10(model[0].chisq/model[0].nDOF),
                  source[0].moments->SN,
-                 model[0].radius,
+                 model[0].radiusTMP,
                  model[0].nDOF,
                  model[0].nIter);
Index: /branches/rel10_ifa/psModules/src/objects/pmSourcePhotometry.c
===================================================================
--- /branches/rel10_ifa/psModules/src/objects/pmSourcePhotometry.c	(revision 6750)
+++ /branches/rel10_ifa/psModules/src/objects/pmSourcePhotometry.c	(revision 6751)
@@ -3,6 +3,6 @@
  *  @author EAM, IfA; GLG, MHPCC
  *
- *  @version $Revision: 1.1.2.2 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2006-03-09 03:14:23 $
+ *  @version $Revision: 1.1.2.3 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2006-04-01 02:47:20 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -55,5 +55,5 @@
 // XXX EAM : masked region should be (optionally) elliptical
 // XXX curve of growth is corrected to
-pmModel *pmSourceMagnitudes (pmSource *source, pmPSF *psf, float apRadius)
+pmModel *pmSourceMagnitudes (pmSource *source, pmPSF *psf, bool growthCorr, bool apTrendCorr)
 {
 
@@ -62,5 +62,4 @@
     float x, y;
     float rflux;
-    float radius;
     float SN;
     pmModel *model;
@@ -71,5 +70,4 @@
         if (model == NULL)
             return NULL;
-        radius = (apRadius > 0) ? apRadius : model->radius;
         isPSF = true;
         break;
@@ -79,5 +77,4 @@
         if (model == NULL)
             return NULL;
-        radius = model->radius;
         isPSF = false;
         break;
@@ -101,6 +98,6 @@
     pmModelAdd (source->pixels, source->mask, model, false, false);
 
-    // set aperture mask circle to scaled radius
-    psImageKeepCircle (source->mask, x, y, model->radius, "OR", PM_SOURCE_MASK_MARKED);
+    // set aperture mask circle to model radius
+    psImageKeepCircle (source->mask, x, y, model->radiusTMP, "OR", PM_SOURCE_MASK_MARKED);
 
     // measure object model photometry
@@ -110,5 +107,5 @@
     // measure object aperture photometry
     if (SN > AP_MIN_SN) {
-        status = pmSourcePhotometryAper  (&source->apMag,  model, source->pixels, source->mask);
+        status = pmSourcePhotometryAper  (&source->apMag, model, source->pixels, source->mask);
     } else {
         source->apMag = 99.0;
@@ -118,15 +115,19 @@
     if (isPSF && (psf != NULL)) {
         if (SN > AP_MIN_SN) {
-            if (psf->growth != NULL) {
-                source->apMag += pmGrowthCurveCorrect (psf->growth, radius);
+            if ((psf->growth != NULL) && growthCorr) {
+                source->apMag += pmGrowthCurveCorrect (psf->growth, model->radiusTMP);
             }
-            rflux   = pow (10.0, 0.4*source->psfMag);
-            source->apMag  -= PS_SQR(model->radius)*rflux * psf->skyBias + psf->skySat / rflux;
-        }
-        source->psfMag += psPolynomial4DEval (psf->ApTrend, x, y, 0.0, 0.0);
+            if (apTrendCorr) {
+                rflux   = pow (10.0, 0.4*source->psfMag);
+                source->apMag  -= PS_SQR(model->radiusTMP)*rflux * psf->skyBias + psf->skySat / rflux;
+            }
+        }
+        if (apTrendCorr) {
+            source->psfMag += psPolynomial4DEval (psf->ApTrend, x, y, 0.0, 0.0);
+        }
     }
 
     // unmask aperture
-    psImageKeepCircle (source->mask, x, y, model->radius, "AND", ~PM_SOURCE_MASK_MARKED);
+    psImageKeepCircle (source->mask, x, y, model->radiusTMP, "AND", ~PM_SOURCE_MASK_MARKED);
 
     // subtract object, leave local sky
@@ -168,9 +169,10 @@
 }
 
+# define DO_SKY 0
 // return source aperture magnitude
 bool pmSourcePhotometryAper (float *apMag, pmModel *model, psImage *image, psImage *mask)
 {
-
     float apSum = 0;
+    float sky = 0;
     *apMag = 99.0;
 
@@ -179,5 +181,9 @@
     }
 
-    float sky = model->params->data.F32[0];
+    if (DO_SKY) {
+        sky = model->params->data.F32[0];
+    } else {
+        sky = 0;
+    }
 
     // measure apMag
@@ -191,6 +197,6 @@
     if (apSum <= 0)
         return false;
+
     *apMag = -2.5*log10(apSum);
-
     return (true);
 }
Index: /branches/rel10_ifa/psModules/src/objects/pmSourcePhotometry.h
===================================================================
--- /branches/rel10_ifa/psModules/src/objects/pmSourcePhotometry.h	(revision 6750)
+++ /branches/rel10_ifa/psModules/src/objects/pmSourcePhotometry.h	(revision 6751)
@@ -3,6 +3,6 @@
  *  @author EAM, IfA; GLG, MHPCC
  *
- *  @version $Revision: 1.1.2.2 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2006-03-09 03:14:23 $
+ *  @version $Revision: 1.1.2.3 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2006-04-01 02:47:20 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -31,5 +31,5 @@
 
 bool pmSourcePhotometryAper(
-    float *apMag,                       ///< aperture flux magnitude
+    float   *apMag,                     ///< aperture flux magnitude
     pmModel *model,                     ///< model used for photometry
     psImage *image,                     ///< image pixels to be used
@@ -37,5 +37,5 @@
 );
 
-pmModel *pmSourceMagnitudes (pmSource *source, pmPSF *psf, float apRadius);
+pmModel *pmSourceMagnitudes (pmSource *source, pmPSF *psf, bool growthCorr, bool apTrendCorr);
 float pmSourceCrossProduct (pmSource *Mi, pmSource *Mj);
 float pmSourceCrossWeight (pmSource *Mi, pmSource *Mj);
