33 #include "muse_pfits.h" 34 #include "muse_instrument.h" 56 const char *value = cpl_propertylist_get_string(aHeaders,
"ARCFILE");
57 cpl_ensure(value, cpl_error_get_code(), NULL);
73 const char *value = cpl_propertylist_get_string(aHeaders,
"ORIGFILE");
74 cpl_ensure(value, cpl_error_get_code(), NULL);
90 const char *value = cpl_propertylist_get_string(aHeaders,
"PIPEFILE");
91 cpl_ensure(value, cpl_error_get_code(), NULL);
107 cpl_errorstate prestate = cpl_errorstate_get();
108 const char *value = cpl_propertylist_get_string(aHeaders,
"ESO DPR TYPE");
109 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), NULL);
125 cpl_errorstate prestate = cpl_errorstate_get();
126 const char *value = cpl_propertylist_get_string(aHeaders,
"ESO DPR CATG");
127 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), NULL);
143 cpl_errorstate prestate = cpl_errorstate_get();
144 const char *value = cpl_propertylist_get_string(aHeaders,
"ESO PRO TYPE");
145 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), NULL);
161 cpl_errorstate prestate = cpl_errorstate_get();
162 const char *value = cpl_propertylist_get_string(aHeaders,
"ESO PRO CATG");
163 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), NULL);
183 cpl_errorstate prestate = cpl_errorstate_get();
185 if (!cpl_errorstate_is_equal(prestate) ||
186 strncmp(extname,
"CHAN", 4) ||
187 strlen(extname) < 6) {
188 cpl_errorstate_set(prestate);
191 unsigned char chan = atoi(extname + 4);
207 cpl_errorstate prestate = cpl_errorstate_get();
208 const char *value = cpl_propertylist_get_string(aHeaders,
"EXTNAME");
209 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), NULL);
225 cpl_errorstate prestate = cpl_errorstate_get();
226 const char *value = cpl_propertylist_get_string(aHeaders,
"BUNIT");
227 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), NULL);
244 cpl_errorstate prestate = cpl_errorstate_get();
246 cpl_size value = cpl_propertylist_get_long_long(aHeaders,
"NAXIS");
247 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0);
250 char keyword[KEYWORD_LENGTH];
251 snprintf(keyword, KEYWORD_LENGTH,
"NAXIS%u", aAxis);
252 cpl_size value = cpl_propertylist_get_long_long(aHeaders, keyword);
253 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0);
269 cpl_errorstate prestate = cpl_errorstate_get();
270 const double value = cpl_propertylist_get_double(aHeaders,
"RA");
271 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0.0);
287 cpl_errorstate prestate = cpl_errorstate_get();
288 const double value = cpl_propertylist_get_double(aHeaders,
"DEC");
289 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0.0);
308 cpl_errorstate prestate = cpl_errorstate_get();
309 double value = cpl_propertylist_get_double(aHeaders,
"EQUINOX");
310 if (!cpl_errorstate_is_equal(prestate)) {
311 cpl_errorstate_set(prestate);
312 value = cpl_propertylist_get_long_long(aHeaders,
"EQUINOX");
313 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0.0);
330 cpl_errorstate prestate = cpl_errorstate_get();
331 const double value = cpl_propertylist_get_double(aHeaders,
"LST");
332 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0.0);
348 cpl_errorstate prestate = cpl_errorstate_get();
349 const double value = cpl_propertylist_get_double(aHeaders,
"MJD-OBS");
350 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0.0);
366 cpl_errorstate prestate = cpl_errorstate_get();
367 const char *value = cpl_propertylist_get_string(aHeaders,
"DATE-OBS");
368 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), NULL);
384 cpl_errorstate prestate = cpl_errorstate_get();
385 const double value = cpl_propertylist_get_double(aHeaders,
"EXPTIME");
386 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0.0);
403 cpl_errorstate prestate = cpl_errorstate_get();
404 char keyword[KEYWORD_LENGTH];
405 snprintf(keyword, KEYWORD_LENGTH,
"CRPIX%u", aAxis);
406 const double value = cpl_propertylist_get_double(aHeaders, keyword);
408 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0.0);
425 cpl_errorstate prestate = cpl_errorstate_get();
426 char keyword[KEYWORD_LENGTH];
427 snprintf(keyword, KEYWORD_LENGTH,
"CRVAL%u", aAxis);
428 const double value = cpl_propertylist_get_double(aHeaders, keyword);
430 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0.0);
449 cpl_errorstate prestate = cpl_errorstate_get();
450 char keyword[KEYWORD_LENGTH];
451 snprintf(keyword, KEYWORD_LENGTH,
"CD%u_%u", aAxisI, aAxisJ);
452 const double value = cpl_propertylist_get_double(aHeaders, keyword);
454 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0.0);
471 cpl_errorstate prestate = cpl_errorstate_get();
472 char keyword[KEYWORD_LENGTH];
473 snprintf(keyword, KEYWORD_LENGTH,
"CTYPE%u", aAxis);
474 const char *value = cpl_propertylist_get_string(aHeaders, keyword);
476 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(),
" ");
493 cpl_errorstate prestate = cpl_errorstate_get();
494 char keyword[KEYWORD_LENGTH];
495 snprintf(keyword, KEYWORD_LENGTH,
"CUNIT%u", aAxis);
496 const char *value = cpl_propertylist_get_string(aHeaders, keyword);
498 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(),
" ");
514 cpl_errorstate prestate = cpl_errorstate_get();
515 const int value = cpl_propertylist_get_int(aHeaders,
"ESO DET READ CURID");
516 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0);
532 cpl_errorstate prestate = cpl_errorstate_get();
533 const char *value = cpl_propertylist_get_string(aHeaders,
"ESO DET READ CURNAME");
534 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), NULL);
550 cpl_errorstate prestate = cpl_errorstate_get();
551 const int value = cpl_propertylist_get_int(aHeaders,
"ESO DET BINX");
552 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 1);
568 cpl_errorstate prestate = cpl_errorstate_get();
569 const int value = cpl_propertylist_get_int(aHeaders,
"ESO DET BINY");
570 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 1);
586 cpl_errorstate prestate = cpl_errorstate_get();
587 const char *value = cpl_propertylist_get_string(aHeaders,
"ESO DET CHIP NAME");
588 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), NULL);
604 cpl_errorstate prestate = cpl_errorstate_get();
605 const char *value = cpl_propertylist_get_string(aHeaders,
"ESO DET CHIP ID");
606 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), NULL);
622 cpl_errorstate prestate = cpl_errorstate_get();
623 const char *value = cpl_propertylist_get_string(aHeaders,
"ESO DET CHIP DATE");
624 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), NULL);
641 cpl_errorstate prestate = cpl_errorstate_get();
642 const cpl_boolean value = cpl_propertylist_get_bool(aHeaders,
643 "ESO DET CHIP LIVE") == 0
644 ? CPL_FALSE : CPL_TRUE;
645 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), CPL_FALSE);
662 char keyword[KEYWORD_LENGTH];
663 snprintf(keyword, KEYWORD_LENGTH,
"ESO DET OUT%d RON", aQuadrant);
664 if (!cpl_propertylist_has(aHeaders, keyword)) {
665 cpl_msg_warning(__func__,
"Could not get %s, using RON=1.0",
669 return cpl_propertylist_get_double(aHeaders, keyword);
688 char keyword[KEYWORD_LENGTH];
689 snprintf(keyword, KEYWORD_LENGTH,
"ESO DET OUT%d GAIN", aQuadrant);
690 return cpl_propertylist_get_double(aHeaders, keyword);
705 unsigned char aQuadrant)
707 cpl_errorstate prestate = cpl_errorstate_get();
708 char keyword[KEYWORD_LENGTH];
709 snprintf(keyword, KEYWORD_LENGTH,
"ESO DET OUT%d X", aQuadrant);
710 const int value = cpl_propertylist_get_int(aHeaders, keyword);
711 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), -1);
727 unsigned char aQuadrant)
729 cpl_errorstate prestate = cpl_errorstate_get();
730 char keyword[KEYWORD_LENGTH];
731 snprintf(keyword, KEYWORD_LENGTH,
"ESO DET OUT%d Y", aQuadrant);
732 const int value = cpl_propertylist_get_int(aHeaders, keyword);
733 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), -1);
750 cpl_errorstate prestate = cpl_errorstate_get();
751 char keyword[KEYWORD_LENGTH];
752 snprintf(keyword, KEYWORD_LENGTH,
"ESO DET OUT%d NX", aQuadrant);
753 const int value = cpl_propertylist_get_int(aHeaders, keyword);
754 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), -1);
771 cpl_errorstate prestate = cpl_errorstate_get();
772 char keyword[KEYWORD_LENGTH];
773 snprintf(keyword, KEYWORD_LENGTH,
"ESO DET OUT%d NY", aQuadrant);
774 const int value = cpl_propertylist_get_int(aHeaders, keyword);
775 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), -1);
791 unsigned char aQuadrant)
793 cpl_errorstate prestate = cpl_errorstate_get();
794 char keyword[KEYWORD_LENGTH];
795 snprintf(keyword, KEYWORD_LENGTH,
"ESO DET OUT%d PRSCX", aQuadrant);
796 const int value = cpl_propertylist_get_int(aHeaders, keyword);
797 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), -1);
813 unsigned char aQuadrant)
815 cpl_errorstate prestate = cpl_errorstate_get();
816 char keyword[KEYWORD_LENGTH];
817 snprintf(keyword, KEYWORD_LENGTH,
"ESO DET OUT%d PRSCY", aQuadrant);
818 const int value = cpl_propertylist_get_int(aHeaders, keyword);
819 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), -1);
835 unsigned char aQuadrant)
837 cpl_errorstate prestate = cpl_errorstate_get();
838 char keyword[KEYWORD_LENGTH];
839 snprintf(keyword, KEYWORD_LENGTH,
"ESO DET OUT%d OVSCX", aQuadrant);
840 const int value = cpl_propertylist_get_int(aHeaders, keyword);
841 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), -1);
857 unsigned char aQuadrant)
859 cpl_errorstate prestate = cpl_errorstate_get();
860 char keyword[KEYWORD_LENGTH];
861 snprintf(keyword, KEYWORD_LENGTH,
"ESO DET OUT%d OVSCY", aQuadrant);
862 const int value = cpl_propertylist_get_int(aHeaders, keyword);
863 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), -1);
884 const double value = cpl_propertylist_get_double(aHeaders,
"ESO TEL GEOLAT");
885 if (fabs(value) < DBL_EPSILON) {
908 const double value = cpl_propertylist_get_double(aHeaders,
"ESO TEL GEOLON");
909 if (fabs(value) < DBL_EPSILON) {
930 const double value = cpl_propertylist_get_double(aHeaders,
"ESO TEL GEOELEV");
931 if (fabs(value) < DBL_EPSILON) {
953 double value = 1.705;
954 if (aHeaders && cpl_propertylist_has(aHeaders,
"ESO TEL FOCU SCALE")) {
955 value = cpl_propertylist_get_double(aHeaders,
"ESO TEL FOCU SCALE");
972 cpl_errorstate prestate = cpl_errorstate_get();
973 const double value = cpl_propertylist_get_double(aHeaders,
"ESO TEL AIRM START");
974 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0.0);
990 cpl_errorstate prestate = cpl_errorstate_get();
991 const double value = cpl_propertylist_get_double(aHeaders,
"ESO TEL AIRM END");
992 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0.0);
1008 cpl_errorstate prestate = cpl_errorstate_get();
1009 const double value = cpl_propertylist_get_double(aHeaders,
"ESO TEL AMBI TEMP");
1010 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0.0);
1026 cpl_errorstate prestate = cpl_errorstate_get();
1027 const double value = cpl_propertylist_get_double(aHeaders,
"ESO TEL AMBI RHUM");
1028 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0.0);
1044 cpl_errorstate prestate = cpl_errorstate_get();
1045 const double value = cpl_propertylist_get_double(aHeaders,
"ESO TEL AMBI PRES START");
1046 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0.0);
1062 cpl_errorstate prestate = cpl_errorstate_get();
1063 const double value = cpl_propertylist_get_double(aHeaders,
"ESO TEL AMBI PRES END");
1064 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0.0);
1080 cpl_errorstate prestate = cpl_errorstate_get();
1081 const double value = cpl_propertylist_get_double(aHeaders,
"ESO TEL AMBI FWHM START");
1082 cpl_ensure(cpl_errorstate_is_equal(prestate) && value > 0.,
1083 cpl_error_get_code(), 0.0);
1099 cpl_errorstate prestate = cpl_errorstate_get();
1100 const double value = cpl_propertylist_get_double(aHeaders,
"ESO TEL AMBI FWHM END");
1101 cpl_ensure(cpl_errorstate_is_equal(prestate) && value > 0.,
1102 cpl_error_get_code(), 0.0);
1118 cpl_errorstate prestate = cpl_errorstate_get();
1119 const double value = cpl_propertylist_get_double(aHeaders,
"ESO TEL ALT");
1120 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0.0);
1136 cpl_errorstate prestate = cpl_errorstate_get();
1137 const double value = cpl_propertylist_get_double(aHeaders,
"ESO TEL PARANG START");
1138 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0.0);
1154 cpl_errorstate prestate = cpl_errorstate_get();
1155 const double value = cpl_propertylist_get_double(aHeaders,
"ESO TEL PARANG END");
1156 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0.0);
1172 cpl_errorstate prestate = cpl_errorstate_get();
1173 const double value = cpl_propertylist_get_double(aHeaders,
"ESO OCS SGS AG FWHMX AVG");
1174 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0.0);
1190 cpl_errorstate prestate = cpl_errorstate_get();
1191 const double value = cpl_propertylist_get_double(aHeaders,
"ESO OCS SGS AG FWHMX RMS");
1192 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0.0);
1208 cpl_errorstate prestate = cpl_errorstate_get();
1209 const double value = cpl_propertylist_get_double(aHeaders,
"ESO OCS SGS AG FWHMY AVG");
1210 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0.0);
1226 cpl_errorstate prestate = cpl_errorstate_get();
1227 const double value = cpl_propertylist_get_double(aHeaders,
"ESO OCS SGS AG FWHMY RMS");
1228 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0.0);
1244 cpl_errorstate prestate = cpl_errorstate_get();
1245 const double value = cpl_propertylist_get_double(aHeaders,
"ESO TEL IA FWHM");
1246 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0.0);
1262 cpl_errorstate prestate = cpl_errorstate_get();
1263 const double value = cpl_propertylist_get_double(aHeaders,
"ESO TEL IA FWHMLIN");
1264 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0.0);
1280 cpl_errorstate prestate = cpl_errorstate_get();
1281 const char *value = cpl_propertylist_get_string(aHeaders,
"ESO INS DROT MODE");
1282 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), NULL);
1298 cpl_errorstate prestate = cpl_errorstate_get();
1299 const double value = cpl_propertylist_get_double(aHeaders,
"ESO INS DROT POSANG");
1300 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0.0);
1316 cpl_errorstate prestate = cpl_errorstate_get();
1317 const double value = cpl_propertylist_get_double(aHeaders,
"ESO INS DROT START");
1318 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0.0);
1334 cpl_errorstate prestate = cpl_errorstate_get();
1335 const double value = cpl_propertylist_get_double(aHeaders,
"ESO INS DROT END");
1336 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0.0);
1355 cpl_ensure(value, cpl_error_get_code(), MUSE_MODE_WFM_NONAO_N);
1356 if (!strncmp(value,
"NFM", 3)) {
1357 return MUSE_MODE_NFM_AO_N;
1359 if (!strncmp(value,
"WFM-AO-N", 8)) {
1360 return MUSE_MODE_WFM_AO_N;
1362 if (!strncmp(value,
"WFM-AO-E", 8)) {
1363 return MUSE_MODE_WFM_AO_E;
1365 if (!strncmp(value,
"WFM-NOAO-N", 10) || !strncmp(value,
"WFM-NONAO-N", 11)) {
1366 return MUSE_MODE_WFM_NONAO_N;
1368 return MUSE_MODE_WFM_NONAO_E;
1385 cpl_errorstate prestate = cpl_errorstate_get();
1386 const char *value = cpl_propertylist_get_string(aHeaders,
"ESO INS MODE");
1387 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), NULL);
1411 cpl_errorstate prestate = cpl_errorstate_get();
1412 char keyword[KEYWORD_LENGTH];
1413 snprintf(keyword, KEYWORD_LENGTH,
"ESO INS AMPL%d CURR", aDiode);
1414 double value = cpl_propertylist_get_double(aHeaders, keyword);
1415 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0.0);
1416 const char *comment = cpl_propertylist_get_comment(aHeaders, keyword);
1417 cpl_boolean ismilliampere = comment && strstr(comment,
"[mA]")
1418 ? CPL_TRUE : CPL_FALSE;
1419 if (!ismilliampere) {
1420 cpl_error_set_message(__func__, CPL_ERROR_INCOMPATIBLE_INPUT,
1421 "Could not ensure that %s is in mA!", keyword);
1441 cpl_errorstate prestate = cpl_errorstate_get();
1442 char keyword[KEYWORD_LENGTH];
1443 snprintf(keyword, KEYWORD_LENGTH,
"ESO INS AMPL%d STDEV", aDiode);
1444 const double value = cpl_propertylist_get_double(aHeaders, keyword);
1445 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0.0);
1461 cpl_errorstate prestate = cpl_errorstate_get();
1462 const char *value = cpl_propertylist_get_string(aHeaders,
1463 "ESO INS AMPL2 FILTER");
1464 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), NULL);
1485 cpl_errorstate prestate = cpl_errorstate_get();
1486 const int value = cpl_propertylist_get_int(aHeaders,
"ESO INS LAMPNUM");
1487 if (!cpl_errorstate_is_equal(prestate)) {
1489 cpl_errorstate_set(prestate);
1508 cpl_errorstate prestate = cpl_errorstate_get();
1509 char keyword[KEYWORD_LENGTH];
1510 snprintf(keyword, KEYWORD_LENGTH,
"ESO INS LAMP%d NAME", aLamp);
1511 const char *value = cpl_propertylist_get_string(aHeaders, keyword);
1512 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), NULL);
1529 cpl_errorstate prestate = cpl_errorstate_get();
1530 char keyword[KEYWORD_LENGTH];
1531 snprintf(keyword, KEYWORD_LENGTH,
"ESO INS LAMP%d ST", aLamp);
1532 const int value = cpl_propertylist_get_bool(aHeaders, keyword);
1533 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0);
1550 cpl_errorstate prestate = cpl_errorstate_get();
1551 char keyword[KEYWORD_LENGTH];
1552 snprintf(keyword, KEYWORD_LENGTH,
"ESO INS SHUT%d NAME", aShutter);
1553 const char *value = cpl_propertylist_get_string(aHeaders, keyword);
1554 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), NULL);
1571 cpl_errorstate prestate = cpl_errorstate_get();
1572 char keyword[KEYWORD_LENGTH];
1573 snprintf(keyword, KEYWORD_LENGTH,
"ESO INS SHUT%d ST", aShutter);
1574 const int value = cpl_propertylist_get_bool(aHeaders, keyword);
1575 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0);
1594 cpl_errorstate prestate = cpl_errorstate_get();
1595 char keyword[KEYWORD_LENGTH];
1596 snprintf(keyword, KEYWORD_LENGTH,
"ESO INS POS%d ENC", aEncoder);
1597 const int value = cpl_propertylist_get_int(aHeaders, keyword);
1598 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0);
1623 cpl_errorstate prestate = cpl_errorstate_get();
1624 char keyword[KEYWORD_LENGTH];
1625 snprintf(keyword, KEYWORD_LENGTH,
"ESO INS POS%d POS", aEncoder);
1626 const double value = cpl_propertylist_get_double(aHeaders, keyword);
1627 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), 0.0);
1643 cpl_errorstate prestate = cpl_errorstate_get();
1644 const long value = cpl_propertylist_get_long(aHeaders,
"ESO OBS ID");
1645 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), -1);
1661 cpl_errorstate prestate = cpl_errorstate_get();
1662 const char *value = cpl_propertylist_get_string(aHeaders,
"ESO OBS PROG ID");
1663 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), NULL);
1679 cpl_errorstate prestate = cpl_errorstate_get();
1680 const char *value = cpl_propertylist_get_string(aHeaders,
"ESO OBS TARG NAME");
1681 cpl_ensure(cpl_errorstate_is_equal(prestate), cpl_error_get_code(), NULL);
1698 cpl_ensure(aHeaders, CPL_ERROR_NULL_INPUT, NULL);
1699 char *key = cpl_sprintf(
"ESO PRO REC%-u PIPE ID", idx);
1700 cpl_errorstate prestate = cpl_errorstate_get();
1701 const char *value = cpl_propertylist_get_string(aHeaders, key);
1702 cpl_errorstate_set(prestate);
1720 cpl_ensure(aHeaders, CPL_ERROR_NULL_INPUT, NULL);
1721 char *key = cpl_sprintf(
"ESO PRO REC1 RAW%-u NAME", idx);
1722 cpl_errorstate prestate = cpl_errorstate_get();
1723 const char *value = cpl_propertylist_get_string(aHeaders, key);
1724 cpl_errorstate_set(prestate);
1741 cpl_ensure(aHeaders, CPL_ERROR_NULL_INPUT, NULL);
1742 cpl_errorstate prestate = cpl_errorstate_get();
1743 const char *value = cpl_propertylist_get_string(aHeaders,
"ESO PRO ANCESTOR");
1744 cpl_errorstate_set(prestate);
const char * muse_pfits_get_dpr_type(const cpl_propertylist *aHeaders)
find out the DPR type
cpl_boolean muse_pfits_has_ifu(const cpl_propertylist *aHeaders, unsigned char aIFU)
Find out the whether this header related to a certain IFU.
int muse_pfits_get_out_overscan_y(const cpl_propertylist *aHeaders, unsigned char aQuadrant)
find out the vertical size of the overscan region of one quadrant
int muse_pfits_get_out_output_y(const cpl_propertylist *aHeaders, unsigned char aQuadrant)
find out the vertical location of the output port of one quadrant
double muse_pfits_get_cd(const cpl_propertylist *aHeaders, unsigned int aAxisI, unsigned int aAxisJ)
find out the WCS coordinate at the reference point
cpl_boolean muse_pfits_get_chip_live(const cpl_propertylist *aHeaders)
find out if the CCD was active (live)
const char * muse_pfits_get_extname(const cpl_propertylist *aHeaders)
find out the extension name
const char * muse_pfits_get_insmode(const cpl_propertylist *aHeaders)
find out the observation mode
int muse_pfits_get_read_id(const cpl_propertylist *aHeaders)
find out the readout mode id
const char * muse_pfits_get_dpr_catg(const cpl_propertylist *aHeaders)
find out the DPR category
double muse_pfits_get_rhum(const cpl_propertylist *aHeaders)
find out the relavtive humidity (in %)
double muse_pfits_get_crval(const cpl_propertylist *aHeaders, unsigned int aAxis)
find out the WCS coordinate at the reference point
double muse_pfits_get_ra(const cpl_propertylist *aHeaders)
find out the right ascension
cpl_size muse_pfits_get_naxis(const cpl_propertylist *aHeaders, unsigned int aAxis)
find out the size of a given axis
double muse_pfits_get_gain(const cpl_propertylist *aHeaders, unsigned char aQuadrant)
find the detector gain (in units of count/adu)
int muse_pfits_get_shut_status(const cpl_propertylist *aHeaders, int aShutter)
query the status of one shutter
double muse_pfits_get_ia_fwhm(const cpl_propertylist *aHeaders)
find out the image analysis FWHM corrected by airmass (in arcsec)
int muse_pfits_get_out_overscan_x(const cpl_propertylist *aHeaders, unsigned char aQuadrant)
find out the horizontal size of the overscan region of one quadrant
const char * muse_pfits_get_ancestor(const cpl_propertylist *aHeaders)
find out the ancestor of a file.
double muse_pfits_get_agy_avg(const cpl_propertylist *aHeaders)
find out the y-FWHM average value from the auto-guider (in arcsec)
const char * muse_pfits_get_raw_filename(const cpl_propertylist *aHeaders, unsigned int idx)
find out the i-th raw file name.
double muse_pfits_get_altang(const cpl_propertylist *aHeaders)
find out the altitude angle at start of the exposure (in degrees)
int muse_pfits_get_out_output_x(const cpl_propertylist *aHeaders, unsigned char aQuadrant)
find out the horizontal location of the output port of one quadrant
double muse_pfits_get_pres_start(const cpl_propertylist *aHeaders)
find out the ambient pressure at start of exposure (in mbar)
double muse_pfits_get_airmass_start(const cpl_propertylist *aHeaders)
find out the airmass at start of exposure
const char * muse_pfits_get_dateobs(const cpl_propertylist *aHeaders)
find out the date of observations
const char * muse_pfits_get_bunit(const cpl_propertylist *aHeaders)
find out the unit string
double muse_pfits_get_focu_scale(const cpl_propertylist *aHeaders)
find out the scale in the VLT focal plane
const char * muse_pfits_get_shut_name(const cpl_propertylist *aHeaders, int aShutter)
query the name of one shutter
int muse_pfits_get_lampnum(const cpl_propertylist *aHeaders)
query the number of lamps installed
const char * muse_pfits_get_cunit(const cpl_propertylist *aHeaders, unsigned int aAxis)
find out the WCS axis unit string
double muse_pfits_get_drot_posang(const cpl_propertylist *aHeaders)
find out the MUSE derotator position angle (in degrees)
const char * muse_pfits_get_chip_date(const cpl_propertylist *aHeaders)
find out the chip installation date
double muse_pfits_get_equinox(const cpl_propertylist *aHeaders)
find out the equinox
const char * muse_pfits_get_targname(const cpl_propertylist *aHeaders)
find out the ESO observation target name
double muse_pfits_get_crpix(const cpl_propertylist *aHeaders, unsigned int aAxis)
find out the WCS reference point
const char * muse_pfits_get_pam2_filter(const cpl_propertylist *aHeaders)
query the filter set up in front of photo diode (pico amplifier) 2
double muse_pfits_get_fwhm_end(const cpl_propertylist *aHeaders)
find out the ambient seeing at end of exposure (in arcsec)
int muse_pfits_get_biny(const cpl_propertylist *aHeaders)
find out the binning factor in y direction
double muse_pfits_get_geolat(const cpl_propertylist *aHeaders)
find out the telescope's latitude
const char * muse_pfits_get_lamp_name(const cpl_propertylist *aHeaders, int aLamp)
query the name of one lamp
double muse_pfits_get_pam_intensity(const cpl_propertylist *aHeaders, int aDiode)
query the intensity measured by one photo diode (pico amplifier)
const char * muse_pfits_get_pipefile(const cpl_propertylist *aHeaders)
find out the pipefile
const char * muse_pfits_get_drot_mode(const cpl_propertylist *aHeaders)
find out the MUSE derotator mode
int muse_pfits_get_out_prescan_y(const cpl_propertylist *aHeaders, unsigned char aQuadrant)
find out the vertical size of the prescan region of one quadrant
int muse_pfits_get_out_nx(const cpl_propertylist *aHeaders, unsigned char aQuadrant)
find out the horizontal size of the data section of one quadrant
const char * muse_pfits_get_arcfile(const cpl_propertylist *aHeaders)
find out the arcfile
double muse_pfits_get_ron(const cpl_propertylist *aHeaders, unsigned char aQuadrant)
find the detector read-out noise
const char * muse_pfits_get_read_name(const cpl_propertylist *aHeaders)
find out the readout mode name
double muse_pfits_get_pam_stdev(const cpl_propertylist *aHeaders, int aDiode)
query the intensity std. dev. of one photo diode (pico amplifier)
double muse_pfits_get_drot_end(const cpl_propertylist *aHeaders)
find out the MUSE derotator rotation at exposure end (in degrees)
double muse_pfits_get_fwhm_start(const cpl_propertylist *aHeaders)
find out the ambient seeing at start of exposure (in arcsec)
double muse_pfits_get_drot_start(const cpl_propertylist *aHeaders)
find out the MUSE derotator rotation at exposure start (in degrees)
double muse_pfits_get_dec(const cpl_propertylist *aHeaders)
find out the declination
const char * muse_pfits_get_progid(const cpl_propertylist *aHeaders)
find out the ESO program identification
int muse_pfits_get_posenc(const cpl_propertylist *aHeaders, unsigned short aEncoder)
query the absolute encoder position of one encoder
double muse_pfits_get_agy_rms(const cpl_propertylist *aHeaders)
find out the y-FWHM root mean square from the auto-guider (in arcsec)
const char * muse_pfits_get_chip_id(const cpl_propertylist *aHeaders)
find out the chip id
const char * muse_pfits_get_ctype(const cpl_propertylist *aHeaders, unsigned int aAxis)
find out the WCS axis type string
long muse_pfits_get_obsid(const cpl_propertylist *aHeaders)
find out the observation block id
double muse_pfits_get_agx_rms(const cpl_propertylist *aHeaders)
find out the x-FWHM root mean square from the auto-guider (in arcsec)
int muse_pfits_get_binx(const cpl_propertylist *aHeaders)
find out the binning factor in x direction
double muse_pfits_get_parang_start(const cpl_propertylist *aHeaders)
find out the parallactic angle at start of exposure (in degrees)
double muse_pfits_get_pres_end(const cpl_propertylist *aHeaders)
find out the ambient pressure at end of exposure (in mbar)
double muse_pfits_get_airmass_end(const cpl_propertylist *aHeaders)
find out the airmass at end of exposure
int muse_pfits_get_lamp_status(const cpl_propertylist *aHeaders, int aLamp)
query the status of one lamp
double muse_pfits_get_mjdobs(const cpl_propertylist *aHeaders)
find out the Julian Date of the observation
double muse_pfits_get_pospos(const cpl_propertylist *aHeaders, unsigned short aEncoder)
query the position in user units of one encoder
const char * muse_pfits_get_pro_type(const cpl_propertylist *aHeaders)
find out the PRO type
double muse_pfits_get_exptime(const cpl_propertylist *aHeaders)
find out the exposure time
const char * muse_pfits_get_pro_catg(const cpl_propertylist *aHeaders)
find out the PRO category
double muse_pfits_get_temp(const cpl_propertylist *aHeaders)
find out the ambient temperature (in degrees Celsius)
double muse_pfits_get_geoelev(const cpl_propertylist *aHeaders)
find out the telescope's elevation
int muse_pfits_get_out_prescan_x(const cpl_propertylist *aHeaders, unsigned char aQuadrant)
find out the horizontal size of the prescan region of one quadrant
double muse_pfits_get_lst(const cpl_propertylist *aHeaders)
find out the local siderial time
double muse_pfits_get_agx_avg(const cpl_propertylist *aHeaders)
find out the x-FWHM average value from the auto-guider (in arcsec)
const char * muse_pfits_get_pipe_id(const cpl_propertylist *aHeaders, unsigned int idx)
find out the value of the flux calibration flag
double muse_pfits_get_ia_fwhmlin(const cpl_propertylist *aHeaders)
find out the image analysis FWHM from a linear fit (in arcsec)
const char * muse_pfits_get_origfile(const cpl_propertylist *aHeaders)
find out the origfile
int muse_pfits_get_out_ny(const cpl_propertylist *aHeaders, unsigned char aQuadrant)
find out the vertical size of the data section of one quadrant
const char * muse_pfits_get_chip_name(const cpl_propertylist *aHeaders)
find out the chip name
double muse_pfits_get_geolon(const cpl_propertylist *aHeaders)
find out the telescope's longitude
muse_ins_mode muse_pfits_get_mode(const cpl_propertylist *aHeaders)
find out the observation mode
double muse_pfits_get_parang_end(const cpl_propertylist *aHeaders)
find out the parallactic angle at end of exposure (in degrees)