IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 3413


Ignore:
Timestamp:
Mar 12, 2005, 10:27:15 AM (21 years ago)
Author:
eugene
Message:

addings FITS tables to smp format

Location:
trunk/Ohana/src/gastro2
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/gastro2/Makefile

    r2833 r3413  
    4646$(SRC)/getusno.$(ARCH).o \
    4747$(SRC)/gcatalog.$(ARCH).o \
    48 $(SRC)/remove_clumps.$(ARCH).o
     48$(SRC)/remove_clumps.$(ARCH).o \
     49$(SRC)/rfits.$(ARCH).o \
     50$(SRC)/rtext.$(ARCH).o
    4951
    5052OBJ = $(GASTRO)
  • trunk/Ohana/src/gastro2/include/gastro2.h

    r2442 r3413  
    1111  int type;
    1212} StarData;
     13
     14typedef struct {
     15  float X;
     16  float Y;
     17  float M;
     18  float dM;
     19  float Mgal;
     20  float Map;
     21  float sky;
     22  float fx;
     23  float fy;
     24  float df;
     25  char  dophot;
     26  char  dummy[3];
     27} Stars;
    1328
    1429typedef struct {
  • trunk/Ohana/src/gastro2/src/gstars2.c

    r3390 r3413  
    11# include "gastro2.h"
    2 
    3 /* by necesity hard wired */
    4 # define D_NSTARS 1000
    5 # define BYTES_STAR 66
    6 # define BLOCK 1000
     2StarData *rtext (char *filename, Header *header, int *nstars);
     3StarData *rfits (char *filename, Header *header, int *nstars);
    74
    85void gstars (char *filename, CmpCatalog *Target) {
     
    129  char line[80], *buffer;
    1310  double dmag, type, det;
    14   int NX, NY, FoundAstrom;
     11  int NX, NY, FoundAstrom, extend;
    1512
    1613  FILE *f;
     
    121118  Target[0].Area = fabs (NX*NY*Target[0].coords.cdelt1*Target[0].coords.cdelt2*det);
    122119
    123   /* allocate space for stars */
    124   Nstars = -1;
    125   fits_scan (&Target[0].header, "NSTARS", "%d", 1, &Nstars);
    126   if (Nstars == -1) {
    127     fprintf (stderr, "ERROR: failed to find NSTARS\n");
    128     exit (1);
    129   }
    130   ALLOCATE (stars, StarData, MAX (Nstars, 1));
    131   Nbytes = Nstars*BYTES_STAR;
    132 
    133   /* open file for stars */
    134   f = fopen (filename, "r");
    135   if (f == NULL) {
    136     fprintf (stderr, "ERROR: can't open file to load stars\n");
    137     exit (1);
    138   }
    139   fseek (f, Target[0].header.size, SEEK_SET);
    140 
    141   N = nstars = 0;
    142   ALLOCATE (buffer, char, (BLOCK*BYTES_STAR));
    143  
    144   while ((nbytes = fread (buffer, 1, (BLOCK*BYTES_STAR), f)) != 0) {
    145     Ninstar = nbytes / BYTES_STAR;
    146     for (i = 0; i < Ninstar; i++, nstars++) {
    147       dparse (&stars[N].X, 1, &buffer[i*BYTES_STAR]);
    148       dparse (&stars[N].Y, 2, &buffer[i*BYTES_STAR]);
    149       dparse (&stars[N].M, 3, &buffer[i*BYTES_STAR]);
    150       dparse (&dmag,       4, &buffer[i*BYTES_STAR]);
    151       dparse (&type,       5, &buffer[i*BYTES_STAR]);
    152 
    153       /* hardwired dophot exclusions should eventually be encapsulated elsewhere */
    154       if ((type == 4) || (type == 6) || (type == 5) || (type == 9)) continue;
    155       if (dmag > 1000*MAX_ERROR) continue;
    156       stars[N].dM   = 0.001 * dmag;
    157       stars[N].type = type;
    158       N++;
    159     }
    160   }
    161   free (buffer);
    162   fclose (f);
    163  
    164   if (nstars != Nstars) {
    165     fprintf (stderr, "WARNING: only read %d of %d stars\n", nstars, Nstars);
    166   }
    167   if (N < 5) {
    168     fprintf (stderr, "ERROR: too few stars for reliable solution, only %d\n", N);
    169     exit (1);
     120  extend = FALSE;
     121  fits_scan (&Target[0].header, "EXTEND",  "%t", 1, &extend);
     122  if (extend) {
     123    stars = rfits (filename, &Target[0].header, &Nstars);
     124  } else {
     125    stars = rtext (filename, &Target[0].header, &Nstars);
    170126  }
    171127
    172   stars = remove_clumps (stars, &N, NX, NY);
     128  stars = remove_clumps (stars, &Nstars, NX, NY);
    173129
    174   sort_stars_mag (stars, N);  /* sorting by magnitude */
     130  sort_stars_mag (stars, Nstars);  /* sorting by magnitude */
    175131  Target[0].stars = stars;
    176   Target[0].N = N;
     132  Target[0].N = Nstars;
    177133
    178134  /* limit number of stars */
Note: See TracChangeset for help on using the changeset viewer.