Index: /branches/eam_branches/ipp-20120405/Ohana/src/libdvo/include/dvo.h
===================================================================
--- /branches/eam_branches/ipp-20120405/Ohana/src/libdvo/include/dvo.h	(revision 33935)
+++ /branches/eam_branches/ipp-20120405/Ohana/src/libdvo/include/dvo.h	(revision 33936)
@@ -456,4 +456,9 @@
 float PhotdM (PhotCode *code, Average *average, SecFilt *secfilt);
 
+float PhotMstdev (PhotCode *code, Average *average, SecFilt *secfilt);
+float PhotM20 (PhotCode *code, Average *average, SecFilt *secfilt);
+float PhotM80 (PhotCode *code, Average *average, SecFilt *secfilt);
+float PhotUCdist (PhotCode *code, Average *average, SecFilt *secfilt);
+
 float PhotColorForCode (Average *average, SecFilt *secfilt, Measure *measure, PhotCode *code);
 int PhotColor (Average *average, SecFilt *secfilt, Measure *measure, int c1, int c2, double *color);
Index: /branches/eam_branches/ipp-20120405/Ohana/src/libdvo/include/dvodb.h
===================================================================
--- /branches/eam_branches/ipp-20120405/Ohana/src/libdvo/include/dvodb.h	(revision 33935)
+++ /branches/eam_branches/ipp-20120405/Ohana/src/libdvo/include/dvodb.h	(revision 33936)
@@ -32,4 +32,5 @@
       MAG_REF, 
       MAG_ERR, 
+      MAG_STDEV, 
       MAG_AVE_ERR, 
       MAG_PHOT_FLAGS, 
@@ -37,4 +38,7 @@
       MAG_NCODE,
       MAG_NPHOT,
+      MAG_20, 
+      MAG_80, 
+      MAG_UC_DIST, 
 };
 
Index: /branches/eam_branches/ipp-20120405/Ohana/src/libdvo/src/dbExtractAverages.c
===================================================================
--- /branches/eam_branches/ipp-20120405/Ohana/src/libdvo/src/dbExtractAverages.c	(revision 33935)
+++ /branches/eam_branches/ipp-20120405/Ohana/src/libdvo/src/dbExtractAverages.c	(revision 33936)
@@ -200,4 +200,7 @@
 	  }
 	  break;
+	case MAG_STDEV:
+	  value.Flt = PhotMstdev (field->photcode, average, secfilt);
+	  break;
 	case MAG_PHOT_FLAGS:
 	  if ((field->photcode->type == PHOT_REF) || (field->photcode->type == PHOT_DEP)) {
@@ -226,4 +229,13 @@
 	  break;
 
+	case MAG_20:
+	  value.Flt = PhotM20 (field->photcode, average, secfilt);
+	  break;
+	case MAG_80:
+	  value.Flt = PhotM80 (field->photcode, average, secfilt);
+	  break;
+	case MAG_UC_DIST:
+	  value.Flt = PhotUCdist (field->photcode, average, secfilt);
+	  break;
       }
       break;
Index: /branches/eam_branches/ipp-20120405/Ohana/src/libdvo/src/dbFields.c
===================================================================
--- /branches/eam_branches/ipp-20120405/Ohana/src/libdvo/src/dbFields.c	(revision 33935)
+++ /branches/eam_branches/ipp-20120405/Ohana/src/libdvo/src/dbFields.c	(revision 33936)
@@ -46,4 +46,8 @@
   if (!strcasecmp (string, "ncode"))     return (MAG_NCODE);
   if (!strcasecmp (string, "nphot"))     return (MAG_NPHOT);
+  if (!strcasecmp (string, "stdev"))     return (MAG_STDEV);
+  if (!strcasecmp (string, "20"))        return (MAG_20);
+  if (!strcasecmp (string, "80"))        return (MAG_80);
+  if (!strcasecmp (string, "ucdist"))    return (MAG_UC_DIST);
   return (MAG_NONE);
 }
Index: /branches/eam_branches/ipp-20120405/Ohana/src/libdvo/src/dvo_photcode_ops.c
===================================================================
--- /branches/eam_branches/ipp-20120405/Ohana/src/libdvo/src/dvo_photcode_ops.c	(revision 33935)
+++ /branches/eam_branches/ipp-20120405/Ohana/src/libdvo/src/dvo_photcode_ops.c	(revision 33936)
@@ -476,4 +476,52 @@
 }
 
+float PhotMstdev (PhotCode *code, Average *average, SecFilt *secfilt) {
+
+  int Ns;
+  float Mstdev;
+
+  if (code == NULL) return NAN;
+
+  Ns = photcodes[0].hashNsec[code[0].code];
+  Mstdev  = (Ns == -1) ? NAN : 0.001*secfilt[Ns].Mstdev;
+  return (Mstdev);
+}
+
+float PhotM20 (PhotCode *code, Average *average, SecFilt *secfilt) {
+
+  int Ns;
+  float M20;
+
+  if (code == NULL) return NAN;
+
+  Ns = photcodes[0].hashNsec[code[0].code];
+  M20  = (Ns == -1) ? NAN : 0.001*secfilt[Ns].M_20;
+  return (M20);
+}
+
+float PhotM80 (PhotCode *code, Average *average, SecFilt *secfilt) {
+
+  int Ns;
+  float M80;
+
+  if (code == NULL) return NAN;
+
+  Ns = photcodes[0].hashNsec[code[0].code];
+  M80  = (Ns == -1) ? NAN : 0.001*secfilt[Ns].M_80;
+  return (M80);
+}
+
+float PhotUCdist (PhotCode *code, Average *average, SecFilt *secfilt) {
+
+  int Ns;
+  float Muc;
+
+  if (code == NULL) return NAN;
+
+  Ns = photcodes[0].hashNsec[code[0].code];
+  Muc  = (Ns == -1) ? NAN : secfilt[Ns].ubercalDist;
+  return (Muc);
+}
+
 // XXX return NAN or NAN_S_SHORT? (secfilt->Xm is short)
 float PhotXm (PhotCode *code, Average *average, SecFilt *secfilt) {
