コード例 #1
0
ファイル: mjd2cal.c プロジェクト: SixByNine/presto
int main(int argc, char *argv[])
{
    int year, month, day, hour, min, err;
    double MJD, fracday, dh, dm, sec;

    if (argc != 2) {
        printf("\nUsage:  'mjd2cal MJD'\n\n");
        exit(1);
    }
    MJD = atof(argv[1]);
    slaDjcl(MJD, &year, &month, &day, &fracday, &err);

    if (err == -1) {
        printf("\nTry again.  Bad MJD.\n\n");
        exit(1);
    }
    dh = fracday * 24.0;
    hour = (int) dh;
    dm = (dh - hour) * 60.0;
    min = (int) dm;
    sec = (dm - min) * 60.0;

    printf("\nDate is %2d %s %4d at %2d hours %2d minutes and %.8g seconds\n\n",
           day, months[month - 1], year, hour, min, sec);
    exit(0);
}
コード例 #2
0
ファイル: misc_utils.c プロジェクト: nextgen-astrodata/presto
void mjd_to_datestr(double mjd, char *datestr)
// Convert an MJD to a PSRFITS-style DATEOBS
{
    int year, month, day, hour, min, err;
    double fracday, dh, dm, sec;
    
    slaDjcl(mjd, &year, &month, &day, &fracday, &err);
    if (err == -1) {
        printf("Error in mjd_to_datestr:  Bad MJD '%.12f'.\n", mjd);
        exit(1);
    }
    dh = fracday * 24.0;
    hour = (int) dh;
    dm = (dh - hour) * 60.0;
    min = (int) dm;
    sec = (dm - min) * 60.0;
    if (sec < 10.0) {
        sprintf(datestr, "%4d-%02d-%02dT%2d:%02d:0%.6g",
                year, month, day, hour, min, sec);
    } else {
        sprintf(datestr, "%4d-%02d-%02dT%02d:%2d:%.6g",
                year, month, day, hour, min, sec);
    }
}
コード例 #3
0
ファイル: uvsubs_old.c プロジェクト: guille-c/VIR
int put_header(fitsfile *fptr, struct uvf_header *header, int gcount,
	       double refdat, char *origin)
{
  int naxis = 7;
  long pcount = 6;
  long naxes[7] = {0, 3, 1, 1, 1, 1, 1};
  float bscale = 1.0, bzero = 0.0;
  int one = 1,  zero = 0;
  double dfac1, dfac2, dref1, dref2, frac;
  char str[80];
  int status = 0;
  int ier, year, month, day;
  char datobs[16];

  /* Create the DATOBS string */

  slaDjcl(refdat, &year, &month, &day, &frac, &ier);
  if (ier != 0)
    fputs("Invalid DATOBS for FITS file.\n", stderr);
  sprintf(datobs, "%4.4d-%2.2d-%2.2d", year, month, day);

  /* Check for presence of INTTIM */

  if (header->index_inttim >=0)
    pcount = 7;

  /* Write required keywords. */

  naxes[2] = header->nstokes;
  naxes[4] = header->nif;
  fits_write_grphdr(fptr, 1, FLOAT_IMG, naxis, naxes, pcount, gcount,
		    1, &status);    
  fits_write_key(fptr, TFLOAT, "BSCALE", &bscale, 0, &status);
  fits_write_key(fptr, TFLOAT, "BZERO",  &bzero, 0, &status);
  
  /* Additional keywords. */

  fits_write_key(fptr, TSTRING, "OBJECT",   header->object,
		 "Source name", &status);
  fits_write_key(fptr, TSTRING, "TELESCOP", header->telescop,
		 0, &status);
  fits_write_key(fptr, TSTRING, "INSTRUME", header->instrume,
		 0, &status);
  fits_write_key(fptr, TSTRING, "OBSERVER", header->observer,
		 0, &status);
  fits_write_key(fptr, TSTRING, "DATE-OBS", datobs,
		 0, &status);
  fits_write_key(fptr, TSTRING, "BUNIT",    header->bunit,   
		 0,  &status);
  fits_write_key(fptr, TSTRING, "RADECSYS", header->radecsys,
		 0, &status);
  fits_write_key(fptr, TDOUBLE,  "EQUINOX",  &header->equinox, 
		 "Equinox of RA/Dec",   &status);
  fits_write_key(fptr, TDOUBLE, "EPOCH",     &header->equinox,
		 "Alternate name for EQUINOX", &status);
  fits_write_key(fptr, TDOUBLE, "OBSRA",    &header->obsra,
		 "Antenna pointing RA", &status);
  fits_write_key(fptr, TDOUBLE, "OBSDEC",   &header->obsdec,
		 "Antenna pointing Dec", &status);

  /* FITS coordinate parameters */
  
  fits_write_key(fptr, TSTRING, "CTYPE2", "COMPLEX", "1=real, 2=imag, 3=weight", &status);
  fits_write_key(fptr, TINT,    "CRVAL2", &one,  0, &status);
  fits_write_key(fptr, TINT,    "CDELT2", &one,  0, &status);
  fits_write_key(fptr, TINT,    "CRPIX2", &one,  0, &status);

  fits_write_key(fptr, TSTRING, "CTYPE3", "STOKES", "Correlator: -1=RR, -2=LL, -3=RL, -4=LR",&status);
  fits_write_key(fptr, TINT,    "CRVAL3", &header->stokes,  0, &status);
  fits_write_key(fptr, TINT,    "CDELT3", &header->delta_stokes, 0, &status);
  fits_write_key(fptr, TINT,    "CRPIX3", &one,       0, &status);

  fits_write_key(fptr, TSTRING, "CTYPE4", "FREQ","Frequency, Hz", &status);
  fits_write_key(fptr, TDOUBLE, "CRVAL4", &header->freq, 0, &status);
  fits_write_key(fptr, TDOUBLE, "CDELT4", &header->bw,   0, &status);
  fits_write_key(fptr, TINT,    "CRPIX4", &one,  0, &status);

  fits_write_key(fptr, TSTRING, "CTYPE5", "IF", "IF number",&status);
  fits_write_key(fptr, TINT,    "CRVAL5", &one, 0, &status);
  fits_write_key(fptr, TINT,    "CDELT5", &one, 0, &status);
  fits_write_key(fptr, TINT,    "CRPIX5", &one, 0, &status);

  fits_write_key(fptr, TSTRING, "CTYPE6", "RA", "Right ascension, degrees", &status);
  fits_write_key(fptr, TDOUBLE, "CRVAL6", &header->ra, 0, &status);
  fits_write_key(fptr, TINT,    "CDELT6", &zero, 0, &status);
  fits_write_key(fptr, TINT,    "CRPIX6", &one,  0, &status);

  fits_write_key(fptr, TSTRING, "CTYPE7", "DEC", "Declination, degrees", &status);
  fits_write_key(fptr, TDOUBLE, "CRVAL7", &header->dec, 0, &status);
  fits_write_key(fptr, TINT,    "CDELT7", &zero, 0, &status);
  fits_write_key(fptr, TINT,    "CRPIX7", &one,  0, &status);

  /* FITS random parameters. */

  fits_write_key(fptr, TSTRING, "PTYPE1", "UU", "baseline u projection, seconds", &status);
  fits_write_key(fptr, TINT,    "PSCAL1", &one,  0, &status);
  fits_write_key(fptr, TINT,    "PZERO1", &zero, 0, &status);
  fits_write_key(fptr, TSTRING, "PTYPE2", "VV", "baseline v projection, seconds", &status);
  fits_write_key(fptr, TINT,    "PSCAL2", &one,  0, &status);
  fits_write_key(fptr, TINT,    "PZERO2", &zero, 0, &status);
  fits_write_key(fptr, TSTRING, "PTYPE3", "WW", "baseline w projection, seconds", &status);
  fits_write_key(fptr, TINT,    "PSCAL3", &one,  0, &status);
  fits_write_key(fptr, TINT,    "PZERO3", &zero, 0, &status);

  fits_write_key(fptr, TSTRING, "PTYPE4", "BASELINE", "256*ANT1 + ANT2", &status);
  fits_write_key(fptr, TINT,    "PSCAL4", &one,  0, &status);
  fits_write_key(fptr, TINT,    "PZERO4", &zero, 0, &status);

  dfac1 = 1.0;
  dref1 = refdat + 2400000.5; /* convert MJD to JD */
  fits_write_key(fptr, TSTRING, "PTYPE5", "DATE", "UTC Julian Date part 1", &status);
  fits_write_key(fptr, TDOUBLE, "PSCAL5", &dfac1, "Days", &status);
  fits_write_key(fptr, TDOUBLE, "PZERO5", &dref1,  0, &status);
  
  dfac2 = 1.0/86400.0;
  dref2 = 0.0;
  fits_write_key(fptr, TSTRING, "PTYPE6", "DATE", "UTC Julian Date part 2", &status);
  fits_write_key(fptr, TDOUBLE, "PSCAL6", &dfac2, "Days/86400 (sec)", &status);
  fits_write_key(fptr, TFLOAT,  "PZERO6", &dref2, 0, &status);
  if (pcount >= 7) {
    fits_write_key(fptr, TSTRING, "PTYPE7", "INTTIM", "Integration time (sec)", &status);
    fits_write_key(fptr, TINT,   "PSCAL7", &one, 0, &status);
    fits_write_key(fptr, TINT,   "PZERO7", &zero, 0, &status);
  }

  sprintf(str, "%.12s (run by %.12s on %.12s)", origin, 
	  getenv("USER"), getenv("HOST"));
  fits_write_key(fptr, TSTRING, "ORIGIN", str," ", &status);

  /* Date/time of file creation */

  fits_write_date(fptr, &status);
  fits_report_error(stderr, status);
  return status;
}