Index: /branches/eam_branches/ipp-20140904/Ohana/src/libdvo/include/dvodb.h
===================================================================
--- /branches/eam_branches/ipp-20140904/Ohana/src/libdvo/include/dvodb.h	(revision 37562)
+++ /branches/eam_branches/ipp-20140904/Ohana/src/libdvo/include/dvodb.h	(revision 37563)
@@ -217,4 +217,16 @@
       MEAS_E1_SH_PSF, 
       MEAS_E2_SH_PSF, 
+      MEAS_E_BV,		      // extinction (mags)
+      MEAS_E_BV_ERR,
+      MEAS_DISTANCE_MOD, // distance modulus (mags)
+      MEAS_DISTANCE_MOD_ERR,
+      MEAS_M_R,		      // absolute mag in r-band
+      MEAS_M_R_ERR,
+      MEAS_FEH,		      // metallicity
+      MEAS_FEH_ERR,
+      MEAS_URA_GALMODEL,      // model pm prediction
+      MEAS_UDEC_GALMODEL,     // model pm prediction
+      MEAS_RA_GALMODEL,      // model pm prediction
+      MEAS_DEC_GALMODEL,     // model pm prediction
 };
 
@@ -266,4 +278,6 @@
       AVE_URA_GALMODEL,      // model pm prediction
       AVE_UDEC_GALMODEL,     // model pm prediction
+      AVE_RA_GALMODEL,      // model pm prediction
+      AVE_DEC_GALMODEL,     // model pm prediction
 };
 
@@ -433,5 +447,5 @@
 
 dbValue      dbExtractAverages      PROTO((Average *average, SecFilt *secfilt, Measure *measure, Lensobj *lensobj, StarPar *starpar, dbField *field));
-dbValue      dbExtractMeasures      PROTO((Average *average, SecFilt *secfilt, Measure *measure, dbField *field));
+dbValue      dbExtractMeasures      PROTO((Average *average, SecFilt *secfilt, Measure *measure, Lensing *lensing, StarPar *starpar, dbField *field));
 dbValue      dbExtractImages        PROTO((Image *image, off_t Nimage, off_t N, dbField *field));
 
@@ -443,5 +457,6 @@
 int dbFieldNeedMeasure (dbField *fields, int Nfields);
 int dbFieldNeedLensobj (dbField *fields, int Nfields);
-int dbFieldNeedStarpar (dbField *fields, int Nfields);
+int dbFieldNeedLensing (dbField *fields, int Nfields);
+int dbFieldNeedStarpar (dbField *fields, int Nfields, int isAverage);
 
 void FreeImageSelection (void);
Index: /branches/eam_branches/ipp-20140904/Ohana/src/libdvo/include/libdvo_astro.h
===================================================================
--- /branches/eam_branches/ipp-20140904/Ohana/src/libdvo/include/libdvo_astro.h	(revision 37562)
+++ /branches/eam_branches/ipp-20140904/Ohana/src/libdvo/include/libdvo_astro.h	(revision 37563)
@@ -166,4 +166,7 @@
 
 /* in AstromOffsetMapUtils.c */
+AstromOffsetMap *AstromOffsetMapInit (int Nx, int Ny);
+void AstromOffsetMapFree (AstromOffsetMap *map);
+
 int AstromOffsetTableNewMap (AstromOffsetTable *table, int order, Image *image);
 int AstromOffsetTableMatchChips (Image *images, off_t Nimages, AstromOffsetTable *table);
Index: /branches/eam_branches/ipp-20140904/Ohana/src/libdvo/src/AstromOffsetMapUtils.c
===================================================================
--- /branches/eam_branches/ipp-20140904/Ohana/src/libdvo/src/AstromOffsetMapUtils.c	(revision 37562)
+++ /branches/eam_branches/ipp-20140904/Ohana/src/libdvo/src/AstromOffsetMapUtils.c	(revision 37563)
@@ -24,4 +24,49 @@
 }
 
+AstromOffsetMap *AstromOffsetMapInit (int Nx, int Ny) {
+
+  AstromOffsetMap *map = NULL;
+  ALLOCATE (map, AstromOffsetMap, 1);
+
+  map->dX = NAN; 
+  map->dY = NAN; 
+  map->Nx = Nx; // output map size
+  map->Ny = Ny; // output map size
+ 
+  ALLOCATE (map->dXv, float *, map->Nx);
+  ALLOCATE (map->dYv, float *, map->Nx);
+
+  int j, k;
+  for (j = 0; j < map->Nx; j++) {
+    ALLOCATE (map->dXv[j], float, map->Ny);
+    ALLOCATE (map->dYv[j], float, map->Ny);
+
+    for (k = 0; k < map->Ny; k++) {
+      map->dXv[j][k] = 0.0;
+      map->dYv[j][k] = 0.0;
+    }
+  }
+
+  return map;
+}
+
+void AstromOffsetMapFree (AstromOffsetMap *map) {
+
+  if (!map) return;
+
+  int j;
+  for (j = 0; j < map->Nx; j++) {
+    if (map->dXv) free (map->dXv[j]);
+    if (map->dYv) free (map->dYv[j]);
+  }
+
+  free (map->dXv);
+  free (map->dYv);
+
+  free (map);
+
+  return;
+}
+
 int AstromOffsetTableNewMap (AstromOffsetTable *table, int order, Image *image) {
 
@@ -46,7 +91,5 @@
   table->IDtoSeq[image->imageID] = Nmap;
   
-  ALLOCATE (table->map[Nmap], AstromOffsetMap, 1);
-  table->map[Nmap][0].Nx      = Nx;
-  table->map[Nmap][0].Ny      = Ny;
+  table->map[Nmap] = AstromOffsetMapInit (Nx, Ny);
 
   table->MaxTableID ++;
@@ -57,17 +100,4 @@
   table->map[Nmap][0].dY = Ny / (float) image->NY;
 
-  ALLOCATE (table->map[Nmap][0].dXv, float *, Nx);
-  ALLOCATE (table->map[Nmap][0].dYv, float *, Nx);
-
-  int j, k;
-  for (j = 0; j < Nx; j++) {
-    ALLOCATE (table->map[Nmap][0].dXv[j], float, Ny);
-    ALLOCATE (table->map[Nmap][0].dYv[j], float, Ny);
-
-    for (k = 0; k < Ny; k++) {
-      table->map[Nmap][0].dXv[j][k] = 0.0;
-      table->map[Nmap][0].dYv[j][k] = 0.0;
-    }
-  }
   image[0].coords.offsetMap = table->map[Nmap];
   return TRUE;    
Index: /branches/eam_branches/ipp-20140904/Ohana/src/libdvo/src/dbExtractAverages.c
===================================================================
--- /branches/eam_branches/ipp-20140904/Ohana/src/libdvo/src/dbExtractAverages.c	(revision 37562)
+++ /branches/eam_branches/ipp-20140904/Ohana/src/libdvo/src/dbExtractAverages.c	(revision 37563)
@@ -356,4 +356,6 @@
     case AVE_URA_GALMODEL:     { value.Flt = starpar->uRA;      break; }
     case AVE_UDEC_GALMODEL:    { value.Flt = starpar->uDEC;     break; }
+    case AVE_RA_GALMODEL:      { value.Flt = starpar->R;        break; }
+    case AVE_DEC_GALMODEL:     { value.Flt = starpar->D;        break; }
 
     case AVE_TYPE:
Index: /branches/eam_branches/ipp-20140904/Ohana/src/libdvo/src/dbExtractMeasures.c
===================================================================
--- /branches/eam_branches/ipp-20140904/Ohana/src/libdvo/src/dbExtractMeasures.c	(revision 37562)
+++ /branches/eam_branches/ipp-20140904/Ohana/src/libdvo/src/dbExtractMeasures.c	(revision 37563)
@@ -85,5 +85,5 @@
 
 /* return measure.field based on the selection */
-dbValue dbExtractMeasures (Average *average, SecFilt *secfilt, Measure *measure, dbField *field) {
+dbValue dbExtractMeasures (Average *average, SecFilt *secfilt, Measure *measure, Lensing *lensing, StarPar *starpar, dbField *field) {
 
   int Nsec;
@@ -695,7 +695,5 @@
       break;
 
-    case MEAS_MCAL_OFFSET: /* OK */
-      value.Flt = measure[0].Mcal;
-      break;
+    case MEAS_MCAL_OFFSET: { value.Flt = measure[0].Mcal; break; }
 
     case MEAS_FLAT: /* OK */
@@ -732,4 +730,17 @@
       }
       break;
+
+    case MEAS_E_BV:             { value.Flt = starpar->Ebv;      break; }
+    case MEAS_E_BV_ERR:         { value.Flt = starpar->dEbv;     break; }
+    case MEAS_DISTANCE_MOD:     { value.Flt = starpar->DistMag;  break; }
+    case MEAS_DISTANCE_MOD_ERR: { value.Flt = starpar->dDistMag; break; }
+    case MEAS_M_R:              { value.Flt = starpar->M_r;      break; }
+    case MEAS_M_R_ERR:          { value.Flt = starpar->dM_r;     break; }
+    case MEAS_FEH:              { value.Flt = starpar->FeH;      break; }
+    case MEAS_FEH_ERR:          { value.Flt = starpar->dFeH;     break; }
+    case MEAS_URA_GALMODEL:     { value.Flt = starpar->uRA;      break; }
+    case MEAS_UDEC_GALMODEL:    { value.Flt = starpar->uDEC;     break; }
+    case MEAS_RA_GALMODEL:      { value.Flt = starpar->R;        break; }
+    case MEAS_DEC_GALMODEL:     { value.Flt = starpar->D;        break; }
 
     // case MEAS_FLUX_PSF: /* OK */
Index: /branches/eam_branches/ipp-20140904/Ohana/src/libdvo/src/dbFields.c
===================================================================
--- /branches/eam_branches/ipp-20140904/Ohana/src/libdvo/src/dbFields.c	(revision 37562)
+++ /branches/eam_branches/ipp-20140904/Ohana/src/libdvo/src/dbFields.c	(revision 37563)
@@ -34,4 +34,31 @@
     if (fields[i].photcode[0].type == PHOT_REF) return TRUE;
     if (fields[i].photcode[0].type == PHOT_DEP) return TRUE;
+  }
+  return FALSE;
+}
+
+int dbFieldNeedLensing (dbField *fields, int Nfields) {
+  int i;
+  for (i = 0; i < Nfields; i++) {
+    if (fields[i].ID == MEAS_X11_SM_OBJ) return TRUE;
+    if (fields[i].ID == MEAS_X12_SM_OBJ) return TRUE;
+    if (fields[i].ID == MEAS_X22_SM_OBJ) return TRUE;
+    if (fields[i].ID == MEAS_E1_SM_OBJ)  return TRUE;
+    if (fields[i].ID == MEAS_E2_SM_OBJ)  return TRUE;
+    if (fields[i].ID == MEAS_X11_SH_OBJ) return TRUE;
+    if (fields[i].ID == MEAS_X12_SH_OBJ) return TRUE;
+    if (fields[i].ID == MEAS_X22_SH_OBJ) return TRUE;
+    if (fields[i].ID == MEAS_E1_SH_OBJ)  return TRUE;
+    if (fields[i].ID == MEAS_E2_SH_OBJ)  return TRUE;
+    if (fields[i].ID == MEAS_X11_SM_PSF) return TRUE;
+    if (fields[i].ID == MEAS_X12_SM_PSF) return TRUE;
+    if (fields[i].ID == MEAS_X22_SM_PSF) return TRUE;
+    if (fields[i].ID == MEAS_E1_SM_PSF)  return TRUE;
+    if (fields[i].ID == MEAS_E2_SM_PSF)  return TRUE;
+    if (fields[i].ID == MEAS_X11_SH_PSF) return TRUE;
+    if (fields[i].ID == MEAS_X12_SH_PSF) return TRUE;
+    if (fields[i].ID == MEAS_X22_SH_PSF) return TRUE;
+    if (fields[i].ID == MEAS_E1_SH_PSF)  return TRUE;
+    if (fields[i].ID == MEAS_E2_SH_PSF)  return TRUE;
   }
   return FALSE;
@@ -67,17 +94,34 @@
 }
 
-int dbFieldNeedStarpar (dbField *fields, int Nfields) {
+int dbFieldNeedStarpar (dbField *fields, int Nfields, int isAverage) {
   int i;
   for (i = 0; i < Nfields; i++) {
-    if (fields[i].ID == AVE_E_BV)             return TRUE;
-    if (fields[i].ID == AVE_E_BV_ERR)         return TRUE;
-    if (fields[i].ID == AVE_DISTANCE_MOD)     return TRUE;
-    if (fields[i].ID == AVE_DISTANCE_MOD_ERR) return TRUE;
-    if (fields[i].ID == AVE_M_R)              return TRUE;
-    if (fields[i].ID == AVE_M_R_ERR)          return TRUE;
-    if (fields[i].ID == AVE_FEH)              return TRUE;
-    if (fields[i].ID == AVE_FEH_ERR)          return TRUE;
-    if (fields[i].ID == AVE_URA_GALMODEL)     return TRUE;
-    if (fields[i].ID == AVE_UDEC_GALMODEL)    return TRUE;
+    if (isAverage) {
+      if (fields[i].ID == AVE_E_BV)             return TRUE;
+      if (fields[i].ID == AVE_E_BV_ERR)         return TRUE;
+      if (fields[i].ID == AVE_DISTANCE_MOD)     return TRUE;
+      if (fields[i].ID == AVE_DISTANCE_MOD_ERR) return TRUE;
+      if (fields[i].ID == AVE_M_R)              return TRUE;
+      if (fields[i].ID == AVE_M_R_ERR)          return TRUE;
+      if (fields[i].ID == AVE_FEH)              return TRUE;
+      if (fields[i].ID == AVE_FEH_ERR)          return TRUE;
+      if (fields[i].ID == AVE_URA_GALMODEL)     return TRUE;
+      if (fields[i].ID == AVE_UDEC_GALMODEL)    return TRUE;
+      if (fields[i].ID == AVE_RA_GALMODEL)      return TRUE;
+      if (fields[i].ID == AVE_DEC_GALMODEL)     return TRUE;
+    } else {
+      if (fields[i].ID == MEAS_E_BV)             return TRUE;
+      if (fields[i].ID == MEAS_E_BV_ERR)         return TRUE;
+      if (fields[i].ID == MEAS_DISTANCE_MOD)     return TRUE;
+      if (fields[i].ID == MEAS_DISTANCE_MOD_ERR) return TRUE;
+      if (fields[i].ID == MEAS_M_R)              return TRUE;
+      if (fields[i].ID == MEAS_M_R_ERR)          return TRUE;
+      if (fields[i].ID == MEAS_FEH)              return TRUE;
+      if (fields[i].ID == MEAS_FEH_ERR)          return TRUE;
+      if (fields[i].ID == MEAS_URA_GALMODEL)     return TRUE;
+      if (fields[i].ID == MEAS_UDEC_GALMODEL)    return TRUE;
+      if (fields[i].ID == MEAS_RA_GALMODEL)      return TRUE;
+      if (fields[i].ID == MEAS_DEC_GALMODEL)     return TRUE;
+    }
   }
   return FALSE;
@@ -480,4 +524,23 @@
   if (!strcasecmp (fieldName, "E2_SH_PSF"))      ESCAPE (MEAS_E2_SH_PSF,  OPIHI_FLT);
 
+  if (!strcasecmp (fieldName, "E_BV"))             ESCAPE (MEAS_E_BV          ,   OPIHI_FLT);
+  if (!strcasecmp (fieldName, "E_BV_ERR"))         ESCAPE (MEAS_E_BV_ERR      ,   OPIHI_FLT);
+  if (!strcasecmp (fieldName, "DISTANCE_MOD"))     ESCAPE (MEAS_DISTANCE_MOD  ,   OPIHI_FLT);
+  if (!strcasecmp (fieldName, "DISTANCE_MOD_ERR")) ESCAPE (MEAS_DISTANCE_MOD_ERR, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "D_M"))     	   ESCAPE (MEAS_DISTANCE_MOD  ,   OPIHI_FLT);
+  if (!strcasecmp (fieldName, "D_M_ERR")) 	   ESCAPE (MEAS_DISTANCE_MOD_ERR, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "M_R"))              ESCAPE (MEAS_M_R           ,   OPIHI_FLT);
+  if (!strcasecmp (fieldName, "M_R_ERR"))          ESCAPE (MEAS_M_R_ERR       ,   OPIHI_FLT);
+  if (!strcasecmp (fieldName, "FEH"))              ESCAPE (MEAS_FEH           ,   OPIHI_FLT);
+  if (!strcasecmp (fieldName, "FEH_ERR"))          ESCAPE (MEAS_FEH_ERR       ,   OPIHI_FLT);
+  if (!strcasecmp (fieldName, "URA_GALMODEL"))     ESCAPE (MEAS_URA_GALMODEL  ,   OPIHI_FLT);
+  if (!strcasecmp (fieldName, "UDEC_GALMODEL"))    ESCAPE (MEAS_UDEC_GALMODEL ,   OPIHI_FLT);
+  if (!strcasecmp (fieldName, "RA_GALMODEL"))      ESCAPE (MEAS_RA_GALMODEL   ,   OPIHI_FLT);
+  if (!strcasecmp (fieldName, "DEC_GALMODEL"))     ESCAPE (MEAS_DEC_GALMODEL  ,   OPIHI_FLT);
+  if (!strcasecmp (fieldName, "URA_GAL"))     	   ESCAPE (MEAS_URA_GALMODEL  ,   OPIHI_FLT);
+  if (!strcasecmp (fieldName, "UDEC_GAL"))    	   ESCAPE (MEAS_UDEC_GALMODEL ,   OPIHI_FLT);
+  if (!strcasecmp (fieldName, "RA_GAL"))      	   ESCAPE (MEAS_RA_GALMODEL   ,   OPIHI_FLT);
+  if (!strcasecmp (fieldName, "DEC_GAL"))     	   ESCAPE (MEAS_DEC_GALMODEL  ,   OPIHI_FLT);
+
   // if (!strcasecmp (fieldName, "FLUX"))           ESCAPE (MEAS_FLUX_PSF,       OPIHI_FLT);
   // if (!strcasecmp (fieldName, "FLUX_ERR"))       ESCAPE (MEAS_FLUX_PSF_ERR,   OPIHI_FLT);
@@ -573,4 +636,6 @@
   if (!strcasecmp (fieldName, "URA_GALMODEL"))     ESCAPE (AVE_URA_GALMODEL  ,   OPIHI_FLT);
   if (!strcasecmp (fieldName, "UDEC_GALMODEL"))    ESCAPE (AVE_UDEC_GALMODEL ,   OPIHI_FLT);
+  if (!strcasecmp (fieldName, "RA_GALMODEL"))      ESCAPE (AVE_RA_GALMODEL   ,   OPIHI_FLT);
+  if (!strcasecmp (fieldName, "DEC_GALMODEL"))     ESCAPE (AVE_DEC_GALMODEL  ,   OPIHI_FLT);
 
 
