35#include "irplib_pfits.h"
44#define VISIR_PFITS_STRING_ARCFILE "ARCFILE"
45#define VISIR_PFITS_STRING_DATE_OBS "DATE-OBS"
46#define VISIR_PFITS_DOUBLE_DEC "DEC"
47#define VISIR_PFITS_DOUBLE_PIXSPACE "ESO DET CHIP PXSPACE"
48#define VISIR_PFITS_INT_CHOP_NCYCLES "ESO DET CHOP NCYCLES"
49#define VISIR_PFITS_DOUBLE_DIT "ESO DET DIT"
50#define VISIR_PFITS_DOUBLE_SEQ1_DIT "ESO DET SEQ1 DIT"
51#define VISIR_PFITS_INT_NAVRG "ESO DET NAVRG"
52#define VISIR_PFITS_STRING_FRAME_TYPE "ESO DET FRAM TYPE"
53#define VISIR_PFITS_STRING_MODE "ESO DET MODE NAME"
54#define VISIR_PFITS_INT_NDIT "ESO DET NDIT"
55#define VISIR_PFITS_INT_NDITSKIP "ESO DET NDITSKIP"
56#define VISIR_PFITS_DOUBLE_VOLT1DCTA9 "ESO DET VOLT1 DCTA9"
57#define VISIR_PFITS_DOUBLE_VOLT1DCTB9 "ESO DET VOLT1 DCTB9"
58#define VISIR_PFITS_DOUBLE_VOLT2DCTA9 "ESO DET VOLT2 DCTA9"
59#define VISIR_PFITS_DOUBLE_VOLT2DCTB9 "ESO DET VOLT2 DCTB9"
60#define VISIR_PFITS_STRING_GRAT1_NAME "ESO INS GRAT1 NAME"
61#define VISIR_PFITS_DOUBLE_WLEN "ESO INS GRAT1 WLEN"
62#define VISIR_PFITS_DOUBLE_PWLEN "ESO INS PRIS WLEN"
63#define VISIR_PFITS_STRING_INSMODE "ESO INS MODE"
64#define VISIR_PFITS_DOUBLE_MONOC_POS "ESO INS MONOC1 POS"
65#define VISIR_PFITS_STRING_PIXSCALE "ESO INS PFOV"
66#define VISIR_PFITS_STRING_RESOL "ESO INS RESOL"
67#define VISIR_PFITS_STRING_SLITNAME "ESO INS SLIT1 NAME"
68#define VISIR_PFITS_INT_OBS_ID "ESO OBS ID"
69#define VISIR_PFITS_STRING_STARNAME "ESO OBS TARG NAME"
70#define VISIR_PFITS_STRING_CHOPNOD_DIR "ESO SEQ CHOPNOD DIR"
71#define VISIR_PFITS_DOUBLE_CUMOFFSETX "ESO SEQ CUMOFFSETX"
72#define VISIR_PFITS_DOUBLE_CUMOFFSETY "ESO SEQ CUMOFFSETY"
73#define VISIR_PFITS_STRING_NODPOS "ESO SEQ NODPOS"
74#define VISIR_PFITS_DOUBLE_AIRMASS_END "ESO TEL AIRM END"
75#define VISIR_PFITS_DOUBLE_AIRMASS_START "ESO TEL AIRM START"
76#define VISIR_PFITS_BOOL_CHOP_STATUS "ESO TEL CHOP ST"
77#define VISIR_PFITS_DOUBLE_CHOP_THROW "ESO TEL CHOP THROW"
78#define VISIR_PFITS_STRING_CHOP_START "ESO TEL CHOP START"
79#define VISIR_PFITS_DOUBLE_CHOP_FREQ "ESO TEL CHOP FREQ"
80#define VISIR_PFITS_DOUBLE_CHOP_POSANG "ESO TEL CHOP POSANG"
81#define VISIR_PFITS_STRING_CHOP_START "ESO TEL CHOP START"
82#define VISIR_PFITS_DOUBLE_ADA_POSANG "ESO ADA POSANG"
83#define VISIR_PFITS_STRING_OBS_START "DATE-OBS"
84#define VISIR_PFITS_DOUBLE_FOCUS "ESO TEL FOCU LEN"
85#define VISIR_PFITS_DOUBLE_ALPHA "ESO TEL TARG OFFSETALPHA"
86#define VISIR_PFITS_DOUBLE_DELTA "ESO TEL TARG OFFSETDELTA"
87#define VISIR_PFITS_DOUBLE_TEMP "ESO TEL TH M1 TEMP"
88#define VISIR_PFITS_INT_EXPNO "ESO TPL EXPNO"
89#define VISIR_PFITS_INT_NUMBEXP "ESO TPL NEXP"
90#define VISIR_PFITS_DOUBLE_EXPTIME "EXPTIME"
91#define VISIR_PFITS_STRING_INSTRUMENT "INSTRUME"
92#define VISIR_PFITS_DOUBLE_MJDOBS "MJD-OBS"
93#define VISIR_PFITS_INT_NAXIS3 "NAXIS3"
94#define VISIR_PFITS_DOUBLE_RA "RA"
95#define VISIR_PFITS_DPR_TECH "ESO DPR TECH"
97#define VISIR_PFITS_DOUBLE_SLITWIDTH "ESO INS SLIT1 WID"
98#define VISIR_PFITS_STRING_FILTER1 "ESO INS FILT1 NAME"
99#define VISIR_PFITS_STRING_FILTER2 "ESO INS FILT2 NAME"
101#define VISIR_DRS_CUMOFFSETX "ESO DRS CUMOFFSETX"
102#define VISIR_DRS_CUMOFFSETY "ESO DRS CUMOFFSETY"
103#define VISIR_DRS_CUMOFFSETXA "ESO DRS CUMOFFSETXA"
104#define VISIR_DRS_CUMOFFSETYA "ESO DRS CUMOFFSETYA"
105#define VISIR_DRS_CUMOFFSETXB "ESO DRS CUMOFFSETXB"
106#define VISIR_DRS_CUMOFFSETYB "ESO DRS CUMOFFSETYB"
108#define VISIR_PFITS_REGEXP_DIT \
109 VISIR_PFITS_DOUBLE_DIT \
110 "|" VISIR_PFITS_DOUBLE_SEQ1_DIT \
111 "|" VISIR_PFITS_INT_CHOP_NCYCLES \
112 "|" VISIR_PFITS_INT_NDIT \
113 "|" VISIR_PFITS_INT_NDITSKIP \
114 "|" VISIR_PFITS_INT_NAVRG
116#define VISIR_PFITS_REGEXP_CAPA \
117 VISIR_PFITS_STRING_INSMODE \
118 "|" VISIR_PFITS_DOUBLE_VOLT1DCTA9 \
119 "|" VISIR_PFITS_DOUBLE_VOLT1DCTB9 \
120 "|" VISIR_PFITS_DOUBLE_VOLT2DCTA9 \
121 "|" VISIR_PFITS_DOUBLE_VOLT2DCTB9
123#define VISIR_PFITS_REGEXP_INPUTS_COMBINE \
124 VISIR_PFITS_REGEXP_DIT \
125 "|" VISIR_PFITS_STRING_NODPOS \
128 "|" VISIR_PFITS_REGEXP_LOAD_IMAGELIST
130#define VISIR_PFITS_REGEXP_IMG_RECOMBINE \
131 VISIR_PFITS_REGEXP_DIT \
132 "|" VISIR_PFITS_DOUBLE_CUMOFFSETX \
133 "|" VISIR_PFITS_DOUBLE_CUMOFFSETY \
134 "|" VISIR_PFITS_REGEXP_INPUTS_COMBINE \
135 "|" VISIR_PFITS_STRING_CHOPNOD_DIR \
136 "|" VISIR_PFITS_STRING_PIXSCALE \
137 "|" VISIR_PFITS_DOUBLE_CHOP_THROW \
138 "|" VISIR_PFITS_DOUBLE_CHOP_POSANG \
139 "|" VISIR_PFITS_BOOL_CHOP_STATUS \
140 "|" VISIR_PFITS_DOUBLE_ADA_POSANG \
141 "|" VISIR_PFITS_REGEXP_CAPA
143#define VISIR_PFITS_REGEXP_SPC_GET_RES_WL \
144 VISIR_PFITS_DOUBLE_WLEN \
145 "|" VISIR_PFITS_DOUBLE_SLITWIDTH \
146 "|" VISIR_PFITS_DOUBLE_PIXSPACE \
147 "|" VISIR_PFITS_STRING_RESOL \
148 "|" VISIR_PFITS_STRING_SLITNAME \
149 "|" VISIR_PFITS_DOUBLE_TEMP
153#define VISIR_PFITS_REGEXP_SPC_SENSIT \
154 VISIR_PFITS_INT_NDIT \
155 "|" VISIR_PFITS_DOUBLE_RA \
156 "|" VISIR_PFITS_DOUBLE_DEC \
157 "|" VISIR_PFITS_STRING_STARNAME
161#define VISIR_PFITS_REGEXP_LOAD_IMAGELIST \
162 VISIR_PFITS_REGEXP_DIT \
163 "|" VISIR_PFITS_STRING_FRAME_TYPE \
164 "|" VISIR_PFITS_INT_NAXIS3 \
165 "|" IRPLIB_PFITS_REGEXP_DPR
169#define VISIR_PFITS_REGEXP_IMG_SENSIT \
170 VISIR_PFITS_STRING_FILTER1 \
171 "|" VISIR_PFITS_STRING_FILTER2 \
172 "|" VISIR_PFITS_STRING_PIXSCALE \
173 "|" VISIR_PFITS_STRING_INSMODE \
174 "|" VISIR_PFITS_REGEXP_SPC_SENSIT
177#define VISIR_PFITS_REGEXP_DARK_PAF \
178 IRPLIB_PFITS_REGEXP_PAF \
179 "|" VISIR_PFITS_DOUBLE_DIT \
180 "|" VISIR_PFITS_DOUBLE_SEQ1_DIT \
181 "|" VISIR_PFITS_INT_NDIT \
182 "|" VISIR_PFITS_STRING_MODE \
183 "|" VISIR_PFITS_STRING_PIXSCALE \
184 "|" VISIR_PFITS_STRING_RESOL \
185 "|ESO INS GRAT1 WLEN|ESO INS SLIT1 WID" \
186 "|ESO INS FILT1 NAME|ESO INS FILT2 NAME" \
187 "|ESO DET NCORRS NAME|ESO TPL START" \
188 "|" VISIR_PFITS_DOUBLE_PWLEN
191#define VISIR_PFITS_REGEXP_DARK \
192 IRPLIB_PFITS_REGEXP_DPR \
193 "|" VISIR_PFITS_DOUBLE_EXPTIME \
196#define VISIR_PFITS_REGEXP_COMBINE_PAF \
197 IRPLIB_PFITS_REGEXP_PAF \
198 "|" VISIR_PFITS_DOUBLE_DIT \
199 "|" VISIR_PFITS_DOUBLE_SEQ1_DIT \
200 "|" VISIR_PFITS_STRING_PIXSCALE \
201 "|" VISIR_PFITS_DOUBLE_AIRMASS_START
203#define VISIR_PFITS_REGEXP_IMG_PHOT_PAF \
204 IRPLIB_PFITS_REGEXP_PAF \
205 "|" VISIR_PFITS_DOUBLE_DIT \
206 "|" VISIR_PFITS_DOUBLE_SEQ1_DIT \
207 "|" VISIR_PFITS_DOUBLE_AIRMASS_START \
208 "|" VISIR_PFITS_DOUBLE_AIRMASS_END \
209 "|" VISIR_PFITS_STRING_PIXSCALE
211#define VISIR_PFITS_IMG_PHOT_COPY \
212 IRPLIB_PFITS_REGEXP_RECAL \
215#define VISIR_PFITS_SPC_PHOT_COPY \
216 VISIR_PFITS_IMG_PHOT_COPY "|GRAT1|PRIS"
218#define VISIR_PFITS_FF_COPY \
219 VISIR_PFITS_SPC_PHOT_COPY
221#define VISIR_PFITS_REGEXP_SPC_WCAL_PAF \
222 IRPLIB_PFITS_REGEXP_PAF \
223 "|" VISIR_PFITS_STRING_GRAT1_NAME
225#define VISIR_PFITS_REGEXP_SPC_PHOT_PAF \
226 VISIR_PFITS_REGEXP_IMG_PHOT_PAF \
227 "|" VISIR_PFITS_STRING_GRAT1_NAME
231static const char visir_property_regexp[] =
232 "^(" IRPLIB_PFITS_REGEXP_PAF
233 "|" VISIR_PFITS_SPC_PHOT_COPY
234 "|" VISIR_PFITS_STRING_ARCFILE
235 "|" VISIR_PFITS_STRING_DATE_OBS
236 "|" VISIR_PFITS_DOUBLE_DEC
237 "|" VISIR_PFITS_DOUBLE_PIXSPACE
238 "|" VISIR_PFITS_INT_CHOP_NCYCLES
239 "|" VISIR_PFITS_DOUBLE_DIT
240 "|" VISIR_PFITS_DOUBLE_SEQ1_DIT
241 "|" VISIR_PFITS_STRING_FRAME_TYPE
242 "|" VISIR_PFITS_STRING_MODE
243 "|" VISIR_PFITS_INT_NDIT
244 "|" VISIR_PFITS_DOUBLE_VOLT1DCTA9
245 "|" VISIR_PFITS_DOUBLE_VOLT1DCTB9
246 "|" VISIR_PFITS_DOUBLE_VOLT2DCTA9
247 "|" VISIR_PFITS_DOUBLE_VOLT2DCTB9
248 "|" VISIR_PFITS_STRING_GRAT1_NAME
249 "|" VISIR_PFITS_DOUBLE_WLEN
250 "|" VISIR_PFITS_STRING_INSMODE
251 "|" VISIR_PFITS_DOUBLE_MONOC_POS
252 "|" VISIR_PFITS_STRING_PIXSCALE
253 "|" VISIR_PFITS_STRING_RESOL
254 "|" VISIR_PFITS_STRING_SLITNAME
255 "|" VISIR_PFITS_DOUBLE_SLITWIDTH
256 "|" VISIR_PFITS_INT_OBS_ID
257 "|" VISIR_PFITS_STRING_STARNAME
258 "|" VISIR_PFITS_STRING_CHOPNOD_DIR
259 "|" VISIR_PFITS_BOOL_CHOP_STATUS
260 "|" VISIR_PFITS_DOUBLE_CHOP_THROW
261 "|" VISIR_PFITS_DOUBLE_CHOP_POSANG
262 "|" VISIR_PFITS_DOUBLE_ADA_POSANG
263 "|" VISIR_PFITS_DOUBLE_CUMOFFSETX
264 "|" VISIR_PFITS_DOUBLE_CUMOFFSETY
265 "|" VISIR_PFITS_STRING_NODPOS
266 "|" VISIR_PFITS_DOUBLE_AIRMASS_END
267 "|" VISIR_PFITS_DOUBLE_AIRMASS_START
268 "|" VISIR_PFITS_DOUBLE_FOCUS
269 "|" VISIR_PFITS_DOUBLE_ALPHA
270 "|" VISIR_PFITS_DOUBLE_DELTA
271 "|" VISIR_PFITS_DOUBLE_TEMP
272 "|" VISIR_PFITS_INT_EXPNO
273 "|" VISIR_PFITS_INT_NUMBEXP
274 "|" VISIR_PFITS_DOUBLE_EXPTIME
275 "|" VISIR_PFITS_STRING_INSTRUMENT
276 "|" VISIR_PFITS_DOUBLE_MJDOBS
278 "|" VISIR_PFITS_INT_NAXIS3
279 "|" VISIR_PFITS_DOUBLE_RA
280 "|" VISIR_PFITS_STRING_FILTER1
281 "|" VISIR_PFITS_STRING_FILTER2
282 "|" IRPLIB_PFITS_REGEXP_DPR
")$";
288static inline cpl_boolean visir_is_spc(
const cpl_propertylist * plist)
292 if (!cpl_propertylist_has(plist, VISIR_PFITS_DPR_TECH)) {
295 tech = cpl_propertylist_get_string(plist, VISIR_PFITS_DPR_TECH);
299 if (strstr(tech,
"SPECTRUM") || strstr(tech,
"ECHELLE")) {
305static inline cpl_boolean visir_is_img(
const cpl_propertylist * plist)
309 if (!cpl_propertylist_has(plist, VISIR_PFITS_DPR_TECH)) {
312 tech = cpl_propertylist_get_string(plist, VISIR_PFITS_DPR_TECH);
316 if (strstr(tech,
"IMAGE")) {
double visir_pfits_get_monoc_pos(const cpl_propertylist *)
The INS.MONOC1.POS.
int visir_pfits_get_navrg(const cpl_propertylist *)
The NAVRG.
double visir_pfits_get_airmass_start(const cpl_propertylist *)
The airmass start.
double visir_pfits_get_dit(const cpl_propertylist *)
The DIT.
double visir_pfits_get_ra(const cpl_propertylist *)
The RA.
double visir_pfits_get_mjdobs(const cpl_propertylist *)
The MJD-OBS.
double visir_pfits_get_img_weight(const cpl_propertylist *)
The relative weight of the image compared to the other images.
double visir_pfits_get_temp(const cpl_propertylist *)
The telescope (M1) temperature [Celcius].
const char * visir_pfits_get_instrument(const cpl_propertylist *)
The instrument.
int visir_pfits_get_win_nx(const cpl_propertylist *self)
The WIN NX key.
double visir_pfits_get_delta(const cpl_propertylist *)
The DELTA keyword in a VISIR header.
int visir_pfits_get_win_ny(const cpl_propertylist *self)
The WIN NY key.
double visir_pfits_get_dec(const cpl_propertylist *)
The DEC.
double visir_pfits_get_volt1dctb9(const cpl_propertylist *)
The VOLT1.DCTB9.
int visir_pfits_get_chop_ncycles(const cpl_propertylist *)
The number of chopping cycles.
double visir_pfits_get_slitwidth(const cpl_propertylist *)
The slit width in Arcseconds.
int visir_pfits_get_expno(const cpl_propertylist *)
The number of the current exposition.
double visir_pfits_get_pixscale(const cpl_propertylist *)
The pixel scale.
double visir_pfits_get_volt2dctb9(const cpl_propertylist *)
The VOLT2.DCTB9.
const char * visir_pfits_get_date_obs(const cpl_propertylist *)
The date of observation.
double visir_pfits_get_ada_posang(const cpl_propertylist *)
The adapter position angle in rad.
double visir_pfits_get_chop_posang(const cpl_propertylist *)
The chopping position angle in rad.
const char * visir_pfits_get_starname(const cpl_propertylist *)
The std star name.
int visir_pfits_get_obs_id(const cpl_propertylist *)
The OBS ID.
const char * visir_pfits_get_det_name(const cpl_propertylist *)
The detector name.
const char * visir_pfits_get_insmode(const cpl_propertylist *)
The mode.
const char * visir_pfits_get_arcfile(const cpl_propertylist *)
The arcfile
double visir_pfits_get_exptime(const cpl_propertylist *)
The exposure time.
double visir_pfits_get_cumoffsety(const cpl_propertylist *)
The cumulative offset in Y.
const char * visir_pfits_get_filter(const cpl_propertylist *)
The filter.
double visir_pfits_get_pixspace(const cpl_propertylist *)
The pixel spacing.
const char * visir_pfits_get_chopnod_dir(const cpl_propertylist *)
The chopping direction.
double visir_pfits_get_focus(const cpl_propertylist *)
The focus.
double visir_pfits_get_volt2dcta9(const cpl_propertylist *)
The VOLT2.DCTA9.
int visir_pfits_get_ndit(const cpl_propertylist *)
The NDIT keyword.
double visir_pfits_get_airmass_end(const cpl_propertylist *)
The airmass end.
int visir_pfits_get_naxis3(const cpl_propertylist *)
The NAXIS3 key.
double visir_pfits_get_chop_pthrow(const cpl_propertylist *)
The chopping throw in pixels.
const char * visir_pfits_get_grat1_name(const cpl_propertylist *)
The name of grating 1.
double visir_pfits_get_alpha(const cpl_propertylist *)
The alpha angle.
double visir_pfits_get_volt1dcta9(const cpl_propertylist *)
The VOLT1.DCTA9.
int visir_pfits_get_naxis1(const cpl_propertylist *)
The NAXIS1 key.
double visir_pfits_get_chop_throw(const cpl_propertylist *)
The chopping throw.
int visir_pfits_get_naxis2(const cpl_propertylist *)
The NAXIS2 key.
double visir_pfits_get_chop_freq(const cpl_propertylist *self)
The chopping frequency.
int visir_pfits_get_start_y(const cpl_propertylist *self)
The WIN STRY key.
const char * visir_pfits_get_frame_type(const cpl_propertylist *)
The frame type.
const char * visir_pfits_get_mode(const cpl_propertylist *)
The mode name.
double visir_pfits_get_cumoffsetx(const cpl_propertylist *)
The cumulative offset in X.
int visir_pfits_get_start_x(const cpl_propertylist *self)
The WIN STRX key.
double visir_pfits_get_wlen(const cpl_propertylist *)
The central wavelength.
const char * visir_pfits_get_nodpos(const cpl_propertylist *)
The nodding position.
const char * visir_pfits_get_resol(const cpl_propertylist *)
The spectral resolution.
int visir_pfits_get_numbexp(const cpl_propertylist *)
The number of exposures.
double visir_pfits_get_chop_stat(const cpl_propertylist *self)
The chopping status.
int visir_pfits_get_nbeams(const cpl_propertylist *)
The number of input beams.