Index: /trunk/Ohana/src/addstar/src/resort_catalog.c
===================================================================
--- /trunk/Ohana/src/addstar/src/resort_catalog.c	(revision 38637)
+++ /trunk/Ohana/src/addstar/src/resort_catalog.c	(revision 38638)
@@ -405,6 +405,4 @@
   average = catalog[0].average;
   
-  myAbort("relphot_catalog_galphot needs to handle average entries with Ngalphot = 0");
-
   // we have a table of average objects and an unsorted table of measurements.  each measurement
   // has a reference to the average object sequence (as well as an ID)
Index: /trunk/Ohana/src/libdvo/include/dvo.h
===================================================================
--- /trunk/Ohana/src/libdvo/include/dvo.h	(revision 38637)
+++ /trunk/Ohana/src/libdvo/include/dvo.h	(revision 38638)
@@ -1216,5 +1216,5 @@
 # undef LENSFIELD
 
-# define GALPHOT_FIELD(NAME, VALUE) float GalphotValue_##NAME (PhotCode *code, GalPhot *galphot, int Ngalphot);
+# define GALPHOT_FIELD(NAME, VALUE) float GalphotValue_##NAME (PhotCode *code, dvoMagClassType class, GalPhot *galphot, int Ngalphot);
 
 GALPHOT_FIELD(GAL_MAG, 	       mag);	       
Index: /trunk/Ohana/src/libdvo/include/dvodb.h
===================================================================
--- /trunk/Ohana/src/libdvo/include/dvodb.h	(revision 38637)
+++ /trunk/Ohana/src/libdvo/include/dvodb.h	(revision 38638)
@@ -120,4 +120,7 @@
   MAG_CLASS_KRON,
   MAG_CLASS_APER,
+  MAG_CLASS_DEV, // DeVaucouleur Model (only for galphot)
+  MAG_CLASS_EXP, // Exponential Model (only for galphot)
+  MAG_CLASS_SER, // Sersic Model (only for galphot)
 } dvoMagClassType;
 
Index: /trunk/Ohana/src/libdvo/src/dbExtractAverages.c
===================================================================
--- /trunk/Ohana/src/libdvo/src/dbExtractAverages.c	(revision 38637)
+++ /trunk/Ohana/src/libdvo/src/dbExtractAverages.c	(revision 38638)
@@ -408,16 +408,16 @@
 	  break;
 
-	case MAG_OPTION_GAL_MAG:       { value.Flt = GalphotValue_GAL_MAG      (field->photcode, galphot, average->Ngalphot); break; }
-	case MAG_OPTION_GAL_MAG_ERR:   { value.Flt = GalphotValue_GAL_MAG_ERR  (field->photcode, galphot, average->Ngalphot); break; }
-	case MAG_OPTION_GAL_MAJ:       { value.Flt = GalphotValue_GAL_MAJ      (field->photcode, galphot, average->Ngalphot); break; }
-	case MAG_OPTION_GAL_MAJ_ERR:   { value.Flt = GalphotValue_GAL_MAJ_ERR  (field->photcode, galphot, average->Ngalphot); break; }
-	case MAG_OPTION_GAL_MIN:       { value.Flt = GalphotValue_GAL_MIN      (field->photcode, galphot, average->Ngalphot); break; }
-	case MAG_OPTION_GAL_MIN_ERR:   { value.Flt = GalphotValue_GAL_MIN_ERR  (field->photcode, galphot, average->Ngalphot); break; }
-	case MAG_OPTION_GAL_THETA:     { value.Flt = GalphotValue_GAL_THETA    (field->photcode, galphot, average->Ngalphot); break; }
-	case MAG_OPTION_GAL_THETA_ERR: { value.Flt = GalphotValue_GAL_THETA_ERR(field->photcode, galphot, average->Ngalphot); break; }
-	case MAG_OPTION_GAL_INDEX:     { value.Flt = GalphotValue_GAL_INDEX    (field->photcode, galphot, average->Ngalphot); break; }
-	case MAG_OPTION_GAL_CHISQ:     { value.Flt = GalphotValue_GAL_CHISQ    (field->photcode, galphot, average->Ngalphot); break; }
-	case MAG_OPTION_GAL_NPIX:      { value.Flt = GalphotValue_GAL_NPIX     (field->photcode, galphot, average->Ngalphot); break; }
-	case MAG_OPTION_GAL_TYPE:      { value.Flt = GalphotValue_GAL_TYPE     (field->photcode, galphot, average->Ngalphot); break; }
+	case MAG_OPTION_GAL_MAG:       { value.Flt = GalphotValue_GAL_MAG      (field->photcode, field->magClass, galphot, average->Ngalphot); break; }
+	case MAG_OPTION_GAL_MAG_ERR:   { value.Flt = GalphotValue_GAL_MAG_ERR  (field->photcode, field->magClass, galphot, average->Ngalphot); break; }
+	case MAG_OPTION_GAL_MAJ:       { value.Flt = GalphotValue_GAL_MAJ      (field->photcode, field->magClass, galphot, average->Ngalphot); break; }
+	case MAG_OPTION_GAL_MAJ_ERR:   { value.Flt = GalphotValue_GAL_MAJ_ERR  (field->photcode, field->magClass, galphot, average->Ngalphot); break; }
+	case MAG_OPTION_GAL_MIN:       { value.Flt = GalphotValue_GAL_MIN      (field->photcode, field->magClass, galphot, average->Ngalphot); break; }
+	case MAG_OPTION_GAL_MIN_ERR:   { value.Flt = GalphotValue_GAL_MIN_ERR  (field->photcode, field->magClass, galphot, average->Ngalphot); break; }
+	case MAG_OPTION_GAL_THETA:     { value.Flt = GalphotValue_GAL_THETA    (field->photcode, field->magClass, galphot, average->Ngalphot); break; }
+	case MAG_OPTION_GAL_THETA_ERR: { value.Flt = GalphotValue_GAL_THETA_ERR(field->photcode, field->magClass, galphot, average->Ngalphot); break; }
+	case MAG_OPTION_GAL_INDEX:     { value.Flt = GalphotValue_GAL_INDEX    (field->photcode, field->magClass, galphot, average->Ngalphot); break; }
+	case MAG_OPTION_GAL_CHISQ:     { value.Flt = GalphotValue_GAL_CHISQ    (field->photcode, field->magClass, galphot, average->Ngalphot); break; }
+	case MAG_OPTION_GAL_NPIX:      { value.Flt = GalphotValue_GAL_NPIX     (field->photcode, field->magClass, galphot, average->Ngalphot); break; }
+	case MAG_OPTION_GAL_TYPE:      { value.Flt = GalphotValue_GAL_TYPE     (field->photcode, field->magClass, galphot, average->Ngalphot); break; }
 
 	default:
Index: /trunk/Ohana/src/libdvo/src/dbFields.c
===================================================================
--- /trunk/Ohana/src/libdvo/src/dbFields.c	(revision 38637)
+++ /trunk/Ohana/src/libdvo/src/dbFields.c	(revision 38638)
@@ -214,4 +214,10 @@
   if (!strcasecmp (string, "aper"))  return (MAG_CLASS_APER);
   if (!strcasecmp (string, "ap"))    return (MAG_CLASS_APER);
+
+  // these model classes are only valid for galphot mag options
+  if (!strcasecmp (string, "dev"))    return (MAG_CLASS_DEV);
+  if (!strcasecmp (string, "exp"))    return (MAG_CLASS_EXP);
+  if (!strcasecmp (string, "ser"))    return (MAG_CLASS_SER);
+
 
   return MAG_CLASS_NONE;
@@ -418,4 +424,8 @@
     free (word);
     return FALSE;
+  }
+
+  if (dbFieldNeedGalphot (field, 1)) {
+    field->magClass = MAG_CLASS_SER; // for galphot, we need to set a default model class (SERSIC)
   }
 
Index: /trunk/Ohana/src/libdvo/src/dvo_photcode_ops.c
===================================================================
--- /trunk/Ohana/src/libdvo/src/dvo_photcode_ops.c	(revision 38637)
+++ /trunk/Ohana/src/libdvo/src/dvo_photcode_ops.c	(revision 38638)
@@ -1855,6 +1855,34 @@
 LENSFIELD(E2);
 
-# define GALPHOT_FIELD(NAME, VALUE)						\
-  float GalphotValue_##NAME (PhotCode *code, GalPhot *galphot, int Ngalphot) { \
+# if (0)
+float GalphotValue_GAL_MAG (PhotCode *code, dvoMagClassType class, GalPhot *galphot, int Ngalphot) { 
+  int n;								 
+  if (code == NULL) return NAN;					 
+  for (n = 0; n < Ngalphot; n++) {					 
+    short equivCode = GetPhotcodeEquivCodebyCode (galphot[n].photcode); 
+    if (!equivCode) continue;						
+    if (equivCode != code->code) continue;				
+    switch (class) {							
+      case MAG_CLASS_SER:						
+	if (galphot[n].modelType != 5) continue;			
+	break;							
+      case MAG_CLASS_EXP:						
+	if (galphot[n].modelType != 6) continue;			
+	break;							
+      case MAG_CLASS_DEV:						
+	if (galphot[n].modelType != 7) continue;			
+	break;							
+      default:							
+	return NAN;							
+    }									
+    float value = galphot[n].mag;					
+    return (value);							
+  }									
+  return NAN;								
+}
+# endif
+
+# define GALPHOT_FIELD(NAME, VALUE)					\
+  float GalphotValue_##NAME (PhotCode *code, dvoMagClassType class, GalPhot *galphot, int Ngalphot) { \
     int n;								\
     if (code == NULL) return NAN;					\
@@ -1863,4 +1891,17 @@
       if (!equivCode) continue;						\
       if (equivCode != code->code) continue;				\
+      switch (class) {							\
+	case MAG_CLASS_SER:						\
+	  if (galphot[n].modelType != 5) continue;			\
+	  break;							\
+	case MAG_CLASS_EXP:						\
+	  if (galphot[n].modelType != 6) continue;			\
+	  break;							\
+	case MAG_CLASS_DEV:						\
+	  if (galphot[n].modelType != 7) continue;			\
+	  break;							\
+	default:							\
+	  return NAN;							\
+      }									\
       float value = galphot[n].VALUE;					\
       return (value);							\
