Index: trunk/Ohana/src/opihi/dvo/photometry.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/photometry.c	(revision 8427)
+++ trunk/Ohana/src/opihi/dvo/photometry.c	(revision 12332)
@@ -7,9 +7,8 @@
     case PHOT_DEP: \
     case PHOT_REF: \
-      if (C[0].code != M.source) continue; \
+      if (C[0].code != M.photcode) continue; \
       break; \
-    case PHOT_PRI: \
     case PHOT_SEC: \
-      if (C[0].code != GetPhotcodeEquivCodebyCode (M.source)) continue; \
+      if (C[0].code != GetPhotcodeEquivCodebyCode (M.photcode)) continue; \
       break; \
     default: \
@@ -22,5 +21,5 @@
     if (TimeSelect && (M.t < tzero)) continue; \
     if (TimeSelect && (M.t > tend)) continue; \
-    if (ErrSelect  && (M.dM_PS > ErrValue)) continue; \
+    if (ErrSelect  && (M.dM > ErrValue)) continue; \
     if (TypeSelect && (TypeValue != GetMeasureTypeCode (&M))) continue; \
     if (iMagSelect && (PhotInst (&M) < iMagMin)) continue; \
@@ -34,7 +33,7 @@
   if (MODE == MAG_SYS)  MOUT = PhotSys  (&MEAS, average, secfilt); \
   if (MODE == MAG_REL)  MOUT = PhotRel  (&MEAS, average, secfilt); \
-  if (MODE == MAG_CAL)  MOUT = PhotCal  (&MEAS, average, secfilt, measure, GetPhotcodeEquivbyCode (MEAS.source)); \
-  if (MODE == MAG_AVE)  MOUT = PhotAve  (GetPhotcodeEquivbyCode (MEAS.source), average, secfilt); \
-  if (MODE == MAG_REF)  MOUT = PhotRef  (GetPhotcodeEquivbyCode (MEAS.source), average, secfilt, measure); \
+  if (MODE == MAG_CAL)  MOUT = PhotCal  (&MEAS, average, secfilt, measure, GetPhotcodeEquivbyCode (MEAS.photcode)); \
+  if (MODE == MAG_AVE)  MOUT = PhotAve  (GetPhotcodeEquivbyCode (MEAS.photcode), average, secfilt); \
+  if (MODE == MAG_REF)  MOUT = PhotRef  (GetPhotcodeEquivbyCode (MEAS.photcode), average, secfilt, measure); \
   if (ApplySelections[SelectionParam]) { \
     if (MagSelect && (MOUT > MagMax)) continue; \
@@ -134,5 +133,5 @@
     if (mode == MAG_CAL)  status = TRUE;
   }  
-  if ((code[0].type == PHOT_PRI) || (code[0].type == PHOT_SEC)) {
+  if (code[0].type == PHOT_SEC) {
     if (mode == MAG_NONE) mode  = MAG_AVE;
     if (mode == MAG_INST) status = TRUE;
@@ -302,7 +301,6 @@
   }
   if (NeedPhotcode) {
-    if (code[0][0].type == PHOT_PRI) return (TRUE);
     if (code[0][0].type == PHOT_SEC) return (TRUE);
-    gprint (GP_ERR, "photcode selection problem: average value requires PRI/SEC photcode\n");
+    gprint (GP_ERR, "photcode selection problem: average value requires average photcode\n");
     return (FALSE);
   }
@@ -322,5 +320,7 @@
 
   double ZERO_POINT;
-  char PhotCodeFile[256];
+  char MasterPhotcodeFile[256];
+  char CatdirPhotcodeFile[256];
+  char *catdir;
 
   if (VarConfig ("ZERO_PT", "%lf", &ZERO_POINT) == (char *) NULL) {
@@ -330,10 +330,17 @@
   SetZeroPoint (ZERO_POINT);
 
-  if (VarConfig ("PHOTCODE_FILE", "%s", PhotCodeFile) == (char *) NULL) {
+  catdir = GetCATDIR();
+  if (catdir == NULL) {
+    CatdirPhotcodeFile[0] = 0;
+  } else {
+    sprintf (CatdirPhotcodeFile, "%s/Photcodes.dat", catdir);
+  }
+
+  if (VarConfig ("PHOTCODE_FILE", "%s", MasterPhotcodeFile) == (char *) NULL) {
       gprint (GP_ERR, "PHOTCODE_FILE undefined in config\n");
       return (FALSE);
   }
-  if (!LoadPhotcodes (PhotCodeFile)) {
-    gprint (GP_ERR, "error loading photcodes\n");
+  if (!LoadPhotcodes (CatdirPhotcodeFile, MasterPhotcodeFile)) {
+    gprint (GP_ERR, "error loading photcode table %s or master file %s\n", CatdirPhotcodeFile, MasterPhotcodeFile);
     return (FALSE);
   }
@@ -676,5 +683,5 @@
       value = 0;
       for (i = 0; i < average[0].Nm; i++) {
-	if (code[0].code != GetPhotcodeEquivCodebyCode (measure[i].source)) continue;
+	if (code[0].code != GetPhotcodeEquivCodebyCode (measure[i].photcode)) continue;
 	value ++;
       }
@@ -683,5 +690,5 @@
       value = 0;
       for (i = 0; i < average[0].Nm; i++) {
-	if (code[0].code != GetPhotcodeEquivCodebyCode (measure[i].source)) continue;
+	if (code[0].code != GetPhotcodeEquivCodebyCode (measure[i].photcode)) continue;
 	if (measure[i].flags & (ID_MEAS_POOR | ID_MEAS_SKIP)) continue;
 	value ++;
@@ -691,6 +698,6 @@
       value = 0;
       for (i = 0; i < average[0].Nm; i++) {
-	if ((code != NULL) && (code[0].code != GetPhotcodeEquivCodebyCode (measure[i].source))) continue;
-	if (ErrSelect && (measure[i].dM_PS > ErrValue)) continue;
+	if ((code != NULL) && (code[0].code != GetPhotcodeEquivCodebyCode (measure[i].photcode))) continue;
+	if (ErrSelect && (measure[i].dM > ErrValue)) continue;
 	if (FlagSelect && (measure[i].flags != FlagValue)) continue;
 	if (TypeSelect && (TypeValue != GetMeasureTypeCode (&measure[i]))) continue;
@@ -711,5 +718,5 @@
   Nt = Nc = 0;
   for (k = 0; k < average[0].Nm; k++) {
-    if ((code != NULL) && (code[0].code != GetPhotcodeEquivCodebyCode (measure[k].source))) continue;
+    if ((code != NULL) && (code[0].code != GetPhotcodeEquivCodebyCode (measure[k].photcode))) continue;
     Nc ++;
     if (measure[k].dophot != TypefracType) continue;
@@ -727,5 +734,5 @@
   Nt[0] = Nt[1] = Nt[2] = 0;
   for (k = 0; k < average[0].Nm; k++) {
-    if (code != GetPhotcodeEquivCodebyCode (measure[k].source)) continue;
+    if (code != GetPhotcodeEquivCodebyCode (measure[k].photcode)) continue;
     N = GetMeasureTypeCode (&measure[k]);
     Nt[N] ++;
@@ -1128,20 +1135,20 @@
       break;
     case MEAS_RA: /* OK */
-      value = average[0].R - measure[0].dR_PS / 3600.0;
+      value = average[0].R - measure[0].dR / 3600.0;
       break;
     case MEAS_DEC: /* OK */
-      value = average[0].D - measure[0].dD_PS / 3600.0;
+      value = average[0].D - measure[0].dD / 3600.0;
       break;
     case MEAS_dMAG: /* OK */
-      value = measure[0].dM_PS;
+      value = measure[0].dM;
       break;
     case MEAS_AIRMASS: /* OK */
-      value = measure[0].airmass_PS;
+      value = measure[0].airmass;
       break;
     case MEAS_EXPTIME: /* OK */
-      value = pow (10.0, measure[0].dt_PS * 0.4);
+      value = pow (10.0, measure[0].dt * 0.4);
       break;
     case MEAS_PHOTCODE: /* OK */
-      value = measure[0].source;
+      value = measure[0].photcode;
       break;
     case MEAS_TIME: /* OK */
@@ -1149,8 +1156,8 @@
       break;
     case MEAS_dR: /* OK */
-      value = measure[0].dR_PS;
+      value = measure[0].dR;
       break;
     case MEAS_dD: /* OK */
-      value = measure[0].dD_PS;
+      value = measure[0].dD;
       break;
     case MEAS_FWHM: /* OK */
@@ -1164,23 +1171,33 @@
       break;
     case MEAS_XCCD: /* OK */
-      ra  = average[0].R - measure[0].dR_PS / 3600.0;
-      dec = average[0].D - measure[0].dD_PS / 3600.0;
-      image = MatchImage (measure[0].t, measure[0].source);
+/* I need to perform this conversion for ELIXIR and LONEOS formats on load */      
+# if 0
+      value = measure[0].Xccd;
+# else
+      ra  = average[0].R - measure[0].dR / 3600.0;
+      dec = average[0].D - measure[0].dD / 3600.0;
+      image = MatchImage (measure[0].t, measure[0].photcode);
       if (image == NULL) break;
       RD_to_XY (&x, &y, ra, dec, &image[0].coords);
       value = x;
+# endif
       break;
     case MEAS_YCCD: /* OK */
-      ra  = average[0].R - measure[0].dR_PS / 3600.0;
-      dec = average[0].D - measure[0].dD_PS / 3600.0;
-      image = MatchImage (measure[0].t, measure[0].source);
+/* I need to perform this conversion for ELIXIR and LONEOS formats on load */      
+# if 0
+      value = measure[0].Yccd;
+# else
+      ra  = average[0].R - measure[0].dR / 3600.0;
+      dec = average[0].D - measure[0].dD / 3600.0;
+      image = MatchImage (measure[0].t, measure[0].photcode);
       if (image == NULL) break;
       RD_to_XY (&x, &y, ra, dec, &image[0].coords);
       value = y;
+# endif
       break;
     case MEAS_XMOSAIC: /* OK */
-      ra  = average[0].R - measure[0].dR_PS / 3600.0;
-      dec = average[0].D - measure[0].dD_PS / 3600.0;
-      mosaic = MatchMosaic (measure[0].t, measure[0].source);
+      ra  = average[0].R - measure[0].dR / 3600.0;
+      dec = average[0].D - measure[0].dD / 3600.0;
+      mosaic = MatchMosaic (measure[0].t, measure[0].photcode);
       if (mosaic == NULL) break;
       RD_to_XY (&x, &y, ra, dec, mosaic);
@@ -1188,7 +1205,7 @@
       break;
     case MEAS_YMOSAIC: /* OK */
-      ra  = average[0].R - measure[0].dR_PS / 3600.0;
-      dec = average[0].D - measure[0].dD_PS / 3600.0;
-      mosaic = MatchMosaic (measure[0].t, measure[0].source);
+      ra  = average[0].R - measure[0].dR / 3600.0;
+      dec = average[0].D - measure[0].dD / 3600.0;
+      mosaic = MatchMosaic (measure[0].t, measure[0].photcode);
       if (mosaic == NULL) break;
       RD_to_XY (&x, &y, ra, dec, mosaic);
