IIINSTRUMENT Pipeline Reference Manual 4.4.3
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
59static const char * visir_pfits_get_slitname(const cpl_propertylist *);
60static double visir_pfits_get_slitwidth_raw(const cpl_propertylist *);
61
62/*----------------------------------------------------------------------------*/
67/*----------------------------------------------------------------------------*/
68
71/*-----------------------------------------------------------------------------
72 Function codes
73 -----------------------------------------------------------------------------*/
74
75
76static inline double
77visir_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/*----------------------------------------------------------------------------*/
91double 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/*----------------------------------------------------------------------------*/
103double 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/*----------------------------------------------------------------------------*/
115double visir_pfits_get_alpha(const cpl_propertylist * self)
116{
117 return visir_pfits_get_double(self, "ESO TEL TARG OFFSETALPHA");
118}
119
120/*----------------------------------------------------------------------------*/
126/*----------------------------------------------------------------------------*/
127const char * visir_pfits_get_arcfile(const cpl_propertylist * self)
128{
129 return visir_pfits_get_string("ARCFILE");
130}
131
132/*----------------------------------------------------------------------------*/
138/*----------------------------------------------------------------------------*/
139const 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/*----------------------------------------------------------------------------*/
152double 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/*----------------------------------------------------------------------------*/
170double 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/*----------------------------------------------------------------------------*/
187double 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/*----------------------------------------------------------------------------*/
205double 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/*----------------------------------------------------------------------------*/
222double 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/*----------------------------------------------------------------------------*/
237int visir_pfits_get_chop_ncycles(const cpl_propertylist * self)
238{
239 return visir_pfits_get_int("ESO DET CHOP NCYCLES");
240}
241
242/*----------------------------------------------------------------------------*/
248/*----------------------------------------------------------------------------*/
249double visir_pfits_get_ada_posang(const cpl_propertylist * self)
250{
251 if (!cpl_propertylist_has(self, VISIR_PFITS_DOUBLE_ADA_POSANG)) {
252 return 0.;
253 }
254 return CPL_MATH_RAD_DEG *
255 cpl_propertylist_get_double(self, VISIR_PFITS_DOUBLE_ADA_POSANG);
256}
257
258/*----------------------------------------------------------------------------*/
264/*----------------------------------------------------------------------------*/
265double visir_pfits_get_cumoffsetx(const cpl_propertylist * self)
266{
267 return visir_pfits_get_double(self, "ESO SEQ CUMOFFSETX");
268}
269
270/*----------------------------------------------------------------------------*/
276/*----------------------------------------------------------------------------*/
277double visir_pfits_get_cumoffsety(const cpl_propertylist * self)
278{
279 return visir_pfits_get_double(self, "ESO SEQ CUMOFFSETY");
280}
281
282/*----------------------------------------------------------------------------*/
288/*----------------------------------------------------------------------------*/
289const char * visir_pfits_get_date_obs(const cpl_propertylist * self)
290{
291 return visir_pfits_get_string("DATE-OBS");
292}
293
294/*----------------------------------------------------------------------------*/
300/*----------------------------------------------------------------------------*/
301double visir_pfits_get_delta(const cpl_propertylist * self)
302{
303 return visir_pfits_get_double(self, "ESO TEL TARG OFFSETDELTA");
304}
305
306/*----------------------------------------------------------------------------*/
312/*----------------------------------------------------------------------------*/
313double visir_pfits_get_dec(const cpl_propertylist * self)
314{
315 return visir_pfits_get_double(self, "DEC");
316}
317
318/*----------------------------------------------------------------------------*/
324/*----------------------------------------------------------------------------*/
325double visir_pfits_get_dit(const cpl_propertylist * self)
326{
327 if (cpl_propertylist_has(self, VISIR_PFITS_DOUBLE_SEQ1_DIT))
328 return visir_pfits_get_double(self, VISIR_PFITS_DOUBLE_SEQ1_DIT);
329 return visir_pfits_get_double(self, VISIR_PFITS_DOUBLE_DIT);
330}
331
332/*----------------------------------------------------------------------------*/
338/*----------------------------------------------------------------------------*/
339int visir_pfits_get_navrg(const cpl_propertylist * self)
340{
341 if (cpl_propertylist_has(self, VISIR_PFITS_INT_NAVRG))
342 return visir_pfits_get_int(VISIR_PFITS_INT_NAVRG);
343 return 1;
344}
345
346/*----------------------------------------------------------------------------*/
352/*----------------------------------------------------------------------------*/
353int visir_pfits_get_expno(const cpl_propertylist * self)
354{
355 return visir_pfits_get_int("ESO TPL EXPNO");
356}
357
358/*----------------------------------------------------------------------------*/
364/*----------------------------------------------------------------------------*/
365const char * visir_pfits_get_filter(const cpl_propertylist * self)
366{
367
368 /* Get the instrument mode */
369 const char * val = visir_pfits_get_insmode(self);
370 static const char * spec[] = {
371 "N_SW_spec",
372 "H2S4_spec",
373 "ARIII_spec",
374 "NEII_2_spec",
375 "H2S3_spec",
376 "H2S1_spec",
377 };
378
379
380 if (val == NULL) return NULL ;
381
382 /* Imaging mode */
383 if (!strcmp(val, "IMG" ))
384 return visir_pfits_get_string("ESO INS FILT1 NAME");
385 /* Spectro mode */
386 if (!strcmp(val, "SPC" ))
387 return visir_pfits_get_string("ESO INS FILT2 NAME");
388 /* Spectro imaging mode */
389 if (!strcmp(val, "SPCIMG")) {
390 const char * filt = visir_pfits_get_string("ESO INS FILT2 NAME");
391 for (size_t i = 0; i < 6; i++) {
392 if (strncmp(spec[i], filt, strlen(spec[i]) - 5) == 0) {
393 return spec[i];
394 }
395 }
396 return filt;
397 }
398
399 cpl_ensure(0, CPL_ERROR_UNSUPPORTED_MODE, NULL);
400
401}
402
403/*----------------------------------------------------------------------------*/
409/*----------------------------------------------------------------------------*/
410double visir_pfits_get_focus(const cpl_propertylist * self)
411{
412 return visir_pfits_get_double(self, "ESO TEL FOCU LEN");
413}
414
415/*----------------------------------------------------------------------------*/
421/*----------------------------------------------------------------------------*/
422double visir_pfits_get_exptime(const cpl_propertylist * self)
423{
424 return visir_pfits_get_double(self, "EXPTIME");
425}
426
427/*----------------------------------------------------------------------------*/
433/*----------------------------------------------------------------------------*/
434const char * visir_pfits_get_frame_type(const cpl_propertylist * self)
435{
436 return visir_pfits_get_string("ESO DET FRAM TYPE");
437}
438
439
440/*----------------------------------------------------------------------------*/
446/*----------------------------------------------------------------------------*/
447const char * visir_pfits_get_det_name(const cpl_propertylist * self)
448{
449 if (cpl_propertylist_has(self, "ESO DET NAME")) {
450 return visir_pfits_get_string("ESO DET NAME");
451 }
452 return NULL;
453}
454
455/*----------------------------------------------------------------------------*/
461/*----------------------------------------------------------------------------*/
462const char * visir_pfits_get_grat1_name(const cpl_propertylist * self)
463{
464 return visir_pfits_get_string("ESO INS GRAT1 NAME");
465}
466
467/*----------------------------------------------------------------------------*/
473/*----------------------------------------------------------------------------*/
474const char * visir_pfits_get_insmode(const cpl_propertylist * self)
475{
476 const char * mode = visir_pfits_get_string("ESO INS MODE");
477 return mode ? mode : "(none)";
478}
479
480/*----------------------------------------------------------------------------*/
486/*----------------------------------------------------------------------------*/
487const char * visir_pfits_get_instrument(const cpl_propertylist * self)
488{
489 return visir_pfits_get_string("INSTRUME");
490}
491
492/*----------------------------------------------------------------------------*/
498/*----------------------------------------------------------------------------*/
499double visir_pfits_get_mjdobs(const cpl_propertylist * self)
500{
501 return visir_pfits_get_double(self, "MJD-OBS");
502}
503
504/*----------------------------------------------------------------------------*/
510/*----------------------------------------------------------------------------*/
511const char * visir_pfits_get_mode(const cpl_propertylist * self)
512{
513 return visir_pfits_get_string("ESO DET MODE NAME");
514}
515
516/*----------------------------------------------------------------------------*/
522/*----------------------------------------------------------------------------*/
523double visir_pfits_get_monoc_pos(const cpl_propertylist * self)
524{
525 return visir_pfits_get_double(self, "ESO INS MONOC1 POS");
526}
527
528/*----------------------------------------------------------------------------*/
534/*----------------------------------------------------------------------------*/
535int visir_pfits_get_ndit(const cpl_propertylist * self)
536{
537 return visir_pfits_get_int("ESO DET NDIT");
538}
539/*----------------------------------------------------------------------------*/
545/*----------------------------------------------------------------------------*/
546int visir_pfits_get_naxis1(const cpl_propertylist * self)
547{
548 if (cpl_propertylist_has(self, "ZNAXIS1"))
549 return visir_pfits_get_int("ZNAXIS1");
550 else
551 return visir_pfits_get_int("NAXIS1");
552}
553
554/*----------------------------------------------------------------------------*/
560/*----------------------------------------------------------------------------*/
561int visir_pfits_get_naxis2(const cpl_propertylist * self)
562{
563 if (cpl_propertylist_has(self, "ZNAXIS2"))
564 return visir_pfits_get_int("ZNAXIS2");
565 else
566 return visir_pfits_get_int("NAXIS2");
567}
568
569/*----------------------------------------------------------------------------*/
575/*----------------------------------------------------------------------------*/
576int visir_pfits_get_naxis3(const cpl_propertylist * self)
577{
578 if (cpl_propertylist_has(self, "ZNAXIS3"))
579 return visir_pfits_get_int("ZNAXIS3");
580 else
581 return visir_pfits_get_int("NAXIS3");
582}
583
584/*----------------------------------------------------------------------------*/
590/*----------------------------------------------------------------------------*/
591int visir_pfits_get_win_nx(const cpl_propertylist * self)
592{
593 if (cpl_propertylist_has(self, "ESO DET WIN NX")) {;
594 return visir_pfits_get_int("ESO DET WIN NX");
595 }
596 else if (cpl_propertylist_has(self, "ESO DET1 WIN NX")) {;
597 return visir_pfits_get_int("ESO DET1 WIN NX");
598 }
599 else if (cpl_propertylist_has(self, "ESO DET ACQ1 WIN NX")) {;
600 return visir_pfits_get_int("ESO DET ACQ1 WIN NX");
601 }
602 return -1;
603}
604
605/*----------------------------------------------------------------------------*/
611/*----------------------------------------------------------------------------*/
612int visir_pfits_get_win_ny(const cpl_propertylist * self)
613{
614 if (cpl_propertylist_has(self, "ESO DET WIN NY")) {;
615 return visir_pfits_get_int("ESO DET WIN NY");
616 }
617 else if (cpl_propertylist_has(self, "ESO DET1 WIN NY")) {;
618 return visir_pfits_get_int("ESO DET1 WIN NY");
619 }
620 else if (cpl_propertylist_has(self, "ESO DET ACQ1 WIN NY")) {;
621 return visir_pfits_get_int("ESO DET ACQ1 WIN NY");
622 }
623 return -1;
624}
625
626/*----------------------------------------------------------------------------*/
632/*----------------------------------------------------------------------------*/
633int visir_pfits_get_start_x(const cpl_propertylist * self)
634{
635 if (cpl_propertylist_has(self, "ESO DET WIN STRX")) {;
636 return visir_pfits_get_int("ESO DET WIN STRX");
637 }
638 else if (cpl_propertylist_has(self, "ESO DET1 WIN STRX")) {;
639 return visir_pfits_get_int("ESO DET1 WIN STRX");
640 }
641 else if (cpl_propertylist_has(self, "ESO DET ACQ1 WIN STRX")) {;
642 return visir_pfits_get_int("ESO DET ACQ1 WIN STRX");
643 }
644 return -1;
645}
646
647/*----------------------------------------------------------------------------*/
653/*----------------------------------------------------------------------------*/
654int visir_pfits_get_start_y(const cpl_propertylist * self)
655{
656 if (cpl_propertylist_has(self, "ESO DET WIN STRY")) {;
657 return visir_pfits_get_int("ESO DET WIN STRY");
658 }
659 else if (cpl_propertylist_has(self, "ESO DET1 WIN STRY")) {;
660 return visir_pfits_get_int("ESO DET1 WIN STRY");
661 }
662 else if (cpl_propertylist_has(self, "ESO DET ACQ1 WIN STRY")) {;
663 return visir_pfits_get_int("ESO DET ACQ1 WIN STRY");
664 }
665 return -1;
666}
667
668/*----------------------------------------------------------------------------*/
674/*----------------------------------------------------------------------------*/
675int visir_pfits_get_numbexp(const cpl_propertylist * self)
676{
677 return visir_pfits_get_int("ESO TPL NEXP");
678}
679
680/*----------------------------------------------------------------------------*/
686/*----------------------------------------------------------------------------*/
687int visir_pfits_get_obs_id(const cpl_propertylist * self)
688{
689 return visir_pfits_get_int("ESO OBS ID");
690}
691
692/*----------------------------------------------------------------------------*/
698/*----------------------------------------------------------------------------*/
699const char * visir_pfits_get_nodpos(const cpl_propertylist * self)
700{
701 return visir_pfits_get_string("ESO SEQ NODPOS");
702}
703
704/*----------------------------------------------------------------------------*/
710/*----------------------------------------------------------------------------*/
711double visir_pfits_get_pixscale(const cpl_propertylist * self)
712{
713 const char * sscale = visir_pfits_get_string(VISIR_PFITS_STRING_PIXSCALE);
714 if (sscale && strlen(sscale) > 0)
715 return atof(sscale);
716 else
717 return -1.;
718}
719
720/*----------------------------------------------------------------------------*/
726/*----------------------------------------------------------------------------*/
727double visir_pfits_get_pixspace(const cpl_propertylist * self)
728{
729 if (cpl_propertylist_has(self, "ESO DET CHIP1 PXSPACE")) {
730 return visir_pfits_get_double(self, "ESO DET CHIP1 PXSPACE");
731 }
732 return visir_pfits_get_double(self, "ESO DET CHIP PXSPACE");
733}
734
735/*----------------------------------------------------------------------------*/
741/*----------------------------------------------------------------------------*/
742double visir_pfits_get_ra(const cpl_propertylist * self)
743{
744 return visir_pfits_get_double(self, "RA");
745}
746
747/*----------------------------------------------------------------------------*/
753/*----------------------------------------------------------------------------*/
754double visir_pfits_get_slitwidth(const cpl_propertylist * self)
755{
756 const char * slitname = visir_pfits_get_slitname(self);
757 double slitwidth = visir_pfits_get_slitwidth_raw(self);
758
759
760 if (!cpl_error_get_code()) {
761
762 static const char * slit_name[] = {"CU_0.12", "CU_0.14", "CU_0.16",
763 "CU_0.20", "CU_0.25", "CU_0.30",
764 "CU_0.40", "CU_0.50", "CU_0.60",
765 "CU_0.70", "CU_0.80", "CU_1.00",
766 "CU_1.20", "CU_1.60", "ST_0.14",
767 "ST_0.16", "ST_0.20", "ST_0.30",
768 "ST_0.40", "ST_0.50", "ST_0.60"};
769
770 static double slit_width[] = {0.12, 0.14, 0.16,
771 0.20, 0.25, 0.30,
772 0.40, 0.50, 0.60,
773 0.70, 0.80, 1.00,
774 1.20, 1.60, 0.14,
775 0.16, 0.20, 0.30,
776 0.40, 0.50, 0.60};
777
778 static const int slit_nums = (int)(sizeof(slit_width)/sizeof(double));
779
780 int i;
781
782 for (i=0; i < slit_nums; i++)
783 if (strstr(slitname, slit_name[i])) break;
784
785 if (i < slit_nums && fabs(slit_width[i] - slitwidth) < 0.001) {
786 /* The Slit width is supposed to be in Arcseconds - as written in
787 the comment of the FITS card.
788 However, if the Slit width matches the Slit name then the Slit
789 width is actually in unit millimeter and is converted */
790
791 cpl_msg_warning(cpl_func,"The Width of slit %s is written in the "
792 "FITS card in units mm. Converting to ArcSecs: "
793 "%g => %g", slitname, slitwidth, slitwidth * 2.5);
794 slitwidth *= 2.5;
795 }
796 }
797
798 return slitwidth;
799}
800
801/*----------------------------------------------------------------------------*/
807/*----------------------------------------------------------------------------*/
808const char * visir_pfits_get_starname(const cpl_propertylist * self)
809{
810 return visir_pfits_get_string("ESO OBS TARG NAME");
811}
812
813/*----------------------------------------------------------------------------*/
819/*----------------------------------------------------------------------------*/
820const char * visir_pfits_get_resol(const cpl_propertylist * self)
821{
822 if (cpl_propertylist_has(self, "ESO INS RESOL")) {
823 return visir_pfits_get_string("ESO INS RESOL");
824 }
825 return NULL;
826}
827
828/*----------------------------------------------------------------------------*/
834/*----------------------------------------------------------------------------*/
835double visir_pfits_get_temp(const cpl_propertylist * self)
836{
837 return visir_pfits_get_double(self, "ESO TEL TH M1 TEMP");
838}
839
840/*----------------------------------------------------------------------------*/
846/*----------------------------------------------------------------------------*/
847double visir_pfits_get_volt1dcta9(const cpl_propertylist * self)
848{
849 return visir_pfits_get_double(self, "ESO DET VOLT1 DCTA9");
850}
851
852/*----------------------------------------------------------------------------*/
858/*----------------------------------------------------------------------------*/
859double visir_pfits_get_volt1dctb9(const cpl_propertylist * self)
860{
861 return visir_pfits_get_double(self, "ESO DET VOLT1 DCTB9");
862}
863
864/*----------------------------------------------------------------------------*/
870/*----------------------------------------------------------------------------*/
871double visir_pfits_get_volt2dcta9(const cpl_propertylist * self)
872{
873 return visir_pfits_get_double(self, "ESO DET VOLT2 DCTA9");
874}
875
876/*----------------------------------------------------------------------------*/
882/*----------------------------------------------------------------------------*/
883double visir_pfits_get_volt2dctb9(const cpl_propertylist * self)
884{
885 return visir_pfits_get_double(self, "ESO DET VOLT2 DCTB9");
886}
887
888/*----------------------------------------------------------------------------*/
894/*----------------------------------------------------------------------------*/
895double visir_pfits_get_wlen(const cpl_propertylist * self)
896{
897 if (cpl_propertylist_has(self, VISIR_PFITS_DOUBLE_PWLEN)) {
898 return visir_pfits_get_double(self, VISIR_PFITS_DOUBLE_PWLEN);
899 }
900 return visir_pfits_get_double(self, VISIR_PFITS_DOUBLE_WLEN);
901}
902
903/*----------------------------------------------------------------------------*/
912/*----------------------------------------------------------------------------*/
913double visir_pfits_get_img_weight(const cpl_propertylist * self)
914{
915 double imgwgt = 1.;
916 if (cpl_propertylist_has(self, "ESO DRS IMGWGT"))
917 imgwgt = cpl_propertylist_get_float(self, "ESO DRS IMGWGT");
918
919 return imgwgt;
920}
921
922/*----------------------------------------------------------------------------*/
931/*----------------------------------------------------------------------------*/
932int visir_pfits_get_nbeams(const cpl_propertylist * self)
933{
934 const cpl_boolean chop_on =
935 cpl_propertylist_get_bool(self, VISIR_PFITS_BOOL_CHOP_STATUS);
936
937 /* FIXME: starring mode support? */
938
939 return chop_on ? 4 : 2;
940}
941
944/*----------------------------------------------------------------------------*/
951/*----------------------------------------------------------------------------*/
952static double visir_pfits_get_slitwidth_raw(const cpl_propertylist * self)
953{
954 return visir_pfits_get_double(self, "ESO INS SLIT1 WID");
955}
956
957/*----------------------------------------------------------------------------*/
963/*----------------------------------------------------------------------------*/
964static const char * visir_pfits_get_slitname(const cpl_propertylist * self)
965{
966 return visir_pfits_get_string("ESO INS SLIT1 NAME");
967}
double visir_pfits_get_monoc_pos(const cpl_propertylist *self)
The INS.MONOC1.POS.
Definition: visir_pfits.c:523
int visir_pfits_get_navrg(const cpl_propertylist *self)
The NAVRG.
Definition: visir_pfits.c:339
double visir_pfits_get_airmass_start(const cpl_propertylist *self)
The airmass start.
Definition: visir_pfits.c:91
double visir_pfits_get_dit(const cpl_propertylist *self)
The DIT.
Definition: visir_pfits.c:325
double visir_pfits_get_ra(const cpl_propertylist *self)
The RA.
Definition: visir_pfits.c:742
double visir_pfits_get_mjdobs(const cpl_propertylist *self)
The MJD-OBS.
Definition: visir_pfits.c:499
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:913
double visir_pfits_get_temp(const cpl_propertylist *self)
The telescope (M1) temperature [Celcius].
Definition: visir_pfits.c:835
const char * visir_pfits_get_instrument(const cpl_propertylist *self)
The instrument.
Definition: visir_pfits.c:487
int visir_pfits_get_win_nx(const cpl_propertylist *self)
The WIN NX key.
Definition: visir_pfits.c:591
double visir_pfits_get_delta(const cpl_propertylist *self)
The DELTA keyword in a VISIR header.
Definition: visir_pfits.c:301
int visir_pfits_get_win_ny(const cpl_propertylist *self)
The WIN NY key.
Definition: visir_pfits.c:612
double visir_pfits_get_dec(const cpl_propertylist *self)
The DEC.
Definition: visir_pfits.c:313
double visir_pfits_get_volt1dctb9(const cpl_propertylist *self)
The VOLT1.DCTB9.
Definition: visir_pfits.c:859
int visir_pfits_get_chop_ncycles(const cpl_propertylist *self)
The number of chopping cycles.
Definition: visir_pfits.c:237
double visir_pfits_get_slitwidth(const cpl_propertylist *self)
The slit width in Arcseconds.
Definition: visir_pfits.c:754
int visir_pfits_get_expno(const cpl_propertylist *self)
The number of the current exposition.
Definition: visir_pfits.c:353
double visir_pfits_get_pixscale(const cpl_propertylist *self)
The pixel scale.
Definition: visir_pfits.c:711
double visir_pfits_get_volt2dctb9(const cpl_propertylist *self)
The VOLT2.DCTB9.
Definition: visir_pfits.c:883
const char * visir_pfits_get_date_obs(const cpl_propertylist *self)
The date of observation.
Definition: visir_pfits.c:289
double visir_pfits_get_ada_posang(const cpl_propertylist *self)
The adapter position angle in rad.
Definition: visir_pfits.c:249
double visir_pfits_get_chop_posang(const cpl_propertylist *self)
The chopping position angle in rad.
Definition: visir_pfits.c:205
const char * visir_pfits_get_starname(const cpl_propertylist *self)
The std star name.
Definition: visir_pfits.c:808
int visir_pfits_get_obs_id(const cpl_propertylist *self)
The OBS ID.
Definition: visir_pfits.c:687
const char * visir_pfits_get_det_name(const cpl_propertylist *self)
The detector name.
Definition: visir_pfits.c:447
const char * visir_pfits_get_insmode(const cpl_propertylist *self)
The mode.
Definition: visir_pfits.c:474
const char * visir_pfits_get_arcfile(const cpl_propertylist *self)
The arcfile
Definition: visir_pfits.c:127
double visir_pfits_get_exptime(const cpl_propertylist *self)
The exposure time.
Definition: visir_pfits.c:422
double visir_pfits_get_cumoffsety(const cpl_propertylist *self)
The cumulative offset in Y.
Definition: visir_pfits.c:277
const char * visir_pfits_get_filter(const cpl_propertylist *self)
The filter.
Definition: visir_pfits.c:365
double visir_pfits_get_pixspace(const cpl_propertylist *self)
The pixel spacing.
Definition: visir_pfits.c:727
const char * visir_pfits_get_chopnod_dir(const cpl_propertylist *self)
The chopping direction.
Definition: visir_pfits.c:139
double visir_pfits_get_focus(const cpl_propertylist *self)
The focus.
Definition: visir_pfits.c:410
double visir_pfits_get_volt2dcta9(const cpl_propertylist *self)
The VOLT2.DCTA9.
Definition: visir_pfits.c:871
int visir_pfits_get_ndit(const cpl_propertylist *self)
The NDIT keyword.
Definition: visir_pfits.c:535
double visir_pfits_get_airmass_end(const cpl_propertylist *self)
The airmass end.
Definition: visir_pfits.c:103
int visir_pfits_get_naxis3(const cpl_propertylist *self)
The NAXIS3 key.
Definition: visir_pfits.c:576
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_grat1_name(const cpl_propertylist *self)
The name of grating 1.
Definition: visir_pfits.c:462
double visir_pfits_get_alpha(const cpl_propertylist *self)
The alpha angle.
Definition: visir_pfits.c:115
double visir_pfits_get_volt1dcta9(const cpl_propertylist *self)
The VOLT1.DCTA9.
Definition: visir_pfits.c:847
int visir_pfits_get_naxis1(const cpl_propertylist *self)
The NAXIS1 key.
Definition: visir_pfits.c:546
double visir_pfits_get_chop_throw(const cpl_propertylist *self)
The chopping throw.
Definition: visir_pfits.c:152
int visir_pfits_get_naxis2(const cpl_propertylist *self)
The NAXIS2 key.
Definition: visir_pfits.c:561
double visir_pfits_get_chop_freq(const cpl_propertylist *self)
The chopping frequency.
Definition: visir_pfits.c:170
int visir_pfits_get_start_y(const cpl_propertylist *self)
The WIN STRY key.
Definition: visir_pfits.c:654
const char * visir_pfits_get_frame_type(const cpl_propertylist *self)
The frame type.
Definition: visir_pfits.c:434
const char * visir_pfits_get_mode(const cpl_propertylist *self)
The mode name.
Definition: visir_pfits.c:511
double visir_pfits_get_cumoffsetx(const cpl_propertylist *self)
The cumulative offset in X.
Definition: visir_pfits.c:265
int visir_pfits_get_start_x(const cpl_propertylist *self)
The WIN STRX key.
Definition: visir_pfits.c:633
double visir_pfits_get_wlen(const cpl_propertylist *self)
The central wavelength.
Definition: visir_pfits.c:895
const char * visir_pfits_get_nodpos(const cpl_propertylist *self)
The nodding position.
Definition: visir_pfits.c:699
const char * visir_pfits_get_resol(const cpl_propertylist *self)
The spectral resolution.
Definition: visir_pfits.c:820
int visir_pfits_get_numbexp(const cpl_propertylist *self)
The number of exposures.
Definition: visir_pfits.c:675
double visir_pfits_get_chop_stat(const cpl_propertylist *self)
The chopping status.
Definition: visir_pfits.c:187
int visir_pfits_get_nbeams(const cpl_propertylist *self)
The number of input beams.
Definition: visir_pfits.c:932