Index: trunk/psModules/src/objects/pmSourceExtendedPars.c
===================================================================
--- trunk/psModules/src/objects/pmSourceExtendedPars.c	(revision 25754)
+++ trunk/psModules/src/objects/pmSourceExtendedPars.c	(revision 27818)
@@ -36,23 +36,67 @@
 #include "pmSourceExtendedPars.h"
 
-// *** pmSourceRadialProfile describes the radial profile of a source in elliptical contours, and 
-// intermediate data used to measure the profile
+// pmSourceRadialFlux carries the raw radial flux information, including angular bins
+static void pmSourceRadialFluxFree(pmSourceRadialFlux *flux)
+{
+    if (!flux) return;
+    psFree(flux->radii);
+    psFree(flux->fluxes);
+    psFree(flux->theta);
+    psFree(flux->isophotalRadii);
+}
+
+pmSourceRadialFlux *pmSourceRadialFluxAlloc()
+{
+    pmSourceRadialFlux *flux = (pmSourceRadialFlux *)psAlloc(sizeof(pmSourceRadialFlux));
+    psMemSetDeallocator(flux, (psFreeFunc) pmSourceRadialFluxFree);
+
+    flux->radii = NULL;
+    flux->fluxes = NULL;
+    flux->theta = NULL;
+    flux->isophotalRadii = NULL;
+
+    return flux;
+}
+
+bool psMemCheckSourceRadialFlux(psPtr ptr)
+{
+    PS_ASSERT_PTR(ptr, false);
+    return ( psMemGetDeallocator(ptr) == (psFreeFunc) pmSourceRadialFluxFree);
+}
+
+// pmSourceEllipticalFlux carries the elliptical renormalized radial flux info
+static void pmSourceEllipticalFluxFree(pmSourceEllipticalFlux *flux)
+{
+    if (!flux) return;
+    psFree(flux->radiusElliptical);
+    psFree(flux->fluxElliptical);
+}
+
+pmSourceEllipticalFlux *pmSourceEllipticalFluxAlloc()
+{
+    pmSourceEllipticalFlux *flux = (pmSourceEllipticalFlux *)psAlloc(sizeof(pmSourceEllipticalFlux));
+    psMemSetDeallocator(flux, (psFreeFunc) pmSourceEllipticalFluxFree);
+
+    flux->radiusElliptical = NULL;
+    flux->fluxElliptical = NULL;
+
+    return flux;
+}
+
+bool psMemCheckSourceEllipticalFlux(psPtr ptr)
+{
+    PS_ASSERT_PTR(ptr, false);
+    return ( psMemGetDeallocator(ptr) == (psFreeFunc) pmSourceEllipticalFluxFree);
+}
+
+// pmSourceRadialProfile defines flux information in radial bins
 static void pmSourceRadialProfileFree(pmSourceRadialProfile *profile)
 {
-    if (!profile) {
-        return;
-    }
-    psFree(profile->radii);
-    psFree(profile->fluxes);
-    psFree(profile->theta);
-    psFree(profile->isophotalRadii);
-
-    psFree(profile->radiusElliptical);
-    psFree(profile->fluxElliptical);
-
+    if (!profile) return;
     psFree(profile->binSB);
     psFree(profile->binSBstdev);
     psFree(profile->binSBerror);
-
+    psFree(profile->binSum);
+    psFree(profile->binFill);
     psFree(profile->radialBins);
     psFree(profile->area);
@@ -63,20 +107,12 @@
     pmSourceRadialProfile *profile = (pmSourceRadialProfile *)psAlloc(sizeof(pmSourceRadialProfile));
     psMemSetDeallocator(profile, (psFreeFunc) pmSourceRadialProfileFree);
-
-    profile->radii = NULL;
-    profile->fluxes = NULL;
-    profile->theta = NULL;
-    profile->isophotalRadii = NULL;
-
-    profile->radiusElliptical = NULL;
-    profile->fluxElliptical = NULL;
 
     profile->binSB = NULL;
     profile->binSBstdev = NULL;
     profile->binSBerror = NULL;
-
+    profile->binSum = NULL;
+    profile->binFill = NULL;
     profile->radialBins = NULL;
     profile->area = NULL;
-
     return profile;
 }
@@ -88,6 +124,6 @@
 }
 
-
-// *** pmSourceRadialProfileFreeVectors frees the intermediate data values
+# if (0)
+// pmSourceRadialProfileFreeVectors frees the intermediate data values
 bool pmSourceRadialProfileFreeVectors(pmSourceRadialProfile *profile) {
 
@@ -124,4 +160,5 @@
     return true;
 }
+# endif
 
 // *** pmSourceRadialProfileSortPair is a utility function for sorting a pair of vectors
@@ -150,7 +187,8 @@
     if (!pars) return;
 
-    psFree(pars->profile);
-    psFree(pars->petrosian_50);
-    psFree(pars->petrosian_80);
+    psFree(pars->radFlux);
+    psFree(pars->ellipticalFlux);
+    psFree(pars->radProfile);
+    psFree(pars->petProfile);
     return;
 }
@@ -160,8 +198,17 @@
     psMemSetDeallocator(pars, (psFreeFunc) pmSourceExtendedParsFree);
 
-    pars->profile = NULL;
-    pars->petrosian_50 = NULL;
-    pars->petrosian_80 = NULL;
-
+    pars->radFlux = NULL;
+    pars->ellipticalFlux = NULL;
+    pars->radProfile = NULL;
+    pars->petProfile = NULL;
+
+    pars->petrosianFlux = NAN;
+    pars->petrosianFluxErr = NAN;
+    pars->petrosianRadius = NAN;
+    pars->petrosianRadiusErr = NAN;
+    pars->petrosianR90 = NAN;
+    pars->petrosianR90Err = NAN;
+    pars->petrosianR50 = NAN;
+    pars->petrosianR50Err = NAN;
     return pars;
 }
