Changeset 2940 for trunk/external-alma/atnf/PKSIO/SDFITSreader.cc
- Timestamp:
- 05/13/14 14:39:48 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/external-alma/atnf/PKSIO/SDFITSreader.cc
r1757 r2940 146 146 // Move to the SDFITS extension. 147 147 cALFA = cALFA_BD = cALFA_CIMA = 0; 148 if (fits_movnam_hdu(cSDptr, BINARY_TBL, "SINGLE DISH", 0, &cStatus)) {148 if (fits_movnam_hdu(cSDptr, BINARY_TBL, (char *)"SINGLE DISH", 0, &cStatus)) { 149 149 // No SDFITS table, look for BDFITS or CIMAFITS. 150 150 cStatus = 0; 151 if (fits_movnam_hdu(cSDptr, BINARY_TBL, "BDFITS", 0, &cStatus) == 0) {151 if (fits_movnam_hdu(cSDptr, BINARY_TBL, (char *)"BDFITS", 0, &cStatus) == 0) { 152 152 cALFA_BD = 1; 153 153 154 154 } else { 155 155 cStatus = 0; 156 if (fits_movnam_hdu(cSDptr, BINARY_TBL, "CIMAFITS", 0, &cStatus) == 0) {156 if (fits_movnam_hdu(cSDptr, BINARY_TBL, (char *)"CIMAFITS", 0, &cStatus) == 0) { 157 157 cALFA_CIMA = 1; 158 158 159 159 // Check for later versions of CIMAFITS. 160 160 float version; 161 readParm( "VERSION", TFLOAT, &version);161 readParm((char *)"VERSION", TFLOAT, &version); 162 162 if (version >= 2.0f) cALFA_CIMA = int(version); 163 163 … … 188 188 // GBT data. 189 189 char telescope[32]; 190 readParm( "TELESCOP", TSTRING, telescope); // Core.190 readParm((char *)"TELESCOP", TSTRING, telescope); // Core. 191 191 cGBT = strncmp(telescope, "GBT", 3) == 0 || 192 strncmp(telescope, "NRAO_GBT", 8) == 0;192 strncmp(telescope, (char *)"NRAO_GBT", 8) == 0; 193 193 194 194 195 195 // Check that the DATA array column is present. 196 findData(DATA, "DATA", TFLOAT);196 findData(DATA, (char *)"DATA", TFLOAT); 197 197 haveSpectra = cHaveSpectra = cData[DATA].colnum > 0; 198 198 … … 211 211 // no TDIM (or MAXISn) card; use the LAGS_IN value. 212 212 cNAxes = 5; 213 readParm( "LAGS_IN", TLONG, cNAxis);213 readParm((char *)"LAGS_IN", TLONG, cNAxis); 214 214 cNAxis[1] = 1; 215 215 cNAxis[2] = 1; … … 231 231 } 232 232 233 findData(FLAGGED, "FLAGGED", TBYTE);233 findData(FLAGGED, (char *)"FLAGGED", TBYTE); 234 234 235 235 } else { 236 236 // DATA column not present, check for a DATAXED keyword. 237 findData(DATAXED, "DATAXED", TSTRING);237 findData(DATAXED, (char *)"DATAXED", TSTRING); 238 238 if (cData[DATAXED].colnum < 0) { 239 239 log(LogOrigin( className, methodName, WHERE ), LogIO::SEVERE, "DATA array column absent from binary table."); … … 244 244 // Determine the number of axes and their length. 245 245 char dataxed[32]; 246 readParm( "DATAXED", TSTRING, dataxed);246 readParm((char *)"DATAXED", TSTRING, dataxed); 247 247 248 248 for (int iaxis = 0; iaxis < 5; iaxis++) cNAxis[iaxis] = 0; … … 254 254 } 255 255 256 char *CTYPE[5] = { "CTYPE1", "CTYPE2", "CTYPE3", "CTYPE4","CTYPE5"};257 char *CRPIX[5] = { "CRPIX1", "CRPIX2", "CRPIX3", "CRPIX4","CRPIX5"};258 char *CRVAL[5] = { "CRVAL1", "CRVAL2", "CRVAL3", "CRVAL4","CRVAL5"};259 char *CDELT[5] = { "CDELT1", "CDELT2", "CDELT3", "CDELT4","CDELT5"};256 char *CTYPE[5] = {(char *)"CTYPE1", (char *)"CTYPE2", (char *)"CTYPE3", (char *)"CTYPE4", (char *)"CTYPE5"}; 257 char *CRPIX[5] = {(char *)"CRPIX1", (char *)"CRPIX2", (char *)"CRPIX3", (char *)"CRPIX4", (char *)"CRPIX5"}; 258 char *CRVAL[5] = {(char *)"CRVAL1", (char *)"CRVAL2", (char *)"CRVAL3", (char *)"CRVAL4", (char *)"CRVAL5"}; 259 char *CDELT[5] = {(char *)"CDELT1", (char *)"CDELT2", (char *)"CDELT3", (char *)"CDELT4", (char *)"CDELT5"}; 260 260 261 261 // Find required DATA array axes. … … 335 335 // Fixed in ALFA CIMAFITS. 336 336 cRaAxis = 2; 337 raCRVAL = "CRVAL2A";337 raCRVAL = (char *)"CRVAL2A"; 338 338 339 339 cDecAxis = 3; 340 decCRVAL = "CRVAL3A";340 decCRVAL = (char *)"CRVAL3A"; 341 341 } 342 342 … … 350 350 351 351 // Set up machinery for data retrieval. 352 findData(SCAN, "SCAN", TINT); // Shared.353 findData(CYCLE, "CYCLE", TINT); // Additional.354 findData(DATE_OBS, "DATE-OBS", TSTRING); // Core.352 findData(SCAN, (char *)"SCAN", TINT); // Shared. 353 findData(CYCLE, (char *)"CYCLE", TINT); // Additional. 354 findData(DATE_OBS, (char *)"DATE-OBS", TSTRING); // Core. 355 355 356 356 if (cTimeAxis >= 0) { … … 367 367 368 368 } else { 369 findData(TIME, "TIME", TDOUBLE); // Core.370 } 371 372 findData(EXPOSURE, "EXPOSURE", TFLOAT); // Core.373 findData(OBJECT, "OBJECT", TSTRING); // Core.374 findData(OBJ_RA, "OBJ-RA", TDOUBLE); // Additional.375 findData(OBJ_DEC, "OBJ-DEC", TDOUBLE); // Additional.376 findData(RESTFRQ, "RESTFRQ", TDOUBLE); // Additional.377 findData(OBSMODE, "OBSMODE", TSTRING); // Shared.378 379 findData(BEAM, "BEAM", TSHORT); // Additional.380 findData(IF, "IF", TSHORT); // Additional.369 findData(TIME, (char *)"TIME", TDOUBLE); // Core. 370 } 371 372 findData(EXPOSURE, (char *)"EXPOSURE", TFLOAT); // Core. 373 findData(OBJECT, (char *)"OBJECT", TSTRING); // Core. 374 findData(OBJ_RA, (char *)"OBJ-RA", TDOUBLE); // Additional. 375 findData(OBJ_DEC, (char *)"OBJ-DEC", TDOUBLE); // Additional. 376 findData(RESTFRQ, (char *)"RESTFRQ", TDOUBLE); // Additional. 377 findData(OBSMODE, (char *)"OBSMODE", TSTRING); // Shared. 378 379 findData(BEAM, (char *)"BEAM", TSHORT); // Additional. 380 findData(IF, (char *)"IF", TSHORT); // Additional. 381 381 findData(FqRefVal, fqCRVAL, TDOUBLE); // Frequency reference value. 382 382 findData(FqDelt, fqCDELT, TDOUBLE); // Frequency increment. … … 384 384 findData(RA, raCRVAL, TDOUBLE); // Right ascension. 385 385 findData(DEC, decCRVAL, TDOUBLE); // Declination. 386 findData(SCANRATE, "SCANRATE", TFLOAT); // Additional.387 388 findData(TSYS, "TSYS", TFLOAT); // Core.389 findData(CALFCTR, "CALFCTR", TFLOAT); // Additional.390 findData(XCALFCTR, "XCALFCTR", TFLOAT); // Additional.391 findData(BASELIN, "BASELIN", TFLOAT); // Additional.392 findData(BASESUB, "BASESUB", TFLOAT); // Additional.393 findData(XPOLDATA, "XPOLDATA", TFLOAT); // Additional.394 395 findData(REFBEAM, "REFBEAM", TSHORT); // Additional.396 findData(TCAL, "TCAL", TFLOAT); // Shared.397 findData(TCALTIME, "TCALTIME", TSTRING); // Additional.398 findData(AZIMUTH, "AZIMUTH", TFLOAT); // Shared.399 findData(ELEVATIO, "ELEVATIO", TFLOAT); // Shared.400 findData(PARANGLE, "PARANGLE", TFLOAT); // Additional.401 findData(FOCUSAXI, "FOCUSAXI", TFLOAT); // Additional.402 findData(FOCUSTAN, "FOCUSTAN", TFLOAT); // Additional.403 findData(FOCUSROT, "FOCUSROT", TFLOAT); // Additional.404 findData(TAMBIENT, "TAMBIENT", TFLOAT); // Shared.405 findData(PRESSURE, "PRESSURE", TFLOAT); // Shared.406 findData(HUMIDITY, "HUMIDITY", TFLOAT); // Shared.407 findData(WINDSPEE, "WINDSPEE", TFLOAT); // Shared.408 findData(WINDDIRE, "WINDDIRE", TFLOAT); // Shared.386 findData(SCANRATE, (char *)"SCANRATE", TFLOAT); // Additional. 387 388 findData(TSYS, (char *)"TSYS", TFLOAT); // Core. 389 findData(CALFCTR, (char *)"CALFCTR", TFLOAT); // Additional. 390 findData(XCALFCTR, (char *)"XCALFCTR", TFLOAT); // Additional. 391 findData(BASELIN, (char *)"BASELIN", TFLOAT); // Additional. 392 findData(BASESUB, (char *)"BASESUB", TFLOAT); // Additional. 393 findData(XPOLDATA, (char *)"XPOLDATA", TFLOAT); // Additional. 394 395 findData(REFBEAM, (char *)"REFBEAM", TSHORT); // Additional. 396 findData(TCAL, (char *)"TCAL", TFLOAT); // Shared. 397 findData(TCALTIME, (char *)"TCALTIME", TSTRING); // Additional. 398 findData(AZIMUTH, (char *)"AZIMUTH", TFLOAT); // Shared. 399 findData(ELEVATIO, (char *)"ELEVATIO", TFLOAT); // Shared. 400 findData(PARANGLE, (char *)"PARANGLE", TFLOAT); // Additional. 401 findData(FOCUSAXI, (char *)"FOCUSAXI", TFLOAT); // Additional. 402 findData(FOCUSTAN, (char *)"FOCUSTAN", TFLOAT); // Additional. 403 findData(FOCUSROT, (char *)"FOCUSROT", TFLOAT); // Additional. 404 findData(TAMBIENT, (char *)"TAMBIENT", TFLOAT); // Shared. 405 findData(PRESSURE, (char *)"PRESSURE", TFLOAT); // Shared. 406 findData(HUMIDITY, (char *)"HUMIDITY", TFLOAT); // Shared. 407 findData(WINDSPEE, (char *)"WINDSPEE", TFLOAT); // Shared. 408 findData(WINDDIRE, (char *)"WINDDIRE", TFLOAT); // Shared. 409 409 410 410 findData(STOKES, polCRVAL, TINT); 411 findData(SIG, "SIG", TSTRING);412 findData(CAL, "CAL", TSTRING);413 414 findData(RVSYS, "RVSYS", TDOUBLE);415 findData(VFRAME, "VFRAME", TDOUBLE);416 findData(VELDEF, "VELDEF", TSTRING);411 findData(SIG, (char *)"SIG", TSTRING); 412 findData(CAL, (char *)"CAL", TSTRING); 413 414 findData(RVSYS, (char *)"RVSYS", TDOUBLE); 415 findData(VFRAME, (char *)"VFRAME", TDOUBLE); 416 findData(VELDEF, (char *)"VELDEF", TSTRING); 417 417 418 418 if (cStatus) { … … 429 429 cScanNo = 0; 430 430 if (cALFA_CIMA) { 431 findData(SCAN, "SCAN_ID", TINT);431 findData(SCAN, (char *)"SCAN_ID", TINT); 432 432 if (cALFA_CIMA > 1) { 433 433 // Note that RECNUM increases by cNAxisTime per row. 434 findData(CYCLE, "RECNUM", TINT);434 findData(CYCLE, (char *)"RECNUM", TINT); 435 435 } else { 436 findData(CYCLE, "SUBSCAN", TINT);436 findData(CYCLE, (char *)"SUBSCAN", TINT); 437 437 } 438 438 } else if (cALFA_BD) { 439 findData(SCAN, "SCAN_NUMBER", TINT);440 findData(CYCLE, "PATTERN_NUMBER", TINT);439 findData(SCAN, (char *)"SCAN_NUMBER", TINT); 440 findData(CYCLE, (char *)"PATTERN_NUMBER", TINT); 441 441 } 442 442 } else { … … 456 456 if (cALFA) { 457 457 // ALFA INPUT_ID, 0-relative (overrides BEAM column if present). 458 findData(BEAM, "INPUT_ID", TSHORT);458 findData(BEAM, (char *)"INPUT_ID", TSHORT); 459 459 cBeam_1rel = 0; 460 460 … … 465 465 } else { 466 466 // ms2sdfits output, 0-relative "feed" number. 467 findData(BEAM, "MAIN_FEED1", TSHORT);467 findData(BEAM, (char *)"MAIN_FEED1", TSHORT); 468 468 cBeam_1rel = 0; 469 469 } … … 475 475 // ALFA data, 0-relative. 476 476 if (cALFA_CIMA > 1) { 477 findData(IF, "IFN", TSHORT);477 findData(IF, (char *)"IFN", TSHORT); 478 478 } else { 479 findData(IF, "IFVAL", TSHORT);479 findData(IF, (char *)"IFVAL", TSHORT); 480 480 } 481 481 cIF_1rel = 0; … … 484 484 // ms2sdfits writes a scalar "TSYS" column that averages the polarizations. 485 485 int colnum; 486 findCol( "SYSCAL_TSYS", &colnum);486 findCol((char *)"SYSCAL_TSYS", &colnum); 487 487 if (colnum > 0) { 488 488 // This contains the vector Tsys. 489 findData(TSYS, "SYSCAL_TSYS", TFLOAT);489 findData(TSYS, (char *)"SYSCAL_TSYS", TFLOAT); 490 490 } 491 491 … … 493 493 494 494 if (cData[SCANRATE].colnum < 0) { 495 findData(SCANRATE, "FIELD_POINTING_DIR_RATE", TFLOAT);495 findData(SCANRATE, (char *)"FIELD_POINTING_DIR_RATE", TFLOAT); 496 496 } 497 497 498 498 if (cData[RESTFRQ].colnum < 0) { 499 findData(RESTFRQ, "RESTFREQ", TDOUBLE);499 findData(RESTFRQ, (char *)"RESTFREQ", TDOUBLE); 500 500 if (cData[RESTFRQ].colnum < 0) { 501 findData(RESTFRQ, "SPECTRAL_WINDOW_REST_FREQUENCY", TDOUBLE);501 findData(RESTFRQ, (char *)"SPECTRAL_WINDOW_REST_FREQUENCY", TDOUBLE); 502 502 } 503 503 } 504 504 505 505 if (cData[OBJ_RA].colnum < 0) { 506 findData(OBJ_RA, "SOURCE_DIRECTION", TDOUBLE);506 findData(OBJ_RA, (char *)"SOURCE_DIRECTION", TDOUBLE); 507 507 } 508 508 if (cData[OBJ_DEC].colnum < 0) { 509 findData(OBJ_DEC, "SOURCE_DIRECTION", TDOUBLE);509 findData(OBJ_DEC, (char *)"SOURCE_DIRECTION", TDOUBLE); 510 510 } 511 511 … … 513 513 514 514 if (cData[TCAL].colnum < 0) { 515 findData(TCAL, "SYSCAL_TCAL", TFLOAT);515 findData(TCAL, (char *)"SYSCAL_TCAL", TFLOAT); 516 516 } else if (cALFA_BD) { 517 517 // ALFA BDFITS has a different TCAL with 64 elements - kill it! 518 findData(TCAL, "NO NO NO", TFLOAT);518 findData(TCAL, (char *)"NO NO NO", TFLOAT); 519 519 } 520 520 521 521 if (cALFA_BD) { 522 522 // ALFA BDFITS. 523 findData(AZIMUTH, "CRVAL2B", TFLOAT);524 findData(ELEVATIO, "CRVAL3B", TFLOAT);523 findData(AZIMUTH, (char *)(char *)"CRVAL2B", TFLOAT); 524 findData(ELEVATIO, (char *)(char *)"CRVAL3B", TFLOAT); 525 525 } 526 526 527 527 if (cALFA) { 528 528 // ALFA data. 529 findData(PARANGLE, "PARA_ANG", TFLOAT);529 findData(PARANGLE, (char *)"PARA_ANG", TFLOAT); 530 530 } 531 531 532 532 if (cData[TAMBIENT].colnum < 0) { 533 findData(TAMBIENT, "WEATHER_TEMPERATURE", TFLOAT);533 findData(TAMBIENT, (char *)"WEATHER_TEMPERATURE", TFLOAT); 534 534 } 535 535 536 536 if (cData[PRESSURE].colnum < 0) { 537 findData(PRESSURE, "WEATHER_PRESSURE", TFLOAT);537 findData(PRESSURE, (char *)"WEATHER_PRESSURE", TFLOAT); 538 538 } 539 539 540 540 if (cData[HUMIDITY].colnum < 0) { 541 findData(HUMIDITY, "WEATHER_REL_HUMIDITY", TFLOAT);541 findData(HUMIDITY, (char *)"WEATHER_REL_HUMIDITY", TFLOAT); 542 542 } 543 543 544 544 if (cData[WINDSPEE].colnum < 0) { 545 findData(WINDSPEE, "WEATHER_WIND_SPEED", TFLOAT);545 findData(WINDSPEE, (char *)"WEATHER_WIND_SPEED", TFLOAT); 546 546 } 547 547 548 548 if (cData[WINDDIRE].colnum < 0) { 549 findData(WINDDIRE, "WEATHER_WIND_DIRECTION", TFLOAT);549 findData(WINDDIRE, (char *)"WEATHER_WIND_DIRECTION", TFLOAT); 550 550 } 551 551 … … 680 680 if (cData[DATAXED].colnum > 0) { 681 681 char dataxed[32]; 682 readParm( "DATAXED", TSTRING, dataxed);682 readParm((char *)"DATAXED", TSTRING, dataxed); 683 683 684 684 sscanf(dataxed, "(%ld,%ld,%ld,%ld,%ld)", cNAxis, cNAxis+1, … … 835 835 if (cALFA_CIMA > 1) { 836 836 // FFTs per second when the Mock correlator operates in RFI blanking mode. 837 readData( "PHFFTACC", TFLOAT, 0, &cALFAacc);837 readData((char *)"PHFFTACC", TFLOAT, 0, &cALFAacc); 838 838 } 839 839 … … 872 872 873 873 // Read parameter values. 874 readParm( "OBSERVER", TSTRING, observer); // Shared.875 readParm( "PROJID", TSTRING, project); // Shared.876 readParm( "TELESCOP", TSTRING, telescope); // Core.874 readParm((char *)"OBSERVER", TSTRING, observer); // Shared. 875 readParm((char *)"PROJID", TSTRING, project); // Shared. 876 readParm((char *)"TELESCOP", TSTRING, telescope); // Core. 877 877 878 878 antPos[0] = 0.0; 879 879 antPos[1] = 0.0; 880 880 antPos[2] = 0.0; 881 if (readParm( "ANTENNA_POSITION", TDOUBLE, antPos)) {882 readParm( "OBSGEO-X", TDOUBLE, antPos); // Additional.883 readParm( "OBSGEO-Y", TDOUBLE, antPos + 1); // Additional.884 readParm( "OBSGEO-Z", TDOUBLE, antPos + 2); // Additional.881 if (readParm((char *)"ANTENNA_POSITION", TDOUBLE, antPos)) { 882 readParm((char *)"OBSGEO-X", TDOUBLE, antPos); // Additional. 883 readParm((char *)"OBSGEO-Y", TDOUBLE, antPos + 1); // Additional. 884 readParm((char *)"OBSGEO-Z", TDOUBLE, antPos + 2); // Additional. 885 885 } 886 886 … … 919 919 } 920 920 921 readParm( "EQUINOX", TFLOAT, &equinox); // Shared.921 readParm((char *)"EQUINOX", TFLOAT, &equinox); // Shared. 922 922 if (cStatus == 405) { 923 923 // EQUINOX was written as string value in early versions. 924 924 cStatus = 0; 925 925 char strtmp[32]; 926 readParm( "EQUINOX", TSTRING, strtmp);926 readParm((char *)"EQUINOX", TSTRING, strtmp); 927 927 sscanf(strtmp, "%f", &equinox); 928 928 } 929 929 930 if (readParm( "RADESYS", TSTRING, radecsys)) { // Additional.931 if (readParm( "RADECSYS", TSTRING, radecsys)) { // Additional.930 if (readParm((char *)"RADESYS", TSTRING, radecsys)) { // Additional. 931 if (readParm((char *)"RADECSYS", TSTRING, radecsys)) { // Additional. 932 932 strcpy(radecsys, ""); 933 933 } 934 934 } 935 935 936 if (readParm( "SPECSYS", TSTRING, dopplerFrame)) { // Additional.936 if (readParm((char *)"SPECSYS", TSTRING, dopplerFrame)) { // Additional. 937 937 // Fallback value. 938 938 strcpy(dopplerFrame, "TOPOCENT"); … … 942 942 // Added few more codes currently (as of 2009 Oct) used in the GBT 943 943 // SDFITS (based io_sdfits_define.pro of GBTIDL). - TT 944 if (readParm( "VELFRAME", TSTRING, dopplerFrame)) { // Additional.944 if (readParm((char *)"VELFRAME", TSTRING, dopplerFrame)) { // Additional. 945 945 // No, try digging it out of the CTYPE card (AIPS convention). 946 946 char keyw[9], ctype[9]; … … 1008 1008 readTime(1, 1, datobs, utc); 1009 1009 readData(FqRefVal, 1, &refFreq); 1010 readParm( "BANDWID", TDOUBLE, &bandwidth); // Core.1010 readParm((char *)"BANDWID", TDOUBLE, &bandwidth); // Core. 1011 1011 1012 1012 if (cStatus) { … … 1060 1060 if (cALFA_BD) { 1061 1061 unsigned char invert; 1062 readData( "UPPERSB", TBYTE, irow, &invert);1062 readData((char *)"UPPERSB", TBYTE, irow, &invert); 1063 1063 1064 1064 if (invert) { … … 1605 1605 unsigned char invert; 1606 1606 int anynul, colnum; 1607 findCol( "UPPERSB", &colnum);1607 findCol((char *)"UPPERSB", &colnum); 1608 1608 fits_read_col(cSDptr, TBYTE, colnum, cRow, 1, 1, 0, &invert, &anynul, 1609 1609 &cStatus); … … 1749 1749 // Rescale according to the number of unblanked accumulations. 1750 1750 int colnum, naccum; 1751 findCol( "STAT", &colnum);1751 findCol((char *)"STAT", &colnum); 1752 1752 fits_read_col(cSDptr, TINT, colnum, cRow, 10*(cTimeIdx-1)+2, 1, 0, 1753 1753 &naccum, &anynul, &cStatus); … … 2346 2346 char chars[32]; 2347 2347 if (cALFA_BD) { 2348 readData( "OBS_NAME", TSTRING, cRow, chars);2348 readData((char *)"OBS_NAME", TSTRING, cRow, chars); 2349 2349 } else { 2350 readData( "SCANTYPE", TSTRING, cRow, chars);2350 readData((char *)"SCANTYPE", TSTRING, cRow, chars); 2351 2351 } 2352 2352 … … 2406 2406 if (cALFA_CIMA > 1) { 2407 2407 int colnum, naccum; 2408 findCol( "STAT", &colnum);2408 findCol((char *)"STAT", &colnum); 2409 2409 fits_read_col(cSDptr, TINT, colnum, cRow, 2, 1, 0, &naccum, &anynul, 2410 2410 &cStatus);
Note: See TracChangeset
for help on using the changeset viewer.