Index: trunk/Ohana/src/libdvo/include/dvo.h
===================================================================
--- trunk/Ohana/src/libdvo/include/dvo.h	(revision 40462)
+++ trunk/Ohana/src/libdvo/include/dvo.h	(revision 40463)
@@ -1272,19 +1272,39 @@
 # undef LENSFIELD
 
-# define GALPHOT_FIELD(NAME, VALUE) float GalphotValue_##NAME (PhotCode *code, dvoMagClassType class, 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_FLAGS,       flags);       
-GALPHOT_FIELD(GAL_TYPE,        modelType);       
+# define GALPHOT_FIELD(NAME, VALUE, TYPE, DEFAULT) TYPE GalphotValue_##NAME (PhotCode *code, dvoMagClassType class, 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_FLAGS,       flags);       
+//GALPHOT_FIELD(GAL_TYPE,        modelType);       
+
+GALPHOT_FIELD(GAL_MAG,         mag,          float, NAN) 
+GALPHOT_FIELD(GAL_MAG_ERR,     magErr,       float, NAN) 
+GALPHOT_FIELD(GAL_MAJ, 	       majorAxis,    float, NAN) 
+GALPHOT_FIELD(GAL_MAJ_ERR,     majorAxisErr, float, NAN)
+GALPHOT_FIELD(GAL_MIN, 	       minorAxis,    float, NAN) 
+GALPHOT_FIELD(GAL_MIN_ERR,     minorAxisErr, float, NAN) 
+GALPHOT_FIELD(GAL_THETA,       theta,        float, NAN) 
+GALPHOT_FIELD(GAL_THETA_ERR,   thetaErr,     float, NAN) 
+GALPHOT_FIELD(GAL_INDEX,       index,        float, NAN)      
+GALPHOT_FIELD(GAL_CHISQ,       chisq,        float, NAN)      
+GALPHOT_FIELD(GAL_NPIX,        Npix,         float, NAN)       
+
+GALPHOT_FIELD(GAL_TYPE,        modelType,    short, 0)       
+
+GALPHOT_FIELD(GAL_FLAGS,       flags,        unsigned int, 0)       
+GALPHOT_FIELD(GAL_OBJ_ID,      objID,        unsigned int, 0)       
+GALPHOT_FIELD(GAL_CAT_ID,      catID,        unsigned int, 0)       
+GALPHOT_FIELD(GAL_DET_ID,      detID,        unsigned int, 0)       
+GALPHOT_FIELD(GAL_IMAGE_ID,    imageID,      unsigned int, 0)       
 
 # undef GALPHOT_FIELD
Index: trunk/Ohana/src/libdvo/include/dvodb.h
===================================================================
--- trunk/Ohana/src/libdvo/include/dvodb.h	(revision 40462)
+++ trunk/Ohana/src/libdvo/include/dvodb.h	(revision 40463)
@@ -127,4 +127,9 @@
   MAG_OPTION_GAL_FLAGS,        
   MAG_OPTION_GAL_TYPE,        
+
+  MAG_OPTION_GAL_OBJ_ID,  
+  MAG_OPTION_GAL_CAT_ID,  
+  MAG_OPTION_GAL_DET_ID, 
+  MAG_OPTION_GAL_IMAGE_ID,
 } dvoMagOptionType;
 
Index: trunk/Ohana/src/libdvo/src/dbExtractAverages.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dbExtractAverages.c	(revision 40462)
+++ trunk/Ohana/src/libdvo/src/dbExtractAverages.c	(revision 40463)
@@ -466,17 +466,22 @@
 	  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; }
-	case MAG_OPTION_GAL_FLAGS:     { value.Flt = GalphotValue_GAL_FLAGS    (field->photcode, field->magClass, 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; }
+	case MAG_OPTION_GAL_FLAGS:    { value.Flt = GalphotValue_GAL_FLAGS    (field->photcode, field->magClass, galphot, average->Ngalphot); break; }
+
+	case MAG_OPTION_GAL_OBJ_ID:   { value.Flt = GalphotValue_GAL_OBJ_ID   (field->photcode, field->magClass, galphot, average->Ngalphot); break; }
+	case MAG_OPTION_GAL_CAT_ID:   { value.Flt = GalphotValue_GAL_CAT_ID   (field->photcode, field->magClass, galphot, average->Ngalphot); break; }
+	case MAG_OPTION_GAL_DET_ID:   { value.Flt = GalphotValue_GAL_DET_ID   (field->photcode, field->magClass, galphot, average->Ngalphot); break; }
+	case MAG_OPTION_GAL_IMAGE_ID: { value.Flt = GalphotValue_GAL_IMAGE_ID (field->photcode, field->magClass, galphot, average->Ngalphot); break; }
 
 	default:
Index: trunk/Ohana/src/libdvo/src/dbExtractMeasures.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dbExtractMeasures.c	(revision 40462)
+++ trunk/Ohana/src/libdvo/src/dbExtractMeasures.c	(revision 40463)
@@ -316,4 +316,8 @@
 	case MAG_OPTION_GAL_FLAGS:      
 	case MAG_OPTION_GAL_TYPE:      
+	case MAG_OPTION_GAL_OBJ_ID:
+	case MAG_OPTION_GAL_CAT_ID:
+	case MAG_OPTION_GAL_DET_ID:
+	case MAG_OPTION_GAL_IMAGE_ID:
 
 	case MAG_OPTION_NONE:
Index: trunk/Ohana/src/libdvo/src/dbFields.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dbFields.c	(revision 40462)
+++ trunk/Ohana/src/libdvo/src/dbFields.c	(revision 40463)
@@ -181,4 +181,9 @@
   if (magOption == MAG_OPTION_GAL_FLAGS       ) return TRUE;
   if (magOption == MAG_OPTION_GAL_TYPE        ) return TRUE;
+
+  if (magOption == MAG_OPTION_GAL_OBJ_ID      ) return TRUE;
+  if (magOption == MAG_OPTION_GAL_CAT_ID      ) return TRUE;
+  if (magOption == MAG_OPTION_GAL_DET_ID      ) return TRUE;
+  if (magOption == MAG_OPTION_GAL_IMAGE_ID    ) return TRUE;
   return FALSE;
 }
Index: trunk/Ohana/src/libdvo/src/dvo_photcode_ops.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_photcode_ops.c	(revision 40462)
+++ trunk/Ohana/src/libdvo/src/dvo_photcode_ops.c	(revision 40463)
@@ -2137,5 +2137,5 @@
 LENSFIELD(E2)
 
-# if (1)
+# if (0)
 float GalphotValue_GAL_MAG (PhotCode *code, dvoMagClassType class, GalPhot *galphot, int Ngalphot) { 
   int n;								 
@@ -2165,8 +2165,10 @@
 # endif
 
-# define GALPHOT_FIELD(NAME, VALUE)					\
-  float GalphotValue_##NAME (PhotCode *code, dvoMagClassType class, GalPhot *galphot, int Ngalphot) { \
+// the block above is an example of the generic version below
+
+# define GALPHOT_FIELD(NAME, VALUE, TYPE, DEFAULT)				\
+  TYPE GalphotValue_##NAME (PhotCode *code, dvoMagClassType class, GalPhot *galphot, int Ngalphot) { \
     int n;								\
-    if (code == NULL) return NAN;					\
+    if (code == NULL) return DEFAULT;					\
     for (n = 0; n < Ngalphot; n++) {					\
       short equivCode = GetPhotcodeEquivCodebyCode (galphot[n].photcode); \
@@ -2184,23 +2186,29 @@
 	  break;							\
 	default:							\
-	  return NAN;							\
+	  return DEFAULT;						\
       }									\
-      float value = galphot[n].VALUE;					\
+      TYPE 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_FLAGS,       flags)       
-GALPHOT_FIELD(GAL_TYPE,        modelType)       
+    return DEFAULT;							\
+  }
+
+GALPHOT_FIELD(GAL_MAG, 	       mag,          float, NAN) 
+GALPHOT_FIELD(GAL_MAG_ERR,     magErr,       float, NAN) 
+GALPHOT_FIELD(GAL_MAJ, 	       majorAxis,    float, NAN) 
+GALPHOT_FIELD(GAL_MAJ_ERR,     majorAxisErr, float, NAN)
+GALPHOT_FIELD(GAL_MIN, 	       minorAxis,    float, NAN) 
+GALPHOT_FIELD(GAL_MIN_ERR,     minorAxisErr, float, NAN) 
+GALPHOT_FIELD(GAL_THETA,       theta,        float, NAN) 
+GALPHOT_FIELD(GAL_THETA_ERR,   thetaErr,     float, NAN) 
+GALPHOT_FIELD(GAL_INDEX,       index,        float, NAN)      
+GALPHOT_FIELD(GAL_CHISQ,       chisq,        float, NAN)      
+GALPHOT_FIELD(GAL_NPIX,        Npix,         float, NAN)       
+
+GALPHOT_FIELD(GAL_TYPE,        modelType,    short, 0)       
+
+GALPHOT_FIELD(GAL_FLAGS,       flags,        unsigned int, 0)       
+GALPHOT_FIELD(GAL_OBJ_ID,      objID,        unsigned int, 0)       
+GALPHOT_FIELD(GAL_CAT_ID,      catID,        unsigned int, 0)       
+GALPHOT_FIELD(GAL_DET_ID,      detID,        unsigned int, 0)       
+GALPHOT_FIELD(GAL_IMAGE_ID,    imageID,      unsigned int, 0)       
