UVES Pipeline Reference Manual  5.4.6
uves_dfs.h
1 /*
2  * This file is part of the UVES Pipeline
3  * Copyright (C) 2002, 2003, 2004, 2005 European Southern Observatory
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, 51 Franklin St, Fifth Floor, Boston, MA 02111-1307 USA
18  */
19 
20 /*
21  * $Author: amodigli $
22  * $Date: 2011-12-08 13:55:51 $
23  * $Revision: 1.148 $
24  * $Name: not supported by cvs2svn $
25  *
26  */
27 
28 #ifndef UVES_DFS_H
29 #define UVES_DFS_H
30 
31 /*-----------------------------------------------------------------------------
32  Includes
33  -----------------------------------------------------------------------------*/
34 #include <uves_cpl_size.h>
35 #include <uves_propertylist.h>
36 #include <uves_utils_polynomial.h>
37 #include <uves_chip.h>
38 #include <uves_utils.h>
39 #include <uves_globals.h>
40 #include <cpl.h>
41 
42 #include <stdbool.h>
43 #include <math.h>
44 /*-----------------------------------------------------------------------------
45  Defines
46  -----------------------------------------------------------------------------*/
47 /* FLAMES */
48 /*
49  * reduce
50  */
51 #define RAW_IMA "RAW_IMA"
52 #define FLAMES_SCI_RED "FIB_SCI_RED"
53 #define FLAMES_SCI_SIM_RED "FIB_SCI_SIM_RED"
54 #define FLAMES_SCI_COM_RED "FIB_SCI_COM_RED"
55 #define FLAMES_CORVEL_MASK "CORVEL_MASK"
56 
57 #define FLAMES_INFO_TABLE(chip) ((chip) == UVES_CHIP_REDL ? "FIB_SCI_INFO_TAB_REDL" : \
58  (chip) == UVES_CHIP_REDU ? "FIB_SCI_INFO_TAB_REDU" : "???")
59 
60 #define FLAMES_LINE_TABLE(chip) ((chip) == UVES_CHIP_REDL ? "FIB_LINE_TABLE_REDL" : \
61  (chip) == UVES_CHIP_REDU ? "FIB_LINE_TABLE_REDU" : "???")
62 
63 #define FLAMES_LINE_TABLE_MIDAS(chip) ((chip) == UVES_CHIP_REDL ? "FIB_LINE_TABLE_REDL" : \
64  (chip) == UVES_CHIP_REDU ? "FIB_LINE_TABLE_REDU" : "???")
65 
66 #define FLAMES_SLIT_FF_DT1(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_DT1_REDL" : \
67  (chip) == UVES_CHIP_REDU ? "SLIT_FF_DT1_REDU" : "???")
68 
69 #define FLAMES_SLIT_FF_DT2(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_DT2_REDL" : \
70  (chip) == UVES_CHIP_REDU ? "SLIT_FF_DT2_REDU" : "???")
71 
72 #define FLAMES_SLIT_FF_DT3(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_DT3_REDL" : \
73  (chip) == UVES_CHIP_REDU ? "SLIT_FF_DT3_REDU" : "???")
74 
75 #define FLAMES_SLIT_FF_DTC(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_DTC_REDL" : \
76  (chip) == UVES_CHIP_REDU ? "SLIT_FF_DTC_REDU" : "???")
77 
78 #define FLAMES_SLIT_FF_DT(it, chip) ((it) == 1 ? FLAMES_SLIT_FF_DT1(chip) : \
79  (it) == 2 ? FLAMES_SLIT_FF_DT2(chip) : \
80  (it) == 3 ? FLAMES_SLIT_FF_DT3(chip) : "???")
81 
82 #define FLAMES_SLIT_FF_BP1(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_BP1_REDL" : \
83  (chip) == UVES_CHIP_REDU ? "SLIT_FF_BP1_REDU" : "???")
84 
85 #define FLAMES_SLIT_FF_BP2(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_BP2_REDL" : \
86  (chip) == UVES_CHIP_REDU ? "SLIT_FF_BP2_REDU" : "???")
87 
88 #define FLAMES_SLIT_FF_BP3(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_BP3_REDL" : \
89  (chip) == UVES_CHIP_REDU ? "SLIT_FF_BP3_REDU" : "???")
90 
91 #define FLAMES_SLIT_FF_BPC(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_BPC_REDL" : \
92  (chip) == UVES_CHIP_REDU ? "SLIT_FF_BPC_REDU" : "???")
93 
94 #define FLAMES_SLIT_FF_BP(it, chip) ((it) == 1 ? FLAMES_SLIT_FF_BP1(chip) : \
95  (it) == 2 ? FLAMES_SLIT_FF_BP2(chip) : \
96  (it) == 3 ? FLAMES_SLIT_FF_BP3(chip) : "???")
97 
98 
99 #define FLAMES_SLIT_FF_BN1(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_BN1_REDL" : \
100  (chip) == UVES_CHIP_REDU ? "SLIT_FF_BN1_REDU" : "???")
101 
102 #define FLAMES_SLIT_FF_BN2(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_BN2_REDL" : \
103  (chip) == UVES_CHIP_REDU ? "SLIT_FF_BN2_REDU" : "???")
104 
105 #define FLAMES_SLIT_FF_BN3(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_BN3_REDL" : \
106  (chip) == UVES_CHIP_REDU ? "SLIT_FF_BN3_REDU" : "???")
107 
108 #define FLAMES_SLIT_FF_BN4(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_BN4_REDL" : \
109  (chip) == UVES_CHIP_REDU ? "SLIT_FF_BN4_REDU" : "???")
110 
111 #define FLAMES_SLIT_FF_BNC(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_BNC_REDL" : \
112  (chip) == UVES_CHIP_REDU ? "SLIT_FF_BNC_REDU" : "???")
113 
114 #define FLAMES_SLIT_FF_BN(it, chip) ((it) == 1 ? FLAMES_SLIT_FF_BN1(chip) : \
115  (it) == 2 ? FLAMES_SLIT_FF_BN2(chip) : \
116  (it) == 3 ? FLAMES_SLIT_FF_BN3(chip) : \
117  (it) == 4 ? FLAMES_SLIT_FF_BN4(chip) : "???")
118 
119 
120 #define FLAMES_SLIT_FF_SG1(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_SG1_REDL" : \
121  (chip) == UVES_CHIP_REDU ? "SLIT_FF_SG1_REDU" : "???")
122 
123 #define FLAMES_SLIT_FF_SG2(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_SG2_REDL" : \
124  (chip) == UVES_CHIP_REDU ? "SLIT_FF_SG2_REDU" : "???")
125 
126 #define FLAMES_SLIT_FF_SG3(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_SG3_REDL" : \
127  (chip) == UVES_CHIP_REDU ? "SLIT_FF_SG3_REDU" : "???")
128 
129 #define FLAMES_SLIT_FF_SGC(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_SGC_REDL" : \
130  (chip) == UVES_CHIP_REDU ? "SLIT_FF_SGC_REDU" : "???")
131 
132 
133 #define FLAMES_SLIT_FF_SG(it, chip) ((it) == 1 ? FLAMES_SLIT_FF_SG1(chip) : \
134  (it) == 2 ? FLAMES_SLIT_FF_SG2(chip) : \
135  (it) == 3 ? FLAMES_SLIT_FF_SG3(chip) : "???")
136 
137 #define FLAMES_SLIT_FF_COM(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_COM_REDL" : \
138  (chip) == UVES_CHIP_REDU ? "SLIT_FF_COM_REDU" : "???")
139 
140 #define FLAMES_SLIT_FF_NOR(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_NOR_REDL" : \
141  (chip) == UVES_CHIP_REDU ? "SLIT_FF_NOR_REDU" : "???")
142 
143 #define FLAMES_SLIT_FF_NSG(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_NSG_REDL" : \
144  (chip) == UVES_CHIP_REDU ? "SLIT_FF_NSG_REDU" : "???")
145 
146 
147 
148 #define FLAMES_FIB_FF_DT1(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_DT1_REDL" : \
149  (chip) == UVES_CHIP_REDU ? "FIB_FF_DT1_REDU" : "???")
150 
151 #define FLAMES_FIB_FF_DT2(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_DT2_REDL" : \
152  (chip) == UVES_CHIP_REDU ? "FIB_FF_DT2_REDU" : "???")
153 
154 #define FLAMES_FIB_FF_DT3(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_DT3_REDL" : \
155  (chip) == UVES_CHIP_REDU ? "FIB_FF_DT3_REDU" : "???")
156 
157 #define FLAMES_FIB_FF_DTC(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_DTC_REDL" : \
158  (chip) == UVES_CHIP_REDU ? "FIB_FF_DTC_REDU" : "???")
159 
160 
161 #define FLAMES_FIB_FF_DT(it, chip) ((it) == 1 ? FLAMES_FIB_FF_DT1(chip) : \
162  (it) == 2 ? FLAMES_FIB_FF_DT2(chip) : \
163  (it) == 3 ? FLAMES_FIB_FF_DT3(chip) : "???")
164 
165 
166 
167 #define FLAMES_FIB_FF_BP1(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_BP1_REDL" : \
168  (chip) == UVES_CHIP_REDU ? "FIB_FF_BP1_REDU" : "???")
169 
170 #define FLAMES_FIB_FF_BP2(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_BP2_REDL" : \
171  (chip) == UVES_CHIP_REDU ? "FIB_FF_BP2_REDU" : "???")
172 
173 #define FLAMES_FIB_FF_BP3(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_BP3_REDL" : \
174  (chip) == UVES_CHIP_REDU ? "FIB_FF_BP3_REDU" : "???")
175 
176 #define FLAMES_FIB_FF_BPC(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_BPC_REDL" : \
177  (chip) == UVES_CHIP_REDU ? "FIB_FF_BPC_REDU" : "???")
178 
179 #define FLAMES_FIB_FF_BP(it, chip) ((it) == 1 ? FLAMES_FIB_FF_BP1(chip) : \
180  (it) == 2 ? FLAMES_FIB_FF_BP2(chip) : \
181  (it) == 3 ? FLAMES_FIB_FF_BP3(chip) : "???")
182 
183 
184 
185 #define FLAMES_FIB_FF_BN1(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_BN1_REDL" : \
186  (chip) == UVES_CHIP_REDU ? "FIB_FF_BN1_REDU" : "???")
187 
188 #define FLAMES_FIB_FF_BN2(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_BN2_REDL" : \
189  (chip) == UVES_CHIP_REDU ? "FIB_FF_BN2_REDU" : "???")
190 
191 #define FLAMES_FIB_FF_BN3(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_BN3_REDL" : \
192  (chip) == UVES_CHIP_REDU ? "FIB_FF_BN3_REDU" : "???")
193 #define FLAMES_FIB_FF_BNC(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_BNC_REDL" : \
194  (chip) == UVES_CHIP_REDU ? "FIB_FF_BNC_REDU" : "???")
195 
196 
197 #define FLAMES_FIB_FF_SG1(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_SG1_REDL" : \
198  (chip) == UVES_CHIP_REDU ? "FIB_FF_SG1_REDU" : "???")
199 
200 #define FLAMES_FIB_FF_SG2(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_SG2_REDL" : \
201  (chip) == UVES_CHIP_REDU ? "FIB_FF_SG2_REDU" : "???")
202 
203 #define FLAMES_FIB_FF_SG3(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_SG3_REDL" : \
204  (chip) == UVES_CHIP_REDU ? "FIB_FF_SG3_REDU" : "???")
205 
206 #define FLAMES_FIB_FF_SGC(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_SGC_REDL" : \
207  (chip) == UVES_CHIP_REDU ? "FIB_FF_SGC_REDU" : "???")
208 
209 #define FLAMES_FIB_FF_SG(it, chip) ((it) == 1 ? FLAMES_FIB_FF_SG1(chip) : \
210  (it) == 2 ? FLAMES_FIB_FF_SG2(chip) : \
211  (it) == 3 ? FLAMES_FIB_FF_SG3(chip) : "???")
212 
213 
214 #define FLAMES_FIB_FF_COM(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_COM_REDL" : \
215  (chip) == UVES_CHIP_REDU ? "FIB_FF_COM_REDU" : "???")
216 
217 #define FLAMES_FIB_FF_NOR(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_NOR_REDL" : \
218  (chip) == UVES_CHIP_REDU ? "FIB_FF_NOR_REDU" : "???")
219 
220 #define FLAMES_FIB_FF_NSG(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_NSG_REDL" : \
221  (chip) == UVES_CHIP_REDU ? "FIB_FF_NSG_REDU" : "???")
222 
223 
224 #define FIB_FF_ODD_INFO_TAB "FIB_FF_ODD_INFO_TAB"
225 #define FIB_FF_EVEN_INFO_TAB "FIB_FF_EVEN_INFO_TAB"
226 #define FIB_FF_ALL_INFO_TAB "FIB_FF_ALL_INFO_TAB"
227 
228 
229 /*
230  * prep_sff_ofpos
231  */
232 #define FLAMES_FIB_FF_ALL "FIB_FF_ALL_RED"
233 #define FLAMES_FIB_FF_ODD "FIB_FF_ODD_RED"
234 #define FLAMES_FIB_FF_EVEN "FIB_FF_EVEN_RED"
235 
236 #define FLAMES_CORVEL(chip) ((chip) == UVES_CHIP_REDL ? "CORVEL_TAB_REDL" : \
237  (chip) == UVES_CHIP_REDU ? "CORVEL_TAB_REDU" : "???")
238 
239 /*
240  * wavecal
241  */
242 #define FLAMES_FIB_SCI_SIM "FIB_SCI_SIM_RED"
243 
244 
245 #define FLAMES_ORDEF(flames, chip) ((flames) ? \
246  (((chip) == UVES_CHIP_REDU) ? "FIB_ORDEF_REDU" : \
247  ((chip) == UVES_CHIP_REDL) ? "FIB_ORDEF_REDL" : \
248  "???") : "??UVES??")
249 #define FLAMES_ORDEF_EXTENSION(flames, chip) 0
250 
251 
252 /* UVES + FLAMES */
253 
254 /* Narrow arc lamp frames */
255 #define UVES_FORMATCHECK(flames,blue) ((flames) ? "FIB_ARC_LAMP_FORM_RED" : \
256  ((blue) ? "ARC_LAMP_FORM_BLUE" : "ARC_LAMP_FORM_RED"))
257 
258 /* Narrow flat field frames */
259 #define UVES_ORDER_FLAT(flames, blue) ((flames) ? "FIB_ORDEF_RED" : \
260  ((blue) ? "ORDER_FLAT_BLUE" : "ORDER_FLAT_RED"))
261 
262 /* Bias raw frames */
263 #define UVES_BIAS(blue) ((blue) ? "BIAS_BLUE" : "BIAS_RED")
264 
265 /* Dark raw frames */
266 #define UVES_DARK(blue) ((blue) ? "DARK_BLUE" : "DARK_RED")
267 #define UVES_PDARK(blue) ((blue) ? "PDARK_BLUE" : "PDARK_RED")
268 
269 /* Flatfield raw frames */
270 #define UVES_FLAT(blue) ((blue) ? "FLAT_BLUE" : "FLAT_RED")
271 #define UVES_IFLAT(blue) ((blue) ? "IFLAT_BLUE" : "IFLAT_RED")
272 #define UVES_DFLAT(blue) ((blue) ? "DFLAT_BLUE" : "DFLAT_RED")
273 #define UVES_SFLAT(blue) ((blue) ? "SFLAT_BLUE" : "SFLAT_RED")
274 #define UVES_TFLAT(blue) ((blue) ? "TFLAT_BLUE" : "TFLAT_RED")
275 #define UVES_SCREEN_FLAT(blue) ((blue) ? "SCREEN_FLAT_BLUE" : "SCREEN_FLAT_RED")
276 
277 /* Arc lamp */
278 #define UVES_ARC_LAMP(flames,blue) ((flames) ? "FIB_ARC_LAMP_RED" : \
279  ((blue) ? "ARC_LAMP_BLUE" : "ARC_LAMP_RED"))
280 
281 #define UVES_ECH_ARC_LAMP(blue) ((blue) ? "ECH_ARC_LAMP_BLUE" : "ECH_ARC_LAMP_RED")
282 
283 /* CD align */
284 #define UVES_CD_ALIGN(blue) ((blue) ? "CD_ALIGN_BLUE" : "CD_ALIGN_RED")
285 
286 /* STD Star */
287 #define UVES_STD_STAR(blue) ((blue) ? "STANDARD_BLUE" : "STANDARD_RED")
288 
289 /* Science */
290 #define UVES_SCIENCE(blue) ((blue) ? "SCIENCE_BLUE" : "SCIENCE_RED")
291 #define UVES_SCI_EXTND(blue) ((blue) ? "SCI_EXTND_BLUE" : "SCI_EXTND_RED")
292 #define UVES_SCI_POINT(blue) ((blue) ? "SCI_POINT_BLUE" : "SCI_POINT_RED")
293 #define UVES_SCI_SLICER(blue) ((blue) ? "SCI_SLICER_BLUE" : "SCI_SLICER_RED")
294 
295 /* DRS setup table (for backwards compatibility) */
296 #define UVES_DRS_SETUP(flames, chip) ((flames) ? \
297  (((chip) == UVES_CHIP_REDU) ? "FIB_DRS_REDU" : \
298  ((chip) == UVES_CHIP_REDL) ? "FIB_DRS_REDL" : "???") \
299  : \
300  (((chip) == UVES_CHIP_BLUE) ? "DRS_SETUP_BLUE" : \
301  ((chip) == UVES_CHIP_REDU) ? "DRS_SETUP_REDU" : \
302  ((chip) == UVES_CHIP_REDL) ? "DRS_SETUP_REDL" : "???"))
303 
304 #define UVES_DRS_SETUP_EXTENSION(chip) 1
305 
306 /* Order table (written by physmod + flames_cal_orderpos) */
307 #define UVES_GUESS_ORDER_TABLE(flames,chip) ((flames) ? \
308  (((chip) == UVES_CHIP_REDU) ? "FIB_ORD_GUE_REDU" : \
309  ((chip) == UVES_CHIP_REDL) ? "FIB_ORD_GUE_REDL" : "???")\
310  : \
311  (((chip) == UVES_CHIP_BLUE) ? "ORDER_GUESS_TAB_BLUE" : \
312  ((chip) == UVES_CHIP_REDU) ? "ORDER_GUESS_TAB_REDU" : \
313  ((chip) == UVES_CHIP_REDL) ? "ORDER_GUESS_TAB_REDL" : \
314  "???"))
315 
316 
317 /* Order table (written by physmod + flames_cal_orderpos) */
318 #define UVES_ORD_TAB(flames,chip) ((flames) ? \
319  (((chip) == UVES_CHIP_REDU) ? "FIB_ORD_TAB_REDU" : \
320  ((chip) == UVES_CHIP_REDL) ? "FIB_ORD_TAB_REDL" : "???")\
321  : \
322  (((chip) == UVES_CHIP_BLUE) ? "ORDER_TABLE_BLUE" : \
323  ((chip) == UVES_CHIP_REDU) ? "ORDER_TABLE_REDU" : \
324  ((chip) == UVES_CHIP_REDL) ? "ORDER_TABLE_REDL" : \
325  "???"))
326 
327 #define UVES_GUESS_ORDER_TABLE_EXTENSION(flames,chip) 1
328 
329 
330 /* Order table (written by uves_orderpos / flames_cal_prep_sff_ofpos) */
331 #define UVES_ORDER_TABLE(flames,chip) ((flames) ? \
332  (((chip) == UVES_CHIP_REDU) ? "FIB_ORDEF_TABLE_REDU" : \
333  ((chip) == UVES_CHIP_REDL) ? "FIB_ORDEF_TABLE_REDL" : \
334  "???") \
335  : \
336  (((chip) == UVES_CHIP_BLUE) ? "ORDER_TABLE_BLUE" : \
337  ((chip) == UVES_CHIP_REDU) ? "ORDER_TABLE_REDU" : \
338  ((chip) == UVES_CHIP_REDL) ? "ORDER_TABLE_REDL" : \
339  "???"))
340 #define UVES_ORDER_TABLE_EXTENSION 1
341 #define UVES_ORDER_TABLE_EXTENSION_POLY 2
342 #define UVES_ORDER_TABLE_EXTENSION_FIBRE 3
343 
344 
345 /* Flame science products
346 FIB_SCI_INFO_TAB
347 MWXB_SCI_REDL
348 ERR_MWXB_SCI_REDL
349 XB_SCI_REDL
350 
351 MWXB_SCI_RAW_REDL
352 ERR_MWXB_SCI_RAW_REDL
353 XB_SCI_RAW_REDL
354 
355 MWXB_SCI_REDU
356 ERR_MWXB_SCI_REDU
357 XB_SCI_REDU
358 MWXB_SCI_RAW_REDU
359 ERR_MWXB_SCI_RAW_REDU
360 XB_SCI_RAW_REDU
361 */
362 #define FLAMES_SCI_INFO_TAB "FIB_SCI_INFO_TAB"
363 
364 #define FLAMES_MWXB_SCI(chip) ( \
365  ((chip) == UVES_CHIP_REDU) ? "MWXB_SCI_REDU" : \
366  ((chip) == UVES_CHIP_REDL) ? "MWXB_SCI_REDL" : \
367  "???")
368 
369 #define FLAMES_ERR_MWXB_SCI(chip) ( \
370  ((chip) == UVES_CHIP_REDU) ? "ERR_MWXB_SCI_REDU" : \
371  ((chip) == UVES_CHIP_REDL) ? "ERR_MWXB_SCI_REDL" : \
372  "???")
373 
374 
375 #define FLAMES_XB_SCI(chip) ( \
376  ((chip) == UVES_CHIP_REDU) ? "XB_SCI_REDU" : \
377  ((chip) == UVES_CHIP_REDL) ? "XB_SCI_REDL" : \
378  "???")
379 
380 #define FLAMES_ERR_XB_SCI(chip) ( \
381  ((chip) == UVES_CHIP_REDU) ? "ERR_XB_SCI_REDU" : \
382  ((chip) == UVES_CHIP_REDL) ? "ERR_XB_SCI_REDL" : \
383  "???")
384 
385 #define FLAMES_WXB_SCI(chip) ( \
386  ((chip) == UVES_CHIP_REDU) ? "WXB_SCI_REDU" : \
387  ((chip) == UVES_CHIP_REDL) ? "WXB_SCI_REDL" : \
388  "???")
389 
390 #define FLAMES_ERR_WXB_SCI(chip) ( \
391  ((chip) == UVES_CHIP_REDU) ? "ERR_WXB_SCI_REDU" : \
392  ((chip) == UVES_CHIP_REDL) ? "ERR_WXB_SCI_REDL" : \
393  "???")
394 
395 
396 #define FLAMES_MWXB_SCI_RAW(chip) ( \
397  ((chip) == UVES_CHIP_REDU) ? "MWXB_SCI_RAW_REDU" : \
398  ((chip) == UVES_CHIP_REDL) ? "MWXB_SCI_RAW_REDL" : \
399  "???")
400 
401 #define FLAMES_ERR_MWXB_SCI_RAW(chip) ( \
402  ((chip) == UVES_CHIP_REDU) ? "ERR_MWXB_SCI_RAW_REDU" : \
403  ((chip) == UVES_CHIP_REDL) ? "ERR_MWXB_SCI_RAW_REDL" : \
404  "???")
405 
406 
407 #define FLAMES_WXB_SCI_RAW(chip) ( \
408  ((chip) == UVES_CHIP_REDU) ? "WXB_SCI_RAW_REDU" : \
409  ((chip) == UVES_CHIP_REDL) ? "WXB_SCI_RAW_REDL" : \
410  "???")
411 
412 #define FLAMES_ERR_WXB_SCI_RAW(chip) ( \
413  ((chip) == UVES_CHIP_REDU) ? "ERR_WXB_SCI_RAW_REDU" : \
414  ((chip) == UVES_CHIP_REDL) ? "ERR_WXB_SCI_RAW_REDL" : \
415  "???")
416 
417 
418 #define FLAMES_XB_SCI_RAW(chip) ( \
419  ((chip) == UVES_CHIP_REDU) ? "XB_SCI_RAW_REDU" : \
420  ((chip) == UVES_CHIP_REDL) ? "XB_SCI_RAW_REDL" : \
421  "???")
422 
423 #define FLAMES_ERR_XB_SCI_RAW(chip) ( \
424  ((chip) == UVES_CHIP_REDU) ? "ERR_XB_SCI_RAW_REDU" : \
425  ((chip) == UVES_CHIP_REDL) ? "ERR_XB_SCI_RAW_REDL" : \
426  "???")
427 
428 
429 
430 /* Background tables are used only to tell
431  the user that they are actually *not* used for processing */
432 #define UVES_BACKGR_TABLE(chip) (((chip) == UVES_CHIP_BLUE) ? "BACKGR_TABLE_BLUE" : \
433  ((chip) == UVES_CHIP_REDU) ? "BACKGR_TABLE_REDU" : \
434  ((chip) == UVES_CHIP_REDL) ? "BACKGR_TABLE_REDL" : "???")
435 
436 /* Master bias */
437 #define UVES_MASTER_BIAS(chip) (((chip) == UVES_CHIP_BLUE) ? "MASTER_BIAS_BLUE" : \
438  ((chip) == UVES_CHIP_REDU) ? "MASTER_BIAS_REDU" : \
439  ((chip) == UVES_CHIP_REDL) ? "MASTER_BIAS_REDL" : "???")
440 #define UVES_MASTER_BIAS_EXTENSION(chip) 0
441 
442 /* Master Formatcheck */
443 #define UVES_MASTER_ARC_FORM(chip) (((chip) == UVES_CHIP_BLUE) ? "MASTER_FORM_BLUE" : \
444  ((chip) == UVES_CHIP_REDU) ? "MASTER_FORM_REDU" : \
445  ((chip) == UVES_CHIP_REDL) ? "MASTER_FORM_REDL" : "???")
446 
447 #define UVES_MASTER_ARC_FORM_EXTENSION(chip) 0
448 
449 /* Master dark */
450 #define UVES_MASTER_DARK(chip) (((chip) == UVES_CHIP_BLUE) ? "MASTER_DARK_BLUE" : \
451  ((chip) == UVES_CHIP_REDU) ? "MASTER_DARK_REDU" : \
452  ((chip) == UVES_CHIP_REDL) ? "MASTER_DARK_REDL" : "???")
453 
454 #define UVES_MASTER_PDARK(chip) (((chip) == UVES_CHIP_BLUE) ? "MASTER_PDARK_BLUE": \
455  ((chip) == UVES_CHIP_REDU) ? "MASTER_PDARK_REDU": \
456  ((chip) == UVES_CHIP_REDL) ? "MASTER_PDARK_REDL": "???")
457 
458 #define UVES_MASTER_DARK_EXTENSION(chip) 0
459 
460 /* Master flat */
461 #define UVES_MASTER_FLAT(chip) (((chip) == UVES_CHIP_BLUE) ? "MASTER_FLAT_BLUE" : \
462  ((chip) == UVES_CHIP_REDU) ? "MASTER_FLAT_REDU" : \
463  ((chip) == UVES_CHIP_REDL) ? "MASTER_FLAT_REDL" : "???")
464 #define UVES_MASTER_DFLAT(chip) (((chip) == UVES_CHIP_BLUE) ? "MASTER_DFLAT_BLUE" : \
465  ((chip) == UVES_CHIP_REDU) ? "MASTER_DFLAT_REDU" : \
466  ((chip) == UVES_CHIP_REDL) ? "MASTER_DFLAT_REDL" : "???")
467 #define UVES_MASTER_SFLAT(chip) (((chip) == UVES_CHIP_BLUE) ? "MASTER_SFLAT_BLUE" : \
468  ((chip) == UVES_CHIP_REDU) ? "MASTER_SFLAT_REDU" : \
469  ((chip) == UVES_CHIP_REDL) ? "MASTER_SFLAT_REDL" : "???")
470 #define UVES_MASTER_IFLAT(chip) (((chip) == UVES_CHIP_BLUE) ? "MASTER_IFLAT_BLUE" : \
471  ((chip) == UVES_CHIP_REDU) ? "MASTER_IFLAT_REDU" : \
472  ((chip) == UVES_CHIP_REDL) ? "MASTER_IFLAT_REDL" : "???")
473 #define UVES_MASTER_TFLAT(chip) (((chip) == UVES_CHIP_BLUE) ? "MASTER_TFLAT_BLUE" : \
474  ((chip) == UVES_CHIP_REDU) ? "MASTER_TFLAT_REDU" : \
475  ((chip) == UVES_CHIP_REDL) ? "MASTER_TFLAT_REDL" : "???")
476 #define UVES_REF_TFLAT(chip) (((chip) == UVES_CHIP_BLUE) ? "REF_TFLAT_BLUE" : \
477  ((chip) == UVES_CHIP_REDU) ? "REF_TFLAT_REDU" : \
478  ((chip) == UVES_CHIP_REDL) ? "REF_TFLAT_REDL" : "???")
479 #define UVES_MASTER_SCREEN_FLAT(chip) (((chip) == UVES_CHIP_BLUE) ? "MASTER_SCREEN_FLAT_BLUE" : \
480  ((chip) == UVES_CHIP_REDU) ? "MASTER_SCREEN_FLAT_REDU" : \
481  ((chip) == UVES_CHIP_REDL) ? "MASTER_SCREEN_FLAT_REDL" : \
482  "???")
483 #define UVES_MASTER_FLAT_EXTENSION(chip) 0
484 #define UVES_BKG_FLAT(chip) (((chip) == UVES_CHIP_BLUE) ? "BKG_FLAT_BLUE" : \
485  ((chip) == UVES_CHIP_REDU) ? "BKG_FLAT_REDU" : \
486  ((chip) == UVES_CHIP_REDL) ? "BKG_FLAT_REDL" : "???" )
487 #define UVES_RATIO_TFLAT(chip) (((chip) == UVES_CHIP_BLUE) ? "RATIO_TFLAT_BLUE" : \
488  ((chip) == UVES_CHIP_REDU) ? "RATIO_TFLAT_REDU" : \
489  ((chip) == UVES_CHIP_REDL) ? "RATIO_TFLAT_REDL" : "???" )
490 
491 #define UVES_WEIGHTS(chip) ((chip) == UVES_CHIP_REDU ? "WEIGHTS_REDU" : \
492  (chip) == UVES_CHIP_REDL ? "WEIGHTS_REDL" : \
493  (chip) == UVES_CHIP_BLUE ? "WEIGHTS_BLUE" : \
494  "???")
495 /* Line table */
496 #define UVES_LINE_TABLE(flames,chip) ((flames) ? \
497  (((chip) == UVES_CHIP_REDU) ? "FIB_LINE_TABLE_REDU" : \
498  ((chip) == UVES_CHIP_REDL) ? "FIB_LINE_TABLE_REDL" : "???")\
499  : \
500  (((chip) == UVES_CHIP_BLUE) ? "LINE_TABLE_BLUE" : \
501  ((chip) == UVES_CHIP_REDU) ? "LINE_TABLE_REDU" : \
502  ((chip) == UVES_CHIP_REDL) ? "LINE_TABLE_REDL" : "???"))
503 
504 /* Guess line table */
505 #define UVES_GUESS_LINE_TABLE(flames,chip) ((flames) ? \
506  (((chip) == UVES_CHIP_REDU) ? "FIB_LIN_GUE_REDU" : \
507  ((chip) == UVES_CHIP_REDL) ? "FIB_LIN_GUE_REDL" : "???")\
508  : \
509  (((chip) == UVES_CHIP_BLUE) ? "LINE_GUESS_TAB_BLUE" : \
510  ((chip) == UVES_CHIP_REDU) ? "LINE_GUESS_TAB_REDU" : \
511  ((chip) == UVES_CHIP_REDL) ? "LINE_GUESS_TAB_REDL" : "???"))
512 
513 #define UVES_LINE_TABLE_EXTENSION 1
514 #define UVES_LINE_TABLE_EXTENSION_DISPERSION 2
515 #define UVES_LINE_TABLE_EXTENSION_ABSORDER 3
516 
517 /* For backwards compatibility */
518 #define UVES_LINE_TABLE_MIDAS_BLUE(window) (((window)==1) ? "LINE_TABLE_BLUE1" : \
519  ((window)==2) ? "LINE_TABLE_BLUE2" : \
520  ((window)==3) ? "LINE_TABLE_BLUE3" : \
521  "LINE_TABLE_BLUEx")
522 #define UVES_LINE_TABLE_MIDAS_REDL(window) (((window)==1) ? "LINE_TABLE_REDL1" : \
523  ((window)==2) ? "LINE_TABLE_REDL2" : \
524  ((window)==3) ? "LINE_TABLE_REDL3" : \
525  "LINE_TABLE_REDLx")
526 #define UVES_LINE_TABLE_MIDAS_REDU(window) (((window)==1) ? "LINE_TABLE_REDU1" : \
527  ((window)==2) ? "LINE_TABLE_REDU2" : \
528  ((window)==3) ? "LINE_TABLE_REDU3" : \
529  "LINE_TABLE_REDUx")
530 #define UVES_LINE_TABLE_MIDAS(chip,window) ( ((chip) == UVES_CHIP_BLUE) ? \
531  UVES_LINE_TABLE_MIDAS_BLUE(window) : \
532  ((chip) == UVES_CHIP_REDU) ? \
533  UVES_LINE_TABLE_MIDAS_REDU(window) : \
534  ((chip) == UVES_CHIP_REDL) ? \
535  UVES_LINE_TABLE_MIDAS_REDL(window) : "???")
536 
537 /* Response curves et al. */
538 #define UVES_INSTR_RESPONSE(chip) (((chip) == UVES_CHIP_BLUE) ? "INSTR_RESPONSE_BLUE" : \
539  ((chip) == UVES_CHIP_REDU) ? "INSTR_RESPONSE_REDU" : \
540  ((chip) == UVES_CHIP_REDL) ? "INSTR_RESPONSE_REDL" : "???")
541 #define UVES_INSTR_RESPONSE_EXTENSION(chip) 0
542 
543 #define UVES_MASTER_RESPONSE(chip) (((chip) == UVES_CHIP_BLUE) ? "MASTER_RESPONSE_BLUE" : \
544  ((chip) == UVES_CHIP_REDU) ? "MASTER_RESPONSE_REDU" : \
545  ((chip) == UVES_CHIP_REDL) ? "MASTER_RESPONSE_REDL" : "???")
546 #define UVES_MASTER_RESPONSE_EXTENSION(chip) 0
547 
548 #define UVES_WCALIB_FF_RESPONSE(chip) (((chip) == UVES_CHIP_BLUE) ? "WCALIB_FF_RESPONSE_BLUE" : \
549  ((chip) == UVES_CHIP_REDU) ? "WCALIB_FF_RESPONSE_REDU" : \
550  ((chip) == UVES_CHIP_REDL) ? "WCALIB_FF_RESPONSE_REDL" : \
551  "???")
552 #define UVES_RED_STD(chip) (((chip) == UVES_CHIP_BLUE) ? "RED_STD_BLUE" : \
553  ((chip) == UVES_CHIP_REDU) ? "RED_STD_REDU" : \
554  ((chip) == UVES_CHIP_REDL) ? "RED_STD_REDL" : "???")
555 
556 #define UVES_RED_NOAPPEND_STD(chip) (((chip) == UVES_CHIP_BLUE) ? "RED_NONMERGED_STD_BLUE" : \
557  ((chip) == UVES_CHIP_REDU) ? "RED_NONMERGED_STD_REDU" : \
558  ((chip) == UVES_CHIP_REDL) ? "RED_NONMERGED_STD_REDL" : "???")
559 
560 #define UVES_BKG_STD(chip) (((chip) == UVES_CHIP_BLUE) ? "BKG_STD_BLUE" : \
561  ((chip) == UVES_CHIP_REDU) ? "BKG_STD_REDU" : \
562  ((chip) == UVES_CHIP_REDL) ? "BKG_STD_REDL" : "???")
563 
564 #define UVES_ORDER_EXTRACT_QC(chip) (((chip) == UVES_CHIP_BLUE) ? "ORDER_EXTRACT_QC_BLUE" : \
565  ((chip) == UVES_CHIP_REDU) ? "ORDER_EXTRACT_QC_REDU" : \
566  ((chip) == UVES_CHIP_REDL) ? "ORDER_EXTRACT_QC_REDL" : "???")
567 
568 #define UVES_EFFICIENCY_TABLE(chip) (((chip) == UVES_CHIP_BLUE) ? "EFFICIENCY_TABLE_BLUE" : \
569  ((chip) == UVES_CHIP_REDU) ? "EFFICIENCY_TABLE_REDU" : \
570  ((chip) == UVES_CHIP_REDL) ? "EFFICIENCY_TABLE_REDL" : "???")
571 
572 /* CD align table */
573 #define UVES_CD_ALIGN_TABLE(blue) ((blue) ? "CD_ALIGN_TABLE_BLUE" : "CD_ALIGN_TABLE_RED")
574 
575 /*
576  * Reference CALIB tags
577  */
578 
579 /* Line catalogue */
580 #define UVES_LINE_REFER_TABLE "LINE_REFER_TABLE"
581 #define UVES_LINE_REFER_TABLE_EXTENSION 1
582 
583 #define UVES_LINE_INTMON_TABLE "LINE_INTMON_TABLE"
584 #define UVES_LINE_INTMON_TABLE_EXTENSION 1
585 
586 /* Standard star flux */
587 #define UVES_FLUX_STD_TABLE "FLUX_STD_TABLE"
588 #define UVES_FLUX_STD_TABLE_EXTENSION 1
589 
590 /* Extinction coefficients */
591 #define UVES_EXTCOEFF_TABLE "EXTCOEFF_TABLE"
592 #define UVES_EXTCOEFF_TABLE_EXTENSION 1
593 
594 /*
595  * Image statistics
596  */
597 
598 #define UVES_ALL_STATS (CPL_STATS_MEAN | CPL_STATS_STDEV | CPL_STATS_MEDIAN | \
599  CPL_STATS_MIN | CPL_STATS_MAX)
600 #define DICTIONARY "PRO-1.15"
601 
602 /*-----------------------------------------------------------------------------
603  Functions prototypes
604  -----------------------------------------------------------------------------*/
605 int uves_contains_frames_kind(cpl_frameset * sof,
606  cpl_frameset* raw,
607  const char* type);
608 
609 char *
610 uves_local_filename(const char *prefix, enum uves_chip chip, int trace, int window);
611 
612 void
613 uves_copy_if_possible(uves_propertylist *to, const uves_propertylist *from,
614  const char *name);
615 
616 void
617 uves_warn_if_chip_names_dont_match(const uves_propertylist *calib_header,
618  const char *raw_chip_name, enum uves_chip chip);
619 
620 cpl_error_code
621 uves_extract_frames_group_type(const cpl_frameset * set, cpl_frameset** ext,
622  cpl_frame_group type);
623 cpl_error_code
624 uves_frameset_merge(cpl_frameset * set1, const cpl_frameset* set2);
625 cpl_error_code
626 uves_sflats_get_encoder_steps(const cpl_frameset * set, cpl_table** encoder_tbl, int* nset);
627 
628 cpl_error_code uves_dfs_set_groups(cpl_frameset *);
629 
630 cpl_image *
631 uves_crop_and_rotate(const cpl_image *image, const uves_propertylist *header,
632  enum uves_chip chip,
633  const uves_propertylist *redl_header,
634  bool new_format, uves_propertylist **out_header);
635 
636 void *uves_read_midas_array(const uves_propertylist *plist, const char *name, int *length,
637  cpl_type *type, int *nkeys);
638 polynomial *
639 uves_polynomial_convert_from_plist_midas(const uves_propertylist *plist,
640  const char *regression_name,
641  const int index);
642 
643 /* Save */
644 void
645 uves_dfs_write_statistics(const cpl_image *image, uves_propertylist *header,
646  unsigned stats_mask);
647 
648 cpl_error_code
649 uves_frameset_insert(cpl_frameset *frames,
650  void *object,
651  cpl_frame_group group,
652  cpl_frame_type type,
653  cpl_frame_level level,
654  const char *filename,
655  const char *tag,
656  const uves_propertylist *raw_header,
657  const uves_propertylist *primary_header,
658  const uves_propertylist *table_header,
659  const cpl_parameterlist *parameters,
660  const char *recipe,
661  const char *pipeline,
662  cpl_table **qc,
663  const char *start_time,
664  bool dump_paf,
665  unsigned stats_mask);
666 
667 int uves_check_rec_status(const int val) ;
668 
669 cpl_error_code
670 uves_save_image_local(const char *description, const char *filename_prefix,
671  const cpl_image *image,
672  enum uves_chip chip, int trace, int window,
673  const uves_propertylist *plist,
674  bool use_bitpix16_for_int);
675 
676 cpl_error_code uves_save_table_local(const char *description, const char *filename_prefix,
677  const cpl_table *table,
678  enum uves_chip chip, int trace, int window,
679  const uves_propertylist *pheader,
680  const uves_propertylist *eheader);
681 cpl_error_code uves_save_polynomial(polynomial *p, const char *filename,
682  const uves_propertylist *header);
683 
684 void uves_save_image(const cpl_image *image, const char *filename, const uves_propertylist *plist,
685  bool use_bitpix16_for_int, bool save1d);
686 
687 void uves_save_imagelist(const cpl_imagelist *iml, const char *filename, const uves_propertylist *plist);
688 
689 cpl_image *uves_load_image(const cpl_frame *f,
690  int plane,
691  int extension,
692  uves_propertylist **header);
693 
694 cpl_image *uves_load_image_file(const char *filename,
695  int plane,
696  int extension,
697  uves_propertylist **header);
698 
699 
700 /* Load raw */
701 cpl_error_code
702 uves_load_master_formatcheck(const cpl_frameset *frames, const char *chip_name,
703  const char **mform_filename,
704  cpl_image **mform, uves_propertylist **mform_header, enum uves_chip chip);
705 
706 cpl_error_code uves_load_formatcheck(const cpl_frameset *frames,
707  bool flames,
708  const char **raw_filename,
709  cpl_image *raw_image[2],
710  uves_propertylist *raw_header[2],
711  uves_propertylist *rotated_header[2], bool *blue);
712 
713 cpl_error_code uves_load_orderpos(const cpl_frameset *frames,
714  bool flames,
715  const char **raw_filename,
716  cpl_image *raw_image[2],
717  uves_propertylist *raw_header[2],
718  uves_propertylist *rotated_header[2],
719  bool *blue);
720 
721 void uves_load_arclamp(const cpl_frameset *frames,
722  bool flames,
723  const char **raw_filename,
724  cpl_image *raw_image[2], uves_propertylist *raw_header[2],
725  uves_propertylist *rotated_header[2],
726  bool *blue, bool *sim_cal);
727 
728 cpl_error_code uves_load_science(const cpl_frameset *frames, const char **raw_filename,
729  cpl_image *raw_image[2],
730  uves_propertylist *raw_header[2],
731  uves_propertylist *rotated_header[2],
732  bool *blue,
733  const char **sci_type);
734 cpl_error_code uves_load_standard(const cpl_frameset *frames, const char **raw_filename,
735  cpl_image *raw_image[2], uves_propertylist *raw_header[2],
736  uves_propertylist *rotated_header[2], bool *blue);
737 cpl_error_code uves_load_raw_imagelist(const cpl_frameset *frames,
738  bool flames,
739  const char *blue_tag,
740  const char *red_tag, cpl_type type,
741  cpl_imagelist *images[2], uves_propertylist **raw_headers[2],
742  uves_propertylist *rotated_header[2],
743  bool *blue);
744 
745 /* Load calibration */
746 cpl_error_code uves_load_drs(const cpl_frameset *frames,
747  bool flames,
748  const char *chip_name,
749  const char **drs_filename,
750  uves_propertylist **drs_header,
751  enum uves_chip chip);
752 cpl_error_code uves_load_mbias(const cpl_frameset *frames, const char *chip_id,
753  const char **mbias_filename,
754  cpl_image **mbias, uves_propertylist **mbias_header,
755  enum uves_chip chip);
756 cpl_error_code uves_load_mdark(const cpl_frameset *frames, const char *chip_id,
757  const char **mdark_filename,
758  cpl_image **mdark, uves_propertylist **mdark_header,
759  enum uves_chip chip);
760 cpl_error_code uves_load_mflat_const(const cpl_frameset *frames, const char *chip_name,
761  const char **mflat_filename,
762  cpl_image **mflat, uves_propertylist **mflat_header,
763  enum uves_chip chip,
764  const cpl_frame **mflat_frame);
765 cpl_error_code uves_load_mflat(cpl_frameset *frames, const char *chip_name,
766  const char **mflat_filename,
767  cpl_image **mflat, uves_propertylist **mflat_header,
768  enum uves_chip chip,
769  cpl_frame **mflat_frame);
770 cpl_image *
771 uves_load_weights(const cpl_frameset *frames, const char **weights_filename,
772  enum uves_chip chip);
773 
774 void uves_load_ref_flat(const cpl_frameset *frames, const char *chip_name,
775  const char **filename, cpl_image **rflat,
776  uves_propertylist **rflat_header, enum uves_chip chip);
777 
778 cpl_error_code uves_load_ordertable(const cpl_frameset *frames,
779  bool flames,
780  const char *chip_id,
781  const char **ordertable_filename,
782  cpl_table **ordertable,
783  uves_propertylist **ordertable_header,
784  uves_propertylist **ordertable_xheader,
785  polynomial **order_locations,
786  cpl_table **traces,
787  int *tab_in_out_oshift,
788  double *tab_in_out_yshift,
789  int ** fibre_mask,
790  double ** fibre_pos,
791  enum uves_chip chip,
792  bool guess_table);
793 
794 void uves_load_linetable_const(const cpl_frameset *frames,
795  bool flames,
796  const char *chip_name,
797  const polynomial *order_locations,
798  int minorder, int maxorder,
799  const char **linetable_filename,
800  const cpl_table **linetable,
801  const uves_propertylist **linetable_header,
802  const polynomial **dispersion_relation,
803  polynomial **absolute_order,
804  enum uves_chip chip, int trace_id, int window);
805 
806 void uves_load_linetable(const cpl_frameset *frames,
807  bool flames,
808  const char *chip_name,
809  const polynomial *order_locations,
810  int minorder, int maxorder,
811  const char **linetable_filename,
812  cpl_table **linetable,
813  uves_propertylist **linetable_header,
814  polynomial **dispersion_relation,
815  polynomial **absolute_order,
816  enum uves_chip chip, int trace_id, int window);
817 
818 cpl_error_code uves_load_response_curve(const cpl_frameset *frames, const char *chip_name,
819  const char **response_filename,
820  cpl_image **response_curve,
821  cpl_table **master_response,
822  uves_propertylist **response_header, enum uves_chip chip);
823 
824 void uves_load_corvel(const cpl_frameset *frames,
825  cpl_table **corvel,
826  uves_propertylist **corvel_header,
827  const char **corvel_filename);
828 
829 void uves_load_cd_align(const cpl_frameset *frames,
830  const char **raw_filename1,
831  const char **raw_filename2,
832  cpl_image *raw_image1[2],
833  cpl_image *raw_image2[2],
834  uves_propertylist *raw_header1[2],
835  uves_propertylist *raw_header2[2],
836  uves_propertylist *rotated_header1[2],
837  uves_propertylist *rotated_header2[2],
838  bool *blue);
839 
840 /* Static calibration */
841 cpl_error_code uves_load_linerefertable(const cpl_frameset *frames,
842  const char **line_refer_filename,
843  cpl_table **line_refer,
844  uves_propertylist **line_refer_header);
845 
846 cpl_error_code uves_load_lineintmon(const cpl_frameset *frames,
847  const char **line_intmonr_filename,
848  cpl_table **line_intmon);
849 
850 cpl_error_code uves_load_flux_table(const cpl_frameset *frames, const char **flux_table_filename,
851  cpl_table **flux_table);
852 
853 cpl_error_code uves_load_atmo_ext(const cpl_frameset *frames,
854  const char **atmext_table_filename,
855  cpl_table **atmext_table);
856 
857 /* Product filenames */
858 
859 /* Mbias */
860 char *uves_masterbias_filename(enum uves_chip chip);
861 
862 /* Mdark */
863 char *uves_masterdark_filename(enum uves_chip chip);
864 
865 /* Mflat */
866 char *uves_masterflat_filename(enum uves_chip chip);
867 char *uves_masterflat_bkg_filename(enum uves_chip chip);
868 
869 /* Orderpos */
870 char *uves_ordef_filename(enum uves_chip chip);
871 char *uves_order_table_filename(enum uves_chip chip);
872 char *uves_guess_order_table_filename(enum uves_chip chip);
873 char *uves_guess_line_table_filename(enum uves_chip chip);
874 
875 /* Wavecal */
876 char *uves_line_table_filename(enum uves_chip chip);
877 char *uves_line_table_filename_paf(enum uves_chip chip);
878 
879 /* Response */
880 char *uves_response_curve_filename(enum uves_chip chip);
881 char *uves_response_curve_2d_filename(enum uves_chip chip);
882 char *uves_response_red_standard_filename(enum uves_chip chip);
883 char *uves_response_red_noappend_standard_filename(enum uves_chip chip);
884 char *uves_response_efficiency_filename(enum uves_chip chip);
885 char *uves_response_bkg_standard_filename(enum uves_chip chip);
886 
887 char *uves_order_extract_qc_standard_filename(enum uves_chip chip);
888 
889 /* Tflat */
890 char *uves_flat_ratio_filename(enum uves_chip chip);
891 
892 /* CDAlign */
893 char *uves_cd_align_filename(enum uves_chip chip);
894 
895 /* Scired */
896 char *uves_scired_red_science_filename(enum uves_chip chip);
897 char *uves_scired_red_noappend_science_filename(enum uves_chip chip);
898 char *uves_scired_red_2d_science_filename(enum uves_chip chip);
899 char *uves_scired_red_error_filename(enum uves_chip chip);
900 char *uves_scired_red_noappend_error_filename(enum uves_chip chip);
901 char *uves_scired_red_2d_error_filename(enum uves_chip chip);
902 char *uves_scired_fluxcal_science_filename(enum uves_chip chip);
903 char *uves_scired_fluxcal_science_noappend_filename(enum uves_chip chip);
904 char *uves_scired_fluxcal_science_2d_filename(enum uves_chip chip);
905 char *uves_scired_fluxcal_error_filename(enum uves_chip chip);
906 char *uves_scired_fluxcal_error_noappend_filename(enum uves_chip chip);
907 char *uves_scired_fluxcal_error_2d_filename(enum uves_chip chip);
908 char *uves_scired_ff_variance_filename(enum uves_chip chip);
909 char *uves_scired_ff_variance_2d_filename(enum uves_chip chip);
910 char *uves_scired_background_filename(enum uves_chip chip);
911 char *uves_scired_merged_sky_filename(enum uves_chip chip);
912 char *uves_scired_merged_science_filename(enum uves_chip chip);
913 char *uves_scired_merged_2d_science_filename(enum uves_chip chip);
914 char *uves_scired_resampled_filename(enum uves_chip chip);
915 char *uves_scired_resampled_2d_filename(enum uves_chip chip);
916 char *uves_scired_resampledmf_filename(enum uves_chip chip);
917 char *uves_scired_rebinned_filename(enum uves_chip chip);
918 char *uves_scired_rebinned_error_filename(enum uves_chip chip);
919 char *uves_scired_rebinned_2d_filename(enum uves_chip chip);
920 char *uves_scired_rebinned_2d_error_filename(enum uves_chip chip);
921 char *uves_scired_ordertrace_filename(enum uves_chip chip);
922 char *uves_scired_wmap_filename(enum uves_chip chip);
923 char *uves_scired_crmask_filename(enum uves_chip chip);
924 char *uves_scired_ext2d_filename(enum uves_chip chip);
925 char *uves_scired_ff2d_filename(enum uves_chip chip);
926 cpl_image*
927 uves_vector_to_image(const cpl_vector* vector,cpl_type type);
928 
929 
930 cpl_error_code
931 uves_check_if_format_is_midas(uves_propertylist* header, bool* format_is_midas);
932 
933 
934 #endif