Index: trunk/psphot/src/psphot-utils.c
===================================================================
--- trunk/psphot/src/psphot-utils.c	(revision 4574)
+++ trunk/psphot/src/psphot-utils.c	(revision 4630)
@@ -79,4 +79,5 @@
 {
 
+    double dP, flux;
     int i, j;
     FILE *f;
@@ -96,21 +97,44 @@
 	model = (psModel  *) source->modelPSF;
 	if (model == NULL) continue;
-	if (source->type == PS_SOURCE_GALAXY) continue;
-	if (source->type == PS_SOURCE_DEFECT) continue;
-	if (source->type == PS_SOURCE_SATURATED) continue;
+
+	// valid source types for this function
+	if (source->type == PS_SOURCE_SATSTAR) goto valid;
+	if (source->type == PS_SOURCE_PSFSTAR) goto valid;
+	if (source->type == PS_SOURCE_GOODSTAR) goto valid;
+	continue;
+
+    valid:
 	params = model->params;
 	dparams = model->dparams;
-	fprintf (f, "%7.1f %7.1f  %5.1f %7.3f  %7.4f  ", 
-		 params[0].data.F32[2], params[0].data.F32[3], 
-		 params[0].data.F32[0], -2.5*log10(params[0].data.F32[1]), (dparams[0].data.F32[1]/params[0].data.F32[1]));
+	
+	dP = 0;
+	dP += PS_SQR(dparams[0].data.F32[2]);
+	dP += PS_SQR(dparams[0].data.F32[3]);
+	dP = sqrt (dP);
+	
+	psModelFlux modelFluxFunc = psModelFlux_GetFunction (model->type);
+	flux = modelFluxFunc (params);
+
+	fprintf (f, "%7.1f %7.1f  %5.1f %7.3f  %7.4f %7.4f  ", 
+		 params[0].data.F32[2], 
+		 params[0].data.F32[3], 
+		 params[0].data.F32[0], 
+		 -2.5*log10(flux), 
+		 (dparams[0].data.F32[1]/params[0].data.F32[1]),
+		 dP);
 	for (j = 0; j < model->params->n - 4; j++) {
 	    fprintf (f, "%9.6f ", params[0].data.F32[j+4]);
 	}
+	fprintf (f, " : ");
 	for (j = 0; j < model->params->n - 4; j++) {
 	    fprintf (f, "%9.6f ", dparams[0].data.F32[j+4]);
 	}
-	fprintf (f, ": %2d %7.4f %7.4f %7.2f (%d %d)\n", 
-		 source[0].type, log10(model[0].chisq), source[0].moments->SN, 
-		 model[0].radius, model[0].nDOF, model[0].nIter);
+	fprintf (f, ": %2d %7.3f %7.3f %7.2f %4d %2d\n", 
+		 source[0].type, 
+		 log10(model[0].chisq/model[0].nDOF), 
+		 source[0].moments->SN, 
+		 model[0].radius,
+		 model[0].nDOF, 
+		 model[0].nIter);
     }
     fclose (f);
@@ -122,4 +146,5 @@
 {
 
+    double dP;
     int i, j;
     FILE *f;
@@ -139,55 +164,87 @@
 	model = (psModel  *) source->modelFLT;
 	if (model == NULL) continue;
+	if (source->type == PS_SOURCE_GALAXY) goto valid;
+	continue;
+
+    valid:
+	params = model->params;
+	dparams = model->dparams;
+
+	// XXX these are hardwired for SGAUSS : this should be pushed into the
+	// model functions as an abstract function 
+	dP = 0;
+	dP += PS_SQR(dparams[0].data.F32[4] / params[0].data.F32[4]);
+	dP += PS_SQR(dparams[0].data.F32[5] / params[0].data.F32[5]);
+	dP += PS_SQR(dparams[0].data.F32[7] / params[0].data.F32[7]);
+	dP = sqrt (dP);
+
+	fprintf (f, "%7.1f %7.1f  %5.1f %7.3f  %7.4f %7.4f  ", 
+		 params[0].data.F32[2], 
+		 params[0].data.F32[3], 
+		 params[0].data.F32[0], 
+		 -2.5*log10(params[0].data.F32[1]), 
+		 (dparams[0].data.F32[1]/params[0].data.F32[1]),
+		 dP);
+
+	for (j = 4; j < model->params->n; j++) {
+	    fprintf (f, "%9.6f ", params[0].data.F32[j]);
+	}
+	fprintf (f, " : ");
+	for (j = 4; j < model->params->n; j++) {
+	    fprintf (f, "%9.6f ", dparams[0].data.F32[j]);
+	}
+	fprintf (f, ": %2d %7.3f %7.3f %7.2f %4d %2d\n", 
+		 source[0].type, log10(model[0].chisq/model[0].nDOF), 
+		 source[0].moments->SN, 
+		 model[0].radius, 
+		 model[0].nDOF, 
+		 model[0].nIter);
+    }
+    fclose (f);
+    return true;
+}
+
+// dump the sources to an output file
+bool DumpModelNULL (psArray *sources, char *filename) 
+{
+
+    int i;
+    FILE *f;
+
+    f = fopen (filename, "w");
+    if (f == NULL) {
+	psLogMsg ("DumpObjects", 3, "can't open output file for moments%s\n", filename);
+	return false;
+    }
+
+    psMoments *empty = pmMomentsAlloc ();
+
+    // write sources with models first 
+    for (i = 0; i < sources->n; i++) {
+	psSource *source = (psSource *) sources->data[i];
+
+	// skip these sources (in PSF or FLT)
+	if (source->type == PS_SOURCE_GALAXY) continue;
 	if (source->type == PS_SOURCE_PSFSTAR) continue;
 	if (source->type == PS_SOURCE_SATSTAR) continue;
-	if (source->type == PS_SOURCE_BRIGHTSTAR) continue;
-	if (source->type == PS_SOURCE_FAINTSTAR) continue;
-	if (source->type == PS_SOURCE_OTHER) continue;
-	if (source->type == PS_SOURCE_DEFECT) continue;
-	if (source->type == PS_SOURCE_SATURATED) continue;
-
-	params = model->params;
-	dparams = model->dparams;
-	fprintf (f, "%7.1f %7.1f  %5.1f %7.3f  %7.4f  ", 
-		 params[0].data.F32[2], params[0].data.F32[3], 
-		 params[0].data.F32[0], -2.5*log10(params[0].data.F32[1]), (dparams[0].data.F32[1]/params[0].data.F32[1]));
-	for (j = 0; j < model->params->n - 4; j++) {
-	    fprintf (f, "%9.6f ", params[0].data.F32[j+4]);
-	}
-	for (j = 0; j < model->params->n - 4; j++) {
-	    fprintf (f, "%9.6f ", dparams[0].data.F32[j+4]);
-	}
-	fprintf (f, ": %2d %7.4f %7.4f %7.2f (%d %d)\n", source[0].type, log10(model[0].chisq), source[0].moments->SN, model[0].radius, model[0].nDOF, model[0].nIter);
-    }
-    fclose (f);
-    return true;
-}
-
-// dump the sources to an output file
-bool DumpModelNULL (psArray *sources, char *filename) 
-{
-
-    int i;
-    FILE *f;
-
-    f = fopen (filename, "w");
-    if (f == NULL) {
-	psLogMsg ("DumpObjects", 3, "can't open output file for moments%s\n", filename);
-	return false;
-    }
-
-    // write sources with models first 
-    for (i = 0; i < sources->n; i++) {
-	psSource *source = (psSource *) sources->data[i];
-	if (source->modelFLT != NULL) continue;
-	if (source->modelPSF != NULL) continue;
-	if (source->moments == NULL) continue;
-	fprintf (f, "%5d %5d  %7.1f  %7.1f %7.1f  %6.3f %6.3f  %8.1f %7.1f %7.1f %7.1f  %4d %2d\n", 
-		 source->peak->x, source->peak->y, source->peak->counts, 
-		 source->moments->x, source->moments->y, 
-		 source->moments->Sx, source->moments->Sy, 
-		 source->moments->Sum, source->moments->Peak, 
-		 source->moments->Sky, source->moments->SN, 
-		 source->moments->nPixels, source->type); 
+	if (source->type == PS_SOURCE_GOODSTAR) continue;
+
+	if (source->moments == NULL) {
+	  fprintf (f, "%5d %5d  %7.1f  %7.1f %7.1f  %6.3f %6.3f  %8.1f %7.1f %7.1f %7.1f  %4d %2d\n", 
+		   source->peak->x, source->peak->y, source->peak->counts, 
+		   empty->x, empty->y, 
+		   empty->Sx, empty->Sy, 
+		   empty->Sum, empty->Peak, 
+		   empty->Sky, empty->SN, 
+		   empty->nPixels, source->type); 
+	} else {
+	  fprintf (f, "%5d %5d  %7.1f  %7.1f %7.1f  %6.3f %6.3f  %8.1f %7.1f %7.1f %7.1f  %4d %2d\n", 
+		   source->peak->x, source->peak->y, source->peak->counts, 
+		   source->moments->x, source->moments->y, 
+		   source->moments->Sx, source->moments->Sy, 
+		   source->moments->Sum, source->moments->Peak, 
+		   source->moments->Sky, source->moments->SN, 
+		   source->moments->nPixels, source->type); 
+	}
     }
     fclose (f);
