IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 16698


Ignore:
Timestamp:
Feb 27, 2008, 5:16:06 PM (18 years ago)
Author:
eugene
Message:

adding SDSS ingest, -list option, supply useful 2MASS flags, set imageID, objID, detID

Location:
branches/eam_branch_20080223/Ohana/src/addstar
Files:
9 added
20 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branch_20080223/Ohana/src/addstar/Makefile

    r16040 r16698  
    1313
    1414# programs may add their own internal requirements here
    15 FULL_CFLAGS   = $(BASE_CFLAGS)
     15FULL_CFLAGS   = $(BASE_CFLAGS) -Wall -Werror
    1616FULL_CPPFLAGS = $(BASE_CPPFLAGS)
    1717FULL_LDFLAGS  = -lkapa -ldvo -lFITS -lohana $(BASE_LDFLAGS)
     
    5959$(SRC)/grefstars.$(ARCH).o \
    6060$(SRC)/LoadStars.$(ARCH).o \
     61$(SRC)/LoadHeaders.$(ARCH).o \
     62$(SRC)/MatchHeaders.$(ARCH).o \
     63$(SRC)/LoadData.$(ARCH).o \
     64$(SRC)/LoadDataSDSS.$(ARCH).o \
    6165$(SRC)/in_image.$(ARCH).o \
    6266$(SRC)/load_subpix.$(ARCH).o \
     
    6771$(SRC)/ReadStarsFITS.$(ARCH).o \
    6872$(SRC)/ReadStarsTEXT.$(ARCH).o \
     73$(SRC)/ReadStarsSDSS.$(ARCH).o \
    6974$(SRC)/FilterStars.$(ARCH).o \
    7075$(SRC)/ImageOptions.$(ARCH).o \
    7176$(SRC)/GetFileMode.$(ARCH).o \
    7277$(SRC)/ReadImageHeader.$(ARCH).o \
     78$(SRC)/UpdateImageIDs.$(ARCH).o \
    7379$(SRC)/update_coords.$(ARCH).o
    7480
     
    165171$(SRC)/ConfigInit.$(ARCH).o \
    166172$(SRC)/LoadStars.$(ARCH).o \
     173$(SRC)/LoadHeaders.$(ARCH).o \
     174$(SRC)/MatchHeaders.$(ARCH).o \
     175$(SRC)/LoadData.$(ARCH).o \
     176$(SRC)/LoadDataSDSS.$(ARCH).o \
    167177$(SRC)/grefstars.$(ARCH).o \
    168178$(SRC)/load_subpix.$(ARCH).o \
     
    172182$(SRC)/ReadImageHeader.$(ARCH).o \
    173183$(SRC)/ReadStarsTEXT.$(ARCH).o \
     184$(SRC)/ReadStarsSDSS.$(ARCH).o \
     185$(SRC)/UpdateImageIDs.$(ARCH).o \
    174186$(SRC)/FilterStars.$(ARCH).o \
    175187$(SRC)/Shutdown.$(ARCH).o \
     
    189201$(SRC)/load2mass_catalog.$(ARCH).o \
    190202$(SRC)/get2mass_ops.$(ARCH).o \
     203$(SRC)/get2mass_full.$(ARCH).o \
    191204$(SRC)/find_matches_refstars.$(ARCH).o \
    192205$(SRC)/args_load2mass.$(ARCH).o \
  • branches/eam_branch_20080223/Ohana/src/addstar/doc/sdss.txt

    r16657 r16698  
    99* some re-org might be needed for LoadStars
    1010
     11
     12** fields to keep:
     13
     14name          sdss
     15 X            'objc_colc' (or colc)
     16 Y            'objc_rowc' (or rowc)
     17 dX           'objc_colcErr' (or colcErr)
     18 dY           'objc_rowcErr' (or rowcErr)
     19 R            ra  + offset Ra (get cos des right)
     20 D            dec + offset Dec
     21 dR           (calculate from dX * plate scale?)
     22 dD           (calculate from dX * plate scale?)
     23 uR           (from 'propermotion' and 'propermotionangle')
     24 uD           (from 'propermotion' and 'propermotionangle')
     25 duR          ?
     26 duD          ?
     27 P            X
     28 dP           X
     29 M            psfCounts (is already a mag?)
     30 dM           psfCountsErr (is already a mag?)
     31 sky          sky (convert to flux?)
     32 dsky         skyErr (convert to flux?)
     33 fx           ?
     34 fy           ?
     35 df           ?
     36 Mgal         X
     37 Map          X
     38 Mpeak        X
     39 detID        X
     40 found        -1
     41 t            MJD_U + Y*rate
     42 dt           fixed? NY*rate
     43 psfChisq     
     44 crNsigma     
     45 extNsigma   
     46 psfQual     
     47 Mcal         
     48 airmass     
     49 az           
     50 code         
     51 nFrames     
     52 flags       
     53 dophot       
     54 dummy       
     55
     56we can use these header fields to get the exp times, and I suppose alt, az, airmass, etc:
     57NODE    =           XXX.XXXXXX / Ascending node of great circle scanned (deg)
     58INCL    =           XXX.XXXXXX / Inclincation of great circle scanned (deg)
     59C_OBS   =            XXXXX.XXX / CCD clock rate (usec/unbinned-row)
     60TRACKING=            XXXXX.XXX / Tracking rate (arcsec/TAI-sec)
  • branches/eam_branch_20080223/Ohana/src/addstar/include/2mass.h

    r8361 r16698  
    4242int       get2mass_star (Stars *star, char *line, int Nmax);
    4343int       get2mass_3star (Stars *star, char *line, int Nmax);
     44
     45int get2mass_3star_full (Stars *star, char *line, int Nmax);
     46char *next2MASSfield (char *line);
     47int set2MASS_ph_qual (Stars *star, char qual);
     48int set2MASS_rd_flag (Stars *star, char qual);
     49int set2MASS_cc_flag (Stars *star, char qual);
     50int set2MASS_bl_flag (Stars *star, char qual);
     51int set2MASS_gal_flag (Stars *star, char qual);
     52int set2MASS_mp_flag (Stars *star, char qual);
     53int set2MASS_dup_flag (Stars *star, char qual);
     54int set2MASS_use_flag (Stars *star, char qual);
  • branches/eam_branch_20080223/Ohana/src/addstar/include/addstar.h

    r15210 r16698  
    5151
    5252enum {M_IMAGE, M_REFLIST, M_REFCAT, M_FAKEIMAGE, M_RESORT};
    53 enum {NONE, SIMPLE_CMP, SIMPLE_CMF, SIMPLE_MEF, MOSAIC_CMP, MOSAIC_CMF, MOSAIC_MEF, MOSAIC_PHU};
     53enum {NONE, SIMPLE_CMP, SIMPLE_CMF, SIMPLE_MEF, MOSAIC_CMP, MOSAIC_CMF, MOSAIC_MEF, MOSAIC_PHU, SDSS_OBJ};
    5454/* note: MEF implies CMF */
    5555
     
    163163Stars     *grefstars              PROTO((char *file, int photcode, int *Nstars));
    164164
    165 Stars     *LoadStars              PROTO((char *file, int *Nstars, Image **images, int *Nimages, int photcode));
     165Stars     *LoadStars              PROTO((char *file, int *Nstars, Image **images, int *Nimages, AddstarClientOptions *options));
    166166Header   **LoadHeaders            PROTO((FILE *f, int *mode, int *Nheader));
    167167HeaderSet *MatchHeaders           PROTO((int **extsize, int *nimage, int mode, Header **headers, int Nheaders));
     
    185185Stars     *ReadStarsFITS          PROTO((FILE *f, Header *header, Header *in_theader, unsigned int *nstars));
    186186Stars     *ReadStarsTEXT          PROTO((FILE *f, unsigned int *nstars));
     187Stars     *ReadStarsSDSS          PROTO((FILE *f, char *name, Header *header, Header *in_theader, Image *images, int *nimages, unsigned int *nstars));
    187188int        ReadImageHeader        PROTO((Header *header, Image *image, int photcode));
    188 Stars     *FilterStars            PROTO((Stars *instars, Image *image));
     189Stars     *FilterStars            PROTO((Stars *instars, Image *image, unsigned int imageID));
    189190Stars     *MergeStars             PROTO((Stars *stars, int *Nstars, Stars *instars, int Ninstars));
    190191void       save_pt_catalog        PROTO((Catalog *catalog));  /*** choose new name ***/
     
    245246int args_skycells (int argc, char **argv);
    246247int ConfigInit_skycells (int *argc, char **argv);
     248int UpdateImageIDs (Stars *stars, int Nstars, Image *images, int Nimages);
     249int LoadDataSDSS (FILE *f, char *file, Image **images, int *nvalid, Stars **stars, int *Nstars, Header **headers, int *extsize, HeaderSet *headerSets, int Nimages);
     250int altaz (double *alt, double *az, double ha, double dec, double latitude);
    247251
    248252// this is a gnu extension?? caution!
  • branches/eam_branch_20080223/Ohana/src/addstar/src/FilterStars.c

    r16648 r16698  
    6565      stars[N].M += MTIME - dMs;
    6666    }
    67     if (!isnan(stars[N].Mgal)) {
    68       stars[N].Mgal += MTIME - dMs;
    69     }
    7067    if (!isnan(stars[N].Map)) {
    7168      stars[N].Map += MTIME - dMs;
  • branches/eam_branch_20080223/Ohana/src/addstar/src/GetFileMode.c

    r10937 r16698  
    1616  gfits_scan (header, "EXTEND", "%t", 1, &extend);
    1717   
     18  {
     19    int tmp, haveCAMCOL, haveSTRIPE;
     20   
     21    // SDSS tsObj files have CAMCOL & STRIP keywords present in the header
     22    haveCAMCOL = gfits_scan (header, "CAMCOL",  "%d", 1, &tmp);
     23    haveSTRIPE = gfits_scan (header, "STRIPE",  "%d", 1, &tmp);
     24    if (haveCAMCOL && haveSTRIPE) return SDSS_OBJ;
     25  }
     26
    1827  if ((Naxis == 2) || TEXTMODE || !simple) {
    1928    if (!strcmp (&ctype[4], "-WRP")) {
  • branches/eam_branch_20080223/Ohana/src/addstar/src/ImageOptions.c

    r15038 r16698  
    44int ImageOptions (AddstarClientOptions *options, Image *images, int Nimages) {
    55
    6   int i, equivPhotcode;
     6  int i, equivPhotcode, consistent;
    77  float maxError;
    88  PhotCode *photcode;
     
    1818
    1919  // check that all images have the same equiv photcode and save it
     20  // XXX this is only used to allow use to calculate an average mag
     21  // if we have mis-matched photcodes, leave this as 0;
     22  options[0].photcode = 0;
    2023  equivPhotcode = 0;
     24  consistent = TRUE;
    2125
    2226  for (i = 0; i < Nimages; i++) {
     
    2832    if (equivPhotcode) {
    2933      if (equivPhotcode != photcode[0].equiv) {
    30         fprintf (stderr, "ERROR: mismatch in equiv photcode values\n");
    31         exit (2);
     34        consistent = FALSE;
     35        break;
    3236      }
    3337    } else {
     
    3539    }
    3640  }
    37   options[0].photcode = equivPhotcode;
     41  if (consistent) {
     42    options[0].photcode = equivPhotcode;
     43  }
    3844
    3945  options[0].imageID = 0;
  • branches/eam_branch_20080223/Ohana/src/addstar/src/LoadStars.c

    r16654 r16698  
    2323    for (i = 0; (fscanf (f, "%s", line) != EOF); i++) {
    2424      // filename limited to 1024 chars
     25      fprintf (stderr, "file: %s\n", line);
    2526      file[i] = strcreate (line);
     27      if (i == NFILE - 1) {
     28        NFILE += 10;
     29        REALLOCATE (file, char *, NFILE);
     30      }
    2631    }
    2732    Nfile = i;
     
    7681    }
    7782
     83    if (!strcmp (headerSets[0].exttype, "SDSS_OBJ")) {
     84      LoadDataSDSS (f, file[i], images, Nimages, &stars, Nstars, headers, extsize, headerSets, NheaderSets);
     85      continue;
     86    }
     87
    7888    LoadData (f, file[i], images, Nimages, &stars, Nstars, headers, extsize, headerSets, NheaderSets);
    7989
    8090    // XXX add a function to (optionally) load the extended source measurements
     91    # if (0)
    8192    if (extSources) {
    8293      // not sure how to link the measurements here to the psf measurements above (though there is an ID in the det list)
     
    8697      LoadDataXFIT (f, file[i], images, Nimages, &stars, Nstars, headers, extsize, headerSets, NheaderSets);
    8798    }
     99    # endif
    88100
    89101  }
     
    100112}
    101113
    102 // load all of the headers, jump in file to skip data segments
    103 Header **LoadHeaders (FILE *f, int *mode, int *Nheaders) {
    104 
    105   int i, status, Nskip, NHEADERS;
    106   Header **headers;
    107 
    108   /* we need to examine the extensions to determine the headers and the data */
    109   NHEADERS = 10;
    110   ALLOCATE (headers, Header *, NHEADERS);
    111 
    112   // load all headers into memory
    113   for (i = 0;; i++) {
    114     ALLOCATE (headers[i], Header, 1);
    115     status = gfits_fread_header (f, headers[i]);
    116     if (!status) {
    117       *Nheaders = i;
    118       return (headers);
    119     }
    120 
    121     // check the mode for this file
    122     if (i == 0) {
    123       *mode = GetFileMode (headers[0]);
    124       if ((*mode == SIMPLE_CMP) || (*mode == MOSAIC_CMP)) {
    125         *Nheaders = i;
    126         return (headers);
    127       }
    128     }
    129 
    130     // advance to the next header
    131     Nskip = gfits_data_size (headers[i]);
    132     fseek (f, Nskip, SEEK_CUR);
    133     if (i == NHEADERS - 1) {
    134       NHEADERS += 10;
    135       REALLOCATE (headers, Header *, NHEADERS);
    136     }
    137   }
    138 }
    139 
    140 HeaderSet *MatchHeaders (int **extsize, int *nimage, int mode, Header **headers, int Nheaders) {
    141 
    142   int i, j, Nimage, NIMAGE;
    143   char extname[80], exttype[80], exthead[80];
    144   HeaderSet *headerSets;
    145 
    146   ALLOCATE (extsize[0], int, Nheaders);
    147 
    148   Nimage = 0;
    149   NIMAGE = 10;
    150   ALLOCATE (headerSets, HeaderSet, NIMAGE);
    151 
    152   // what is the mode of the first header (ie, do we have a PHU DIS image?)
    153   mode = GetFileMode (headers[0]);
    154 
    155   if (mode == MOSAIC_MEF) {
    156     headerSets[Nimage].exthead     = strcreate ("PHU");
    157     headerSets[Nimage].extdata     = strcreate ("NONE");
    158     headerSets[Nimage].extnum_data = -1;
    159     headerSets[Nimage].extnum_head =  0;
    160     Nimage ++;
    161   }
    162 
    163   // now examine the headers, count the table entries, find corresponding headers
    164   for (i = 0; i < Nheaders; i++) {
    165     if (mode == SIMPLE_CMP) {
    166       extsize[0][i] = headers[i][0].size;
    167     } else {
    168       extsize[0][i] = headers[i][0].size + gfits_data_size (headers[i]);
    169     }
    170     gfits_scan (headers[i], "EXTTYPE", "%s", 1, exttype);
    171 
    172     if (!strcmp (exttype, "SMPDATA")) goto keep;
    173     if (!strcmp (exttype, "PS1_DEV_0")) goto keep;
    174     if (!strcmp (exttype, "PS1_DEV_1")) goto keep;
    175     continue;
    176 
    177   keep:
    178     headerSets[Nimage].exttype = strcreate (exttype);
    179 
    180     gfits_scan (headers[i], ExtnameKeyword, "%s", 1, extname);
    181     gfits_scan (headers[i], "EXTHEAD", "%s", 1, exthead);
    182 
    183     headerSets[Nimage].extdata     = strcreate (extname);
    184     headerSets[Nimage].exthead     = strcreate (exthead);
    185     headerSets[Nimage].extnum_data = i;
    186     headerSets[Nimage].extnum_head = -1;
    187 
    188     // find the matching exthead entry
    189     for (j = 0; j < Nheaders; j++) {
    190       if (!gfits_scan (headers[j], ExtnameKeyword, "%s", 1, extname)) continue;
    191       if (strcmp (extname, headerSets[Nimage].exthead)) continue;
    192       headerSets[Nimage].extnum_head = j;
    193       break;
    194     }
    195 
    196     // skip or crash on table with missing matching header?
    197     if (headerSets[Nimage].extnum_head == -1) {
    198       return NULL;
    199     }
    200     Nimage ++;
    201     if (Nimage == NIMAGE) {
    202       NIMAGE += 10;
    203       REALLOCATE (headerSets, HeaderSet, NIMAGE);
    204     }
    205   }
    206 
    207   // some old format files did not write EXTTYPE.  they have a single table in the first
    208   // extension matched to the header in the PHU
    209   if (Nimage == 0) {
    210     extsize[0][0] = headers[0][0].size + gfits_data_size (headers[0]);
    211     extsize[0][1] = headers[1][0].size + gfits_data_size (headers[1]);
    212     gfits_scan (headers[1], ExtnameKeyword, "%s", 1, extname);
    213     if (!strcmp (extname, "SMPFILE")) {
    214       headerSets[Nimage].extdata     = strcreate (extname);
    215       headerSets[Nimage].exttype     = strcreate ("SMPDATA");
    216       headerSets[Nimage].exthead     = strcreate ("PHU");
    217       headerSets[Nimage].extnum_head = 0;
    218       headerSets[Nimage].extnum_data = 1;
    219       Nimage = 1;
    220     }
    221   }
    222  
    223   *nimage = Nimage;
    224   return (headerSets);
    225 }
    226 
    227 // XXX this function is somewhat specific to the elixir format output files
    228 // it is capable of distinguishing several format versions defined for elixir/psphot
    229 
    230 // examine the header sets and set the Image entries for the the valid images
    231 int LoadData (FILE *f, char *file, Image **images, int *nvalid, Stars **stars, int *Nstars, Header **headers, int *extsize, HeaderSet *headerSets, int Nimages) {
    232 
    233   char *name;
    234   int i, j, Nvalid, Nhead, Ndata, Nskip;
    235   Stars *inStars;
    236 
    237   if (images[0] == NULL) {
    238     Nvalid = 0;
    239     NVALID = 10;
    240     ALLOCATE (images[0], Image, NVALID);
    241   } else {
    242     Nvalid = *nvalid;
    243     NVALID = Nvalid + 10;
    244     REALLOCATE (images[0], Image, NVALID);
    245   }   
    246 
    247   // find image rootname
    248   name = filebasename (file);
    249 
    250   // now run through the images, interpret the headers and read the stars
    251   for (i = 0; i < Nimages; i++) {
    252     Nhead = headerSets[i].extnum_head;
    253 
    254     if (VERBOSE) fprintf (stderr, "reading header for %s (%s)\n", headerSets[i].exthead, headerSets[i].extdata);
    255     if (!ReadImageHeader (headers[Nhead], &images[0][Nvalid], 0)) {
    256       fprintf (stderr, "skipping %s\n", headerSets[i].exthead);
    257       continue;
    258     }
    259     images[0][Nvalid].imageID = Nvalid;
    260     images[0][Nvalid].externID = 0;
    261     images[0][Nvalid].sourceID = 0;
    262 
    263     // XXX EAM : I seemed to have dropped the ability to support TEXT (old-style cmp format files).
    264     // I need to detect them here and load them with ReadStarsTEXT instead of calling the code
    265     // below.
    266 
    267     // XXX use something to set the chip name? EXTNAME?
    268     if (!strcmp(headerSets[i].exthead, "PHU") && (Nimages == 1)) {
    269       snprintf (images[0][Nvalid].name, 64, "%s", name);
    270     } else {
    271       snprintf (images[0][Nvalid].name, 64, "%s[%s]", name, headerSets[i].exthead);
    272     }
    273 
    274     // skip the table if there is no data segment (eg, mosaic WRP image)
    275     if (!strcmp(headerSets[i].extdata, "NONE")) {
    276       Nvalid++;
    277       if (Nvalid == NVALID) {
    278         NVALID += 10;
    279         REALLOCATE (images[0], Image, NVALID);
    280       }
    281       continue;
    282     }
    283 
    284     // advance the pointer to the start of the corresponding table block
    285     Ndata = headerSets[i].extnum_data;
    286     Nskip = 0;
    287     for (j = 0; j < Ndata; j++) {
    288       Nskip += extsize[j];
    289     }
    290     fseek (f, Nskip, SEEK_SET);
    291          
    292     inStars = ReadStarsFITS (f, headers[Nhead], headers[Ndata], &images[0][Nvalid].nstar);
    293     inStars = FilterStars (inStars, &images[0][Nvalid], Nvalid);
    294     *stars = MergeStars (*stars, Nstars, inStars, images[0][Nvalid].nstar);
    295     Nvalid++;
    296   }
    297   free (name);
    298   *nvalid = Nvalid;
    299   return (TRUE);
    300 }
    301 
  • branches/eam_branch_20080223/Ohana/src/addstar/src/ReadImageHeader.c

    r15514 r16698  
    156156  image[0].Xm   = NAN_S_SHORT;
    157157  image[0].code = 0;
    158   memset (image[0].dummy, 0, sizeof(image[0].dummy));
    159158
    160159  /* find expected number of stars */
  • branches/eam_branch_20080223/Ohana/src/addstar/src/ReadStarsFITS.c

    r15514 r16698  
    7272    if ((smpdata[i].M >= ZeroPt) || isnan(smpdata[i].M)) {
    7373      stars[i].M    = NAN;
    74       stars[i].Mgal = NAN;
    7574      stars[i].Map  = NAN;
    7675    } else {
    7776      stars[i].M    = smpdata[i].M;
    78       stars[i].Mgal = smpdata[i].M;
    7977      stars[i].Map  = smpdata[i].M;
    8078    }
     
    122120    stars[i].df      = ps1data[i].df;
    123121
    124     stars[i].psfProb = ps1data[i].psfProb;
    125     stars[i].psfQual = ps1data[i].psfQual;
     122    stars[i].psfChisq = ps1data[i].psfChisq;
     123    stars[i].psfQual  = ps1data[i].psfQual;
    126124
    127125    stars[i].detID   = ps1data[i].detID;
     
    150148    /* these are not used */
    151149    stars[i].Map     = NAN;
    152     stars[i].Mgal    = NAN;
    153150    stars[i].dophot  = 0;
    154151  }   
     
    190187    stars[i].df      = ps1data[i].df;
    191188
    192     stars[i].psfProb   = ps1data[i].psfProb;
     189    stars[i].psfChisq  = ps1data[i].psfChisq;
    193190    stars[i].psfQual   = ps1data[i].psfQual;
    194191    stars[i].crNsigma  = ps1data[i].crNsigma;
     
    225222    /* these are not used */
    226223    stars[i].Map     = NAN;
    227     stars[i].Mgal    = NAN;
    228224    stars[i].dophot  = 0;
    229225  }   
  • branches/eam_branch_20080223/Ohana/src/addstar/src/ReadStarsTEXT.c

    r15509 r16698  
    8080      stars[N].dophot = tmp;
    8181
    82       dparse (&stars[N].Mgal, 7, &buffer[j*BYTES_STAR]);
     82      // XXX I've removed the Mgal field from the measure.d table, and am using Map
     83      // instead.  DVO has not to date been used to track and study objects which are
     84      // extended, but it is about to.  Related to this, I have created the concept of two
     85      // extended source attribute tables, to carry the information being measured by the
     86      // IPP.
     87
     88      // dparse (&stars[N].Mgal, 7, &buffer[j*BYTES_STAR]);
    8389      dparse (&stars[N].Map,  8, &buffer[j*BYTES_STAR]);
    8490      dparse (&stars[N].fx,   9, &buffer[j*BYTES_STAR]);
  • branches/eam_branch_20080223/Ohana/src/addstar/src/SEDfit.c

    r16633 r16698  
    193193      outcat[0].measure[Nmeas].dt       = 0xffff;
    194194
    195       outcat[0].measure[Nmeas].Mgal     = NAN;
    196195      outcat[0].measure[Nmeas].airmass  = 0;
    197196      outcat[0].measure[Nmeas].FWx      = NAN_S_SHORT;
  • branches/eam_branch_20080223/Ohana/src/addstar/src/UpdateImageIDs.c

    r16649 r16698  
    22
    33int UpdateImageIDs (Stars *stars, int Nstars, Image *images, int Nimages) {
     4
     5  int i, status, isEmpty;
     6  unsigned int imageID;
     7  FITS_DB db;
    48
    59  /*** update the image table ***/
     
    1418    if (VERBOSE) fprintf (stderr, "can't find %s, creating a new one\n", ImageCat);
    1519    dvo_image_create (&db, GetZeroPoint());
     20    isEmpty = TRUE;
    1621  } else {
    1722    /* position to start of file */
     
    2025      Shutdown ("can't read image table phu %s", db.filename);
    2126    }
     27    isEmpty = FALSE;
    2228  }
    2329
    24   status = gfits_scan (&db.header, "IMAGEID", "%d", 1, &imageID);
     30  // note that imageID is unsigned int
     31  status = gfits_scan (&db.header, "IMAGEID", "%u", 1, &imageID);
    2532  if (!status) {
    26     status = gfits_scan (&db.header, "NIMAGES", "%d", 1, &imageID);
     33    status = gfits_scan (&db.header, "NIMAGES", "%u", 1, &imageID);
    2734  }
    2835
     
    4047
    4148  imageID += Nimages;
    42   status = gfits_modify (&db.header, "IMAGEID", "%d", 1, imageID);
    43  
    44   // write PHU
    45   // position to start of file
    46   Fseek (db.f, 0, SEEK_SET);
    47   SetProtect (TRUE);
    48   if (!gfits_fwrite_header (db.f, &db.header)) {
    49     Shutdown ("can't write image table phu %s", db.filename);
     49  status = gfits_modify (&db.header, "IMAGEID", "%u", 1, imageID);
     50 
     51
     52  if (isEmpty) {
     53    dvo_image_addrows (&db, NULL, 0);
     54    SetProtect (TRUE);
     55    dvo_image_update (&db, VERBOSE);
     56    SetProtect (FALSE);
     57  } else {
     58    // write just the PHU
     59    // position to start of file
     60    Fseek (db.f, 0, SEEK_SET);
     61    SetProtect (TRUE);
     62    if (!gfits_fwrite_header (db.f, &db.header)) {
     63      Shutdown ("can't write image table phu %s", db.filename);
     64    }
     65    SetProtect (FALSE);
    5066  }
    51   SetProtect (FALSE);
    5267
    5368  dvo_image_unlock (&db);
    5469
    55   return
     70  return TRUE;
    5671}
  • branches/eam_branch_20080223/Ohana/src/addstar/src/addstarc.c

    r15036 r16698  
    2121    case M_IMAGE:
    2222      /* load data */
    23       stars = LoadStars (argv[1], &Nstars, &images, &Nimages, options.photcode);
     23      stars = LoadStars (argv[1], &Nstars, &images, &Nimages, &options);
     24
     25      // set and update the imageID sequence
     26      UpdateImageIDs (stars, Nstars, images, Nimages);
    2427
    2528      /* send data to server */
  • branches/eam_branch_20080223/Ohana/src/addstar/src/fakeimage.c

    r16648 r16698  
    130130    image[i+1].Xm   = NAN_S_SHORT;
    131131    image[i+1].code = 0;
    132     memset (image[i+1].dummy, 0, sizeof(image[i+1].dummy));
    133132
    134133    image[i+1].nstar = 0;
     
    189188  image[0].Xm   = NAN_S_SHORT;
    190189  image[0].code = 0;
    191   memset (image[0].dummy, 0, sizeof(image[0].dummy));
    192190  image[0].nstar = 0;
    193191  image[0].Myyyy = 0;
  • branches/eam_branch_20080223/Ohana/src/addstar/src/find_matches.c

    r16648 r16698  
    1010  int Nave, NAVE, Nmeas, NMEAS, Nmatch;
    1111  int Nsecfilt, Nsec;
     12  unsigned int objID, catID;
    1213  Coords tcoords;
    1314
     
    183184      catalog[0].measure[Nmeas].photFlags = stars[N].flags;
    184185      catalog[0].measure[Nmeas].qPSF      = stars[N].psfQual;
    185       catalog[0].measure[Nmeas].psfProb   = stars[N].psfProb;
     186      catalog[0].measure[Nmeas].psfChisq  = stars[N].psfChisq;
    186187      catalog[0].measure[Nmeas].crNsigma  = stars[N].crNsigma;
    187188      catalog[0].measure[Nmeas].extNsigma = stars[N].extNsigma;
     
    197198      catalog[0].measure[Nmeas].dYccd     = stars[N].dY;
    198199
    199       catalog[0].measure[Nmeas].Mgal     = stars[N].Mgal;
     200      catalog[0].measure[Nmeas].Map      = stars[N].Map;
    200201      catalog[0].measure[Nmeas].FWx      = 100*stars[N].fx;
    201202      catalog[0].measure[Nmeas].FWy      = 100*stars[N].fy;
     
    313314    catalog[0].measure[Nmeas].photFlags = stars[N].flags;
    314315    catalog[0].measure[Nmeas].qPSF      = stars[N].psfQual;
    315     catalog[0].measure[Nmeas].psfProb   = stars[N].psfProb;
     316    catalog[0].measure[Nmeas].psfChisq  = stars[N].psfChisq;
    316317    catalog[0].measure[Nmeas].crNsigma  = stars[N].crNsigma;
    317318    catalog[0].measure[Nmeas].extNsigma = stars[N].extNsigma;
     
    327328    catalog[0].measure[Nmeas].dYccd     = stars[N].dY;
    328329
    329     catalog[0].measure[Nmeas].Mgal      = stars[N].Mgal;
     330    catalog[0].measure[Nmeas].Map       = stars[N].Map;
    330331    catalog[0].measure[Nmeas].FWx       = 100*stars[N].fx;
    331332    catalog[0].measure[Nmeas].FWy       = 100*stars[N].fy;
  • branches/eam_branch_20080223/Ohana/src/addstar/src/find_matches_closest.c

    r16648 r16698  
    99  int *N1, *N2,  *next_meas, *next_miss;
    1010  int Nave, NAVE, Nmeas, NMEAS, Nmiss, NMISS, Nmatch;
     11  int Nsecfilt, Nsec;
     12  unsigned int objID, catID;
    1113  Coords tcoords;
    12   int Nsecfilt, Nsec;
    1314
    1415  /* photcode data - must by of type DEP; options.photcode is equiv photcode for all input
     
    203204    catalog[0].measure[Nmeas].photFlags = stars[N].flags;
    204205    catalog[0].measure[Nmeas].qPSF      = stars[N].psfQual;
    205     catalog[0].measure[Nmeas].psfProb   = stars[N].psfProb;
     206    catalog[0].measure[Nmeas].psfChisq  = stars[N].psfChisq;
    206207    catalog[0].measure[Nmeas].crNsigma  = stars[N].crNsigma;
    207208    catalog[0].measure[Nmeas].extNsigma = stars[N].extNsigma;
     
    217218    catalog[0].measure[Nmeas].dYccd     = stars[N].dY;
    218219
    219     catalog[0].measure[Nmeas].Mgal     = stars[N].Mgal;
     220    catalog[0].measure[Nmeas].Map       = stars[N].Map;
    220221
    221222    // XXX saturate range for FWx, FWy, theta
     
    315316    catalog[0].measure[Nmeas].photFlags = stars[N].flags;
    316317    catalog[0].measure[Nmeas].qPSF      = stars[N].psfQual;
    317     catalog[0].measure[Nmeas].psfProb   = stars[N].psfProb;
     318    catalog[0].measure[Nmeas].psfChisq  = stars[N].psfChisq;
    318319    catalog[0].measure[Nmeas].crNsigma  = stars[N].crNsigma;
    319320    catalog[0].measure[Nmeas].extNsigma = stars[N].extNsigma;
     
    329330    catalog[0].measure[Nmeas].dYccd     = stars[N].dY;
    330331
    331     catalog[0].measure[Nmeas].Mgal     = stars[N].Mgal;
     332    catalog[0].measure[Nmeas].Map      = stars[N].Map;
    332333    catalog[0].measure[Nmeas].FWx      = 100*stars[N].fx;
    333334    catalog[0].measure[Nmeas].FWy      = 100*stars[N].fy;
  • branches/eam_branch_20080223/Ohana/src/addstar/src/find_matches_refstars.c

    r16648 r16698  
    99  int *N1, *N2,  *next, *next_miss, last, last_miss;
    1010  int Nave, NAVE, Nmeas, NMEAS, Nmiss, NMISS, Nmatch;
     11  unsigned int objID, catID;
    1112  Measure *tmpmeasure;
    1213  Missing *tmpmissing;
     
    147148      catalog[0].measure[Nmeas].dt       = 0xffff;
    148149
    149       catalog[0].measure[Nmeas].Mgal     = NAN;
     150      catalog[0].measure[Nmeas].Map      = NAN;
    150151      catalog[0].measure[Nmeas].airmass  = 0;
    151152      catalog[0].measure[Nmeas].FWx      = NAN_S_SHORT;
     
    155156      catalog[0].measure[Nmeas].photFlags = 0;
    156157      catalog[0].measure[Nmeas].qPSF      = 0;
    157       catalog[0].measure[Nmeas].psfProb   = 0;
     158      catalog[0].measure[Nmeas].psfChisq  = 0;
    158159      catalog[0].measure[Nmeas].crNsigma  = 0;
    159160      catalog[0].measure[Nmeas].extNsigma = 0;
     
    281282    catalog[0].measure[Nmeas].photFlags = 0;
    282283    catalog[0].measure[Nmeas].qPSF      = 0;
    283     catalog[0].measure[Nmeas].psfProb   = 0;
     284    catalog[0].measure[Nmeas].psfChisq  = 0;
    284285    catalog[0].measure[Nmeas].crNsigma  = 0;
    285286    catalog[0].measure[Nmeas].extNsigma = 0;
     
    299300
    300301    catalog[0].measure[Nmeas].airmass  = 0;
    301     catalog[0].measure[Nmeas].Mgal     = NAN;
     302    catalog[0].measure[Nmeas].Map      = NAN;
    302303    catalog[0].measure[Nmeas].FWx      = NAN_S_SHORT;
    303304    catalog[0].measure[Nmeas].FWy      = NAN_S_SHORT;
  • branches/eam_branch_20080223/Ohana/src/addstar/src/load2mass_as_rawdata.c

    r14401 r16698  
    135135        stars[Nstars+2].R = tstars[j].R;
    136136        stars[Nstars+2].D = tstars[j].D;
    137         get2mass_3star (&stars[Nstars], &buffer[offset], Nbyte - offset);
     137        get2mass_3star_full (&stars[Nstars], &buffer[offset], Nbyte - offset);
    138138        // get2mass_star (&stars[Nstars], &buffer[offset], Nbyte - offset);
    139139
  • branches/eam_branch_20080223/Ohana/src/addstar/src/load2mass_catalog.c

    r16633 r16698  
    4747    // we now have the min chisq row. use this to supply the other filter values....
    4848    for (j = 0; j < 3; j++) {
    49       catalog[0].measure[Nmeas].dR       = 0.0;
    50       catalog[0].measure[Nmeas].dD       = 0.0;
    51       catalog[0].measure[Nmeas].M        = stars[i+j].M;
    52       catalog[0].measure[Nmeas].dM       = stars[i+j].dM;
    53       catalog[0].measure[Nmeas].Mcal     = 0;
    54       catalog[0].measure[Nmeas].t        = stars[i+j].t;
    55       catalog[0].measure[Nmeas].averef   = Nave;
    56       catalog[0].measure[Nmeas].photcode = stars[i+j].code;
    57       catalog[0].measure[Nmeas].dophot   = 0;
    58       catalog[0].measure[Nmeas].dbFlags  = 0;
    59       catalog[0].measure[Nmeas].dt       = 0xffff;
    60 
    61       catalog[0].measure[Nmeas].Mgal     = NAN;
    62       catalog[0].measure[Nmeas].airmass  = 0;
    63       catalog[0].measure[Nmeas].FWx      = NAN_S_SHORT;
    64       catalog[0].measure[Nmeas].FWy      = NAN_S_SHORT;
    65       catalog[0].measure[Nmeas].theta    = NAN_S_SHORT;
     49      catalog[0].measure[Nmeas].dR        = 0.0;
     50      catalog[0].measure[Nmeas].dD        = 0.0;
     51      catalog[0].measure[Nmeas].Xccd      = stars[i+j].X;
     52      catalog[0].measure[Nmeas].Yccd      = stars[i+j].Y;
     53      catalog[0].measure[Nmeas].dXccd     = 0.0;
     54      catalog[0].measure[Nmeas].dYccd     = 0.0;
     55      catalog[0].measure[Nmeas].M         = stars[i+j].M;
     56      catalog[0].measure[Nmeas].dM        = stars[i+j].dM;
     57      catalog[0].measure[Nmeas].Mcal      = 0;
     58      catalog[0].measure[Nmeas].dMcal     = stars[i+j].dMcal;
     59      catalog[0].measure[Nmeas].t         = stars[i+j].t;
     60      catalog[0].measure[Nmeas].averef    = Nave;
     61      catalog[0].measure[Nmeas].photcode  = stars[i+j].code;
     62      catalog[0].measure[Nmeas].dophot    = 0;
     63      catalog[0].measure[Nmeas].photFlags = stars[i+j].flags;
     64      catalog[0].measure[Nmeas].dbFlags   = 0;
     65      catalog[0].measure[Nmeas].dt        = 0xffff;
     66                                         
     67      catalog[0].measure[Nmeas].airmass   = 0;
     68      catalog[0].measure[Nmeas].FWx       = stars[i+j].fx;
     69      catalog[0].measure[Nmeas].FWy       = stars[i+j].fy;
     70      catalog[0].measure[Nmeas].theta     = stars[i+j].df;
    6671
    6772      catalog[0].average[Nave].Nmeasure++;
Note: See TracChangeset for help on using the changeset viewer.