Index: /trunk/Ohana/src/mosastro/Makefile
===================================================================
--- /trunk/Ohana/src/mosastro/Makefile	(revision 8498)
+++ /trunk/Ohana/src/mosastro/Makefile	(revision 8499)
@@ -22,45 +22,39 @@
 
 MOS = \
-$(SRC)/mosastro.$(ARCH).o \
+$(SRC)/ConfigInit.$(ARCH).o \
+$(SRC)/ConvertMatch.$(ARCH).o \
+$(SRC)/FitChips.$(ARCH).o \
+$(SRC)/FitGradients.$(ARCH).o \
+$(SRC)/GetGradients.$(ARCH).o \
+$(SRC)/GetScatter.$(ARCH).o \
+$(SRC)/LoadStars.$(ARCH).o \
+$(SRC)/SaveResiduals.$(ARCH).o \
 $(SRC)/args.$(ARCH).o \
-$(SRC)/LoadStars.$(ARCH).o \
+$(SRC)/chips.$(ARCH).o \
+$(SRC)/clip.$(ARCH).o \
+$(SRC)/dump.$(ARCH).o \
+$(SRC)/field.$(ARCH).o \
+$(SRC)/fitpoly.$(ARCH).o \
+$(SRC)/getgsc.$(ARCH).o \
+$(SRC)/getptolemy.$(ARCH).o \
+$(SRC)/getstone.$(ARCH).o \
+$(SRC)/getusno.$(ARCH).o \
+$(SRC)/getusnob.$(ARCH).o \
+$(SRC)/greference.$(ARCH).o \
 $(SRC)/match.$(ARCH).o \
 $(SRC)/mkheader.$(ARCH).o \
-$(SRC)/fakefield.$(ARCH).o \
-$(SRC)/greference.$(ARCH).o \
+$(SRC)/mkmosaic.$(ARCH).o \
+$(SRC)/mkpolyterm.$(ARCH).o \
+$(SRC)/mosastro.$(ARCH).o \
+$(SRC)/output.$(ARCH).o \
+$(SRC)/parse_time.$(ARCH).o \
 $(SRC)/project.$(ARCH).o \
+$(SRC)/rfits.$(ARCH).o \
+$(SRC)/rtext.$(ARCH).o \
+$(SRC)/sort.$(ARCH).o \
+$(SRC)/testcoords.$(ARCH).o \
 $(SRC)/transforms.$(ARCH).o \
-$(SRC)/dump.$(ARCH).o \
-$(SRC)/sort.$(ARCH).o \
-$(SRC)/ConfigInit.$(ARCH).o \
-$(SRC)/getstone.$(ARCH).o \
-$(SRC)/get2mass.$(ARCH).o \
-$(SRC)/getgsc.$(ARCH).o \
-$(SRC)/getptolemy.$(ARCH).o \
-$(SRC)/gptolemy.$(ARCH).o \
-$(SRC)/gregions.$(ARCH).o \
-$(SRC)/gcatalog.$(ARCH).o \
-$(SRC)/getusno.$(ARCH).o \
-$(SRC)/getusnob.$(ARCH).o \
-$(SRC)/wstars.$(ARCH).o \
-$(SRC)/field.$(ARCH).o \
-$(SRC)/chips.$(ARCH).o \
-$(SRC)/GetGradients.$(ARCH).o \
-$(SRC)/FitGradients.$(ARCH).o \
-$(SRC)/FitChips.$(ARCH).o \
-$(SRC)/fitpoly.$(ARCH).o \
-$(SRC)/output.$(ARCH).o \
-$(SRC)/wstars.$(ARCH).o \
-$(SRC)/mkpolyterm.$(ARCH).o \
-$(SRC)/mkmosaic.$(ARCH).o \
-$(SRC)/GetScatter.$(ARCH).o \
-$(SRC)/clip.$(ARCH).o \
-$(SRC)/parse_time.$(ARCH).o \
-$(SRC)/testcoords.$(ARCH).o \
-$(SRC)/rfits.$(ARCH).o \
 $(SRC)/wfits.$(ARCH).o \
-$(SRC)/rtext.$(ARCH).o \
-$(SRC)/ConvertMatch.$(ARCH).o \
-$(SRC)/SaveResiduals.$(ARCH).o
+$(SRC)/wstars.$(ARCH).o
 
 mosastro: $(BIN)/mosastro.$(ARCH)
Index: /trunk/Ohana/src/mosastro/include/mosastro.h
===================================================================
--- /trunk/Ohana/src/mosastro/include/mosastro.h	(revision 8498)
+++ /trunk/Ohana/src/mosastro/include/mosastro.h	(revision 8499)
@@ -89,11 +89,7 @@
 double ZERO_POINT;
 
-char StoneRegions[256];
-char CDROM[256];
-char USNO_B_DIR[256];
 char REFCAT[256];
-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 ExptimeKeyword[256];
 char DateKeyword[256];
@@ -102,11 +98,16 @@
 char MJDKeyword[256];
 char JDKeyword[256];
-char TWO_MASS_DIR[256];
 int VERBOSE;
 int NO_CHIPS;
 int SAVE_RESID;
 
+char CATDIR[256];
 char GSCFILE[256];
-char GSC_DIR[256];
+char GSCDIR[256];
+char USNO_A_DIR[256];
+char USNO_B_DIR[256];
+char TWO_MASS_DIR[256];
+char ASTROM_CATDIR[256];
+char StoneRegions[256];
 
 char *FIELD;
Index: /trunk/Ohana/src/mosastro/src/ConfigInit.c
===================================================================
--- /trunk/Ohana/src/mosastro/src/ConfigInit.c	(revision 8498)
+++ /trunk/Ohana/src/mosastro/src/ConfigInit.c	(revision 8499)
@@ -17,16 +17,19 @@
   if (VERBOSE) fprintf (stderr, "loaded config file: %s\n", file);
 
-  GetConfig (config, "USNO_CDROM",        "%s",  0, CDROM);
-  ScanConfig (config, "2MASS_DIR",        "%s",  0, TWO_MASS_DIR);
+  ScanConfig (config, "GSCFILE",          "%s",  0, GSCFILE);
 
   GetConfig (config, "ASTRO_REFCAT",      "%s",  0, REFCAT);
-  ScanConfig (config, "CATDIR",           "%s",  0, CATDIR);
 
-  ScanConfig (config, "GSCFILE",          "%s",  0, GSCFILE);
-  ScanConfig (config, "GSCDIR",           "%s",  0, GSC_DIR);
+  /* 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);
+  }
+  ScanConfig (config, "USNO_B_DIR",       "%s",  0, USNO_B_DIR);
+  ScanConfig (config, "GSCDIR",           "%s",  0, GSCDIR);
   ScanConfig (config, "STONE_DIR",        "%s",  0, StoneRegions);
-  ScanConfig (config, "USNO_B_DIR",       "%s",  0, USNO_B_DIR);
+  ScanConfig (config, "2MASS_DIR",        "%s",  0, TWO_MASS_DIR);
+  ScanConfig (config, "ASTROM_CATDIR",    "%s",  0, ASTROM_CATDIR);
 
-  /* abstracted header keywords */
+  /* abstracted header keywords - used by parse_time */
   ScanConfig (config, "DATE-KEYWORD",     "%s",  0, DateKeyword);
   ScanConfig (config, "DATE-MODE",        "%s",  0, DateMode);
@@ -36,6 +39,6 @@
   ScanConfig (config, "EXPTIME-KEYWORD",  "%s",  0, ExptimeKeyword);
 
-  GetConfig (config, "RADIUS",            "%lf", 0, &RADIUS);
-  GetConfig (config, "SIGMA_LIM",         "%lf", 0, &SIGMA_LIM);
+  GetConfig  (config, "RADIUS",           "%lf", 0, &RADIUS);
+  GetConfig  (config, "SIGMA_LIM",        "%lf", 0, &SIGMA_LIM);
   ScanConfig (config, "ZERO_PT",          "%lf", 0, &ZERO_POINT);
 
Index: unk/Ohana/src/mosastro/src/ConvertStars.c
===================================================================
--- /trunk/Ohana/src/mosastro/src/ConvertStars.c	(revision 8498)
+++ 	(revision )
@@ -1,103 +1,0 @@
-# include "mosastro.h"
-
-# define SWAP_BYTE(X) \
-  tmp = byte[X+0]; byte[X+0] = byte[X+1]; byte[X+1] = tmp;
-# define SWAP_WORD(X) \
-  tmp = byte[X+0]; byte[X+0] = byte[X+3]; byte[X+3] = tmp; \
-  tmp = byte[X+1]; byte[X+1] = byte[X+2]; byte[X+2] = tmp;
-# define SWAP_DBLE(X) \
-  tmp = byte[X+0]; byte[X+0] = byte[X+7]; byte[X+7] = tmp; \
-  tmp = byte[X+1]; byte[X+1] = byte[X+6]; byte[X+6] = tmp; \
-  tmp = byte[X+2]; byte[X+2] = byte[X+5]; byte[X+5] = tmp; \
-  tmp = byte[X+3]; byte[X+3] = byte[X+4]; byte[X+4] = tmp;
-
-# ifdef linux
-# define BYTE_SWAP
-# endif
-
-# ifdef sid
-# define BYTE_SWAP
-# endif
-
-# ifdef dec
-# define BYTE_SWAP
-# endif
-
-# define STARS_SIZE 44
-# define MATCH_SIZE 104
-
-int ConvertStars (Stars *data, int size, int nitems) {
-
-  int i;
-  unsigned char *byte, tmp;
-
-# ifdef BYTE_SWAP
-
-  if (size != STARS_SIZE) {
-    fprintf (stderr, "mismatch in type sizes (Stars) %d vs %d\n", size, STARS_SIZE);
-    return (FALSE);
-  }
-
-  byte = (char *) data;
-  for (i = 0; i < nitems; i++, byte += size) {
-    SWAP_WORD (0);   /* R */
-    SWAP_WORD (4);   /* Y */
-    SWAP_WORD (8);   /* M */
-    SWAP_WORD (12);  /* dM */
-    SWAP_WORD (16);  /* Mgal */
-    SWAP_WORD (20);  /* Map */
-    SWAP_WORD (24);  /* sky */
-    SWAP_WORD (28);  /* fx */
-    SWAP_WORD (32);  /* fy */
-    SWAP_WORD (36);  /* df */
-  }
-  return (TRUE);
-
-# else
-  return (TRUE);
-# endif  
-} 
-
-int ConvertMatch (MatchData *data, int size, int nitems) {
-
-  int i;
-  unsigned char *byte, tmp;
-
-# ifdef BYTE_SWAP
-
-  if (size != MATCH_SIZE) {
-    fprintf (stderr, "mismatch in type sizes (MatchData) %d vs %d\n", size, MATCH_SIZE);
-    return (FALSE);
-  }
-
-  byte = (char *) data;
-  for (i = 0; i < nitems; i++, byte += size) {
-    SWAP_DBLE (0);   /* R */
-    SWAP_DBLE (8);   /* D */
-    SWAP_WORD (16);  /* P */
-    SWAP_WORD (20);  /* Q */
-    SWAP_WORD (24);  /* L */
-    SWAP_WORD (28);  /* M */
-    SWAP_WORD (32);  /* X */
-    SWAP_WORD (36);  /* Y */
-
-    SWAP_DBLE (40);  /* R */
-    SWAP_DBLE (40);  /* D */
-    SWAP_WORD (56);  /* P */
-    SWAP_WORD (60);  /* Q */
-    SWAP_WORD (64);  /* L */
-    SWAP_WORD (68);  /* M */
-    SWAP_WORD (72);  /* X */
-    SWAP_WORD (76);  /* Y */
-
-    SWAP_WORD (80);  /* Mcat */
-    SWAP_WORD (84);  /* dMcat */
-    SWAP_WORD (88);  /* Minst */
-    SWAP_WORD (92);  /* dMinst */
-  }
-  return (TRUE);
-
-# else
-  return (TRUE);
-# endif  
-} 
Index: unk/Ohana/src/mosastro/src/gcatalog.c
===================================================================
--- /trunk/Ohana/src/mosastro/src/gcatalog.c	(revision 8498)
+++ 	(revision )
@@ -1,48 +1,0 @@
-# include "mosastro.h"
-
-# define BYTES_STAR 23
-# define BLOCK 1000
-
-StarData *gcatalog (char *filename, int *Nstars) {
-  
-  StarData *stars;
-  int i, NSTAR, nstar, Nbytes, nbytes;
-  char *buffer;
-  FILE *f;
-
-  f = fopen (filename, "r");
-  if (f == NULL) {
-    fprintf (stderr, "ERROR: can't find catalog file %s\n", filename);
-    return (NULL);
-  }
-  
-  nstar = 0;
-  NSTAR = 1000;
-  ALLOCATE (stars, StarData, NSTAR);
-
-  Nbytes = BLOCK*BYTES_STAR;
-  ALLOCATE (buffer, char, Nbytes);
-  while ((nbytes = fread (buffer, 1, Nbytes, f)) > 0) {
-    for (i = 0; i < nbytes / BYTES_STAR; i++) {
-      bzero (&stars[nstar], sizeof(StarData));
-      dparse (&stars[nstar].R,   1, &buffer[i*BYTES_STAR]);
-      dparse (&stars[nstar].D,   2, &buffer[i*BYTES_STAR]);
-      dparse (&stars[nstar].Mag, 3, &buffer[i*BYTES_STAR]);
-      nstar++;
-      if (nstar == NSTAR) {
-	NSTAR += 1000;
-	REALLOCATE (stars, StarData, NSTAR);
-      }
-    }
-  }
-  free (buffer);
-
-  *Nstars = nstar;
-  return (stars);
-}
-
-/** this function reads a file in the format of my extracted GSC files
-    this is a fairly weak way of storing photometry / astrometry data 
-    eventually, this should be moved to ptolemy / DVO or something else
-    or else, the existing 2mass and HST-GSC files should be parsed
-**/
Index: unk/Ohana/src/mosastro/src/get2mass.c
===================================================================
--- /trunk/Ohana/src/mosastro/src/get2mass.c	(revision 8498)
+++ 	(revision )
@@ -1,35 +1,0 @@
-# include "mosastro.h"
-
-StarData *get2mass (CatStats *catstats, int *NSTARS) {
-  
-  int i, j, k, Ns, Ngsc, Nregions, Nstars; 
-  StarData *gsc;
-  StarData *stars;
-  CatStats *regions;
-
-  Nstars = 0;
-  ALLOCATE (stars, StarData, 1);
-
-  set_catalog (TWO_MASS_DIR);
-  regions = gregions (catstats, &Nregions);
-  
-  for (i = 0; i < Nregions; i++) {
-    gsc = gcatalog (regions[i].name, &Ngsc);
-    if (gsc == NULL) continue;
-
-    Ns = Nstars;
-    Nstars += Ngsc;
-
-    REALLOCATE (stars, StarData, MAX (1, Nstars));
-    for (k = Ns, j = 0; j < Ngsc; k++, j++) {
-      stars[k].R = gsc[j].R;
-      stars[k].D = gsc[j].D;
-      stars[k].M = gsc[j].M;
-    }      
-    free (gsc);
-  }
-  
-  if (VERBOSE) fprintf (stderr, "%d stars from 2MASS\n", Nstars);
-  *NSTARS = Nstars;
-  return (stars);
-}  
Index: /trunk/Ohana/src/mosastro/src/getgsc.c
===================================================================
--- /trunk/Ohana/src/mosastro/src/getgsc.c	(revision 8498)
+++ /trunk/Ohana/src/mosastro/src/getgsc.c	(revision 8499)
@@ -1,20 +1,32 @@
 # include "mosastro.h"
+# define BYTES_STAR 23
+# define BLOCK 1000
+
+StarData *rd_gsc (char *filename, int *Nstars);
 
 StarData *getgsc (CatStats *catstats, int *NSTARS) {
   
-  int i, j, k, Ns, Ngsc, Nregions, Nstars; 
+  int i, j, k, Ns, Ngsc, Nstars; 
   StarData *gsc;
   StarData *stars;
-  CatStats *regions;
+  SkyList *skylist;
+  SkyTable *sky;
+  SkyRegion patch;
 
+  patch.Rmin = catstats[0].RA[0];
+  patch.Rmax = catstats[0].RA[1];
+  patch.Dmin = catstats[0].DEC[0];
+  patch.Dmax = catstats[0].DEC[1];
+
+  /* load regions from GSC table, restrict to patch */
+  sky = SkyTableFromGSC (GSCFILE, 3, VERBOSE);
+  SkyTableSetFilenames (sky, GSCDIR, "cpt");
+  skylist = SkyListByPatch (sky, -1, &patch);
+  
   Nstars = 0;
   ALLOCATE (stars, StarData, 1);
 
-  set_catalog (GSC_DIR);
-  regions = gregions (catstats, &Nregions);
-  
-  for (i = 0; i < Nregions; i++) {
-    gsc = gcatalog (regions[i].name, &Ngsc);
-    if (gsc == NULL) continue;
+  for (i = 0; i < skylist[0].Nregions; i++) {
+    gsc = rd_gsc (skylist[0].filename[i], &Ngsc);
 
     Ns = Nstars;
@@ -23,11 +35,12 @@
     REALLOCATE (stars, StarData, MAX (1, Nstars));
     for (k = Ns, j = 0; j < Ngsc; k++, j++) {
-      stars[k].R   = gsc[j].R;
-      stars[k].D   = gsc[j].D;
-      stars[k].Mag = gsc[j].Mag;
+      stars[k].R = gsc[j].R;
+      stars[k].D = gsc[j].D;
+      stars[k].M = gsc[j].M;
     }      
     free (gsc);
   }
-  
+  SkyTableFree (sky);
+
   if (VERBOSE) fprintf (stderr, "%d stars from HST GSC\n", Nstars);
   *NSTARS = Nstars;
@@ -35,2 +48,40 @@
 }  
 
+StarData *rd_gsc (char *filename, int *Nstars) {
+  
+  StarData *stars;
+  int i, NSTAR, nstar, Nbytes, nbytes;
+  char *buffer;
+  FILE *f;
+
+  f = fopen (filename, "r");
+  if (f == NULL) {
+    fprintf (stderr, "ERROR: can't find catalog file %s\n", filename);
+    exit (1);
+  }
+  
+  nstar = 0;
+  NSTAR = 1000;
+  ALLOCATE (stars, StarData, NSTAR);
+
+  ALLOCATE (buffer, char, (BLOCK*BYTES_STAR));
+  Nbytes = BLOCK*BYTES_STAR;
+
+  while ((nbytes = fread (buffer, 1, Nbytes, f)) > 0) {
+    for (i = 0; i < nbytes / BYTES_STAR; i++) {
+      dparse (&stars[nstar].R, 1, &buffer[i*BYTES_STAR]);
+      dparse (&stars[nstar].D, 2, &buffer[i*BYTES_STAR]);
+      dparse (&stars[nstar].M, 3, &buffer[i*BYTES_STAR]);
+      nstar++;
+      if (nstar == NSTAR) {
+	NSTAR += 1000;
+	REALLOCATE (stars, StarData, NSTAR);
+      }
+    }
+  }
+
+  free (buffer);
+
+  *Nstars = nstar;
+  return (stars);
+}
Index: /trunk/Ohana/src/mosastro/src/getptolemy.c
===================================================================
--- /trunk/Ohana/src/mosastro/src/getptolemy.c	(revision 8498)
+++ /trunk/Ohana/src/mosastro/src/getptolemy.c	(revision 8499)
@@ -3,26 +3,54 @@
 StarData *getptolemy (CatStats *catstats, int *NSTARS) {
   
-  int i, j, k, Ns, Nptolemy, Nregions, Nstars; 
-  CatStats *regions;
-  StarData *stars, *ptolemy;
+  int i, j, k, Ns, Nstars; 
+  Catalog catalog;
+  StarData *stars;
+  SkyList *skylist;
+  SkyTable *sky;
+  SkyRegion patch;
+
+  patch.Rmin = catstats[0].RA[0];
+  patch.Rmax = catstats[0].RA[1];
+  patch.Dmin = catstats[0].DEC[0];
+  patch.Dmax = catstats[0].DEC[1];
 
   Nstars = 0;
   ALLOCATE (stars, StarData, 1);
 
-  set_catalog (CATDIR);
-  regions = gregions (catstats, &Nregions);
+  /* load regions from GSC table, restrict to patch */
+  sky = SkyTableFromGSC (GSCFILE, 3, VERBOSE);
+  SkyTableSetFilenames (sky, CATDIR, "cpt");
+  skylist = SkyListByPatch (sky, -1, &patch);
   
-  for (i = 0; i < Nregions; i++) {
-    ptolemy = gptolemy (regions[i].name, &Nptolemy);
-    if (ptolemy == NULL) continue;
+  for (i = 0; i <skylist[0].Nregions; i++) {
+    // set the parameters which guide catalog open/load/create
+    catalog.filename  = skylist[0].filename[i];
+    catalog.catflags  = LOAD_AVES | LOAD_MEAS;
+    catalog.Nsecfilt  = 0;
+
+    // an error exit status here is a significant error
+    if (!dvo_catalog_open (&catalog, skylist[0].regions[i], VERBOSE, "w")) {
+      fprintf (stderr, "ERROR: failure to open catalog file %s\n", catalog.filename);
+      exit (2);
+    }
+    dvo_catalog_unlock (&catalog);
+
+    // Nave_disk == 0 implies an empty catalog file
+    // for only_match, skip empty catalogs
+    if (!catalog.Nave_disk) {
+      dvo_catalog_free (&catalog);
+      continue;
+    }
 
     Ns = Nstars;
-    Nstars += Nptolemy;
+    Nstars += catalog.Naverage;
 
     REALLOCATE (stars, StarData, MAX (1, Nstars));
-    for (k = Ns, j = 0; j < Nptolemy; k++, j++) {
-      stars[k] = ptolemy[j];
-    }
-    free (ptolemy);
+    for (k = Ns, j = 0; j < catalog.Naverage; k++, j++) {
+      stars[k].R = catalog.average[j].R;
+      stars[k].D = catalog.average[j].D;
+      stars[k].M = catalog.measure[catalog.average[j].offset].M_PS;
+    }      
+    dvo_catalog_free (&catalog);
   }
 
Index: /trunk/Ohana/src/mosastro/src/getusno.c
===================================================================
--- /trunk/Ohana/src/mosastro/src/getusno.c	(revision 8498)
+++ /trunk/Ohana/src/mosastro/src/getusno.c	(revision 8499)
@@ -15,5 +15,5 @@
   float hours[100];
   int start[100], number[100], *buffer, *buf;
-  char filename[128], c;
+  char filename[128];
   FILE *f;
   int iRA0, iRA1, iDEC0, iDEC1;
@@ -59,17 +59,10 @@
     
     /* load accelerator file */
-    sprintf (filename, "%s/zone%04d.acc", CDROM, spd); 
+    sprintf (filename, "%s/zone%04d.acc", USNO_A_DIR, spd); 
     if (VERBOSE) fprintf (stderr, "reading from %s\n", filename);
     f = fopen (filename, "r");
     if (f == (FILE *) NULL) {
-      fprintf (stderr, "can't open file %s, is cdrom %d in drive?\n", filename, disk);
-      fprintf (stderr, "press return when ready to continue: ");
-      fscanf (stdin, "%c", &c);
-      fprintf (stderr, "trying again...\n");
-      f = fopen (filename, "r");
-      if (f == (FILE *) NULL) {
-	fprintf (stderr, "ERROR: can't open file %s, is cdrom %d in drive?\n", filename, disk);
-	exit (1);  
-      }
+      fprintf (stderr, "ERROR: can't open file %s, is cdrom %d in drive?\n", filename, disk);
+      exit (1);  
     }
     for (i = 0; fscanf (f, "%f %d %d", &hours[i], &start[i], &number[i]) != EOF; i++);
@@ -89,5 +82,5 @@
     
     /* open data file */
-    sprintf (filename, "%s/zone%04d.cat", CDROM, spd);
+    sprintf (filename, "%s/zone%04d.cat", USNO_A_DIR, spd);
     if (VERBOSE) fprintf (stderr, "reading from %s\n", filename);
     f = fopen (filename, "r");
Index: /trunk/Ohana/src/mosastro/src/getusnob.c
===================================================================
--- /trunk/Ohana/src/mosastro/src/getusnob.c	(revision 8498)
+++ /trunk/Ohana/src/mosastro/src/getusnob.c	(revision 8499)
@@ -1,3 +1,5 @@
 # include "mosastro.h"
+# define NBYTE   4
+# define NELEM  20
 
 StarData *getusnob (CatStats *catstats, int *Nstars) {
@@ -7,5 +9,5 @@
   float hours[100];
   int start[100], number[100], *buffer, *buf;
-  char filename[128], c;
+  char filename[128];
   FILE *f;
   double DEC1;
@@ -13,5 +15,5 @@
   float mB1, mB2, mR1, mR2, mB, mR;
   int iDEC0, iDEC1, iRA0, iRA1;
-  int spd, spd_start, spd_end, disk;
+  int spd, spd_start, spd_end;
   int NUSNO, Nusno, nstars;
   StarData *stars;
@@ -44,13 +46,6 @@
     f = fopen (filename, "r");
     if (f == (FILE *) NULL) {
-      fprintf (stderr, "can't open file %s, is cdrom %d in drive?\n", filename, disk);
-      fprintf (stderr, "press return when ready to continue: ");
-      fscanf (stdin, "%c", &c);
-      fprintf (stderr, "trying again...\n");
-      f = fopen (filename, "r");
-      if (f == (FILE *) NULL) {
-	fprintf (stderr, "ERROR: can't open file %s, is cdrom %d in drive?\n", filename, disk);
-	exit (1);  
-      }
+      fprintf (stderr, "ERROR: can't open accelerator file %s\n", filename);
+      exit (1);  
     }
     for (i = 0; fscanf (f, "%f %d %d", &hours[i], &start[i], &number[i]) != EOF; i++);
@@ -70,5 +65,4 @@
     
     /* open data file */
-    /* sprintf (filename, "%s/zone%04d.cat", CDROM, spd); */
     sprintf (filename, "%s/%03d/b%04d.cat", USNO_B_DIR, (int)(spd/10), spd); 
     fprintf (stderr, "reading from %s\n", filename);
@@ -79,7 +73,7 @@
     }
 
+    /** USNO-B consists of 20 x 4byte (int) records **/
     /* advance file pointer to first slice */
-    /**** 4*20 is record-length for USNO-B ****/
-    offset = 20*sizeof(int)*(start[first] - 1);
+    offset = NELEM*NBYTE*(start[first] - 1);
     fseek (f, offset, SEEK_SET);
 
@@ -89,5 +83,5 @@
       nstars += number[bin];
     }
-    Nitems = 20*nstars;  /* number of integer blocks; need to use Fread for byte-swapping read */
+    Nitems = NELEM*nstars;  /* number of integer blocks; need to use Fread for byte-swapping read */
 
     /* allocate space for stars in segment */
@@ -103,5 +97,5 @@
     buf = buffer;
     /* print out data from slice within RA and DEC range */
-    for (i = 0; i < nstars; i++, buf+=20) {
+    for (i = 0; i < nstars; i++, buf+=NELEM) {
       if (buf[0] < iRA0) continue;
       if (buf[0] > iRA1) continue;
Index: unk/Ohana/src/mosastro/src/gptolemy.c
===================================================================
--- /trunk/Ohana/src/mosastro/src/gptolemy.c	(revision 8498)
+++ 	(revision )
@@ -1,43 +1,0 @@
-# include "mosastro.h"
-
-StarData *gptolemy (char *filename, int *NSTARS) {
-  
-  int i, Nstars;
-  Catalog catalog;
-  StarData *stars;
-
-  Nstars = 0;
-  catalog.filename = filename;
-  switch (lock_catalog (&catalog, LCK_SOFT)) {
-    case 0:
-    case 2:
-      fprintf (stderr, "can't lock catalog data %s\n", filename);
-      *NSTARS = Nstars;
-      return (NULL);
-    case 1:
-      break;
-  }
-
-  /* CATMODE and CATFORMAT determined from catalog */
-  catalog.catflags = LOAD_AVES | LOAD_MEAS;
-  if (!load_catalog (&catalog, FALSE)) {
-    fprintf (stderr, "can't load catalog data %s\n", filename);
-    *NSTARS = Nstars;
-    return (NULL);
-  }
-  unlock_catalog (&catalog);
-
-  Nstars = catalog.Naverage;
-  ALLOCATE (stars, StarData, MAX (1, Nstars));
-  for (i = 0; i < catalog.Naverage; i++) {
-    bzero (&stars[i], sizeof(StarData));
-    stars[i].R 	 = catalog.average[i].R;
-    stars[i].D 	 = catalog.average[i].D;
-    stars[i].Mag = catalog.measure[catalog.average[i].offset].M_PS;
-  }
-  free (catalog.average);
-  free (catalog.measure);
-
-  *NSTARS = Nstars;
-  return (stars);
-}
Index: /trunk/Ohana/src/mosastro/src/greference.c
===================================================================
--- /trunk/Ohana/src/mosastro/src/greference.c	(revision 8498)
+++ /trunk/Ohana/src/mosastro/src/greference.c	(revision 8499)
@@ -42,9 +42,9 @@
     strcpy (CATDIR, TWO_MASS_DIR);
     stars = getptolemy (&catstats, &Nstars);
-    /* stars = get2mass (&catstats, &Nstars); */
   }
   
   /* get stars from the DVO CATDIR for the given region */
   if (!strcmp (REFCAT, "PTOLEMY")) {
+    strcpy (CATDIR, ASTROM_CATDIR);
     stars = getptolemy (&catstats, &Nstars);
   }
Index: unk/Ohana/src/mosastro/src/gregions.c
===================================================================
--- /trunk/Ohana/src/mosastro/src/gregions.c	(revision 8498)
+++ 	(revision )
@@ -1,255 +1,0 @@
-# include "mosastro.h"
-# define MAX_NAME 256
-
-static int Nregion, NREGION;
-static CatStats *region;
-static char *CatDir;
-
-/* data which defines the layout of the regions */
-# define NDECBANDS 12
-double DecBand[] = {0.0, +7.5, +15.0, +22.5, +30.0, +37.5, +45.0, +52.5, +60.0, +67.5, +75.0, +82.5, +90.0,
-		    0.0, -7.5, -15.0, -22.5, -30.0, -37.5, -45.0, -52.5, -60.0, -67.5, -75.0, -82.5, -90.0};
-
-int NDecLines[] =  {593, 584, 551, 530, 522, 465, 406, 362, 280, 198, 123, 24, 0, 
-		    597, 578, 574, 577, 534, 499, 442, 376, 294, 212, 144, 48, 0};
-
-int NRaBlocks [] = {48, 47, 45, 43, 40, 36, 32, 28, 21, 15, 9, 3, 0, 
-		    48, 47, 45, 43, 40, 36, 32, 28, 21, 15, 9, 3, 0};
-
-char *Dec2Sections[] = {"n0000", "n0730", "n1500", "n2230", "n3000", "n3730", "n4500", 
-			"n5230", "n6000", "n6730", "n7500", "n8230", "weirdness", 
-			"s0000", "s0730", "s1500", "s2230", "s3000", "s3730", "s4500", 
-			"s5230", "s6000", "s6730", "s7500", "s8230", "weirdness"};
-
-/* given patch on sky with RA[0] - RA[1] & DEC[0] - DEC[1], return all that fall in range */
-CatStats *gregions (CatStats *patch, int *nregion) {
-  
-  CatStats area;
-  double dtmp;
-  char file[MAX_NAME];
-
-  init_regions ();
-
-  /* force RA[i] to be in range 0 - 360 , DEC[0] < DEC[1] */
-  while (patch[0].RA[0] > 360.0) { patch[0].RA[0] -= 360.0; }
-  while (patch[0].RA[0] < 0.0)   { patch[0].RA[0] += 360.0; }
-  while (patch[0].RA[1] > 360.0) { patch[0].RA[1] -= 360.0; }
-  while (patch[0].RA[1] < 0.0)   { patch[0].RA[1] += 360.0; }
-  if (patch[0].DEC[0] > patch[0].DEC[1]) {
-    dtmp = patch[0].DEC[0];
-    patch[0].DEC[0] = patch[0].DEC[1];
-    patch[0].DEC[1] = dtmp;
-  }
-
-  /* include the pole if dec > 86.25 is included (ADD SOUTH POLE!)  */
-  if (patch[0].DEC[1] > 86.25) {
-    area.RA[0]  =   0.00;
-    area.RA[1]  = 360.00;
-    area.DEC[0] =  86.25;
-    area.DEC[1] =  90.00;
-    sprintf (file, "n8230/pole");
-    area.name = strcreate (file);
-    add_to_regions (&area);
-    free (area.name);
-  }
-  
-  /* if RA[0] > RA[1], split in two passes */
-  if (patch[0].RA[0] > patch[0].RA[1]) {
-    area = patch[0];
-    area.RA[0]  = 0.0;
-    find_dec_bands (&area);
-
-    area = patch[0];
-    area.RA[1]  = 360.0;
-    find_dec_bands (&area);
-  } else {
-    area = patch[0];
-    find_dec_bands (&area);
-  }
-
-  *nregion = Nregion;
-  return (region);
-}
-
-/* given an area [RA[0] - RA[1], DEC[0] - DEC[1],
-   where 0.0 < RA[0] < RA[1] < 360.0 
-   and -90.0 < (DEC[0], DEC[1]) < 90.0 
-   and DEC[0] < DEC[1]
-   search through the dec bands to identify ones which overlap the area */
-
-int find_dec_bands (CatStats *area) {
-
-  int i;
-
-  /* for NORTH region (DecBand[i] < DecBand[i+1]) */
-  for (i = 0; i < NDECBANDS; i++) {
-    if ((area[0].DEC[1] > DecBand[i]) || (area[0].DEC[0] < DecBand[i+1])) {
-      load_ra_blocks (i, area);
-    }
-  }
-
-  /* for SOUTH region (DecBand[i] > DecBand[i+1]) */
-  for (i = NDECBANDS+1; i < 2*NDECBANDS; i++) {
-    if ((area[0].DEC[0] < DecBand[i]) || (area[0].DEC[1] > DecBand[i+1])) {
-      load_ra_blocks (i, area);
-    }
-  }
-  return (TRUE);
-}
-
-/* given the number of a DecBlock and a defined area, return all area names in that block */
-/* area is defined so that RA[0] < RA[1], DEC[0] < DEC[1] */
-int load_ra_blocks (int Ndec, CatStats *area) {
-
-  CatStats tregion;
-  int i, Nlines, Nskip;
-  char *buffer, file[MAX_NAME];
-  FILE *f;
-
-  /* count lines before Dec Band, and in Dec Band */
-  Nskip = 0;
-  for (i = 0; i < Ndec; i++) Nskip += NDecLines[i];
-  Nlines = NDecLines[Ndec];
-
-  ALLOCATE (buffer, char, 48*Nlines);
-  ALLOCATE (tregion.name, char, MAX_NAME);
-
-  /* get data from GSC file */ 
-  f = fopen (GSCFILE, "r");
-  if (f == NULL) {
-    fprintf (stderr, "ERROR: can't find GSC regions file %s\n", GSCFILE);
-    exit (1);
-  }
-  fseek (f, 5*2880 + 48*Nskip, SEEK_SET);
-  fread (buffer, 48*Nlines, 1, f);
-  fclose (f);
-
-  /* find overlapping regions */
-  for (i = 0; i < Nlines; i++) {
-    parse_GSC_line (&tregion, &buffer[i*48]);
-    if (area[0].RA[0] > tregion.RA[1]) continue;
-    if (area[0].RA[1] < tregion.RA[0]) continue;
-    if (area[0].DEC[0] > tregion.DEC[1]) continue;
-    if (area[0].DEC[1] < tregion.DEC[0]) continue;
-    sprintf (file, "%s/%s", Dec2Sections[Ndec], tregion.name);
-    strcpy (tregion.name, file);
-    add_to_regions (&tregion);
-  }
-
-  free (buffer);
-  free (tregion.name);
-  return (TRUE);
-}
-
-/* parse the GSC line, placing values in 'region'. force RA[0] < RA[1], DEC[0] < DEC[1] */
-int parse_GSC_line (CatStats *tregion, char *line) {
-  
-  double v0, s, dtmp;
-  char tmp[10];
-
-  /* copy name (4 chars) */
-  bzero (tregion[0].name, 10);
-  strncpy (tregion[0].name, &line[1], 4);
-
-  /* get RA[0] */
-  bzero (tmp, 10);
-  strncpy (tmp, &line[7], 2);
-  v0 = atof (tmp);
-  
-  bzero (tmp, 10);
-  strncpy (tmp, &line[10], 2);
-  v0 += atof (tmp) / 60.0;
-  
-  bzero (tmp, 10);
-  strncpy (tmp, &line[13], 5);
-  v0 += atof (tmp) / 3600.0;
-  tregion[0].RA[0] = v0 * 15.0;
-
-  /* get RA[1] */
-  bzero (tmp, 10);
-  strncpy (tmp, &line[19], 2);
-  v0 = atof (tmp);
-  
-  bzero (tmp, 10);
-  strncpy (tmp, &line[22], 2);
-  v0 += atof (tmp) / 60.0;
-  
-  bzero (tmp, 10);
-  strncpy (tmp, &line[25], 5);
-  v0 += atof (tmp) / 3600.0;
-  tregion[0].RA[1] = v0 * 15.0;
-
-  /* this only happens at the 0,360 boundary */
-  if (tregion[0].RA[1] < tregion[0].RA[0]) tregion[0].RA[1] += 360.0;
-
-  /* get DEC[0] */
-  if (line[31] == '-') s = -1;
-  else s = +1;
-
-  bzero (tmp, 10);
-  strncpy (tmp, &line[32], 2);
-  v0 = atof (tmp);
-  
-  bzero (tmp, 10);
-  strncpy (tmp, &line[35], 2);
-  v0 += atof (tmp) / 60.0;
-  tregion[0].DEC[0] = s * v0;
-
-  /* get DEC[1] */
-  if (line[40] == '-') s = -1;
-  else s = +1;
-
-  bzero (tmp, 10);
-  strncpy (tmp, &line[41], 2);
-  v0 = atof (tmp);
-  
-  bzero (tmp, 10);
-  strncpy (tmp, &line[44], 2);
-  v0 += atof (tmp) / 60.0;
-  tregion[0].DEC[1] = s * v0;
-
-  if (tregion[0].DEC[0] > tregion[0].DEC[1]) {
-    dtmp = tregion[0].DEC[1];
-    tregion[0].DEC[1] = tregion[0].DEC[0];
-    tregion[0].DEC[0] = dtmp;
-  }
-  return (TRUE);
-}
-
-void init_regions () {
-
-  Nregion = 0;
-  NREGION = 100;
-
-  ALLOCATE (region, CatStats, NREGION);
-
-}
-
-void add_to_regions (CatStats *area) {
-
-  region[Nregion] = area[0];
-  ALLOCATE (region[Nregion].name, char, MAX_NAME);
-  sprintf (region[Nregion].name, "%s/%s.%s", CatDir, area[0].name, "cpt");
-
-  area_of_region (&region[Nregion]);
-
-  Nregion ++;
-
-  if (Nregion == NREGION) {
-    NREGION += 100;
-    REALLOCATE (region, CatStats, NREGION);
-  }
-
-}
-
-void area_of_region (CatStats *region) {
-  
-  double area;
-
-  area = DEG_RAD*(region[0].RA[1] - region[0].RA[0])*(sin(region[0].DEC[1]*RAD_DEG) - sin(region[0].DEC[0]*RAD_DEG));
-  region[0].Area = area;
-}
-
-void set_catalog (char *catdir) {
-  CatDir = catdir;
-}
