Index: trunk/Ohana/src/libdvo/include/dvo.h
===================================================================
--- trunk/Ohana/src/libdvo/include/dvo.h	(revision 38610)
+++ trunk/Ohana/src/libdvo/include/dvo.h	(revision 38635)
@@ -1216,3 +1216,20 @@
 # undef LENSFIELD
 
+# define GALPHOT_FIELD(NAME, VALUE) float GalphotValue_##NAME (PhotCode *code, GalPhot *galphot, int Ngalphot);
+
+GALPHOT_FIELD(GAL_MAG, 	       mag);	       
+GALPHOT_FIELD(GAL_MAG_ERR,     magErr);    
+GALPHOT_FIELD(GAL_MAJ, 	       majorAxis);	       
+GALPHOT_FIELD(GAL_MAJ_ERR,     majorAxisErr);
+GALPHOT_FIELD(GAL_MIN, 	       minorAxis);	       
+GALPHOT_FIELD(GAL_MIN_ERR,     minorAxisErr);    
+GALPHOT_FIELD(GAL_THETA,       theta);      
+GALPHOT_FIELD(GAL_THETA_ERR,   thetaErr);  
+GALPHOT_FIELD(GAL_INDEX,       index);      
+GALPHOT_FIELD(GAL_CHISQ,       chisq);      
+GALPHOT_FIELD(GAL_NPIX,        Npix);       
+GALPHOT_FIELD(GAL_TYPE,        modelType);       
+
+# undef GALPHOT_FIELD
+
 # endif // DVO_H
Index: trunk/Ohana/src/libdvo/include/dvodb.h
===================================================================
--- trunk/Ohana/src/libdvo/include/dvodb.h	(revision 38610)
+++ trunk/Ohana/src/libdvo/include/dvodb.h	(revision 38635)
@@ -97,4 +97,17 @@
   MAG_OPTION_E1, 
   MAG_OPTION_E2, 
+
+  MAG_OPTION_GAL_MAG,
+  MAG_OPTION_GAL_MAG_ERR,
+  MAG_OPTION_GAL_MAJ,
+  MAG_OPTION_GAL_MAJ_ERR,
+  MAG_OPTION_GAL_MIN,
+  MAG_OPTION_GAL_MIN_ERR,
+  MAG_OPTION_GAL_THETA,
+  MAG_OPTION_GAL_THETA_ERR,
+  MAG_OPTION_GAL_INDEX,
+  MAG_OPTION_GAL_CHISQ,
+  MAG_OPTION_GAL_NPIX,
+  MAG_OPTION_GAL_TYPE,        
 } dvoMagOptionType;
 
@@ -304,16 +317,4 @@
       AVE_REF_COLOR_RED,
       AVE_PHOT, // photometry class of values
-      AVE_GAL_MAG,
-      AVE_GAL_MAG_ERR,
-      AVE_GAL_MAJ,
-      AVE_GAL_MAJ_ERR,
-      AVE_GAL_MIN,
-      AVE_GAL_MIN_ERR,
-      AVE_GAL_THETA,
-      AVE_GAL_THETA_ERR,
-      AVE_GAL_INDEX,
-      AVE_GAL_CHISQ,
-      AVE_GAL_NPIX,
-      AVE_GAL_TYPE,        
       AVE_E_BV,		      // extinction (mags)
       AVE_E_BV_ERR,
Index: trunk/Ohana/src/libdvo/src/dbExtractAverages.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dbExtractAverages.c	(revision 38610)
+++ trunk/Ohana/src/libdvo/src/dbExtractAverages.c	(revision 38635)
@@ -407,4 +407,17 @@
 	case MAG_OPTION_NONE:
 	  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; }
 
 	default:
@@ -427,17 +440,4 @@
     case AVE_DEC_GALMODEL:     { value.Flt = starpar->D;        break; }
 
-    case AVE_GAL_MAG:          { value.Flt = NAN;               break; }
-    case AVE_GAL_MAG_ERR:      { value.Flt = NAN;               break; }
-    case AVE_GAL_MAJ:          { value.Flt = NAN;               break; }
-    case AVE_GAL_MAJ_ERR:      { value.Flt = NAN;               break; }
-    case AVE_GAL_MIN:          { value.Flt = NAN;               break; }
-    case AVE_GAL_MIN_ERR:      { value.Flt = NAN;               break; }
-    case AVE_GAL_THETA:        { value.Flt = NAN;               break; }
-    case AVE_GAL_THETA_ERR:    { value.Flt = NAN;               break; }
-    case AVE_GAL_INDEX:        { value.Flt = NAN;               break; }
-    case AVE_GAL_CHISQ:        { value.Flt = NAN;               break; }
-    case AVE_GAL_NPIX:         { value.Flt = NAN;               break; }
-    case AVE_GAL_TYPE:         { value.Flt = NAN;               break; }
-
     case AVE_TYPE:
       break;
Index: trunk/Ohana/src/libdvo/src/dbExtractMeasures.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dbExtractMeasures.c	(revision 38610)
+++ trunk/Ohana/src/libdvo/src/dbExtractMeasures.c	(revision 38635)
@@ -284,4 +284,17 @@
 	case MAG_OPTION_E2: 
 
+	case MAG_OPTION_GAL_MAG:       
+	case MAG_OPTION_GAL_MAG_ERR:   
+	case MAG_OPTION_GAL_MAJ:       
+	case MAG_OPTION_GAL_MAJ_ERR:   
+	case MAG_OPTION_GAL_MIN:       
+	case MAG_OPTION_GAL_MIN_ERR:   
+	case MAG_OPTION_GAL_THETA:     
+	case MAG_OPTION_GAL_THETA_ERR: 
+	case MAG_OPTION_GAL_INDEX:     
+	case MAG_OPTION_GAL_CHISQ:     
+	case MAG_OPTION_GAL_NPIX:      
+	case MAG_OPTION_GAL_TYPE:      
+
 	case MAG_OPTION_NONE:
 	  break;
Index: trunk/Ohana/src/libdvo/src/dbFields.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dbFields.c	(revision 38610)
+++ trunk/Ohana/src/libdvo/src/dbFields.c	(revision 38635)
@@ -164,16 +164,18 @@
   int i;
   for (i = 0; i < Nfields; i++) {
-    if (fields[i].ID == AVE_GAL_MAG         ) return TRUE;
-    if (fields[i].ID == AVE_GAL_MAG_ERR     ) return TRUE;
-    if (fields[i].ID == AVE_GAL_MAJ         ) return TRUE;
-    if (fields[i].ID == AVE_GAL_MAJ_ERR     ) return TRUE;
-    if (fields[i].ID == AVE_GAL_MIN         ) return TRUE;
-    if (fields[i].ID == AVE_GAL_MIN_ERR     ) return TRUE;
-    if (fields[i].ID == AVE_GAL_THETA       ) return TRUE;
-    if (fields[i].ID == AVE_GAL_THETA_ERR   ) return TRUE;
-    if (fields[i].ID == AVE_GAL_INDEX       ) return TRUE;
-    if (fields[i].ID == AVE_GAL_CHISQ       ) return TRUE;
-    if (fields[i].ID == AVE_GAL_NPIX        ) return TRUE;
-    if (fields[i].ID == AVE_GAL_TYPE        ) return TRUE;
+    if (fields[i].magOption == MAG_OPTION_NONE) continue; // non-measure fields do not have a photcode
+
+    if (fields[i].magOption == MAG_OPTION_GAL_MAG         ) return TRUE;
+    if (fields[i].magOption == MAG_OPTION_GAL_MAG_ERR     ) return TRUE;
+    if (fields[i].magOption == MAG_OPTION_GAL_MAJ         ) return TRUE;
+    if (fields[i].magOption == MAG_OPTION_GAL_MAJ_ERR     ) return TRUE;
+    if (fields[i].magOption == MAG_OPTION_GAL_MIN         ) return TRUE;
+    if (fields[i].magOption == MAG_OPTION_GAL_MIN_ERR     ) return TRUE;
+    if (fields[i].magOption == MAG_OPTION_GAL_THETA       ) return TRUE;
+    if (fields[i].magOption == MAG_OPTION_GAL_THETA_ERR   ) return TRUE;
+    if (fields[i].magOption == MAG_OPTION_GAL_INDEX       ) return TRUE;
+    if (fields[i].magOption == MAG_OPTION_GAL_CHISQ       ) return TRUE;
+    if (fields[i].magOption == MAG_OPTION_GAL_NPIX        ) return TRUE;
+    if (fields[i].magOption == MAG_OPTION_GAL_TYPE        ) return TRUE;
   }
   return FALSE;
@@ -265,4 +267,17 @@
   if (!strcasecmp (string, "E1"))            return MAG_OPTION_E1; 
   if (!strcasecmp (string, "E2"))            return MAG_OPTION_E2; 
+
+  if (!strcasecmp (string, "GAL_MAG"    ))   return MAG_OPTION_GAL_MAG       ;
+  if (!strcasecmp (string, "GAL_MAG_ERR"))   return MAG_OPTION_GAL_MAG_ERR   ;
+  if (!strcasecmp (string, "GAL_MAJ"    ))   return MAG_OPTION_GAL_MAJ       ;
+  if (!strcasecmp (string, "GAL_MAJ_ERR"))   return MAG_OPTION_GAL_MAJ_ERR   ;
+  if (!strcasecmp (string, "GAL_MIN"    ))   return MAG_OPTION_GAL_MIN       ;
+  if (!strcasecmp (string, "GAL_MIN_ERR"))   return MAG_OPTION_GAL_MIN_ERR   ;
+  if (!strcasecmp (string, "GAL_THETA"  ))   return MAG_OPTION_GAL_THETA     ;
+  if (!strcasecmp (string, "GAL_THETA_ERR")) return MAG_OPTION_GAL_THETA_ERR ;
+  if (!strcasecmp (string, "GAL_INDEX"  ))   return MAG_OPTION_GAL_INDEX     ;
+  if (!strcasecmp (string, "GAL_CHISQ"  ))   return MAG_OPTION_GAL_CHISQ     ;
+  if (!strcasecmp (string, "GAL_NPIX"   ))   return MAG_OPTION_GAL_NPIX      ;
+  if (!strcasecmp (string, "GAL_TYPE"   ))   return MAG_OPTION_GAL_TYPE      ;
 
   return MAG_OPTION_NONE;
@@ -709,17 +724,4 @@
   if (!strcasecmp (fieldName, "REF_COLOR_RED"))  ESCAPE (AVE_REF_COLOR_RED,  OPIHI_FLT);
 
-  if (!strcasecmp (fieldName, "GAL_MAG"    ))      ESCAPE (AVE_GAL_MAG       ,   OPIHI_FLT);
-  if (!strcasecmp (fieldName, "GAL_MAG_ERR"))      ESCAPE (AVE_GAL_MAG_ERR   ,   OPIHI_FLT);
-  if (!strcasecmp (fieldName, "GAL_MAJ"    ))      ESCAPE (AVE_GAL_MAJ       ,   OPIHI_FLT);
-  if (!strcasecmp (fieldName, "GAL_MAJ_ERR"))      ESCAPE (AVE_GAL_MAJ_ERR   ,   OPIHI_FLT);
-  if (!strcasecmp (fieldName, "GAL_MIN"    ))      ESCAPE (AVE_GAL_MIN       ,   OPIHI_FLT);
-  if (!strcasecmp (fieldName, "GAL_MIN_ERR"))      ESCAPE (AVE_GAL_MIN_ERR   ,   OPIHI_FLT);
-  if (!strcasecmp (fieldName, "GAL_THETA"  ))      ESCAPE (AVE_GAL_THETA     ,   OPIHI_FLT);
-  if (!strcasecmp (fieldName, "GAL_THETA_ERR"))    ESCAPE (AVE_GAL_THETA_ERR ,   OPIHI_FLT);
-  if (!strcasecmp (fieldName, "GAL_INDEX"  ))      ESCAPE (AVE_GAL_INDEX     ,   OPIHI_FLT);
-  if (!strcasecmp (fieldName, "GAL_CHISQ"  ))      ESCAPE (AVE_GAL_CHISQ     ,   OPIHI_FLT);
-  if (!strcasecmp (fieldName, "GAL_NPIX"   ))      ESCAPE (AVE_GAL_NPIX      ,   OPIHI_FLT);
-  if (!strcasecmp (fieldName, "GAL_TYPE"   ))      ESCAPE (AVE_GAL_TYPE      ,   OPIHI_FLT);
-
   if (!strcasecmp (fieldName, "E_BV"))             ESCAPE (AVE_E_BV          ,   OPIHI_FLT);
   if (!strcasecmp (fieldName, "E_BV_ERR"))         ESCAPE (AVE_E_BV_ERR      ,   OPIHI_FLT);
Index: trunk/Ohana/src/libdvo/src/dvo_photcode_ops.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_photcode_ops.c	(revision 38610)
+++ trunk/Ohana/src/libdvo/src/dvo_photcode_ops.c	(revision 38635)
@@ -1854,2 +1854,29 @@
 LENSFIELD(E1);
 LENSFIELD(E2);
+
+# define GALPHOT_FIELD(NAME, VALUE)						\
+  float GalphotValue_##NAME (PhotCode *code, 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;				\
+      float value = galphot[n].VALUE;					\
+      return (value);							\
+    }									\
+    return NAN;								\
+  }
+
+GALPHOT_FIELD(GAL_MAG, 	       mag);	       
+GALPHOT_FIELD(GAL_MAG_ERR,     magErr);    
+GALPHOT_FIELD(GAL_MAJ, 	       majorAxis);	       
+GALPHOT_FIELD(GAL_MAJ_ERR,     majorAxisErr);
+GALPHOT_FIELD(GAL_MIN, 	       minorAxis);	       
+GALPHOT_FIELD(GAL_MIN_ERR,     minorAxisErr);    
+GALPHOT_FIELD(GAL_THETA,       theta);      
+GALPHOT_FIELD(GAL_THETA_ERR,   thetaErr);  
+GALPHOT_FIELD(GAL_INDEX,       index);      
+GALPHOT_FIELD(GAL_CHISQ,       chisq);      
+GALPHOT_FIELD(GAL_NPIX,        Npix);       
+GALPHOT_FIELD(GAL_TYPE,        modelType);       
