Index: trunk/Ohana/src/gastro2/include/gastro2.h
===================================================================
--- trunk/Ohana/src/gastro2/include/gastro2.h	(revision 8499)
+++ trunk/Ohana/src/gastro2/include/gastro2.h	(revision 8513)
@@ -60,9 +60,4 @@
   double r, b;
 } USNOdata;
-
-typedef struct {
-  double R, D;
-  double M;
-} GSCdata;
 
 /* global variables, from ConfigInit or args */
@@ -94,6 +89,6 @@
 int NPOLYTERMS;
 char CATDIR[256];
-char   CATMODE[16];    /* raw, mef, split, mysql */
-char   CATFORMAT[16];  /* internal, elixir, loneos, panstarrs */
+char CATMODE[16];    /* raw, mef, split, mysql */
+char CATFORMAT[16];  /* internal, elixir, loneos, panstarrs */
 char REFCAT[256];
 char HEADER[256];
@@ -124,5 +119,5 @@
 char USNO_A_DIR[256];
 char USNO_B_DIR[256];
-char TWO_MASS_CATDIR[256];
+char TWO_MASS_DIR[256];
 char ASTROM_CATDIR[256];
 char LONEOS_REGION_FILE[256];
@@ -137,6 +132,4 @@
 StarData *rfits (FILE *f, int *nstars);
 
-GSCdata  *gptolemy (char *fullpath, int *Nstars);
-CatStats *gregions (CatStats *patch, int *nregion);
 StarData *remove_clumps (StarData *instars, int *nstars, int NX, int NY);
 void 	  ConfigInit (int *argc, char **argv);
@@ -170,5 +163,4 @@
 int 	  getusno (CatStats *catstats, RefCatalog *Ref);
 int 	  getusnob (CatStats *catstats, RefCatalog *Ref, double epoch);
-int       get2mass (CatStats *catstats, RefCatalog *Ref);
 int       getgsc (CatStats *catstats, RefCatalog *Ref);
 
@@ -205,5 +197,5 @@
 void 	  plot_resid_init (int version, double xmax);
 void 	  plot_resid_plot (int version, float *xvect, float *yvect, int Nvect);
-double    ptolemy_area (GSCdata *ptolemy, int N, CatStats *patch);
+
 void 	  rotate (RefCatalog *Subset, RefCatalog *Ref, double angle);
 void 	  set_catalog (char *catdir);
Index: trunk/Ohana/src/gastro2/src/ConfigInit.c
===================================================================
--- trunk/Ohana/src/gastro2/src/ConfigInit.c	(revision 8499)
+++ trunk/Ohana/src/gastro2/src/ConfigInit.c	(revision 8513)
@@ -15,50 +15,40 @@
   if (VERBOSE) fprintf (stderr, "loaded config file: %s\n", file);
 
-  GASTRO_MAX_NSTARS = 300;
-  ScanConfig (config, "OFFSET_RADIUS",     "%lf", 0, &SEARCH_RADIUS);
-  ScanConfig (config, "MIN_MATCHES",       "%d",  0, &MIN_MATCHES);
-  ScanConfig (config, "DEFAULT_RADIUS",    "%lf", 0, &DEFAULT_RADIUS);
-  ScanConfig (config, "MINIMUM_RADIUS",    "%lf", 0, &MINIMUM_RADIUS);
-  ScanConfig (config, "MAX_NONLINEAR",     "%lf", 0, &MAX_NONLINEAR);
-  ScanConfig (config, "MAX_PRECISE",       "%lf", 0, &MIN_PRECISE);
-  ScanConfig (config, "CCD_PC1_1",         "%lf", 0, &CCD_PC1_1);
-  ScanConfig (config, "CCD_PC2_2",         "%lf", 0, &CCD_PC2_2);
-  ScanConfig (config, "CCD_PC1_2",         "%lf", 0, &CCD_PC1_2);
-  ScanConfig (config, "CCD_PC2_1",         "%lf", 0, &CCD_PC2_1);
-  ScanConfig (config, "ASEC_PIX",          "%lf", 0, &ASEC_PIX);
-  ScanConfig (config, "NFIELD",            "%lf", 0, &NFIELD);
-  ScanConfig (config, "NGRID_PIX",         "%d",  0, &NGRID_PIX);
-  ScanConfig (config, "NPOLYTERMS",        "%d",  0, &NPOLYTERMS);
-  ScanConfig (config, "ROT_ZERO",          "%lf", 0, &ROT_ZERO);
-  ScanConfig (config, "dROT",              "%lf", 0, &dROT);
-  ScanConfig (config, "NROT",              "%d",  0, &NROT);
-  ScanConfig (config, "POLAR_ALIGNMENT",   "%d",  0, &POLAR_ALIGNMENT);
-  ScanConfig (config, "GSCFILE",           "%s",  0, GSCFILE);
-  ScanConfig (config, "POLAR_AXIS_RA",     "%lf", 0, &POLE_RA);
-  ScanConfig (config, "POLAR_AXIS_DEC",    "%lf", 0, &POLE_DEC);
-  ScanConfig (config, "RA_OFFSET",         "%lf", 0, &RA_OFFSET);
-  ScanConfig (config, "DEC_OFFSET",        "%lf", 0, &DEC_OFFSET);
-  ScanConfig (config, "LONEOS_REGIONS",    "%s",  0, LONEOS_REGION_FILE);
+  /* default values for config variables: used if key is missing from the config file */
+  strcpy (ROUGH_ASTROMETRY, "header");
+
+  ScanConfig (config, "CCD_PC1_1",         "%lf", 0, &CCD_PC1_1);       // guess if WCS is missing
+  ScanConfig (config, "CCD_PC2_2",         "%lf", 0, &CCD_PC2_2);       // guess if WCS is missing
+  ScanConfig (config, "CCD_PC1_2",         "%lf", 0, &CCD_PC1_2);       // guess if WCS is missing
+  ScanConfig (config, "CCD_PC2_1",         "%lf", 0, &CCD_PC2_1);       // guess if WCS is missing
+  ScanConfig (config, "ASEC_PIX",          "%lf", 0, &ASEC_PIX);        // guess if WCS is missing
+  ScanConfig (config, "NFIELD",            "%lf", 0, &NFIELD);          // search region *padding* in field units
+  ScanConfig (config, "NGRID_PIX",         "%d",  0, &NGRID_PIX);       // resolution of grid search (pixels)
+  ScanConfig (config, "NPOLYTERMS",        "%d",  0, &NPOLYTERMS);      // high-order fit terms (2 or 3)
+  ScanConfig (config, "ROT_ZERO",          "%lf", 0, &ROT_ZERO);        // rotation search region
+  ScanConfig (config, "dROT",              "%lf", 0, &dROT);            // rotation search region
+  ScanConfig (config, "NROT",              "%d",  0, &NROT);            // rotation search region
+  ScanConfig (config, "POLAR_ALIGNMENT",   "%d",  0, &POLAR_ALIGNMENT); // apply polar alignment correction
+  ScanConfig (config, "POLAR_AXIS_RA",     "%lf", 0, &POLE_RA);         // true coords of pole (should be HA, not RA)
+  ScanConfig (config, "POLAR_AXIS_DEC",    "%lf", 0, &POLE_DEC);        // true coords of pole
+  ScanConfig (config, "RA_OFFSET",         "%lf", 0, &RA_OFFSET);       // ?? not well defined (should be euler angle)
+  ScanConfig (config, "DEC_OFFSET",        "%lf", 0, &DEC_OFFSET);      // ?? not well defined (should be euler angle)
 
   /* possible sources of astrometric reference data */
-  if (!ScanConfig (config, "USNO_A_DIR",             "%s",  0, USNO_A_DIR)) {
-    ScanConfig (config, "USNO_CDROM",             "%s",  0, USNO_A_DIR);
+  if (!ScanConfig (config, "USNO_A_DIR",             "%s",  0, USNO_A_DIR)) {  // location of USNO A data (USNO_CDROM in gastro)
+    ScanConfig (config, "USNO_CDROM",             "%s",  0, USNO_A_DIR);  // alternate location of USNO A data
   }
-  ScanConfig (config, "USNO_B_DIR",        "%s",  0, USNO_B_DIR);
-  ScanConfig (config, "ASTROM_CATDIR",     "%s",  0, ASTROM_CATDIR);
-  ScanConfig (config, "2MASS_CATDIR",      "%s",  0, TWO_MASS_CATDIR);
-  ScanConfig (config, "GSCDIR",            "%s",  0, GSCDIR);
+  ScanConfig (config, "USNO_B_DIR",        "%s",  0, USNO_B_DIR);       // location of USNO B ref data
+  ScanConfig (config, "GSCDIR",            "%s",  0, GSCDIR);           // location of HST GSC ref data 
+  ScanConfig (config, "2MASS_DIR",         "%s",  0, TWO_MASS_DIR);  	// location of 2MASS ref data 
+  ScanConfig (config, "ASTROM_CATDIR",     "%s",  0, ASTROM_CATDIR); 	// location of ptolemy-format ref data
 
-  ScanConfig (config, "ASTRO_REFCAT",      "%s",  0, REFCAT);
-  ScanConfig (config, "CATDIR",            "%s",  0, CATDIR);
-  ScanConfig (config, "CATMODE",           "%s",  0, CATMODE);
-  ScanConfig (config, "CATFORMAT",         "%s",  0, CATFORMAT);
-  ScanConfig (config, "ROUGH_ASTROMETRY",  "%s",  0, ROUGH_ASTROMETRY);
-  ScanConfig (config, "PHOTCODE_FILE",     "%s",  0, PhotCodeFile);
-  ScanConfig (config, "GASTRO_MAX_NSTARS", "%d",  0, &GASTRO_MAX_NSTARS);
-  ScanConfig (config, "GASTRO_MAX_MAG_ERROR", "%lf", 0, &MAX_ERROR);
+  ScanConfig (config, "GSCFILE",           "%s",  0, GSCFILE);          // location of sky table
+  ScanConfig (config, "ASTRO_REFCAT",      "%s",  0, REFCAT);           // which astrometry catalog to use
+  ScanConfig (config, "ROUGH_ASTROMETRY",  "%s",  0, ROUGH_ASTROMETRY); // where to get initial guess (header, config)
+  ScanConfig (config, "GASTRO_MAX_NSTARS", "%d",  0, &GASTRO_MAX_NSTARS); // max number of stars from image to fit
+  ScanConfig (config, "GASTRO_MAX_MAG_ERROR", "%lf", 0, &MAX_ERROR);    // S/N limit on image stars used in fit
 
-  if (*CATMODE == 0) strcpy (CATMODE, "RAW");
-  if (*CATFORMAT == 0) strcpy (CATFORMAT, "ELIXIR");
+  ScanConfig (config, "PHOTCODE_FILE",     "%s",  0, PhotCodeFile);  // not used
 
   if (NFIELD <= 0.0) {
@@ -66,6 +56,10 @@
       exit (1);
   }
-  if (NGRID_PIX == 0) NGRID_PIX = 50.0;
 
+  if (!GASTRO_MAX_NSTARS) GASTRO_MAX_NSTARS = 300;
+  if (!MAX_ERROR) MAX_ERROR = 0.2;
+  if (!NGRID_PIX) NGRID_PIX = 50.0;
+  if (!NFIELD) NFIELD = 0.1;
+  
   if (strcasecmp (ROUGH_ASTROMETRY, "header") && 
       strcasecmp (ROUGH_ASTROMETRY, "config")) {
Index: trunk/Ohana/src/gastro2/src/gargs.c
===================================================================
--- trunk/Ohana/src/gastro2/src/gargs.c	(revision 8499)
+++ trunk/Ohana/src/gastro2/src/gargs.c	(revision 8513)
@@ -42,18 +42,4 @@
   if ((N = get_argument (*argc, argv, "-ptolemy-fill-factor"))) {
     PTOLEMY_FILL_FACTOR = TRUE;
-    remove_argument (N, argc, argv);
-  }
-
-  LONEOS_COORDS = FALSE;
-  if ((N = get_argument (*argc, argv, "-loneos"))) {
-    LONEOS_COORDS = TRUE;
-    remove_argument (N, argc, argv);
-  }
-
-  NEWPHOTCODE = FALSE;
-  if ((N = get_argument (*argc, argv, "-p"))) {
-    NEWPHOTCODE = TRUE;
-    remove_argument (N, argc, argv);
-    PHOTCODE = strcreate (argv[N]);
     remove_argument (N, argc, argv);
   }
@@ -148,4 +134,18 @@
   }
 
+  // XXX these options are being ignored
+  NEWPHOTCODE = FALSE;
+  if ((N = get_argument (*argc, argv, "-p"))) {
+    NEWPHOTCODE = TRUE;
+    remove_argument (N, argc, argv);
+    PHOTCODE = strcreate (argv[N]);
+    remove_argument (N, argc, argv);
+  }
+  LONEOS_COORDS = FALSE;
+  if ((N = get_argument (*argc, argv, "-loneos"))) {
+    LONEOS_COORDS = TRUE;
+    remove_argument (N, argc, argv);
+  }
+
   if (*argc != NARGS) {
     fprintf (stderr, "USAGE: gastro filename\n");
Index: trunk/Ohana/src/gastro2/src/getgsc.c
===================================================================
--- trunk/Ohana/src/gastro2/src/getgsc.c	(revision 8499)
+++ trunk/Ohana/src/gastro2/src/getgsc.c	(revision 8513)
@@ -1,10 +1,10 @@
 # include "gastro2.h"
 
-GSCdata *rd_gsc (char *filename, int *Nstars);
+StarData *rd_gsc (char *filename, int *Nstars);
 
 int getgsc (CatStats *catstats, RefCatalog *Ref) {
   
   int i, j, k, Ns, Ngsc; 
-  GSCdata *gsc;
+  StarData *gsc;
   SkyList *skylist;
   SkyTable *sky;
@@ -21,5 +21,5 @@
 
   /* load regions from GSC table, restrict to patch */
-  sky = SkyTableFromGSC (GSCFILE, 3, VERBOSE);
+  sky = SkyTableFromGSC (GSCFILE, SKY_DEPTH_HST, VERBOSE);
   SkyTableSetFilenames (sky, GSCDIR, "cpt");
   skylist = SkyListByPatch (sky, -1, &patch);
@@ -56,7 +56,7 @@
 # define BYTES_STAR 23
 # define BLOCK 1000
-GSCdata *rd_gsc (char *filename, int *Nstars) {
+StarData *rd_gsc (char *filename, int *Nstars) {
   
-  GSCdata *stars;
+  StarData *stars;
   int i, NSTAR, nstar, Nbytes, nbytes;
   char *buffer;
@@ -71,5 +71,5 @@
   nstar = 0;
   NSTAR = 1000;
-  ALLOCATE (stars, GSCdata, NSTAR);
+  ALLOCATE (stars, StarData, NSTAR);
 
   ALLOCATE (buffer, char, (BLOCK*BYTES_STAR));
@@ -84,5 +84,5 @@
       if (nstar == NSTAR) {
 	NSTAR += 1000;
-	REALLOCATE (stars, GSCdata, NSTAR);
+	REALLOCATE (stars, StarData, NSTAR);
       }
     }
Index: trunk/Ohana/src/gastro2/src/getptolemy.c
===================================================================
--- trunk/Ohana/src/gastro2/src/getptolemy.c	(revision 8499)
+++ trunk/Ohana/src/gastro2/src/getptolemy.c	(revision 8513)
@@ -21,5 +21,5 @@
 
   /* load regions from GSC table, restrict to patch */
-  sky = SkyTableFromGSC (GSCFILE, 3, VERBOSE);
+  sky = SkyTableLoadOptimal (CATDIR, NULL, GSCFILE, SKY_DEPTH_HST, VERBOSE);
   SkyTableSetFilenames (sky, CATDIR, "cpt");
   skylist = SkyListByPatch (sky, -1, &patch);
Index: trunk/Ohana/src/gastro2/src/getusnob.c
===================================================================
--- trunk/Ohana/src/gastro2/src/getusnob.c	(revision 8499)
+++ trunk/Ohana/src/gastro2/src/getusnob.c	(revision 8513)
@@ -1,4 +1,3 @@
 # include "gastro2.h"
-# define NZONE 180
 # define NBYTE   4
 # define NELEM  20
Index: trunk/Ohana/src/gastro2/src/gproject2.c
===================================================================
--- trunk/Ohana/src/gastro2/src/gproject2.c	(revision 8499)
+++ trunk/Ohana/src/gastro2/src/gproject2.c	(revision 8513)
@@ -61,6 +61,6 @@
   /* need to allow some leeway? use a fixed +/- 0.5 mag for now */
   if (MAGLIMS && !MAGMANUAL) {
-      MMAX = Target[0].lum.Mmax + 0.5;
-      MMIN = Target[0].lum.Mmin - 0.5;
+      MMAX = Target[0].lum.Mmax + 1.0;
+      MMIN = Target[0].lum.Mmin - 1.0;
 
       if (MMAX < Ref[0].lum.Mmin + Moff) 
@@ -75,4 +75,6 @@
       Moff = 0;
   }
+
+  if (VERBOSE) fprintf (stderr, "limited reference stars to mag range %f - %f\n", MMIN - Moff, MMAX - Moff);
 
   for (N = i = 0; i < Ref[0].N; i++) {
Index: trunk/Ohana/src/gastro2/src/greference2.c
===================================================================
--- trunk/Ohana/src/gastro2/src/greference2.c	(revision 8499)
+++ trunk/Ohana/src/gastro2/src/greference2.c	(revision 8513)
@@ -29,5 +29,5 @@
   /* get stars from 2MASS for the given region -- add PHOTCODE check? */
   if (!strcasecmp (REFCAT, "2MASS")) {
-    strcpy (CATDIR, TWO_MASS_CATDIR);
+    strcpy (CATDIR, TWO_MASS_DIR);
     getptolemy (&catstats, Ref);
   }
@@ -50,5 +50,5 @@
     Mref = 0.5*(Ref[0].lum.Mmin + Ref[0].lum.Mmax);
     logRho = Mref * Ref[0].lum.dNdM + Ref[0].lum.Mo - log10(Ref[0].Area);
-    Mtar = (logRho + log10(Ref[0].Area) - Target[0].lum.Mo) / Target[0].lum.dNdM;
+    Mtar = (logRho + log10(Target[0].Area) - Target[0].lum.Mo) / Target[0].lum.dNdM;
 
     Ref[0].lum.Mz = Mref;
Index: trunk/Ohana/src/gastro2/src/plots.c
===================================================================
--- trunk/Ohana/src/gastro2/src/plots.c	(revision 8499)
+++ trunk/Ohana/src/gastro2/src/plots.c	(revision 8513)
@@ -281,7 +281,8 @@
   fill_lumfunc (Ref[0].stars, Ref[0].N, rval, rbin, &Nr);
 
+  /* construct plots of log(stars / degree square) */
   ymin = 5; ymax = -5;
   for (i = 0; i < Nt; i++) {
-    tval[i] = tval[i] - log (Target[0].Area) / log (10.0);
+    tval[i] = tval[i] - log10 (Target[0].Area);
     ymin = MIN (tval[i], ymin);
     ymax = MAX (tval[i], ymax);
@@ -289,5 +290,5 @@
 
   for (i = 0; i < Nr; i++) {
-    rval[i] = rval[i] - log (Ref[0].Area) / log (10.0);
+    rval[i] = rval[i] - log10 (Ref[0].Area);
     rbin[i] = rbin[i] + Ref[0].Moff;
     ymin = MIN (rval[i], ymin);
