Index: /branches/eam_branches/ipp-20111122/Ohana/src/libdvo/include/dvodb.h
===================================================================
--- /branches/eam_branches/ipp-20111122/Ohana/src/libdvo/include/dvodb.h	(revision 33199)
+++ /branches/eam_branches/ipp-20111122/Ohana/src/libdvo/include/dvodb.h	(revision 33200)
@@ -1,4 +1,6 @@
 # ifndef DVODB_H
 # define DVODB_H
+
+# define MEASURE_HAS_XCCD 1
 
 typedef enum {
@@ -82,8 +84,11 @@
       MEAS_EXPTIME, 
       MEAS_AIRMASS, 
+      MEAS_MEAN_AIRMASS, 
       MEAS_ALT, 
       MEAS_AZ, 
       MEAS_PHOTCODE, 
       MEAS_PHOTCODE_EQUIV, 
+      MEAS_PHOTCODE_KLAM, 
+      MEAS_PHOTCODE_C, 
       MEAS_TIME, 
       MEAS_FWHM, 
@@ -120,4 +125,6 @@
       MEAS_EXT_NSIGMA, 
       MEAS_EXTERN_ID,
+      MEAS_MCAL_OFFSET,
+      MEAS_FLAT,
 };
 
Index: /branches/eam_branches/ipp-20111122/Ohana/src/libdvo/src/dbExtractMeasures.c
===================================================================
--- /branches/eam_branches/ipp-20111122/Ohana/src/libdvo/src/dbExtractMeasures.c	(revision 33199)
+++ /branches/eam_branches/ipp-20111122/Ohana/src/libdvo/src/dbExtractMeasures.c	(revision 33200)
@@ -302,4 +302,11 @@
       value.Flt = measure[0].airmass;
       break;
+    case MEAS_MEAN_AIRMASS: /* OK */
+      {
+	Image *image = MatchImageDVO (measure[0].t, measure[0].photcode, measure[0].imageID);
+	if (image == NULL) break;
+	value.Flt = image[0].secz;
+	break;
+      }
     case MEAS_AZ: /* OK */
       value.Flt = measure[0].az;
@@ -317,4 +324,18 @@
       value.Int = measure[0].photcode;
       break;
+    case MEAS_PHOTCODE_KLAM: /* OK */
+      { 
+	PhotCode *code = GetPhotcodebyCode (measure[0].photcode);
+	if (!code) break;
+	value.Flt = code->K;
+	break;
+      }
+    case MEAS_PHOTCODE_C: /* OK */
+      { 
+	PhotCode *code = GetPhotcodebyCode (measure[0].photcode);
+	if (!code) break;
+	value.Flt = code->C;
+	break;
+      }
     case MEAS_TIME: /* OK */
       value.Flt = TimeValue (measure[0].t, TimeReference, TimeFormat);
@@ -351,9 +372,10 @@
       break;
     case MEAS_XCCD: /* OK */
-/* I need to perform this conversion for ELIXIR and LONEOS formats on load */      
-# if 1
+# if MEASURE_HAS_XCCD
       value.Flt = measure[0].Xccd;
 # else
       { 
+	// I'm keeping this code because it gives a way of handing dvo dbs that don't have
+	// measure.xccd if we need it
 	Image *image;
 	ra  = average[0].R - measure[0].dR / 3600.0;
@@ -367,6 +389,5 @@
       break;
     case MEAS_YCCD: /* OK */
-/* I need to perform this conversion for ELIXIR and LONEOS formats on load */      
-# if 1
+# if MEASURE_HAS_XCCD
       value.Flt = measure[0].Yccd;
 # else
@@ -456,4 +477,18 @@
       break;
 
+    case MEAS_MCAL_OFFSET: /* OK */
+      value.Flt = measure[0].Mcal;
+      break;
+
+    case MEAS_FLAT: /* OK */
+      // flat = measure.Mcal - image.Mcal
+      { 
+	Image *image;
+	image = MatchImageDVO (measure[0].t, measure[0].photcode, measure[0].imageID);
+	if (image == NULL) break;
+	value.Flt = measure[0].Mcal - image[0].Mcal;
+      }
+      break;
+
       // add the star/galaxy sep -- 
   }
Index: /branches/eam_branches/ipp-20111122/Ohana/src/libdvo/src/dbFields.c
===================================================================
--- /branches/eam_branches/ipp-20111122/Ohana/src/libdvo/src/dbFields.c	(revision 33199)
+++ /branches/eam_branches/ipp-20111122/Ohana/src/libdvo/src/dbFields.c	(revision 33200)
@@ -174,8 +174,11 @@
   if (!strcasecmp (fieldName, "PHOTFLAGS")) 	 ESCAPE (MEAS_PHOT_FLAGS,     MAG_NONE, OPIHI_INT);
   if (!strcasecmp (fieldName, "AIRMASS"))    	 ESCAPE (MEAS_AIRMASS,        MAG_NONE, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "MEAN_AIRMASS"))   ESCAPE (MEAS_MEAN_AIRMASS,   MAG_NONE, OPIHI_FLT);
   if (!strcasecmp (fieldName, "ALT"))        	 ESCAPE (MEAS_ALT,            MAG_NONE, OPIHI_FLT);
   if (!strcasecmp (fieldName, "AZ"))         	 ESCAPE (MEAS_AZ,             MAG_NONE, OPIHI_FLT);
   if (!strcasecmp (fieldName, "EXPTIME"))    	 ESCAPE (MEAS_EXPTIME,        MAG_NONE, OPIHI_FLT);
   if (!strcasecmp (fieldName, "PHOTCODE"))   	 ESCAPE (MEAS_PHOTCODE,       MAG_NONE, OPIHI_INT);
+  if (!strcasecmp (fieldName, "PHOTCODE:KLAM"))  ESCAPE (MEAS_PHOTCODE_KLAM,  MAG_NONE, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "PHOTCODE:C"))     ESCAPE (MEAS_PHOTCODE_C,     MAG_NONE, OPIHI_FLT);
   if (!strcasecmp (fieldName, "PHOTCODE:EQUIV")) ESCAPE (MEAS_PHOTCODE_EQUIV, MAG_NONE, OPIHI_INT);
   if (!strcasecmp (fieldName, "TIME"))       	 ESCAPE (MEAS_TIME,           MAG_NONE, OPIHI_FLT);
@@ -215,4 +218,6 @@
   if (!strcasecmp (fieldName, "SKY_ERR"))    	 ESCAPE (MEAS_dSKY,           MAG_NONE, OPIHI_FLT);
   if (!strcasecmp (fieldName, "externID"))    	 ESCAPE (MEAS_EXTERN_ID,      MAG_NONE, OPIHI_INT);
+  if (!strcasecmp (fieldName, "MCAL_OFFSET"))    ESCAPE (MEAS_MCAL_OFFSET,    MAG_NONE, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "FLAT"))    	 ESCAPE (MEAS_FLAT,           MAG_NONE, OPIHI_FLT);
 
   // for words that don't parse, try a photcode
Index: /branches/eam_branches/ipp-20111122/Ohana/src/opihi/dvo/mextract.c
===================================================================
--- /branches/eam_branches/ipp-20111122/Ohana/src/opihi/dvo/mextract.c	(revision 33199)
+++ /branches/eam_branches/ipp-20111122/Ohana/src/opihi/dvo/mextract.c	(revision 33200)
@@ -88,9 +88,14 @@
   mosaicMode = FALSE;
   for (i = 0; !loadImages && (i < Nfields); i++) {
-    if (fields[i].ID == MEAS_XCCD) loadImages = TRUE;   // Are these still needed? Xccd and Yccd are in measurement
-    if (fields[i].ID == MEAS_YCCD) loadImages = TRUE;   // and dbExtractMeasures doesn't look at the image for these
-    if (fields[i].ID == MEAS_XMOSAIC) loadImages = mosaicMode = TRUE;
-    if (fields[i].ID == MEAS_YMOSAIC) loadImages = mosaicMode = TRUE;
+    if (!MEASURE_HAS_XCCD) {
+      // I'm keeping this code because it gives a way of handing dvo dbs that don't have
+      // measure.xccd if we need it
+      if (fields[i].ID == MEAS_XCCD) loadImages = TRUE;
+      if (fields[i].ID == MEAS_YCCD) loadImages = TRUE;
+    }
+    if (fields[i].ID == MEAS_XMOSAIC) 	loadImages = mosaicMode = TRUE;
+    if (fields[i].ID == MEAS_YMOSAIC) 	loadImages = mosaicMode = TRUE;
     if (fields[i].ID == MEAS_EXTERN_ID) loadImages = mosaicMode = TRUE;
+    if (fields[i].ID == MEAS_FLAT)      loadImages = mosaicMode = TRUE;
   }
   if (loadImages && !SetImageSelection (mosaicMode, selection)) goto escape;
@@ -307,4 +312,7 @@
     gprint (GP_ERR, "  imageID : ID of source image (32 bit)\n");
     gprint (GP_ERR, "  externID : externID of source image (32 bit)\n");
+
+    gprint (GP_ERR, "  Mcal_offset : difference wrt nominal zero point (clouds are positive)\n");
+    gprint (GP_ERR, "  flat : flat-field correction (measure.Mcal - image.Mcal)\n");
     return (FALSE);
   }
