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_STRING_OBS_START "DATE-OBS"
83 #define VISIR_PFITS_DOUBLE_FOCUS "ESO TEL FOCU LEN"
84 #define VISIR_PFITS_DOUBLE_ALPHA "ESO TEL TARG OFFSETALPHA"
85 #define VISIR_PFITS_DOUBLE_DELTA "ESO TEL TARG OFFSETDELTA"
86 #define VISIR_PFITS_DOUBLE_TEMP "ESO TEL TH M1 TEMP"
87 #define VISIR_PFITS_INT_EXPNO "ESO TPL EXPNO"
88 #define VISIR_PFITS_INT_NUMBEXP "ESO TPL NEXP"
89 #define VISIR_PFITS_DOUBLE_EXPTIME "EXPTIME"
90 #define VISIR_PFITS_STRING_INSTRUMENT "INSTRUME"
91 #define VISIR_PFITS_DOUBLE_MJDOBS "MJD-OBS"
92 #define VISIR_PFITS_INT_NAXIS3 "NAXIS3"
93 #define VISIR_PFITS_DOUBLE_RA "RA"
94 #define VISIR_PFITS_DPR_TECH "ESO DPR TECH"
96 #define VISIR_PFITS_DOUBLE_SLITWIDTH "ESO INS SLIT1 WID"
97 #define VISIR_PFITS_STRING_FILTER1 "ESO INS FILT1 NAME"
98 #define VISIR_PFITS_STRING_FILTER2 "ESO INS FILT2 NAME"
100 #define VISIR_DRS_CUMOFFSETXA "ESO DRS CUMOFFSETXA"
101 #define VISIR_DRS_CUMOFFSETYA "ESO DRS CUMOFFSETYA"
102 #define VISIR_DRS_CUMOFFSETXB "ESO DRS CUMOFFSETXB"
103 #define VISIR_DRS_CUMOFFSETYB "ESO DRS CUMOFFSETYB"
105 #define VISIR_PFITS_REGEXP_DIT \
106 VISIR_PFITS_DOUBLE_DIT \
107 "|" VISIR_PFITS_DOUBLE_SEQ1_DIT \
108 "|" VISIR_PFITS_INT_CHOP_NCYCLES \
109 "|" VISIR_PFITS_INT_NDIT \
110 "|" VISIR_PFITS_INT_NDITSKIP \
111 "|" VISIR_PFITS_INT_NAVRG
113 #define VISIR_PFITS_REGEXP_CAPA \
114 VISIR_PFITS_STRING_INSMODE \
115 "|" VISIR_PFITS_DOUBLE_VOLT1DCTA9 \
116 "|" VISIR_PFITS_DOUBLE_VOLT1DCTB9 \
117 "|" VISIR_PFITS_DOUBLE_VOLT2DCTA9 \
118 "|" VISIR_PFITS_DOUBLE_VOLT2DCTB9
120 #define VISIR_PFITS_REGEXP_INPUTS_COMBINE \
121 VISIR_PFITS_REGEXP_DIT \
122 "|" VISIR_PFITS_STRING_NODPOS \
125 "|" VISIR_PFITS_REGEXP_LOAD_IMAGELIST
127 #define VISIR_PFITS_REGEXP_IMG_RECOMBINE \
128 VISIR_PFITS_REGEXP_DIT \
129 "|" VISIR_PFITS_DOUBLE_CUMOFFSETX \
130 "|" VISIR_PFITS_DOUBLE_CUMOFFSETY \
131 "|" VISIR_PFITS_REGEXP_INPUTS_COMBINE \
132 "|" VISIR_PFITS_STRING_CHOPNOD_DIR \
133 "|" VISIR_PFITS_STRING_PIXSCALE \
134 "|" VISIR_PFITS_DOUBLE_CHOP_THROW \
135 "|" VISIR_PFITS_DOUBLE_CHOP_POSANG \
136 "|" VISIR_PFITS_BOOL_CHOP_STATUS \
137 "|" VISIR_PFITS_REGEXP_CAPA
139 #define VISIR_PFITS_REGEXP_SPC_GET_RES_WL \
140 VISIR_PFITS_DOUBLE_WLEN \
141 "|" VISIR_PFITS_DOUBLE_SLITWIDTH \
142 "|" VISIR_PFITS_DOUBLE_PIXSPACE \
143 "|" VISIR_PFITS_STRING_RESOL \
144 "|" VISIR_PFITS_STRING_SLITNAME \
145 "|" VISIR_PFITS_DOUBLE_TEMP
149 #define VISIR_PFITS_REGEXP_SPC_SENSIT \
150 VISIR_PFITS_INT_NDIT \
151 "|" VISIR_PFITS_DOUBLE_RA \
152 "|" VISIR_PFITS_DOUBLE_DEC \
153 "|" VISIR_PFITS_STRING_STARNAME
157 #define VISIR_PFITS_REGEXP_LOAD_IMAGELIST \
158 VISIR_PFITS_REGEXP_DIT \
159 "|" VISIR_PFITS_STRING_FRAME_TYPE \
160 "|" VISIR_PFITS_INT_NAXIS3 \
161 "|" IRPLIB_PFITS_REGEXP_DPR
165 #define VISIR_PFITS_REGEXP_IMG_SENSIT \
166 VISIR_PFITS_STRING_FILTER1 \
167 "|" VISIR_PFITS_STRING_FILTER2 \
168 "|" VISIR_PFITS_STRING_PIXSCALE \
169 "|" VISIR_PFITS_STRING_INSMODE \
170 "|" VISIR_PFITS_REGEXP_SPC_SENSIT
173 #define VISIR_PFITS_REGEXP_DARK_PAF \
174 IRPLIB_PFITS_REGEXP_PAF \
175 "|" VISIR_PFITS_DOUBLE_DIT \
176 "|" VISIR_PFITS_DOUBLE_SEQ1_DIT \
177 "|" VISIR_PFITS_INT_NDIT \
178 "|" VISIR_PFITS_STRING_MODE \
179 "|" VISIR_PFITS_STRING_PIXSCALE \
180 "|" VISIR_PFITS_STRING_RESOL \
181 "|ESO INS GRAT1 WLEN|ESO INS SLIT1 WID" \
182 "|ESO INS FILT1 NAME|ESO INS FILT2 NAME" \
183 "|ESO DET NCORRS NAME|ESO TPL START" \
184 "|" VISIR_PFITS_DOUBLE_PWLEN
187 #define VISIR_PFITS_REGEXP_DARK \
188 IRPLIB_PFITS_REGEXP_DPR \
189 "|" VISIR_PFITS_DOUBLE_EXPTIME \
192 #define VISIR_PFITS_REGEXP_COMBINE_PAF \
193 IRPLIB_PFITS_REGEXP_PAF \
194 "|" VISIR_PFITS_DOUBLE_DIT \
195 "|" VISIR_PFITS_DOUBLE_SEQ1_DIT \
196 "|" VISIR_PFITS_STRING_PIXSCALE \
197 "|" VISIR_PFITS_DOUBLE_AIRMASS_START
199 #define VISIR_PFITS_REGEXP_IMG_PHOT_PAF \
200 IRPLIB_PFITS_REGEXP_PAF \
201 "|" VISIR_PFITS_DOUBLE_DIT \
202 "|" VISIR_PFITS_DOUBLE_SEQ1_DIT \
203 "|" VISIR_PFITS_DOUBLE_AIRMASS_START \
204 "|" VISIR_PFITS_DOUBLE_AIRMASS_END \
205 "|" VISIR_PFITS_STRING_PIXSCALE
207 #define VISIR_PFITS_IMG_PHOT_COPY \
208 IRPLIB_PFITS_REGEXP_RECAL \
211 #define VISIR_PFITS_SPC_PHOT_COPY \
212 VISIR_PFITS_IMG_PHOT_COPY "|GRAT1|PRIS"
214 #define VISIR_PFITS_FF_COPY \
215 VISIR_PFITS_SPC_PHOT_COPY
217 #define VISIR_PFITS_REGEXP_SPC_WCAL_PAF \
218 IRPLIB_PFITS_REGEXP_PAF \
219 "|" VISIR_PFITS_STRING_GRAT1_NAME
221 #define VISIR_PFITS_REGEXP_SPC_PHOT_PAF \
222 VISIR_PFITS_REGEXP_IMG_PHOT_PAF \
223 "|" VISIR_PFITS_STRING_GRAT1_NAME
227 static const char visir_property_regexp[] =
228 "^(" IRPLIB_PFITS_REGEXP_PAF
229 "|" VISIR_PFITS_SPC_PHOT_COPY
230 "|" VISIR_PFITS_STRING_ARCFILE
231 "|" VISIR_PFITS_STRING_DATE_OBS
232 "|" VISIR_PFITS_DOUBLE_DEC
233 "|" VISIR_PFITS_DOUBLE_PIXSPACE
234 "|" VISIR_PFITS_INT_CHOP_NCYCLES
235 "|" VISIR_PFITS_DOUBLE_DIT
236 "|" VISIR_PFITS_DOUBLE_SEQ1_DIT
237 "|" VISIR_PFITS_STRING_FRAME_TYPE
238 "|" VISIR_PFITS_STRING_MODE
239 "|" VISIR_PFITS_INT_NDIT
240 "|" VISIR_PFITS_DOUBLE_VOLT1DCTA9
241 "|" VISIR_PFITS_DOUBLE_VOLT1DCTB9
242 "|" VISIR_PFITS_DOUBLE_VOLT2DCTA9
243 "|" VISIR_PFITS_DOUBLE_VOLT2DCTB9
244 "|" VISIR_PFITS_STRING_GRAT1_NAME
245 "|" VISIR_PFITS_DOUBLE_WLEN
246 "|" VISIR_PFITS_STRING_INSMODE
247 "|" VISIR_PFITS_DOUBLE_MONOC_POS
248 "|" VISIR_PFITS_STRING_PIXSCALE
249 "|" VISIR_PFITS_STRING_RESOL
250 "|" VISIR_PFITS_STRING_SLITNAME
251 "|" VISIR_PFITS_DOUBLE_SLITWIDTH
252 "|" VISIR_PFITS_INT_OBS_ID
253 "|" VISIR_PFITS_STRING_STARNAME
254 "|" VISIR_PFITS_STRING_CHOPNOD_DIR
255 "|" VISIR_PFITS_BOOL_CHOP_STATUS
256 "|" VISIR_PFITS_DOUBLE_CHOP_THROW
257 "|" VISIR_PFITS_DOUBLE_CHOP_POSANG
258 "|" VISIR_PFITS_DOUBLE_CUMOFFSETX
259 "|" VISIR_PFITS_DOUBLE_CUMOFFSETY
260 "|" VISIR_PFITS_STRING_NODPOS
261 "|" VISIR_PFITS_DOUBLE_AIRMASS_END
262 "|" VISIR_PFITS_DOUBLE_AIRMASS_START
263 "|" VISIR_PFITS_DOUBLE_FOCUS
264 "|" VISIR_PFITS_DOUBLE_ALPHA
265 "|" VISIR_PFITS_DOUBLE_DELTA
266 "|" VISIR_PFITS_DOUBLE_TEMP
267 "|" VISIR_PFITS_INT_EXPNO
268 "|" VISIR_PFITS_INT_NUMBEXP
269 "|" VISIR_PFITS_DOUBLE_EXPTIME
270 "|" VISIR_PFITS_STRING_INSTRUMENT
271 "|" VISIR_PFITS_DOUBLE_MJDOBS
273 "|" VISIR_PFITS_INT_NAXIS3
274 "|" VISIR_PFITS_DOUBLE_RA
275 "|" VISIR_PFITS_STRING_FILTER1
276 "|" VISIR_PFITS_STRING_FILTER2
277 "|" IRPLIB_PFITS_REGEXP_DPR
")$";
283 static inline cpl_boolean visir_is_spc(
const cpl_propertylist * plist)
287 if (!cpl_propertylist_has(plist, VISIR_PFITS_DPR_TECH)) {
290 tech = cpl_propertylist_get_string(plist, VISIR_PFITS_DPR_TECH);
294 if (strstr(tech,
"SPECTRUM") || strstr(tech,
"ECHELLE")) {
300 static inline cpl_boolean visir_is_img(
const cpl_propertylist * plist)
304 if (!cpl_propertylist_has(plist, VISIR_PFITS_DPR_TECH)) {
307 tech = cpl_propertylist_get_string(plist, VISIR_PFITS_DPR_TECH);
311 if (strstr(tech,
"IMAGE")) {
int visir_pfits_get_expno(const cpl_propertylist *)
The number of the current exposition.
double visir_pfits_get_cumoffsetx(const cpl_propertylist *)
The cumulative offset in X.
int visir_pfits_get_naxis2(const cpl_propertylist *)
The NAXIS2 key.
double visir_pfits_get_airmass_end(const cpl_propertylist *)
The airmass end.
int visir_pfits_get_win_ny(const cpl_propertylist *self)
The WIN NY key.
double visir_pfits_get_dec(const cpl_propertylist *)
The DEC.
int visir_pfits_get_obs_id(const cpl_propertylist *)
The OBS ID.
double visir_pfits_get_volt1dcta9(const cpl_propertylist *)
The VOLT1.DCTA9.
double visir_pfits_get_volt1dctb9(const cpl_propertylist *)
The VOLT1.DCTB9.
double visir_pfits_get_chop_pthrow(const cpl_propertylist *)
The chopping throw in pixels.
const char * visir_pfits_get_mode(const cpl_propertylist *)
The mode name.
const char * visir_pfits_get_arcfile(const cpl_propertylist *)
The arcfile.
const char * visir_pfits_get_date_obs(const cpl_propertylist *)
The date of observation.
double visir_pfits_get_volt2dcta9(const cpl_propertylist *)
The VOLT2.DCTA9.
int visir_pfits_get_naxis3(const cpl_propertylist *)
The NAXIS3 key.
double visir_pfits_get_airmass_start(const cpl_propertylist *)
The airmass start.
double visir_pfits_get_slitwidth(const cpl_propertylist *)
The slit width in Arcseconds.
int visir_pfits_get_navrg(const cpl_propertylist *)
The NAVRG.
const char * visir_pfits_get_resol(const cpl_propertylist *)
The spectral resolution.
int visir_pfits_get_start_x(const cpl_propertylist *self)
The WIN STRX key.
int visir_pfits_get_naxis1(const cpl_propertylist *)
The NAXIS1 key.
int visir_pfits_get_numbexp(const cpl_propertylist *)
The number of exposures.
const char * visir_pfits_get_starname(const cpl_propertylist *)
The std star name.
const char * visir_pfits_get_filter(const cpl_propertylist *)
The filter.
const char * visir_pfits_get_frame_type(const cpl_propertylist *)
The frame type.
const char * visir_pfits_get_grat1_name(const cpl_propertylist *)
The name of grating 1.
double visir_pfits_get_focus(const cpl_propertylist *)
The focus.
int visir_pfits_get_chop_ncycles(const cpl_propertylist *)
The number of chopping cycles.
double visir_pfits_get_exptime(const cpl_propertylist *)
The exposure time.
double visir_pfits_get_chop_posang(const cpl_propertylist *)
The chopping position angle in rad.
int visir_pfits_get_win_nx(const cpl_propertylist *self)
The WIN NX key.
int visir_pfits_get_nbeams(const cpl_propertylist *)
The number of input beams.
int visir_pfits_get_ndit(const cpl_propertylist *)
The NDIT keyword.
double visir_pfits_get_cumoffsety(const cpl_propertylist *)
The cumulative offset in Y.
double visir_pfits_get_volt2dctb9(const cpl_propertylist *)
The VOLT2.DCTB9.
double visir_pfits_get_chop_freq(const cpl_propertylist *self)
The chopping frequency.
double visir_pfits_get_pixspace(const cpl_propertylist *)
The pixel spacing.
double visir_pfits_get_chop_throw(const cpl_propertylist *)
The chopping throw.
const char * visir_pfits_get_nodpos(const cpl_propertylist *)
The nodding position.
const char * visir_pfits_get_insmode(const cpl_propertylist *)
The mode.
double visir_pfits_get_img_weight(const cpl_propertylist *)
The relative weight of the image compared to the other images.
double visir_pfits_get_wlen(const cpl_propertylist *)
The central wavelength.
double visir_pfits_get_monoc_pos(const cpl_propertylist *)
The INS.MONOC1.POS.
double visir_pfits_get_dit(const cpl_propertylist *)
The DIT.
double visir_pfits_get_pixscale(const cpl_propertylist *)
The pixel scale.
double visir_pfits_get_chop_stat(const cpl_propertylist *self)
The chopping status.
const char * visir_pfits_get_chopnod_dir(const cpl_propertylist *)
The chopping direction.
double visir_pfits_get_delta(const cpl_propertylist *)
The DELTA keyword in a VISIR header.
int visir_pfits_get_start_y(const cpl_propertylist *self)
The WIN STRY key.
double visir_pfits_get_alpha(const cpl_propertylist *)
The alpha angle.
double visir_pfits_get_mjdobs(const cpl_propertylist *)
The MJD-OBS.
double visir_pfits_get_temp(const cpl_propertylist *)
The telescope (M1) temperature [Celcius].
double visir_pfits_get_ra(const cpl_propertylist *)
The RA.
const char * visir_pfits_get_instrument(const cpl_propertylist *)
The instrument.