IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 14401


Ignore:
Timestamp:
Aug 4, 2007, 10:15:51 AM (19 years ago)
Author:
eugene
Message:

extensive updates to the avextract / mextract / skyregion system

Location:
trunk/Ohana/src
Files:
47 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/addstar/src/SkyListForStars.c

    r6641 r14401  
    1313  ALLOCATE (list[0].filename, char *, NR);
    1414  list[0].Nregions = Nr;
     15  list[0].ownElements = FALSE; // free these elements when freeing the list
    1516
    1617  sort_stars (stars, Nstars); /* sort by RA */
     
    2930    list[0].regions[Nr] = here[0].regions[0];
    3031    list[0].filename[Nr] = here[0].filename[0];
    31     SkyListFree (here, FALSE);
     32    SkyListFree (here);
    3233    Nr ++;
    3334    if (Nr >= NR) {
  • trunk/Ohana/src/addstar/src/SkyRegionUtils.c

    r5945 r14401  
    1111  ALLOCATE (subset, SkyList, 1);
    1212  ALLOCATE (subset[0].regions, SkyRegion *, NSUBSET);
     13  subset[0].ownElements = FALSE; // free these elements when freeing the list
    1314
    1415  /* match the basename against the GSCRegion file names */
  • trunk/Ohana/src/addstar/src/UpdateDatabase_Image.c

    r12332 r14401  
    2727      newlist = SkyListByImage (ServerSky, -1, &images[i]);
    2828      SkyListMerge (&skylist, newlist);
    29       SkyListFree (newlist, FALSE);
     29      SkyListFree (newlist);
    3030  }
    3131
     
    3636    SkyList *tmp;
    3737    tmp = SkyListExistingSubset (skylist, CATDIR);
    38     SkyListFree (skylist, FALSE);
     38    SkyListFree (skylist);
    3939    skylist = tmp;
    4040  }
  • trunk/Ohana/src/addstar/src/UpdateDatabase_Refcat.c

    r8361 r14401  
    2424    SkyList *tmp;
    2525    tmp = SkyListExistingSubset (skylist, CATDIR);
    26     SkyListFree (skylist, FALSE);
     26    SkyListFree (skylist);
    2727    skylist = tmp;
    2828  }
  • trunk/Ohana/src/addstar/src/UpdateDatabase_Reflist.c

    r8361 r14401  
    2424    SkyList *tmp;
    2525    tmp = SkyListExistingSubset (skylist, CATDIR);
    26     SkyListFree (skylist, FALSE);
     26    SkyListFree (skylist);
    2727    skylist = tmp;
    2828  }
  • trunk/Ohana/src/addstar/src/addstar.c

    r13323 r14401  
    4343        SkyListMerge (&skylist, newlist);
    4444        if (VERBOSE) fprintf (stderr, "added %d regions to yield %d total\n", newlist[0].Nregions, skylist[0].Nregions);
    45         SkyListFree (newlist, FALSE);
     45        SkyListFree (newlist);
    4646      }
    4747      ImageOptions (&options, images, Nimages);
     
    6060      ALLOCATE (skylist, SkyList, 1);
    6161      skylist[0].Nregions = 0;
     62      skylist[0].ownElements = FALSE;
    6263      break;
    6364
     
    7172    SkyList *tmp;
    7273    tmp = SkyListExistingSubset (skylist, CATDIR);
    73     SkyListFree (skylist, FALSE);
     74    SkyListFree (skylist);
    7475    skylist = tmp;
    7576  }
  • trunk/Ohana/src/addstar/src/gettycho.c

    r8458 r14401  
    123123  fclose (f);
    124124
    125   SkyListFree (skylist, FALSE);
     125  SkyListFree (skylist);
    126126
    127127  free (buffer);
  • trunk/Ohana/src/addstar/src/load2mass_as_rawdata.c

    r12732 r14401  
    181181      }
    182182
    183       SkyListFree (skylist, FALSE);
     183      SkyListFree (skylist);
    184184      free (stars);
    185185      VERBOSE = verbose;
  • trunk/Ohana/src/delstar/src/delete_times.c

    r8555 r14401  
    2222  ALLOCATE (skylist, SkyList, 1);
    2323  ALLOCATE (skylist[0].regions, SkyRegion *, NREGIONS);
     24  skylist[0].ownElements = FALSE; // free these elements when freeing the list
    2425
    2526  image = gfits_table_get_Image (&db[0].ftable, &Nimage, &db[0].swapped);
     
    4849      CHECK_REALLOCATE (skylist[0].regions, SkyRegion *, NREGIONS, Nregions, 10);
    4950    }
    50     SkyListFree (skyset, FALSE);
     51    SkyListFree (skyset);
    5152  }
    5253
  • trunk/Ohana/src/libautocode/def/average.d

    r12332 r14401  
    1919FIELD dP,             PAR_ERR,    float,            parallax error,               arcsec
    2020
    21 # XXX drop the old primary magnitude concept
    22 # FIELD M,            MAG,        float,            primary mag,                  mag
    23 # FIELD dM,           MAG_ERR,    float,            error on primary mag,         mag
    24 # FIELD Xm,           CHISQ_MAG,  short,            chisq for primary mag,        [100*log(value)]
    25 # FIELD Xg,           CHISQ_GAL,  short,            chisq for galaxy mags,        [100*log(value)]
    26 
    2721FIELD Xp,             SIGMA_POS,  short,            position scatter,             1/100 arcsec
    2822FIELD Nm,             NMEAS,      unsigned short,   number of measures
     
    3529FIELD objID_hi,       OBJ_ID_HI,    unsigned int,   ID upper bytes
    3630FIELD objID_lo,       OBJ_ID_LO,    unsigned int,   ID lower bytes
     31
     32# XXX record the number of detections used for average astrometry
    3733
    3834# this structure should only be used for internal representations
  • trunk/Ohana/src/libdvo/include/dvo.h

    r14263 r14401  
    153153typedef struct {
    154154  int Nregions;
     155  int ownElements;                                /* does this list own filename, regions? */
    155156  char **filename;
    156157  SkyRegion **regions;
     
    428429SkyList   *SkyListChildrenByBounds PROTO((SkyTable *table, int No, int depth, double Rmin, double Rmax, double Dmin, double Dmax));
    429430int        SkyListMerge            PROTO((SkyList **outlist, SkyList *newlist));
    430 int        SkyListFree             PROTO((SkyList *list, int ELEMENTS));
     431int        SkyListFree             PROTO((SkyList *list));
    431432int        SkyTableFree            PROTO((SkyTable *table));
    432433int        SkyListSetFilenames     PROTO((SkyList *list, char *path, char *ext));
  • trunk/Ohana/src/libdvo/src/skyregion_ops.c

    r14289 r14401  
    1919  ALLOCATE (list[0].filename,  char *, 1);
    2020  list[0].Nregions = 0;
     21  list[0].ownElements = FALSE; // this list is only holding a view to the elements
    2122
    2223  region = table[0].regions;
     
    6566  ALLOCATE (list[0].filename, char *, NREGIONS);
    6667  list[0].Nregions = N;
     68  list[0].ownElements = FALSE; // this list is only holding a view to the elements
    6769
    6870  region = table[0].regions;
     
    99101  ALLOCATE (list[0].filename,  char *, NREGIONS);
    100102  list[0].Nregions = N;
     103  list[0].ownElements = FALSE; // this list is only holding a view to the elements
    101104
    102105  region = table[0].regions;
     
    232235    }
    233236    list[0].Nregions = Ns;
    234     SkyListFree (extra, FALSE);
     237    SkyListFree (extra);
    235238  } else {
    236239    list = SkyListChildrenByBounds (table, -1, depth, Rmin, Rmax, Dmin, Dmax);
     
    253256  ALLOCATE (list[0].regions, SkyRegion *, NNEW);
    254257  ALLOCATE (list[0].filename, char *, NNEW);
     258  list[0].ownElements = FALSE; // this list is only holding a view to the elements
    255259
    256260  region = table[0].regions;
     
    289293      }
    290294      Nnew += children[0].Nregions;
    291       SkyListFree (children, FALSE);
     295      SkyListFree (children);
    292296    } else {
    293297      list[0].regions[Nnew] = &region[i];
     
    332336}
    333337
    334 int SkyListFree (SkyList *list, int ELEMENTS) {
     338int SkyListFree (SkyList *list) {
    335339
    336340  int i;
     
    339343  if (list == NULL) return (TRUE);
    340344  if (list[0].regions != NULL) {
    341     if (ELEMENTS) {
     345    if (list[0].ownElements) {
    342346      for (i = 0; i < list[0].Nregions; i++) {
    343347        if (list[0].filename[i] != NULL) {
     
    384388        ALLOCATE (list[0].regions, SkyRegion *, 1);
    385389        ALLOCATE (list[0].filename, char *, 1);
     390        list[0].ownElements = FALSE; // this list is only holding a view to the elements
    386391        list[0].Nregions = 0;
    387392        *outlist = list;
     
    412417    return (TRUE);
    413418}
    414 
    415 # if (0)
    416 
    417 /* find regions contained within rectangular region  c1 - c2 */
    418 SkyRegion **SkyFindArea (SkyRegion *db, SkyCoord c1, SkyCoord c2, int *nlist) {
    419 
    420   int Nlist;
    421   SkyRegion *list, *new, *sub;
    422 
    423   while (c1.r > 360.0) c1.r -= 360.0;
    424   while (c1.r <   0.0) c1.r += 360.0;
    425   while (c2.r > 360.0) c2.r -= 360.0;
    426   while (c2.r <   0.0) c2.r += 360.0;
    427 
    428   /* check on c1.r > c2.r : cross boundary */
    429   if (c1.r > c2.r) {
    430     c0 = c2; c0.r = 360.0;
    431     list = SkyFindArea (db, c1, c0, &Nlist);
    432     c0 = c1; c0.r = 0.0;
    433     new  = SkyFindArea (db, c0, c2, &Nnew);
    434     REALLOCATE (list, SkyRegion *, MAX (1, Nlist + Nnew));
    435     memcpy (&list[Nlist], new, Nnew*sizeof(SkyRegion *));
    436     free (new);
    437     Nlist += Nnew;
    438     *nlist = Nlist;
    439     return (list);
    440   }   
    441 
    442   Ns = 0;
    443   Ne = 1;
    444   Nlist = 1;
    445   ALLOCATE (list, SkyRegion *, Nlist);
    446   list[0] = &region[0];
    447   getchild = region[0].child;
    448 
    449   while (getchild) {
    450 
    451     getchild = FALSE;
    452     Nnew = 0;
    453     NNEW = 100;
    454     ALLOCATE (new, SkyRegion *, NNEW);
    455 
    456     for (i = Ns; i < Ne; i++) {
    457       children = SkyFindChildren(db, list[i], c1, c2, &Nchildren);
    458       if (children == NULL) continue;
    459       if (Nnew + Nchildren >= NNEW) {
    460         NNEW += 100;
    461         REALLOCATE (new, SkyRegion *, NNEW);
    462       }
    463       for (i = 0; i < Nchildren; i++) {
    464         getchild |= children[i][0].child;
    465         new[Nnew] = children[i];
    466         Nnew++;
    467       }
    468       free (children);
    469     }
    470 
    471     REALLOCATE (list, SkyRegion *, Nlist + Nnew);
    472     memcpy (&list[Nlist], new, Nnew*sizeof(SkyRegion *));
    473     free (new);
    474     Nlist += Nnew;
    475   }
    476   return (list);
    477   *nlist = Nlist;
    478 }
    479 
    480 /* find all children of the given sky region */
    481 SkyRegion **SkyFindChildren (SkyRegion *db, SkyRegion *parent, SkyCoord c1, SkyCoord c2, int *Nchildren) {
    482 
    483   int i, Ns, Ne, Nregion, NREGIONS;
    484   SkyRegion **region;
    485  
    486   *Nchildren = 0;
    487   if (!parent[0].child) return (NULL);
    488 
    489   Ns = parent[0].childS;
    490   Ne = parent[0].childE;
    491 
    492   Nregion = 0;
    493   NREGIONS = 100;
    494   ALLOCATE (region, SkyRegion *, NREGIONS);
    495 
    496   for (i = Ns; i < Ne; i++) {
    497     if (region[i].Rmax < c1.r) continue;
    498     if (region[i].Rmin > c2.r) continue;
    499     if (region[i].Dmax < c1.d) continue;
    500     if (region[i].Dmin > c2.d) continue;
    501     region[Nregion] = &region[i];
    502     Nregion++;
    503     if (Nregion == NREGIONS) {
    504       NREGIONS += 100;
    505       REALLOCATE (region, SkyRegion *, NREGIONS);
    506     }     
    507   }
    508   *Nchildren = Nregion;
    509   return (region);
    510 }
    511 
    512 /* region is pointer to entry in db */
    513 SkyRegion *SkyExtend (SkyRegion *db, SkyRegion *region) {
    514 
    515   fprintf (stderr, "not implemented\n");
    516 
    517 }
    518 
    519 /* region is pointer to entry in db */
    520 SkyRegion *SkyContract (SkyRegion *db, SkyRegion *region) {
    521 
    522   fprintf (stderr, "not implemented\n");
    523 
    524 }
    525 
    526 SkyRegion *SkyFindGCircle (SkyRegion *db, SkyCoord c1, SkyCoord c2) {
    527 
    528   fprintf (stderr, "not implemented\n");
    529 
    530 }
    531 # endif
  • trunk/Ohana/src/libkapa/src/KapaWindow.c

    r13479 r14401  
    177177                  &data[0].coords.cdelt2);
    178178
     179  // XXX at some point, we need to add polynomials and 2-level mosaic
     180  // astrometry here.
     181
     182  data[0].coords.Npolyterms = 0;
     183
    179184  KiiWaitAnswer (fd, "DONE");
    180185  return (TRUE);
  • trunk/Ohana/src/opihi/dvo/ImageOps.c

    r7680 r14401  
    22
    33void image_subset (Image *image, int Nimage, int **Subset, int *Nsubset,
    4                    Graphdata *graph, int RegionSelect,
     4                   SkyRegionSelection *selection,
    55                   unsigned long int tzero, double trange, int TimeSelect)
    66{
     
    1010  int N, n, npts;
    1111  double r, d, X, Y, x[4], y[4], Rmin, Rmax, Rmid;
     12  Graphdata graph;
     13  SkyRegion patch;
    1214
    1315  Rmin = Rmax = Rmid = 0;
    14   if (RegionSelect) {
    15     Rmin = graph[0].coords.crval1 - 182.0;
    16     Rmax = graph[0].coords.crval1 + 182.0;
     16
     17  if (selection->useDisplay) {
     18    if (!GetGraphData (&graph, NULL, NULL)) {
     19      gprint (GP_ERR, "region display not available\n");
     20      return;
     21    }
     22    Rmin = graph.coords.crval1 - 182.0;
     23    Rmax = graph.coords.crval1 + 182.0;
    1724    Rmid = 0.5*(Rmin + Rmax);
    1825    BuildChipMatch (image, Nimage);
     26  }
     27
     28  if (selection->useSkyregion) {
     29    get_skyregion (&patch.Rmin, &patch.Rmax, &patch.Dmin, &patch.Dmax);
     30    Rmin = patch.Rmin - 182.0;
     31    Rmax = patch.Rmax + 182.0;
     32    Rmid = 0.5*(Rmin + Rmax);
    1933  }
    2034
     
    2943  for (i = 0; i < Nimage; i++) {
    3044    if (TimeSelect && ((image[i].tzero < tzero) || (image[i].tzero+image[i].trate*image[i].NY > tzero + trange))) continue;
    31     if (RegionSelect) {
     45    if (selection->useDisplay) {
    3246      if (!FindMosaicForImage (image, Nimage, i)) continue;
    3347      /* project this image to screen display coords */
     
    4458        while (flipped && (r < Rmid)) r+= 360.0;
    4559        while (flipped && (r > Rmid)) r-= 360.0;
    46         status = RD_to_XY (&X, &Y, r, d, &graph[0].coords);
     60        status = RD_to_XY (&X, &Y, r, d, &graph.coords);
    4761        if (!status) continue;
    48         if (X < graph[0].xmin) continue;
    49         if (X > graph[0].xmax) continue;
    50         if (Y < graph[0].ymin) continue;
    51         if (Y > graph[0].ymax) continue;
     62        if (X < graph.xmin) continue;
     63        if (X > graph.xmax) continue;
     64        if (Y < graph.ymin) continue;
     65        if (Y > graph.ymax) continue;
     66        goto in_region;
     67        /** we miss any images which surround the region.  we are also
     68            missing the DIS images for which the corners don't touch
     69            the region, but which are needed for WRP images with
     70            corners touching the region **/
     71      }
     72      continue;
     73    }
     74    if (selection->useSkyregion) {
     75      if (!FindMosaicForImage (image, Nimage, i)) continue;
     76      /* project this image to screen display coords */
     77      x[0] = 0;           y[0] = 0;
     78      x[1] = image[i].NX; y[1] = 0;
     79      x[2] = image[i].NX; y[2] = image[i].NY;
     80      x[3] = 0;           y[3] = image[i].NY;
     81      InPic = flipped = FALSE;
     82      for (j = 0; j < 4; j++) {
     83        XY_to_RD (&r, &d, x[j], y[j], &image[i].coords);
     84        /* use same side of 0,360 boundary for all corners */
     85        if ((j == 0) && (r < Rmin)) flipped = TRUE;
     86        if ((j == 0) && (r > Rmax)) flipped = TRUE;
     87        while (flipped && (r < Rmid)) r+= 360.0;
     88        while (flipped && (r > Rmid)) r-= 360.0;
     89        if (r < patch.Rmin) continue;
     90        if (r > patch.Rmax) continue;
     91        if (d < patch.Dmin) continue;
     92        if (d > patch.Dmax) continue;
    5293        goto in_region;
    5394        /** we miss any images which surround the region.  we are also
  • trunk/Ohana/src/opihi/dvo/ImageSelection.c

    r14286 r14401  
    99
    1010/* load images based on parameters and region, etc */
    11 int SetImageSelection (int mosaicMode, int RegionSelect) {
     11int SetImageSelection (int mosaicMode, SkyRegionSelection *selection) {
    1212
    1313  int Ngraph;
    14   Graphdata graphsky;
    1514  int TimeSelect;
    1615  time_t tzero, tend;
     
    1918  subset = NULL;
    2019 
    21   if (RegionSelect) {
    22     // how does this know which sky plot to use?
    23     if (!GetGraphData (&graphsky, NULL, NULL)) {
    24       gprint (GP_ERR, "region display not available\n");
    25       return (FALSE);
    26     }
    27   }
    28 
    2920  TimeSelect = GetTimeSelection (&tzero, &tend);
    3021
     
    4132  if ((image = LoadImages (&Nimage)) == NULL) return (FALSE);
    4233  BuildChipMatch (image, Nimage);
    43   image_subset (image, Nimage, &subset, &Nsubset, &graphsky, RegionSelect, tzero, (double) tend - tzero, TimeSelect);
     34  image_subset (image, Nimage, &subset, &Nsubset, selection, tzero, (double) tend - tzero, TimeSelect);
    4435  sort_image_subset (image, subset, Nsubset);
    4536  return (TRUE);
  • trunk/Ohana/src/opihi/dvo/Makefile

    r13479 r14401  
    8282$(SRC)/paverage.$(ARCH).o               \
    8383$(SRC)/procks.$(ARCH).o         \
     84$(SRC)/skycat.$(ARCH).o         \
    8485$(SRC)/skycoverage.$(ARCH).o            \
    85 $(SRC)/skycat.$(ARCH).o         \
     86$(SRC)/skyregion.$(ARCH).o              \
    8687$(SRC)/showtile.$(ARCH).o               \
    8788$(SRC)/simage.$(ARCH).o         \
  • trunk/Ohana/src/opihi/dvo/avextract.c

    r14287 r14401  
    55  int i, j, n, m, N, Npts, NPTS, last, Nfields, Nreturn, Ncstack, Nstack;
    66  int Nsecfilt, mode, VERBOSE;
    7   char *RegionName, *RegionList, *p;
     7  char *p;
    88  char **cstack, name[1024];
    99  float *values;
     
    1212  Catalog catalog;
    1313  SkyList *skylist;
     14  SkyRegionSelection *selection;
    1415  PhotCode *code;
    1516  Vector **vec;
     
    1920  /* defaults */
    2021  skylist = NULL;
    21   RegionName = NULL;
    22   RegionList = NULL;
     22  selection = NULL;
    2323  code = NULL;
    2424  mode = MAG_AVE;
    2525  fields = NULL;
    2626  stack = NULL;
     27
     28  if ((N = get_argument (argc, argv, "-h"))) goto help;
     29  if ((N = get_argument (argc, argv, "--help"))) goto help;
    2730
    2831  VERBOSE = FALSE;
     
    3841  Nsecfilt = GetPhotcodeNsecfilt ();
    3942
    40   // remove skyregion options
    41   // XXX this needs to explicitly handle -qregion and -skyregion
    42   if (!SetRegionSelection (&argc, argv, &RegionName, &RegionList)) goto escape;
     43  // parse skyregion options
     44  if ((selection = SetRegionSelection (&argc, argv)) == NULL) goto escape;
    4345
    4446  // command-line is of the form: avextract field,field, field [where (field op value)...]
     
    5456  stack = dbRPN (Ncstack, cstack, &Nstack);
    5557
     58  // add the skyregion limits to the where statement (or create)
     59  dbAstroRegionLimits (&stack, &Nstack, selection, DVO_TABLE_AVERAGE);
     60
     61  // parse stack elements into fields and scalars as needed
    5662  Nreturn = Nfields;
    5763  dbCheckStack (stack, Nstack, DVO_TABLE_AVERAGE, &fields, &Nfields);
     
    5965
    6066  /* load region corresponding to selection above */
    61   if ((skylist = SelectRegions (RegionName, RegionList)) == NULL) goto escape;
     67  if ((skylist = SelectRegions (selection)) == NULL) goto escape;
    6268
    6369  /* create output storage vectors */
     
    125131  dbFreeFields (fields, Nfields);
    126132  dbFreeStack (stack, Nstack);
    127   SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
     133  SkyListFree (skylist);
     134  FreeSkyRegionSelection (selection);
    128135  return (TRUE);
    129136
    130 usage:
     137 usage:
    131138  gprint (GP_ERR, "USAGE: avextract (value) [options]\n");
    132139  gprint (GP_ERR, "  value: average.parameter or photcode\n");
    133140
    134 escape:
     141 escape:
    135142  dbFreeFields (fields, Nfields);
    136143  dbFreeStack (stack, Nstack);
    137   SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
     144  SkyListFree (skylist);
     145  FreeSkyRegionSelection (selection);
    138146  dvo_catalog_free (&catalog);
    139   if (RegionName != NULL) free (RegionName);
    140   if (RegionList != NULL) free (RegionList);
     147  return (FALSE);
     148
     149 help:
     150  gprint (GP_ERR, "USAGE: avextract field[,field,field...] where (expression)\n");
     151
     152  if ((argc > N + 1) && !strcasecmp (argv[N+1], "fields")) {
     153    gprint (GP_ERR, " USAGE: avextract field[,field,field...] where (expression)\n");
     154    gprint (GP_ERR, "  RA : right ascension (J2000)\n");
     155    gprint (GP_ERR, "  DEC : declination \n");
     156    gprint (GP_ERR, "  dRA : ra scatter \n");
     157    gprint (GP_ERR, "  dDEC : dec scatter\n");
     158    gprint (GP_ERR, "  uRA : proper motion in ra\n");
     159    gprint (GP_ERR, "  uDEC : proper motion in dec\n");
     160    gprint (GP_ERR, "  duRA : proper motion error in ra\n");
     161    gprint (GP_ERR, "  duDEC : proper motion error in dec\n");
     162    gprint (GP_ERR, "  PAR : parallax\n");
     163    gprint (GP_ERR, "  dPAR : parallax error \n");
     164    gprint (GP_ERR, "  nmeas : number of measurements\n");
     165    gprint (GP_ERR, "  nmiss : number of non-detections\n");
     166    gprint (GP_ERR, "  xp : positional chi-square\n");
     167    gprint (GP_ERR, "  flag : object flags\n");
     168    gprint (GP_ERR, "  photocode:ave : average magnitude for photcode\n");
     169    gprint (GP_ERR, "  photocode:ref : reference magnitude system for photcode\n");
     170    gprint (GP_ERR, "  photocode:inst : first instrumental magnitude for photcode\n");
     171    gprint (GP_ERR, "  photocode:cat : first catalog magnitude for photcode\n");
     172    gprint (GP_ERR, "  photocode:sys : first system magnitude for photcode\n");
     173    gprint (GP_ERR, "  photocode:rel : first relative magnitude for photcode\n");
     174    gprint (GP_ERR, "  photocode:cal : first calibrated magnitude for photcode \n");
     175    gprint (GP_ERR, "  photcode:err : magnitude error for photcode\n");
     176    gprint (GP_ERR, "  photcode:chipsq : chi-square of magnitude fit\n");
     177    gprint (GP_ERR, "  type : dophot type (unused)\n");
     178    gprint (GP_ERR, "  typefrac : dophot type fraction (unused)\n");
     179    gprint (GP_ERR, "  photcode:ncode : number of measurements in photcode \n");
     180    gprint (GP_ERR, "  photcode:nphot : number of measurements used for photcode average\n");
     181    return (FALSE);
     182  }
     183  gprint (GP_ERR, " avextract --help fields : for a complete listing of allowed fields\n");
    141184  return (FALSE);
    142185}
  • trunk/Ohana/src/opihi/dvo/calextract.c

    r12332 r14401  
    77  int i, j, m, N, Nr, mode[2];
    88  int Nsecfilt, NSTAR;
    9   char *RegionName, *RegionList;
    109  double M1, M2, dM2, color;
    1110
     
    1413  Vector **vec;
    1514  SkyList *skylist;
     15  SkyRegionSelection *selection;
    1616
    1717  /* these need to be freed in the end */
     
    1919  catalog.secfilt = NULL;
    2020  catalog.measure = NULL;
    21   RegionName = NULL;
    22   RegionList = NULL;
    2321  skylist = NULL;
     22  selection = NULL;
    2423  vec = NULL;
    2524
     
    3029  /* command line arguments */
    3130  SetSelectionParam (0);
    32   if (!SetRegionSelection (&argc, argv, &RegionName, &RegionList)) goto escape;
     31
     32  // parse skyregion options
     33  if ((selection = SetRegionSelection (&argc, argv)) == NULL) goto escape;
    3334  if (!SetPhotSelections (&argc, argv, 2)) goto usage;
    3435
     
    5051  if ((vec[Np]  = SelectVector ("cal:nphot",    ANYVECTOR, TRUE)) == NULL) goto escape;
    5152  if ((vec[Nc]  = SelectVector ("cal:ncode",    ANYVECTOR, TRUE)) == NULL) goto escape;
    52   if ((vec[Nt]  = SelectVector ("cal:ncrit",    ANYVECTOR, TRUE)) == NULL) goto escape;
     53  // if ((vec[Nt]       = SelectVector ("cal:ncrit",    ANYVECTOR, TRUE)) == NULL) goto escape;
    5354  if ((vec[Nx]  = SelectVector ("cal:chisq",    ANYVECTOR, TRUE)) == NULL) goto escape;
    5455  if ((vec[Nd1] = SelectVector ("cal:dm1",      ANYVECTOR, TRUE)) == NULL) goto escape;
     
    5657
    5758  /* load region corresponding to selection above */
    58   if ((skylist = SelectRegions (RegionName, RegionList)) == NULL) goto escape;
     59  if ((skylist = SelectRegions (selection)) == NULL) goto escape;
    5960
    6061  for (Nr = 0; Nr < skylist[0].Nregions; Nr++) {
     
    7374    dvo_catalog_unlock (&catalog);
    7475
     76    # if (0)
    7577    /* extract values, assign to vectors */
    7678    for (i = 0; i < catalog.Naverage; i++) {
     
    104106      vec[Nc ][0].elements[N] = ExtractAverages (code[0], mode[0], &catalog.average[i], &catalog.secfilt[i*Nsecfilt], &catalog.measure[m], AVE_NCODE);
    105107      vec[Np ][0].elements[N] = ExtractAverages (code[0], mode[0], &catalog.average[i], &catalog.secfilt[i*Nsecfilt], &catalog.measure[m], AVE_NPHOT);
    106       vec[Nt ][0].elements[N] = ExtractAverages (code[0], mode[0], &catalog.average[i], &catalog.secfilt[i*Nsecfilt], &catalog.measure[m], AVE_NCRIT);
     108      // vec[Nt ][0].elements[N] = ExtractAverages (code[0], mode[0], &catalog.average[i], &catalog.secfilt[i*Nsecfilt], &catalog.measure[m], AVE_NCRIT);
    107109      N ++;
    108110      if (N == NSTAR) {
     
    113115      }
    114116    }
     117    # endif
    115118    dvo_catalog_free (&catalog);
    116119  }
    117120
    118   SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
    119121  for (i = 0; i < NVEC; i++) {
    120122    vec[i][0].Nelements = N;
    121123  }
     124
     125  SkyListFree (skylist);
     126  FreeSkyRegionSelection (selection);
    122127  return (TRUE);
    123128 
     
    127132
    128133escape:
    129   if (RegionName != NULL) free (RegionName);
    130   if (RegionList != NULL) free (RegionList);
    131   SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
     134  SkyListFree (skylist);
     135  FreeSkyRegionSelection (selection);
    132136  for (i = 0; i < NVEC; i++) {
    133137    DeleteVector (vec[i]);
  • trunk/Ohana/src/opihi/dvo/calmextract.c

    r14286 r14401  
    88  int i, j, k, m, N, N1, Nr, mode[2];
    99  int NSTAR, Nstar, Nsecfilt;
    10   char *RegionName, *RegionList;
    1110  double *M1, M2, dM2, color;
    1211
     
    1413  PhotCode *code[2];
    1514  SkyList *skylist;
     15  SkyRegionSelection *selection;
    1616  Vector **vec;
    1717
     
    2020  catalog.secfilt = NULL;
    2121  catalog.measure = NULL;
    22   RegionName = NULL;
    23   RegionList = NULL;
    2422  skylist = NULL;
     23  selection = NULL;
    2524  vec = NULL;
    2625
     
    3029
    3130  /* command line arguments */
    32   if (!SetRegionSelection (&argc, argv, &RegionName, &RegionList)) goto escape;
     31  if ((selection = SetRegionSelection (&argc, argv)) == NULL) goto escape;
    3332  if (!SetPhotSelections (&argc, argv, 2)) goto usage;
    3433
     
    6867
    6968  /* load region corresponding to selection above */
    70   if ((skylist = SelectRegions (RegionName, RegionList)) == NULL) goto escape;
    71   if (!SetImageSelection (TRUE, ((RegionName == NULL) && (RegionList == NULL)))) goto escape;
     69  if ((skylist = SelectRegions (selection)) == NULL) goto escape;
     70  if (!SetImageSelection (TRUE, selection)) goto escape;
    7271
    7372  for (Nr = 0; Nr < skylist[0].Nregions; Nr++) {
     
    8685    dvo_catalog_unlock (&catalog);
    8786
     87    # if (0)
    8888    /* extract values, assign to vectors */
    8989    for (i = 0; i < catalog.Naverage; i++) {
     
    119119      ConcatMeasures (vec[NT ], code[0], mode[0], &catalog.average[i], &catalog.secfilt[i*Nsecfilt], &catalog.measure[m], N1, MEAS_EXPTIME);
    120120      ConcatMeasures (vec[NP ], code[0], mode[0], &catalog.average[i], &catalog.secfilt[i*Nsecfilt], &catalog.measure[m], N1, MEAS_PHOTCODE);
    121       ConcatMeasures (vec[Nd1], code[0], mode[0], &catalog.average[i], &catalog.secfilt[i*Nsecfilt], &catalog.measure[m], N1, MEAS_dMAG);
     121      // ConcatMeasures (vec[Nd1], code[0], mode[0], &catalog.average[i], &catalog.secfilt[i*Nsecfilt], &catalog.measure[m], N1, MEAS_dMAG);
    122122      ConcatMeasures (vec[Nxc], code[0], mode[0], &catalog.average[i], &catalog.secfilt[i*Nsecfilt], &catalog.measure[m], N1, MEAS_XCCD);
    123123      ConcatMeasures (vec[Nyc], code[0], mode[0], &catalog.average[i], &catalog.secfilt[i*Nsecfilt], &catalog.measure[m], N1, MEAS_YCCD);
     
    139139      if (M1 != NULL) free (M1);
    140140    }
     141    # endif
    141142    dvo_catalog_free (&catalog);
    142143  }
    143144
    144   SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
    145145  for (i = 0; i < NVEC; i++) {
    146146    vec[i][0].Nelements = N;
    147147  }
     148  SkyListFree (skylist);
     149  FreeSkyRegionSelection (selection);
    148150  FreeImageSelection ();
    149151  return (TRUE);
     
    154156
    155157escape:
     158  SkyListFree (skylist);
     159  FreeSkyRegionSelection (selection);
    156160  FreeImageSelection ();
    157   SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
    158161  for (i = 0; i < NVEC; i++) {
    159162    DeleteVector (vec[i]);
  • trunk/Ohana/src/opihi/dvo/ccd.c

    r12332 r14401  
    33int ccd (int argc, char **argv) {
    44 
    5   char *RegionName, *RegionList;
    65  double *M1, *M2;
    76  int i, m, k, Npts, NPTS, N;
     
    1211  PhotCode *code[4];
    1312  SkyList *skylist;
     13  SkyRegionSelection *selection;
    1414  Vector *xvec, *yvec;
    1515
     
    1818  catalog.secfilt = NULL;
    1919  catalog.measure = NULL;
    20   RegionName = NULL;
    21   RegionList = NULL;
    2220  skylist = NULL;
     21  selection = NULL;
    2322
    2423  /* load photcode information */
     
    2726
    2827  /* interpret command-line options */
    29   if (!SetRegionSelection (&argc, argv, &RegionName, &RegionList)) goto escape;
     28  if ((selection = SetRegionSelection (&argc, argv)) == NULL) goto escape;
    3029  if (!SetPhotSelections (&argc, argv, 4)) goto usage;
    3130
     
    4847
    4948  /* load region corresponding to selection above */
    50   if ((skylist = SelectRegions (RegionName, RegionList)) == NULL) goto escape;
     49  if ((skylist = SelectRegions (selection)) == NULL) goto escape;
    5150
    5251  /* init vectors to save data */
     
    109108    dvo_catalog_free (&catalog);
    110109  }
    111   SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
     110
    112111  xvec[0].Nelements = yvec[0].Nelements = Npts;
     112  SkyListFree (skylist);
     113  FreeSkyRegionSelection (selection);
    113114  return (TRUE);
    114115
     
    118119
    119120escape:
    120   SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
     121  SkyListFree (skylist);
     122  FreeSkyRegionSelection (selection);
    121123  dvo_catalog_free (&catalog);
    122   if (RegionName != NULL) free (RegionName);
    123   if (RegionList != NULL) free (RegionList);
    124124  return (FALSE);
    125125}
  • trunk/Ohana/src/opihi/dvo/cmd.c

    r12332 r14401  
    33int cmd (int argc, char **argv) { /* really need to think about upper limits & how to represent them */
    44 
    5   char *RegionName, *RegionList;
    65  double *M1, *M3;
    76  int i, j, m, i1, i3, N1, N3, N;
     
    1211  Catalog catalog;
    1312  SkyList *skylist;
     13  SkyRegionSelection *selection;
    1414  Vector *xvec, *yvec;
    1515
     
    1818  catalog.secfilt = NULL;
    1919  catalog.measure = NULL;
    20   RegionName = NULL;
    21   RegionList = NULL;
    2220  skylist = NULL;
     21  selection = NULL;
    2322
    2423  /* load photcode information */
     
    2726
    2827  /* interpret command-line options */
    29   if (!SetRegionSelection (&argc, argv, &RegionName, &RegionList)) goto escape;
     28  if ((selection = SetRegionSelection (&argc, argv)) == NULL) goto escape;
    3029  if (!SetPhotSelections (&argc, argv, 3)) goto usage;
    3130
     
    4645
    4746  /* load region corresponding to selection above */
    48   if ((skylist = SelectRegions (RegionName, RegionList)) == NULL) goto escape;
     47  if ((skylist = SelectRegions (selection)) == NULL) goto escape;
    4948
    5049  /* init vectors to save data */
     
    107106    dvo_catalog_free (&catalog);
    108107  }
    109   SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
     108
    110109  xvec[0].Nelements = yvec[0].Nelements = Npts;
     110  SkyListFree (skylist);
     111  FreeSkyRegionSelection (selection);
    111112  return (TRUE);
    112113
     
    116117
    117118escape:
    118   SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
    119119  dvo_catalog_free (&catalog);
    120   if (RegionName != NULL) free (RegionName);
    121   if (RegionList != NULL) free (RegionList);
     120  SkyListFree (skylist);
     121  FreeSkyRegionSelection (selection);
    122122  return (FALSE);
    123123}
  • trunk/Ohana/src/opihi/dvo/dbCmdlineFields.c

    r14191 r14401  
    7070  return (fields);
    7171}
     72
     73char *strfloat (float value) {
     74
     75  int Nbyte;
     76  char *output;
     77  char tmp;
     78
     79  Nbyte = snprintf (&tmp, 0, "%f", value);
     80  ALLOCATE (output, char, Nbyte + 1);
     81  snprintf (output, Nbyte + 1, "%f", value);
     82  return output;
     83}
     84
     85// identify the fields to be extracted (test for where, check syntax)
     86int dbAstroRegionLimits (dbStack **stack, int *nstack, SkyRegionSelection *selection, int table) {
     87 
     88  int N;
     89  double Rmin, Rmax, Dmin, Dmax;
     90  char *Rname, *Dname;
     91
     92  if (!selection->useDisplay && !selection->useSkyregion) return (TRUE);
     93
     94  // get the ra,dec limits...
     95  if (selection->useDisplay) {
     96    return (TRUE);
     97    // XXX fix this: be more careful with the projection & limits
     98
     99    Graphdata graphsky;
     100    if (!GetGraphData (&graphsky, NULL, NULL)) {
     101      gprint (GP_ERR, "region display not available\n");
     102      return (FALSE);
     103    }
     104   
     105    // XXX the ra and dec range depend on the projection.
     106    // XXX this is wrong...
     107    int status;
     108    status = XY_to_RD (&Rmin, &Dmin, graphsky.xmin, graphsky.ymin, &graphsky.coords);
     109    status = XY_to_RD (&Rmax, &Dmax, graphsky.xmax, graphsky.ymax, &graphsky.coords);
     110  }
     111
     112  if (selection->useSkyregion) {
     113    get_skyregion (&Rmin, &Rmax, &Dmin, &Dmax);
     114  }   
     115
     116  N = *nstack;
     117  REALLOCATE (*stack, dbStack, N + 20);
     118
     119  if (table == DVO_TABLE_AVERAGE) {
     120    Rname = strcreate ("RA");
     121    Dname = strcreate ("DEC");
     122  } else {
     123    Rname = strcreate ("RA:AVE");
     124    Dname = strcreate ("DEC:AVE");
     125  }
     126
     127  // add: ((ra > rmin) && (ra < rmax) && (dec > dmin) && (dec < dmax))
     128  // prepend with && if *nstack > 0
     129
     130  stack[0][N +  0].name = strcreate (Rname);
     131  stack[0][N +  0].type = 'X';
     132  stack[0][N +  1].name = strfloat (Rmin);
     133  stack[0][N +  1].type = 'X';
     134  stack[0][N +  2].name = strcreate (">");
     135  stack[0][N +  2].type = 4;
     136  // stack[0][N +  3].name = strcreate ("A");
     137  // stack[0][N +  3].type = 3;
     138
     139  stack[0][N +  3].name = strcreate (Rname);
     140  stack[0][N +  3].type = 'X';
     141  stack[0][N +  4].name = strfloat (Rmax);
     142  stack[0][N +  4].type = 'X';
     143  stack[0][N +  5].name = strcreate ("<");
     144  stack[0][N +  5].type = 4;
     145  stack[0][N +  6].name = strcreate ("A");
     146  stack[0][N +  6].type = 3;
     147
     148  stack[0][N +  7].name = strcreate (Dname);
     149  stack[0][N +  7].type = 'X';
     150  stack[0][N +  8].name = strfloat (Dmin);
     151  stack[0][N +  8].type = 'X';
     152  stack[0][N +  9].name = strcreate (">");
     153  stack[0][N +  9].type = 4;
     154  stack[0][N + 10].name = strcreate ("A");
     155  stack[0][N + 10].type = 3;
     156
     157  stack[0][N + 11].name = strcreate (Dname);
     158  stack[0][N + 11].type = 'X';
     159  stack[0][N + 12].name = strfloat (Dmax);
     160  stack[0][N + 12].type = 'X';
     161  stack[0][N + 13].name = strcreate ("<");
     162  stack[0][N + 13].type = 4;
     163  stack[0][N + 14].name = strcreate ("A");
     164  stack[0][N + 14].type = 3;
     165
     166  if (N == 0) {
     167    N += 15;
     168  } else {
     169    stack[0][N + 15].name = strcreate ("A");
     170    stack[0][N + 15].type = 3;
     171    N += 16;
     172  }   
     173
     174  free (Rname);
     175  free (Dname);
     176
     177  *nstack = N;
     178  return (TRUE);
     179}
     180
  • trunk/Ohana/src/opihi/dvo/dbExtractAverages.c

    r13479 r14401  
    44double dbExtractAverages (Average *average, SecFilt *secfilt, Measure *measure, dbField *field) {
    55
    6   int i;
     6  int i, Nsec;
    77  double value;
    88
     
    7878          }
    7979          break;
     80        case MAG_CHISQ:
     81          // GetPhotcodeEquivCodebyCode (field->photcode)
     82          value = PhotXm (field->photcode, average, secfilt);
     83          break;
     84        case MAG_ERR:
     85          // GetPhotcodeEquivCodebyCode (field->photcode)
     86          value = PhotdM (field->photcode, average, secfilt);
     87          break;
     88        case MAG_NCODE:
     89          // XXX push these into dvo_photcode_ops APIs
     90          // XXX do I need to allow for conversion to equiv?
     91          Nsec = GetPhotcodeNsec (field->photcode->code);
     92          if (Nsec == -1) break;
     93          value = secfilt[Nsec].Ncode;
     94          break;
     95        case MAG_NPHOT:
     96          Nsec = GetPhotcodeNsec (field->photcode->code);
     97          if (Nsec == -1) break;
     98          value = secfilt[Nsec].Nused;
     99          break;
     100
    80101      }
    81102      break;
     
    90111    case AVE_TYPEFRAC:
    91112      break;
     113      /*
    92114    case AVE_NCODE:
    93115      value = 0;
     
    107129    case AVE_NCRIT:
    108130      break;
     131      */
    109132  }
    110133  return (value);
  • trunk/Ohana/src/opihi/dvo/dbExtractMeasures.c

    r14379 r14401  
    1212double dbExtractMeasures (Average *average, SecFilt *secfilt, Measure *measure, dbField *field) {
    1313
    14   int i;
     14  int i, Nsec;
    1515  double value;
    1616  double ra, dec, x, y;
     
    2727      if ((field->photcode->type == PHOT_REF) && (measure[0].photcode == field->photcode->code)) goto valid_photcode;
    2828      if ((field->photcode->type == PHOT_DEP) && (measure[0].photcode == field->photcode->code)) goto valid_photcode;
    29       if ((field->photcode->type == PHOT_SEC) && (GetPhotcodeEquivbyCode (measure[0].photcode) == field->photcode->code)) goto valid_photcode;
     29      if ((field->photcode->type == PHOT_SEC) && (GetPhotcodeEquivCodebyCode (measure[0].photcode) == field->photcode->code)) goto valid_photcode;
    3030      break;
    3131
     
    5353          value = PhotRef  (GetPhotcodeEquivbyCode (measure[0].photcode), average, secfilt, measure);
    5454          break;
     55        case MAG_ERR:
     56          value = PhotdM  (GetPhotcodeEquivbyCode (measure[0].photcode), average, secfilt);
     57          break;
     58        case MAG_CHISQ:
     59          value = PhotXm  (GetPhotcodeEquivbyCode (measure[0].photcode), average, secfilt);
     60          break;
     61        case MAG_NCODE:
     62          Nsec = GetPhotcodeNsec (GetPhotcodeEquivCodebyCode (measure[0].photcode));
     63          if (Nsec == -1) break;
     64          value = secfilt[Nsec].Ncode;
     65          break;
     66        case MAG_NPHOT:
     67          Nsec = GetPhotcodeNsec (GetPhotcodeEquivCodebyCode (measure[0].photcode));
     68          if (Nsec == -1) break;
     69          value = secfilt[Nsec].Nused;
     70          break;
    5571      }
    5672      break;
     
    6783      value = average[0].D;
    6884      break;
    69     case MEAS_dMAG: /* OK */
    70       value = measure[0].dM;
     85    case MEAS_RA_AVE_ERR: /* OK */
     86      value = average[0].dR;
     87      break;
     88    case MEAS_DEC_AVE_ERR: /* OK */
     89      value = average[0].dD;
     90      break;
     91    case MEAS_U_RA: /* OK */
     92      value = average[0].uR;
     93      break;
     94    case MEAS_U_DEC: /* OK */
     95      value = average[0].uD;
     96      break;
     97    case MEAS_U_RA_ERR: /* OK */
     98      value = average[0].duR;
     99      break;
     100    case MEAS_U_DEC_ERR: /* OK */
     101      value = average[0].duD;
     102      break;
     103    case MEAS_PAR: /* OK */
     104      value = average[0].R;
     105      break;
     106    case MEAS_PAR_ERR: /* OK */
     107      value = average[0].D;
     108      break;
     109    case MEAS_XP: /* OK */
     110      value = average[0].Xp;
     111      break;
     112    case MEAS_NMEAS: /* OK */
     113      value = average[0].Nm;
     114      break;
     115    case MEAS_NMISS: /* OK */
     116      value = average[0].Nn;
     117      break;
     118    case MEAS_NPHOT: /* OK */
     119      Nsec = f(measure[0].photcode);
     120      value = secfilt[Nsec].Nused;
     121      break;
     122    case MEAS_NCODE: /* OK */
     123      Nsec = f(measure[0].photcode);
     124      value = secfilt[Nsec].Ncode;
     125      break;
     126    case MEAS_OBJFLAGS: /* OK */
     127      value = average[0].code;
     128      break;
     129//    case MEAS_dMAG: /* OK */
     130//      value = measure[0].dM;
     131//      break;
     132    // note that these represent the ra displacement relative to the average, not
     133    // the error.
     134    case MEAS_RA_OFFSET: /* OK */
     135      value = measure[0].dR;
     136      break;
     137    case MEAS_DEC_OFFSET: /* OK */
     138      value = measure[0].dD;
     139      break;
     140    case MEAS_RA_OFFSET_ERR: /* OK */
     141      value = NO_MAG;
     142      break;
     143    case MEAS_DEC_OFFSET_ERR: /* OK */
     144      value = NO_MAG;
    71145      break;
    72146    case MEAS_AIRMASS: /* OK */
     
    82156      value = TimeValue (measure[0].t, TimeReference, TimeFormat);
    83157      break;
    84     // note that these represent the ra displacement relative to the average, not
    85     // the error.
    86     case MEAS_dR: /* OK */
    87       value = measure[0].dR;
    88       break;
    89     case MEAS_dD: /* OK */
    90       value = measure[0].dD;
    91       break;
    92158    case MEAS_FWHM: /* OK */
     159      value = 0.01*(measure[0].FWx + measure[0].FWy);
     160      break;
     161    case MEAS_FWHM_MAJ: /* OK */
    93162      value = 0.01*measure[0].FWx;
    94163      break;
    95     case MEAS_DOPHOT: /* OK */
    96       value = measure[0].dophot;
    97       break;
     164    case MEAS_FWHM_MIN: /* OK */
     165      value = 0.01*measure[0].FWy;
     166      break;
     167    case MEAS_THETA: /* OK */
     168      value = measure[0].theta;
     169      break;
     170//    case MEAS_DOPHOT: /* OK */
     171//      value = measure[0].dophot;
     172//      break;
    98173    case MEAS_FLAGS: /* ? */
    99174      value = measure[0].flags;
  • trunk/Ohana/src/opihi/dvo/dbFields.c

    r14379 r14401  
    3838  if (!strcasecmp (string, "err"))   return (MAG_ERR);
    3939  if (!strcasecmp (string, "chisq")) return (MAG_CHISQ);
     40  if (!strcasecmp (string, "ncode")) return (MAG_NCODE);
     41  if (!strcasecmp (string, "nphot")) return (MAG_NPHOT);
    4042  return (MAG_NONE);
    4143}
     
    101103  field->name  = strcreate (fieldName);
    102104
    103   if (!strcasecmp (fieldName, "RA"))       ESCAPE (MEAS_RA,       MAG_NONE);
    104   if (!strcasecmp (fieldName, "DEC"))      ESCAPE (MEAS_DEC,      MAG_NONE);
    105   if (!strcasecmp (fieldName, "RA:AVE"))   ESCAPE (MEAS_RA_AVE,   MAG_NONE);
    106   if (!strcasecmp (fieldName, "DEC:AVE"))  ESCAPE (MEAS_DEC_AVE,  MAG_NONE);
    107   if (!strcasecmp (fieldName, "AIRMASS"))  ESCAPE (MEAS_AIRMASS,  MAG_NONE);
    108   if (!strcasecmp (fieldName, "EXPTIME"))  ESCAPE (MEAS_EXPTIME,  MAG_NONE);
    109   if (!strcasecmp (fieldName, "PHOTCODE")) ESCAPE (MEAS_PHOTCODE, MAG_NONE);
    110   if (!strcasecmp (fieldName, "TIME"))     ESCAPE (MEAS_TIME,     MAG_NONE);
    111   if (!strcasecmp (fieldName, "dR"))       ESCAPE (MEAS_dR,       MAG_NONE);
    112   if (!strcasecmp (fieldName, "dD"))       ESCAPE (MEAS_dD,       MAG_NONE);
    113   if (!strcasecmp (fieldName, "FWHM"))     ESCAPE (MEAS_FWHM,     MAG_NONE);
    114   if (!strcasecmp (fieldName, "DOPHOT"))   ESCAPE (MEAS_DOPHOT,   MAG_NONE);
    115   if (!strcasecmp (fieldName, "FLAGS"))    ESCAPE (MEAS_FLAGS,    MAG_NONE);
    116   if (!strcasecmp (fieldName, "XCCD"))     ESCAPE (MEAS_XCCD,     MAG_NONE);
    117   if (!strcasecmp (fieldName, "YCCD"))     ESCAPE (MEAS_YCCD,     MAG_NONE);
    118   if (!strcasecmp (fieldName, "XMOSAIC"))  ESCAPE (MEAS_XMOSAIC,  MAG_NONE);
    119   if (!strcasecmp (fieldName, "YMOSAIC"))  ESCAPE (MEAS_YMOSAIC,  MAG_NONE);
     105  if (!strcasecmp (fieldName, "RA"))       ESCAPE (MEAS_RA,             MAG_NONE);
     106  if (!strcasecmp (fieldName, "DEC"))      ESCAPE (MEAS_DEC,            MAG_NONE);
     107  if (!strcasecmp (fieldName, "RA:AVE"))   ESCAPE (MEAS_RA_AVE,         MAG_NONE);
     108  if (!strcasecmp (fieldName, "DEC:AVE"))  ESCAPE (MEAS_DEC_AVE,        MAG_NONE);
     109  if (!strcasecmp (fieldName, "RA:ERR"))   ESCAPE (MEAS_RA_AVE_ERR,     MAG_NONE);
     110  if (!strcasecmp (fieldName, "DEC:ERR"))  ESCAPE (MEAS_DEC_AVE_ERR,    MAG_NONE);
     111  if (!strcasecmp (fieldName, "uRA"))      ESCAPE (MEAS_U_RA,           MAG_NONE);
     112  if (!strcasecmp (fieldName, "uDEC"))     ESCAPE (MEAS_U_DEC,          MAG_NONE);
     113  if (!strcasecmp (fieldName, "duRA"))     ESCAPE (MEAS_U_RA_ERR,       MAG_NONE);
     114  if (!strcasecmp (fieldName, "duDEC"))    ESCAPE (MEAS_U_DEC_ERR,      MAG_NONE);
     115  if (!strcasecmp (fieldName, "PAR"))      ESCAPE (MEAS_PAR,            MAG_NONE);
     116  if (!strcasecmp (fieldName, "dPAR"))     ESCAPE (MEAS_PAR_ERR,        MAG_NONE);
     117  if (!strcasecmp (fieldName, "dR"))       ESCAPE (MEAS_RA_OFFSET,      MAG_NONE);
     118  if (!strcasecmp (fieldName, "dD"))       ESCAPE (MEAS_DEC_OFFSET,     MAG_NONE);
     119  if (!strcasecmp (fieldName, "dR:ERR"))   ESCAPE (MEAS_RA_OFFSET_ERR,  MAG_NONE);
     120  if (!strcasecmp (fieldName, "dD:ERR"))   ESCAPE (MEAS_DEC_OFFSET_ERR, MAG_NONE);
     121  if (!strcasecmp (fieldName, "xp"))       ESCAPE (MEAS_XP,             MAG_NONE);
     122  if (!strcasecmp (fieldName, "nmeas"))    ESCAPE (MEAS_NMEAS,          MAG_NONE);
     123  if (!strcasecmp (fieldName, "nmiss"))    ESCAPE (MEAS_NMISS,          MAG_NONE);
     124  if (!strcasecmp (fieldName, "nphot"))    ESCAPE (MEAS_NPHOT,          MAG_NONE);
     125  if (!strcasecmp (fieldName, "ncode"))    ESCAPE (MEAS_NCODE,          MAG_NONE);
     126  if (!strcasecmp (fieldName, "objflags")) ESCAPE (MEAS_OBJFLAGS,       MAG_NONE);
     127  if (!strcasecmp (fieldName, "AIRMASS"))  ESCAPE (MEAS_AIRMASS,        MAG_NONE);
     128  if (!strcasecmp (fieldName, "ALT"))      ESCAPE (MEAS_ALT,            MAG_NONE);
     129  if (!strcasecmp (fieldName, "AZ"))       ESCAPE (MEAS_AZ,             MAG_NONE);
     130  if (!strcasecmp (fieldName, "EXPTIME"))  ESCAPE (MEAS_EXPTIME,        MAG_NONE);
     131  if (!strcasecmp (fieldName, "PHOTCODE")) ESCAPE (MEAS_PHOTCODE,       MAG_NONE);
     132  if (!strcasecmp (fieldName, "TIME"))     ESCAPE (MEAS_TIME,           MAG_NONE);
     133  if (!strcasecmp (fieldName, "FWHM"))     ESCAPE (MEAS_FWHM,           MAG_NONE);
     134  if (!strcasecmp (fieldName, "FWHM_MAJ")) ESCAPE (MEAS_FWHM_MAJ,       MAG_NONE);
     135  if (!strcasecmp (fieldName, "FWHM_MIN")) ESCAPE (MEAS_FWHM_MIN,       MAG_NONE);
     136  if (!strcasecmp (fieldName, "THETA"))    ESCAPE (MEAS_THETA,          MAG_NONE);
     137  if (!strcasecmp (fieldName, "FLAGS"))    ESCAPE (MEAS_FLAGS,          MAG_NONE);
     138  if (!strcasecmp (fieldName, "XCCD"))     ESCAPE (MEAS_XCCD,           MAG_NONE);
     139  if (!strcasecmp (fieldName, "YCCD"))     ESCAPE (MEAS_YCCD,           MAG_NONE);
     140  if (!strcasecmp (fieldName, "XMOSAIC"))  ESCAPE (MEAS_XMOSAIC,        MAG_NONE);
     141  if (!strcasecmp (fieldName, "YMOSAIC"))  ESCAPE (MEAS_YMOSAIC,        MAG_NONE);
     142  if (!strcasecmp (fieldName, "XCHIP"))    ESCAPE (MEAS_XCCD,           MAG_NONE);
     143  if (!strcasecmp (fieldName, "YCHIP"))    ESCAPE (MEAS_YCCD,           MAG_NONE);
     144  if (!strcasecmp (fieldName, "XFPA"))     ESCAPE (MEAS_XMOSAIC,        MAG_NONE);
     145  if (!strcasecmp (fieldName, "YFPA"))     ESCAPE (MEAS_YMOSAIC,        MAG_NONE);
     146  if (!strcasecmp (fieldName, "DETID"))    ESCAPE (MEAS_DETID,          MAG_NONE);
     147  if (!strcasecmp (fieldName, "OBJID"))    ESCAPE (MEAS_OBJID,          MAG_NONE);
     148  if (!strcasecmp (fieldName, "IMAGEID"))  ESCAPE (MEAS_IMAGEID,        MAG_NONE);
     149  if (!strcasecmp (fieldName, "stargal"))  ESCAPE (MEAS_IMAGEID,        MAG_NONE);
     150  if (!strcasecmp (fieldName, "psfqf"))    ESCAPE (MEAS_IMAGEID,        MAG_NONE);
     151  if (!strcasecmp (fieldName, "sky"))      ESCAPE (MEAS_IMAGEID,        MAG_NONE);
     152  if (!strcasecmp (fieldName, "sky_err"))  ESCAPE (MEAS_IMAGEID,        MAG_NONE);
    120153
    121154  // for words that don't parse, try a photcode
     
    125158  if (code == NULL) return (FALSE);
    126159
    127   if (mode == MAG_ERR) {
    128     field->ID = MEAS_dMAG;
    129   } else {
    130     field->ID = MEAS_MAG;
    131   }   
    132  
     160  field->ID = MEAS_MAG;
    133161  field->magMode = mode;
    134162  field->photcode = code;
     
    154182  if (!strcasecmp (fieldName, "PAR"))   ESCAPE (AVE_PAR,       MAG_NONE);
    155183  if (!strcasecmp (fieldName, "dPAR"))  ESCAPE (AVE_PAR_ERR,   MAG_NONE);
     184  if (!strcasecmp (fieldName, "Xp"))    ESCAPE (AVE_Xp,        MAG_NONE);
    156185  if (!strcasecmp (fieldName, "NMEAS")) ESCAPE (AVE_NMEAS,     MAG_NONE);
    157186  if (!strcasecmp (fieldName, "NMISS")) ESCAPE (AVE_NMISS,     MAG_NONE);
    158   if (!strcasecmp (fieldName, "Xp"))    ESCAPE (AVE_Xp,        MAG_NONE);
    159   if (!strcasecmp (fieldName, "Xm"))    ESCAPE (AVE_Xm,        MAG_CHISQ);
    160187  if (!strcasecmp (fieldName, "FLAG"))  ESCAPE (AVE_FLAG,      MAG_NONE);
    161188  if (!strcasecmp (fieldName, "TYPE"))  ESCAPE (AVE_TYPE,      MAG_NONE);
    162   if (!strcasecmp (fieldName, "NPHOT")) ESCAPE (AVE_NPHOT,     MAG_NONE);
    163   if (!strcasecmp (fieldName, "NCODE")) ESCAPE (AVE_NCODE,     MAG_NONE);
    164   if (!strcasecmp (fieldName, "NCRIT")) ESCAPE (AVE_NCRIT,     MAG_NONE);
     189  if (!strcasecmp (fieldName, "OBJID")) ESCAPE (AVE_OBJID,     MAG_NONE);
    165190
    166191  // for words that don't parse, try a photcode
     
    175200  }
    176201
    177   // need to distinguish phot, sys errors and scatter
    178   if (mode == MAG_ERR) {
    179     field->ID = AVE_dMAG;
    180   } else {
    181     field->ID = AVE_MAG;
    182   }   
    183  
     202  field->ID = AVE_MAG;
    184203  field->magMode = mode;
    185204  field->photcode = code;
  • trunk/Ohana/src/opihi/dvo/ddmags.c

    r12332 r14401  
    33int ddmags (int argc, char **argv) {
    44 
     5  gprint (GP_ERR, "this function is deprecated\n");
     6  return (FALSE);
     7
     8}
     9
     10# if (0)
    511  char *RegionName, *RegionList;
    612  double *M1, *M2;
     
    113119    dvo_catalog_free (&catalog);
    114120  }
    115   SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
     121  SkyListFree (skylist);
    116122  xvec[0].Nelements = yvec[0].Nelements = Npts;
    117123  return (TRUE);
     
    121127
    122128escape:
    123   SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
     129  SkyListFree (skylist);
    124130  dvo_catalog_free (&catalog);
    125131  if (RegionName != NULL) free (RegionName);
     
    128134}
    129135
     136# endif
  • trunk/Ohana/src/opihi/dvo/dmagaves.c

    r12332 r14401  
    33int dmagaves (int argc, char **argv) {
    44 
     5  gprint (GP_ERR, "this function is deprecated\n");
     6  return (FALSE);
     7
     8}
     9
     10# if (0)
    511  char *RegionName, *RegionList;
    612  double *M1, M2;
     
    8995    dvo_catalog_free (&catalog);
    9096  }
    91   SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
     97  SkyListFree (skylist);
    9298  xvec[0].Nelements = yvec[0].Nelements = Npts;
    9399  return (TRUE);
     
    98104
    99105escape:
    100   SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
     106  SkyListFree (skylist);
    101107  dvo_catalog_free (&catalog);
    102108  if (RegionName != NULL) free (RegionName);
     
    104110  return (FALSE);
    105111}
     112
     113# endif
  • trunk/Ohana/src/opihi/dvo/dmagmeas.c

    r14286 r14401  
    33int dmagmeas (int argc, char **argv) {
    44 
     5  gprint (GP_ERR, "this function is deprecated\n");
     6  return (FALSE);
     7
     8}
     9
     10# if (0)
    511  char *RegionName, *RegionList;
    612  double *M1, *M3;
     
    110116  }
    111117  FreeImageSelection ();
    112   SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
     118  SkyListFree (skylist);
    113119  xvec[0].Nelements = yvec[0].Nelements = Npts;
    114120  return (TRUE);
     
    120126escape:
    121127  FreeImageSelection ();
    122   SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
     128  SkyListFree (skylist);
    123129  dvo_catalog_free (&catalog);
    124130  if (RegionName != NULL) free (RegionName);
     
    127133}
    128134
     135# endif
  • trunk/Ohana/src/opihi/dvo/dmags.c

    r12332 r14401  
    33int dmags (int argc, char **argv) {
    44 
     5  gprint (GP_ERR, "this function is deprecated\n");
     6  return (FALSE);
     7
     8}
     9
     10# if (0)
    511  char *RegionName, *RegionList;
    612  double *M1, *M3;
     
    109115
    110116  /* need to free SkyList / or free all regions as well */
    111   SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
     117  SkyListFree (skylist);
    112118  xvec[0].Nelements = yvec[0].Nelements = Npts;
    113119  return (TRUE);
     
    122128
    123129escape:
    124   SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
     130  SkyListFree (skylist);
    125131  dvo_catalog_free (&catalog);
    126132  if (RegionName != NULL) free (RegionName);
     
    128134  return (FALSE);
    129135}
     136# endif
  • trunk/Ohana/src/opihi/dvo/dvo.c.in

    r13479 r14401  
    1818  InitDVO ();
    1919
    20   if (!SetCATDIR (NULL, FALSE)) {
    21     gprint (GP_ERR, "CATDIR is not defined\n");
    22   }
     20  // XXX don't open the catdir until needed
     21  // if (!SetCATDIR (NULL, FALSE)) {
     22  //  gprint (GP_ERR, "CATDIR is not defined\n");
     23  // }
    2324
    2425  rl_readline_name = opihi_name;
  • trunk/Ohana/src/opihi/dvo/fitcolors.c

    r13479 r14401  
    1414  int Nsecfilt, status;
    1515  void *oldsignal;
    16   char *RegionName, *RegionList;
    1716  char *cmd, *outcmd, *camera;
    1817  char name[64], filename[64], plotname[64], label[64];
     
    2726  PhotCode **codelist, *tcode, *code[4];
    2827  SkyList *skylist;
     28  SkyRegionSelection *selection;
    2929  Vector *xvec, *yvec;
    3030  Buffer *buf;
     
    3333  catalog  = NULL;
    3434  skylist  = NULL;
     35  selection = NULL;
    3536  codelist = NULL;
    3637  xvec = yvec = NULL;
     
    4647
    4748  /* interpret command-line options */
    48   if (!SetRegionSelection (&argc, argv, &RegionName, &RegionList)) goto escape;
     49  if ((selection = SetRegionSelection (&argc, argv)) == NULL) goto escape;
    4950  if (!SetPhotSelections (&argc, argv, 4)) goto usage;
    5051
     
    152153
    153154  /* load region corresponding to selection above */
    154   if ((skylist = SelectRegions (RegionName, RegionList)) == NULL) goto escape;
     155  if ((skylist = SelectRegions (selection)) == NULL) goto escape;
    155156
    156157  /* loop over regions, extract data for each region */
     
    345346  }
    346347  if (skylist != NULL) free_catalog (catalog, skylist[0].Nregions);
    347   if (skylist != NULL) SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
    348   if (RegionName != NULL) free (RegionName);
    349   if (RegionList != NULL) free (RegionList);
     348  SkyListFree (skylist);
     349  FreeSkyRegionSelection (selection);
    350350  if (codelist != NULL) free (codelist);
    351351  if (colorFit != NULL) free (colorFit);
     
    368368escape:
    369369  if (skylist != NULL) free_catalog (catalog, skylist[0].Nregions);
    370   if (skylist != NULL) SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
    371   if (RegionName != NULL) free (RegionName);
    372   if (RegionList != NULL) free (RegionList);
     370  SkyListFree (skylist);
     371  FreeSkyRegionSelection (selection);
    373372  if (codelist != NULL) free (codelist);
    374373  if (colorFit != NULL) free (colorFit);
  • trunk/Ohana/src/opihi/dvo/fitsed.c

    r13479 r14401  
    2727  int Nsecfilt, status;
    2828  void *oldsignal;
    29   char *RegionName, *RegionList;
    3029  char name[64], line[1024], key[20];
    3130  float *fitmags, *fiterrs, *wavecode, *vegaToAB;
     
    4342  Catalog catalog, outcat;
    4443  SkyList *skylist;
     44  SkyRegionSelection *selection;
     45
    4546  SEDtableRow *SEDtableRaw, **SEDtable;
    4647  SEDtableRow sourceValue, sourceError;
     
    4950  /* defaults */
    5051  skylist  = NULL;
     52  selection = NULL;
     53
    5154  catalog.average = NULL;
    5255  catalog.measure = NULL;
     
    6366  wavecode = NULL;
    6467  hashcode = NULL;
    65   RegionName = NULL;
    66   RegionList = NULL;
    6768  magSection.name = NULL;
    6869  resSection.name = NULL;
     
    8182
    8283  /* interpret command-line options */
    83   if (!SetRegionSelection (&argc, argv, &RegionName, &RegionList)) goto escape;
     84  if ((selection = SetRegionSelection (&argc, argv)) == NULL) goto escape;
    8485  if (!SetPhotSelections (&argc, argv, 4)) goto usage;
    8586
     
    179180
    180181  /* load region corresponding to selection above */
    181   if ((skylist = SelectRegions (RegionName, RegionList)) == NULL) goto escape;
     182  if ((skylist = SelectRegions (selection)) == NULL) goto escape;
    182183
    183184  /* loop over regions, extract data for each region */
     
    361362
    362363finish:
    363   if (skylist != NULL) SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
    364   if (RegionName != NULL) free (RegionName);
    365   if (RegionList != NULL) free (RegionList);
     364  SkyListFree (skylist);
     365  FreeSkyRegionSelection (selection);
    366366  if (wavecode != NULL) free (wavecode);
    367367  if (hashcode != NULL) free (hashcode);
  • trunk/Ohana/src/opihi/dvo/gcat.c

    r7917 r14401  
    3535
    3636  return (TRUE);
    37   SkyListFree (skylist, FALSE);
     37  SkyListFree (skylist);
    3838}
  • trunk/Ohana/src/opihi/dvo/gimages.c

    r12753 r14401  
    1010  char name[64], *date;
    1111  int typehash;
     12  SkyRegionSelection *selection;
    1213
    1314  PhotCode *code;
     
    1718
    1819  GetTimeFormat (&TimeReference, &TimeFormat);
     20
     21  // parse skyregion options
     22  if ((selection = SetRegionSelection (&argc, argv)) == NULL) {
     23    gprint (GP_ERR, "invalid sky region selection\n");
     24    return FALSE;
     25  }
    1926
    2027  TimeSelect = FALSE;
     
    7481
    7582  if ((image = LoadImages (&Nimage)) == NULL) return (FALSE);
    76   image_subset (image, Nimage, &subset, &Nsubset, (Graphdata *) NULL, FALSE, tzero, trange, TimeSelect);
     83  image_subset (image, Nimage, &subset, &Nsubset, selection, tzero, trange, TimeSelect);
    7784  BuildChipMatch (image, Nimage);
    7885
  • trunk/Ohana/src/opihi/dvo/imdata.c

    r12332 r14401  
    1414  SkyList *skylist, *skyset;
    1515  Vector *vec;
     16  SkyRegionSelection *selection;
     17
     18  // parse skyregion options
     19  if ((selection = SetRegionSelection (&argc, argv)) == NULL) {
     20    gprint (GP_ERR, "invalid sky region selection\n");
     21    return FALSE;
     22  }
    1623
    1724  start = stop = 0;
     
    7885
    7986  if ((image = LoadImages (&Nimage)) == NULL) return (FALSE);
    80   image_subset (image, Nimage, &subset, &Nsubset, (Graphdata *) NULL, FALSE, tzero, trange, TimeSelect);
     87  image_subset (image, Nimage, &subset, &Nsubset, selection, tzero, trange, TimeSelect);
    8188  BuildChipMatch (image, Nimage);
    8289  GetTimeFormat (&TimeReference, &TimeFormat);
     
    8996  ALLOCATE (skylist, SkyList, 1);
    9097  ALLOCATE (skylist[0].regions, SkyRegion *, NREGIONS);
     98  skylist[0].ownElements = FALSE;
    9199
    92100  /* for each image of interest, find the appropriate region files */
     
    107115      CHECK_REALLOCATE (skylist[0].regions, SkyRegion *, NREGIONS, Nregions, 10);
    108116    }
    109     SkyListFree (skyset, FALSE);
     117    SkyListFree (skyset);
    110118  }     
    111119  free (subset);
  • trunk/Ohana/src/opihi/dvo/imextract.c

    r13479 r14401  
    99  double x, y, ra, dec, t, trange;
    1010  time_t tzero, TimeReference;
     11  SkyRegionSelection *selection;
    1112
    1213  PhotCode *code;
    13   Graphdata graphsky;
    1414  Image *image;
    1515  Vector *vec;
    1616
    17   if (!GetGraphData (&graphsky, NULL, NULL)) return (FALSE);
    1817  if (!InitPhotcodes ()) return (FALSE);
     18
     19  // parse skyregion options
     20  if ((selection = SetRegionSelection (&argc, argv)) == NULL) {
     21    gprint (GP_ERR, "invalid sky region selection\n");
     22    return FALSE;
     23  }
    1924
    2025  /* check for time-based selection */
     
    3338    remove_argument (N, &argc, argv);
    3439    TimeSelect = TRUE;
    35   }
    36 
    37   /* check for region-based selection */
    38   RegionSelect = FALSE;
    39   if ((N = get_argument (argc, argv, "-region"))) {
    40     remove_argument (N, &argc, argv);
    41     RegionSelect = TRUE;
    4240  }
    4341
     
    104102
    105103  if ((image = LoadImages (&Nimage)) == NULL) return (FALSE);
    106   image_subset (image, Nimage, &subset, &Nsubset, &graphsky, RegionSelect, tzero, trange, TimeSelect);
     104  image_subset (image, Nimage, &subset, &Nsubset, selection, tzero, trange, TimeSelect);
    107105  if ((mode == RA) || (mode == DEC)) BuildChipMatch (image, Nimage);
    108106
  • trunk/Ohana/src/opihi/dvo/imlist.c

    r13479 r14401  
    99  char *name;
    1010  Image *image;
    11   Graphdata graphmode;
    1211  PhotCode *PhotcodeValue;
     12  SkyRegionSelection *selection;
    1313
    14   if (!GetGraphData (&graphmode, NULL, NULL)) return (FALSE);
     14  // parse skyregion options
     15  if ((selection = SetRegionSelection (&argc, argv)) == NULL) {
     16    gprint (GP_ERR, "invalid sky region selection\n");
     17    return FALSE;
     18  }
    1519
    1620  TimeSelect = FALSE;
     
    6569 
    6670  if ((image = LoadImages (&Nimage)) == NULL) return (FALSE);
    67   image_subset (image, Nimage, &subset, &Nsubset, &graphmode, RegionSelect, tzero, trange, TimeSelect);
     71  image_subset (image, Nimage, &subset, &Nsubset, selection, tzero, trange, TimeSelect);
    6872  BuildChipMatch (image, Nimage);
    6973
  • trunk/Ohana/src/opihi/dvo/imphot.c

    r12332 r14401  
    1212  Image *image;
    1313  Buffer *buf;
     14  SkyRegionSelection *selection;
    1415
    1516  GreyScale = FALSE;
     
    1920    remove_argument (N, &argc, argv);
    2021    GreyScale = TRUE;
     22  }
     23
     24  // parse skyregion options
     25  if ((selection = SetRegionSelection (&argc, argv)) == NULL) {
     26    gprint (GP_ERR, "invalid sky region selection\n");
     27    return FALSE;
    2128  }
    2229
     
    4451 
    4552  if ((image = LoadImages (&Nimage)) == NULL) return (FALSE);
    46   image_subset (image, Nimage, &subset, &Nsubset, (Graphdata *) NULL, FALSE, tzero, trange, TRUE);
     53  image_subset (image, Nimage, &subset, &Nsubset, selection, tzero, trange, TRUE);
    4754
    4855  if ((Nsubset > 1) && GreyScale) {
  • trunk/Ohana/src/opihi/dvo/init.c

    r10793 r14401  
    4848int skycat          PROTO((int, char **));
    4949int skycoverage     PROTO((int, char **));
     50int skyregion       PROTO((int, char **));
    5051int simage          PROTO((int, char **));
    5152int subpix          PROTO((int, char **));
    5253int version         PROTO((int, char **));
    53 
    54 /* temporarily exclude
    55 int addxtra         PROTO((int, char **));
    56   {"addxtra",     addxtra,      "add extra data to object"},
    57   {"getxtra",     getxtra,      "get extra data from object"},
    58   {"catalog",     catlog,       "plot catalog stars"},
    59 */
    6054
    6155static Command cmds[] = { 
     
    10498  {"skycat",      skycat,       "show sky catalog boundaries"},
    10599  {"skycoverage", skycoverage,  "measure image union on sky"},
     100  {"skyregion",   skyregion,    "set sky region for db queries"},
    106101  {"simage",      simage,       "plot stars in an image"},
    107102  {"subpix",      subpix,       "get subpixel positions"},
    108103  {"version",     version,      "show version information"},
     104//{"addxtra",     addxtra,      "add extra data to object"},
     105//{"getxtra",     getxtra,      "get extra data from object"},
    109106};
    110107
  • trunk/Ohana/src/opihi/dvo/lcat.c

    r13479 r14401  
    4141  }
    4242
    43   SkyListFree (skylist, FALSE);
     43  SkyListFree (skylist);
    4444  return (TRUE);
    4545}
  • trunk/Ohana/src/opihi/dvo/lcurve.c

    r13479 r14401  
    188188  dvo_catalog_free (&catalog);
    189189
    190   SkyListFree (skylist, FALSE);
     190  SkyListFree (skylist);
    191191  return (TRUE);
    192192}
  • trunk/Ohana/src/opihi/dvo/lightcurve.c

    r12332 r14401  
    141141  free (N1);
    142142  dvo_catalog_free (&catalog);
    143   SkyListFree (skylist, FALSE);
     143  SkyListFree (skylist);
    144144  return (TRUE);
    145145}
  • trunk/Ohana/src/opihi/dvo/mextract.c

    r14379 r14401  
    55  int i, j, k, m, n, N, N1, Npts, NPTS, last, Nfields, Nreturn, Ncstack, Nstack;
    66  int Nsecfilt, VERBOSE, loadImages, mosaicMode;
    7   char *RegionName, *RegionList, *p;
     7  char *p;
    88  double *M1;
    99  char **cstack, name[1024];
     
    1717  dbField *fields;
    1818  dbStack *stack;
     19  SkyRegionSelection *selection;
    1920
    2021  /* defaults */
    2122  skylist = NULL;
    22   RegionName = NULL;
    23   RegionList = NULL;
    2423  code = NULL;
    2524  fields = NULL;
     
    4140  dbExtractMeasuresInit();
    4241
    43   // remove skyregion options
    44   // XXX this needs to explicitly handle -qregion and -skyregion
    45   if (!SetRegionSelection (&argc, argv, &RegionName, &RegionList)) goto escape;
     42  // parse skyregion options
     43  if ((selection = SetRegionSelection (&argc, argv)) == NULL) goto escape;
    4644
    4745  // command-line is of the form: avextract field,field, field [where (field op value)...]
     
    5048  fields = dbCmdlineFields (argc, argv, DVO_TABLE_MEASURE, &last, &Nfields);
    5149  if (fields == NULL) return (FALSE);
     50
     51  // XXX add the skyregion limits as if it were a where statement
    5252
    5353  // parse the remainder of the line as a boolean math expression
     
    6161  }
    6262
     63  // add the skyregion limits to the where statement (or create)
     64  dbAstroRegionLimits (&stack, &Nstack, selection, DVO_TABLE_MEASURE);
     65
     66  // parse stack elements into fields and scalars as needed
    6367  Nreturn = Nfields;
    6468  dbCheckStack (stack, Nstack, DVO_TABLE_MEASURE, &fields, &Nfields);
     
    6670
    6771  /* load region corresponding to selection above */
    68   if ((skylist = SelectRegions (RegionName, RegionList)) == NULL) goto escape;
    69 
    70   // XXX is this still needed?
     72  if ((skylist = SelectRegions (selection)) == NULL) goto escape;
     73
     74  // load image data if needed (for fields listed below)
    7175  loadImages = FALSE;
    7276  mosaicMode = FALSE;
     
    7781    if (fields[i].ID == MEAS_YMOSAIC) loadImages = mosaicMode = TRUE;
    7882  }
    79   if (loadImages && !SetImageSelection (mosaicMode, ((RegionName == NULL) && (RegionList == NULL)))) goto escape;
     83  if (loadImages && !SetImageSelection (mosaicMode, selection)) goto escape;
    8084
    8185  /* create storage vector */
     
    148152    REALLOCATE (vec[n][0].elements, float, MAX(1,Npts));
    149153  }
     154
    150155  dbFreeFields (fields, Nfields);
    151156  dbFreeStack (stack, Nstack);
    152 
    153157  FreeImageSelection ();
    154   SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
    155 
    156   if (RegionName != NULL) free (RegionName);
    157   if (RegionList != NULL) free (RegionList);
     158  SkyListFree (skylist);
     159  FreeSkyRegionSelection (selection);
    158160  return (TRUE);
    159161
     
    167169  dbFreeStack (stack, Nstack);
    168170  FreeImageSelection ();
    169   SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
     171  SkyListFree (skylist);
     172  FreeSkyRegionSelection (selection);
    170173  dvo_catalog_free (&catalog);
    171   if (RegionName != NULL) free (RegionName);
    172   if (RegionList != NULL) free (RegionList);
     174  return (FALSE);
     175
     176 help:
     177  gprint (GP_ERR, "USAGE: mextract field[,field,field...] where (expression)\n");
     178
     179  if ((argc > N + 1) && !strcasecmp (argv[N+1], "fields")) {
     180    gprint (GP_ERR, " USAGE: avextract field[,field,field...] where (expression)\n");
     181    gprint (GP_ERR, "  RA : right ascension (J2000) for detection\n");
     182    gprint (GP_ERR, "  DEC : declination for detection\n");
     183    gprint (GP_ERR, "  RA:ave : average right ascension (J2000) for object\n");
     184    gprint (GP_ERR, "  DEC:ave : average declination for object\n");
     185    gprint (GP_ERR, "  RA:err : ra scatter \n");
     186    gprint (GP_ERR, "  DEC:err : dec scatter\n");
     187    gprint (GP_ERR, "  uRA : proper motion in ra\n");
     188    gprint (GP_ERR, "  uDEC : proper motion in dec\n");
     189    gprint (GP_ERR, "  duRA : proper motion error in ra\n");
     190    gprint (GP_ERR, "  duDEC : proper motion error in dec\n");
     191    gprint (GP_ERR, "  PAR : parallax\n");
     192    gprint (GP_ERR, "  dPAR : parallax error \n");
     193    gprint (GP_ERR, "  nmeas : number of measurements\n");
     194    gprint (GP_ERR, "  nmiss : number of non-detections\n");
     195    gprint (GP_ERR, "  xp : positional chi-square\n");
     196    gprint (GP_ERR, "  objflag : object flags\n");
     197    gprint (GP_ERR, "  photcode:ave : average magnitude for photcode (or equivalent)\n");
     198    gprint (GP_ERR, "  photcode:ref : reference magnitude system for photcode (or equivalent)\n");
     199    gprint (GP_ERR, "  photcode:inst : instrumental magnitude for photcode\n");
     200    gprint (GP_ERR, "  photcode:cat :  catalog magnitude for photcode\n");
     201    gprint (GP_ERR, "  photcode:sys :  system magnitude for photcode\n");
     202    gprint (GP_ERR, "  photcode:rel :  relative magnitude for photcode\n");
     203    gprint (GP_ERR, "  photcode:cal :  calibrated magnitude for photcode \n");
     204    gprint (GP_ERR, "  photcode:err : magnitude error for photcode\n");
     205    gprint (GP_ERR, "  photcode:chisq : chi-square of magnitude fit\n");
     206    gprint (GP_ERR, "  photcode:ncode : number of measurements in photcode\n");
     207    gprint (GP_ERR, "  photcode:nphot : number of measurements used for average magnitude\n");
     208    gprint (GP_ERR, "  airmass : airmass of detection\n");
     209    gprint (GP_ERR, "  exptime : exposure time\n");
     210    gprint (GP_ERR, "  photcode : photcode \n");
     211    gprint (GP_ERR, "  time : time of exposure\n");
     212    gprint (GP_ERR, "  dR : ra offset\n");
     213    gprint (GP_ERR, "  dD : dec offset\n");
     214    gprint (GP_ERR, "  fwhm : fwhm (average)\n");
     215    gprint (GP_ERR, "  fwhm_maj : fwhm (major axis)\n");
     216    gprint (GP_ERR, "  fwhm_min : fwhm (minor axis)\n");
     217    gprint (GP_ERR, "  theta : position angle\n");
     218    gprint (GP_ERR, "  flags : detection flags\n");
     219    gprint (GP_ERR, "  xccd : ccd x position\n");
     220    gprint (GP_ERR, "  yccd : ccd y position\n");
     221    gprint (GP_ERR, "  xmosaic : mosaic x position\n");
     222    gprint (GP_ERR, "  ymosaic : mosaic y position\n");
     223    gprint (GP_ERR, "  xchip : chip x position\n");
     224    gprint (GP_ERR, "  ychip : chip y position\n");
     225    gprint (GP_ERR, "  xfpa : fpa x position\n");
     226    gprint (GP_ERR, "  yfpa : fpa y position\n");
     227    return (FALSE);
     228  }
     229  gprint (GP_ERR, " mextract --help fields : for a complete listing of allowed fields\n");
    173230  return (FALSE);
    174231}
  • trunk/Ohana/src/opihi/dvo/photometry.c

    r13479 r14401  
    174174}
    175175
    176 // XXX moved to dbFields
    177 # if (0)
    178 int GetMagMode (char *string) {
    179 
    180   int mode;
    181 
    182   mode = MAG_NONE;
    183   if (!strcasecmp (string, "inst"))   mode = MAG_INST;
    184   if (!strcasecmp (string, "cat"))    mode = MAG_CAT;
    185   if (!strcasecmp (string, "sys"))    mode = MAG_SYS;
    186   if (!strcasecmp (string, "rel"))    mode = MAG_REL;
    187   if (!strcasecmp (string, "cal"))    mode = MAG_CAL;
    188   if (!strcasecmp (string, "ave"))    mode = MAG_AVE;
    189   if (!strcasecmp (string, "ref"))    mode = MAG_REF;
    190   return (mode);
    191 }
    192 # endif
    193 
    194176int GetMeasureParam (char *parname) {
    195177
     
    200182  if (!strcasecmp (parname, "dec"))      param = MEAS_DEC;
    201183  if (!strcasecmp (parname, "mag"))      param = MEAS_MAG;
    202   if (!strcasecmp (parname, "dmag"))     param = MEAS_dMAG;
     184  // if (!strcasecmp (parname, "dmag"))          param = MEAS_dMAG;
    203185  if (!strcasecmp (parname, "airmass"))  param = MEAS_AIRMASS;
    204186  if (!strcasecmp (parname, "exptime"))  param = MEAS_EXPTIME;
    205187  if (!strcasecmp (parname, "photcode")) param = MEAS_PHOTCODE;
    206188  if (!strcasecmp (parname, "time"))     param = MEAS_TIME;
    207   if (!strcasecmp (parname, "dR"))       param = MEAS_dR;
    208   if (!strcasecmp (parname, "dD"))       param = MEAS_dD;
     189  if (!strcasecmp (parname, "dR"))       param = MEAS_RA_OFFSET;
     190  if (!strcasecmp (parname, "dD"))       param = MEAS_DEC_OFFSET;
    209191  if (!strcasecmp (parname, "fwhm"))     param = MEAS_FWHM;
    210   if (!strcasecmp (parname, "dophot"))   param = MEAS_DOPHOT;
     192  // if (!strcasecmp (parname, "dophot"))        param = MEAS_DOPHOT;
    211193  if (!strcasecmp (parname, "FLAGS"))    param = MEAS_FLAGS;
    212194  if (!strcasecmp (parname, "XCCD"))     param = MEAS_XCCD;
     
    259241  if (!strcasecmp (parname, "Nphot")) param = AVE_NPHOT;
    260242  if (!strcasecmp (parname, "Ncode")) param = AVE_NCODE;
    261   if (!strcasecmp (parname, "Ncrit")) param = AVE_NCRIT;
     243  // if (!strcasecmp (parname, "Ncrit")) param = AVE_NCRIT;
    262244  return (param);
    263245}
     
    710692      }
    711693      break;
     694# if (0)
    712695    case AVE_NCRIT:
    713696      value = 0;
     
    721704      }
    722705      break;
     706# endif
    723707  }
    724708  return (value);
     
    11551139      value = average[0].D - measure[0].dD / 3600.0;
    11561140      break;
     1141# if (0)
    11571142    case MEAS_dMAG: /* OK */
    11581143      value = measure[0].dM;
    11591144      break;
     1145    case MEAS_DOPHOT: /* OK */
     1146      value = measure[0].dophot;
     1147      break;
     1148# endif
    11601149    case MEAS_AIRMASS: /* OK */
    11611150      value = measure[0].airmass;
     
    11701159      value = TimeValue (measure[0].t, TimeReference, TimeFormat);
    11711160      break;
    1172     case MEAS_dR: /* OK */
     1161    case MEAS_RA_OFFSET: /* OK */
    11731162      value = measure[0].dR;
    11741163      break;
    1175     case MEAS_dD: /* OK */
     1164    case MEAS_DEC_OFFSET: /* OK */
    11761165      value = measure[0].dD;
    11771166      break;
    11781167    case MEAS_FWHM: /* OK */
    11791168      value = 0.01*measure[0].FWx;
    1180       break;
    1181     case MEAS_DOPHOT: /* OK */
    1182       value = measure[0].dophot;
    11831169      break;
    11841170    case MEAS_FLAGS: /* ? */
  • trunk/Ohana/src/opihi/dvo/region_list.c

    r13479 r14401  
    6161}
    6262
    63 int SetRegionSelection (int *argc, char **argv, char **RegionName, char **RegionList) {
     63void FreeSkyRegionSelection (SkyRegionSelection *selection) {
     64
     65  if (selection == NULL) return;
     66  if (selection[0].name != NULL) free (selection[0].name);
     67  if (selection[0].list != NULL) free (selection[0].list);
     68  free (selection);
     69}
     70
     71SkyRegionSelection *SetRegionSelection (int *argc, char **argv) {
    6472 
    6573  int N;
    66 
    67   /* check for Region selection */
    68   *RegionName = NULL;
     74  SkyRegionSelection *selection;
     75
     76  ALLOCATE (selection, SkyRegionSelection, 1);
     77  selection[0].name = NULL;
     78  selection[0].list = NULL;
     79  selection[0].useDisplay = FALSE;
     80  selection[0].useSkyregion = FALSE;
     81
     82  /* check for Region selection (named dvo catalog file) */
    6983  if ((N = get_argument (*argc, argv, "-cpt"))) {
    7084    remove_argument (N, argc, argv);
    71     *RegionName = strcreate (argv[N]);
    72     remove_argument (N, argc, argv);
    73     return (TRUE);
    74   }   
    75   /* check for Region list */
    76   *RegionList = NULL;
     85    selection[0].name = strcreate (argv[N]);
     86    remove_argument (N, argc, argv);
     87    return selection;
     88  }   
     89
     90  /* check for Region list (file containing dvo catalog file list)*/
    7791  if ((N = get_argument (*argc, argv, "-cptlist"))) {
    7892    remove_argument (N, argc, argv);
    79     *RegionList = strcreate (argv[N]);
    80     remove_argument (N, argc, argv);
    81     return (TRUE);
     93    selection[0].list = strcreate (argv[N]);
     94    remove_argument (N, argc, argv);
     95    return selection;
    8296  }
    83   if ((*RegionName == NULL) && (*RegionList == NULL)) return (TRUE);
    84 
    85   gprint (GP_ERR, "-cpt and -cptlist are incompatible\n");
    86   free (*RegionName);
    87   free (*RegionList);
    88   *RegionName = NULL;
    89   *RegionList = NULL;
    90   return (FALSE);
     97
     98  /* check for Region selection from display */
     99  if ((N = get_argument (*argc, argv, "-region"))) {
     100    remove_argument (N, argc, argv);
     101    selection[0].useDisplay = TRUE;
     102    return selection;
     103  }   
     104
     105  /* check for Region selection from display */
     106  if ((N = get_argument (*argc, argv, "-skyregion"))) {
     107    if (N + 5 >= *argc) {
     108      gprint (GP_ERR, "USAGE: -skyregion (RA) (RA) (DEC) (DEC)\n");
     109      FreeSkyRegionSelection (selection);
     110      return NULL;
     111    }
     112    remove_argument (N, argc, argv);
     113    selection[0].useSkyregion = TRUE;
     114    set_skyregion (atof(argv[N]), atof(argv[N+1]), atof(argv[N+2]), atof(argv[N+3]));
     115    remove_argument (N, argc, argv);
     116    remove_argument (N, argc, argv);
     117    remove_argument (N, argc, argv);
     118    remove_argument (N, argc, argv);
     119    return selection;
     120  }   
     121
     122  /* default to pre-defined sky region */
     123  selection[0].useSkyregion = TRUE;
     124  return selection;
    91125}
    92126
    93127/* given possible options (by name, by list, by graph region), select SkyRegions */
    94 SkyList *SelectRegions (char *RegionName, char *RegionList) {
    95 
    96   double Radius;
    97   Graphdata graphsky;
     128SkyList *SelectRegions (SkyRegionSelection *selection) {
     129
    98130  SkyList *skylist;
    99   char filename[256];
    100131
    101132  /* determine region-file names */
    102   if (RegionName != NULL) {
     133  if (selection->name != NULL) {
     134    char filename[256];
     135
    103136    ALLOCATE (skylist, SkyList, 1);
    104137    ALLOCATE (skylist[0].regions, SkyRegion *, 1);
    105138    ALLOCATE (skylist[0].regions[0], SkyRegion, 1);
    106139    ALLOCATE (skylist[0].filename, char *, 1);
     140    skylist[0].ownElements = TRUE; // free these elements when freeing the list
    107141   
    108     strcpy (skylist[0].regions[0][0].name, RegionName);
    109     sprintf (filename, "%s/%s.cpt", CATDIR, RegionName);
     142    strcpy (skylist[0].regions[0][0].name, selection->name);
     143    sprintf (filename, "%s/%s.cpt", CATDIR, selection->name);
    110144    skylist[0].filename[0] = strcreate (filename);
    111     free (RegionName);
    112     RegionName = NULL;
    113145    return (skylist);
    114146  }
    115   if (RegionList != NULL) {
    116     skylist = SkyListLoadFile (RegionList);
    117     free (RegionList);
    118     RegionList = NULL;
    119     return (skylist);
    120   }
    121 
    122   if (!GetGraphData (&graphsky, NULL, NULL)) {
    123     gprint (GP_ERR, "region display not available\n");
    124     return (NULL);
    125   }
    126 
    127   Radius = MAX (fabs(graphsky.xmax), fabs(graphsky.ymax));
    128   skylist = SkyListByRadius (sky, -1, graphsky.coords.crval1, graphsky.coords.crval2, Radius);
    129 
    130   return (skylist);
     147
     148  if (selection->list != NULL) {
     149    skylist = SkyListLoadFile (selection->list);
     150    return (skylist);
     151  }
     152
     153  if (selection->useDisplay) {
     154    double Radius;
     155    Graphdata graphsky;
     156
     157    if (!GetGraphData (&graphsky, NULL, NULL)) {
     158      gprint (GP_ERR, "region display not available\n");
     159      return (NULL);
     160    }
     161
     162    Radius = MAX (fabs(graphsky.xmax), fabs(graphsky.ymax));
     163    skylist = SkyListByRadius (sky, -1, graphsky.coords.crval1, graphsky.coords.crval2, Radius);
     164    return (skylist);
     165  }
     166
     167  if (selection->useSkyregion) {
     168    double Rmin, Rmax, Dmin, Dmax;
     169
     170    get_skyregion (&Rmin, &Rmax, &Dmin, &Dmax);
     171    skylist = SkyListByBounds (sky, -1, Rmin, Rmax, Dmin, Dmax);
     172    return (skylist);
     173  }   
     174
     175  return NULL;
    131176}
    132177
     
    152197  ALLOCATE (skylist[0].regions, SkyRegion *, NREGIONS);
    153198  ALLOCATE (skylist[0].filename, char *, NREGIONS);
     199  skylist[0].ownElements = TRUE; // free these elements when freeing the list
    154200
    155201  while (fscanf (f, "%s", filename) != EOF) {
  • trunk/Ohana/src/opihi/dvo/subpix.c

    r12332 r14401  
    8686    free (index);
    8787    dvo_catalog_free (&catalog);
    88     SkyListFree (skylist, FALSE);
     88    SkyListFree (skylist);
    8989    return (TRUE);
    9090  }
     
    151151  free (image);
    152152  free (index);
    153   SkyListFree (skylist, FALSE);
     153  SkyListFree (skylist);
    154154
    155155  return (TRUE);
  • trunk/Ohana/src/opihi/include/dvoshell.h

    r14379 r14401  
    77
    88/* magnitude types */
    9 enum {MAG_NONE, MAG_INST, MAG_CAT, MAG_SYS, MAG_REL, MAG_CAL, MAG_AVE, MAG_REF, MAG_ERR, MAG_CHISQ};
     9enum {MAG_NONE,
     10      MAG_INST,
     11      MAG_CAT,
     12      MAG_SYS,
     13      MAG_REL,
     14      MAG_CAL,
     15      MAG_AVE,
     16      MAG_REF,
     17      MAG_ERR,
     18      MAG_CHISQ,
     19      MAG_NCODE,
     20      MAG_NPHOT,
     21};
    1022
    1123/* measure fields */
    12 enum {MEAS_ZERO, MEAS_RA, MEAS_DEC, MEAS_MAG, MEAS_dMAG, MEAS_MINST, MEAS_MCAT,
    13       MEAS_MSYS, MEAS_MREL, MEAS_MCAL, MEAS_PHOTCODE, MEAS_TIME, MEAS_dR, MEAS_dD,
    14       MEAS_FWHM, MEAS_DOPHOT, MEAS_XCCD, MEAS_YCCD, MEAS_XMOSAIC, MEAS_YMOSAIC,
    15       MEAS_FLAGS, MEAS_EXPTIME, MEAS_AIRMASS, MEAS_RA_AVE, MEAS_DEC_AVE};
     24enum {MEAS_ZERO,
     25      MEAS_RA,
     26      MEAS_DEC,
     27      MEAS_RA_AVE,
     28      MEAS_DEC_AVE,
     29      MEAS_RA_AVE_ERR,
     30      MEAS_DEC_AVE_ERR,
     31      MEAS_U_RA,
     32      MEAS_U_DEC,
     33      MEAS_U_RA_ERR,
     34      MEAS_U_DEC_ERR,
     35      MEAS_PAR,
     36      MEAS_PAR_ERR,
     37      MEAS_RA_OFFSET,
     38      MEAS_DEC_OFFSET,
     39      MEAS_RA_OFFSET_ERR,
     40      MEAS_DEC_OFFSET_ERR,
     41      MEAS_XP,
     42      MEAS_NMEAS,
     43      MEAS_NMISS,
     44      MEAS_NPHOT,
     45      MEAS_NCODE,
     46      MEAS_OBJFLAGS,
     47      MEAS_MAG,
     48      MEAS_MINST,
     49      MEAS_MCAT,
     50      MEAS_MSYS,
     51      MEAS_MREL,
     52      MEAS_MCAL,
     53      MEAS_EXPTIME,
     54      MEAS_AIRMASS,
     55      MEAS_ALT,
     56      MEAS_AZ,
     57      MEAS_PHOTCODE,
     58      MEAS_TIME,
     59      MEAS_FWHM,
     60      MEAS_FWHM_MAJ,
     61      MEAS_FWHM_MIN,
     62      MEAS_THETA,
     63      MEAS_FLAGS,
     64      MEAS_XCCD,
     65      MEAS_YCCD,
     66      MEAS_XMOSAIC,
     67      MEAS_YMOSAIC,
     68      MEAS_DETID,
     69      MEAS_OBJID,
     70      MEAS_IMAGEID,
     71};
    1672
    1773/* average fields */
    18 enum {AVE_ZERO, AVE_RA, AVE_DEC, AVE_RA_ERR, AVE_DEC_ERR, AVE_U_RA, AVE_U_DEC,
    19       AVE_U_RA_ERR, AVE_U_DEC_ERR, AVE_PAR, AVE_PAR_ERR, AVE_MAG, AVE_REF, AVE_dMAG,
    20       AVE_Xm, AVE_Xp, AVE_NMEAS, AVE_NMISS, AVE_TYPE, AVE_NPHOT, AVE_NCODE, AVE_NCRIT,
    21       AVE_FLAG, AVE_TYPEFRAC};
     74enum {AVE_ZERO,
     75      AVE_RA,
     76      AVE_DEC,
     77      AVE_RA_ERR,
     78      AVE_DEC_ERR,
     79      AVE_U_RA,
     80      AVE_U_DEC,
     81      AVE_U_RA_ERR,
     82      AVE_U_DEC_ERR,
     83      AVE_PAR,
     84      AVE_PAR_ERR,
     85      AVE_Xp,
     86      AVE_NMEAS,
     87      AVE_NMISS,
     88      AVE_NPHOT,
     89      AVE_NCODE,
     90      AVE_MAG,
     91      AVE_dMAG,
     92      AVE_Xm,
     93      AVE_FLAG,
     94      AVE_TYPE,
     95      AVE_TYPEFRAC,
     96      AVE_OBJID
     97};
    2298
    2399enum {DVO_TABLE_AVERAGE, DVO_TABLE_MEASURE};
     100
     101// options for selecting the ra,dec limits of the db selections
     102typedef struct {
     103  char *name;
     104  char *list;
     105  int useDisplay;
     106  int useSkyregion;
     107} SkyRegionSelection;
    24108
    25109// a single db field
     
    91175int           SelectMags            PROTO((int Nphot, int Tphot, int Ns, Average *average, Measure *measure, SecFilt *secfilt, int UL));
    92176
    93 SkyList      *SelectRegions         PROTO((char *RegionName, char *RegionList));
     177SkyList      *SelectRegions         PROTO((SkyRegionSelection *selection));
    94178SkyList      *SkyListLoadFile       PROTO((char *filename));
    95179int           SetCATDIR             PROTO((char *path, int verbose));
     
    97181SkyTable     *GetSkyTable           PROTO(());
    98182SkyList      *SkyListFromFile       PROTO((char *filename));
    99 int           SetRegionSelection    PROTO((int *argc, char **argv, char **RegionName, char **RegionList));
    100 
    101 int           SetImageSelection     PROTO((int mode, int RegionSelect));
     183SkyRegionSelection *SetRegionSelection    PROTO((int *argc, char **argv));
     184
     185int           SetImageSelection     PROTO((int mode, SkyRegionSelection *selection));
    102186int           SetPhotSelections     PROTO((int *argc, char **argv, int Nparams));
    103187int           SetSelectionParam     PROTO((int param));
     
    106190void          compare               PROTO((Catalog *catlog1, Catalog *catlog2, Vector *rvec,  Vector *dvec,  Vector *mvec, Vector *drvec, Vector *ddvec, Vector *dmvec, double radius));
    107191void          cprecess              PROTO((Average *average, int Naverage, double in_epoch, double out_epoch));
    108 void          image_subset          PROTO((Image *image, int Nimage, int **Subset, int *Nsubset, Graphdata *graph, int RegionSelect, unsigned long int tzero, double trange, int TimeSelect));
     192void          image_subset          PROTO((Image *image, int Nimage, int **Subset, int *Nsubset, SkyRegionSelection *selection, unsigned long int tzero, double trange, int TimeSelect));
    109193int           match_image           PROTO((Image *image, int Nimage, unsigned int T, short int S));
    110194int           match_image_subset    PROTO((Image *image, int *subset, int Nsubset, unsigned int T, short int S));
     
    140224void         dbInitField            PROTO((dbField *field));
    141225void         dbFreeFields           PROTO((dbField *fields, int Nfields));
     226int          dbAstroRegionLimits    PROTO((dbStack **stack, int *nstack, SkyRegionSelection *selection, int table));
     227char        *strfloat               PROTO((float value));
    142228
    143229# endif
Note: See TracChangeset for help on using the changeset viewer.