Index: /branches/eam_branch_20070921/psModules/src/objects/pmPSF.c
===================================================================
--- /branches/eam_branch_20070921/psModules/src/objects/pmPSF.c	(revision 14971)
+++ /branches/eam_branch_20070921/psModules/src/objects/pmPSF.c	(revision 14972)
@@ -6,6 +6,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.28.2.1 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-09-21 18:55:11 $
+ *  @version $Revision: 1.28.2.2 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-09-21 21:45:00 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -41,29 +41,8 @@
 
 /*****************************************************************************/
-/* DEFINE STATEMENTS                                                         */
-/*****************************************************************************/
-
-/*****************************************************************************/
-/* TYPE DEFINITIONS                                                          */
-/*****************************************************************************/
-
-/*****************************************************************************/
-/* GLOBAL VARIABLES                                                          */
-/*****************************************************************************/
-
-/*****************************************************************************/
-/* FILE STATIC VARIABLES                                                     */
-/*****************************************************************************/
-
-/*****************************************************************************/
-/* FUNCTION IMPLEMENTATION - LOCAL                                           */
-/*****************************************************************************/
-
-/*****************************************************************************/
 /* FUNCTION IMPLEMENTATION - PUBLIC                                          */
 /*****************************************************************************/
 
 static void pmPSFOptionsFree (pmPSFOptions *options) {
-
     return;
 }
@@ -72,8 +51,9 @@
 
     pmPSFOptions *options = (pmPSFOptions *) psAlloc(sizeof(pmPSFOptions));
+    psMemSetDeallocator(options, (psFreeFunc) pmPSFOptionsFree);
 
     options->type          = 0;
     options->poissonErrors = false;
-    options->psfTrendMode  = PM_TREND_MAP;
+    options->psfTrendMode  = PM_TREND_NONE;
     options->psfTrendNx    = 0;
     options->psfTrendNy    = 0;
@@ -115,4 +95,5 @@
 
     pmPSF *psf = (pmPSF *) psAlloc(sizeof(pmPSF));
+    psMemSetDeallocator(psf, (psFreeFunc) pmPSFFree);
 
     psf->type     = options->type;
@@ -163,24 +144,23 @@
     // PM_PAR_XPOS, etc)
 
+    // XXX make this a user option
+    psStats *stats = psStatsAlloc (PS_STAT_ROBUST_MEDIAN | PS_STAT_ROBUST_STDEV);
+
     // XXX define new structure to carry in the psf options
-    if (psfTrendMask) {
+    if (options->psfTrendMode != PM_TREND_NONE) {
         for (int i = 0; i < psf->params->n; i++) {
-            if (i == PM_PAR_SKY)
-                continue;
-            if (i == PM_PAR_I0)
-                continue;
-            if (i == PM_PAR_XPOS)
-                continue;
-            if (i == PM_PAR_YPOS)
-                continue;
-
-	    // XXX need to set stats, image
+            if (i == PM_PAR_SKY) continue;
+            if (i == PM_PAR_I0) continue;
+            if (i == PM_PAR_XPOS) continue;
+            if (i == PM_PAR_YPOS) continue;
+
+	    // XXX need to set stats & image or else nXfine,nYfine
 	    pmTrend2D *param = pmTrend2DAlloc (options->psfTrendMode, image, options->psfTrendNx, options->psfTrendNx, stats);
             psf->params->data[i] = param;
         }
     }
-
-    psMemSetDeallocator(psf, (psFreeFunc) pmPSFFree);
-    return(psf);
+    
+    psFree (stats);
+    return psf;
 }
 
Index: /branches/eam_branch_20070921/psModules/src/objects/pmPSFtry.c
===================================================================
--- /branches/eam_branch_20070921/psModules/src/objects/pmPSFtry.c	(revision 14971)
+++ /branches/eam_branch_20070921/psModules/src/objects/pmPSFtry.c	(revision 14972)
@@ -5,6 +5,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.45 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-09-21 00:06:57 $
+ *  @version $Revision: 1.45.2.1 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-09-21 21:45:00 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -58,10 +58,10 @@
 
 // allocate a pmPSFtry based on the desired sources and the model (identified by name)
-pmPSFtry *pmPSFtryAlloc (psArray *sources, char *modelName, bool poissonErrors, psPolynomial2D *psfTrendMask)
+pmPSFtry *pmPSFtryAlloc (psArray *sources, char *modelName, pmPSFOptions *options)
 {
 
     // validate the requested model name
-    pmModelType type = pmModelClassGetType (modelName);
-    if (type == -1) {
+    options->type = pmModelClassGetType (modelName);
+    if (options->type == -1) {
         psError (PS_ERR_UNKNOWN, true, "invalid model name %s", modelName);
         return NULL;
@@ -70,5 +70,5 @@
     pmPSFtry *test = (pmPSFtry *) psAlloc(sizeof(pmPSFtry));
 
-    test->psf       = pmPSFAlloc (type, poissonErrors, psfTrendMask);
+    test->psf       = pmPSFAlloc (options);
     test->metric    = psVectorAlloc (sources->n, PS_TYPE_F32);
     test->metricErr = psVectorAlloc (sources->n, PS_TYPE_F32);
@@ -99,5 +99,5 @@
 
 // generate a pmPSFtry with a copy of the test PSF sources
-pmPSFtry *pmPSFtryModel (psArray *sources, char *modelName, float RADIUS, bool poissonErrors, psPolynomial2D *psfTrendMask, bool applyWeights, psMaskType maskVal, psMaskType mark)
+pmPSFtry *pmPSFtryModel (psArray *sources, char *modelName, pmPSFOptions *options, psMaskType maskVal, psMaskType mark)
 {
     bool status;
@@ -105,5 +105,7 @@
     int Npsf = 0;
 
-    pmPSFtry *psfTry = pmPSFtryAlloc (sources, modelName, poissonErrors, psfTrendMask);
+    // XXX use the options structure here instead?
+
+    pmPSFtry *psfTry = pmPSFtryAlloc (sources, modelName, options);
     if (psfTry == NULL) {
         psError (PS_ERR_UNKNOWN, false, "failed to allocate psf model");
@@ -124,5 +126,5 @@
 
         // set object mask to define valid pixels
-        psImageKeepCircle (source->maskObj, source->peak->x, source->peak->y, RADIUS, "OR", mark);
+        psImageKeepCircle (source->maskObj, source->peak->x, source->peak->y, options->radius, "OR", mark);
 
         // fit model as EXT, not PSF
@@ -140,5 +142,5 @@
 
     // stage 2: construct a psf (pmPSF) from this collection of model fits
-    if (!pmPSFFromPSFtry (psfTry, applyWeights)) {
+    if (!pmPSFFromPSFtry (psfTry, options->applyWeights)) {
         psError(PS_ERR_UNKNOWN, false, "failed to construct a psf model from collection of sources");
         psFree(psfTry);
@@ -162,8 +164,8 @@
             continue;
         }
-        source->modelPSF->radiusFit = RADIUS;
+        source->modelPSF->radiusFit = options->radius;
 
         // set object mask to define valid pixels
-        psImageKeepCircle (source->maskObj, source->peak->x, source->peak->y, RADIUS, "OR", mark);
+        psImageKeepCircle (source->maskObj, source->peak->x, source->peak->y, options->radius, "OR", mark);
 
         // fit the PSF model to the source
@@ -241,5 +243,5 @@
 
     // XXX this function wants aperture radius for pmSourcePhotometry
-    pmPSFtryMetric (psfTry, RADIUS);
+    pmPSFtryMetric (psfTry, options->radius);
     psLogMsg ("psphot.pspsf", 3, "try model %s, ap-fit: %f +/- %f : sky bias: %f\n",
               modelName, psfTry->psf->ApResid, psfTry->psf->dApResid, psfTry->psf->skyBias);
@@ -501,5 +503,5 @@
     psFree (z);
     psFree (dz);
-    return (true);
+    return true;
 }
 
Index: /branches/eam_branch_20070921/psModules/src/objects/pmTrend2D.h
===================================================================
--- /branches/eam_branch_20070921/psModules/src/objects/pmTrend2D.h	(revision 14971)
+++ /branches/eam_branch_20070921/psModules/src/objects/pmTrend2D.h	(revision 14972)
@@ -5,6 +5,6 @@
  * @author EAM, IfA
  *
- * @version $Revision: 1.2 $ $Name: not supported by cvs2svn $
- * @date $Date: 2007-09-21 00:09:18 $
+ * @version $Revision: 1.2.2.1 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2007-09-21 21:45:00 $
  * Copyright 2004 Maui High Performance Computing Center, University of Hawaii
  */
@@ -17,4 +17,5 @@
 
 typedef enum {
+    PM_TREND_NONE,
     PM_TREND_POLY_ORD,
     PM_TREND_POLY_CHEB,
