IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 26766


Ignore:
Timestamp:
Feb 3, 2010, 1:00:09 PM (16 years ago)
Author:
watersc1
Message:

New burntool, with trails retained even if they had a poor slope.

Location:
trunk/extsrc/gpcsw/gpcsrc
Files:
22 edited

Legend:

Unmodified
Added
Removed
  • trunk/extsrc/gpcsw/gpcsrc/analysis/libpscoords/pscoords.c

    r24391 r26766  
    181181#define PSC_REFRACT_CONST 55.7  /* Standard refraction ("/tanz) at STP */
    182182#endif
     183
     184/* Return default values for current fit*/
     185int psc_defaults(double *pscale, double *d2, double *d3, double *airdens)
     186{
     187   *pscale = PS_scale;
     188   *d2 = PS_d2;
     189   *d3 = PS_d3;
     190   *airdens = PS_airdens;
     191   return(0);
     192}
    183193
    184194/* Enable application of chip offsets (um, mrad)? */
  • trunk/extsrc/gpcsw/gpcsrc/analysis/libpscoords/pscoords.h

    r24391 r26766  
    244244/* Enable application of chip offsets (um, mrad)? */
    245245int psc_load_otaoff(const char *fname);
     246
     247/* Return default values for current fit*/
     248int psc_defaults(double *pscale, double *d2, double *d3, double *airdens);
  • trunk/extsrc/gpcsw/gpcsrc/analysis/libpsf/psf.c

    r23924 r26766  
    111111/* Load up results (with a few sanity checks!) */
    112112   if(psfout != NULL && alg != PSF_2DIM) {
    113       psfout->ix = 0;
    114       psfout->iy = 0;
     113//      psfout->ix = 0;
     114//      psfout->iy = 0;
     115// 091211: JT this is a harmless lie, supposed to be highest pixel
     116      psfout->ix = xu;
     117      psfout->iy = yu;
     118//
    115119      psfout->x0 = xu;
    116120      psfout->y0 = yu;
     
    128132         psfextra->xfw = xfwhm;
    129133         psfextra->yfw = yfwhm;
     134         psfextra->majfw = 0.0;
     135         psfextra->minfw = 0.0;
     136         psfextra->thfw = 0.0;
     137         psfextra->wpeak = 0.0;
     138         psfextra->wbkgnd = 0.0;
     139         psfextra->dflux = 0.0;
     140         psfextra->dbkgnd = 0.0;
     141         psfextra->rmsbkgnd = 0.0;
    130142      }
    131143      if(alg == PSF_BIN) psfextra->binfactor = extra;
  • trunk/extsrc/gpcsw/gpcsrc/analysis/libpsf/psf2dim.f

    r23490 r26766  
    188188      wpar(9) = 0.5
    189189* WAUX: NXPATCH, NYPATCH, NX, XOFF, YOFF, EADU, EXTRASKY, IGNORE_VALUE, INIT
    190       waux(1) = min(n,nx-1-mx) + n + 1
    191       waux(2) = min(n,ny-1-my) + n + 1
     190C      waux(1) = min(n,nx-1-mx) + n + 1
     191C      waux(2) = min(n,ny-1-my) + n + 1
     192      waux(1) = min(2*n+1, nx-1-iwxs)
     193      waux(2) = min(2*n+1, ny-1-iwys)
    192194      waux(3) = nx
    193195      waux(4) = iwxs
  • trunk/extsrc/gpcsw/gpcsrc/fits/burntool/burnfix.c

    r25070 r26766  
    109109/* Restore all the burns */
    110110   for(k=0; k<cell->npersist; k++) {
    111       if(!cell->persist[k].fiterr)
     111      if(!cell->persist[k].fiterr &&
     112         (cell->persist[k].func == BURN_PWR ||
     113          cell->persist[k].func == BURN_EXP) ) {
    112114         sub_fit(nx, ny, NX, buf, &(cell->persist[k]), -1);
     115      }
    113116   }
    114117   return(0);
     
    124127/* Restore all the burns */
    125128   for(k=0; k<cell->npersist; k++) {
    126       if(!cell->persist[k].fiterr)
     129      if(!cell->persist[k].fiterr &&
     130         (cell->persist[k].func == BURN_PWR ||
     131          cell->persist[k].func == BURN_EXP) ) {
    127132         sub_fit(nx, ny, NX, buf, &(cell->persist[k]), +1);
     133      }
    128134   }
    129135   return(0);
  • trunk/extsrc/gpcsw/gpcsrc/fits/burntool/burntool.c

    r25438 r26766  
    5050      fprintf(stderr, "\rerror: burntool could not open file `%s'\n",
    5151              ifilename);
    52       exit(EXIT_FAILURE);
     52      exit(-314);
    5353   }
    5454   nextend = fh_extensions(ihu);
     
    5757              ifilename);
    5858#ifndef JT2DHACK
    59       exit(EXIT_FAILURE);
     59      exit(-315);
    6060#endif
    6161   }
     
    343343             ifilename);
    344344     if(persist_fits_remove_tables(ihu, deltablefitsfile) != FH_SUCCESS) {
    345        exit(EXIT_FAILURE);
    346      }
    347      else {
     345       exit(-316);
     346     } else {
    348347       exit(EXIT_SUCCESS);
    349348     }
     
    365364/* Read the persistence data for this OTA */
    366365   if(persistfile != NULL) {                    /* Text data file */
    367       if(persist_read(OTA, persistfile)) exit(EXIT_FAILURE);
     366      if(persist_read(OTA, persistfile, apply)) exit(-317);
    368367   } else if(persistfitsfile != NULL) {         /* FITS table */
    369       if(persist_fits_read(OTA, persistfitsfile) != FH_SUCCESS)
    370          exit(EXIT_FAILURE);
     368      if(persist_fits_read(OTA, persistfitsfile, apply) != FH_SUCCESS)
     369         exit(-318);
    371370   }
    372371
     
    427426                 "\rerror: Cannot read EXTNAME from `%s' for extension #%d\n",
    428427                 ifilename, ext);
    429          exit(EXIT_FAILURE);
     428         exit(-319);
    430429      }
    431430      if(fh_get_str(ehu, "XTENSION", xtension, sizeof(xtension)) != FH_SUCCESS) {
     
    433432                 "\rerror: Cannot read XTENSION from `%s' for extension #%d\n",
    434433                 ifilename, ext);
    435          exit(EXIT_FAILURE);     
     434         exit(-320);
    436435      }
    437436      if(!strcmp("TABLE", xtension)) {
     
    461460         fprintf(stderr,
    462461                 "\rerror: Illegal cell number %d from '%s'\n", cell, extname);
    463          exit(EXIT_FAILURE);
     462         exit(-321);
    464463      }
    465464
     
    487486          (naxis >= 3 && fh_get_NAXIS3(ehu, &naxis3) != FH_SUCCESS)) {
    488487         fprintf(stderr, "\rerror: Cannot get NAXIS*'\n");
    489          exit(EXIT_FAILURE);
     488         exit(-322);
    490489      }
    491490      if (naxis != 2) {
     
    503502         }
    504503         fprintf(stderr, "\rerror: 32bpp support not yet implemented in burntool.\n");
    505          exit(EXIT_FAILURE);
     504         exit(-324);
    506505      }
    507506/* Check BSCALE and warn if it is anything other than 1.0.
     
    525524      }
    526525
    527       buf = (IMTYPE*)malloc(naxis1*naxis2*naxis3*sizeof(short));
     526      if( (buf = (IMTYPE*)malloc(naxis1*naxis2*naxis3*sizeof(short))) == NULL) {
     527         fprintf(stderr, "\rerror: failed to alloc FITS buffer\n");
     528         exit(-325);
     529      }
    528530      if (fh_read_padded_image(ehu, fh_file_desc(ehu), buf,
    529531                               naxis1*naxis2*naxis3*sizeof(short),
     
    531533         fprintf(stderr, "\rerror: failed to read image data for extension `%s'.\n",
    532534                 extname);
    533          free(buf);
    534          exit(EXIT_FAILURE);
     535//       free(buf);
     536         exit(-326);
    535537      }
    536538
     
    617619               fprintf(stderr, "\rerror: failed to re-write image data for extension `%s'.\n",
    618620                       extname);
    619                free(buf);
    620                exit(EXIT_FAILURE);
     621//             free(buf);
     622               exit(-327);
    621623            }
    622624         }
     
    667669   if(2*SKY_MARG*ny > nmedian_buf) {
    668670      if(median_buf != NULL) free(median_buf);
    669       median_buf = (int *)calloc(2*SKY_MARG*ny, sizeof(int));
     671      if( (median_buf = (int *)calloc(2*SKY_MARG*ny, sizeof(int))) == NULL) {
     672         fprintf(stderr, "\rerror: failed to alloc median buffer\n");
     673         exit(-667);
     674      }
     675
    670676      nmedian_buf = 2*SKY_MARG*ny;
    671677   }
     
    674680   if(NX*NY > nimbuf) {
    675681      if(imbuf != NULL) free(imbuf);
    676       imbuf = (int *)calloc(NX*NY, sizeof(DTYPE));
     682      if( (imbuf = (int *)calloc(NX*NY, sizeof(DTYPE))) == NULL) {
     683         fprintf(stderr, "\rerror: failed to alloc cell copy\n");
     684         exit(-668);
     685      }
    677686      nimbuf = NX*NY;
    678687   }
     
    681690   if(NX*NY > nmbuf) {
    682691      if(mbuf != NULL) free(mbuf);
    683       mbuf = (int *)calloc(NX*NY, sizeof(MTYPE));
     692      if( (mbuf = (int *)calloc(NX*NY, sizeof(MTYPE))) == NULL) {
     693         fprintf(stderr, "\rerror: failed to alloc mask buffer\n");
     694         exit(-669);
     695      }
    684696      nmbuf = NX*NY;
    685697   }
     
    688700   if(NX*NY > nmsbuf) {
    689701      if(msbuf != NULL) free(msbuf);
    690       msbuf = (int *)calloc(NX*NY, sizeof(MTYPE));
     702      if( (msbuf = (int *)calloc(NX*NY, sizeof(MTYPE))) == NULL) {
     703         fprintf(stderr, "\rerror: failed to alloc veto buffer\n");
     704         exit(-670);
     705      }
    691706      nmsbuf = NX*NY;
    692707   }
     
    755770   printf(" restore={t|f}  Restore the input MEF by adding input fits?\n");
    756771   printf(" apply={t|f}    Modify the input MEF by subtracting previously calculated fits?\n");
    757    printf(" tableonly={t|f} Calculate fits but do *not* modify the input MEF images, only write tables\n");
     772   printf(" tableonly={t|f} Calculate fits but do *not* modify the input MEF pixels, only write tables\n");
    758773   printf(" in=fname       Input file for previous burn persistence streaks\n");
    759774   printf(" infits=fname   Input FITS file for previous burn persistence streaks (stored\n");
  • trunk/extsrc/gpcsw/gpcsrc/fits/burntool/burntool.h

    r25070 r26766  
    9191#define BURN_EXP  2             /* Exponential */
    9292#define BURN_BLASTED 3          /* Blasted top to bottom: flag only for IPP */
     93#define BURN_POSSLOPE 4         /* Positive slope fit (bad) but significant */
    9394#define PSF_STAR  9             /* Unfitted: good psf star */
    9495
     
    175176STATIC int burn_restore(int nx, int ny, int NX, IMTYPE *buf, CELL *cell);
    176177STATIC int burn_apply(int nx, int ny, int NX, IMTYPE *buf, CELL *cell);
    177 STATIC int persist_read(CELL *cell, const char *infile);
     178STATIC int persist_read(CELL *cell, const char *infile, int apply);
    178179STATIC int persist_write(CELL *cell, const char *outfile);
    179180STATIC int persist_fix(int nx, int ny, int stride, IMTYPE *buf, CELL *cell);
    180181STATIC int persist_merge(CELL *cell);
     182
     183//fh_result persist_fits_read(CELL *cell, const char *filename, int apply);
     184//fh_result persist_fits_write(CELL *cell, HeaderUnit phu);
     185//fh_result persist_fits_remove_tables(HeaderUnit phu_in, const char *fileout);
    181186
    182187STATIC int star_detect(int nx, int ny, int NX, int NY, DTYPE *data,
     
    208213STATIC int wlinearfit(int npt, double *x, double *y,
    209214                      double *w, double *a, double *b);
     215STATIC int linearrms(int npt, double *x, double *y, double a, double b, double *rms);
    210216STATIC int int_median(int n, int *key);
    211217STATIC double double_median(int n, double *key);
  • trunk/extsrc/gpcsw/gpcsrc/fits/burntool/burnutils.c

    r25070 r26766  
    290290   return(0);
    291291}
     292
     293/****************************************************************/
     294/* Return of RMS relative to Fit y = ax + b */
     295STATIC int linearrms(int npt, double *x, double *y, double a, double b,
     296                     double *rms)
     297{
     298   *rms = 0.0;
     299   while(--npt >= 0) *rms += (y[npt]-a*x[npt]-b)*(y[npt]-a*x[npt]-b);
     300   if(*rms > 0) *rms = sqrt(*rms);
     301   return(0);
     302}
  • trunk/extsrc/gpcsw/gpcsrc/fits/burntool/man/burntool.1

    r25324 r26766  
    6060        correction is applied) and they will propagate from input to output
    6161        until they finally achieve a legal fit with negligible amplitude.
     62        Note that if burntool decides that a fit had a bad slope but was
     63        non-negligible it writes a function type "BURN_POSSLOPE" = 4 so
     64        the box is available for masking if desired, and can be refitted
     65        on subsequent images.
    6266
    6367        Burntool also identifies really blasted areas which are saturated from
     
    227231
    228232        tableonly={t|f}
    229                 Calculate fits but do *not* modify the input MEF images,
     233                Calculate fits but do *not* modify the input MEF pixels,
    230234                only write the fit data as a FITS and/or text table (default f)
    231235
  • trunk/extsrc/gpcsw/gpcsrc/fits/burntool/persist_fits.c

    r25299 r26766  
    5252   AREA_TABLE_COL_SXFIT,
    5353   AREA_TABLE_COL_EXFIT,
     54   AREA_TABLE_COL_FITERR,
    5455   
    5556   /* Add new columns above this line. */
     
    8687   { "sxfit", "Starting column for fit",              "pixels",  FH_TABLE_FORMAT_INT,    3,     0 },
    8788   { "exfit", "Ending column for fit",                "pixels",  FH_TABLE_FORMAT_INT,    3,     0 },
     89   { "fiterr", "Error code of fit",                "",  FH_TABLE_FORMAT_INT,    3,     0 },
    8890};
    8991
     
    222224      for(k=0; k<cell[j].npersist; k++)
    223225      {
     226/* Retire old burns */
     227         if(cell[j].time - cell[j].persist[k].time > EXPIRE_TRAIL_TIME)
     228            continue;
     229
    224230         if(PERSIST_RETAIN) {
    225231/* Keep fits which have a dubious slope */
     
    306312      (fh_table_write_value(table, data, row, AREA_TABLE_COL_NFIT,  &(area->nfit))  != FH_SUCCESS) ||
    307313      (fh_table_write_value(table, data, row, AREA_TABLE_COL_SXFIT, &(area->sxfit)) != FH_SUCCESS) ||
    308       (fh_table_write_value(table, data, row, AREA_TABLE_COL_EXFIT, &(area->exfit)) != FH_SUCCESS))
    309    {
    310       fprintf(stderr, "error: Error writing data to row %d of area table.\n", row);
     314      (fh_table_write_value(table, data, row, AREA_TABLE_COL_EXFIT, &(area->exfit)) != FH_SUCCESS) ||
     315      (fh_table_write_value(table, data, row, AREA_TABLE_COL_FITERR, &(area->fiterr)) != FH_SUCCESS))
     316   {
     317      fprintf(stderr, "\rerror: Error writing data to row %d of area table.\n", row);
    311318      return FH_BAD_VALUE;
    312319   }
     
    346353      for(k=0; k<cell[j].npersist; k++)
    347354      {
     355/* Retire old burns */
     356         if(cell[j].time - cell[j].persist[k].time > EXPIRE_TRAIL_TIME)
     357            continue;
     358
    348359         if(PERSIST_RETAIN) {
    349360/* Keep fits which have a dubious slope */
     
    422433      (fh_table_write_value(table, data, row, FIT_TABLE_COL_ZERO, &zero) != FH_SUCCESS))
    423434   {
    424       fprintf(stderr, "error: Error writing data to row %d of fit table.\n", row);
     435      fprintf(stderr, "\rerror: Error writing data to row %d of fit table.\n", row);
    425436      return FH_BAD_VALUE;
    426437   }
     
    460471      for(k=0; k<cell[j].npersist; k++)
    461472      {
     473/* Retire old burns */
     474         if(cell[j].time - cell[j].persist[k].time > EXPIRE_TRAIL_TIME)
     475            continue;
     476
    462477         if(PERSIST_RETAIN) {
    463478/* Keep fits which have a dubious slope */
     
    526541 */
    527542static fh_result
    528 read_area(fhTable * table, void * data, int row)
     543read_area(fhTable * table, void * data, int row, int apply)
    529544{
    530545   int cell_num;
     
    534549   {
    535550      fprintf(stderr,
    536               "error: Unable to get cell number from row %d of burn area table\n",
     551              "\rerror: Unable to get cell number from row %d of burn area table\n",
    537552              row);
    538553      return FH_BAD_VALUE;
     
    542557   if((cell_num < 0) || (cell_num > MAXCELL))
    543558   {
    544       fprintf(stderr, "error: illegal cell %d in area table row %d\n",
     559      fprintf(stderr, "\rerror: illegal cell %d in area table row %d\n",
    545560              cell_num, row);
    546561      boxbuf[row].cell = -1;
     
    573588      (fh_table_read_value(table, data, row, AREA_TABLE_COL_NFIT,  &(boxbuf[row].nfit)) != FH_SUCCESS) ||
    574589      (fh_table_read_value(table, data, row, AREA_TABLE_COL_SXFIT, &(boxbuf[row].sxfit)) != FH_SUCCESS) ||
    575       (fh_table_read_value(table, data, row, AREA_TABLE_COL_EXFIT, &(boxbuf[row].exfit)) != FH_SUCCESS))
     590      (fh_table_read_value(table, data, row, AREA_TABLE_COL_EXFIT, &(boxbuf[row].exfit)) != FH_SUCCESS) ||
     591      (fh_table_read_value(table, data, row, AREA_TABLE_COL_FITERR, &(boxbuf[row].fiterr)) != FH_SUCCESS))
    576592   {
    577593      fprintf(stderr,
    578               "error: Error reading values from row %d of burn area table\n",
     594              "\rerror: Error reading values from row %d of burn area table\n",
    579595              row);
    580596      boxbuf[row].nfit = 0;
     
    593609      boxbuf[row].xfit = (int *)calloc(boxbuf[row].nfit, sizeof(int));
    594610      boxbuf[row].yfit = (int *)calloc(boxbuf[row].nfit, sizeof(int));
    595       boxbuf[row].fiterr = 0;
     611
     612      if(boxbuf[row].zero == NULL ||
     613         boxbuf[row].xfit == NULL ||
     614         boxbuf[row].yfit == NULL) {
     615         fprintf(stderr, "\rerror: failed to alloc boxbuf\n");
     616         exit(-671);
     617      }
     618// 100203 JT: fiterr now saved and read, refit if not just an "apply"
     619      if(!apply) boxbuf[row].fiterr = 0;
    596620   }
    597621
     
    616640 */
    617641static fh_result
    618 read_area_table(HeaderUnit hu, fhTable * table)
     642read_area_table(HeaderUnit hu, fhTable * table, int apply)
    619643{
    620644   fh_result result = FH_INVALID;
     
    627651      (fh_get_int(hu, "TFIELDS", &num_cols) != FH_SUCCESS))
    628652   {
    629       fprintf(stderr, "error: Unable to find required keywords for area table dimensions\n");
     653      fprintf(stderr, "\rerror: Unable to find required keywords for area table dimensions\n");
    630654      return FH_NOT_FOUND;
    631655   }
     
    634658   if(num_cols != table->num_cols)
    635659   {
    636       fprintf(stderr, "error: %d-column area table found, expected %d cols.\n",
     660      fprintf(stderr, "\rerror: %d-column area table found, expected %d cols.\n",
    637661              num_cols, table->num_cols);
    638662      return FH_BAD_VALUE;
     
    642666   {
    643667      fprintf(stderr,
    644               "error: too many boxes in area table. Max is %d, got %d\n",
     668              "\rerror: too many boxes in area table. Max is %d, got %d\n",
    645669              MAXBURN, num_rows);
    646670      return FH_BAD_VALUE;
     
    654678   {
    655679      fprintf(stderr,
    656               "error: Unable to allocate %d bytes for area table.\n",
     680              "\rerror: Unable to allocate %d bytes for area table.\n",
    657681              table->table_size);
    658682      return FH_NO_MEMORY;
     
    662686                    table->table_size, FH_TYPESIZE_8) != FH_SUCCESS)
    663687   {
    664       fprintf(stderr, "error: Unable to map area table body for reading.\n");
     688      fprintf(stderr, "\rerror: Unable to map area table body for reading.\n");
    665689      free(data);
    666690      return FH_INVALID;
     
    669693   for(i = 0; i < num_rows; i++)
    670694   {
    671       if((result = read_area(table, data, i)) != FH_SUCCESS) break;
     695      if((result = read_area(table, data, i, apply)) != FH_SUCCESS) break;
    672696   }
    673697
     
    713737   {
    714738      fprintf(stderr,
    715               "error: Unable to get cell number from row %d of fit table\n",
     739              "\rerror: Unable to get cell number from row %d of fit table\n",
    716740              row);
    717741      return FH_BAD_VALUE;
     
    720744   if((*cell < 0) || (*cell > MAXCELL))
    721745   {
    722       fprintf(stderr, "error: illegal cell %d in fit table row %d\n",
     746      fprintf(stderr, "\rerror: illegal cell %d in fit table row %d\n",
    723747              *cell, row);
    724748     
     
    733757   {
    734758      fprintf(stderr,
    735               "error: Error reading values from row %d of burn area table\n",
     759              "\rerror: Error reading values from row %d of burn area table\n",
    736760              row);
    737761      return FH_BAD_VALUE;
     
    782806      (fh_get_int(hu, "TFIELDS", &num_cols) != FH_SUCCESS))
    783807   {
    784       fprintf(stderr, "error: Unable to find required keywords for fit table dimensions\n");
     808      fprintf(stderr, "\rerror: Unable to find required keywords for fit table dimensions\n");
    785809      return FH_NOT_FOUND;
    786810   }
     
    789813   if(num_cols != table->num_cols)
    790814   {
    791       fprintf(stderr, "error: %d-column fit table found, expected %d cols.\n",
     815      fprintf(stderr, "\rerror: %d-column fit table found, expected %d cols.\n",
    792816              num_cols, table->num_cols);
    793817      return FH_BAD_VALUE;
     
    805829   {
    806830      fprintf(stderr,
    807               "error: Unable to allocate %d bytes for area table.\n",
     831              "\rerror: Unable to allocate %d bytes for area table.\n",
    808832              table->table_size);
    809833      return FH_NO_MEMORY;
     
    811835   if(fh_read_image(hu, fh_file_desc(hu), data, table->table_size, FH_TYPESIZE_8) != FH_SUCCESS)
    812836   {
    813       fprintf(stderr, "error: Unable to read fit table body.\n");
     837      fprintf(stderr, "\rerror: Unable to read fit table body.\n");
    814838      free(data);
    815839      return FH_INVALID;
     
    836860         {
    837861            fprintf(stderr,
    838                     "error: Fit in table row %d does not match current area "
     862                    "\rerror: Fit in table row %d does not match current area "
    839863                    "(table cell=%d cx=%d cy=%d vs. area cell=%d cx=%d cy=%d)\n",
    840864                    fit_table_row,
     
    882906 */
    883907fh_result
    884 persist_fits_read(CELL *cell, const char * filename)
     908persist_fits_read(CELL *cell, const char * filename, int apply)
    885909{
    886910   HeaderUnit phu;
     
    891915   {
    892916      fprintf(stderr,
    893               "error: unable to create header structure for FITS file \"%s\"\n",
     917              "\rerror: unable to create header structure for FITS file \"%s\"\n",
    894918              filename);
    895919      return FH_NO_MEMORY;
     
    899923   if ((result = fh_file(phu, filename, FH_FILE_RDONLY)) != FH_SUCCESS)
    900924   {
    901       fprintf(stderr,
    902               "error: unable to open FITS file \"%s\"\n",
     925      fprintf(stderr, "\rerror: unable to open FITS file \"%s\"\n",
    903926              filename);
    904927      fh_destroy(phu);
     
    911934   if(!area_hu || !fit_hu)
    912935   {
    913       fprintf(stderr,
    914               "error: Unable to find persistence info in FITS file.\n");
     936      fprintf(stderr, "\rerror: Unable to find persistence info in FITS file.\n");
    915937      fh_destroy(phu);
    916938      return FH_NOT_FOUND;
     
    921943
    922944   fh_ehu_by_extname(phu, DEFAULT_EXTNAME_AREA_TABLE);
    923    if((result = read_area_table(area_hu, &area_table)) != FH_SUCCESS)
     945   if((result = read_area_table(area_hu, &area_table, apply)) != FH_SUCCESS)
    924946   {
    925947      free(area_table.strbuf);
    926948      free(fit_table.strbuf);
    927949      fh_destroy(phu);
     950      fprintf(stderr, "\rerror: Unable to read area table from FITS file.\n");
    928951      return result;
    929952   }
     
    935958      free(fit_table.strbuf);
    936959      fh_destroy(phu);
     960      fprintf(stderr, "\rerror: Unable to read fit table from FITS file.\n");
    937961      return result;
    938962   }
     
    961985      for(k=0; k<MAXCELL; k++) {
    962986         if( (i=cell[k].npersist) > 0) {
    963             cell[k].persist = (OBJBOX *)calloc(i, sizeof(OBJBOX));
     987            if( (cell[k].persist = (OBJBOX *)calloc(i, sizeof(OBJBOX))) == NULL) {
     988               fprintf(stderr, "\rerror: failed to alloc cell persist buffer\n");
     989               exit(-672);
     990            }
    964991            cell[k].npersist = 0;
    965992         }
     
    10181045   {
    10191046      fprintf(stderr,
    1020               "error: Unable to write correction info to FITS file. Correction FITS tables already exist.\n");
     1047              "\rerror: Unable to write correction info to FITS file. Correction FITS tables already exist.\n");
    10211048      return FH_NO_SPACE;
    10221049   }
     
    10251052   if ((fd = fh_file_desc(phu)) == -1)
    10261053   {
    1027       fprintf(stderr, "error: header passed has no associated file.\n");
     1054      fprintf(stderr, "\rerror: header passed has no associated file.\n");
    10281055      return FH_INVALID;
    10291056   }
     
    10331060   {
    10341061      fprintf(stderr,
    1035               "error: Unable to seek to end of file.\n");
     1062              "\rerror: Unable to seek to end of file.\n");
    10361063      return FH_IN_ERRNO;
    10371064   }
     
    10421069   {
    10431070      fprintf(stderr,
    1044               "error: Unable to create headers for correction FITS tables.\n");
     1071              "\rerror: Unable to create headers for correction FITS tables.\n");
    10451072      if(area_hu) fh_destroy(area_hu);
    10461073      if(fit_hu) fh_destroy(fit_hu);
     
    10661093      (fh_munmap_table(area_hu) != FH_SUCCESS))
    10671094   {
    1068       fprintf(stderr, "error: Error encountered writing area table to FITS file.\n");
     1095      fprintf(stderr, "\rerror: Error encountered writing area table to FITS file.\n");
    10691096      fh_destroy(fit_hu);
    10701097      free(area_table.strbuf);
     
    10871114      (fh_munmap_table(fit_hu) != FH_SUCCESS))
    10881115   {
    1089       fprintf(stderr, "error: Error encountered writing area table to FITS file.\n");
     1116      fprintf(stderr, "\rerror: Error encountered writing area table to FITS file.\n");
    10901117      free(area_table.strbuf);
    10911118      free(fit_table.strbuf);
     
    11491176   if(fh_get_int(phu_in, "NEXTEND", &num_extensions) != FH_SUCCESS)
    11501177   {
    1151       fprintf(stderr, "error: Unable to get NEXTEND from input primary FITS header.\n");
     1178      fprintf(stderr, "\rerror: Unable to get NEXTEND from input primary FITS header.\n");
    11521179      return FH_INVALID;
    11531180   }
     
    11571184   {
    11581185      fprintf(stderr,
    1159               "error: Unable to find persistence info in FITS file.\n");
     1186              "\rerror: Unable to find persistence info in FITS file.\n");
    11601187      return FH_INVALID;
    11611188   }
     
    11751202   if((fd_out = open(fileout, O_CREAT | O_RDWR, 0644)) < 0)
    11761203   {
    1177       fprintf(stderr, "error: Failed to open \"%s\" for output.\n",
     1204      fprintf(stderr, "\rerror: Failed to open \"%s\" for output.\n",
    11781205              fileout);
    11791206      exit(EXIT_FAILURE);
     
    11921219      (fh_write(phu_out, fd_out) != FH_SUCCESS))
    11931220   {
    1194       fprintf(stderr, "error: Unable to copy primary header to \"%s\"\n",
     1221      fprintf(stderr, "\rerror: Unable to copy primary header to \"%s\"\n",
    11951222              fileout);
    11961223      fh_destroy(phu_out);
     
    12091236      if(!(ehu_in = fh_ehu(phu_in, i)))
    12101237      {
    1211          fprintf(stderr, "error: Unable to read extension %d from input FITS file\n", i);
     1238         fprintf(stderr, "\rerror: Unable to read extension %d from input FITS file\n", i);
    12121239         fh_destroy(phu_out);
    12131240         close(fd_out);
     
    12171244      if (fh_get_str(ehu_in, "EXTNAME", extname, sizeof(extname)) != FH_SUCCESS)
    12181245      {
    1219          fprintf(stderr, "error: Unable to get EXTNAME from extension %d in input FITS file.\n", i);
     1246         fprintf(stderr, "\rerror: Unable to get EXTNAME from extension %d in input FITS file.\n", i);
    12201247         fh_destroy(phu_out);
    12211248         close(fd_out);
     
    12331260            (fh_reserve(ehu_out, (2880/80)) != FH_SUCCESS))
    12341261         {
    1235             fprintf(stderr, "error: Unable to copy extension %d to %s.\n", i, fileout);
     1262            fprintf(stderr, "\rerror: Unable to copy extension %d to %s.\n", i, fileout);
    12361263            fh_destroy(phu_out);
    12371264            close(fd_out);
     
    12481275            (fh_copy_padded_image(ehu_out, fd_out, fh_file_desc(ehu_in)) != FH_SUCCESS))
    12491276         {
    1250             fprintf(stderr, "error: Unable to copy extension %d to %s.\n", i, fileout);
     1277            fprintf(stderr, "\rerror: Unable to copy extension %d to %s.\n", i, fileout);
    12511278            fh_destroy(phu_out);
    12521279            close(fd_out);
  • trunk/extsrc/gpcsw/gpcsrc/fits/burntool/persist_fits.h

    r23924 r26766  
    2424
    2525fh_result
    26 persist_fits_read(CELL *cell, const char * filename);
     26persist_fits_read(CELL *cell, const char * filename, int apply);
    2727
    2828fh_result
  • trunk/extsrc/gpcsw/gpcsrc/fits/burntool/persistfix.c

    r23924 r26766  
    3434         }
    3535         continue;
     36      }
     37
     38/* This had a significant positive slope, what do we do now? */
     39      if( (cell->persist)[k].func == BURN_POSSLOPE) {
     40/* try again, so let it slide through... */
    3641      }
    3742
  • trunk/extsrc/gpcsw/gpcsrc/fits/burntool/persistio.c

    r25299 r26766  
    1616/****************************************************************/
    1717/* persist_read(): Read all the persistence trails from a file */
    18 STATIC int persist_read(CELL *cell, const char *infile)
     18STATIC int persist_read(CELL *cell, const char *infile, int apply)
    1919{
    2020   int i, k, nbox=0;
     
    3838   while(fgets(line, 1024, fp) != NULL) {
    3939      if(line[0] == '#') continue;
    40       sscanf(line, "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %lf %d %d %d",
     40      sscanf(line, "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %lf %d %d %d %d",
    4141             &boxbuf[nbox].cell, &boxbuf[nbox].time,
    4242             &boxbuf[nbox].cx, &boxbuf[nbox].cy,
     
    5050             &boxbuf[nbox].func, &boxbuf[nbox].up,
    5151             &boxbuf[nbox].slope, &boxbuf[nbox].nfit,
    52              &boxbuf[nbox].sxfit, &boxbuf[nbox].exfit);
     52             &boxbuf[nbox].sxfit, &boxbuf[nbox].exfit,
     53             &boxbuf[nbox].fiterr);
    5354      if(boxbuf[nbox].nfit > 0) {
    5455         boxbuf[nbox].zero = (double *)calloc(boxbuf[nbox].nfit, sizeof(double));
    5556         boxbuf[nbox].xfit = (int *)calloc(boxbuf[nbox].nfit, sizeof(int));
    5657         boxbuf[nbox].yfit = (int *)calloc(boxbuf[nbox].nfit, sizeof(int));
     58         if(boxbuf[nbox].zero == NULL ||
     59            boxbuf[nbox].xfit == NULL ||
     60            boxbuf[nbox].yfit == NULL) {
     61            fprintf(stderr, "\rerror: failed to alloc boxbuf\n");
     62            exit(-673);
     63         }
     64
    5765         for(i=0; i<boxbuf[nbox].nfit; i++) {
    5866            if(fgets(line, 1024, fp) == NULL) {
     
    6472         }
    6573      }
    66       boxbuf[nbox].fiterr = 0;
     74// 100203 JT: fiterr now saved and read, refit if not just an "apply"
     75      if(!apply) boxbuf[nbox].fiterr = 0;
    6776/* Augment counts */
    6877      k = boxbuf[nbox].cell;
     
    8594   for(k=0; k<MAXCELL; k++) {
    8695      if( (i=cell[k].npersist) > 0) {
    87          cell[k].persist = (OBJBOX *)calloc(i, sizeof(OBJBOX));
     96         if( (cell[k].persist = (OBJBOX *)calloc(i, sizeof(OBJBOX))) == NULL) {
     97            fprintf(stderr, "\rerror: failed to alloc cell persist buffer\n");
     98            exit(-674);
     99         }
    88100         cell[k].npersist = 0;
    89101      }
     
    242254      for(k=0; k<cell[j].npersist; k++) {
    243255
     256/* Retire old burns */
     257         if(cell[j].time - cell[j].persist[k].time > EXPIRE_TRAIL_TIME)
     258            continue;
     259
    244260         if(PERSIST_RETAIN) {
    245261/* Keep fits which have a dubious slope */
     
    252268            if(cell[j].persist[k].nfit <= 0) continue;
    253269         }
    254          fprintf(fp, "%3d %7d  %3d %3d %5d %3d  %3d %3d  %3d %3d  %3d %3d %3d %3d %3d %3d %3d %3d  %1d %1d %9.6f %3d %3d %3d\n",
     270         fprintf(fp, "%3d %7d  %3d %3d %5d %3d  %3d %3d  %3d %3d  %3d %3d %3d %3d %3d %3d %3d %3d  %1d %1d %9.6f %3d %3d %3d %d\n",
    255271                 j, cell[j].persist[k].time,
    256272                 cell[j].persist[k].cx, cell[j].persist[k].cy,
     
    264280                 cell[j].persist[k].func, cell[j].persist[k].up,
    265281                 cell[j].persist[k].slope, cell[j].persist[k].nfit,
    266                  cell[j].persist[k].sxfit, cell[j].persist[k].exfit);
     282                 cell[j].persist[k].sxfit, cell[j].persist[k].exfit,
     283                 cell[j].persist[k].fiterr);
    267284         for(i=0; i<cell[j].persist[k].nfit; i++) {
    268285            fprintf(fp, "%3d %3d %8.4f\n", cell[j].persist[k].xfit[i],
     
    288305
    289306         i = (cell[j].burn[k].ex - cell[j].burn[k].sx + 1) / 2;
    290          fprintf(fp, "%3d %7d  %3d %3d %5d %3d  %3d %3d  %3d %3d  %3d %3d %3d %3d %3d %3d %3d %3d  %1d %1d %9.6f %3d %3d %3d\n",
     307         fprintf(fp, "%3d %7d  %3d %3d %5d %3d  %3d %3d  %3d %3d  %3d %3d %3d %3d %3d %3d %3d %3d  %1d %1d %9.6f %3d %3d %3d %d\n",
    291308                 j, cell[j].burn[k].time,
    292309                 cell[j].burn[k].cx, cell[j].burn[k].cy,
     
    300317                 cell[j].burn[k].func, cell[j].burn[k].up,
    301318                 cell[j].burn[k].slope, cell[j].burn[k].nfit,
    302                  cell[j].burn[k].sxfit, cell[j].burn[k].exfit);
     319                 cell[j].burn[k].sxfit, cell[j].burn[k].exfit,
     320                 cell[j].burn[k].fiterr);
    303321         for(i=0; i<cell[j].burn[k].nfit; i++) {
    304322            fprintf(fp, "%3d %3d %8.4f\n", cell[j].burn[k].xfit[i],
  • trunk/extsrc/gpcsw/gpcsrc/fits/burntool/psfstamp.c

    r25438 r26766  
    112112
    113113/* Make a postage stamp for it */
    114       box[k].stamp = (IMTYPE *)calloc(size*size, sizeof(IMTYPE));
     114      if( (box[k].stamp = (IMTYPE *)calloc(size*size, sizeof(IMTYPE))) == NULL) {
     115         fprintf(stderr, "\rerror: failed to stamp buffer\n");
     116         exit(-675);
     117      }
     118
    115119      sum = 0;
    116120      for(j=y0; j<=y1; j++) {
     
    136140   int i, k, l, nstar, fdout, otacx, otacy, xid, yid, ntot=0, sumax;
    137141   int cellcount, ota_xid, ota_yid;
    138    double scale, phi, fwhm[3], q[5], qt, xfp, yfp, pi=4*atan(1.0);
     142   double scale, phi, fwhm[3], q[7], qt, xfp, yfp, pi=4*atan(1.0);
    139143   IMTYPE *median_image;
    140144   CELL *cell;
     
    171175
    172176/* Create a median image and write as the first one */
    173    median_image = (IMTYPE *)calloc(nx*ny, sizeof(IMTYPE));
     177   if( (median_image = (IMTYPE *)calloc(nx*ny, sizeof(IMTYPE))) == NULL) {
     178      fprintf(stderr, "\rerror: failed to alloc median PSF image\n");
     179      exit(-676);
     180   }
    174181   for(i=0; i<nx*ny; i++) {
    175182      nstar = 0;
     
    256263   int k, l, cellx, celly, ota_xid, ota_yid, nfwave, nqavg;
    257264   double xota, yota, xfp, yfp, phi;
    258    double fwhm[3], q[5], fw[MAXPSFMEDIAN];
     265   double fwhm[3], q[7], fw[MAXPSFMEDIAN];
    259266   double m2[MAXPSFMEDIAN], qp[MAXPSFMEDIAN], qc[MAXPSFMEDIAN];
    260267   double qt[MAXPSFMEDIAN], fwavg[MAXPSFMEDIAN];
     268   double qpavg[MAXPSFMEDIAN], qcavg[MAXPSFMEDIAN], qtavg[MAXPSFMEDIAN];
    261269   double q3c[MAXPSFMEDIAN], q3s[MAXPSFMEDIAN];
    262    double qpavg[MAXPSFMEDIAN], qcavg[MAXPSFMEDIAN], qtavg[MAXPSFMEDIAN];
    263270   double q3cavg[MAXPSFMEDIAN], q3savg[MAXPSFMEDIAN];
     271   double q1c[MAXPSFMEDIAN], q1s[MAXPSFMEDIAN];
     272   double q1cavg[MAXPSFMEDIAN], q1savg[MAXPSFMEDIAN];
    264273   int nstar[MAXCELL], nfw[MAXCELL];
    265274   double fwmed[MAXCELL], m2med[MAXCELL];
    266275   double qpmed[MAXCELL], qcmed[MAXCELL], qtmed[MAXCELL];
    267276   double q3cmed[MAXCELL], q3smed[MAXCELL];
    268    double qpmacro, qcmacro, qtmacro, fwmacro, q3cmacro, q3smacro;
     277   double q1cmed[MAXCELL], q1smed[MAXCELL];
     278   double qpmacro, qcmacro, qtmacro, fwmacro, q3cmacro, q3smacro, q1cmacro, q1smacro;
    269279   FILE *fp;
    270280   CELL *cell;
     
    310320                     q3c[nstar[k]] = q[3];
    311321                     q3s[nstar[k]] = q[4];
     322                     q1c[nstar[k]] = q[5];
     323                     q1s[nstar[k]] = q[6];
    312324/* Get the position in the focal plane and therefore the qt statistic */
    313325                     psc_cell_to_pixel(cellx, celly, 0.5*PSC_HCELL/PSC_PIXEL,
     
    333345                  q3cmed[k] = double_median(nstar[k], q3c);
    334346                  q3smed[k] = double_median(nstar[k], q3s);
     347                  q1cmed[k] = double_median(nstar[k], q1c);
     348                  q1smed[k] = double_median(nstar[k], q1s);
    335349               } else {
    336350                  m2med[k] = qpmed[k] = qcmed[k] = qtmed[k] = -99.99;
    337351                  q3cmed[k] = q3smed[k] = -99.99;
     352                  q1cmed[k] = q1smed[k] = -99.99;
    338353               }
    339354/* Toss these results into the macrocell median hopper */
     
    348363                     q3cavg[nqavg] = q3c[l];
    349364                     q3savg[nqavg] = q3s[l];
     365                     q1cavg[nqavg] = q1c[l];
     366                     q1savg[nqavg] = q1s[l];
    350367                     nqavg++;
    351368                  }
     
    359376         q3cmacro = double_median(nqavg, q3cavg);
    360377         q3smacro = double_median(nqavg, q3savg);
    361          if(nqavg == 0) qpmacro = qcmacro = qtmacro = q3cmacro = q3smacro = -99.99;
     378         q1cmacro = double_median(nqavg, q1cavg);
     379         q1smacro = double_median(nqavg, q1savg);
     380         if(nqavg == 0) qpmacro = qcmacro = qtmacro = q3cmacro = q3smacro = q1cmacro = q1smacro = -99.99;
    362381         fwmacro = double_median(nfwave, fwavg);
    363382
     
    370389               cell = ota + k;
    371390
    372                fprintf(fp, "ext=xy%1d%1d bias=%d sky=%d rmssky=%d npsf=%d fwhm=%.2f fwmed=%.2f m2=%.2f qp=%.3f qc=%.3f qt=%.3f q3c=%.3f q3s=%.3f qpm=%.3f qcm=%.3f qtm=%.3f q3cm=%.3f q3sm=%.3f\n",
     391               fprintf(fp, "ext=xy%1d%1d bias=%d sky=%d rmssky=%d npsf=%d fwhm=%.2f fwmed=%.2f m2=%.2f qp=%.3f qc=%.3f qt=%.3f q3c=%.3f q3s=%.3f q1c=%.3f q1s=%.3f qpm=%.3f qcm=%.3f qtm=%.3f q3cm=%.3f q3sm=%.3f q1cm=%.3f q1sm=%.3f\n",
    373392                       cellx, celly, cell->bias, cell->sky, cell->rms,
    374393                       nstar[k], fwmed[k], fwmacro, m2med[k],
    375                        qpmed[k], qcmed[k], qtmed[k], q3cmed[k], q3smed[k],
    376                        qpmacro, qcmacro, qtmacro, q3cmacro, q3smacro);
     394                       qpmed[k], qcmed[k], qtmed[k], q3cmed[k], q3smed[k],
     395                       q1cmed[k], q1smed[k],
     396                       qpmacro, qcmacro, qtmacro, q3cmacro, q3smacro,
     397                       q1cmacro, q1smacro);
    377398            }
    378399         }
  • trunk/extsrc/gpcsw/gpcsrc/fits/burntool/stardetect.c

    r25070 r26766  
    193193   cell->burn = (OBJBOX *)calloc(cell->nburn, sizeof(OBJBOX));
    194194   cell->star = (OBJBOX *)calloc(cell->nstar, sizeof(OBJBOX));
     195   if( cell->burn == NULL || cell->star == NULL) {
     196      fprintf(stderr, "\rerror: failed to alloc burn box\n");
     197      exit(-678);
     198   }
    195199
    196200/* Copy the boxes to the cell info structure */
  • trunk/extsrc/gpcsw/gpcsrc/fits/burntool/trailfit.c

    r25299 r26766  
    3030
    3131   if(box->func != BURN_PWR && box->func != BURN_EXP) {
    32       fprintf(stderr, "error: unimplemented fit function %d\n", box->func);
     32      fprintf(stderr, "error: unimplemented fit function %d (err %d)\n",
     33              box->func, box->fiterr);
    3334      return(-1);
    3435   }
     
    137138   box->xfit = (int *)calloc(xe-xs+1, sizeof(int));
    138139   box->yfit = (int *)calloc(xe-xs+1, sizeof(int));
     140   if(box->zero == NULL || box->xfit == NULL || box->yfit == NULL) {
     141      fprintf(stderr, "\rerror: failed to alloc box memory\n");
     142      exit(-679);
     143   }
    139144/* Some defaults */
    140145   box->slope = 0.0;
     
    229234      box->nfit = 0;
    230235      box->fiterr = FIT_SLOPE_ERROR;
     236/* Check whether it's a significant trail (but with pos slope) or just noise */
     237      linearrms(nfit, ybuf+y1, zbuf+y1, slope, zero, &trial);
     238/* 100203 JT: bad idea: appears to be a bug in read/writing ABS(nfit) */
     239//      if(trial > 2*rms) box->nfit = -box->nfit;
     240      if(trial > 2*rms) box->func = BURN_POSSLOPE;
    231241      return(-1);
    232242   }
     
    268278/* FIXME: what's a really good criterion for negligible fit? */
    269279/* 100 pixels up fit is zsum or ~zsum/e */
    270       if(zsum > NEGLIGIBLE_TRAIL*rms) {
     280//      if(zsum > NEGLIGIBLE_TRAIL*rms) {
     281      if(zsum > NEGLIGIBLE_TRAIL*rms ||
     282/* 100113: but also evaluate at the end of the fit for stubby trails */
     283         zbuf[y2]*zsum > NEGLIGIBLE_TRAIL*rms) {
    271284
    272285/* Ascertain the starting point of where the fit is good */
  • trunk/extsrc/gpcsw/gpcsrc/fits/libfhreg/general.h

    r23490 r26766  
    7979MK_PFL( 10.0,   BZERO   ,1, "Zero factor"                                     )
    8080MK_PFL( 11.0,   BSCALE  ,1, "Scale factor"                                    )
     81MK_STR( 12.0,   BUNIT   ,   "fits-data * BSCALE + BZERO = these units"        )
    8182
    8283/*
     
    9091MK_CMT(   50.5, CMTSUM5 ,   ""                                                )
    9192MK_STR(   51.0, CMMTOBS ,   ""                                                )
     93MK_STR(   51.1, CMMTOBS1,   ""                                                )
     94MK_STR(   51.2, CMMTOBS2,   ""                                                )
     95MK_STR(   51.3, CMMTOBS3,   ""                                                )
     96MK_STR(   51.4, CMMTOBS4,   ""                                                )
     97MK_STR(   51.5, CMMTOBS5,   ""                                                )
     98MK_STR(   51.6, CMMTOBS6,   ""                                                )
     99MK_STR(   51.7, CMMTOBS7,   ""                                                )
     100MK_STR(   51.8, CMMTOBS8,   ""                                                )
     101MK_STR(   51.9, CMMTOBS9,   ""                                                )
    92102MK_STR(   52.0, CMMTSEQ ,   ""                                                )
    93103MK_STR(   53.0, OBJECT  ,   ""                                                )
     
    127137
    128138MK_STR(   95.0, OBSTYPE,    "Observation/Exposure type"                       )
    129 MK_PFL(   96.0, EXPTIME,3,  "Exposure time (seconds)"                         )
    130 MK_PFL(   96.1, EXPREQ ,3,  "Exposure time requested (seconds)"               )
    131 MK_PFL(   97.0, DARKTIME,3, "Dark current time (seconds)"                     )
     139MK_PFL(   96.0, EXPTIME,3,  "[sec] Exposure time"                             )
     140MK_PFL(   96.1, EXPREQ ,3,  "[sec] Exposure time requested"                   )
     141MK_PFL(   97.0, DARKTIME,3, "[sec] Dark current time"                         )
     142MK_INT(   97.5,  PONTIME,   "[sec] Time since last detector \"power on\""     )
     143MK_INT(   97.6,  SATTIME,   "[sec] Time since last detected saturation event" )
     144MK_INT(   97.7,  TRKTIME,   "[sec] Time since last detected tracking error"   )
     145MK_INT(   97.8,  VDOTIME,   "[sec] Time since \"video\" command used"         )
  • trunk/extsrc/gpcsw/gpcsrc/fits/libfhreg/gpc_all.h

    r23490 r26766  
    2020#include "gpc_wcs.h"
    2121#include "gpc_plant.h"
     22#include "gpc_postprocess.h"
  • trunk/extsrc/gpcsw/gpcsrc/fits/libfhreg/gpc_detector.h

    r23490 r26766  
    6969MK_INT(  152.1, SATURATE,   "[ADU] Saturation value"                          )
    7070MK_FLT(  155.0, GAIN    ,3, "[e/ADU] est. gain from xray"                     )
    71 MK_FLT(  155.9, XRNOISE, 2, "[ADU] RMS noise in overscan on xray"             )
    72 MK_FLT(  156.0, RDNOISE ,2, "[ADU] RMS Read noise on overscan"                )
     71MK_FLT(  155.9, XRNOISE, 3, "[e] RMS noise in overscan on xray"               )
     72MK_FLT(  156.0, RDNOISE ,3, "[e] Read noise"                                  )
    7373MK_FLT(  157.0, DCURRENT,5, "[ADU/pixel/sec] Dark current"                    )
    7474MK_FLT(  157.1, DARKCUR ,5, "[e-/pixel/hour] Dark current"                    )
    7575MK_STR(  158.0, QEPOINTS,   "QE%@wavelength in nm"                            )
    7676MK_INT(  159.0, BIASLVL,    "[ADU] Bias level (overscan mean)"                )
    77 MK_INT(  159.2, BACKEST,    "[ADU] Background level est., overscan corrected" )
     77MK_INT(  159.2, BACKEST,    "[ADU] Background level estimation"              )
    7878MK_STR(  165.0, DETSTAT ,   "Detector status"                                 )
    7979MK_FLT(  166.0, DETTEM  ,3, "[C] Detector temperature"                        )
     80MK_CMT(  166.1, CMTDETT1,   "If DETTEMOV is T, DETTEMP was overridden. Old"   )
     81MK_CMT(  166.2, CMTDETT2,   "temp. is CDETTEM and new temp. was derived as:"  )
     82MK_CMT(  166.3, CMTDETT3,   "V = (ADU-B) / (A*32768)"                         )
     83MK_CMT(  166.4, CMTDETT4,   "T = 3369-sqrt[3369^2+1313^2*(13.1*V-1)/(V-1)]"   )
     84MK_BLN(  166.5, DETTEMOV,   "Detector temperature overridden"                 )
     85MK_INT(  166.6, DETTEADU,   "[ADU] Detector temperature A/D measurement"      )
     86MK_PFL(  166.7, DETTCOFA,3, "Coefficient A used in overriding detector temp." )
     87MK_INT(  166.8, DETTCOFB,   "Coefficient B used in overriding detector temp." )
     88MK_FLT(  166.9, CDETTEM ,3, "[C] Detector temperature calc. by controller"    )
    8089MK_PFL(  170.0, PIXSIZE ,3, "[um] Pixel size for both axes"                   )
    8190MK_PFL(  171.1, PIXSIZE1,3, "[um] Pixel size for axis 1"                      )
     
    105114MK_INT(  185.2, CCDBIN2 ,   "Binning factor along axis 2"                     )
    106115MK_INT(  186.1, PRESCAN1,   "Prescan count on axis 1"                         )
     116MK_INT(  186.11,PRESCANX,   "Post-xtrig-bias portion of prescan1"             )
    107117MK_INT(  186.2, PRESCAN2,   "Prescan count on axis 2"                         )
    108118MK_INT(  187.1, OVRSCAN1,   "Overscan count on axis 1"                        )
     
    144154MK_INT(  198.07,CON_UP,     "[seconds] Controller up-time"                    )
    145155MK_STR(  198.08,CON_VSUM,   "Device operating point md5sum"                   )
     156MK_INT(  198.10,FPGASER,    "Controller FPGA board serial number"             )
     157MK_STR(  198.11,FPGAVER,    "Controller FPGA board version"                   )
     158MK_STR(  198.12,FPGATAR,    "Controller FPGA board target system"             )
     159MK_STR(  198.13,FPGAEC,     "Controller FPGA board engineering changes"       )
     160MK_INT(  198.20,DAQ3USER,   "Controller DAQ3U board serial number"            )
     161MK_STR(  198.21,DAQ3UVER,   "Controller DAQ3U board version"                  )
     162MK_STR(  198.22,DAQ3UTAR,   "Controller DAQ3U board target system"            )
     163MK_STR(  198.23,DAQ3UEC,    "Controller DAQ3U board engineering changes"      )
     164MK_INT(  198.20,PREAMSER,   "Controller Preamp board serial number"           )
     165MK_STR(  198.21,PREAMVER,   "Controller Preamp board version"                 )
     166MK_STR(  198.22,PREAMTAR,   "Controller Preamp board target system"           )
     167MK_STR(  198.23,PREAMEC,    "Controller Preamp board engineering changes"     )
     168MK_INT(  198.30,DAQLBSER,   "DAQ3U loopback test board serial number"         )
     169MK_STR(  198.31,DAQLBVER,   "DAQ3U loopback test board version"               )
     170MK_STR(  198.32,DAQLBTAR,   "DAQ3U loopback test board target system"         )
     171MK_STR(  198.33,DAQLBEC,    "DAQ3U loopback test board engineering changes"   )
    146172MK_INT(  198.40,TSP_SHOP,   "Milliseconds from last clean to shutter open"    )
    147173MK_INT(  198.41,TSP_SHCL,   "Milliseconds from last clean to shutter close"   )
  • trunk/extsrc/gpcsw/gpcsrc/fits/libfhreg/gpc_instrument.h

    r23490 r26766  
    6363MK_PFL( 1009.11,L3AIRTMP,1, "[C] Air temperature in space above L3"           )
    6464MK_PFL( 1009.12,L3DEWPT, 1, "[C] Calculated dew point in space above L3"      )
     65MK_PFL( 1009.20,ENHUMID, 1, "[%] Rel. humidity of cam. evironment (ferit)"    )
     66MK_PFL( 1009.21,ENAIRTMP,1, "[C] Air temperature of camera environment"       )
     67MK_PFL( 1009.22,ENDEWPT, 1, "[C] Calculated dew point of camera environment"  )
     68MK_STR( 1009.30,GLYSTAT,    "Camera heat exchanger glycol status"             )
     69MK_STR( 1009.31,GLYMODE,    "Camera heat exchanger glycol mode"               )
    6570MK_STR( 1010.0, FILTSTAT,   "Filter mechanism status"                         )
    6671MK_STR( 1010.1, FILTERID,   "Filter glass identification"                     )
     
    8085MK_INT( 1224.0, SH_ARMPN  , "motion controller input pins"                    )
    8186MK_PFL( 1225.0, SH_DIODE,1, "Vref/4096 (Vref=5V nominal) photodiode volts"    )
     87MK_STR( 1260.1, CS_LIGHT,   "Cal screen laser status during exposure"         )
     88MK_STR( 1261.0, CS_LIMIT,   "Cal screen laser exposure limit: time|volt"      )
     89MK_PFL( 1262.0, CS_WAVE,1,  "Cal screen laser wavelength"                     )
     90MK_PFL( 1263.0, CS_EXPT,1,  "Cal screen laser exposure time"                  )
     91MK_PFL( 1264.0, CS_VOLTS,3, "Cal screen laser photodiode limit voltage"       )
     92MK_PFL( 1265.1, CS_INTV1,3, "Cal screen photodiode integrator pre-voltage"    )
     93MK_PFL( 1265.2, CS_INTV2,3, "Cal screen photodiode integrator start-voltage"  )
     94MK_PFL( 1265.3, CS_INTV3,3, "Cal screen photodiode integrator stop-voltage"   )
     95MK_PFL( 1265.4, CS_INTV4,3, "Cal screen photodiode integrator post-voltage"   )
     96MK_PFL( 1266.1, CS_INTT1,3, "Cal screen photodiode integrator pre-seconds"    )
     97MK_PFL( 1266.2, CS_INTT2,3, "Cal screen photodiode integrator exposure sec"   )
     98MK_PFL( 1266.3, CS_INTT3,3, "Cal screen photodiode integrator post-seconds"   )
     99MK_PFL( 1267.0, CS_SHOP,3,  "GPC1 shutter open start"                         )
     100MK_PFL( 1268.0, CS_SHCL,3,  "GPC1 shutter close start"                        )
     101
  • trunk/extsrc/gpcsw/gpcsrc/fits/libfhreg/gpc_shutter.h

    r23490 r26766  
    5757MK_STR(  201.0, SHUTSTAT,   "Shutter status"                                  )
    5858MK_STR(  201.1, SHUTERR,    "Shutter error code"                              )
    59 MK_STR(  202.00,SHUTOPEN,   "Shutter open time (TAI)"                         )
    60 MK_STR(  202.01,SHUTCLOS,   "Shutter close time (TAI)"                        )
    61 MK_PFL(  202.02,SHUTOPWN,6, "Shutter open uncertainty before SHUTOPEN (sec)"  )
    62 MK_PFL(  202.03,SHUTCLWN,6, "Shutter close uncertainty before SHUTCLOS (sec)" )
    63 MK_STR(  202.04,SHUTOUTC,   "Shutter open time (UTC)"                         )
    64 MK_STR(  202.05,SHUTCUTC,   "Shutter close time (UTC)"                        )
    65 MK_INT(  202.06,SHUTLEAP,   "Leap seconds used in TAI-UTC conversion (sec)"   )
    66 MK_PFL(  202.07,SHUTREQ, 6, "Requested exposure duration (sec)"               )
    67 MK_PFL(  202.08,SHUTTIME,6, "Actual exposure duration (sec)"                  )
     59MK_STR(  202.00,SHUTOPEN,   "[TAI date time] Shutter open time"               )
     60MK_STR(  202.01,SHUTCLOS,   "[TAI date time] Shutter close time"              )
     61MK_PFL(  202.02,SHUTOPWN,6, "[sec] Shutter open uncertainty before SHUTOPEN"  )
     62MK_PFL(  202.03,SHUTCLWN,6, "[sec] Shutter close uncertainty before SHUTCLOS" )
     63MK_STR(  202.04,SHUTOUTC,   "[UTC date time] Shutter open time"               )
     64MK_STR(  202.05,SHUTCUTC,   "[UTC date time] Shutter close time"              )
     65MK_INT(  202.06,SHUTLEAP,   "[sec] Leap seconds used in TAI-UTC conversion"   )
     66MK_PFL(  202.07,SHUTREQ, 6, "[sec] Requested exposure duration"               )
     67MK_PFL(  202.08,SHUTTIME,6, "[sec] Actual exposure duration"                  )
    6868MK_STR(  202.09,SHUTOPBL,   "Shutter blade in aperture at start of exposure"  )
    6969MK_STR(  202.10,SHUTCLBL,   "Shutter blade in aperture at end of exposure"    )
  • trunk/extsrc/gpcsw/gpcsrc/fits/libfhreg/gpc_telescope.h

    r24391 r26766  
    7070MK_STR(  503.0, TELSTAT ,   "Telescope control system status"                 )
    7171MK_STR(  503.1, DOMSTAT ,   "Telescope enclosure status"                      )
    72 MK_STR(  503.2, GUISTAT ,   "Telescope guiding system status"                 )
    73 MK_STR(  503.3, GUICONF ,   "Telescope guiding configuration"                 )
    74 MK_STR(  503.4, GUIKERN ,   "Filter kernel used for guiding"                  )
    75 MK_PFL(  503.5, GUIGAIX ,2, "Telescope guiding gain factor (x offset)"        )
    76 MK_PFL(  503.6, GUIGAIY ,2, "Telescope guiding gain factor (y offset)"        )
    77 MK_PFL(  503.7, GUIRATE ,1, "Telescope guiding rate (Hz)"                     )
    7872MK_VAL(  521.1, EQUINOX ,   "Telescope equinox of coordinates"                )
    7973MK_VAL(  521.2, EPOCH   ,   "Telescope equinox of coordinates"                )
    80 MK_PFL(  522.1, RA      ,6, "Telescope Right Ascension (degrees)"             )
    81 MK_PFL(  522.2, DEC     ,6, "Telescope Declination (degrees)"                 )
    82 MK_PFL(  522.3, AZ      ,6, "Telescope azimuth (degrees)"                     )
    83 MK_PFL(  522.4, ALT     ,6, "Telescope pointing altitude (degrees)"           )
    84 MK_PFL(  522.5, ROT     ,6, "Telescope rotator angle (degrees)"               )
    85 MK_PFL(  522.6, POSANGLE,6, "Telescope position angle (degrees)"              )
    86 MK_PFL(  523.0, COMRA   ,6, "Commanded telescope Right Ascension (degrees)"   )
    87 MK_PFL(  523.1, COMDEC  ,6, "Commanded telescope Declination (degrees)"       )
    88 MK_PFL(  523.2, COMAZ   ,6, "Commanded telescope azimuth (degrees)"           )
    89 MK_PFL(  523.3, COMALT  ,6, "Commanded telescope pointing altitude (degrees)" )
    90 MK_PFL(  523.4, COMROT  ,6, "Commanded telescope rotator angle (degrees)"     )
    91 MK_PFL(  523.5, MOONANG ,6, "Angular distance to moon (degrees)" )
     74MK_PFL(  522.1, RA      ,6, "[deg] Telescope FOV center Right Ascension"      )
     75MK_PFL(  522.2, DEC     ,6, "[deg] Telescope FOV center Declination"          )
     76MK_STR(  522.21,RASTRNG ,   "[deg:mm:ss] Telescope sexagesimal Right Ascen."  )
     77MK_STR(  522.22,DECSTRNG,   "[deg:mm:ss] Telescope sexagesimal Declination"   )
     78MK_PFL(  522.3, AZ      ,6, "[deg] Telescope azimuth"                         )
     79MK_PFL(  522.4, ALT     ,6, "[deg] Telescope pointing altitude"               )
     80MK_PFL(  522.5, ROT     ,6, "[deg] Telescope rotator angle"                   )
     81MK_PFL(  522.6, POSANGLE,6, "[deg] Telescope position angle"                  )
     82MK_PFL(  523.0, COMRA   ,6, "[deg] Commanded telescope Right Ascension"       )
     83MK_PFL(  523.1, COMDEC  ,6, "[deg] Commanded telescope Declination"           )
     84MK_PFL(  523.2, COMAZ   ,6, "[deg] Commanded telescope azimuth"               )
     85MK_PFL(  523.3, COMALT  ,6, "[deg] Commanded telescope pointing altitude"     )
     86MK_PFL(  523.4, COMROT  ,6, "[deg] Commanded telescope rotator angle"         )
     87MK_PFL(  523.5, MOONANG ,6, "[deg] Angular distance to moon"                  )
     88MK_PFL(  523.6, AIRMASS ,3, "Airmass at start of observation"                 )
    9289MK_CMT(  530.00,CMTTELO1,   "NOTE: Telescope RA DEC or ALT AZ already include")
    9390MK_CMT(  530.10,CMTTELO2,   "      the following offsets.  Do not re-apply!"  )
    94 MK_PFL(  532.1, TELOFRA ,6, "Telescope offset in RA (degrees)"                )
    95 MK_PFL(  532.2, TELOFDEC,6, "Telescope offset in DEC (degrees)"               )
    96 MK_PFL(  532.3, TELOFAZ ,6, "Telescope offset in AZ (degrees)"                )
    97 MK_PFL(  532.4, TELOFALT,6, "Telescope offset in ALT (degrees)"               )
    98 MK_PFL(  532.5, TELOFROT,6, "Telescope offset in ROT (degrees)"               )
    99 MK_PFL(  532.7, TELOFX  ,6, "Telescope offset in camera X (degrees)"          )
    100 MK_PFL(  532.8, TELOFY  ,6, "Telescope offset in camera Y (degrees)"          )
    101 MK_PFL(  540.1, AIRMASS ,3, "Airmass at start of observation"                 )
    102 MK_PFL(  541.1, M1X     ,6, "Primary mirror x position (um)"                  )
    103 MK_PFL(  541.2, M1Y     ,6, "Primary mirror y position (um)"                  )
    104 MK_PFL(  541.3, M1Z     ,6, "Primary mirror z position (um)"                  )
    105 MK_PFL(  541.4, M1TIP   ,6, "Primary mirror tip (arcsec)"                     )
    106 MK_PFL(  541.5, M1TILT  ,6, "Primary mirror tilt (arcsec)"                    )
    107 MK_PFL(  542.1, M2X     ,6, "Secondary mirror x position (um)"                )
    108 MK_PFL(  542.2, M2Y     ,6, "Secondary mirror y position (um)"                )
    109 MK_PFL(  542.3, M2Z     ,6, "Secondary mirror z position (um)"                )
    110 MK_PFL(  542.4, M2TIP   ,6, "Secondary mirror tip (arcsec)"                   )
    111 MK_PFL(  542.5, M2TILT  ,6, "Secondary mirror tilt (arcsec)"                  )
     91MK_PFL(  532.1, TELOFRA ,6, "[deg] Telescope offset in RA"                    )
     92MK_PFL(  532.2, TELOFDEC,6, "[deg] Telescope offset in DEC"                   )
     93MK_PFL(  532.3, TELOFAZ ,6, "[deg] Telescope offset in AZ"                    )
     94MK_PFL(  532.4, TELOFALT,6, "[deg] Telescope offset in ALT"                   )
     95MK_PFL(  532.5, TELOFROT,6, "[deg] Telescope offset in ROT"                   )
     96MK_PFL(  532.7, TELOFX  ,6, "[deg] Telescope offset in camera X"              )
     97MK_PFL(  532.8, TELOFY  ,6, "[deg] Telescope offset in camera Y"              )
     98
     99/*
     100 * Guiding
     101 */
     102MK_STR(  540.00,GUISTAT ,   "Telescope guiding system status"                 )
     103MK_STR(  540.01,GUICONF ,   "Telescope guiding configuration"                 )
     104MK_STR(  540.02,GUISTAR ,   "Telescope guiding (single or multi-star)"        )
     105MK_BLN(  540.03,GUIROTEN,   "Telescope guiding rotation enabled"              )
     106MK_PFL(  540.10,GUIGAIX ,2, "Telescope guiding gain factor (x offset)"        )
     107MK_PFL(  540.11,GUIGAIY ,2, "Telescope guiding gain factor (y offset)"        )
     108MK_PFL(  540.12,GUIRATE ,1, "[Hz] Telescope guiding rate"                     )
     109MK_STR(  540.20,GUIKERN ,   "Filter kernel used for guiding"                  )
     110MK_STR(  540.21,GUIKERN1,   "Filter kernel used for guiding (cont)"           )
     111MK_STR(  540.22,GUIKERN2,   "Filter kernel used for guiding (cont)"           )
     112MK_STR(  540.23,GUIKERN3,   "Filter kernel used for guiding (cont)"           )
     113MK_STR(  540.24,GUIKERN4,   "Filter kernel used for guiding (cont)"           )
     114MK_STR(  540.25,GUIKERN5,   "Filter kernel used for guiding (cont)"           )
     115MK_STR(  540.26,GUIKERN6,   "Filter kernel used for guiding (cont)"           )
     116MK_STR(  540.27,GUIKERN7,   "Filter kernel used for guiding (cont)"           )
     117MK_STR(  540.28,GUIKERN8,   "Filter kernel used for guiding (cont)"           )
     118MK_STR(  540.29,GUIKERN9,   "Filter kernel used for guiding (cont)"           )
     119MK_INT(  540.30,GUIKLEN ,   "Number of taps in filter kernel"                 )
     120MK_INT(  540.31,GUIKSUM ,   "Sum of all filter kernel taps"                   )
     121MK_INT(  540.40,GUINSTAR,   "Number of guide stars sought"                    )
     122MK_INT(  540.41,GUINOK,     "Number of guide stars used (median)"             )
     123MK_INT(  540.42,GUIERR,     "90 percentile of guide fit error codes"          )
     124MK_PFL(  540.43,GUIDR,   2, "[arcsec] median RMS of guide star offsets"       )
     125MK_PFL(  540.50,GUIXMED, 2, "[arcsec] median x offset of guide stars"         )
     126MK_PFL(  540.51,GUIX50,  2, "[arcsec] 50% range of guide star x"              )
     127MK_PFL(  540.52,GUIX90,  2, "[arcsec] 90% range of guide star x"              )
     128MK_PFL(  540.60,GUIYMED, 2, "[arcsec] median y offset of guide stars"         )
     129MK_PFL(  540.61,GUIY50,  2, "[arcsec] 50% range of guide star y"              )
     130MK_PFL(  540.62,GUIY90,  2, "[arcsec] 90% range of guide star y"              )
     131MK_PFL(  540.70,GUIROT,  4, "[deg] median rotation offset of guide stars"     )
     132MK_PFL(  540.71,GUIROT50,4, "[deg] 50% range of rotation offset"              )
     133MK_PFL(  540.72,GUIROT90,4, "[deg] 90% range of rotation offset"              )
     134MK_PFL(  540.80,GUIFWMED,2, "[arcsec] median guide star FWHM"                 )
     135MK_PFL(  540.81,GUIFW50, 2, "[arcsec] 50% range of guide star FWHM"           )
     136MK_PFL(  540.82,GUIFW90, 2, "[arcsec] 90% range of guide star FWHM"           )
     137MK_PFL(  540.90,GUIM1MED,2, "[mag] median zeropoint"                          )
     138MK_PFL(  540.91,GUIM150, 2, "[mag] 50% range of median zeropoint"             )
     139MK_PFL(  540.92,GUIM190, 2, "[mag] 90% range of median zeropoint"             )
     140MK_PFL(  540.93,GUIXTNCT,2, "[mag] total extinction during exposure"          )
     141MK_PFL(  540.94,GUIZPRMS,2, "[mag] median RMS scatter of zeropoints"          )
     142
     143/*
     144 * Mirror info
     145 */
     146MK_PFL(  541.1, M1X     ,6, "[um] Primary mirror x position"                  )
     147MK_PFL(  541.2, M1Y     ,6, "[um] Primary mirror y position"                  )
     148MK_PFL(  541.3, M1Z     ,6, "[um] Primary mirror z position"                  )
     149MK_PFL(  541.4, M1TIP   ,6, "[arcsec] Primary mirror tip"                     )
     150MK_PFL(  541.5, M1TILT  ,6, "[arcsec] Primary mirror tilt"                    )
     151MK_PFL(  542.1, M2X     ,6, "[um] Secondary mirror x position"                )
     152MK_PFL(  542.2, M2Y     ,6, "[um] Secondary mirror y position"                )
     153MK_PFL(  542.3, M2Z     ,6, "[um] Secondary mirror z position"                )
     154MK_PFL(  542.4, M2TIP   ,6, "[arcsec] Secondary mirror tip"                   )
     155MK_PFL(  542.5, M2TILT  ,6, "[arcsec] Secondary mirror tilt"                  )
    112156MK_STR(  543.0, M1M2MODV,   "Telescope mirror position model version"         )
    113 MK_PFL(  543.1, M1NOMX  ,6, "Modeled Primary mirror x position (um)"          )
    114 MK_PFL(  543.2, M1NOMY  ,6, "Modeled Primary mirror y position (um)"          )
    115 MK_PFL(  543.3, M1NOMZ  ,6, "Modeled Primary mirror z position (um)"          )
    116 MK_PFL(  543.4, M1NOMTIP,6, "Modeled Primary mirror tip (arcsec)"             )
    117 MK_PFL(  543.5, M1NOMTIL,6, "Modeled Primary mirror tilt (arcsec)"            )
    118 MK_PFL(  544.1, M2NOMX  ,6, "Modeled Secondary mirror x position (um)"        )
    119 MK_PFL(  544.2, M2NOMY  ,6, "Modeled Secondary mirror y position (um)"        )
    120 MK_PFL(  544.3, M2NOMZ  ,6, "Modeled Secondary mirror z position (um)"        )
    121 MK_PFL(  544.4, M2NOMTIP,6, "Modeled Secondary mirror tip (arcsec)"           )
    122 MK_PFL(  544.5, M2NOMTIL,6, "Modeled Secondary mirror tilt (arcsec)"          )
    123 MK_STR(  550.1, TELTEMTR,   "Mid truss temperatures (C)"                      )
    124 MK_STR(  550.2, TELTEMSP,   "Spider temperatures (C)"                         )
    125 MK_STR(  550.3, TELTEMMS,   "Primary mirror support temps (C)"                )
    126 MK_STR(  550.4, TELTEMM1,   "Primary mirror temps (C)"                        )
    127 MK_STR(  550.5, TELTEMM2,   "Secondary mirror temps (C)"                      )
    128 MK_STR(  550.6, TELTEMEX,   "Miscellaneous temperatures (C)"                  )
     157MK_PFL(  543.1, M1NOMX  ,6, "[um] Modeled Primary mirror x position"          )
     158MK_PFL(  543.2, M1NOMY  ,6, "[um] Modeled Primary mirror y position"          )
     159MK_PFL(  543.3, M1NOMZ  ,6, "[um] Modeled Primary mirror z position"          )
     160MK_PFL(  543.4, M1NOMTIP,6, "[arcsec] Modeled Primary mirror tip"             )
     161MK_PFL(  543.5, M1NOMTIL,6, "[arcsec] Modeled Primary mirror tilt"            )
     162MK_PFL(  544.1, M2NOMX  ,6, "[um] Modeled Secondary mirror x position"        )
     163MK_PFL(  544.2, M2NOMY  ,6, "[um] Modeled Secondary mirror y position"        )
     164MK_PFL(  544.3, M2NOMZ  ,6, "[um] Modeled Secondary mirror z position"        )
     165MK_PFL(  544.4, M2NOMTIP,6, "[arcsec] Modeled Secondary mirror tip"           )
     166MK_PFL(  544.5, M2NOMTIL,6, "[arcsec] Modeled Secondary mirror tilt"          )
     167MK_STR(  550.1, TELTEMTR,   "[C] MTL 11,12,2,3,5,6,8,9"                       )
     168MK_STR(  550.2, TELTEMSP,   "[C] IS 10,1,4,7 O 10,1,4,7"                      )
     169MK_STR(  550.3, TELTEMMS,   "[C] M1 Perim. 12,3,6,9,Air"                      )
     170MK_STR(  550.4, TELTEMM1,   "[C] M1I 12,3,6,9 O12,3,6,9"                      )
     171MK_STR(  550.5, TELTEMM2,   "[C] M2 I 12,O 12,3,3,6,6,9,9"                    )
     172MK_STR(  550.6, TELTEMEX,   "[C] M2 Can Air,Surf,CentSec 12,3,6,9"            )
    129173
    130174/*
    131175 * Wavefront
    132176 */
    133 MK_PFL(  551.01,WVFA    ,14,"Wavefront A actuator force (N)"                  )
    134 MK_PFL(  551.02,WVFB    ,14,"Wavefront B actuator force (N)"                  )
    135 MK_PFL(  551.03,WVFC    ,14,"Wavefront C actuator force (N)"                  )
    136 MK_PFL(  551.04,WVFD    ,14,"Wavefront D actuator force (N)"                  )
    137 MK_PFL(  551.05,WVFE    ,14,"Wavefront E actuator force (N)"                  )
    138 MK_PFL(  551.06,WVFF    ,14,"Wavefront F actuator force (N)"                  )
    139 MK_PFL(  551.07,WVFG    ,14,"Wavefront G actuator force (N)"                  )
    140 MK_PFL(  551.08,WVFH    ,14,"Wavefront H actuator force (N)"                  )
    141 MK_PFL(  551.09,WVFI    ,14,"Wavefront I actuator force (N)"                  )
    142 MK_PFL(  551.10,WVFJ    ,14,"Wavefront J actuator force (N)"                  )
    143 MK_PFL(  551.11,WVFK    ,14,"Wavefront K actuator force (N)"                  )
    144 MK_PFL(  551.12,WVFL    ,14,"Wavefront L actuator force (N)"                  )
     177MK_PFL(  551.01,WVFA    ,14,"[N] Wavefront A actuator force"                  )
     178MK_PFL(  551.02,WVFB    ,14,"[N] Wavefront B actuator force"                  )
     179MK_PFL(  551.03,WVFC    ,14,"[N] Wavefront C actuator force"                  )
     180MK_PFL(  551.04,WVFD    ,14,"[N] Wavefront D actuator force"                  )
     181MK_PFL(  551.05,WVFE    ,14,"[N] Wavefront E actuator force"                  )
     182MK_PFL(  551.06,WVFF    ,14,"[N] Wavefront F actuator force"                  )
     183MK_PFL(  551.07,WVFG    ,14,"[N] Wavefront G actuator force"                  )
     184MK_PFL(  551.08,WVFH    ,14,"[N] Wavefront H actuator force"                  )
     185MK_PFL(  551.09,WVFI    ,14,"[N] Wavefront I actuator force"                  )
     186MK_PFL(  551.10,WVFJ    ,14,"[N] Wavefront J actuator force"                  )
     187MK_PFL(  551.11,WVFK    ,14,"[N] Wavefront K actuator force"                  )
     188MK_PFL(  551.12,WVFL    ,14,"[N] Wavefront L actuator force"                  )
    145189
    146190/*
     
    151195MK_PFL(  560.3, ENVWIN,  1, "[m/s]         Weather, wind speed"               )
    152196MK_PFL(  560.4, ENVDIR,  1, "[deg E. of N] Weather, wind direction"           )
    153 MK_PFL(  561.0, SEEING,  1, "[arcsec]      Weather, seeing from DIMM, FWHM"   )
     197MK_PFL(  561.0, SEEING,  3, "[arcsec]      Weather, seeing from DIMM, FWHM"   )
    154198
    155199/*
     
    157201 *
    158202 *TYPE --IDX--  KEYWORD- PRC -------------------COMMENT----------------------*/
    159 MK_PFL( 586.02, HA      ,16,"Hour angle at start (degrees)"                   )
    160 MK_PFL( 586.03, ST      ,16,"Sidereal time at start (hours)"                  )
    161 MK_PFL( 586.04, ZD      ,16,"Zenith distance (degrees)"                       )
    162 MK_STR( 587.00, RASTRNG ,   "Actual Right Ascension (incl offset)"            )
    163 MK_STR( 587.01, DECSTRNG,   "Actual Declination (incl offset)"                )
     203MK_PFL( 586.02, HA      ,16,"[deg] Hour angle at start"                       )
     204MK_PFL( 586.03, ST      ,16,"[hours] Sidereal time at start"                  )
     205MK_PFL( 586.04, ZD      ,16,"[deg] Zenith distance"                           )
    164206MK_STR( 587.02, HASTRNG ,   "Hour angle at start"                             )
    165207MK_STR( 587.03, STSTRNG ,   "Sidereal time at start"                          )     
    166 MK_STR( 587.04, ZDSTRNG ,   "Zenith distance (deg:mm:ss)"                     )                   
     208MK_STR( 587.04, ZDSTRNG ,   "[deg:mm:ss] Zenith distance"                     )                   
Note: See TracChangeset for help on using the changeset viewer.