Index: trunk/psModules/src/objects/pmPSF.h
===================================================================
--- trunk/psModules/src/objects/pmPSF.h	(revision 14936)
+++ trunk/psModules/src/objects/pmPSF.h	(revision 15000)
@@ -6,6 +6,6 @@
  * @author EAM, IfA
  *
- * @version $Revision: 1.16 $ $Name: not supported by cvs2svn $
- * @date $Date: 2007-09-21 00:05:35 $
+ * @version $Revision: 1.17 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2007-09-24 21:27:58 $
  * Copyright 2004 Maui High Performance Computing Center, University of Hawaii
  */
@@ -19,17 +19,4 @@
 // type of model carried by the pmModel structure
 typedef int pmModelType;
-
-typedef enum {
-    PM_PSF_APTREND_ERROR = 0,
-    PM_PSF_APTREND_NONE,
-    PM_PSF_APTREND_CONSTANT,
-    PM_PSF_APTREND_SKYBIAS,
-    PM_PSF_APTREND_SKYSAT,
-    PM_PSF_APTREND_XY_LIN,
-    PM_PSF_APTREND_XY_QUAD,
-    PM_PSF_APTREND_SKY_XY_LIN,
-    PM_PSF_APTREND_SKYSAT_XY_LIN,
-    PM_PSF_APTREND_ALL
-} pmPSFApTrendOptions;
 
 /** pmPSF data structure
@@ -49,4 +36,5 @@
     pmModelType type;			///< PSF Model in use
     psArray *params;			///< Model parameters (psPolynomial2D)
+    psStats *psfTrendStats;		///< psf parameter trend clipping stats
     psPolynomial1D *ChiTrend;           ///< Chisq vs flux fit (correction for systematic errors)
     pmTrend2D *ApTrend;                 ///< ApResid vs (x,y)
@@ -59,9 +47,31 @@
     int nPSFstars;                      ///< number of stars used to measure PSF
     int nApResid;                       ///< number of stars used to measure ApResid
-    bool poissonErrors;
+    int fieldNx;
+    int fieldNy;
+    int fieldXo;
+    int fieldYo;
+    bool poissonErrorsPhotLMM;		///< use poission errors for non-linear model fitting
+    bool poissonErrorsPhotLin;		///< use poission errors for linear model fitting
+    bool poissonErrorsParams;		///< use poission errors for model parameter fitting
     pmGrowthCurve *growth;              ///< apMag vs Radius
     pmResiduals *residuals;             ///< normalized residual image (no spatial variation)
 }
 pmPSF;
+
+typedef struct {
+    pmModelType   type;
+    psStats      *stats;		// psfTrend clipping stats
+    pmTrend2DMode psfTrendMode;
+    int           psfTrendNx;
+    int           psfTrendNy;
+    int           psfFieldNx;
+    int           psfFieldNy;
+    int           psfFieldXo;
+    int           psfFieldYo;
+    bool 	  poissonErrorsPhotLMM;	///< use poission errors for non-linear model fitting
+    bool 	  poissonErrorsPhotLin;	///< use poission errors for linear model fitting
+    bool 	  poissonErrorsParams; ///< use poission errors for model parameter fitting
+    float         radius;
+} pmPSFOptions;
 
 # define PM_PAR_E0 PM_PAR_SXX
@@ -74,13 +84,6 @@
  *
  */
-pmPSF *pmPSFAlloc(
-    pmModelType type,     // type of model for PSF
-    bool poissonErrors,
-    psPolynomial2D *psfTrendMask
-);
-
-bool pmPSFMaskApTrend (psPolynomial4D *trend, pmPSFApTrendOptions option);
-
-pmPSFApTrendOptions pmPSFApTrendOptionFromName (char *name);
+pmPSF *pmPSFAlloc (pmPSFOptions *options);
+pmPSFOptions *pmPSFOptionsAlloc ();
 
 double pmPSF_SXYfromModel (psF32 *modelPar);
@@ -91,7 +94,8 @@
 
 bool pmPSF_AxesToModel (psF32 *modelPar, psEllipseAxes axes);
+bool pmPSF_FitToModel (psF32 *fittedPar, float minMinorAxis);
+
+psEllipsePol pmPSF_ModelToFit (psF32 *modelPar);
 psEllipseAxes pmPSF_ModelToAxes (psF32 *modelPar, double maxAR);
-bool pmPSF_FitToModel (psF32 *fittedPar, float minMinorAxis);
-psEllipsePol pmPSF_ModelToFit (psF32 *modelPar);
 
 /// @}
