Index: /branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/StarOps.c
===================================================================
--- /branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/StarOps.c	(revision 33604)
+++ /branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/StarOps.c	(revision 33605)
@@ -167,7 +167,7 @@
   int i, N;
   off_t j, k, m, Nmax;
-  float Msys, Mcal, Mmos, Mgrid;
-  double *list, *dlist;
-  StatType stats;
+  float Msys, Mcal, Mmos, Mgrid, Map;
+  double *list, *dlist, *aplist, *daplist;
+  StatType stats, apstats;
   int Nsec;
 
@@ -183,4 +183,7 @@
   ALLOCATE (list, double, MAX (1, Nmax));
   ALLOCATE (dlist, double, MAX (1, Nmax));
+
+  ALLOCATE (aplist, double, MAX (1, Nmax));
+  ALLOCATE (daplist, double, MAX (1, Nmax));
 
   for (i = 0; i < Ncatalog; i++) {
@@ -231,4 +234,7 @@
 	  list[N] = Msys - Mcal - Mmos - Mgrid;
 
+	  Map = PhotAper (&catalog[i].measure[m]);
+	  aplist[N] = Map - Mcal - Mmos - Mgrid;
+
 	  int myUbercalDist = getUbercalDist(m,i);
 	  minUbercalDist = MIN(minUbercalDist, myUbercalDist);
@@ -286,6 +292,11 @@
 	if (N < 1) continue;
 
+	for (m = 0; m < N; m++) {
+	  daplist[m] = dlist[m];
+	}
+
 	// XXX force WT_MEAN or MEAN here?
 	liststats (list, dlist, N, &stats);
+	liststats (aplist, daplist, N, &apstats);
 	catalog[i].found[Nsecfilt*j+Nsec] = TRUE;
 	switch (pass) {
@@ -316,4 +327,5 @@
 	/* use sigma or error in dM for output? */
 	catalog[i].secfilt[Nsecfilt*j+Nsec].M  = stats.mean;
+	catalog[i].secfilt[Nsecfilt*j+Nsec].Map = apstats.mean;
 	catalog[i].secfilt[Nsecfilt*j+Nsec].dM = MAX (stats.error, stats.sigma);
 	catalog[i].secfilt[Nsecfilt*j+Nsec].Xm = (stats.Nmeas > 1) ? 100.0*log10(stats.chisq) : NAN_S_SHORT;
@@ -334,4 +346,7 @@
   free (list);
   free (dlist);
+
+  free (aplist);
+  free (daplist);
   return (TRUE);
 }
Index: /branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/relphot.c
===================================================================
--- /branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/relphot.c	(revision 33604)
+++ /branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/relphot.c	(revision 33605)
@@ -1,9 +1,9 @@
 # include "relphot.h"
 
-# define MARKTIME(MSG,...) { \
-  float dtime; \
-  gettimeofday (&stop, (void *) NULL); \
-  dtime = DTIME (stop, start); \
-  fprintf (stderr, MSG, __VA_ARGS__); }
+# define MARKTIME(MSG,...) {			\
+    float dtime;				\
+    gettimeofday (&stop, (void *) NULL);	\
+    dtime = DTIME (stop, start);		\
+    fprintf (stderr, MSG, __VA_ARGS__); }
 
 int main (int argc, char **argv) {
@@ -66,37 +66,38 @@
   FlatCorrectionTable *flatcorr = FlatCorrectionLoad (flatcorrfile, VERBOSE);
 
-  /* load catalog data from region files (hostID is 0 since we are not a client */
-  catalog = load_catalogs (skylist, &Ncatalog, 0, NULL);
-  MARKTIME("-- load catalog data: %f sec\n", dtime);
+  if (NLOOP > 0) {
+    /* load catalog data from region files (hostID is 0 since we are not a client */
+    catalog = load_catalogs (skylist, &Ncatalog, 0, NULL);
+    MARKTIME("-- load catalog data: %f sec\n", dtime);
   
-  /* add in a loop over the catalogs calling dvo_catalog_chipcoords */
-
-  /* match measurements with images, mosaics */
-  initImageBins  (catalog, Ncatalog, TRUE);
-  MARKTIME("-- make image bins: %f sec\n", dtime);
-
-  initMosaicBins (catalog, Ncatalog, TRUE);
-  initGridBins   (catalog, Ncatalog);
-  initMrel (catalog, Ncatalog);
-
-  findImages (catalog, Ncatalog, TRUE);
-  MARKTIME("-- set up image indexes: %f sec\n", dtime);
-
-  findMosaics (catalog, Ncatalog, TRUE);  /* also sets Grid values */
-  MARKTIME("-- set up mosaic indexes: %f sec\n", dtime);
-
-  SAVEPLOT = FALSE;
-
-  setExclusions (catalog, Ncatalog, TRUE);
-
-  global_stats (catalog, Ncatalog, flatcorr);
-
-  if (PLOTSTUFF) {
-    plot_star_coords (catalog, Ncatalog);
-    // plot_mosaic_fields (catalog);
-  }
-
-  // if we are measuring the flat-field correction grid, we need to perform a number of iterations first:
-  if (USE_GRID) {
+    /* add in a loop over the catalogs calling dvo_catalog_chipcoords */
+
+    /* match measurements with images, mosaics */
+    initImageBins  (catalog, Ncatalog, TRUE);
+    MARKTIME("-- make image bins: %f sec\n", dtime);
+
+    initMosaicBins (catalog, Ncatalog, TRUE);
+    initGridBins   (catalog, Ncatalog);
+    initMrel (catalog, Ncatalog);
+
+    findImages (catalog, Ncatalog, TRUE);
+    MARKTIME("-- set up image indexes: %f sec\n", dtime);
+
+    findMosaics (catalog, Ncatalog, TRUE);  /* also sets Grid values */
+    MARKTIME("-- set up mosaic indexes: %f sec\n", dtime);
+
+    SAVEPLOT = FALSE;
+
+    setExclusions (catalog, Ncatalog, TRUE);
+
+    global_stats (catalog, Ncatalog, flatcorr);
+
+    if (PLOTSTUFF) {
+      plot_star_coords (catalog, Ncatalog);
+      // plot_mosaic_fields (catalog);
+    }
+
+    // if we are measuring the flat-field correction grid, we need to perform a number of iterations first:
+    if (USE_GRID) {
       int star_toofew;
 
@@ -106,26 +107,49 @@
       STAR_TOOFEW = 0;
       for (i = 0; i < NGRID; i++) {
-	  STAR_BAD = ID_STAR_POOR;
-	  setMrel  (catalog, Ncatalog, flatcorr);
-	  STAR_BAD  = ID_STAR_POOR | ID_STAR_FEW;
-	  setMgrid (catalog, flatcorr);
+	STAR_BAD = ID_STAR_POOR;
+	setMrel  (catalog, Ncatalog, flatcorr);
+	STAR_BAD  = ID_STAR_POOR | ID_STAR_FEW;
+	setMgrid (catalog, flatcorr);
       }
       STAR_BAD  = ID_STAR_POOR | ID_STAR_FEW;
       STAR_TOOFEW = star_toofew;
-  }
-
-  /* determine fit values */
-  for (i = 0; i < NLOOP; i++) {
-    if (PLOTSTUFF) {
-      plot_scatter (catalog, Ncatalog, flatcorr); 
-    }
-    setMrel  (catalog, Ncatalog, flatcorr);
-    if (PLOTSTUFF) {
-      plot_scatter (catalog, Ncatalog, flatcorr); 
-    }
-    setMcal  (catalog, FALSE, flatcorr);
-    setMmos  (catalog, FALSE, flatcorr);
-    setMgrid (catalog, flatcorr);
+    }
+
+    /* determine fit values */
+    for (i = 0; i < NLOOP; i++) {
+      if (PLOTSTUFF) {
+	plot_scatter (catalog, Ncatalog, flatcorr); 
+      }
+      setMrel  (catalog, Ncatalog, flatcorr);
+      if (PLOTSTUFF) {
+	plot_scatter (catalog, Ncatalog, flatcorr); 
+      }
+      setMcal  (catalog, FALSE, flatcorr);
+      setMmos  (catalog, FALSE, flatcorr);
+      setMgrid (catalog, flatcorr);
     
+      if (PLOTSTUFF) {
+	plot_scatter (catalog, Ncatalog, flatcorr); 
+	plot_grid (catalog, flatcorr); 
+	plot_mosaics ();
+	plot_images ();
+	plot_stars (catalog, Ncatalog);
+	plot_chisq (catalog, Ncatalog);
+      }
+      // if (i < NLOOP - 1) rationalize_mosaics (catalog, Ncatalog);
+      // if (i % 6 == 1) rationalize_images ();
+      if (i % 6 == 2) clean_measures (catalog, Ncatalog, FALSE, flatcorr); 
+      if (i % 6 == 3) clean_stars (catalog, Ncatalog);
+      if (i % 6 == 5) clean_mosaics ();
+      if (i % 6 == 5) clean_images ();
+
+      // if ((i == 1) || (i == 5) || (i ==  9) || (i == 13)) clean_measures (catalog, Ncatalog, FALSE); 
+      // if ((i == 2) || (i == 6) || (i == 10) || (i == 14)) clean_stars (catalog, Ncatalog);
+      // if ((i == 4) || (i == 8) || (i == 12) || (i == 16)) clean_mosaics ();
+      // if ((i == 4) || (i == 8) || (i == 12) || (i == 16)) clean_images ();
+      global_stats (catalog, Ncatalog, flatcorr);
+      MARKTIME("-- finished loop %d: %f sec\n", i, dtime);
+    }
+
     if (PLOTSTUFF) {
       plot_scatter (catalog, Ncatalog, flatcorr); 
@@ -136,97 +160,75 @@
       plot_chisq (catalog, Ncatalog);
     }
-    // if (i < NLOOP - 1) rationalize_mosaics (catalog, Ncatalog);
-    // if (i % 6 == 1) rationalize_images ();
-    if (i % 6 == 2) clean_measures (catalog, Ncatalog, FALSE, flatcorr); 
-    if (i % 6 == 3) clean_stars (catalog, Ncatalog);
-    if (i % 6 == 5) clean_mosaics ();
-    if (i % 6 == 5) clean_images ();
-
-    // if ((i == 1) || (i == 5) || (i ==  9) || (i == 13)) clean_measures (catalog, Ncatalog, FALSE); 
-    // if ((i == 2) || (i == 6) || (i == 10) || (i == 14)) clean_stars (catalog, Ncatalog);
-    // if ((i == 4) || (i == 8) || (i == 12) || (i == 16)) clean_mosaics ();
-    // if ((i == 4) || (i == 8) || (i == 12) || (i == 16)) clean_images ();
-    global_stats (catalog, Ncatalog, flatcorr);
-    MARKTIME("-- finished loop %d: %f sec\n", i, dtime);
-  }
-
-  if (PLOTSTUFF) {
-    plot_scatter (catalog, Ncatalog, flatcorr); 
-    plot_grid (catalog, flatcorr); 
-    plot_mosaics ();
-    plot_images ();
-    plot_stars (catalog, Ncatalog);
-    plot_chisq (catalog, Ncatalog);
-  }
   
-  if (USE_GRID) dump_grid ();
-
-  /* set Mcal & Mmos for bad images */
-  setMcal  (catalog, TRUE, flatcorr);
-  setMmos  (catalog, TRUE, flatcorr);
-  MARKTIME("-- finalize Mcal values: %f sec\n", dtime);
-
-  setMcalFinal (); // copy per-mosaic calibrations to the images
-
-  if (SAVE_IMAGE_UPDATES) {
-
-    FITS_DB dbX;
-    off_t *LineNumber;
-    Image *image, *subset;
-    off_t Nimage, Nsubset, i, Nx;
-    char filename[1024];
-
-    gfits_db_init (&dbX);
-    dbX.lockstate = LCK_XCLD;
-    dbX.timeout   = 60.0;
-    dbX.mode      = db.mode;
-    dbX.format    = db.format;
-
-    snprintf (filename, 1024, "%s.bck", ImageCat);
-    if (!gfits_db_lock (&dbX, filename)) {
-      fprintf (stderr, "can't lock backup image image catalog\n");
-      return (FALSE);
-    }
+    if (USE_GRID) dump_grid ();
+
+    /* set Mcal & Mmos for bad images */
+    setMcal  (catalog, TRUE, flatcorr);
+    setMmos  (catalog, TRUE, flatcorr);
+    MARKTIME("-- finalize Mcal values: %f sec\n", dtime);
+
+    setMcalFinal (); // copy per-mosaic calibrations to the images
+
+    if (SAVE_IMAGE_UPDATES) {
+
+      FITS_DB dbX;
+      off_t *LineNumber;
+      Image *image, *subset;
+      off_t Nimage, Nsubset, i, Nx;
+      char filename[1024];
+
+      gfits_db_init (&dbX);
+      dbX.lockstate = LCK_XCLD;
+      dbX.timeout   = 60.0;
+      dbX.mode      = db.mode;
+      dbX.format    = db.format;
+
+      snprintf (filename, 1024, "%s.bck", ImageCat);
+      if (!gfits_db_lock (&dbX, filename)) {
+	fprintf (stderr, "can't lock backup image image catalog\n");
+	return (FALSE);
+      }
     
-    // apply the changes from the image subset to the full table:
-
-    // convert database table to internal structure (binary to Image)
-    // 'image' points to the same memory as db->ftable->buffer
-    image = gfits_table_get_Image (&db.ftable, &Nimage, &db.swapped);
-    if (!image) {
+      // apply the changes from the image subset to the full table:
+
+      // convert database table to internal structure (binary to Image)
+      // 'image' points to the same memory as db->ftable->buffer
+      image = gfits_table_get_Image (&db.ftable, &Nimage, &db.swapped);
+      if (!image) {
 	fprintf (stderr, "ERROR: failed to read images\n");
 	exit (2);
-    }
-    gfits_scan (db.ftable.header, "NAXIS1", OFF_T_FMT, 1,  &Nx);
-
-    subset = getimages (&Nsubset, &LineNumber);
-    for (i = 0; i < Nsubset; i++) {
-      if (LineNumber[i] == -1) continue;
-      memcpy (&image[LineNumber[i]], &subset[i], Nx);
-    }
-
-    // copy Images.dat data (all or only the subset / vtable elements?)  I think I need to dump
-    // the entire Image table, but with the updates in place I think this says: re-work the
-    // ftable/vtable usage in this program to be more sensible...
-    gfits_copy_header (&db.header,  &dbX.header);
-    gfits_copy_matrix (&db.matrix,  &dbX.matrix);
-    gfits_copy_header (&db.theader, &dbX.theader);
-    gfits_copy_ftable (&db.ftable,  &dbX.ftable);
-
-    dbX.ftable.header = &dbX.theader;
-    dbX.virtual = FALSE;
-
-    // save Images.dat using the copied structure
-    if (UPDATE_CATFORMAT) {
-      // ensure the db format is updated
-      dbX.format = dvo_catalog_catformat (UPDATE_CATFORMAT);
-      char photcodeFile[1024];
-      sprintf (photcodeFile, "%s/Photcodes.dat", CATDIR);
-      SavePhotcodesFITS (photcodeFile);
-    }
-    dvo_image_save (&dbX, VERBOSE);
-    dvo_image_unlock (&dbX); 
-    MARKTIME("-- save Image.dat.bck: %f sec\n", dtime);
-  }
+      }
+      gfits_scan (db.ftable.header, "NAXIS1", OFF_T_FMT, 1,  &Nx);
+
+      subset = getimages (&Nsubset, &LineNumber);
+      for (i = 0; i < Nsubset; i++) {
+	if (LineNumber[i] == -1) continue;
+	memcpy (&image[LineNumber[i]], &subset[i], Nx);
+      }
+
+      // copy Images.dat data (all or only the subset / vtable elements?)  I think I need to dump
+      // the entire Image table, but with the updates in place I think this says: re-work the
+      // ftable/vtable usage in this program to be more sensible...
+      gfits_copy_header (&db.header,  &dbX.header);
+      gfits_copy_matrix (&db.matrix,  &dbX.matrix);
+      gfits_copy_header (&db.theader, &dbX.theader);
+      gfits_copy_ftable (&db.ftable,  &dbX.ftable);
+
+      dbX.ftable.header = &dbX.theader;
+      dbX.virtual = FALSE;
+
+      // save Images.dat using the copied structure
+      if (UPDATE_CATFORMAT) {
+	// ensure the db format is updated
+	dbX.format = dvo_catalog_catformat (UPDATE_CATFORMAT);
+	char photcodeFile[1024];
+	sprintf (photcodeFile, "%s/Photcodes.dat", CATDIR);
+	SavePhotcodesFITS (photcodeFile);
+      }
+      dvo_image_save (&dbX, VERBOSE);
+      dvo_image_unlock (&dbX); 
+      MARKTIME("-- save Image.dat.bck: %f sec\n", dtime);
+    }
+  } // (NLOOP > 0) : this loop determines the offsets per chip 
 
   // only change the real database if -update is requested
Index: /branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/setMrelFinal.c
===================================================================
--- /branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/setMrelFinal.c	(revision 33604)
+++ /branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/setMrelFinal.c	(revision 33605)
@@ -48,5 +48,5 @@
 	catalog[0].secfilt[N].Ncode  = 0;
 	catalog[0].secfilt[N].Nused  = 0;
-	catalog[0].secfilt[N].flags &= ~secfiltFlags;
+	catalog[0].secfilt[N].flags  = 0; // XXX there are no *astrometry* bits in secfilt.flags
 	catalog[0].secfilt[N].ubercalDist = 1000;
 
