IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 34206


Ignore:
Timestamp:
Jul 25, 2012, 5:09:17 AM (14 years ago)
Author:
eugene
Message:

adding FITS output code

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20120627/Ohana/src/addstar/src/findskycell.c

    r34205 r34206  
    8181  exit (0);
    8282}
     83
     84# define MARKTIME(MSG,...) {                    \
     85    float dtime;                                \
     86    gettimeofday (&stop, (void *) NULL);        \
     87    dtime = DTIME (stop, start);                \
     88    fprintf (stderr, MSG, __VA_ARGS__); }
    8389
    8490int mktree (char *treefile, char *catdir) {
     
    187193  }
    188194
     195  struct timeval start, stop;
     196  gettimeofday (&start, (void *) NULL);
     197
     198  int Npts = 10000000;
     199
    189200  // test : find skycell for NN random points on the sky
    190201  long A = time(NULL);
    191202  long B = A + 10000;
    192203  srand48(B);
    193   for (i = 0; i < 10000; i++) {
     204  for (i = 0; i < Npts; i++) {
    194205    ra  = 360.0 * drand48();
    195206    dec = 180.0 * drand48() - 90.0;
     
    198209    }
    199210  }
     211  MARKTIME("-- test %d pts: %f sec\n", Npts, dtime);
     212
     213  // save the tree
     214  Header header, theader;
     215  Matrix matrix;
     216  FTable ftable;
     217
     218  gfits_init_header (&header);
     219  header.extend = TRUE;
     220  gfits_create_header (&header);
     221  gfits_create_matrix (&header, &matrix);
     222
     223  ftable.header = &theader;
     224 
     225  FILE *f = fopen (filename, "w");
     226  if (!f) {
     227    fprintf (stderr, "ERROR: cannot open image subset file for output %s\n", filename);
     228    return FALSE;
     229  }
     230
     231  gfits_fwrite_header  (f, &header);
     232  gfits_fwrite_matrix  (f, &matrix);
     233  gfits_free_header (&header);
     234  gfits_free_matrix (&matrix);
     235
     236  /*** MeasureTiny ***/
     237  {
     238    gfits_create_table_header (&theader, "BINTABLE", "MEASURE_TINY");
     239
     240    gfits_define_bintable_column (&theader, "E", "RA_OFF",   "ra offset",                  "arcsec", 1.0, 0.0);
     241    gfits_define_bintable_column (&theader, "E", "DEC_OFF",  "dec offset",                 "arcsec", 1.0, 0.0);
     242    gfits_define_bintable_column (&theader, "E", "MAG_SYS",  "magnitude (sys)",             NULL,    1.0, 0.0);
     243    gfits_define_bintable_column (&theader, "E", "MAG_CAL",  "magnitude (cal)",             NULL,    1.0, 0.0);
     244    gfits_define_bintable_column (&theader, "E", "MAG_ERR",  "magnitude (err)",             NULL,    1.0, 0.0);
     245    gfits_define_bintable_column (&theader, "E", "AIRMASS",  "airmass",                     NULL,    1.0, 0.0);
     246    gfits_define_bintable_column (&theader, "E", "X_CCD",    "ccd x coord",                "pix",    1.0, 0.0);
     247    gfits_define_bintable_column (&theader, "E", "Y_CCD",    "ccd y coord",                "pix",    1.0, 0.0);
     248    gfits_define_bintable_column (&theader, "E", "EXPTIME",  "-2.5 * log (exposure time)", "sec",    1.0, 0.0);
     249    gfits_define_bintable_column (&theader, "J", "TIME",     "time of exp",                "sec",    1.0, 1.0*0x8000);
     250    gfits_define_bintable_column (&theader, "J", "AVE_REF",  "pointer to average table",    NULL,    1.0, 1.0*0x8000);
     251    gfits_define_bintable_column (&theader, "J", "IMAGE_ID", "image",                       NULL,    1.0, 1.0*0x8000);
     252    gfits_define_bintable_column (&theader, "J", "DB_FLAGS", "flags",                       NULL,    1.0, 1.0*0x8000);
     253    gfits_define_bintable_column (&theader, "J", "PHOT_FLAGS", "photflags",                 NULL,    1.0, 1.0*0x8000);
     254    gfits_define_bintable_column (&theader, "J", "CAT_ID",   "catalog",                     NULL,    1.0, 1.0*0x8000);
     255    gfits_define_bintable_column (&theader, "I", "PHOTCODE", "photcode",                    NULL,    1.0, 1.0*0x80);
     256
     257    // generate the output array that carries the data
     258    gfits_create_table (&theader, &ftable);
     259
     260    // create intermediate storage arrays
     261    float *dR        ; ALLOCATE (dR       ,  float, catalog->Nmeasure);
     262    float *dD        ; ALLOCATE (dD       ,  float, catalog->Nmeasure);
     263    float *M         ; ALLOCATE (M        ,  float, catalog->Nmeasure);
     264    float *Mcal      ; ALLOCATE (Mcal     ,  float, catalog->Nmeasure);
     265    float *dM        ; ALLOCATE (dM       ,  float, catalog->Nmeasure);
     266    float *airmass   ; ALLOCATE (airmass  ,  float, catalog->Nmeasure);
     267    float *Xccd      ; ALLOCATE (Xccd     ,  float, catalog->Nmeasure);
     268    float *Yccd      ; ALLOCATE (Yccd     ,  float, catalog->Nmeasure);
     269    float *dt        ; ALLOCATE (dt       ,  float, catalog->Nmeasure);
     270    int   *t         ; ALLOCATE (t        ,  int  , catalog->Nmeasure);
     271    int   *averef    ; ALLOCATE (averef   ,  int  , catalog->Nmeasure);
     272    int   *imageID   ; ALLOCATE (imageID  ,  int  , catalog->Nmeasure);
     273    int   *dbFlags   ; ALLOCATE (dbFlags  ,  int  , catalog->Nmeasure);
     274    int   *photFlags ; ALLOCATE (photFlags,  int  , catalog->Nmeasure);
     275    int   *catID     ; ALLOCATE (catID    ,  int  , catalog->Nmeasure);
     276    short *photcode  ; ALLOCATE (photcode ,  short, catalog->Nmeasure);
     277
     278    // assign the storage arrays
     279    MeasureTiny *measure = catalog->measure;
     280    for (i = 0; i < catalog->Nmeasure; i++) {
     281      dR[i]       = measure[i].dR       ;
     282      dD[i]       = measure[i].dD       ;
     283      M[i]        = measure[i].M        ;
     284      Mcal[i]     = measure[i].Mcal     ;
     285      dM[i]       = measure[i].dM       ;
     286      airmass[i]  = measure[i].airmass  ;
     287      Xccd[i]     = measure[i].Xccd     ;
     288      Yccd[i]     = measure[i].Yccd     ;
     289      dt[i]       = measure[i].dt       ;
     290      t[i]        = measure[i].t        ;
     291      averef[i]   = measure[i].averef   ;
     292      catID[i]    = measure[i].catID    ;
     293      imageID[i]  = measure[i].imageID  ;
     294      dbFlags[i]  = measure[i].dbFlags  ;
     295      photFlags[i]= measure[i].photFlags;
     296      photcode[i] = measure[i].photcode ;
     297    }
     298
     299  header.buffer = NULL;
     300  matrix.buffer = NULL;
     301  ftable.buffer = NULL;
     302  theader.buffer = NULL;
     303
    200304
    201305  return TRUE;
Note: See TracChangeset for help on using the changeset viewer.