Index: trunk/psModules/src/objects/pmPSFtry.c
===================================================================
--- trunk/psModules/src/objects/pmPSFtry.c	(revision 13803)
+++ trunk/psModules/src/objects/pmPSFtry.c	(revision 13898)
@@ -5,6 +5,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.42 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-06-13 23:41:51 $
+ *  @version $Revision: 1.43 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-06-20 02:22:26 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -96,5 +96,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)
+pmPSFtry *pmPSFtryModel (psArray *sources, char *modelName, float RADIUS, bool poissonErrors, psPolynomial2D *psfTrendMask, bool applyWeights, psMaskType maskVal, psMaskType mark)
 {
     bool status;
@@ -116,13 +116,13 @@
         if (source->modelEXT == NULL) {
             psError(PS_ERR_UNKNOWN, false, "failed to build model");
-	    psFree(psfTry);
+            psFree(psfTry);
             return NULL;
         }
 
         // set object mask to define valid pixels
-        psImageKeepCircle (source->maskObj, source->peak->x, source->peak->y, RADIUS, "OR", PM_MASK_MARK);
+        psImageKeepCircle (source->maskObj, source->peak->x, source->peak->y, RADIUS, "OR", mark);
 
         // fit model as EXT, not PSF
-        status = pmSourceFitModel (source, source->modelEXT, PM_SOURCE_FIT_EXT);
+        status = pmSourceFitModel (source, source->modelEXT, PM_SOURCE_FIT_EXT, maskVal);
 
         // exclude the poor fits
@@ -139,5 +139,5 @@
     if (!pmPSFFromPSFtry (psfTry, applyWeights)) {
         psError(PS_ERR_UNKNOWN, false, "failed to construct a psf model from collection of sources");
-	psFree(psfTry);
+        psFree(psfTry);
         return NULL;
     }
@@ -154,28 +154,28 @@
         // set shape for this model based on PSF
         source->modelPSF = pmModelFromPSF (source->modelEXT, psfTry->psf);
-	if (source->modelPSF == NULL) {
+        if (source->modelPSF == NULL) {
             psfTry->mask->data.U8[i] = PSFTRY_MASK_BAD_MODEL;
-	    abort();
-	    continue;
-	}
+            abort();
+            continue;
+        }
         source->modelPSF->radiusFit = RADIUS;
 
         // set object mask to define valid pixels
-        psImageKeepCircle (source->maskObj, source->peak->x, source->peak->y, RADIUS, "OR", PM_MASK_MARK);
+        psImageKeepCircle (source->maskObj, source->peak->x, source->peak->y, RADIUS, "OR", mark);
 
         // fit the PSF model to the source
-        status = pmSourceFitModel (source, source->modelPSF, PM_SOURCE_FIT_PSF);
+        status = pmSourceFitModel (source, source->modelPSF, PM_SOURCE_FIT_PSF, maskVal);
 
         // skip poor fits
         if (!status) {
             psfTry->mask->data.U8[i] = PSFTRY_MASK_PSF_FAIL;
-	    psTrace ("psModules.pmPSFtry", 4, "dropping %d (%d,%d) : failed PSF fit\n", i, source->peak->x, source->peak->y);
+            psTrace ("psModules.pmPSFtry", 4, "dropping %d (%d,%d) : failed PSF fit\n", i, source->peak->x, source->peak->y);
             continue;
         }
 
         // XXX : use a different aperture radius from the fit radius?
-        if (!pmSourceMagnitudes (source, psfTry->psf, PM_SOURCE_PHOT_INTERP)) {
+        if (!pmSourceMagnitudes (source, psfTry->psf, PM_SOURCE_PHOT_INTERP, maskVal, mark)) {
             psfTry->mask->data.U8[i] = PSFTRY_MASK_BAD_PHOT;
-	    psTrace ("psModules.pmPSFtry", 4, "dropping %d (%d,%d) : poor photometry\n", i, source->peak->x, source->peak->y);
+            psTrace ("psModules.pmPSFtry", 4, "dropping %d (%d,%d) : poor photometry\n", i, source->peak->x, source->peak->y);
             continue;
         }
@@ -203,5 +203,5 @@
             flux->data.F64[i] = 0.0;
             chisq->data.F64[i] = 0.0;
-            mask->data.U8[i] = 1;
+            mask->data.U8[i] = 0xff;
         } else {
             flux->data.F64[i] = source->modelPSF->params->data.F32[PM_PAR_I0];
@@ -217,5 +217,5 @@
 
     // linear clipped fit of chisq trend vs flux
-    bool result = psVectorClipFitPolynomial1D(psfTry->psf->ChiTrend, stats, mask, 1, chisq, NULL, flux);
+    bool result = psVectorClipFitPolynomial1D(psfTry->psf->ChiTrend, stats, mask, 0xff, chisq, NULL, flux);
     psLogMsg ("pmPSFtry", 4, "chisq vs flux fit: %f +/- %f\n", stats->robustMedian, stats->robustStdev);
 
@@ -289,7 +289,7 @@
         psError(PS_ERR_UNKNOWN, false, "Failed to fit clipped poly");
 
-	psFree(poly);
-	psFree(r2rflux);
-	psFree(stats);
+        psFree(poly);
+        psFree(r2rflux);
+        psFree(stats);
 
         return false;
@@ -373,8 +373,8 @@
         y->data.F64[i] = source->modelEXT->params->data.F32[PM_PAR_YPOS];
 
-	// weight by the error on the source flux
-	if (dz) {
-	    dz->data.F64[i] = source->modelEXT->dparams->data.F32[PM_PAR_I0];
-	}
+        // weight by the error on the source flux
+        if (dz) {
+            dz->data.F64[i] = source->modelEXT->dparams->data.F32[PM_PAR_I0];
+        }
     }
 
@@ -399,12 +399,12 @@
     psVector *e2   = psVectorAlloc (psfTry->sources->n, PS_TYPE_F64);
     for (int i = 0; i < psfTry->sources->n; i++) {
-	pmSource *source = psfTry->sources->data[i];
-	if (source->modelEXT == NULL) continue;
-
-	psEllipsePol pol = pmPSF_ModelToFit (source->modelEXT->params->data.F32);
-
-	e0->data.F64[i] = pol.e0;
-	e1->data.F64[i] = pol.e1;
-	e2->data.F64[i] = pol.e2;
+        pmSource *source = psfTry->sources->data[i];
+        if (source->modelEXT == NULL) continue;
+
+        psEllipsePol pol = pmPSF_ModelToFit (source->modelEXT->params->data.F32);
+
+        e0->data.F64[i] = pol.e0;
+        e1->data.F64[i] = pol.e1;
+        e2->data.F64[i] = pol.e2;
     }
 
@@ -413,20 +413,20 @@
     for (int i = 0; i < stats->clipIter; i++) {
         psVectorClipFitPolynomial2D (psf->params_NEW->data[PM_PAR_E0], stats, psfTry->mask, 0xff, e0, dz, x, y);
-	psTrace ("psModules.pmPSFtry", 4, "clipped E0 : keeping %ld of %ld\n", stats->clippedNvalues, e0->n);
+        psTrace ("psModules.pmPSFtry", 4, "clipped E0 : keeping %ld of %ld\n", stats->clippedNvalues, e0->n);
         psVectorClipFitPolynomial2D (psf->params_NEW->data[PM_PAR_E1], stats, psfTry->mask, 0xff, e1, dz, x, y);
-	psTrace ("psModules.pmPSFtry", 4, "clipped E1 : keeping %ld of %ld\n", stats->clippedNvalues, e1->n);
+        psTrace ("psModules.pmPSFtry", 4, "clipped E1 : keeping %ld of %ld\n", stats->clippedNvalues, e1->n);
         psVectorClipFitPolynomial2D (psf->params_NEW->data[PM_PAR_E2], stats, psfTry->mask, 0xff, e2, dz, x, y);
-	psTrace ("psModules.pmPSFtry", 4, "clipped E2 : keeping %ld of %ld\n", stats->clippedNvalues, e2->n);
+        psTrace ("psModules.pmPSFtry", 4, "clipped E2 : keeping %ld of %ld\n", stats->clippedNvalues, e2->n);
     }
 
     // XXX temporary dump of the psf parameters
     if (psTraceGetLevel("psModules.objects") >= 4) {
-	FILE *f = fopen ("pol.dat", "w");
-	for (int i = 0; i < e0->n; i++) {
-	    fprintf (f, "%f %f  :  %f %f %f  : %d\n", 
-		     x->data.F64[i], y->data.F64[i], 
-		     e0->data.F64[i], e1->data.F64[i], e2->data.F64[i], psfTry->mask->data.U8[i]);
-	}
-	fclose (f);
+        FILE *f = fopen ("pol.dat", "w");
+        for (int i = 0; i < e0->n; i++) {
+            fprintf (f, "%f %f  :  %f %f %f  : %d\n",
+                     x->data.F64[i], y->data.F64[i],
+                     e0->data.F64[i], e1->data.F64[i], e2->data.F64[i], psfTry->mask->data.U8[i]);
+        }
+        fclose (f);
     }
 
@@ -437,16 +437,16 @@
     // skip the unfitted parameters (X, Y, Io, Sky) and the shape parameters (SXX, SYY, SXY)
     for (int i = 0; i < psf->params_NEW->n; i++) {
-	switch (i) {
-	  case PM_PAR_SKY:
-	  case PM_PAR_I0:
-	  case PM_PAR_XPOS:
-	  case PM_PAR_YPOS:            
-	  case PM_PAR_SXX:            
-	  case PM_PAR_SYY:            
-	  case PM_PAR_SXY:            
-	    continue;
-	  default:
-	    break;
-	}
+        switch (i) {
+          case PM_PAR_SKY:
+          case PM_PAR_I0:
+          case PM_PAR_XPOS:
+          case PM_PAR_YPOS:
+          case PM_PAR_SXX:
+          case PM_PAR_SYY:
+          case PM_PAR_SXY:
+            continue;
+          default:
+            break;
+        }
 
         // select the per-object fitted data for this parameter
@@ -463,9 +463,9 @@
         if (!psVectorClipFitPolynomial2D(psf->params_NEW->data[i], stats, psfTry->mask, 0xff, z, NULL, x, y)) {
             psError(PS_ERR_UNKNOWN, false, "failed to build psf model for parameter %d", i);
-	    psFree(stats);
-	    psFree(x);
-	    psFree(y);
-	    psFree(z);
-	    psFree(dz);
+            psFree(stats);
+            psFree(x);
+            psFree(y);
+            psFree(z);
+            psFree(dz);
             return false;
         }
