Index: /branches/eam_branches/ipp-20111122/Ohana/src/addstar/Makefile
===================================================================
--- /branches/eam_branches/ipp-20111122/Ohana/src/addstar/Makefile	(revision 33106)
+++ /branches/eam_branches/ipp-20111122/Ohana/src/addstar/Makefile	(revision 33107)
@@ -30,4 +30,6 @@
 
 all: addstar sedstar load2mass skycells mkcmf loadwise loadsupercos
+
+INSTALL = addstar sedstar load2mass skycells mkcmf loadwise loadsupercos
 
 # I need to fix the client/server version of addstar now that I have dropped Stars
@@ -294,6 +296,4 @@
 $(BIN)/mkcmf.$(ARCH)       : $(MKCMF)
 
-INSTALL = addstar sedstar load2mass skycells mkcmf
-
 # I need to fix the client/server version of addstar now that I have dropped Stars
 # as an autocode type and have converted to carrying average and measure
Index: /branches/eam_branches/ipp-20111122/Ohana/src/addstar/src/loadwise_star_full.c
===================================================================
--- /branches/eam_branches/ipp-20111122/Ohana/src/addstar/src/loadwise_star_full.c	(revision 33106)
+++ /branches/eam_branches/ipp-20111122/Ohana/src/addstar/src/loadwise_star_full.c	(revision 33107)
@@ -2,5 +2,10 @@
 # include "WISE.h"
 
-// XXX check to see if desired output format is PS1_V1 or later?  (use 16bit version if not?)
+int setWISE_ph_qual (Stars *star, char qual);
+int setWISE_var_flag (Stars *star, char qual);
+int setWISE_ext_flag (Stars **star, char *ptr);
+int setWISE_cc_flag (Stars *star, char qual);
+int setWISE_sat_flag (Stars *star, char *ptr);
+int setWISE_blend_flag (Stars **star, char *ptr);
 
 // fill in the data for a WISE quad star.  takes a pointer to the start of the line the
@@ -8,6 +13,6 @@
 int loadwise_star_full (Stars **star, char *line, int Nmax) {
 
+  int i;
   char *ptr;
-  double jd;
 
   if (line == NULL) Shutdown ("format error in WISE");
@@ -88,11 +93,5 @@
   }
 
-
-  // ptr = nextWISEfield (ptr); // x_scan
-  // star[0][0].measure.Xccd = strtod (ptr, NULL);
-  // star[2][0].measure.Xccd = star[1][0].measure.Xccd = star[0][0].measure.Xccd;
-  // ptr = nextWISEfield (ptr); // jdate (julian date)
-
-  jd = 2455263.0; // NOTE : WISE prelim release does not contain per-detection time info. 
+  double jd = 2455263.0; // NOTE : WISE prelim release does not contain per-detection time info. 
   // the release is based on data taken in the period 14 January 2010 to 29 April 2010
   star[0][0].measure.t = ohana_jd_to_sec (jd);
@@ -100,37 +99,4 @@
   star[2][0].measure.t = star[0][0].measure.t;
   star[3][0].measure.t = star[0][0].measure.t;
-
-  // ptr = nextWISEfield (ptr); // j_psfchi
-  // star[0][0].measure.psfChisq = strtod (ptr, NULL);
-  // ptr = nextWISEfield (ptr); // h_psfchi
-  // star[1][0].measure.psfChisq = strtod (ptr, NULL);
-  // ptr = nextWISEfield (ptr); // k_psfchi
-  // star[2][0].measure.psfChisq = strtod (ptr, NULL);
-  // 
-  // ptr = nextWISEfield (ptr); // j_m_stdap
-  // star[0][0].measure.Map = strtod (ptr, NULL);
-  // ptr = nextWISEfield (ptr); // j_msig_stdap (skip?)
-  // 
-  // ptr = nextWISEfield (ptr); // h_m_stdap
-  // star[1][0].measure.Map = strtod (ptr, NULL);
-  // ptr = nextWISEfield (ptr); // h_msig_stdap (skip?)
-  // 
-  // ptr = nextWISEfield (ptr); // k_m_stdap
-  // star[2][0].measure.Map = strtod (ptr, NULL);
-  // ptr = nextWISEfield (ptr); // k_msig_stdap (skip?)
-  // 
-  // ptr = nextWISEfield (ptr); // dist_edge_ns (skip)
-  // ptr = nextWISEfield (ptr); // dist_edge_ew (skip)
-  // ptr = nextWISEfield (ptr); // dist_edge_flg (skip)
-  // 
-  // ptr = nextWISEfield (ptr); // dup_src (one flag for all filters)
-  // setWISE_dup_flag (star[0], ptr[0]);
-  // setWISE_dup_flag (star[1], ptr[0]);
-  // setWISE_dup_flag (star[2], ptr[0]);
-  // 
-  // ptr = nextWISEfield (ptr); // use_src (one flag for all filters)
-  // setWISE_use_flag (star[0], ptr[0]);
-  // setWISE_use_flag (star[1], ptr[0]);
-  // setWISE_use_flag (star[2], ptr[0]);
 
   star[0][0].measure.photcode  = WISE_W1;
@@ -166,4 +132,27 @@
 }
 
+# define FLAG_PH_A 	      0x00000001 // quality flag 'A'
+# define FLAG_PH_B 	      0x00000002 // quality flag 'B'
+# define FLAG_PH_C 	      0x00000004 // quality flag 'C'
+# define FLAG_PH_U 	      0x00000008 // quality flag 'U'
+# define FLAG_PH_X 	      0x00000010 // quality flag 'X'
+
+# define FLAG_SATURATED_PIX   0x00000100 // sat > 0.0
+
+# define FLAG_CC_PERSIST      0x00010000 // 'p' or 'P'
+# define FLAG_CC_HALO         0x00020000 // 'h' or 'H'
+# define FLAG_CC_GHOST        0x00020000 // 'o' or 'O' (note overloading)
+# define FLAG_CC_SPIKE        0x00040000 // 'd' or 'D'
+# define FLAG_CC_SPURIOUS     0x00080000 // Upper Case letters
+
+# define FLAG_BLEND_ACTIVE    0x00100000 // nb > 1, na == 0
+# define FLAG_BLEND_PASSIVE   0x00200000 // nb > 1, na == 1
+
+# define FLAG_EXTENDED        0x01000000 // ext == 1
+
+# define FLAG_VARIABLE_LEVEL1 0x10000000 // var_flg == 1 to 4
+# define FLAG_VARIABLE_LEVEL2 0x20000000 // var_flg == 5 to 7
+# define FLAG_VARIABLE_LEVEL3 0x40000000 // var_flg == 8 or 9
+
 int setWISE_blend_flag (Stars **star, char *ptr) {
 
@@ -175,25 +164,13 @@
 
     if (na == 0) {
-	star[0][0].measure.photFlags |= 0x00100000;
-	star[1][0].measure.photFlags |= 0x00100000;
-	star[2][0].measure.photFlags |= 0x00100000;
-	star[3][0].measure.photFlags |= 0x00100000;
+	star[0][0].measure.photFlags |= FLAG_BLEND_ACTIVE;
+	star[1][0].measure.photFlags |= FLAG_BLEND_ACTIVE;
+	star[2][0].measure.photFlags |= FLAG_BLEND_ACTIVE;
+	star[3][0].measure.photFlags |= FLAG_BLEND_ACTIVE;
     } else {
-	star[0][0].measure.photFlags |= 0x00200000;
-	star[1][0].measure.photFlags |= 0x00200000;
-	star[2][0].measure.photFlags |= 0x00200000;
-	star[3][0].measure.photFlags |= 0x00200000;
-    }
-    return TRUE;
-}
-
-int setWISE_ext_flag (Stars **star, char *ptr) {
-
-    int ext = atoi (ptr);
-    if (ext == 1) {
-	star[0][0].measure.photFlags |= 0x01000000;
-	star[1][0].measure.photFlags |= 0x01000000;
-	star[2][0].measure.photFlags |= 0x01000000;
-	star[3][0].measure.photFlags |= 0x01000000;
+	star[0][0].measure.photFlags |= FLAG_BLEND_PASSIVE;
+	star[1][0].measure.photFlags |= FLAG_BLEND_PASSIVE;
+	star[2][0].measure.photFlags |= FLAG_BLEND_PASSIVE;
+	star[3][0].measure.photFlags |= FLAG_BLEND_PASSIVE;
     }
     return TRUE;
@@ -204,24 +181,6 @@
     float sat = strtod (ptr, NULL);
     if (sat > 0.0) {
-	star[0].measure.photFlags |= 0x00000100;
-    }
-    return TRUE;
-}
-
-int setWISE_var_flag (Stars *star, char qual) {
-
-    int value = qual = '0';
-    assert (value >= 0);
-    assert (value <= 9);
-    if (value == 0) return TRUE;
-    if (value < 5) {
-	star[0].measure.photFlags |= 0x10000000;
-	return TRUE;
-    }
-    if (value < 8) {
-	star[0].measure.photFlags |= 0x20000000;
-	return TRUE;
-    }
-    star[0].measure.photFlags |= 0x40000000;
+	star[0].measure.photFlags |= FLAG_SATURATED_PIX;
+    }
     return TRUE;
 }
@@ -230,12 +189,14 @@
 
   switch (qual) {
-    case 'p': star[0].measure.photFlags |= 0x00010000; break;
-    case 'P': star[0].measure.photFlags |= 0x00010000; break;
-    case 'h': star[0].measure.photFlags |= 0x00020000; break;
-    case 'H': star[0].measure.photFlags |= 0x00020000; break;
-    case 'd': star[0].measure.photFlags |= 0x00040000; break;
-    case 'D': star[0].measure.photFlags |= 0x00040000; break;
-    case 'o': star[0].measure.photFlags |= 0x00020000; break;
-    case 'O': star[0].measure.photFlags |= 0x00020000; break;
+    case 'p': star[0].measure.photFlags |= FLAG_CC_PERSIST; break;
+    case 'h': star[0].measure.photFlags |= FLAG_CC_HALO;    break;
+    case 'd': star[0].measure.photFlags |= FLAG_CC_SPIKE;   break;
+    case 'o': star[0].measure.photFlags |= FLAG_CC_GHOST;   break;
+
+    case 'P': star[0].measure.photFlags |= FLAG_CC_PERSIST | FLAG_CC_SPURIOUS; break;
+    case 'H': star[0].measure.photFlags |= FLAG_CC_HALO    | FLAG_CC_SPURIOUS; break;
+    case 'D': star[0].measure.photFlags |= FLAG_CC_SPIKE   | FLAG_CC_SPURIOUS; break;
+    case 'O': star[0].measure.photFlags |= FLAG_CC_GHOST   | FLAG_CC_SPURIOUS; break;
+
     case '0': break;
     default: 
@@ -246,12 +207,42 @@
 }
 
+int setWISE_ext_flag (Stars **star, char *ptr) {
+
+    int ext = atoi (ptr);
+    if (ext == 1) {
+	star[0][0].measure.photFlags |= FLAG_EXTENDED;
+	star[1][0].measure.photFlags |= FLAG_EXTENDED;
+	star[2][0].measure.photFlags |= FLAG_EXTENDED;
+	star[3][0].measure.photFlags |= FLAG_EXTENDED;
+    }
+    return TRUE;
+}
+
+int setWISE_var_flag (Stars *star, char qual) {
+
+    int value = qual - '0';
+    assert (value >= 0);
+    assert (value <= 9);
+    if (value == 0) return TRUE;
+    if (value < 5) {
+	star[0].measure.photFlags |= FLAG_VARIABLE_LEVEL1;
+	return TRUE;
+    }
+    if (value < 8) {
+	star[0].measure.photFlags |= FLAG_VARIABLE_LEVEL2;
+	return TRUE;
+    }
+    star[0].measure.photFlags |= FLAG_VARIABLE_LEVEL3;
+    return TRUE;
+}
+
 int setWISE_ph_qual (Stars *star, char qual) {
 
   switch (qual) {
-    case 'A': star[0].measure.photFlags |= 0x00000001; break; // was: 0x0004
-    case 'B': star[0].measure.photFlags |= 0x00000002; break; // was: 0x0005
-    case 'C': star[0].measure.photFlags |= 0x00000004; break; // was: 0x0006
-    case 'U': star[0].measure.photFlags |= 0x00000040; break; // was: 0x0001
-    case 'X': star[0].measure.photFlags |= 0x00000080; break; // was: 0x0000
+    case 'A': star[0].measure.photFlags |= FLAG_PH_A; break;
+    case 'B': star[0].measure.photFlags |= FLAG_PH_B; break;
+    case 'C': star[0].measure.photFlags |= FLAG_PH_C; break;
+    case 'U': star[0].measure.photFlags |= FLAG_PH_U; break;
+    case 'X': star[0].measure.photFlags |= FLAG_PH_X; break;
     default: 
       fprintf (stderr, "error!\n");
@@ -261,78 +252,27 @@
 }
 
-int setWISE_rd_flag (Stars *star, char qual) {
-
-  switch (qual) {
-    case '0': star[0].measure.photFlags |= 0x00000100; break; // was: 0x0000 
-    case '1': star[0].measure.photFlags |= 0x00000200; break; // was: 0x0010 
-    case '2': star[0].measure.photFlags |= 0x00000400; break; // was: 0x0020 
-    case '3': star[0].measure.photFlags |= 0x00000800; break; // was: 0x0030 
-    case '4': star[0].measure.photFlags |= 0x00001000; break; // was: 0x0040 
-    case '6': star[0].measure.photFlags |= 0x00002000; break; // was: 0x0050 
-    case '9': star[0].measure.photFlags |= 0x00004000; break; // was: 0x0060 
-    default: 
-      fprintf (stderr, "error!\n");
-      exit (2);
-  }      
-  return (TRUE);
-}
-
-int setWISE_bl_flag (Stars *star, char qual) {
-
-  switch (qual) {
-    case '0': star[0].measure.photFlags &= ~0x00300000; break; // was: ~0x0008
-    case '1': star[0].measure.photFlags |=  0x00100000; break; // was: ~0x0008
-    default:  star[0].measure.photFlags |=  0x00200000; break; // was:  0x0008
-  }      
-  return (TRUE);
-}
-
-int setWISE_gal_flag (Stars *star, char qual) {
-
-  switch (qual) {
-    case '0': star[0].measure.photFlags &= ~0x00c00000; break; // was: ~0x0080 
-    case '1': star[0].measure.photFlags |=  0x00400000; break; // was: ~0x0080 
-    default:  star[0].measure.photFlags |=  0x00800000;	       // was:  0x0080
-      star[0].measure.extNsigma = 100.0;
-      break;
-  }      
-  return (TRUE);
-}
-
-int setWISE_mp_flag (Stars *star, char qual) {
-
-  switch (qual) {
-    case '0': star[0].measure.photFlags &= ~0x03000000; break; // was: ~0x0800
-    case '1': star[0].measure.photFlags |=  0x01000000; break; // was: ~0x0800
-    default:  star[0].measure.photFlags |=  0x02000000; break; // was:  0x0800
-  }      
-  return (TRUE);
-}
-
-int setWISE_dup_flag (Stars *star, char qual) {
-
-  switch (qual) {
-    case '0': star[0].measure.photFlags &= ~0x0c000000; break; // was: ~0x1000
-    case '1': star[0].measure.photFlags |=  0x04000000; break; // was: ~0x1000
-    default:  star[0].measure.photFlags |=  0x08000000; break; // was:  0x1000
-  }      
-  return (TRUE);
-}
-
-int setWISE_use_flag (Stars *star, char qual) {
-
-  switch (qual) {
-    case '0': star[0].measure.photFlags &= ~0x10000000; break; // was: ~0x2000
-    case '1': star[0].measure.photFlags |=  0x10000000; break; // was:  0x2000
-    default:  abort();
-  }      
-  return (TRUE);
-}
-
-// unused photFlags:
-// 0x0000.8000
-// 0x0004.0000
-// 0x0008.0000
-// 0x2000.0000
-// 0x4000.0000
-// 0x8000.0000
+/* unused photFlag bits:
+
+0x0000.0020
+0x0000.0040
+0x0000.0080
+
+0x0000.0200
+0x0000.0400
+0x0000.0800
+
+0x0000.1000
+0x0000.2000
+0x0000.4000
+0x0000.8000
+
+0x0040.0000
+0x0080.0000
+
+0x0200.0000
+0x0400.0000
+0x0800.0000
+
+0x8000.0000
+
+*/
