uves_dfs.h

00001 /*
00002  * This file is part of the UVES Pipeline
00003  * Copyright (C) 2002, 2003, 2004, 2005 European Southern Observatory
00004  *
00005  * This program is free software; you can redistribute it and/or modify
00006  * it under the terms of the GNU General Public License as published by
00007  * the Free Software Foundation; either version 2 of the License, or
00008  * (at your option) any later version.
00009  *
00010  * This program is distributed in the hope that it will be useful,
00011  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013  * GNU General Public License for more details.
00014  *
00015  * You should have received a copy of the GNU General Public License
00016  * along with this program; if not, write to the Free Software
00017  * Foundation, 51 Franklin St, Fifth Floor, Boston, MA  02111-1307  USA
00018  */
00019 
00020 /*
00021  * $Author: amodigli $
00022  * $Date: 2011/12/08 13:55:51 $
00023  * $Revision: 1.148 $
00024  * $Name: uves-5_0_0 $
00025  * $Log: uves_dfs.h,v $
00026  * Revision 1.148  2011/12/08 13:55:51  amodigli
00027  * include uves_cpl_size.h for CPL6
00028  *
00029  * Revision 1.147  2010/11/26 07:41:34  amodigli
00030  * added uves_scired_wmap_filename()
00031  *
00032  * Revision 1.146  2010/09/24 09:32:03  amodigli
00033  * put back QFITS dependency to fix problem spot by NRI on FIBER mode (with MIDAS calibs) data
00034  *
00035  * Revision 1.144  2010/06/07 17:41:49  amodigli
00036  * added uves_scired_fluxcal_science_noappend_filename(),uves_scired_fluxcal_error_noappend_filename()
00037  *
00038  * Revision 1.143  2010/06/07 13:24:20  amodigli
00039  * Fixed typo in PRO.CATG and PIPEFILE of products in case of merging option is noappend: NOAPPEND-->NONMERGED
00040  *
00041  * Revision 1.142  2010/06/07 11:12:02  amodigli
00042  * added uves_scired_red_noappend_error_filename()
00043  *
00044  * Revision 1.141  2010/06/04 09:50:10  amodigli
00045  * added UVES_RED_NOAPPEND_STD, uves_response_red_noappend_standard_filename() uves_scired_red_noappend_science_filename()
00046  *
00047  * Revision 1.140  2010/05/19 13:28:51  amodigli
00048  * rename uves_extraction_quality_standard_filename->uves_order_extract_qc_standard_filename, UVES_EXTRACTION_QUALITY->UVES_ORDER_EXTRACT_QC
00049  *
00050  * Revision 1.139  2010/05/18 17:09:24  amodigli
00051  * added UVES_EXTRACTION_QUALITY and uves_extraction_quality_standard_filename
00052  *
00053  * Revision 1.138  2009/02/20 18:21:12  amodigli
00054  * added RAW_IMA
00055  *
00056  * Revision 1.137  2009/01/02 08:30:03  amodigli
00057  * added uves_contains_frames_kind
00058  *
00059  * Revision 1.136  2008/08/29 09:52:26  amodigli
00060  * fixed compiler warning
00061  *
00062  * Revision 1.135  2008/06/26 08:25:55  amodigli
00063  * added uves_local_filename
00064  *
00065  * Revision 1.134  2007/11/26 15:26:59  amodigli
00066  * added FLAMES_INFO_TABLE
00067  *
00068  * Revision 1.133  2007/11/19 08:07:06  amodigli
00069  * cleaned
00070  *
00071  * Revision 1.132  2007/11/13 16:20:59  amodigli
00072  * added UVES_ORD_TAB to remove name clashes between order tables from FIBER and ECHELLE mode
00073  *
00074  * Revision 1.131  2007/10/30 17:45:03  jmlarsen
00075  * Added WEIGHTS_<chip> images to support object weighted arclamp extraction
00076  *
00077  * Revision 1.130  2007/10/17 14:58:48  amodigli
00078  * added uves_check_if_format_is_midas
00079  *
00080  * Revision 1.129  2007/09/19 11:09:49  amodigli
00081  * Now FLAMES_FIB_FF_DT is a macro
00082  *
00083  * Revision 1.128  2007/09/11 17:08:07  amodigli
00084  * added uves_polynomial_convert_from_plist_midas from uves_utils_polynomial.h
00085  *
00086  * Revision 1.127  2007/09/06 14:14:38  amodigli
00087  * added uves_scired_ff_variance_2d_filename
00088  *
00089  * Revision 1.126  2007/08/16 13:21:15  amodigli
00090  * added uves_scired_red_2d_error_filename
00091  *
00092  * Revision 1.125  2007/08/16 06:49:47  amodigli
00093  * added uves_vector_to_image
00094  *
00095  * Revision 1.124  2007/08/10 12:10:35  amodigli
00096  * changed 2d extraction product file names as by DFS04196
00097  *
00098  * Revision 1.123  2007/08/02 15:18:10  amodigli
00099  * added possibility of FLAMES_SLIT_FF_BN4
00100  *
00101  * Revision 1.122  2007/07/23 06:30:50  amodigli
00102  * added FLAMES_FIB_FF_DT
00103  *
00104  * Revision 1.121  2007/07/03 12:39:13  amodigli
00105  * added FLAMES_CORVEL_MASK FLAMES_SCI_SIM_RED
00106  *
00107  * Revision 1.120  2007/06/26 13:34:43  jmlarsen
00108  * Exported function for FLAMES
00109  *
00110  * Revision 1.119  2007/06/25 07:16:55  jmlarsen
00111  * Fixed definition of FLAMES_FIB_FF_BP
00112  *
00113  * Revision 1.118  2007/06/25 05:54:45  amodigli
00114  * added FIB_LINE_TABLE_MIDAS
00115  *
00116  * Revision 1.117  2007/06/22 16:04:01  jmlarsen
00117  * Fixed one FLAMES tag
00118  *
00119  * Revision 1.116  2007/06/22 15:49:27  jmlarsen
00120  * Fixed FLAMES product tags
00121  *
00122  * Revision 1.115  2007/06/22 14:50:45  jmlarsen
00123  * Optionally save height=1 images as NAXIS=1
00124  *
00125  * Revision 1.114  2007/06/22 09:30:10  jmlarsen
00126  * Allow saving CPL_TYPE_INT images as 16 or 32 bit FITS
00127  *
00128  * Revision 1.113  2007/06/21 15:12:57  amodigli
00129  * added FLAMES sci product types
00130  *
00131  * Revision 1.112  2007/06/06 08:17:33  amodigli
00132  * replace tab with 4 spaces
00133  *
00134  * Revision 1.111  2007/05/16 11:47:18  amodigli
00135  * added FLAMES_SCI_COM_RED
00136  *
00137  * Revision 1.110  2007/05/03 15:19:12  jmlarsen
00138  * Added const version of uves_load_linetable()
00139  *
00140  * Revision 1.109  2007/04/26 13:19:13  jmlarsen
00141  * Exported function copy_if_possible
00142  *
00143  * Revision 1.108  2007/04/24 16:44:26  amodigli
00144  * changed interface uves_load_ordertable to return also extention table
00145  *
00146  * Revision 1.107  2007/04/24 12:50:29  jmlarsen
00147  * Replaced cpl_propertylist -> uves_propertylist which is much faster
00148  *
00149  * Revision 1.106  2007/04/23 06:59:29  amodigli
00150  * added uves_save_imagelist
00151  *
00152  * Revision 1.105  2007/04/03 06:28:26  amodigli
00153  * uves_load_ordertable provides now fibre_mask and fibre_pos if appropriate
00154  *
00155  * Revision 1.104  2007/03/20 15:39:54  amodigli
00156  * added FLAMES tags
00157  *
00158  * Revision 1.103  2007/03/15 15:04:37  jmlarsen
00159  * Allow spaces in HISTORY keyword string values
00160  *
00161  * Revision 1.102  2007/02/09 13:36:06  jmlarsen
00162  * Added function to load ref_flat
00163  *
00164  * Revision 1.101  2007/02/08 07:33:17  jmlarsen
00165  * Added uves_load_cd_align()
00166  *
00167  * Revision 1.100  2007/01/17 13:25:41  jmlarsen
00168  * Added uves_load_image()
00169  *
00170  * Revision 1.99  2007/01/10 12:37:18  jmlarsen
00171  * Exported function to warn about mismatching calibration frames
00172  *
00173  * Revision 1.98  2007/01/09 17:45:42  amodigli
00174  * added uves_check_rec_status
00175  *
00176  * Revision 1.97  2006/12/12 12:09:12  jmlarsen
00177  * Added function to load corvel table
00178  *
00179  * Revision 1.96  2006/12/07 08:23:02  jmlarsen
00180  * uves_load_raw_imagelist: support FLAMES
00181  *
00182  * Revision 1.95  2006/12/01 08:26:58  jmlarsen
00183  * Load FLAMES order table oshift/yshift
00184  *
00185  * Revision 1.94  2006/11/24 16:21:32  jmlarsen
00186  * Added FIB_LINE_TABLE_x
00187  *
00188  * Revision 1.93  2006/11/22 08:41:12  jmlarsen
00189  * Exported and fixed bug in uves_read_midas_array
00190  *
00191  * Revision 1.91  2006/11/22 08:22:29  jmlarsen
00192  * Set message level according to preprocessor symbol
00193  *
00194  * Revision 1.90  2006/11/16 14:09:27  jmlarsen
00195  * Fixed definition of FLAMES order table tag
00196  *
00197  * Revision 1.89  2006/11/15 15:02:14  jmlarsen
00198  * Implemented const safe workarounds for CPL functions
00199  *
00200  * Revision 1.87  2006/11/15 14:04:08  jmlarsen
00201  * Removed non-const version of parameterlist_get_first/last/next which is already
00202  * in CPL, added const-safe wrapper, unwrapper and deallocator functions
00203  *
00204  * Revision 1.86  2006/11/13 12:44:31  jmlarsen
00205  * Support FLAMES FIB_ARC_LAMP_RED frames
00206  *
00207  * Revision 1.85  2006/11/07 14:01:12  jmlarsen
00208  * Moved flames_load_ functions to separate source file
00209  *
00210  * Revision 1.84  2006/11/03 15:01:21  jmlarsen
00211  * Killed UVES 3d table module and use CPL 3d tables
00212  *
00213  * Revision 1.83  2006/10/24 14:05:25  jmlarsen
00214  * Generalized load functions to support FLAMES
00215  *
00216  * Revision 1.82  2006/10/19 13:53:25  jmlarsen
00217  * Changed guess line table tag to LINE_GUESS_TAB
00218  *
00219  * Revision 1.81  2006/10/12 11:37:28  jmlarsen
00220  * Temporarily disabled FLAMES code generation
00221  *
00222  * Revision 1.80  2006/10/02 08:34:06  jmlarsen
00223  * Added REF_TFLAT
00224  *
00225  * Revision 1.79  2006/09/27 13:13:24  jmlarsen
00226  * Use dynamic memory allocation to store bad pixels
00227  *
00228  * Revision 1.78  2006/09/20 15:42:18  jmlarsen
00229  * Implemented MASTER_RESPONSE support
00230  *
00231  * Revision 1.77  2006/09/20 10:57:19  jmlarsen
00232  * Fixed typo
00233  *
00234  * Revision 1.76  2006/09/20 07:26:54  jmlarsen
00235  * Shortened max line length
00236  *
00237  * Revision 1.75  2006/09/19 14:25:32  jmlarsen
00238  * Propagate FITS keywords from master flat, not science, to WCALIB_FLAT_OBJ
00239  *
00240  * Revision 1.74  2006/09/19 07:12:58  jmlarsen
00241  * Exported function uves_write_statistics
00242  *
00243  * Revision 1.73  2006/09/14 08:46:51  jmlarsen
00244  * Added support for TFLAT, SCREEN_FLAT frames
00245  *
00246  * Revision 1.72  2006/09/11 08:19:10  jmlarsen
00247  * Renamed identifier reserved by POSIX
00248  *
00249  * Revision 1.71  2006/08/24 11:36:58  jmlarsen
00250  * Write recipe start/stop time to header
00251  *
00252  * Revision 1.70  2006/08/17 13:56:52  jmlarsen
00253  * Reduced max line length
00254  *
00255  * Revision 1.69  2006/08/11 08:59:41  jmlarsen
00256  * Take into account the different meanings of line table 'Y' column
00257  *
00258  * Revision 1.68  2006/08/07 14:42:02  jmlarsen
00259  * Implemented on-the-fly correction of a line table when its order
00260  * numbering is inconsistent with the order table (DFS02694)
00261  *
00262  * Revision 1.67  2006/08/07 12:14:19  jmlarsen
00263  * Removed unused function
00264  *
00265  * Revision 1.66  2006/08/01 14:43:36  amodigli
00266  * fixed bug loading fitsheader in uves_load_masterformatcheck
00267  *
00268  * Revision 1.65  2006/07/31 06:29:05  amodigli
00269  * added flames_load_frame_index
00270  *
00271  * Revision 1.64  2006/07/14 12:20:10  jmlarsen
00272  * Added LINE_INTMON_TABLE
00273  *
00274  * Revision 1.63  2006/06/26 07:54:15  amodigli
00275  * flames_load_image flames_load_table
00276  *
00277  * Revision 1.62  2006/06/23 15:31:32  amodigli
00278  * added useful stuff for flames
00279  *
00280  * Revision 1.61  2006/06/22 15:25:35  amodigli
00281  * changes for flames_cal_prep_sff_ofpos
00282  *
00283  * Revision 1.60  2006/06/19 06:51:14  amodigli
00284  * added support flames-old format
00285  *
00286  * Revision 1.59  2006/06/16 08:22:01  jmlarsen
00287  * Manually propagate ESO.DET. keywords from 1st/2nd input header
00288  *
00289  * Revision 1.58  2006/06/13 11:55:06  jmlarsen
00290  * Shortened max line length
00291  *
00292  * Revision 1.57  2006/06/06 09:04:14  jmlarsen
00293  * Bugfix: UVES_CHIP_REDU -> UVES_CHIP_REDL
00294  *
00295  * Revision 1.56  2006/06/06 08:40:10  jmlarsen
00296  * Shortened max line length
00297  *
00298  * Revision 1.55  2006/05/22 06:47:15  amodigli
00299  * fixed some bugs on msflat
00300  *
00301  * Revision 1.54  2006/05/19 13:07:52  amodigli
00302  * modified to support SFLATs
00303  *
00304  * Revision 1.53  2006/05/17 09:54:55  amodigli
00305  * added supposr SFLATs
00306  *
00307  * Revision 1.52  2006/05/15 06:09:52  amodigli
00308  * added support for some FLAMES input frames
00309  *
00310  * Revision 1.51  2006/04/25 14:58:48  amodigli
00311  * added paf creation functionalities
00312  *
00313  * Revision 1.50  2006/04/24 09:19:01  jmlarsen
00314  * Simplified code
00315  *
00316  * Revision 1.49  2006/04/06 13:13:04  jmlarsen
00317  * Added const modifier
00318  *
00319  * Revision 1.48  2006/04/06 12:56:50  jmlarsen
00320  * Added support for PDARK, IFLAT, DLFAT frames
00321  *
00322  * Revision 1.47  2006/04/06 11:48:17  jmlarsen
00323  * Support for SCI_POINT_-, SCI_EXTND_- and SCI_SLICER-frames
00324  *
00325  * Revision 1.46  2006/04/06 09:48:15  amodigli
00326  * changed uves_frameset_insert interface to have QC log
00327  *
00328  * Revision 1.45  2006/04/06 08:31:15  jmlarsen
00329  * Added support for reading MASTER_DFLAT, MASTER_IFLAT, MASTER_PDARK
00330  *
00331  * Revision 1.44  2006/03/24 14:19:19  jmlarsen
00332  * Recognize background tables
00333  *
00334  * Revision 1.43  2006/03/06 09:22:43  jmlarsen
00335  * Added support for reading MIDAS line tables with MIDAS tags
00336  *
00337  * Revision 1.42  2006/02/15 13:19:15  jmlarsen
00338  * Reduced source code max. line length
00339  *
00340  * Revision 1.41  2006/01/09 15:22:55  jmlarsen
00341  * Removed some warnings
00342  *
00343  * Revision 1.40  2006/01/03 16:56:53  amodigli
00344  * Added MASTER_ARC_FORM
00345  *
00346  * Revision 1.39  2005/12/19 16:17:56  jmlarsen
00347  * Replaced bool -> int
00348  *
00349  */
00350 
00351 #ifndef UVES_DFS_H
00352 #define UVES_DFS_H
00353 
00354 /*-----------------------------------------------------------------------------
00355                                 Includes
00356   -----------------------------------------------------------------------------*/
00357 #include <uves_cpl_size.h>
00358 #include <uves_propertylist.h>
00359 #include <uves_utils_polynomial.h>
00360 #include <uves_chip.h>
00361 #include <uves_utils.h>
00362 #include <cpl.h>
00363 
00364 #include <stdbool.h>
00365 #include <math.h>
00366 /*-----------------------------------------------------------------------------
00367                 Defines
00368  -----------------------------------------------------------------------------*/
00369 /* FLAMES */
00370 /*
00371  * reduce
00372  */
00373 #define RAW_IMA       "RAW_IMA"
00374 #define FLAMES_SCI_RED       "FIB_SCI_RED"
00375 #define FLAMES_SCI_SIM_RED   "FIB_SCI_SIM_RED"
00376 #define FLAMES_SCI_COM_RED   "FIB_SCI_COM_RED"
00377 #define FLAMES_CORVEL_MASK   "CORVEL_MASK"
00378 
00379 #define FLAMES_INFO_TABLE(chip)  ((chip) == UVES_CHIP_REDL ? "FIB_SCI_INFO_TAB_REDL" : \
00380                       (chip) == UVES_CHIP_REDU ? "FIB_SCI_INFO_TAB_REDU" : "???")
00381 
00382 #define FLAMES_LINE_TABLE(chip)  ((chip) == UVES_CHIP_REDL ? "FIB_LINE_TABLE_REDL" : \
00383                       (chip) == UVES_CHIP_REDU ? "FIB_LINE_TABLE_REDU" : "???")
00384 
00385 #define FLAMES_LINE_TABLE_MIDAS(chip)  ((chip) == UVES_CHIP_REDL ? "FIB_LINE_TABLE_REDL" : \
00386                       (chip) == UVES_CHIP_REDU ? "FIB_LINE_TABLE_REDU" : "???")
00387 
00388 #define FLAMES_SLIT_FF_DT1(chip)  ((chip) == UVES_CHIP_REDL ? "SLIT_FF_DT1_REDL" : \
00389                        (chip) == UVES_CHIP_REDU ? "SLIT_FF_DT1_REDU" : "???")
00390 
00391 #define FLAMES_SLIT_FF_DT2(chip)  ((chip) == UVES_CHIP_REDL ? "SLIT_FF_DT2_REDL" : \
00392                        (chip) == UVES_CHIP_REDU ? "SLIT_FF_DT2_REDU" : "???")
00393 
00394 #define FLAMES_SLIT_FF_DT3(chip)  ((chip) == UVES_CHIP_REDL ? "SLIT_FF_DT3_REDL" : \
00395                        (chip) == UVES_CHIP_REDU ? "SLIT_FF_DT3_REDU" : "???")
00396 
00397 #define FLAMES_SLIT_FF_DTC(chip)  ((chip) == UVES_CHIP_REDL ? "SLIT_FF_DTC_REDL" : \
00398                        (chip) == UVES_CHIP_REDU ? "SLIT_FF_DTC_REDU" : "???")
00399 
00400 #define FLAMES_SLIT_FF_DT(it, chip) ((it) == 1 ? FLAMES_SLIT_FF_DT1(chip) : \
00401                                      (it) == 2 ? FLAMES_SLIT_FF_DT2(chip) : \
00402                                      (it) == 3 ? FLAMES_SLIT_FF_DT3(chip) : "???")
00403 
00404 #define FLAMES_SLIT_FF_BP1(chip)  ((chip) == UVES_CHIP_REDL ? "SLIT_FF_BP1_REDL" : \
00405                        (chip) == UVES_CHIP_REDU ? "SLIT_FF_BP1_REDU" : "???")
00406 
00407 #define FLAMES_SLIT_FF_BP2(chip)  ((chip) == UVES_CHIP_REDL ? "SLIT_FF_BP2_REDL" : \
00408                        (chip) == UVES_CHIP_REDU ? "SLIT_FF_BP2_REDU" : "???")
00409 
00410 #define FLAMES_SLIT_FF_BP3(chip)  ((chip) == UVES_CHIP_REDL ? "SLIT_FF_BP3_REDL" : \
00411                        (chip) == UVES_CHIP_REDU ? "SLIT_FF_BP3_REDU" : "???")
00412 
00413 #define FLAMES_SLIT_FF_BPC(chip)  ((chip) == UVES_CHIP_REDL ? "SLIT_FF_BPC_REDL" : \
00414                        (chip) == UVES_CHIP_REDU ? "SLIT_FF_BPC_REDU" : "???")
00415 
00416 #define FLAMES_SLIT_FF_BP(it, chip) ((it) == 1 ? FLAMES_SLIT_FF_BP1(chip) : \
00417                                      (it) == 2 ? FLAMES_SLIT_FF_BP2(chip) : \
00418                                      (it) == 3 ? FLAMES_SLIT_FF_BP3(chip) : "???")
00419 
00420 
00421 #define FLAMES_SLIT_FF_BN1(chip)  ((chip) == UVES_CHIP_REDL ? "SLIT_FF_BN1_REDL" : \
00422                        (chip) == UVES_CHIP_REDU ? "SLIT_FF_BN1_REDU" : "???")
00423 
00424 #define FLAMES_SLIT_FF_BN2(chip)  ((chip) == UVES_CHIP_REDL ? "SLIT_FF_BN2_REDL" : \
00425                        (chip) == UVES_CHIP_REDU ? "SLIT_FF_BN2_REDU" : "???")
00426 
00427 #define FLAMES_SLIT_FF_BN3(chip)  ((chip) == UVES_CHIP_REDL ? "SLIT_FF_BN3_REDL" : \
00428                        (chip) == UVES_CHIP_REDU ? "SLIT_FF_BN3_REDU" : "???")
00429 
00430 #define FLAMES_SLIT_FF_BN4(chip)  ((chip) == UVES_CHIP_REDL ? "SLIT_FF_BN4_REDL" : \
00431                        (chip) == UVES_CHIP_REDU ? "SLIT_FF_BN4_REDU" : "???")
00432 
00433 #define FLAMES_SLIT_FF_BNC(chip)  ((chip) == UVES_CHIP_REDL ? "SLIT_FF_BNC_REDL" : \
00434                        (chip) == UVES_CHIP_REDU ? "SLIT_FF_BNC_REDU" : "???")
00435 
00436 #define FLAMES_SLIT_FF_BN(it, chip) ((it) == 1 ? FLAMES_SLIT_FF_BN1(chip) : \
00437                                      (it) == 2 ? FLAMES_SLIT_FF_BN2(chip) : \
00438                                      (it) == 3 ? FLAMES_SLIT_FF_BN3(chip) : \
00439                                      (it) == 4 ? FLAMES_SLIT_FF_BN4(chip) : "???")
00440 
00441 
00442 #define FLAMES_SLIT_FF_SG1(chip)  ((chip) == UVES_CHIP_REDL ? "SLIT_FF_SG1_REDL" : \
00443                        (chip) == UVES_CHIP_REDU ? "SLIT_FF_SG1_REDU" : "???")
00444 
00445 #define FLAMES_SLIT_FF_SG2(chip)  ((chip) == UVES_CHIP_REDL ? "SLIT_FF_SG2_REDL" : \
00446                        (chip) == UVES_CHIP_REDU ? "SLIT_FF_SG2_REDU" : "???")
00447 
00448 #define FLAMES_SLIT_FF_SG3(chip)  ((chip) == UVES_CHIP_REDL ? "SLIT_FF_SG3_REDL" : \
00449                        (chip) == UVES_CHIP_REDU ? "SLIT_FF_SG3_REDU" : "???")
00450 
00451 #define FLAMES_SLIT_FF_SGC(chip)  ((chip) == UVES_CHIP_REDL ? "SLIT_FF_SGC_REDL" : \
00452                        (chip) == UVES_CHIP_REDU ? "SLIT_FF_SGC_REDU" : "???")
00453 
00454 
00455 #define FLAMES_SLIT_FF_SG(it, chip) ((it) == 1 ? FLAMES_SLIT_FF_SG1(chip) : \
00456                                      (it) == 2 ? FLAMES_SLIT_FF_SG2(chip) : \
00457                                      (it) == 3 ? FLAMES_SLIT_FF_SG3(chip) : "???")
00458 
00459 #define FLAMES_SLIT_FF_COM(chip)  ((chip) == UVES_CHIP_REDL ? "SLIT_FF_COM_REDL" : \
00460                        (chip) == UVES_CHIP_REDU ? "SLIT_FF_COM_REDU" : "???")
00461 
00462 #define FLAMES_SLIT_FF_NOR(chip)  ((chip) == UVES_CHIP_REDL ? "SLIT_FF_NOR_REDL" : \
00463                        (chip) == UVES_CHIP_REDU ? "SLIT_FF_NOR_REDU" : "???")
00464 
00465 #define FLAMES_SLIT_FF_NSG(chip)  ((chip) == UVES_CHIP_REDL ? "SLIT_FF_NSG_REDL" : \
00466                        (chip) == UVES_CHIP_REDU ? "SLIT_FF_NSG_REDU" : "???")
00467 
00468 
00469 
00470 #define FLAMES_FIB_FF_DT1(chip)  ((chip) == UVES_CHIP_REDL ? "FIB_FF_DT1_REDL" : \
00471                       (chip) == UVES_CHIP_REDU ? "FIB_FF_DT1_REDU" : "???")
00472 
00473 #define FLAMES_FIB_FF_DT2(chip)  ((chip) == UVES_CHIP_REDL ? "FIB_FF_DT2_REDL" : \
00474                       (chip) == UVES_CHIP_REDU ? "FIB_FF_DT2_REDU" : "???")
00475 
00476 #define FLAMES_FIB_FF_DT3(chip)  ((chip) == UVES_CHIP_REDL ? "FIB_FF_DT3_REDL" : \
00477                       (chip) == UVES_CHIP_REDU ? "FIB_FF_DT3_REDU" : "???")
00478 
00479 #define FLAMES_FIB_FF_DTC(chip)  ((chip) == UVES_CHIP_REDL ? "FIB_FF_DTC_REDL" : \
00480                       (chip) == UVES_CHIP_REDU ? "FIB_FF_DTC_REDU" : "???")
00481 
00482 
00483 #define FLAMES_FIB_FF_DT(it, chip) ((it) == 1 ? FLAMES_FIB_FF_DT1(chip) : \
00484                                      (it) == 2 ? FLAMES_FIB_FF_DT2(chip) : \
00485                                      (it) == 3 ? FLAMES_FIB_FF_DT3(chip) : "???")
00486 
00487 
00488 
00489 #define FLAMES_FIB_FF_BP1(chip)  ((chip) == UVES_CHIP_REDL ? "FIB_FF_BP1_REDL" : \
00490                       (chip) == UVES_CHIP_REDU ? "FIB_FF_BP1_REDU" : "???")
00491 
00492 #define FLAMES_FIB_FF_BP2(chip)  ((chip) == UVES_CHIP_REDL ? "FIB_FF_BP2_REDL" : \
00493                       (chip) == UVES_CHIP_REDU ? "FIB_FF_BP2_REDU" : "???")
00494 
00495 #define FLAMES_FIB_FF_BP3(chip)  ((chip) == UVES_CHIP_REDL ? "FIB_FF_BP3_REDL" : \
00496                       (chip) == UVES_CHIP_REDU ? "FIB_FF_BP3_REDU" : "???")
00497 
00498 #define FLAMES_FIB_FF_BPC(chip)  ((chip) == UVES_CHIP_REDL ? "FIB_FF_BPC_REDL" : \
00499                       (chip) == UVES_CHIP_REDU ? "FIB_FF_BPC_REDU" : "???")
00500 
00501 #define FLAMES_FIB_FF_BP(it, chip) ((it) == 1 ? FLAMES_FIB_FF_BP1(chip) : \
00502                                      (it) == 2 ? FLAMES_FIB_FF_BP2(chip) : \
00503                                      (it) == 3 ? FLAMES_FIB_FF_BP3(chip) : "???")
00504 
00505 
00506 
00507 #define FLAMES_FIB_FF_BN1(chip)  ((chip) == UVES_CHIP_REDL ? "FIB_FF_BN1_REDL" : \
00508                       (chip) == UVES_CHIP_REDU ? "FIB_FF_BN1_REDU" : "???")
00509 
00510 #define FLAMES_FIB_FF_BN2(chip)  ((chip) == UVES_CHIP_REDL ? "FIB_FF_BN2_REDL" : \
00511                       (chip) == UVES_CHIP_REDU ? "FIB_FF_BN2_REDU" : "???")
00512 
00513 #define FLAMES_FIB_FF_BN3(chip)  ((chip) == UVES_CHIP_REDL ? "FIB_FF_BN3_REDL" : \
00514                       (chip) == UVES_CHIP_REDU ? "FIB_FF_BN3_REDU" : "???")
00515 #define FLAMES_FIB_FF_BNC(chip)  ((chip) == UVES_CHIP_REDL ? "FIB_FF_BNC_REDL" : \
00516                       (chip) == UVES_CHIP_REDU ? "FIB_FF_BNC_REDU" : "???")
00517 
00518 
00519 #define FLAMES_FIB_FF_SG1(chip)  ((chip) == UVES_CHIP_REDL ? "FIB_FF_SG1_REDL" : \
00520                       (chip) == UVES_CHIP_REDU ? "FIB_FF_SG1_REDU" : "???")
00521 
00522 #define FLAMES_FIB_FF_SG2(chip)  ((chip) == UVES_CHIP_REDL ? "FIB_FF_SG2_REDL" : \
00523                       (chip) == UVES_CHIP_REDU ? "FIB_FF_SG2_REDU" : "???")
00524 
00525 #define FLAMES_FIB_FF_SG3(chip)  ((chip) == UVES_CHIP_REDL ? "FIB_FF_SG3_REDL" : \
00526                       (chip) == UVES_CHIP_REDU ? "FIB_FF_SG3_REDU" : "???")
00527 
00528 #define FLAMES_FIB_FF_SGC(chip)  ((chip) == UVES_CHIP_REDL ? "FIB_FF_SGC_REDL" : \
00529                       (chip) == UVES_CHIP_REDU ? "FIB_FF_SGC_REDU" : "???")
00530 
00531 #define FLAMES_FIB_FF_SG(it, chip) ((it) == 1 ? FLAMES_FIB_FF_SG1(chip) : \
00532                                      (it) == 2 ? FLAMES_FIB_FF_SG2(chip) : \
00533                                      (it) == 3 ? FLAMES_FIB_FF_SG3(chip) : "???")
00534 
00535 
00536 #define FLAMES_FIB_FF_COM(chip)  ((chip) == UVES_CHIP_REDL ? "FIB_FF_COM_REDL" : \
00537                       (chip) == UVES_CHIP_REDU ? "FIB_FF_COM_REDU" : "???")
00538 
00539 #define FLAMES_FIB_FF_NOR(chip)  ((chip) == UVES_CHIP_REDL ? "FIB_FF_NOR_REDL" : \
00540                       (chip) == UVES_CHIP_REDU ? "FIB_FF_NOR_REDU" : "???")
00541 
00542 #define FLAMES_FIB_FF_NSG(chip)  ((chip) == UVES_CHIP_REDL ? "FIB_FF_NSG_REDL" : \
00543                       (chip) == UVES_CHIP_REDU ? "FIB_FF_NSG_REDU" : "???")
00544 
00545 
00546 #define FIB_FF_ODD_INFO_TAB "FIB_FF_ODD_INFO_TAB"
00547 #define FIB_FF_EVEN_INFO_TAB "FIB_FF_EVEN_INFO_TAB"
00548 #define FIB_FF_ALL_INFO_TAB "FIB_FF_ALL_INFO_TAB"
00549 
00550 
00551 /*
00552  * prep_sff_ofpos
00553  */
00554 #define FLAMES_FIB_FF_ALL   "FIB_FF_ALL_RED"
00555 #define FLAMES_FIB_FF_ODD   "FIB_FF_ODD_RED"
00556 #define FLAMES_FIB_FF_EVEN  "FIB_FF_EVEN_RED"
00557 
00558 #define FLAMES_CORVEL(chip)  ((chip) == UVES_CHIP_REDL ? "CORVEL_TAB_REDL" : \
00559                   (chip) == UVES_CHIP_REDU ? "CORVEL_TAB_REDU" : "???")
00560 
00561 /*
00562  * wavecal
00563  */
00564 #define FLAMES_FIB_SCI_SIM "FIB_SCI_SIM_RED"
00565 
00566 
00567 #define FLAMES_ORDEF(flames, chip)  ((flames) ?                                       \
00568                      (((chip) == UVES_CHIP_REDU) ? "FIB_ORDEF_REDU" : \
00569                       ((chip) == UVES_CHIP_REDL) ? "FIB_ORDEF_REDL" : \
00570                       "???") : "??UVES??")
00571 #define FLAMES_ORDEF_EXTENSION(flames, chip)  0
00572 
00573 
00574 /* UVES + FLAMES */
00575 
00576 /* Narrow arc lamp frames */
00577 #define UVES_FORMATCHECK(flames,blue) ((flames) ? "FIB_ARC_LAMP_FORM_RED" : \
00578                                       ((blue) ? "ARC_LAMP_FORM_BLUE" : "ARC_LAMP_FORM_RED"))
00579 
00580 /* Narrow flat field frames */
00581 #define UVES_ORDER_FLAT(flames, blue) ((flames) ? "FIB_ORDEF_RED" : \
00582                        ((blue) ? "ORDER_FLAT_BLUE" : "ORDER_FLAT_RED"))
00583 
00584 /* Bias raw frames */
00585 #define UVES_BIAS(blue)           ((blue) ? "BIAS_BLUE"      : "BIAS_RED")
00586 
00587 /* Dark raw frames */
00588 #define UVES_DARK(blue)           ((blue) ? "DARK_BLUE"      : "DARK_RED")
00589 #define UVES_PDARK(blue)          ((blue) ? "PDARK_BLUE"     : "PDARK_RED")
00590 
00591 /* Flatfield raw frames */
00592 #define UVES_FLAT(blue)           ((blue) ? "FLAT_BLUE"      : "FLAT_RED")
00593 #define UVES_IFLAT(blue)          ((blue) ? "IFLAT_BLUE"     : "IFLAT_RED")
00594 #define UVES_DFLAT(blue)          ((blue) ? "DFLAT_BLUE"     : "DFLAT_RED")
00595 #define UVES_SFLAT(blue)          ((blue) ? "SFLAT_BLUE"     : "SFLAT_RED")
00596 #define UVES_TFLAT(blue)          ((blue) ? "TFLAT_BLUE"     : "TFLAT_RED")
00597 #define UVES_SCREEN_FLAT(blue)          ((blue) ? "SCREEN_FLAT_BLUE"     : "SCREEN_FLAT_RED")
00598 
00599 /* Arc lamp */
00600 #define UVES_ARC_LAMP(flames,blue)     ((flames) ? "FIB_ARC_LAMP_RED" : \
00601                                        ((blue) ? "ARC_LAMP_BLUE" : "ARC_LAMP_RED"))
00602 
00603 #define UVES_ECH_ARC_LAMP(blue)       ((blue) ? "ECH_ARC_LAMP_BLUE" : "ECH_ARC_LAMP_RED")
00604 
00605 /* CD align */
00606 #define UVES_CD_ALIGN(blue)       ((blue) ? "CD_ALIGN_BLUE" : "CD_ALIGN_RED")
00607 
00608 /* STD Star */
00609 #define UVES_STD_STAR(blue)           ((blue) ? "STANDARD_BLUE" : "STANDARD_RED")
00610 
00611 /* Science */
00612 #define UVES_SCIENCE(blue)         ((blue) ? "SCIENCE_BLUE"    : "SCIENCE_RED")
00613 #define UVES_SCI_EXTND(blue)       ((blue) ? "SCI_EXTND_BLUE"  : "SCI_EXTND_RED")
00614 #define UVES_SCI_POINT(blue)       ((blue) ? "SCI_POINT_BLUE"  : "SCI_POINT_RED")
00615 #define UVES_SCI_SLICER(blue)      ((blue) ? "SCI_SLICER_BLUE" : "SCI_SLICER_RED")
00616 
00617 /* DRS setup table (for backwards compatibility) */
00618 #define UVES_DRS_SETUP(flames, chip) ((flames) ?                                            \
00619                       (((chip) == UVES_CHIP_REDU) ? "FIB_DRS_REDU" :        \
00620                        ((chip) == UVES_CHIP_REDL) ? "FIB_DRS_REDL" : "???") \
00621                       :                                                     \
00622                       (((chip) == UVES_CHIP_BLUE) ? "DRS_SETUP_BLUE" :      \
00623                        ((chip) == UVES_CHIP_REDU) ? "DRS_SETUP_REDU" :      \
00624                        ((chip) == UVES_CHIP_REDL) ? "DRS_SETUP_REDL" : "???"))
00625     
00626 #define UVES_DRS_SETUP_EXTENSION(chip)  1
00627 
00628 /* Order table (written by physmod + flames_cal_orderpos) */
00629 #define UVES_GUESS_ORDER_TABLE(flames,chip) ((flames) ?                                  \
00630                                 (((chip) == UVES_CHIP_REDU) ? "FIB_ORD_GUE_REDU" :       \
00631                                  ((chip) == UVES_CHIP_REDL) ? "FIB_ORD_GUE_REDL" : "???")\
00632                                  :                                                       \
00633                                  (((chip) == UVES_CHIP_BLUE) ? "ORDER_GUESS_TAB_BLUE" :  \
00634                                  ((chip) == UVES_CHIP_REDU) ? "ORDER_GUESS_TAB_REDU" :   \
00635                  ((chip) == UVES_CHIP_REDL) ? "ORDER_GUESS_TAB_REDL" :   \
00636                  "???"))
00637 
00638 
00639 /* Order table (written by physmod + flames_cal_orderpos) */
00640 #define UVES_ORD_TAB(flames,chip) ((flames) ?                                  \
00641                                 (((chip) == UVES_CHIP_REDU) ? "FIB_ORD_TAB_REDU" :       \
00642                                  ((chip) == UVES_CHIP_REDL) ? "FIB_ORD_TAB_REDL" : "???")\
00643                                  :                                                       \
00644                                  (((chip) == UVES_CHIP_BLUE) ? "ORDER_TABLE_BLUE" :  \
00645                                  ((chip) == UVES_CHIP_REDU) ? "ORDER_TABLE_REDU" :   \
00646                  ((chip) == UVES_CHIP_REDL) ? "ORDER_TABLE_REDL" :   \
00647                  "???"))
00648 
00649 #define UVES_GUESS_ORDER_TABLE_EXTENSION(flames,chip)  1
00650 
00651 
00652 /* Order table (written by uves_orderpos / flames_cal_prep_sff_ofpos) */
00653 #define UVES_ORDER_TABLE(flames,chip)  ((flames) ?                                             \
00654                                         (((chip) == UVES_CHIP_REDU) ? "FIB_ORDEF_TABLE_REDU" : \
00655                          ((chip) == UVES_CHIP_REDL) ? "FIB_ORDEF_TABLE_REDL" : \
00656                                          "???")                                                \
00657                     :                                                      \
00658                     (((chip) == UVES_CHIP_BLUE) ? "ORDER_TABLE_BLUE" :     \
00659                      ((chip) == UVES_CHIP_REDU) ? "ORDER_TABLE_REDU" :     \
00660                      ((chip) == UVES_CHIP_REDL) ? "ORDER_TABLE_REDL" :     \
00661                      "???"))
00662 #define UVES_ORDER_TABLE_EXTENSION       1
00663 #define UVES_ORDER_TABLE_EXTENSION_POLY  2
00664 #define UVES_ORDER_TABLE_EXTENSION_FIBRE 3
00665 
00666 
00667 /* Flame science products
00668 FIB_SCI_INFO_TAB
00669 MWXB_SCI_REDL
00670 ERR_MWXB_SCI_REDL
00671 XB_SCI_REDL
00672 
00673 MWXB_SCI_RAW_REDL
00674 ERR_MWXB_SCI_RAW_REDL
00675 XB_SCI_RAW_REDL
00676 
00677 MWXB_SCI_REDU
00678 ERR_MWXB_SCI_REDU
00679 XB_SCI_REDU
00680 MWXB_SCI_RAW_REDU
00681 ERR_MWXB_SCI_RAW_REDU
00682 XB_SCI_RAW_REDU
00683 */
00684 #define FLAMES_SCI_INFO_TAB "FIB_SCI_INFO_TAB"
00685 
00686 #define FLAMES_MWXB_SCI(chip) ( \
00687               ((chip) == UVES_CHIP_REDU) ? "MWXB_SCI_REDU" : \
00688               ((chip) == UVES_CHIP_REDL) ? "MWXB_SCI_REDL" : \
00689                               "???")
00690 
00691 #define FLAMES_ERR_MWXB_SCI(chip) ( \
00692               ((chip) == UVES_CHIP_REDU) ? "ERR_MWXB_SCI_REDU" : \
00693               ((chip) == UVES_CHIP_REDL) ? "ERR_MWXB_SCI_REDL" : \
00694                               "???")
00695 
00696 
00697 #define FLAMES_XB_SCI(chip) ( \
00698               ((chip) == UVES_CHIP_REDU) ? "XB_SCI_REDU" : \
00699               ((chip) == UVES_CHIP_REDL) ? "XB_SCI_REDL" : \
00700                               "???")
00701 
00702 #define FLAMES_ERR_XB_SCI(chip) ( \
00703               ((chip) == UVES_CHIP_REDU) ? "ERR_XB_SCI_REDU" : \
00704               ((chip) == UVES_CHIP_REDL) ? "ERR_XB_SCI_REDL" : \
00705                               "???")
00706 
00707 #define FLAMES_WXB_SCI(chip) ( \
00708               ((chip) == UVES_CHIP_REDU) ? "WXB_SCI_REDU" : \
00709               ((chip) == UVES_CHIP_REDL) ? "WXB_SCI_REDL" : \
00710                               "???")
00711 
00712 #define FLAMES_ERR_WXB_SCI(chip) ( \
00713               ((chip) == UVES_CHIP_REDU) ? "ERR_WXB_SCI_REDU" : \
00714               ((chip) == UVES_CHIP_REDL) ? "ERR_WXB_SCI_REDL" : \
00715                               "???")
00716 
00717 
00718 #define FLAMES_MWXB_SCI_RAW(chip) ( \
00719               ((chip) == UVES_CHIP_REDU) ? "MWXB_SCI_RAW_REDU" : \
00720               ((chip) == UVES_CHIP_REDL) ? "MWXB_SCI_RAW_REDL" : \
00721                               "???")
00722 
00723 #define FLAMES_ERR_MWXB_SCI_RAW(chip) ( \
00724              ((chip) == UVES_CHIP_REDU) ? "ERR_MWXB_SCI_RAW_REDU" : \
00725              ((chip) == UVES_CHIP_REDL) ? "ERR_MWXB_SCI_RAW_REDL" : \
00726                               "???")
00727 
00728 
00729 #define FLAMES_WXB_SCI_RAW(chip) ( \
00730               ((chip) == UVES_CHIP_REDU) ? "WXB_SCI_RAW_REDU" : \
00731               ((chip) == UVES_CHIP_REDL) ? "WXB_SCI_RAW_REDL" : \
00732                               "???")
00733 
00734 #define FLAMES_ERR_WXB_SCI_RAW(chip) ( \
00735               ((chip) == UVES_CHIP_REDU) ? "ERR_WXB_SCI_RAW_REDU" : \
00736               ((chip) == UVES_CHIP_REDL) ? "ERR_WXB_SCI_RAW_REDL" : \
00737                               "???")
00738 
00739 
00740 #define FLAMES_XB_SCI_RAW(chip) ( \
00741                           ((chip) == UVES_CHIP_REDU) ? "XB_SCI_RAW_REDU" : \
00742               ((chip) == UVES_CHIP_REDL) ? "XB_SCI_RAW_REDL" : \
00743                               "???")
00744 
00745 #define FLAMES_ERR_XB_SCI_RAW(chip) ( \
00746               ((chip) == UVES_CHIP_REDU) ? "ERR_XB_SCI_RAW_REDU" : \
00747               ((chip) == UVES_CHIP_REDL) ? "ERR_XB_SCI_RAW_REDL" : \
00748                               "???")
00749 
00750 
00751 
00752 /* Background tables are used only to tell
00753    the user that they are actually *not* used for processing */
00754 #define UVES_BACKGR_TABLE(chip) (((chip) == UVES_CHIP_BLUE) ? "BACKGR_TABLE_BLUE" :    \
00755                  ((chip) == UVES_CHIP_REDU) ? "BACKGR_TABLE_REDU" :    \
00756                  ((chip) == UVES_CHIP_REDL) ? "BACKGR_TABLE_REDL" : "???")
00757 
00758 /* Master bias */
00759 #define UVES_MASTER_BIAS(chip)           (((chip) == UVES_CHIP_BLUE) ? "MASTER_BIAS_BLUE" :  \
00760                       ((chip) == UVES_CHIP_REDU) ? "MASTER_BIAS_REDU" :  \
00761                       ((chip) == UVES_CHIP_REDL) ? "MASTER_BIAS_REDL" : "???")
00762 #define UVES_MASTER_BIAS_EXTENSION(chip) 0
00763 
00764 /* Master Formatcheck */
00765 #define UVES_MASTER_ARC_FORM(chip) (((chip) == UVES_CHIP_BLUE) ? "MASTER_FORM_BLUE" : \
00766                                     ((chip) == UVES_CHIP_REDU) ? "MASTER_FORM_REDU" : \
00767                                     ((chip) == UVES_CHIP_REDL) ? "MASTER_FORM_REDL" : "???")
00768 
00769 #define UVES_MASTER_ARC_FORM_EXTENSION(chip) 0
00770 
00771 /* Master dark */
00772 #define UVES_MASTER_DARK(chip)   (((chip) == UVES_CHIP_BLUE) ? "MASTER_DARK_BLUE" : \
00773                                   ((chip) == UVES_CHIP_REDU) ? "MASTER_DARK_REDU" : \
00774                                   ((chip) == UVES_CHIP_REDL) ? "MASTER_DARK_REDL" : "???")
00775 
00776 #define UVES_MASTER_PDARK(chip)  (((chip) == UVES_CHIP_BLUE) ? "MASTER_PDARK_BLUE": \
00777                   ((chip) == UVES_CHIP_REDU) ? "MASTER_PDARK_REDU": \
00778                   ((chip) == UVES_CHIP_REDL) ? "MASTER_PDARK_REDL": "???")
00779 
00780 #define UVES_MASTER_DARK_EXTENSION(chip) 0
00781 
00782 /* Master flat */
00783 #define UVES_MASTER_FLAT(chip)  (((chip) == UVES_CHIP_BLUE) ? "MASTER_FLAT_BLUE" : \
00784                                  ((chip) == UVES_CHIP_REDU) ? "MASTER_FLAT_REDU" : \
00785                                  ((chip) == UVES_CHIP_REDL) ? "MASTER_FLAT_REDL" : "???")
00786 #define UVES_MASTER_DFLAT(chip) (((chip) == UVES_CHIP_BLUE) ? "MASTER_DFLAT_BLUE" : \
00787                                  ((chip) == UVES_CHIP_REDU) ? "MASTER_DFLAT_REDU" : \
00788                                  ((chip) == UVES_CHIP_REDL) ? "MASTER_DFLAT_REDL" : "???")
00789 #define UVES_MASTER_SFLAT(chip) (((chip) == UVES_CHIP_BLUE) ? "MASTER_SFLAT_BLUE" : \
00790                                  ((chip) == UVES_CHIP_REDU) ? "MASTER_SFLAT_REDU" : \
00791                                  ((chip) == UVES_CHIP_REDL) ? "MASTER_SFLAT_REDL" : "???")
00792 #define UVES_MASTER_IFLAT(chip) (((chip) == UVES_CHIP_BLUE) ? "MASTER_IFLAT_BLUE" : \
00793                                  ((chip) == UVES_CHIP_REDU) ? "MASTER_IFLAT_REDU" : \
00794                                  ((chip) == UVES_CHIP_REDL) ? "MASTER_IFLAT_REDL" : "???")
00795 #define UVES_MASTER_TFLAT(chip) (((chip) == UVES_CHIP_BLUE) ? "MASTER_TFLAT_BLUE" : \
00796                                  ((chip) == UVES_CHIP_REDU) ? "MASTER_TFLAT_REDU" : \
00797                                  ((chip) == UVES_CHIP_REDL) ? "MASTER_TFLAT_REDL" : "???")
00798 #define UVES_REF_TFLAT(chip) (((chip) == UVES_CHIP_BLUE) ? "REF_TFLAT_BLUE" : \
00799                                  ((chip) == UVES_CHIP_REDU) ? "REF_TFLAT_REDU" : \
00800                                  ((chip) == UVES_CHIP_REDL) ? "REF_TFLAT_REDL" : "???")
00801 #define UVES_MASTER_SCREEN_FLAT(chip) (((chip) == UVES_CHIP_BLUE) ? "MASTER_SCREEN_FLAT_BLUE" : \
00802                                        ((chip) == UVES_CHIP_REDU) ? "MASTER_SCREEN_FLAT_REDU" : \
00803                                        ((chip) == UVES_CHIP_REDL) ? "MASTER_SCREEN_FLAT_REDL" : \
00804                        "???")
00805 #define UVES_MASTER_FLAT_EXTENSION(chip) 0
00806 #define UVES_BKG_FLAT(chip)              (((chip) == UVES_CHIP_BLUE) ? "BKG_FLAT_BLUE" : \
00807                                           ((chip) == UVES_CHIP_REDU) ? "BKG_FLAT_REDU" : \
00808                                           ((chip) == UVES_CHIP_REDL) ? "BKG_FLAT_REDL" : "???" )
00809 #define UVES_RATIO_TFLAT(chip)              (((chip) == UVES_CHIP_BLUE) ? "RATIO_TFLAT_BLUE" : \
00810                                           ((chip) == UVES_CHIP_REDU) ? "RATIO_TFLAT_REDU" : \
00811                                           ((chip) == UVES_CHIP_REDL) ? "RATIO_TFLAT_REDL" : "???" )
00812 
00813 #define UVES_WEIGHTS(chip)          ((chip) == UVES_CHIP_REDU ? "WEIGHTS_REDU" : \
00814                                      (chip) == UVES_CHIP_REDL ? "WEIGHTS_REDL" : \
00815                                      (chip) == UVES_CHIP_BLUE ? "WEIGHTS_BLUE" : \
00816                                      "???")
00817 /* Line table */
00818 #define UVES_LINE_TABLE(flames,chip)   ((flames) ?                                           \
00819                                  (((chip) == UVES_CHIP_REDU) ? "FIB_LINE_TABLE_REDU" :       \
00820                                   ((chip) == UVES_CHIP_REDL) ? "FIB_LINE_TABLE_REDL" : "???")\
00821                                   :                                                          \
00822                                   (((chip) == UVES_CHIP_BLUE) ? "LINE_TABLE_BLUE" :          \
00823                                    ((chip) == UVES_CHIP_REDU) ? "LINE_TABLE_REDU" :          \
00824                                    ((chip) == UVES_CHIP_REDL) ? "LINE_TABLE_REDL" : "???"))
00825 
00826 /* Guess line table */
00827 #define UVES_GUESS_LINE_TABLE(flames,chip) ((flames) ?                                    \
00828                                  (((chip) == UVES_CHIP_REDU) ? "FIB_LIN_GUE_REDU" :       \
00829                                   ((chip) == UVES_CHIP_REDL) ? "FIB_LIN_GUE_REDL" : "???")\
00830                                   :                                                       \
00831                                   (((chip) == UVES_CHIP_BLUE) ? "LINE_GUESS_TAB_BLUE" :   \
00832                                   ((chip) == UVES_CHIP_REDU) ? "LINE_GUESS_TAB_REDU" :    \
00833                    ((chip) == UVES_CHIP_REDL) ? "LINE_GUESS_TAB_REDL" : "???"))
00834 
00835 #define UVES_LINE_TABLE_EXTENSION            1
00836 #define UVES_LINE_TABLE_EXTENSION_DISPERSION 2
00837 #define UVES_LINE_TABLE_EXTENSION_ABSORDER   3
00838 
00839 /* For backwards compatibility */
00840 #define UVES_LINE_TABLE_MIDAS_BLUE(window) (((window)==1) ? "LINE_TABLE_BLUE1" : \
00841                                             ((window)==2) ? "LINE_TABLE_BLUE2" : \
00842                                             ((window)==3) ? "LINE_TABLE_BLUE3" : \
00843                         "LINE_TABLE_BLUEx")
00844 #define UVES_LINE_TABLE_MIDAS_REDL(window) (((window)==1) ? "LINE_TABLE_REDL1" : \
00845                                             ((window)==2) ? "LINE_TABLE_REDL2" : \
00846                                             ((window)==3) ? "LINE_TABLE_REDL3" : \
00847                                             "LINE_TABLE_REDLx")
00848 #define UVES_LINE_TABLE_MIDAS_REDU(window) (((window)==1) ? "LINE_TABLE_REDU1" : \
00849                                             ((window)==2) ? "LINE_TABLE_REDU2" : \
00850                                             ((window)==3) ? "LINE_TABLE_REDU3" : \
00851                         "LINE_TABLE_REDUx")
00852 #define UVES_LINE_TABLE_MIDAS(chip,window) ( ((chip) == UVES_CHIP_BLUE) ?        \
00853                         UVES_LINE_TABLE_MIDAS_BLUE(window) : \
00854                                              ((chip) == UVES_CHIP_REDU) ?        \
00855                         UVES_LINE_TABLE_MIDAS_REDU(window) : \
00856                                              ((chip) == UVES_CHIP_REDL) ?        \
00857                         UVES_LINE_TABLE_MIDAS_REDL(window) : "???")
00858 
00859 /* Response curves et al. */
00860 #define UVES_INSTR_RESPONSE(chip) (((chip) == UVES_CHIP_BLUE) ? "INSTR_RESPONSE_BLUE" : \
00861                                    ((chip) == UVES_CHIP_REDU) ? "INSTR_RESPONSE_REDU" : \
00862                                    ((chip) == UVES_CHIP_REDL) ? "INSTR_RESPONSE_REDL" : "???")
00863 #define UVES_INSTR_RESPONSE_EXTENSION(chip) 0
00864 
00865 #define UVES_MASTER_RESPONSE(chip) (((chip) == UVES_CHIP_BLUE) ? "MASTER_RESPONSE_BLUE" : \
00866                                     ((chip) == UVES_CHIP_REDU) ? "MASTER_RESPONSE_REDU" : \
00867                                     ((chip) == UVES_CHIP_REDL) ? "MASTER_RESPONSE_REDL" : "???")
00868 #define UVES_MASTER_RESPONSE_EXTENSION(chip) 0
00869 
00870 #define UVES_WCALIB_FF_RESPONSE(chip) (((chip) == UVES_CHIP_BLUE) ? "WCALIB_FF_RESPONSE_BLUE" : \
00871                                        ((chip) == UVES_CHIP_REDU) ? "WCALIB_FF_RESPONSE_REDU" : \
00872                                        ((chip) == UVES_CHIP_REDL) ? "WCALIB_FF_RESPONSE_REDL" : \
00873                        "???")
00874 #define UVES_RED_STD(chip)               (((chip) == UVES_CHIP_BLUE) ? "RED_STD_BLUE" : \
00875                                           ((chip) == UVES_CHIP_REDU) ? "RED_STD_REDU" : \
00876                                           ((chip) == UVES_CHIP_REDL) ? "RED_STD_REDL" : "???")
00877 
00878 #define UVES_RED_NOAPPEND_STD(chip)       (((chip) == UVES_CHIP_BLUE) ? "RED_NONMERGED_STD_BLUE" : \
00879                                           ((chip) == UVES_CHIP_REDU) ? "RED_NONMERGED_STD_REDU" : \
00880                                           ((chip) == UVES_CHIP_REDL) ? "RED_NONMERGED_STD_REDL" : "???")
00881 
00882 #define UVES_BKG_STD(chip)               (((chip) == UVES_CHIP_BLUE) ? "BKG_STD_BLUE" : \
00883                                           ((chip) == UVES_CHIP_REDU) ? "BKG_STD_REDU" : \
00884                                           ((chip) == UVES_CHIP_REDL) ? "BKG_STD_REDL" : "???")
00885 
00886 #define UVES_ORDER_EXTRACT_QC(chip)               (((chip) == UVES_CHIP_BLUE) ? "ORDER_EXTRACT_QC_BLUE" : \
00887                                           ((chip) == UVES_CHIP_REDU) ? "ORDER_EXTRACT_QC_REDU" : \
00888                                           ((chip) == UVES_CHIP_REDL) ? "ORDER_EXTRACT_QC_REDL" : "???")
00889 
00890 #define UVES_EFFICIENCY_TABLE(chip) (((chip) == UVES_CHIP_BLUE) ? "EFFICIENCY_TABLE_BLUE" : \
00891                                      ((chip) == UVES_CHIP_REDU) ? "EFFICIENCY_TABLE_REDU" : \
00892                                      ((chip) == UVES_CHIP_REDL) ? "EFFICIENCY_TABLE_REDL" : "???")
00893 
00894 /* CD align table */
00895 #define UVES_CD_ALIGN_TABLE(blue)       ((blue) ? "CD_ALIGN_TABLE_BLUE" : "CD_ALIGN_TABLE_RED")
00896 
00897 /* 
00898  * Reference CALIB tags
00899  */
00900 
00901 /* Line catalogue */
00902 #define UVES_LINE_REFER_TABLE           "LINE_REFER_TABLE"
00903 #define UVES_LINE_REFER_TABLE_EXTENSION 1
00904 
00905 #define UVES_LINE_INTMON_TABLE           "LINE_INTMON_TABLE"
00906 #define UVES_LINE_INTMON_TABLE_EXTENSION 1
00907 
00908 /* Standard star flux */
00909 #define UVES_FLUX_STD_TABLE           "FLUX_STD_TABLE"
00910 #define UVES_FLUX_STD_TABLE_EXTENSION 1
00911 
00912 /* Extinction coefficients */
00913 #define UVES_EXTCOEFF_TABLE           "EXTCOEFF_TABLE"
00914 #define UVES_EXTCOEFF_TABLE_EXTENSION 1
00915 
00916 /*
00917  *  Image statistics
00918  */
00919 
00920 #define UVES_ALL_STATS (CPL_STATS_MEAN | CPL_STATS_STDEV | CPL_STATS_MEDIAN | \
00921             CPL_STATS_MIN  | CPL_STATS_MAX)
00922 #define DICTIONARY "PRO-1.15"
00923 
00924 /*-----------------------------------------------------------------------------
00925                                 Functions prototypes
00926  -----------------------------------------------------------------------------*/
00927 int uves_contains_frames_kind(cpl_frameset * sof, 
00928                                  cpl_frameset* raw,
00929                                  const char*         type);
00930 
00931 char *
00932 uves_local_filename(const char *prefix, enum uves_chip chip, int trace, int window);
00933 
00934 void
00935 uves_copy_if_possible(uves_propertylist *to, const uves_propertylist *from,
00936                       const char *name);
00937 
00938 void
00939 uves_warn_if_chip_names_dont_match(const uves_propertylist *calib_header, 
00940                    const char *raw_chip_name, enum uves_chip chip);
00941 
00942 cpl_error_code
00943 uves_extract_frames_group_type(const cpl_frameset * set, cpl_frameset** ext, 
00944                    cpl_frame_group type);
00945 cpl_error_code
00946 uves_frameset_merge(cpl_frameset * set1, const cpl_frameset* set2);
00947 cpl_error_code
00948 uves_sflats_get_encoder_steps(const cpl_frameset * set, cpl_table** encoder_tbl, int* nset);
00949 
00950 cpl_error_code uves_dfs_set_groups(cpl_frameset *);
00951 
00952 cpl_image *
00953 uves_crop_and_rotate(const cpl_image *image, const uves_propertylist *header,
00954              enum uves_chip chip,
00955              const uves_propertylist *redl_header, 
00956              bool new_format, uves_propertylist **out_header);
00957 
00958 void *uves_read_midas_array(const uves_propertylist *plist, const char *name, int *length,
00959                 cpl_type *type, int *nkeys);
00960 polynomial *
00961 uves_polynomial_convert_from_plist_midas(const uves_propertylist *plist, 
00962                      const char *regression_name,
00963                                          const int index);
00964 
00965 /* Save */
00966 void
00967 uves_dfs_write_statistics(const cpl_image *image, uves_propertylist *header,
00968               unsigned stats_mask);
00969 
00970 cpl_error_code
00971 uves_frameset_insert(cpl_frameset *frames, 
00972                      void *object, 
00973              cpl_frame_group group, 
00974                      cpl_frame_type type, 
00975                      cpl_frame_level level,
00976              const char *filename, 
00977                      const char *tag, 
00978              const uves_propertylist *raw_header,
00979                      const uves_propertylist *primary_header, 
00980              const uves_propertylist *table_header, 
00981                      const cpl_parameterlist *parameters, 
00982              const char *recipe, 
00983                      const char *pipeline,
00984                      cpl_table **qc,
00985              const char *start_time,
00986              bool dump_paf,
00987              unsigned stats_mask);
00988 
00989 int uves_check_rec_status(const int val) ;
00990 
00991 cpl_error_code
00992 uves_save_image_local(const char *description, const char *filename_prefix, 
00993                       const cpl_image *image, 
00994                       enum uves_chip chip, int trace, int window,
00995                       const uves_propertylist *plist,
00996                       bool use_bitpix16_for_int);
00997 
00998 cpl_error_code uves_save_table_local(const char *description, const char *filename_prefix,
00999                      const cpl_table *table,
01000                      enum uves_chip chip, int trace, int window,
01001                      const uves_propertylist *pheader, 
01002                      const uves_propertylist *eheader);
01003 cpl_error_code uves_save_polynomial(polynomial *p, const char *filename,
01004                     const uves_propertylist *header);
01005 
01006 void uves_save_image(const cpl_image *image, const char *filename, const uves_propertylist *plist,
01007              bool use_bitpix16_for_int, bool save1d);
01008 
01009 void uves_save_imagelist(const cpl_imagelist *iml, const char *filename, const uves_propertylist *plist);
01010 
01011 cpl_image *uves_load_image(const cpl_frame *f,
01012     int plane,
01013     int extension,
01014     uves_propertylist **header);
01015 
01016 cpl_image *uves_load_image_file(const char *filename,
01017     int plane,
01018     int extension,
01019     uves_propertylist **header);
01020     
01021 
01022 /* Load raw */
01023 cpl_error_code
01024 uves_load_master_formatcheck(const cpl_frameset *frames, const char *chip_name,
01025         const char **mform_filename, 
01026         cpl_image **mform, uves_propertylist **mform_header, enum uves_chip chip);
01027 
01028 cpl_error_code uves_load_formatcheck(const cpl_frameset *frames,
01029                      bool flames,
01030                      const char **raw_filename,
01031                      cpl_image *raw_image[2],
01032                      uves_propertylist *raw_header[2], 
01033                      uves_propertylist *rotated_header[2], bool *blue);
01034 
01035 cpl_error_code uves_load_orderpos(const cpl_frameset *frames,
01036                   bool flames,
01037                   const char **raw_filename,
01038                   cpl_image *raw_image[2],
01039                   uves_propertylist *raw_header[2], 
01040                   uves_propertylist *rotated_header[2], 
01041                                   bool *blue);
01042 
01043 void uves_load_arclamp(const cpl_frameset *frames,
01044                bool flames,
01045                const char **raw_filename, 
01046                cpl_image *raw_image[2], uves_propertylist *raw_header[2],
01047                uves_propertylist *rotated_header[2], 
01048                bool *blue, bool *sim_cal);
01049 
01050 cpl_error_code uves_load_science(const cpl_frameset *frames, const char **raw_filename, 
01051                  cpl_image *raw_image[2], 
01052                  uves_propertylist *raw_header[2], 
01053                  uves_propertylist *rotated_header[2], 
01054                  bool *blue,
01055                  const char **sci_type);
01056 cpl_error_code uves_load_standard(const cpl_frameset *frames, const char **raw_filename,
01057                   cpl_image *raw_image[2], uves_propertylist *raw_header[2], 
01058                   uves_propertylist *rotated_header[2], bool *blue);
01059 cpl_error_code uves_load_raw_imagelist(const cpl_frameset *frames, 
01060                        bool flames,
01061                        const char *blue_tag, 
01062                        const char *red_tag, cpl_type type, 
01063                        cpl_imagelist *images[2], uves_propertylist **raw_headers[2],
01064                        uves_propertylist *rotated_header[2],
01065                        bool *blue);
01066 
01067 /* Load calibration */
01068 cpl_error_code uves_load_drs(const cpl_frameset *frames, 
01069                  bool flames,
01070                  const char *chip_name,
01071                  const char **drs_filename, 
01072                  uves_propertylist **drs_header,
01073                  enum uves_chip chip);
01074 cpl_error_code uves_load_mbias(const cpl_frameset *frames, const char *chip_id,
01075                    const char **mbias_filename,
01076                    cpl_image **mbias, uves_propertylist **mbias_header, 
01077                    enum uves_chip chip);
01078 cpl_error_code uves_load_mdark(const cpl_frameset *frames, const char *chip_id,
01079                    const char **mdark_filename,
01080                    cpl_image **mdark, uves_propertylist **mdark_header,
01081                    enum uves_chip chip);
01082 cpl_error_code uves_load_mflat_const(const cpl_frameset *frames, const char *chip_name,
01083                      const char **mflat_filename, 
01084                      cpl_image **mflat, uves_propertylist **mflat_header, 
01085                      enum uves_chip chip,
01086                      const cpl_frame **mflat_frame);
01087 cpl_error_code uves_load_mflat(cpl_frameset *frames, const char *chip_name,
01088                    const char **mflat_filename, 
01089                    cpl_image **mflat, uves_propertylist **mflat_header, 
01090                    enum uves_chip chip,
01091                    cpl_frame **mflat_frame);
01092 cpl_image *
01093 uves_load_weights(const cpl_frameset *frames, const char **weights_filename,
01094                   enum uves_chip chip);
01095 
01096 void uves_load_ref_flat(const cpl_frameset *frames, const char *chip_name,
01097             const char **filename, cpl_image **rflat,
01098             uves_propertylist **rflat_header, enum uves_chip chip);
01099 
01100 cpl_error_code uves_load_ordertable(const cpl_frameset *frames, 
01101                     bool flames,
01102                     const char *chip_id,
01103                     const char **ordertable_filename,
01104                     cpl_table **ordertable, 
01105                     uves_propertylist **ordertable_header, 
01106                     uves_propertylist **ordertable_xheader, 
01107                     polynomial **order_locations, 
01108                                     cpl_table **traces,
01109                     int *tab_in_out_oshift,
01110                     double *tab_in_out_yshift,
01111                                     int ** fibre_mask,
01112                                     double ** fibre_pos,
01113                     enum uves_chip chip,
01114                     bool guess_table);
01115 
01116 void uves_load_linetable_const(const cpl_frameset *frames, 
01117                    bool flames,
01118                    const char *chip_name,
01119                    const polynomial *order_locations, 
01120                    int minorder, int maxorder,
01121                    const char **linetable_filename,
01122                    const cpl_table **linetable,
01123                    const uves_propertylist **linetable_header,
01124                    const polynomial **dispersion_relation,
01125                    polynomial **absolute_order,
01126                    enum uves_chip chip, int trace_id, int window);
01127 
01128 void uves_load_linetable(const cpl_frameset *frames, 
01129              bool flames,
01130              const char *chip_name,
01131              const polynomial *order_locations, 
01132              int minorder, int maxorder,
01133              const char **linetable_filename,
01134              cpl_table **linetable,
01135              uves_propertylist **linetable_header,
01136              polynomial **dispersion_relation,
01137              polynomial **absolute_order,
01138              enum uves_chip chip, int trace_id, int window);
01139 
01140 cpl_error_code uves_load_response_curve(const cpl_frameset *frames, const char *chip_name,
01141                     const char **response_filename, 
01142                     cpl_image **response_curve,
01143                     cpl_table **master_response,
01144                     uves_propertylist **response_header, enum uves_chip chip);
01145 
01146 void uves_load_corvel(const cpl_frameset *frames,
01147               cpl_table **corvel,
01148               uves_propertylist **corvel_header,
01149               const char **corvel_filename);
01150             
01151 void uves_load_cd_align(const cpl_frameset *frames,
01152             const char **raw_filename1,
01153             const char **raw_filename2,
01154             cpl_image *raw_image1[2],
01155             cpl_image *raw_image2[2],
01156             uves_propertylist *raw_header1[2], 
01157             uves_propertylist *raw_header2[2], 
01158             uves_propertylist *rotated_header1[2], 
01159             uves_propertylist *rotated_header2[2], 
01160             bool *blue);
01161 
01162 /* Static calibration */
01163 cpl_error_code uves_load_linerefertable(const cpl_frameset *frames, 
01164                     const char **line_refer_filename, 
01165                     cpl_table **line_refer, 
01166                     uves_propertylist **line_refer_header);
01167 
01168 cpl_error_code uves_load_lineintmon(const cpl_frameset *frames, 
01169                     const char **line_intmonr_filename, 
01170                     cpl_table **line_intmon);
01171 
01172 cpl_error_code uves_load_flux_table(const cpl_frameset *frames, const char **flux_table_filename, 
01173                     cpl_table **flux_table);
01174     
01175 cpl_error_code uves_load_atmo_ext(const cpl_frameset *frames, 
01176                   const char **atmext_table_filename, 
01177                   cpl_table **atmext_table);
01178 
01179 /* Product filenames */
01180 
01181 /* Mbias */
01182 char *uves_masterbias_filename(enum uves_chip chip);
01183 
01184 /* Mdark */
01185 char *uves_masterdark_filename(enum uves_chip chip);
01186 
01187 /* Mflat */
01188 char *uves_masterflat_filename(enum uves_chip chip);
01189 char *uves_masterflat_bkg_filename(enum uves_chip chip);
01190 
01191 /* Orderpos */
01192 char *uves_ordef_filename(enum uves_chip chip);
01193 char *uves_order_table_filename(enum uves_chip chip);
01194 char *uves_guess_order_table_filename(enum uves_chip chip);
01195 char *uves_guess_line_table_filename(enum uves_chip chip);
01196 
01197 /* Wavecal */
01198 char *uves_line_table_filename(enum uves_chip chip);
01199 char *uves_line_table_filename_paf(enum uves_chip chip);
01200 
01201 /* Response */
01202 char *uves_response_curve_filename(enum uves_chip chip);
01203 char *uves_response_curve_2d_filename(enum uves_chip chip);
01204 char *uves_response_red_standard_filename(enum uves_chip chip);
01205 char *uves_response_red_noappend_standard_filename(enum uves_chip chip);
01206 char *uves_response_efficiency_filename(enum uves_chip chip);
01207 char *uves_response_bkg_standard_filename(enum uves_chip chip);
01208 
01209 char *uves_order_extract_qc_standard_filename(enum uves_chip chip);
01210 
01211 /* Tflat */
01212 char *uves_flat_ratio_filename(enum uves_chip chip);
01213 
01214 /* CDAlign */
01215 char *uves_cd_align_filename(enum uves_chip chip);
01216 
01217 /* Scired */
01218 char *uves_scired_red_science_filename(enum uves_chip chip);
01219 char *uves_scired_red_noappend_science_filename(enum uves_chip chip);
01220 char *uves_scired_red_2d_science_filename(enum uves_chip chip);
01221 char *uves_scired_red_error_filename(enum uves_chip chip);
01222 char *uves_scired_red_noappend_error_filename(enum uves_chip chip);
01223 char *uves_scired_red_2d_error_filename(enum uves_chip chip);
01224 char *uves_scired_fluxcal_science_filename(enum uves_chip chip);
01225 char *uves_scired_fluxcal_science_noappend_filename(enum uves_chip chip);
01226 char *uves_scired_fluxcal_science_2d_filename(enum uves_chip chip);
01227 char *uves_scired_fluxcal_error_filename(enum uves_chip chip);
01228 char *uves_scired_fluxcal_error_noappend_filename(enum uves_chip chip);
01229 char *uves_scired_fluxcal_error_2d_filename(enum uves_chip chip);
01230 char *uves_scired_ff_variance_filename(enum uves_chip chip);
01231 char *uves_scired_ff_variance_2d_filename(enum uves_chip chip);
01232 char *uves_scired_background_filename(enum uves_chip chip);
01233 char *uves_scired_merged_sky_filename(enum uves_chip chip);
01234 char *uves_scired_merged_science_filename(enum uves_chip chip);
01235 char *uves_scired_merged_2d_science_filename(enum uves_chip chip);
01236 char *uves_scired_resampled_filename(enum uves_chip chip);
01237 char *uves_scired_resampled_2d_filename(enum uves_chip chip);
01238 char *uves_scired_resampledmf_filename(enum uves_chip chip);
01239 char *uves_scired_rebinned_filename(enum uves_chip chip);
01240 char *uves_scired_rebinned_2d_filename(enum uves_chip chip);
01241 char *uves_scired_ordertrace_filename(enum uves_chip chip);
01242 char *uves_scired_wmap_filename(enum uves_chip chip);
01243 char *uves_scired_crmask_filename(enum uves_chip chip);
01244 char *uves_scired_ext2d_filename(enum uves_chip chip);
01245 char *uves_scired_ff2d_filename(enum uves_chip chip);
01246 cpl_image*
01247 uves_vector_to_image(const cpl_vector* vector,cpl_type type);
01248 
01249 
01250 cpl_error_code
01251 uves_check_if_format_is_midas(uves_propertylist* header, bool* format_is_midas);
01252 
01253 
01254 #endif

Generated on 9 Mar 2012 for UVES Pipeline Reference Manual by  doxygen 1.6.1