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 33105)
+++ /branches/eam_branches/ipp-20111122/Ohana/src/addstar/src/loadwise_star_full.c	(revision 33106)
@@ -15,74 +15,62 @@
   ptr = line;
 
+  // I can assign dRA and dDEC to dX and dY if I can consistently set posangle and pltscale
+  star[0][0].measure.posangle = 0.0;
+  star[0][0].measure.pltscale = 1.0;
+
   ptr = skipNbounds (ptr, '|', 3, Nmax); // skip: desig, ra, dec,
-  star[0][0].measure.FWx = ToShortPixels(strtod (ptr, NULL)); // sig_ra
+  star[0][0].measure.dXccd = ToShortPixels(strtod (ptr, NULL)); // sig_ra
   ptr = nextWISEfield (ptr);
-  star[0][0].measure.FWy = ToShortPixels(strtod (ptr, NULL)); // sig_dec
+  star[0][0].measure.dYccd = ToShortPixels(strtod (ptr, NULL)); // sig_dec
   ptr = nextWISEfield (ptr);
-  star[0][0].measure.theta = ToShortPixels(strtod (ptr, NULL)); // sig_radec
-
-  star[1][0].measure.FWx   = star[0][0].measure.FWx;
-  star[1][0].measure.FWy   = star[0][0].measure.FWy;
-  star[1][0].measure.theta = star[0][0].measure.theta;
-  star[2][0].measure.FWx   = star[0][0].measure.FWx;
-  star[2][0].measure.FWy   = star[0][0].measure.FWy;
-  star[2][0].measure.theta = star[0][0].measure.theta;
-  star[3][0].measure.FWx   = star[0][0].measure.FWx;
-  star[3][0].measure.FWy   = star[0][0].measure.FWy;
-  star[3][0].measure.theta = star[0][0].measure.theta;
-
-  ptr = skipNbounds (ptr, '|', 11, Nmax); // skip: sig_radec, glon, glat, elon, elat, wx, wy, cntr, source_id, coadd_id, src
+
+  // we only know a single set of values for all 4 bands 
+  for (i = 1; i < 4; i++) {
+      star[i][0].measure.dXccd    = star[0][0].measure.dXccd;
+      star[i][0].measure.dYccd    = star[0][0].measure.dYccd;
+      star[i][0].measure.posangle = star[0][0].measure.posangle;
+      star[i][0].measure.pltscale = star[0][0].measure.pltscale;
+  }
+  ptr = skipNbounds (ptr, '|', 5, Nmax); // skip: sig_radec, glon, glat, elon, elat
+
+  star[0][0].measure.Xccd = strtod (ptr, NULL); // wx
+  ptr = nextWISEfield (ptr); // skip wx
+  star[0][0].measure.Yccd = strtod (ptr, NULL); // wy
+  ptr = nextWISEfield (ptr); // skip wy
+
+  for (i = 1; i < 4; i++) {
+      star[i][0].measure.Xccd    = star[0][0].measure.Xccd;
+      star[i][0].measure.Yccd    = star[0][0].measure.Yccd;
+  }
+  ptr = skipNbounds (ptr, '|', 4, Nmax); // skip: cntr, source_id, coadd_id, src
 
   // W1
-  star[0][0].measure.M  = strtod (ptr, NULL); // w1mpro
-  ptr = nextWISEfield (ptr);
-  star[0][0].measure.dM = strtod (ptr, NULL); // w1sigmpro
-  ptr = skipNbounds (ptr, '|', 3, Nmax); // skip: w1sigmpro, w1snr, w1rchi2
-
-  // W2
-  star[1][0].measure.M  = strtod (ptr, NULL); // w1mpro
-  ptr = nextWISEfield (ptr);
-  star[1][0].measure.dM = strtod (ptr, NULL); // w1sigmpro
-  ptr = skipNbounds (ptr, '|', 3, Nmax); // skip: w2sigmpro, w2snr, w2rchi2
-
-  // W3
-  star[2][0].measure.M  = strtod (ptr, NULL); // w1mpro
-  ptr = nextWISEfield (ptr);
-  star[2][0].measure.dM = strtod (ptr, NULL); // w1sigmpro
-  ptr = skipNbounds (ptr, '|', 3, Nmax); // skip: w3sigmpro, w3snr, w3rchi2
-
-  // W4
-  star[3][0].measure.M  = strtod (ptr, NULL); // w1mpro
-  ptr = nextWISEfield (ptr);
-  star[3][0].measure.dM = strtod (ptr, NULL); // w1sigmpro
-  ptr = skipNbounds (ptr, '|', 3, Nmax); // skip: w4sigmpro, w4snr, w4rchi2
-
-  star[0][0].measure.photFlags = 0;
-  star[1][0].measure.photFlags = 0;
-  star[2][0].measure.photFlags = 0;
-  star[3][0].measure.photFlags = 0;
-  ptr = nextWISEfield (ptr); // skip: rchi2, nb, na
+  for (i = 0; i < 4; i++) {
+      star[0][0].measure.M  = strtod (ptr, NULL); // w?mpro
+      ptr = nextWISEfield (ptr);
+      star[0][0].measure.dM = strtod (ptr, NULL); // w?sigmpro
+      ptr = skipNbounds (ptr, '|', 2, Nmax); // skip: w?sigmpro, w?snr
+      star[0][0].measure.psfChisq = strtod (ptr, NULL); // w?rchi2
+      ptr = nextWISEfield (ptr); // skip : w1rchi2
+
+      // init the photFlags field
+      star[i][0].measure.photFlags = 0;
+  }
+
+  ptr = nextWISEfield (ptr); // skip: rchi2
 
   // set blend flags for all 4 measures
-  setWISE_blend_flag (star[0], ptr); // nb & na both used here
+  setWISE_blend_flag (star, ptr); // nb & na both used here
   ptr = skipNbounds (ptr, '|', 2, Nmax); // skip: nb, na
 
-  setWISE_sat_flag (star[0], ptr); // w1sat
-  ptr = nextWISEfield (ptr); 
-
-  setWISE_sat_flag (star[1], ptr); // w2sat
-  ptr = nextWISEfield (ptr); 
-
-  setWISE_sat_flag (star[2], ptr); // w3sat
-  ptr = nextWISEfield (ptr); 
-
-  setWISE_sat_flag (star[3], ptr); // w4sat
-  ptr = nextWISEfield (ptr); 
+  for (i = 0; i < 4; i++) {
+      setWISE_sat_flag (star[i], ptr); // w1sat
+      ptr = nextWISEfield (ptr); 
+  }
   ptr = nextWISEfield (ptr); // skip satnum
 
-  setWISE_cc_flag (star[0], ptr[0]); // cc_flg
-  setWISE_cc_flag (star[1], ptr[1]); // cc_flg
-  setWISE_cc_flag (star[2], ptr[2]); // cc_flg
-  setWISE_cc_flag (star[3], ptr[3]); // cc_flg
+  for (i = 0; i < 4; i++) {
+      setWISE_cc_flag (star[i], ptr[i]); // cc_flg
+  }
   ptr = nextWISEfield (ptr); // skip cc_flags
 
@@ -91,19 +79,13 @@
   ptr = nextWISEfield (ptr); // skip ext_flags
 
-  setWISE_var_flag (star[0], ptr[0]); // var_flg
-  setWISE_var_flag (star[1], ptr[1]); // var_flg
-  setWISE_var_flag (star[2], ptr[2]); // var_flg
-  setWISE_var_flag (star[3], ptr[3]); // var_flg
+  for (i = 0; i < 4; i++) {
+      setWISE_var_flag (star[i], ptr[i]); // var_flg
+  }
   ptr = nextWISEfield (ptr); // skip var_flags
 
-  setWISE_ph_qual (star[0], ptr[0]); // ph_qual
-  setWISE_ph_qual (star[1], ptr[1]); // ph_qual
-  setWISE_ph_qual (star[2], ptr[2]); // ph_qual
-  setWISE_ph_qual (star[3], ptr[3]); // ph_qual
-
-  // setWISE_rd_flag (star[0], ptr[0]);
-  // setWISE_bl_flag (star[0], ptr[0]);
-  // setWISE_gal_flag (star[0], ptr[0]);
-  // setWISE_mp_flag (star[0], ptr[0]);
+  for (i = 0; i < 4; i++) {
+      setWISE_ph_qual (star[i], ptr[i]); // ph_qual
+  }
+
 
   // ptr = nextWISEfield (ptr); // x_scan
@@ -182,4 +164,65 @@
   if (*p == 0) return (NULL);
   return (p);
+}
+
+int setWISE_blend_flag (Stars **star, char *ptr) {
+
+    int nb = atoi (ptr);
+    if (nb == 1) return TRUE;
+
+    ptr = nextWISEfield (ptr); // skip to na
+    int na = atoi (ptr);
+
+    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;
+    } 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;
+    }
+    return TRUE;
+}
+
+int setWISE_sat_flag (Stars *star, char *ptr) {
+
+    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;
+    return TRUE;
 }
 
