00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246 #ifndef UVES_DFS_H
00247 #define UVES_DFS_H
00248
00249
00250
00251
00252
00253 #include <uves_propertylist.h>
00254 #include <uves_utils_polynomial.h>
00255 #include <uves_chip.h>
00256 #include <uves_utils.h>
00257 #include <cpl.h>
00258
00259 #include <stdbool.h>
00260 #include <math.h>
00261
00262
00263
00264
00265
00266
00267
00268 #define FLAMES_SCI_RED "FIB_SCI_RED"
00269 #define FLAMES_SCI_COM_RED "FIB_SCI_COM_RED"
00270
00271 #define FLAMES_LINE_TABLE(chip) ((chip) == UVES_CHIP_REDL ? "FIB_LINE_TABLE_REDL" : \
00272 (chip) == UVES_CHIP_REDU ? "FIB_LINE_TABLE_REDU" : "???")
00273
00274 #define FLAMES_SLIT_FF_DT1(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_DT1_REDL" : \
00275 (chip) == UVES_CHIP_REDU ? "SLIT_FF_DT1_REDU" : "???")
00276
00277 #define FLAMES_SLIT_FF_DT2(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_DT2_REDL" : \
00278 (chip) == UVES_CHIP_REDU ? "SLIT_FF_DT2_REDU" : "???")
00279
00280 #define FLAMES_SLIT_FF_DT3(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_DT3_REDL" : \
00281 (chip) == UVES_CHIP_REDU ? "SLIT_FF_DT3_REDU" : "???")
00282
00283 #define FLAMES_SLIT_FF_DTC(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_DTC_REDL" : \
00284 (chip) == UVES_CHIP_REDU ? "SLIT_FF_DTC_REDU" : "???")
00285
00286
00287
00288 #define FLAMES_SLIT_FF_BP1(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_BP1_REDL" : \
00289 (chip) == UVES_CHIP_REDU ? "SLIT_FF_BP1_REDU" : "???")
00290
00291 #define FLAMES_SLIT_FF_BP2(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_BP2_REDL" : \
00292 (chip) == UVES_CHIP_REDU ? "SLIT_FF_BP2_REDU" : "???")
00293
00294 #define FLAMES_SLIT_FF_BP3(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_BP3_REDL" : \
00295 (chip) == UVES_CHIP_REDU ? "SLIT_FF_BP3_REDU" : "???")
00296
00297 #define FLAMES_SLIT_FF_BPC(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_BPC_REDL" : \
00298 (chip) == UVES_CHIP_REDU ? "SLIT_FF_BPC_REDU" : "???")
00299
00300
00301 #define FLAMES_SLIT_FF_BN1(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_BN1_REDL" : \
00302 (chip) == UVES_CHIP_REDU ? "SLIT_FF_BN1_REDU" : "???")
00303
00304 #define FLAMES_SLIT_FF_BN2(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_BN2_REDL" : \
00305 (chip) == UVES_CHIP_REDU ? "SLIT_FF_BN2_REDU" : "???")
00306
00307 #define FLAMES_SLIT_FF_BN3(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_BN3_REDL" : \
00308 (chip) == UVES_CHIP_REDU ? "SLIT_FF_BN3_REDU" : "???")
00309
00310 #define FLAMES_SLIT_FF_BNC(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_BNC_REDL" : \
00311 (chip) == UVES_CHIP_REDU ? "SLIT_FF_BNC_REDU" : "???")
00312
00313
00314 #define FLAMES_SLIT_FF_SG1(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_SG1_REDL" : \
00315 (chip) == UVES_CHIP_REDU ? "SLIT_FF_SG1_REDU" : "???")
00316
00317 #define FLAMES_SLIT_FF_SG2(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_SG2_REDL" : \
00318 (chip) == UVES_CHIP_REDU ? "SLIT_FF_SG2_REDU" : "???")
00319
00320 #define FLAMES_SLIT_FF_SG3(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_SG3_REDL" : \
00321 (chip) == UVES_CHIP_REDU ? "SLIT_FF_SG3_REDU" : "???")
00322
00323 #define FLAMES_SLIT_FF_SGC(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_SGC_REDL" : \
00324 (chip) == UVES_CHIP_REDU ? "SLIT_FF_SGC_REDU" : "???")
00325
00326
00327
00328 #define FLAMES_SLIT_FF_COM(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_COM_REDL" : \
00329 (chip) == UVES_CHIP_REDU ? "SLIT_FF_COM_REDU" : "???")
00330
00331 #define FLAMES_SLIT_FF_NOR(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_NOR_REDL" : \
00332 (chip) == UVES_CHIP_REDU ? "SLIT_FF_NOR_REDU" : "???")
00333
00334 #define FLAMES_SLIT_FF_NSG(chip) ((chip) == UVES_CHIP_REDL ? "SLIT_FF_NSG_REDL" : \
00335 (chip) == UVES_CHIP_REDU ? "SLIT_FF_NSG_REDU" : "???")
00336
00337
00338
00339
00340
00341 #define FLAMES_FIB_FF_DT1(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_DT1_REDL" : \
00342 (chip) == UVES_CHIP_REDU ? "FIB_FF_DT1_REDU" : "???")
00343
00344 #define FLAMES_FIB_FF_DT2(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_DT2_REDL" : \
00345 (chip) == UVES_CHIP_REDU ? "FIB_FF_DT2_REDU" : "???")
00346
00347 #define FLAMES_FIB_FF_DT3(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_DT3_REDL" : \
00348 (chip) == UVES_CHIP_REDU ? "FIB_FF_DT3_REDU" : "???")
00349
00350 #define FLAMES_FIB_FF_DTC(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_DTC_REDL" : \
00351 (chip) == UVES_CHIP_REDU ? "FIB_FF_DTC_REDU" : "???")
00352
00353
00354
00355 #define FLAMES_FIB_FF_BP1(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_BP1_REDL" : \
00356 (chip) == UVES_CHIP_REDU ? "FIB_FF_BP1_REDU" : "???")
00357
00358 #define FLAMES_FIB_FF_BP2(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_BP2_REDL" : \
00359 (chip) == UVES_CHIP_REDU ? "FIB_FF_BP2_REDU" : "???")
00360
00361 #define FLAMES_FIB_FF_BP3(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_BP3_REDL" : \
00362 (chip) == UVES_CHIP_REDU ? "FIB_FF_BP3_REDU" : "???")
00363
00364 #define FLAMES_FIB_FF_BPC(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_BPC_REDL" : \
00365 (chip) == UVES_CHIP_REDU ? "FIB_FF_BPC_REDU" : "???")
00366
00367
00368 #define FLAMES_FIB_FF_BN1(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_BN1_REDL" : \
00369 (chip) == UVES_CHIP_REDU ? "FIB_FF_BN1_REDU" : "???")
00370
00371 #define FLAMES_FIB_FF_BN2(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_BN2_REDL" : \
00372 (chip) == UVES_CHIP_REDU ? "FIB_FF_BN2_REDU" : "???")
00373
00374 #define FLAMES_FIB_FF_BN3(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_BN3_REDL" : \
00375 (chip) == UVES_CHIP_REDU ? "FIB_FF_BN3_REDU" : "???")
00376
00377 #define FLAMES_FIB_FF_BNC(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_BNC_REDL" : \
00378 (chip) == UVES_CHIP_REDU ? "FIB_FF_BNC_REDU" : "???")
00379
00380
00381 #define FLAMES_FIB_FF_SG1(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_SG1_REDL" : \
00382 (chip) == UVES_CHIP_REDU ? "FIB_FF_SG1_REDU" : "???")
00383
00384 #define FLAMES_FIB_FF_SG2(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_SG2_REDL" : \
00385 (chip) == UVES_CHIP_REDU ? "FIB_FF_SG2_REDU" : "???")
00386
00387 #define FLAMES_FIB_FF_SG3(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_SG3_REDL" : \
00388 (chip) == UVES_CHIP_REDU ? "FIB_FF_SG3_REDU" : "???")
00389
00390 #define FLAMES_FIB_FF_SGC(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_SGC_REDL" : \
00391 (chip) == UVES_CHIP_REDU ? "FIB_FF_SGC_REDU" : "???")
00392
00393
00394
00395 #define FLAMES_FIB_FF_COM(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_COM_REDL" : \
00396 (chip) == UVES_CHIP_REDU ? "FIB_FF_COM_REDU" : "???")
00397
00398 #define FLAMES_FIB_FF_NOR(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_NOR_REDL" : \
00399 (chip) == UVES_CHIP_REDU ? "FIB_FF_NOR_REDU" : "???")
00400
00401 #define FLAMES_FIB_FF_NSG(chip) ((chip) == UVES_CHIP_REDL ? "FIB_FF_NSG_REDL" : \
00402 (chip) == UVES_CHIP_REDU ? "FIB_FF_NSG_REDU" : "???")
00403
00404
00405
00406
00407
00408
00409
00410 #define FLAMES_FIB_FF_ALL "FIB_FF_ALL_RED"
00411 #define FLAMES_FIB_FF_ODD "FIB_FF_ODD_RED"
00412 #define FLAMES_FIB_FF_EVEN "FIB_FF_EVEN_RED"
00413
00414 #define FLAMES_CORVEL(chip) ((chip) == UVES_CHIP_REDL ? "CORVEL_TAB_REDL" : \
00415 (chip) == UVES_CHIP_REDU ? "CORVEL_TAB_REDU" : "???")
00416
00417
00418
00419
00420 #define FLAMES_FIB_SCI_SIM "FIB_SCI_SIM_RED"
00421
00422
00423 #define FLAMES_ORDEF(flames, chip) ((flames) ? \
00424 (((chip) == UVES_CHIP_REDU) ? "FIB_ORDEF_REDU" : \
00425 ((chip) == UVES_CHIP_REDL) ? "FIB_ORDEF_REDL" : \
00426 "???") : "??UVES??")
00427 #define FLAMES_ORDEF_EXTENSION(flames, chip) 0
00428
00429
00430
00431
00432
00433 #define UVES_FORMATCHECK(flames,blue) ((flames) ? "FIB_ARC_LAMP_FORM_RED" : \
00434 ((blue) ? "ARC_LAMP_FORM_BLUE" : "ARC_LAMP_FORM_RED"))
00435
00436
00437 #define UVES_ORDER_FLAT(flames, blue) ((flames) ? "FIB_ORDEF_RED" : \
00438 ((blue) ? "ORDER_FLAT_BLUE" : "ORDER_FLAT_RED"))
00439
00440
00441 #define UVES_BIAS(blue) ((blue) ? "BIAS_BLUE" : "BIAS_RED")
00442
00443
00444 #define UVES_DARK(blue) ((blue) ? "DARK_BLUE" : "DARK_RED")
00445 #define UVES_PDARK(blue) ((blue) ? "PDARK_BLUE" : "PDARK_RED")
00446
00447
00448 #define UVES_FLAT(blue) ((blue) ? "FLAT_BLUE" : "FLAT_RED")
00449 #define UVES_IFLAT(blue) ((blue) ? "IFLAT_BLUE" : "IFLAT_RED")
00450 #define UVES_DFLAT(blue) ((blue) ? "DFLAT_BLUE" : "DFLAT_RED")
00451 #define UVES_SFLAT(blue) ((blue) ? "SFLAT_BLUE" : "SFLAT_RED")
00452 #define UVES_TFLAT(blue) ((blue) ? "TFLAT_BLUE" : "TFLAT_RED")
00453 #define UVES_SCREEN_FLAT(blue) ((blue) ? "SCREEN_FLAT_BLUE" : "SCREEN_FLAT_RED")
00454
00455
00456 #define UVES_ARC_LAMP(flames,blue) ((flames) ? "FIB_ARC_LAMP_RED" : \
00457 ((blue) ? "ARC_LAMP_BLUE" : "ARC_LAMP_RED"))
00458
00459 #define UVES_ECH_ARC_LAMP(blue) ((blue) ? "ECH_ARC_LAMP_BLUE" : "ECH_ARC_LAMP_RED")
00460
00461
00462 #define UVES_CD_ALIGN(blue) ((blue) ? "CD_ALIGN_BLUE" : "CD_ALIGN_RED")
00463
00464
00465 #define UVES_STD_STAR(blue) ((blue) ? "STANDARD_BLUE" : "STANDARD_RED")
00466
00467
00468 #define UVES_SCIENCE(blue) ((blue) ? "SCIENCE_BLUE" : "SCIENCE_RED")
00469 #define UVES_SCI_EXTND(blue) ((blue) ? "SCI_EXTND_BLUE" : "SCI_EXTND_RED")
00470 #define UVES_SCI_POINT(blue) ((blue) ? "SCI_POINT_BLUE" : "SCI_POINT_RED")
00471 #define UVES_SCI_SLICER(blue) ((blue) ? "SCI_SLICER_BLUE" : "SCI_SLICER_RED")
00472
00473
00474 #define UVES_DRS_SETUP(flames, chip) ((flames) ? \
00475 (((chip) == UVES_CHIP_REDU) ? "FIB_DRS_REDU" : \
00476 ((chip) == UVES_CHIP_REDL) ? "FIB_DRS_REDL" : "???") \
00477 : \
00478 (((chip) == UVES_CHIP_BLUE) ? "DRS_SETUP_BLUE" : \
00479 ((chip) == UVES_CHIP_REDU) ? "DRS_SETUP_REDU" : \
00480 ((chip) == UVES_CHIP_REDL) ? "DRS_SETUP_REDL" : "???"))
00481
00482 #define UVES_DRS_SETUP_EXTENSION(chip) 1
00483
00484
00485 #define UVES_GUESS_ORDER_TABLE(flames,chip) ((flames) ? \
00486 (((chip) == UVES_CHIP_REDU) ? "FIB_ORD_GUE_REDU" : \
00487 ((chip) == UVES_CHIP_REDL) ? "FIB_ORD_GUE_REDL" : "???")\
00488 : \
00489 (((chip) == UVES_CHIP_BLUE) ? "ORDER_GUESS_TAB_BLUE" : \
00490 ((chip) == UVES_CHIP_REDU) ? "ORDER_GUESS_TAB_REDU" : \
00491 ((chip) == UVES_CHIP_REDL) ? "ORDER_GUESS_TAB_REDL" : \
00492 "???"))
00493
00494 #define UVES_GUESS_ORDER_TABLE_EXTENSION(flames,chip) 1
00495
00496
00497
00498 #define UVES_ORDER_TABLE(flames,chip) ((flames) ? \
00499 (((chip) == UVES_CHIP_REDU) ? "FIB_ORDEF_TABLE_REDU" : \
00500 ((chip) == UVES_CHIP_REDL) ? "FIB_ORDEF_TABLE_REDL" : \
00501 "???") \
00502 : \
00503 (((chip) == UVES_CHIP_BLUE) ? "ORDER_TABLE_BLUE" : \
00504 ((chip) == UVES_CHIP_REDU) ? "ORDER_TABLE_REDU" : \
00505 ((chip) == UVES_CHIP_REDL) ? "ORDER_TABLE_REDL" : \
00506 "???"))
00507 #define UVES_ORDER_TABLE_EXTENSION 1
00508 #define UVES_ORDER_TABLE_EXTENSION_POLY 2
00509 #define UVES_ORDER_TABLE_EXTENSION_FIBRE 3
00510
00511
00512
00513
00514
00515
00516
00517
00518
00519
00520
00521
00522
00523
00524
00525
00526
00527
00528
00529 #define FLAMES_SCI_INFO_TAB "FIB_SCI_INFO_TAB"
00530
00531 #define FLAMES_MWXB_SCI(chip) ( \
00532 ((chip) == UVES_CHIP_REDU) ? "MWXB_SCI_REDU" : \
00533 ((chip) == UVES_CHIP_REDL) ? "MWXB_SCI_REDL" : \
00534 "???")
00535
00536 #define FLAMES_ERR_MWXB_SCI(chip) ( \
00537 ((chip) == UVES_CHIP_REDU) ? "ERR_MWXB_SCI_REDU" : \
00538 ((chip) == UVES_CHIP_REDL) ? "ERR_MWXB_SCI_REDL" : \
00539 "???")
00540
00541
00542 #define FLAMES_XB_SCI(chip) ( \
00543 ((chip) == UVES_CHIP_REDU) ? "XB_SCI_REDU" : \
00544 ((chip) == UVES_CHIP_REDL) ? "XB_SCI_REDL" : \
00545 "???")
00546
00547
00548 #define FLAMES_MWXB_SCI_RAW(chip) ( \
00549 ((chip) == UVES_CHIP_REDU) ? "MWXB_SCI_RAW_REDU" : \
00550 ((chip) == UVES_CHIP_REDL) ? "MWXB_SCI_RAW_REDL" : \
00551 "???")
00552
00553 #define FLAMES_ERR_MWXB_SCI_RAW(chip) ( \
00554 ((chip) == UVES_CHIP_REDU) ? "ERR_MWXB_SCI_RAW_REDU" : \
00555 ((chip) == UVES_CHIP_REDL) ? "ERR_MWXB_SCI_RAW_REDL" : \
00556 "???")
00557
00558
00559 #define FLAMES_XB_SCI_RAW(chip) ( \
00560 ((chip) == UVES_CHIP_REDU) ? "XB_SCI_REDU" : \
00561 ((chip) == UVES_CHIP_REDL) ? "XB_SCI_REDL" : \
00562 "???")
00563
00564
00565
00566
00567
00568
00569 #define UVES_BACKGR_TABLE(chip) (((chip) == UVES_CHIP_BLUE) ? "BACKGR_TABLE_BLUE" : \
00570 ((chip) == UVES_CHIP_REDU) ? "BACKGR_TABLE_REDU" : \
00571 ((chip) == UVES_CHIP_REDL) ? "BACKGR_TABLE_REDL" : "???")
00572
00573
00574 #define UVES_MASTER_BIAS(chip) (((chip) == UVES_CHIP_BLUE) ? "MASTER_BIAS_BLUE" : \
00575 ((chip) == UVES_CHIP_REDU) ? "MASTER_BIAS_REDU" : \
00576 ((chip) == UVES_CHIP_REDL) ? "MASTER_BIAS_REDL" : "???")
00577 #define UVES_MASTER_BIAS_EXTENSION(chip) 0
00578
00579
00580 #define UVES_MASTER_ARC_FORM(chip) (((chip) == UVES_CHIP_BLUE) ? "MASTER_FORM_BLUE" : \
00581 ((chip) == UVES_CHIP_REDU) ? "MASTER_FORM_REDU" : \
00582 ((chip) == UVES_CHIP_REDL) ? "MASTER_FORM_REDL" : "???")
00583
00584 #define UVES_MASTER_ARC_FORM_EXTENSION(chip) 0
00585
00586
00587 #define UVES_MASTER_DARK(chip) (((chip) == UVES_CHIP_BLUE) ? "MASTER_DARK_BLUE" : \
00588 ((chip) == UVES_CHIP_REDU) ? "MASTER_DARK_REDU" : \
00589 ((chip) == UVES_CHIP_REDL) ? "MASTER_DARK_REDL" : "???")
00590
00591 #define UVES_MASTER_PDARK(chip) (((chip) == UVES_CHIP_BLUE) ? "MASTER_PDARK_BLUE": \
00592 ((chip) == UVES_CHIP_REDU) ? "MASTER_PDARK_REDU": \
00593 ((chip) == UVES_CHIP_REDL) ? "MASTER_PDARK_REDL": "???")
00594
00595 #define UVES_MASTER_DARK_EXTENSION(chip) 0
00596
00597
00598 #define UVES_MASTER_FLAT(chip) (((chip) == UVES_CHIP_BLUE) ? "MASTER_FLAT_BLUE" : \
00599 ((chip) == UVES_CHIP_REDU) ? "MASTER_FLAT_REDU" : \
00600 ((chip) == UVES_CHIP_REDL) ? "MASTER_FLAT_REDL" : "???")
00601 #define UVES_MASTER_DFLAT(chip) (((chip) == UVES_CHIP_BLUE) ? "MASTER_DFLAT_BLUE" : \
00602 ((chip) == UVES_CHIP_REDU) ? "MASTER_DFLAT_REDU" : \
00603 ((chip) == UVES_CHIP_REDL) ? "MASTER_DFLAT_REDL" : "???")
00604 #define UVES_MASTER_SFLAT(chip) (((chip) == UVES_CHIP_BLUE) ? "MASTER_SFLAT_BLUE" : \
00605 ((chip) == UVES_CHIP_REDU) ? "MASTER_SFLAT_REDU" : \
00606 ((chip) == UVES_CHIP_REDL) ? "MASTER_SFLAT_REDL" : "???")
00607 #define UVES_MASTER_IFLAT(chip) (((chip) == UVES_CHIP_BLUE) ? "MASTER_IFLAT_BLUE" : \
00608 ((chip) == UVES_CHIP_REDU) ? "MASTER_IFLAT_REDU" : \
00609 ((chip) == UVES_CHIP_REDL) ? "MASTER_IFLAT_REDL" : "???")
00610 #define UVES_MASTER_TFLAT(chip) (((chip) == UVES_CHIP_BLUE) ? "MASTER_TFLAT_BLUE" : \
00611 ((chip) == UVES_CHIP_REDU) ? "MASTER_TFLAT_REDU" : \
00612 ((chip) == UVES_CHIP_REDL) ? "MASTER_TFLAT_REDL" : "???")
00613 #define UVES_REF_TFLAT(chip) (((chip) == UVES_CHIP_BLUE) ? "REF_TFLAT_BLUE" : \
00614 ((chip) == UVES_CHIP_REDU) ? "REF_TFLAT_REDU" : \
00615 ((chip) == UVES_CHIP_REDL) ? "REF_TFLAT_REDL" : "???")
00616 #define UVES_MASTER_SCREEN_FLAT(chip) (((chip) == UVES_CHIP_BLUE) ? "MASTER_SCREEN_FLAT_BLUE" : \
00617 ((chip) == UVES_CHIP_REDU) ? "MASTER_SCREEN_FLAT_REDU" : \
00618 ((chip) == UVES_CHIP_REDL) ? "MASTER_SCREEN_FLAT_REDL" : \
00619 "???")
00620 #define UVES_MASTER_FLAT_EXTENSION(chip) 0
00621 #define UVES_BKG_FLAT(chip) (((chip) == UVES_CHIP_BLUE) ? "BKG_FLAT_BLUE" : \
00622 ((chip) == UVES_CHIP_REDU) ? "BKG_FLAT_REDU" : \
00623 ((chip) == UVES_CHIP_REDL) ? "BKG_FLAT_REDL" : "???" )
00624 #define UVES_RATIO_TFLAT(chip) (((chip) == UVES_CHIP_BLUE) ? "RATIO_TFLAT_BLUE" : \
00625 ((chip) == UVES_CHIP_REDU) ? "RATIO_TFLAT_REDU" : \
00626 ((chip) == UVES_CHIP_REDL) ? "RATIO_TFLAT_REDL" : "???" )
00627
00628
00629 #define UVES_LINE_TABLE(flames,chip) ((flames) ? \
00630 (((chip) == UVES_CHIP_REDU) ? "FIB_LINE_TABLE_REDU" : \
00631 ((chip) == UVES_CHIP_REDL) ? "FIB_LINE_TABLE_REDL" : "???")\
00632 : \
00633 (((chip) == UVES_CHIP_BLUE) ? "LINE_TABLE_BLUE" : \
00634 ((chip) == UVES_CHIP_REDU) ? "LINE_TABLE_REDU" : \
00635 ((chip) == UVES_CHIP_REDL) ? "LINE_TABLE_REDL" : "???"))
00636
00637
00638 #define UVES_GUESS_LINE_TABLE(flames,chip) ((flames) ? \
00639 (((chip) == UVES_CHIP_REDU) ? "FIB_LIN_GUE_REDU" : \
00640 ((chip) == UVES_CHIP_REDL) ? "FIB_LIN_GUE_REDL" : "???")\
00641 : \
00642 (((chip) == UVES_CHIP_BLUE) ? "LINE_GUESS_TAB_BLUE" : \
00643 ((chip) == UVES_CHIP_REDU) ? "LINE_GUESS_TAB_REDU" : \
00644 ((chip) == UVES_CHIP_REDL) ? "LINE_GUESS_TAB_REDL" : "???"))
00645
00646 #define UVES_LINE_TABLE_EXTENSION 1
00647 #define UVES_LINE_TABLE_EXTENSION_DISPERSION 2
00648 #define UVES_LINE_TABLE_EXTENSION_ABSORDER 3
00649
00650
00651 #define UVES_LINE_TABLE_MIDAS_BLUE(window) (((window)==1) ? "LINE_TABLE_BLUE1" : \
00652 ((window)==2) ? "LINE_TABLE_BLUE2" : \
00653 ((window)==3) ? "LINE_TABLE_BLUE3" : \
00654 "LINE_TABLE_BLUEx")
00655 #define UVES_LINE_TABLE_MIDAS_REDL(window) (((window)==1) ? "LINE_TABLE_REDL1" : \
00656 ((window)==2) ? "LINE_TABLE_REDL2" : \
00657 ((window)==3) ? "LINE_TABLE_REDL3" : \
00658 "LINE_TABLE_REDLx")
00659 #define UVES_LINE_TABLE_MIDAS_REDU(window) (((window)==1) ? "LINE_TABLE_REDU1" : \
00660 ((window)==2) ? "LINE_TABLE_REDU2" : \
00661 ((window)==3) ? "LINE_TABLE_REDU3" : \
00662 "LINE_TABLE_REDUx")
00663 #define UVES_LINE_TABLE_MIDAS(chip,window) ( ((chip) == UVES_CHIP_BLUE) ? \
00664 UVES_LINE_TABLE_MIDAS_BLUE(window) : \
00665 ((chip) == UVES_CHIP_REDU) ? \
00666 UVES_LINE_TABLE_MIDAS_REDU(window) : \
00667 ((chip) == UVES_CHIP_REDL) ? \
00668 UVES_LINE_TABLE_MIDAS_REDL(window) : "???")
00669
00670
00671 #define UVES_INSTR_RESPONSE(chip) (((chip) == UVES_CHIP_BLUE) ? "INSTR_RESPONSE_BLUE" : \
00672 ((chip) == UVES_CHIP_REDU) ? "INSTR_RESPONSE_REDU" : \
00673 ((chip) == UVES_CHIP_REDL) ? "INSTR_RESPONSE_REDL" : "???")
00674 #define UVES_INSTR_RESPONSE_EXTENSION(chip) 0
00675
00676 #define UVES_MASTER_RESPONSE(chip) (((chip) == UVES_CHIP_BLUE) ? "MASTER_RESPONSE_BLUE" : \
00677 ((chip) == UVES_CHIP_REDU) ? "MASTER_RESPONSE_REDU" : \
00678 ((chip) == UVES_CHIP_REDL) ? "MASTER_RESPONSE_REDL" : "???")
00679 #define UVES_MASTER_RESPONSE_EXTENSION(chip) 0
00680
00681 #define UVES_WCALIB_FF_RESPONSE(chip) (((chip) == UVES_CHIP_BLUE) ? "WCALIB_FF_RESPONSE_BLUE" : \
00682 ((chip) == UVES_CHIP_REDU) ? "WCALIB_FF_RESPONSE_REDU" : \
00683 ((chip) == UVES_CHIP_REDL) ? "WCALIB_FF_RESPONSE_REDL" : \
00684 "???")
00685 #define UVES_RED_STD(chip) (((chip) == UVES_CHIP_BLUE) ? "RED_STD_BLUE" : \
00686 ((chip) == UVES_CHIP_REDU) ? "RED_STD_REDU" : \
00687 ((chip) == UVES_CHIP_REDL) ? "RED_STD_REDL" : "???")
00688 #define UVES_BKG_STD(chip) (((chip) == UVES_CHIP_BLUE) ? "BKG_STD_BLUE" : \
00689 ((chip) == UVES_CHIP_REDU) ? "BKG_STD_REDU" : \
00690 ((chip) == UVES_CHIP_REDL) ? "BKG_STD_REDL" : "???")
00691 #define UVES_EFFICIENCY_TABLE(chip) (((chip) == UVES_CHIP_BLUE) ? "EFFICIENCY_TABLE_BLUE" : \
00692 ((chip) == UVES_CHIP_REDU) ? "EFFICIENCY_TABLE_REDU" : \
00693 ((chip) == UVES_CHIP_REDL) ? "EFFICIENCY_TABLE_REDL" : "???")
00694
00695
00696 #define UVES_CD_ALIGN_TABLE(blue) ((blue) ? "CD_ALIGN_TABLE_BLUE" : "CD_ALIGN_TABLE_RED")
00697
00698
00699
00700
00701
00702
00703 #define UVES_LINE_REFER_TABLE "LINE_REFER_TABLE"
00704 #define UVES_LINE_REFER_TABLE_EXTENSION 1
00705
00706 #define UVES_LINE_INTMON_TABLE "LINE_INTMON_TABLE"
00707 #define UVES_LINE_INTMON_TABLE_EXTENSION 1
00708
00709
00710 #define UVES_FLUX_STD_TABLE "FLUX_STD_TABLE"
00711 #define UVES_FLUX_STD_TABLE_EXTENSION 1
00712
00713
00714 #define UVES_EXTCOEFF_TABLE "EXTCOEFF_TABLE"
00715 #define UVES_EXTCOEFF_TABLE_EXTENSION 1
00716
00717
00718
00719
00720
00721 #define UVES_ALL_STATS (CPL_STATS_MEAN | CPL_STATS_STDEV | CPL_STATS_MEDIAN | \
00722 CPL_STATS_MIN | CPL_STATS_MAX)
00723
00724
00725
00726
00727 void
00728 uves_copy_if_possible(uves_propertylist *to, const uves_propertylist *from,
00729 const char *name);
00730
00731 void
00732 uves_warn_if_chip_names_dont_match(const uves_propertylist *calib_header,
00733 const char *raw_chip_name, enum uves_chip chip);
00734
00735 cpl_error_code
00736 uves_extract_frames_group_type(const cpl_frameset * set, cpl_frameset** ext,
00737 cpl_frame_group type);
00738 cpl_error_code
00739 uves_frameset_merge(cpl_frameset * set1, const cpl_frameset* set2);
00740 cpl_error_code
00741 uves_sflats_get_encoder_steps(const cpl_frameset * set, cpl_table** encoder_tbl, int* nset);
00742
00743 cpl_error_code uves_dfs_set_groups(cpl_frameset *);
00744
00745 cpl_image *
00746 uves_crop_and_rotate(const cpl_image *image, const uves_propertylist *header,
00747 enum uves_chip chip,
00748 const uves_propertylist *redl_header,
00749 bool new_format, uves_propertylist **out_header);
00750
00751 void *uves_read_midas_array(const uves_propertylist *plist, const char *name, int *length,
00752 cpl_type *type, int *nkeys);
00753
00754
00755 cpl_error_code
00756 uves_frameset_insert(cpl_frameset *frames,
00757 void *object,
00758 cpl_frame_group group,
00759 cpl_frame_type type,
00760 cpl_frame_level level,
00761 const char *filename,
00762 const char *tag,
00763 const uves_propertylist *raw_header,
00764 const uves_propertylist *primary_header,
00765 const uves_propertylist *table_header,
00766 const cpl_parameterlist *parameters,
00767 const char *recipe,
00768 const char *pipeline,
00769 cpl_table **qc,
00770 const char *start_time,
00771 bool dump_paf,
00772 unsigned stats_mask);
00773 int uves_check_rec_status(const int val) ;
00774 cpl_error_code uves_save_image_local(const char *description, const char *filename_prefix,
00775 const cpl_image *image,
00776 enum uves_chip chip, int trace, int window,
00777 const uves_propertylist *plist);
00778 cpl_error_code uves_save_table_local(const char *description, const char *filename_prefix,
00779 const cpl_table *table,
00780 enum uves_chip chip, int trace, int window,
00781 const uves_propertylist *pheader,
00782 const uves_propertylist *eheader);
00783 cpl_error_code uves_save_polynomial(polynomial *p, const char *filename,
00784 const uves_propertylist *header);
00785
00786 void uves_save_image(const cpl_image *image, const char *filename, const uves_propertylist *plist);
00787 void uves_save_imagelist(const cpl_imagelist *iml, const char *filename, const uves_propertylist *plist);
00788 cpl_image *uves_load_image(const cpl_frame *f,
00789 int plane,
00790 int extension,
00791 uves_propertylist **header);
00792
00793
00794 cpl_error_code
00795 uves_load_master_formatcheck(const cpl_frameset *frames, const char *chip_name,
00796 const char **mform_filename,
00797 cpl_image **mform, uves_propertylist **mform_header, enum uves_chip chip);
00798
00799 cpl_error_code uves_load_formatcheck(const cpl_frameset *frames,
00800 bool flames,
00801 const char **raw_filename,
00802 cpl_image *raw_image[2],
00803 uves_propertylist *raw_header[2],
00804 uves_propertylist *rotated_header[2], bool *blue);
00805
00806 cpl_error_code uves_load_orderpos(const cpl_frameset *frames,
00807 bool flames,
00808 const char **raw_filename,
00809 cpl_image *raw_image[2],
00810 uves_propertylist *raw_header[2],
00811 uves_propertylist *rotated_header[2],
00812 bool *blue);
00813
00814 void uves_load_arclamp(const cpl_frameset *frames,
00815 bool flames,
00816 const char **raw_filename,
00817 cpl_image *raw_image[2], uves_propertylist *raw_header[2],
00818 uves_propertylist *rotated_header[2],
00819 bool *blue, bool *sim_cal);
00820
00821 cpl_error_code uves_load_science(const cpl_frameset *frames, const char **raw_filename,
00822 cpl_image *raw_image[2],
00823 uves_propertylist *raw_header[2],
00824 uves_propertylist *rotated_header[2],
00825 bool *blue,
00826 const char **sci_type);
00827 cpl_error_code uves_load_standard(const cpl_frameset *frames, const char **raw_filename,
00828 cpl_image *raw_image[2], uves_propertylist *raw_header[2],
00829 uves_propertylist *rotated_header[2], bool *blue);
00830 cpl_error_code uves_load_raw_imagelist(const cpl_frameset *frames,
00831 bool flames,
00832 const char *blue_tag,
00833 const char *red_tag, cpl_type type,
00834 cpl_imagelist *images[2], uves_propertylist **raw_headers[2],
00835 uves_propertylist *rotated_header[2],
00836 bool *blue);
00837
00838
00839 cpl_error_code uves_load_drs(const cpl_frameset *frames,
00840 bool flames,
00841 const char *chip_name,
00842 const char **drs_filename,
00843 uves_propertylist **drs_header,
00844 enum uves_chip chip);
00845 cpl_error_code uves_load_mbias(const cpl_frameset *frames, const char *chip_id,
00846 const char **mbias_filename,
00847 cpl_image **mbias, uves_propertylist **mbias_header,
00848 enum uves_chip chip);
00849 cpl_error_code uves_load_mdark(const cpl_frameset *frames, const char *chip_id,
00850 const char **mdark_filename,
00851 cpl_image **mdark, uves_propertylist **mdark_header,
00852 enum uves_chip chip);
00853 cpl_error_code uves_load_mflat_const(const cpl_frameset *frames, const char *chip_name,
00854 const char **mflat_filename,
00855 cpl_image **mflat, uves_propertylist **mflat_header,
00856 enum uves_chip chip,
00857 const cpl_frame **mflat_frame);
00858 cpl_error_code uves_load_mflat(cpl_frameset *frames, const char *chip_name,
00859 const char **mflat_filename,
00860 cpl_image **mflat, uves_propertylist **mflat_header,
00861 enum uves_chip chip,
00862 cpl_frame **mflat_frame);
00863
00864 void uves_load_ref_flat(const cpl_frameset *frames, const char *chip_name,
00865 const char **filename, cpl_image **rflat,
00866 uves_propertylist **rflat_header, enum uves_chip chip);
00867
00868 cpl_error_code uves_load_ordertable(const cpl_frameset *frames,
00869 bool flames,
00870 const char *chip_id,
00871 const char **ordertable_filename,
00872 cpl_table **ordertable,
00873 uves_propertylist **ordertable_header,
00874 uves_propertylist **ordertable_xheader,
00875 polynomial **order_locations,
00876 cpl_table **traces,
00877 int *tab_in_out_oshift,
00878 double *tab_in_out_yshift,
00879 int ** fibre_mask,
00880 double ** fibre_pos,
00881 enum uves_chip chip,
00882 bool guess_table);
00883
00884 void uves_load_linetable_const(const cpl_frameset *frames,
00885 bool flames,
00886 const char *chip_name,
00887 const polynomial *order_locations,
00888 int minorder, int maxorder,
00889 const char **linetable_filename,
00890 const cpl_table **linetable,
00891 const uves_propertylist **linetable_header,
00892 const polynomial **dispersion_relation,
00893 polynomial **absolute_order,
00894 enum uves_chip chip, int trace_id, int window);
00895
00896 void uves_load_linetable(const cpl_frameset *frames,
00897 bool flames,
00898 const char *chip_name,
00899 const polynomial *order_locations,
00900 int minorder, int maxorder,
00901 const char **linetable_filename,
00902 cpl_table **linetable,
00903 uves_propertylist **linetable_header,
00904 polynomial **dispersion_relation,
00905 polynomial **absolute_order,
00906 enum uves_chip chip, int trace_id, int window);
00907
00908 cpl_error_code uves_load_response_curve(const cpl_frameset *frames, const char *chip_name,
00909 const char **response_filename,
00910 cpl_image **response_curve,
00911 cpl_table **master_response,
00912 uves_propertylist **response_header, enum uves_chip chip);
00913
00914 void uves_load_corvel(const cpl_frameset *frames,
00915 enum uves_chip chip,
00916 cpl_table **corvel,
00917 uves_propertylist **corvel_header,
00918 const char **corvel_filename);
00919
00920 void uves_load_cd_align(const cpl_frameset *frames,
00921 const char **raw_filename1,
00922 const char **raw_filename2,
00923 cpl_image *raw_image1[2],
00924 cpl_image *raw_image2[2],
00925 uves_propertylist *raw_header1[2],
00926 uves_propertylist *raw_header2[2],
00927 uves_propertylist *rotated_header1[2],
00928 uves_propertylist *rotated_header2[2],
00929 bool *blue);
00930
00931
00932 cpl_error_code uves_load_linerefertable(const cpl_frameset *frames,
00933 const char **line_refer_filename,
00934 cpl_table **line_refer,
00935 uves_propertylist **line_refer_header);
00936
00937 cpl_error_code uves_load_lineintmon(const cpl_frameset *frames,
00938 const char **line_intmonr_filename,
00939 cpl_table **line_intmon);
00940
00941 cpl_error_code uves_load_flux_table(const cpl_frameset *frames, const char **flux_table_filename,
00942 cpl_table **flux_table);
00943
00944 cpl_error_code uves_load_atmo_ext(const cpl_frameset *frames,
00945 const char **atmext_table_filename,
00946 cpl_table **atmext_table);
00947
00948
00949
00950
00951 char *uves_masterbias_filename(enum uves_chip chip);
00952
00953
00954 char *uves_masterdark_filename(enum uves_chip chip);
00955
00956
00957 char *uves_masterflat_filename(enum uves_chip chip);
00958 char *uves_masterflat_bkg_filename(enum uves_chip chip);
00959
00960
00961 char *uves_ordef_filename(enum uves_chip chip);
00962 char *uves_order_table_filename(enum uves_chip chip);
00963 char *uves_guess_order_table_filename(enum uves_chip chip);
00964 char *uves_guess_line_table_filename(enum uves_chip chip);
00965
00966
00967 char *uves_line_table_filename(enum uves_chip chip);
00968 char *uves_line_table_filename_paf(enum uves_chip chip);
00969
00970
00971 char *uves_response_curve_filename(enum uves_chip chip);
00972 char *uves_response_curve_2d_filename(enum uves_chip chip);
00973 char *uves_response_red_standard_filename(enum uves_chip chip);
00974 char *uves_response_efficiency_filename(enum uves_chip chip);
00975 char *uves_response_bkg_standard_filename(enum uves_chip chip);
00976
00977
00978 char *uves_flat_ratio_filename(enum uves_chip chip);
00979
00980
00981 char *uves_cd_align_filename(enum uves_chip chip);
00982
00983
00984 char *uves_scired_red_science_filename(enum uves_chip chip);
00985 char *uves_scired_red_error_filename(enum uves_chip chip);
00986 char *uves_scired_fluxcal_science_filename(enum uves_chip chip);
00987 char *uves_scired_fluxcal_error_filename(enum uves_chip chip);
00988 char *uves_scired_ff_variance_filename(enum uves_chip chip);
00989 char *uves_scired_background_filename(enum uves_chip chip);
00990 char *uves_scired_merged_sky_filename(enum uves_chip chip);
00991 char *uves_scired_merged_science_filename(enum uves_chip chip);
00992 char *uves_scired_resampled_filename(enum uves_chip chip);
00993 char *uves_scired_resampledmf_filename(enum uves_chip chip);
00994 char *uves_scired_rebinned_filename(enum uves_chip chip);
00995 char *uves_scired_ordertrace_filename(enum uves_chip chip);
00996 char *uves_scired_crmask_filename(enum uves_chip chip);
00997 char *uves_scired_ext2d_filename(enum uves_chip chip);
00998 char *uves_scired_ff2d_filename(enum uves_chip chip);
00999
01000
01001 #endif