VISIR Pipeline Reference Manual  4.1.7
visir_pfits.c
1 /* $Id: visir_pfits.c,v 1.53 2013-09-24 10:46:00 jtaylor Exp $
2  *
3  * This file is part of the VISIR Pipeline
4  * Copyright (C) 2002,2003 European Southern Observatory
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02111-1307 USA
19  */
20 
21 /*
22  * $Author: jtaylor $
23  * $Date: 2013-09-24 10:46:00 $
24  * $Revision: 1.53 $
25  * $Name: not supported by cvs2svn $
26  */
27 
28 #ifdef HAVE_CONFIG_H
29 #include <config.h>
30 #endif
31 
32 /*-----------------------------------------------------------------------------
33  Defines
34  -----------------------------------------------------------------------------*/
35 
36 #define visir_pfits_get_int(KEY) irplib_pfits_get_int(self, KEY)
37 #define visir_pfits_get_string(KEY) irplib_pfits_get_string(self, KEY)
38 
39 
40 /*-----------------------------------------------------------------------------
41  Includes
42  -----------------------------------------------------------------------------*/
43 
44 #include <string.h>
45 #include <assert.h>
46 #include <math.h>
47 #include <cpl.h>
48 
49 #include "irplib_pfits.h"
50 
51 #include "visir_utils.h"
52 #include "visir_pfits.h"
53 
54 
55 /*-----------------------------------------------------------------------------
56  Private function prototypes
57  -----------------------------------------------------------------------------*/
58 
59 static const char * visir_pfits_get_slitname(const cpl_propertylist *);
60 static double visir_pfits_get_slitwidth_raw(const cpl_propertylist *);
61 
62 /*----------------------------------------------------------------------------*/
67 /*----------------------------------------------------------------------------*/
68 
71 /*-----------------------------------------------------------------------------
72  Function codes
73  -----------------------------------------------------------------------------*/
74 
75 
76 static inline double
77 visir_pfits_get_double(const cpl_propertylist * self, const char *key) {
78  if (cpl_propertylist_get_type(self, key) == CPL_TYPE_INT) {
79  return irplib_pfits_get_int(self, key);
80  }
81  return irplib_pfits_get_double(self, key);
82 }
83 
84 /*----------------------------------------------------------------------------*/
90 /*----------------------------------------------------------------------------*/
91 double visir_pfits_get_airmass_start(const cpl_propertylist * self)
92 {
93  return visir_pfits_get_double(self, "ESO TEL AIRM START");
94 }
95 
96 /*----------------------------------------------------------------------------*/
102 /*----------------------------------------------------------------------------*/
103 double visir_pfits_get_airmass_end(const cpl_propertylist * self)
104 {
105  return visir_pfits_get_double(self, "ESO TEL AIRM END");
106 }
107 
108 /*----------------------------------------------------------------------------*/
114 /*----------------------------------------------------------------------------*/
115 double visir_pfits_get_alpha(const cpl_propertylist * self)
116 {
117  return visir_pfits_get_double(self, "ESO TEL TARG OFFSETALPHA");
118 }
119 
120 /*----------------------------------------------------------------------------*/
126 /*----------------------------------------------------------------------------*/
127 const char * visir_pfits_get_arcfile(const cpl_propertylist * self)
128 {
129  return visir_pfits_get_string("ARCFILE");
130 }
131 
132 /*----------------------------------------------------------------------------*/
138 /*----------------------------------------------------------------------------*/
139 const char * visir_pfits_get_chopnod_dir(const cpl_propertylist * self)
140 {
141  return visir_pfits_get_string(VISIR_PFITS_STRING_CHOPNOD_DIR);
142 }
143 
144 
145 /*----------------------------------------------------------------------------*/
151 /*----------------------------------------------------------------------------*/
152 double visir_pfits_get_chop_throw(const cpl_propertylist * self)
153 {
154  if (cpl_propertylist_has(self, VISIR_PFITS_DOUBLE_CHOP_THROW)) {
155  return visir_pfits_get_double(self, VISIR_PFITS_DOUBLE_CHOP_THROW);
156  }
157  else {
158  return visir_pfits_get_double(self, "ESO DET CHOP THROW");
159  }
160 }
161 
162 
163 /*----------------------------------------------------------------------------*/
169 /*----------------------------------------------------------------------------*/
170 double visir_pfits_get_chop_freq(const cpl_propertylist * self)
171 {
172  if (cpl_propertylist_has(self, VISIR_PFITS_DOUBLE_CHOP_FREQ)) {
173  return visir_pfits_get_double(self, VISIR_PFITS_DOUBLE_CHOP_FREQ);
174  }
175  else {
176  return visir_pfits_get_double(self, "ESO DET CHOP FREQ");
177  }
178 }
179 
180 /*----------------------------------------------------------------------------*/
186 /*----------------------------------------------------------------------------*/
187 double visir_pfits_get_chop_stat(const cpl_propertylist * self)
188 {
189  if (cpl_propertylist_has(self, VISIR_PFITS_BOOL_CHOP_STATUS)) {
190  return cpl_propertylist_get_bool(self, VISIR_PFITS_BOOL_CHOP_STATUS);
191  }
192  else {
193  return cpl_propertylist_get_bool(self, "ESO DET CHOP ST");
194  }
195 }
196 
197 
198 /*----------------------------------------------------------------------------*/
204 /*----------------------------------------------------------------------------*/
205 double visir_pfits_get_chop_posang(const cpl_propertylist * self)
206 {
207  if (!cpl_propertylist_has(self, VISIR_PFITS_DOUBLE_CHOP_POSANG)) {
208  return 0.;
209  }
210  return CPL_MATH_RAD_DEG *
211  cpl_propertylist_get_double(self, VISIR_PFITS_DOUBLE_CHOP_POSANG);
212 }
213 
214 
215 /*----------------------------------------------------------------------------*/
221 /*----------------------------------------------------------------------------*/
222 double visir_pfits_get_chop_pthrow(const cpl_propertylist * self)
223 {
224  const double throw = visir_pfits_get_chop_throw(self);
225  const double pscale = visir_pfits_get_pixscale(self);
226  return pscale > 0.0 ? throw / pscale : 0.0;
227 }
228 
229 
230 /*----------------------------------------------------------------------------*/
236 /*----------------------------------------------------------------------------*/
237 int visir_pfits_get_chop_ncycles(const cpl_propertylist * self)
238 {
239  return visir_pfits_get_int("ESO DET CHOP NCYCLES");
240 }
241 
242 /*----------------------------------------------------------------------------*/
248 /*----------------------------------------------------------------------------*/
249 double visir_pfits_get_cumoffsetx(const cpl_propertylist * self)
250 {
251  return visir_pfits_get_double(self, "ESO SEQ CUMOFFSETX");
252 }
253 
254 /*----------------------------------------------------------------------------*/
260 /*----------------------------------------------------------------------------*/
261 double visir_pfits_get_cumoffsety(const cpl_propertylist * self)
262 {
263  return visir_pfits_get_double(self, "ESO SEQ CUMOFFSETY");
264 }
265 
266 /*----------------------------------------------------------------------------*/
272 /*----------------------------------------------------------------------------*/
273 const char * visir_pfits_get_date_obs(const cpl_propertylist * self)
274 {
275  return visir_pfits_get_string("DATE-OBS");
276 }
277 
278 /*----------------------------------------------------------------------------*/
284 /*----------------------------------------------------------------------------*/
285 double visir_pfits_get_delta(const cpl_propertylist * self)
286 {
287  return visir_pfits_get_double(self, "ESO TEL TARG OFFSETDELTA");
288 }
289 
290 /*----------------------------------------------------------------------------*/
296 /*----------------------------------------------------------------------------*/
297 double visir_pfits_get_dec(const cpl_propertylist * self)
298 {
299  return visir_pfits_get_double(self, "DEC");
300 }
301 
302 /*----------------------------------------------------------------------------*/
308 /*----------------------------------------------------------------------------*/
309 double visir_pfits_get_dit(const cpl_propertylist * self)
310 {
311  if (cpl_propertylist_has(self, VISIR_PFITS_DOUBLE_SEQ1_DIT))
312  return visir_pfits_get_double(self, VISIR_PFITS_DOUBLE_SEQ1_DIT);
313  return visir_pfits_get_double(self, VISIR_PFITS_DOUBLE_DIT);
314 }
315 
316 /*----------------------------------------------------------------------------*/
322 /*----------------------------------------------------------------------------*/
323 int visir_pfits_get_navrg(const cpl_propertylist * self)
324 {
325  if (cpl_propertylist_has(self, VISIR_PFITS_INT_NAVRG))
326  return visir_pfits_get_int(VISIR_PFITS_INT_NAVRG);
327  return 1;
328 }
329 
330 /*----------------------------------------------------------------------------*/
336 /*----------------------------------------------------------------------------*/
337 int visir_pfits_get_expno(const cpl_propertylist * self)
338 {
339  return visir_pfits_get_int("ESO TPL EXPNO");
340 }
341 
342 /*----------------------------------------------------------------------------*/
348 /*----------------------------------------------------------------------------*/
349 const char * visir_pfits_get_filter(const cpl_propertylist * self)
350 {
351 
352  /* Get the instrument mode */
353  const char * val = visir_pfits_get_insmode(self);
354  static const char * spec[] = {
355  "N_SW_spec",
356  "H2S4_spec",
357  "ARIII_spec",
358  "NEII_2_spec",
359  "H2S3_spec",
360  "H2S1_spec",
361  };
362 
363 
364  if (val == NULL) return NULL ;
365 
366  /* Imaging mode */
367  if (!strcmp(val, "IMG" ))
368  return visir_pfits_get_string("ESO INS FILT1 NAME");
369  /* Spectro mode */
370  if (!strcmp(val, "SPC" ))
371  return visir_pfits_get_string("ESO INS FILT2 NAME");
372  /* Spectro imaging mode */
373  if (!strcmp(val, "SPCIMG")) {
374  const char * filt = visir_pfits_get_string("ESO INS FILT2 NAME");
375  for (size_t i = 0; i < 6; i++) {
376  if (strncmp(spec[i], filt, strlen(spec[i]) - 5) == 0) {
377  return spec[i];
378  }
379  }
380  return filt;
381  }
382 
383  cpl_ensure(0, CPL_ERROR_UNSUPPORTED_MODE, NULL);
384 
385 }
386 
387 /*----------------------------------------------------------------------------*/
393 /*----------------------------------------------------------------------------*/
394 double visir_pfits_get_focus(const cpl_propertylist * self)
395 {
396  return visir_pfits_get_double(self, "ESO TEL FOCU LEN");
397 }
398 
399 /*----------------------------------------------------------------------------*/
405 /*----------------------------------------------------------------------------*/
406 double visir_pfits_get_exptime(const cpl_propertylist * self)
407 {
408  return visir_pfits_get_double(self, "EXPTIME");
409 }
410 
411 /*----------------------------------------------------------------------------*/
417 /*----------------------------------------------------------------------------*/
418 const char * visir_pfits_get_frame_type(const cpl_propertylist * self)
419 {
420  return visir_pfits_get_string("ESO DET FRAM TYPE");
421 }
422 
423 /*----------------------------------------------------------------------------*/
429 /*----------------------------------------------------------------------------*/
430 const char * visir_pfits_get_grat1_name(const cpl_propertylist * self)
431 {
432  return visir_pfits_get_string("ESO INS GRAT1 NAME");
433 }
434 
435 /*----------------------------------------------------------------------------*/
441 /*----------------------------------------------------------------------------*/
442 const char * visir_pfits_get_insmode(const cpl_propertylist * self)
443 {
444  return visir_pfits_get_string("ESO INS MODE");
445 }
446 
447 /*----------------------------------------------------------------------------*/
453 /*----------------------------------------------------------------------------*/
454 const char * visir_pfits_get_instrument(const cpl_propertylist * self)
455 {
456  return visir_pfits_get_string("INSTRUME");
457 }
458 
459 /*----------------------------------------------------------------------------*/
465 /*----------------------------------------------------------------------------*/
466 double visir_pfits_get_mjdobs(const cpl_propertylist * self)
467 {
468  return visir_pfits_get_double(self, "MJD-OBS");
469 }
470 
471 /*----------------------------------------------------------------------------*/
477 /*----------------------------------------------------------------------------*/
478 const char * visir_pfits_get_mode(const cpl_propertylist * self)
479 {
480  return visir_pfits_get_string("ESO DET MODE NAME");
481 }
482 
483 /*----------------------------------------------------------------------------*/
489 /*----------------------------------------------------------------------------*/
490 double visir_pfits_get_monoc_pos(const cpl_propertylist * self)
491 {
492  return visir_pfits_get_double(self, "ESO INS MONOC1 POS");
493 }
494 
495 /*----------------------------------------------------------------------------*/
501 /*----------------------------------------------------------------------------*/
502 int visir_pfits_get_ndit(const cpl_propertylist * self)
503 {
504  return visir_pfits_get_int("ESO DET NDIT");
505 }
506 /*----------------------------------------------------------------------------*/
512 /*----------------------------------------------------------------------------*/
513 int visir_pfits_get_naxis1(const cpl_propertylist * self)
514 {
515  if (cpl_propertylist_has(self, "ZNAXIS1"))
516  return visir_pfits_get_int("ZNAXIS1");
517  else
518  return visir_pfits_get_int("NAXIS1");
519 }
520 
521 /*----------------------------------------------------------------------------*/
527 /*----------------------------------------------------------------------------*/
528 int visir_pfits_get_naxis2(const cpl_propertylist * self)
529 {
530  if (cpl_propertylist_has(self, "ZNAXIS2"))
531  return visir_pfits_get_int("ZNAXIS2");
532  else
533  return visir_pfits_get_int("NAXIS2");
534 }
535 
536 /*----------------------------------------------------------------------------*/
542 /*----------------------------------------------------------------------------*/
543 int visir_pfits_get_naxis3(const cpl_propertylist * self)
544 {
545  if (cpl_propertylist_has(self, "ZNAXIS3"))
546  return visir_pfits_get_int("ZNAXIS3");
547  else
548  return visir_pfits_get_int("NAXIS3");
549 }
550 
551 /*----------------------------------------------------------------------------*/
557 /*----------------------------------------------------------------------------*/
558 int visir_pfits_get_win_nx(const cpl_propertylist * self)
559 {
560  if (cpl_propertylist_has(self, "ESO DET WIN NX")) {;
561  return visir_pfits_get_int("ESO DET WIN NX");
562  }
563  else if (cpl_propertylist_has(self, "ESO DET1 WIN NX")) {;
564  return visir_pfits_get_int("ESO DET1 WIN NX");
565  }
566  else if (cpl_propertylist_has(self, "ESO DET ACQ1 WIN NX")) {;
567  return visir_pfits_get_int("ESO DET ACQ1 WIN NX");
568  }
569  return -1;
570 }
571 
572 /*----------------------------------------------------------------------------*/
578 /*----------------------------------------------------------------------------*/
579 int visir_pfits_get_win_ny(const cpl_propertylist * self)
580 {
581  if (cpl_propertylist_has(self, "ESO DET WIN NY")) {;
582  return visir_pfits_get_int("ESO DET WIN NY");
583  }
584  else if (cpl_propertylist_has(self, "ESO DET1 WIN NY")) {;
585  return visir_pfits_get_int("ESO DET1 WIN NY");
586  }
587  else if (cpl_propertylist_has(self, "ESO DET ACQ1 WIN NY")) {;
588  return visir_pfits_get_int("ESO DET ACQ1 WIN NY");
589  }
590  return -1;
591 }
592 
593 /*----------------------------------------------------------------------------*/
599 /*----------------------------------------------------------------------------*/
600 int visir_pfits_get_start_x(const cpl_propertylist * self)
601 {
602  if (cpl_propertylist_has(self, "ESO DET WIN STRX")) {;
603  return visir_pfits_get_int("ESO DET WIN STRX");
604  }
605  else if (cpl_propertylist_has(self, "ESO DET1 WIN STRX")) {;
606  return visir_pfits_get_int("ESO DET1 WIN STRX");
607  }
608  else if (cpl_propertylist_has(self, "ESO DET ACQ1 WIN STRX")) {;
609  return visir_pfits_get_int("ESO DET ACQ1 WIN STRX");
610  }
611  return -1;
612 }
613 
614 /*----------------------------------------------------------------------------*/
620 /*----------------------------------------------------------------------------*/
621 int visir_pfits_get_start_y(const cpl_propertylist * self)
622 {
623  if (cpl_propertylist_has(self, "ESO DET WIN STRY")) {;
624  return visir_pfits_get_int("ESO DET WIN STRY");
625  }
626  else if (cpl_propertylist_has(self, "ESO DET1 WIN STRY")) {;
627  return visir_pfits_get_int("ESO DET1 WIN STRY");
628  }
629  else if (cpl_propertylist_has(self, "ESO DET ACQ1 WIN STRY")) {;
630  return visir_pfits_get_int("ESO DET ACQ1 WIN STRY");
631  }
632  return -1;
633 }
634 
635 /*----------------------------------------------------------------------------*/
641 /*----------------------------------------------------------------------------*/
642 int visir_pfits_get_numbexp(const cpl_propertylist * self)
643 {
644  return visir_pfits_get_int("ESO TPL NEXP");
645 }
646 
647 /*----------------------------------------------------------------------------*/
653 /*----------------------------------------------------------------------------*/
654 int visir_pfits_get_obs_id(const cpl_propertylist * self)
655 {
656  return visir_pfits_get_int("ESO OBS ID");
657 }
658 
659 /*----------------------------------------------------------------------------*/
665 /*----------------------------------------------------------------------------*/
666 const char * visir_pfits_get_nodpos(const cpl_propertylist * self)
667 {
668  return visir_pfits_get_string("ESO SEQ NODPOS");
669 }
670 
671 /*----------------------------------------------------------------------------*/
677 /*----------------------------------------------------------------------------*/
678 double visir_pfits_get_pixscale(const cpl_propertylist * self)
679 {
680  const char * sscale = visir_pfits_get_string(VISIR_PFITS_STRING_PIXSCALE);
681  if (sscale && strlen(sscale) > 0)
682  return atof(sscale);
683  else
684  return -1.;
685 }
686 
687 /*----------------------------------------------------------------------------*/
693 /*----------------------------------------------------------------------------*/
694 double visir_pfits_get_pixspace(const cpl_propertylist * self)
695 {
696  if (cpl_propertylist_has(self, "ESO DET CHIP1 PXSPACE")) {
697  return visir_pfits_get_double(self, "ESO DET CHIP1 PXSPACE");
698  }
699  return visir_pfits_get_double(self, "ESO DET CHIP PXSPACE");
700 }
701 
702 /*----------------------------------------------------------------------------*/
708 /*----------------------------------------------------------------------------*/
709 double visir_pfits_get_ra(const cpl_propertylist * self)
710 {
711  return visir_pfits_get_double(self, "RA");
712 }
713 
714 /*----------------------------------------------------------------------------*/
720 /*----------------------------------------------------------------------------*/
721 double visir_pfits_get_slitwidth(const cpl_propertylist * self)
722 {
723  const char * slitname = visir_pfits_get_slitname(self);
724  double slitwidth = visir_pfits_get_slitwidth_raw(self);
725 
726 
727  if (!cpl_error_get_code()) {
728 
729  static const char * slit_name[] = {"CU_0.12", "CU_0.14", "CU_0.16",
730  "CU_0.20", "CU_0.25", "CU_0.30",
731  "CU_0.40", "CU_0.50", "CU_0.60",
732  "CU_0.70", "CU_0.80", "CU_1.00",
733  "CU_1.20", "CU_1.60", "ST_0.14",
734  "ST_0.16", "ST_0.20", "ST_0.30",
735  "ST_0.40", "ST_0.50", "ST_0.60"};
736 
737  static double slit_width[] = {0.12, 0.14, 0.16,
738  0.20, 0.25, 0.30,
739  0.40, 0.50, 0.60,
740  0.70, 0.80, 1.00,
741  1.20, 1.60, 0.14,
742  0.16, 0.20, 0.30,
743  0.40, 0.50, 0.60};
744 
745  static const int slit_nums = (int)(sizeof(slit_width)/sizeof(double));
746 
747  int i;
748 
749  for (i=0; i < slit_nums; i++)
750  if (strstr(slitname, slit_name[i])) break;
751 
752  if (i < slit_nums && fabs(slit_width[i] - slitwidth) < 0.001) {
753  /* The Slit width is supposed to be in Arcseconds - as written in
754  the comment of the FITS card.
755  However, if the Slit width matches the Slit name then the Slit
756  width is actually in unit millimeter and is converted */
757 
758  cpl_msg_warning(cpl_func,"The Width of slit %s is written in the "
759  "FITS card in units mm. Converting to ArcSecs: "
760  "%g => %g", slitname, slitwidth, slitwidth * 2.5);
761  slitwidth *= 2.5;
762  }
763  }
764 
765  return slitwidth;
766 }
767 
768 /*----------------------------------------------------------------------------*/
774 /*----------------------------------------------------------------------------*/
775 const char * visir_pfits_get_starname(const cpl_propertylist * self)
776 {
777  return visir_pfits_get_string("ESO OBS TARG NAME");
778 }
779 
780 /*----------------------------------------------------------------------------*/
786 /*----------------------------------------------------------------------------*/
787 const char * visir_pfits_get_resol(const cpl_propertylist * self)
788 {
789  return visir_pfits_get_string("ESO INS RESOL");
790 }
791 
792 /*----------------------------------------------------------------------------*/
798 /*----------------------------------------------------------------------------*/
799 double visir_pfits_get_temp(const cpl_propertylist * self)
800 {
801  return visir_pfits_get_double(self, "ESO TEL TH M1 TEMP");
802 }
803 
804 /*----------------------------------------------------------------------------*/
810 /*----------------------------------------------------------------------------*/
811 double visir_pfits_get_volt1dcta9(const cpl_propertylist * self)
812 {
813  return visir_pfits_get_double(self, "ESO DET VOLT1 DCTA9");
814 }
815 
816 /*----------------------------------------------------------------------------*/
822 /*----------------------------------------------------------------------------*/
823 double visir_pfits_get_volt1dctb9(const cpl_propertylist * self)
824 {
825  return visir_pfits_get_double(self, "ESO DET VOLT1 DCTB9");
826 }
827 
828 /*----------------------------------------------------------------------------*/
834 /*----------------------------------------------------------------------------*/
835 double visir_pfits_get_volt2dcta9(const cpl_propertylist * self)
836 {
837  return visir_pfits_get_double(self, "ESO DET VOLT2 DCTA9");
838 }
839 
840 /*----------------------------------------------------------------------------*/
846 /*----------------------------------------------------------------------------*/
847 double visir_pfits_get_volt2dctb9(const cpl_propertylist * self)
848 {
849  return visir_pfits_get_double(self, "ESO DET VOLT2 DCTB9");
850 }
851 
852 /*----------------------------------------------------------------------------*/
858 /*----------------------------------------------------------------------------*/
859 double visir_pfits_get_wlen(const cpl_propertylist * self)
860 {
861  if (cpl_propertylist_has(self, VISIR_PFITS_DOUBLE_PWLEN)) {
862  return visir_pfits_get_double(self, VISIR_PFITS_DOUBLE_PWLEN);
863  }
864  return visir_pfits_get_double(self, VISIR_PFITS_DOUBLE_WLEN);
865 }
866 
867 /*----------------------------------------------------------------------------*/
876 /*----------------------------------------------------------------------------*/
877 double visir_pfits_get_img_weight(const cpl_propertylist * self)
878 {
879  double imgwgt = 1.;
880  if (cpl_propertylist_has(self, "ESO DRS IMGWGT"))
881  imgwgt = cpl_propertylist_get_float(self, "ESO DRS IMGWGT");
882 
883  return imgwgt;
884 }
885 
886 /*----------------------------------------------------------------------------*/
895 /*----------------------------------------------------------------------------*/
896 int visir_pfits_get_nbeams(const cpl_propertylist * self)
897 {
898  const cpl_boolean chop_on =
899  cpl_propertylist_get_bool(self, VISIR_PFITS_BOOL_CHOP_STATUS);
900 
901  /* FIXME: starring mode support? */
902 
903  return chop_on ? 4 : 2;
904 }
905 
908 /*----------------------------------------------------------------------------*/
915 /*----------------------------------------------------------------------------*/
916 static double visir_pfits_get_slitwidth_raw(const cpl_propertylist * self)
917 {
918  return visir_pfits_get_double(self, "ESO INS SLIT1 WID");
919 }
920 
921 /*----------------------------------------------------------------------------*/
927 /*----------------------------------------------------------------------------*/
928 static const char * visir_pfits_get_slitname(const cpl_propertylist * self)
929 {
930  return visir_pfits_get_string("ESO INS SLIT1 NAME");
931 }
int visir_pfits_get_expno(const cpl_propertylist *self)
The number of the current exposition.
Definition: visir_pfits.c:337
double visir_pfits_get_cumoffsetx(const cpl_propertylist *self)
The cumulative offset in X.
Definition: visir_pfits.c:249
int visir_pfits_get_naxis2(const cpl_propertylist *self)
The NAXIS2 key.
Definition: visir_pfits.c:528
double visir_pfits_get_airmass_end(const cpl_propertylist *self)
The airmass end.
Definition: visir_pfits.c:103
int visir_pfits_get_win_ny(const cpl_propertylist *self)
The WIN NY key.
Definition: visir_pfits.c:579
double visir_pfits_get_dec(const cpl_propertylist *self)
The DEC.
Definition: visir_pfits.c:297
int visir_pfits_get_obs_id(const cpl_propertylist *self)
The OBS ID.
Definition: visir_pfits.c:654
double visir_pfits_get_volt1dcta9(const cpl_propertylist *self)
The VOLT1.DCTA9.
Definition: visir_pfits.c:811
double visir_pfits_get_volt1dctb9(const cpl_propertylist *self)
The VOLT1.DCTB9.
Definition: visir_pfits.c:823
double visir_pfits_get_chop_pthrow(const cpl_propertylist *self)
The chopping throw in pixels.
Definition: visir_pfits.c:222
const char * visir_pfits_get_mode(const cpl_propertylist *self)
The mode name.
Definition: visir_pfits.c:478
const char * visir_pfits_get_arcfile(const cpl_propertylist *self)
The arcfile.
Definition: visir_pfits.c:127
const char * visir_pfits_get_date_obs(const cpl_propertylist *self)
The date of observation.
Definition: visir_pfits.c:273
double visir_pfits_get_volt2dcta9(const cpl_propertylist *self)
The VOLT2.DCTA9.
Definition: visir_pfits.c:835
int visir_pfits_get_naxis3(const cpl_propertylist *self)
The NAXIS3 key.
Definition: visir_pfits.c:543
double visir_pfits_get_airmass_start(const cpl_propertylist *self)
The airmass start.
Definition: visir_pfits.c:91
double visir_pfits_get_slitwidth(const cpl_propertylist *self)
The slit width in Arcseconds.
Definition: visir_pfits.c:721
int visir_pfits_get_navrg(const cpl_propertylist *self)
The NAVRG.
Definition: visir_pfits.c:323
const char * visir_pfits_get_resol(const cpl_propertylist *self)
The spectral resolution.
Definition: visir_pfits.c:787
int visir_pfits_get_start_x(const cpl_propertylist *self)
The WIN STRX key.
Definition: visir_pfits.c:600
int visir_pfits_get_naxis1(const cpl_propertylist *self)
The NAXIS1 key.
Definition: visir_pfits.c:513
int visir_pfits_get_numbexp(const cpl_propertylist *self)
The number of exposures.
Definition: visir_pfits.c:642
const char * visir_pfits_get_starname(const cpl_propertylist *self)
The std star name.
Definition: visir_pfits.c:775
const char * visir_pfits_get_filter(const cpl_propertylist *self)
The filter.
Definition: visir_pfits.c:349
const char * visir_pfits_get_frame_type(const cpl_propertylist *self)
The frame type.
Definition: visir_pfits.c:418
const char * visir_pfits_get_grat1_name(const cpl_propertylist *self)
The name of grating 1.
Definition: visir_pfits.c:430
double visir_pfits_get_focus(const cpl_propertylist *self)
The focus.
Definition: visir_pfits.c:394
int visir_pfits_get_chop_ncycles(const cpl_propertylist *self)
The number of chopping cycles.
Definition: visir_pfits.c:237
double visir_pfits_get_exptime(const cpl_propertylist *self)
The exposure time.
Definition: visir_pfits.c:406
double visir_pfits_get_chop_posang(const cpl_propertylist *self)
The chopping position angle in rad.
Definition: visir_pfits.c:205
int visir_pfits_get_win_nx(const cpl_propertylist *self)
The WIN NX key.
Definition: visir_pfits.c:558
int visir_pfits_get_nbeams(const cpl_propertylist *self)
The number of input beams.
Definition: visir_pfits.c:896
int visir_pfits_get_ndit(const cpl_propertylist *self)
The NDIT keyword.
Definition: visir_pfits.c:502
double visir_pfits_get_cumoffsety(const cpl_propertylist *self)
The cumulative offset in Y.
Definition: visir_pfits.c:261
double visir_pfits_get_volt2dctb9(const cpl_propertylist *self)
The VOLT2.DCTB9.
Definition: visir_pfits.c:847
double visir_pfits_get_chop_freq(const cpl_propertylist *self)
The chopping frequency.
Definition: visir_pfits.c:170
double visir_pfits_get_pixspace(const cpl_propertylist *self)
The pixel spacing.
Definition: visir_pfits.c:694
double visir_pfits_get_chop_throw(const cpl_propertylist *self)
The chopping throw.
Definition: visir_pfits.c:152
const char * visir_pfits_get_nodpos(const cpl_propertylist *self)
The nodding position.
Definition: visir_pfits.c:666
const char * visir_pfits_get_insmode(const cpl_propertylist *self)
The mode.
Definition: visir_pfits.c:442
double visir_pfits_get_img_weight(const cpl_propertylist *self)
The relative weight of the image compared to the other images.
Definition: visir_pfits.c:877
double visir_pfits_get_wlen(const cpl_propertylist *self)
The central wavelength.
Definition: visir_pfits.c:859
double visir_pfits_get_monoc_pos(const cpl_propertylist *self)
The INS.MONOC1.POS.
Definition: visir_pfits.c:490
double visir_pfits_get_dit(const cpl_propertylist *self)
The DIT.
Definition: visir_pfits.c:309
double visir_pfits_get_pixscale(const cpl_propertylist *self)
The pixel scale.
Definition: visir_pfits.c:678
double visir_pfits_get_chop_stat(const cpl_propertylist *self)
The chopping status.
Definition: visir_pfits.c:187
const char * visir_pfits_get_chopnod_dir(const cpl_propertylist *self)
The chopping direction.
Definition: visir_pfits.c:139
double visir_pfits_get_delta(const cpl_propertylist *self)
The DELTA keyword in a VISIR header.
Definition: visir_pfits.c:285
int visir_pfits_get_start_y(const cpl_propertylist *self)
The WIN STRY key.
Definition: visir_pfits.c:621
double visir_pfits_get_alpha(const cpl_propertylist *self)
The alpha angle.
Definition: visir_pfits.c:115
double visir_pfits_get_mjdobs(const cpl_propertylist *self)
The MJD-OBS.
Definition: visir_pfits.c:466
double visir_pfits_get_temp(const cpl_propertylist *self)
The telescope (M1) temperature [Celcius].
Definition: visir_pfits.c:799
double visir_pfits_get_ra(const cpl_propertylist *self)
The RA.
Definition: visir_pfits.c:709
const char * visir_pfits_get_instrument(const cpl_propertylist *self)
The instrument.
Definition: visir_pfits.c:454