Index: trunk/ppSim/src/ppSimSetPSF.c
===================================================================
--- trunk/ppSim/src/ppSimSetPSF.c	(revision 14818)
+++ trunk/ppSim/src/ppSimSetPSF.c	(revision 14994)
@@ -6,5 +6,5 @@
     bool status;
     pmPSF *psf = NULL;
-    psPolynomial2D *param = NULL;
+    pmTrend2D *param = NULL;
 
     // the pmPSF IO functions stores the PSF on the chip->analysis
@@ -23,25 +23,19 @@
     }
 
-    pmModelType type = pmModelClassGetType (psfModelName);
-    if (type == -1) {
+    // structure to store user options defining the psf
+    pmPSFOptions *options = pmPSFOptionsAlloc ();
+    options->type = pmModelClassGetType (psfModelName);
+    if (options->type == -1) {
         psError (PS_ERR_UNKNOWN, false, "invalid model name");
         return false;
     }
 
-    // generate a psf with no spatial variation
-    psf = pmPSFAlloc (type, true, NULL);
-    for (int i = 0; i < psf->params->n; i++) {
+    // no spatial variation
+    options->psfTrendMode = PM_TREND_POLY_ORD;
+    options->psfTrendNx = 0;
+    options->psfTrendNy = 0;
 
-            if (i == PM_PAR_SKY)  continue;
-            if (i == PM_PAR_I0)   continue;
-            if (i == PM_PAR_XPOS) continue;
-            if (i == PM_PAR_YPOS) continue;
-
-            // generate a 'constant' polynomial, unmasked
-            param = psPolynomial2DAlloc(PS_POLYNOMIAL_ORD, 0, 0);
-            param->mask[0][0] = 0;
-
-            psf->params->data[i] = param;
-    }
+    // generate the psf
+    psf = pmPSFAlloc (options);
 
     psEllipseAxes axes;
@@ -54,22 +48,23 @@
 
     pol = psEllipseAxesToPol (axes);
-
+    
+    
     param = psf->params->data[PM_PAR_E0];
-    param->coeff[0][0] = pol.e0;
+    param->poly->coeff[0][0] = pol.e0;
 
     param = psf->params->data[PM_PAR_E1];
-    param->coeff[0][0] = pol.e1;
+    param->poly->coeff[0][0] = pol.e1;
 
     param = psf->params->data[PM_PAR_E2];
-    param->coeff[0][0] = pol.e2;
+    param->poly->coeff[0][0] = pol.e2;
 
     if (!strcasecmp (psfModelName, "PS_MODEL_QGAUSS")) {
         param = psf->params->data[PM_PAR_7];
-        param->coeff[0][0] = 1.0;
+        param->poly->coeff[0][0] = 1.0;
     }
 
     if (!strcasecmp (psfModelName, "PS_MODEL_RGAUSS")) {
         param = psf->params->data[PM_PAR_7];
-        param->coeff[0][0] = 1.0;
+        param->poly->coeff[0][0] = 1.0;
     }
 
