UVES Pipeline Reference Manual  5.4.0
uves_pfits.h
1 /*
2  * This file is part of the UVES Pipeline
3  * Copyright (C) 2002, 2003, 2004, 2005 European Southern Observatory
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, 51 Franklin St, Fifth Floor, Boston, MA 02111-1307 USA
18  */
19 
20 /*
21  * $Author: amodigli $
22  * $Date: 2013-04-16 15:46:18 $
23  * $Revision: 1.88 $
24  * $Name: not supported by cvs2svn $
25  * $Log: not supported by cvs2svn $
26  * Revision 1.87 2010/11/25 12:48:14 amodigli
27  * added UVES_FNOISE
28  *
29  * Revision 1.86 2010/09/29 15:03:18 amodigli
30  * added DTIME
31  *
32  * Revision 1.85 2010/09/29 09:39:27 amodigli
33  * added UVES_DNOISE,UVES_BNOISE
34  *
35  * Revision 1.84 2010/09/24 09:32:06 amodigli
36  * put back QFITS dependency to fix problem spot by NRI on FIBER mode (with MIDAS calibs) data
37  *
38  * Revision 1.82 2010/06/01 13:29:58 amodigli
39  * defined UVES_TUNIT, uves_pfits_set_tunit_no(), uves_pfits_set_bunit_no()
40  *
41  * Revision 1.81 2009/07/13 06:37:46 amodigli
42  * added uves_ccd_is_new()
43  *
44  * Revision 1.80 2007/06/28 09:18:19 jmlarsen
45  * Added functions to write DPR keywords
46  *
47  * Revision 1.79 2007/06/01 14:09:55 jmlarsen
48  * Exported uves_pfits_get_pixelscale
49  *
50  * Revision 1.78 2007/05/16 14:38:03 amodigli
51  * added uves_flames_pfits_get_ident & uves_flames_pfits_get_object
52  *
53  * Revision 1.77 2007/05/04 08:53:49 amodigli
54  * added uves_flames_pfits_get_nflats
55  *
56  * Revision 1.76 2007/05/03 15:21:35 jmlarsen
57  * Added function to read wavecal offset
58  *
59  * Revision 1.75 2007/04/26 13:19:42 jmlarsen
60  * Added uves_pfits_set_ocs_simcal()
61  *
62  * Revision 1.74 2007/04/25 08:37:19 amodigli
63  * added uves_pfits_get_origfile
64  *
65  * Revision 1.73 2007/04/24 12:50:29 jmlarsen
66  * Replaced cpl_propertylist -> uves_propertylist which is much faster
67  *
68  * Revision 1.72 2007/04/12 12:15:12 jmlarsen
69  * Propagate keyword OS-EXPOI
70  *
71  * Revision 1.71 2007/03/05 10:18:18 jmlarsen
72  * Write 2d extraion slit length
73  *
74  * Revision 1.70 2007/01/31 13:11:25 jmlarsen
75  * Added SIMCAL accessor functions
76  *
77  * Revision 1.69 2007/01/29 12:10:21 jmlarsen
78  * Exported set_history_val() for usage by FLAMES
79  *
80  * Revision 1.68 2007/01/26 12:33:57 amodigli
81  * added function for common QC
82  *
83  * Revision 1.67 2007/01/17 13:27:09 jmlarsen
84  * Added BITPIX accessor function
85  *
86  * Revision 1.66 2007/01/10 12:39:07 jmlarsen
87  * Unified two get_plate_id functions
88  *
89  * Revision 1.65 2006/12/27 13:55:29 amodigli
90  * added flames_pfits_get_plate_id and some FLAMES_ defines for FIBER mode
91  *
92  * Revision 1.64 2006/12/11 12:35:03 jmlarsen
93  * Fixed QC bugs
94  *
95  * Revision 1.63 2006/12/07 08:25:09 jmlarsen
96  * Added uves_pfits_get_readspeed
97  *
98  * Revision 1.62 2006/12/01 12:27:23 jmlarsen
99  * Factored out FLAMES plate-id code
100  *
101  * Revision 1.61 2006/10/24 14:05:46 jmlarsen
102  * Added OBSPLATE
103  *
104  * Revision 1.60 2006/10/10 11:29:24 jmlarsen
105  * Added code to propagate TM-START
106  *
107  * Revision 1.59 2006/10/05 06:50:23 jmlarsen
108  * Renamed function format_is_new -> uves_format_is_new
109  *
110  * Revision 1.58 2006/10/04 10:55:33 jmlarsen
111  * Added telescope lat-/longitude accessor functions
112  *
113  * Revision 1.57 2006/09/27 13:14:17 jmlarsen
114  * Added accessor functions for RA/DEC
115  *
116  * Revision 1.56 2006/09/20 10:57:36 jmlarsen
117  * Propagate DATAMEAN/DATAMED/DATARMS if present
118  *
119  * Revision 1.55 2006/09/19 14:32:15 jmlarsen
120  * Minor doc. update
121  *
122  * Revision 1.54 2006/09/19 06:42:49 jmlarsen
123  * Added keywords
124  *
125  * Revision 1.53 2006/08/24 11:37:14 jmlarsen
126  * Write recipe start/stop time to header
127  *
128  * Revision 1.52 2006/08/18 10:14:04 jmlarsen
129  * Use legal FITS keywords for TRACEID/WINDOW/FABSORD/LABSORD
130  *
131  * Revision 1.51 2006/08/17 13:56:53 jmlarsen
132  * Reduced max line length
133  *
134  * Revision 1.50 2006/08/16 14:24:03 jmlarsen
135  * Renamed UIT QC keyword
136  *
137  * Revision 1.49 2006/08/09 14:23:19 jmlarsen
138  * Removed unused function argument
139  *
140  * Revision 1.48 2006/08/07 11:32:14 jmlarsen
141  * Added comment
142  *
143  * Revision 1.47 2006/08/04 15:11:54 amodigli
144  * ESO INS DET1 UIT-->ESO DET WIN1 UIT1
145  *
146  * Revision 1.46 2006/07/31 06:29:26 amodigli
147  * added QC on stability test
148  *
149  * Revision 1.45 2006/07/14 12:24:49 jmlarsen
150  * Added conad, target name
151  *
152  * Revision 1.44 2006/06/22 08:54:28 jmlarsen
153  * Use proper keyword to read number of predicted orders
154  *
155  * Revision 1.43 2006/06/13 11:58:55 jmlarsen
156  * Bugfix: Use proper chipname keyword for REDL chip
157  *
158  * Revision 1.42 2006/06/01 14:43:17 jmlarsen
159  * Added missing documentation
160  *
161  * Revision 1.41 2006/06/01 14:22:48 amodigli
162  * moved format_is_new to c module and made it static
163  *
164  * Revision 1.40 2006/05/31 09:26:40 amodigli
165  * fixed some problem dumping QC log
166  *
167  * Revision 1.39 2006/05/19 13:07:20 amodigli
168  * added uves_pfits_get_slit3_x1encoder
169  *
170  * Revision 1.38 2006/05/09 15:43:13 amodigli
171  * added useful key/functions
172  *
173  * Revision 1.37 2006/04/26 12:25:20 amodigli
174  * fixed a problem with ARCFILE keyword
175  *
176  * Revision 1.36 2006/04/25 14:58:48 amodigli
177  * added paf creation functionalities
178  *
179  * Revision 1.35 2006/04/20 10:48:58 amodigli
180  * added uves_pfits_get_tpl_start
181  *
182  * Revision 1.34 2006/02/21 14:26:54 jmlarsen
183  * Minor changes
184  *
185  * Revision 1.33 2006/01/17 13:05:58 jmlarsen
186  * Changed line table trace id keyword
187  *
188  * Revision 1.32 2005/12/19 16:17:56 jmlarsen
189  * Replaced bool -> int
190  *
191  */
192 
193 #ifndef UVES_PFITS_H
194 #define UVES_PFITS_H
195 
196 /*----------------------------------------------------------------------------*/
201 /*----------------------------------------------------------------------------*/
202 
203 /*-----------------------------------------------------------------------------
204  Includes
205  -----------------------------------------------------------------------------*/
206 
207 #include <uves_propertylist.h>
208 #include <uves_chip.h>
209 #include <cpl.h>
210 
211 
212 /*-----------------------------------------------------------------------------
213  Defines
214  -----------------------------------------------------------------------------*/
215 
216 /*
217  * Recipe DRS id
218  */
219 
220 #define UVES_DRS_ID "ESO PRO REC1 DRS ID"
221 
222 /*
223  * Pre- and overscan keywords
224  */
225 /* Use detector prefix 'ESO DET OUT4' for REDL chips, old format. Otherwise 'ESO DET OUT1' */
226 
227 #define UVES_PRESCANX(new_format, chip) \
228  ((!(new_format) && (chip) == UVES_CHIP_REDL) ? "ESO DET OUT4 PRSCX" : "ESO DET OUT1 PRSCX")
229 #define UVES_PRESCANY(new_format, chip) \
230  ((!(new_format) && (chip) == UVES_CHIP_REDL) ? "ESO DET OUT4 PRSCY" : "ESO DET OUT1 PRSCY")
231 
232 #define UVES_OVRSCANX(new_format, chip) \
233  ((!(new_format) && (chip) == UVES_CHIP_REDL) ? "ESO DET OUT4 OVSCX" : "ESO DET OUT1 OVSCX")
234 #define UVES_OVRSCANY(new_format, chip) \
235  ((!(new_format) && (chip) == UVES_CHIP_REDL) ? "ESO DET OUT4 OVSCY" : "ESO DET OUT1 OVSCY")
236 
237 /*
238  * Readout noise, gain
239  */
240 
241 #define UVES_RON(new_format, chip) \
242  ((!(new_format) && (chip) == UVES_CHIP_REDL) ? "ESO DET OUT4 RON" : "ESO DET OUT1 RON")
243 #define UVES_GAIN(new_format, chip) \
244  ((!(new_format) && (chip) == UVES_CHIP_REDL) ? "ESO DET OUT4 GAIN" : "ESO DET OUT1 GAIN")
245 #define UVES_CONAD(new_format, chip) \
246  ((!(new_format) && (chip) == UVES_CHIP_REDL) ? "ESO DET OUT4 CONAD" : "ESO DET OUT1 CONAD")
247 
248 
249 #define UVES_NX(new_format, chip) \
250  ((!(new_format) && (chip) == UVES_CHIP_REDL) ? "ESO DET OUT4 NX" : "ESO DET OUT1 NX")
251 #define UVES_NY(new_format, chip) \
252  ((!(new_format) && (chip) == UVES_CHIP_REDL) ? "ESO DET OUT4 NY" : "ESO DET OUT1 NY")
253 
254 /*
255  * Exposure time
256  */
257 #define UVES_EXPTIME "EXPTIME"
258 
259 /*
260  * User defined subintegration time
261  */
262 #define UVES_UIT(new_format) "ESO DET WIN1 UIT1"
263 /*#define UVES_QC_UIT(new_format, chip) \
264  ((!(new_format) && (chip) == UVES_CHIP_REDL) ? "ESO DET4 OUT4 UIT1" : "ESO DET1 OUT1 UIT1")
265 */
266 
267 /* This is probably what we want to do (use the same keyword name for reading/writing):
268  #define UVES_QC_UIT(new_format, chip) \
269  ((chip) == UVES_CHIP_REDL ? "ESO DET WIN4 UIT1" : "ESO DET WIN1 UIT1")
270 
271  but we do like MIDAS:
272 
273  MIDAS uses the name ESO.DET1.WIN1.UIT1 when writing to the product header
274 */
275 #define UVES_QC_UIT(new_format, chip) \
276  ((chip) == UVES_CHIP_REDL ? "ESO INS DET4 UIT" : "ESO INS DET1 UIT")
277 
278 
279 
280 /*
281  * Start time template
282  */
283 #define UVES_TPL_START "ESO TPL START"
284 #define UVES_TMSTART "TM-START" /* MIDAS internal? */
285 
286 
287 /*
288  * Airmass
289  */
290 #define UVES_AIRMASS_START "ESO TEL AIRM START"
291 #define UVES_AIRMASS_END "ESO TEL AIRM END"
292 #define UVES_AIRMASS "AIRMASS"
293 
294 /*
295  * Image type
296  */
297 #define UVES_IMAGETYP "IMAGETYP"
298 
299 /*
300  * Observation time
301  */
302 #define UVES_UTC "UTC"
303 #define UVES_UT "UT"
304 #define UVES_ST "ST"
305 
306 /*
307  * latitude/longitude
308  */
309 #define UVES_GEOLAT "ESO TEL GEOLAT"
310 #define UVES_GEOLON "ESO TEL GEOLON"
311 
312 /*
313  * Extension name (new format)
314  */
315 #define UVES_EXTNAME "EXTNAME"
316 
317 /*
318  * Observation date
319  */
320 #define UVES_MJDOBS "MJD-OBS"
321 #define UVES_DATE "DATE"
322 
323 /* Observer id */
324 #define UVES_OS_EXPOI "OS-EXPOI"
325 
326 /*
327  * Object coordinates
328  */
329 #define UVES_RA "RA"
330 #define UVES_DEC "DEC"
331 
332 /*
333  * Object name
334  */
335 #define UVES_TARG_NAME "ESO OBS TARG NAME"
336 
337 /*
338  * Binning factors
339  */
340 
341 #define UVES_BINX "ESO DET WIN1 BINX"
342 #define UVES_BINY "ESO DET WIN1 BINY"
343 
344 /*
345  * Arcseconds per pixel
346  */
347 #define UVES_PIXELSCALE "ESO INS PIXSCALE"
348 
349 /*
350  * Encoder steps
351  */
352 
353 #define UVES_ENCODER_REF1 "ESO INS SLIT3 X1ENC"
354 #define UVES_ENCODER_REF2 "ESO INS SLIT3 X2ENC"
355 
356 /*
357  * Extra keys for bias and dark noise values
358  */
359 #define UVES_BNOISE "ESO BNOISE"
360 #define UVES_DNOISE "ESO DNOISE"
361 #define UVES_FNOISE "ESO FNOISE"
362 #define UVES_DTIME "ESO DTIME"
363 
364 
365 /*
366  * Slit name, length/width (arcseconds)
367  */
368 #define UVES_SLIT1NAME "ESO INS SLIT1 NAME"
369 #define UVES_ARM(chip) (((chip) == UVES_CHIP_BLUE) ? "BLUE" : "RED")
370 #define UVES_ARMID(chip) (((chip) == UVES_CHIP_BLUE) ? "b" : "r")
371 #define UVES_DETECTOR(chip) (((chip) == UVES_CHIP_BLUE) ? "EEV" : "MIT-LL")
372 #define UVES_SLITLENGTH(chip) \
373  (((chip) == UVES_CHIP_BLUE) ? "ESO INS SLIT2 LEN" : "ESO INS SLIT3 LEN")
374 #define UVES_SLITWIDTH(chip) \
375  (((chip) == UVES_CHIP_BLUE) ? "ESO INS SLIT2 WID" : "ESO INS SLIT3 WID")
376 
377 /*
378  * Grating
379  */
380 
381 #define UVES_GRATWLEN(chip) \
382  (((chip) == UVES_CHIP_BLUE) ? "ESO INS GRAT1 WLEN" : "ESO INS GRAT2 WLEN")
383 #define UVES_GRATID(chip) \
384  (((chip) == UVES_CHIP_BLUE) ? "ESO INS GRAT1 ID" : "ESO INS GRAT2 ID")
385 #define UVES_GRATNAME(chip) \
386  (((chip) == UVES_CHIP_BLUE) ? "ESO INS GRAT1 NAME" : "ESO INS GRAT2 NAME")
387 
388 /*
389  BLUE,old CHIP1 NAME
390  BLUE,new CHIP1 NAME
391  REDL,old CHIP2 NAME
392  REDL,new CHIP2 NAME
393  REDU,old CHIP1 NAME
394  REDU,new CHIP1 NAME
395 */
396 #define UVES_CHIP_NAME(chip) \
397  (((chip) == UVES_CHIP_REDL) ? "ESO DET CHIP2 NAME" : "ESO DET CHIP1 NAME")
398 #define UVES_CHIP_ID(chip) \
399  (((chip) == UVES_CHIP_REDL) ? "ESO DET CHIP2 ID" : "ESO DET CHIP1 ID")
400 
401 /* Is this correct? Do we really want to use different
402  FITS keywords when reading inputs and writing QC files?
403 
404  No, this is wrong:
405 
406 #define UVES_QC_CHIP_NAME(chip) \
407  (((chip) == UVES_CHIP_BLUE) ? "ESO DET CHIP1 NAME" : "ESO DET CHIP2 NAME")
408 #define UVES_QC_CHIP_ID(chip) \
409  (((chip) == UVES_CHIP_BLUE) ? "ESO DET CHIP1 ID" : "ESO DET CHIP2 ID")
410 #define UVES_QC_CHIP_VAL(chip) \
411  (((chip) == UVES_CHIP_REDU) ? "MIT" : "EEV")
412 */
413 
414 /*
415  *
416  */
417 #define UVES_CCDID "ESO DET ID"
418 #define UVES_PRESSURE "ESO INS SENS26 MEAN"
419 #define UVES_TEMPCAM(chip) \
420  (((chip) == UVES_CHIP_BLUE) ? "ESO INS TEMP1 MEAN" : "ESO INS TEMP2 MEAN")
421 
422 #define UVES_HUMIDITY "ESO INS TEMP31 MEAN"
423 
424 /*
425  * Keyword in DRS table for predicted number of orders
426  */
427 
428 /* #define UVES_ORD_PRED "ESO PRO QC ORDEF ORD PRED" */
429 #define UVES_ORD_PRED "NBORDI"
430 
431 #define UVES_INSMODE "ESO INS MODE"
432 #define UVES_INSPATH "ESO INS PATH"
433 
434 
435 /* Images statistics */
436 #define UVES_PRO_DATAAVG "ESO PRO DATAAVG"
437 #define UVES_PRO_DATARMS "ESO PRO DATARMS"
438 #define UVES_PRO_DATAMED "ESO PRO DATAMED"
439 #define UVES_DATAMIN "DATAMIN"
440 #define UVES_DATAMAX "DATAMAX"
441 #define UVES_DATAMEAN "DATAMEAN"
442 #define UVES_DATAMED "DATAMED"
443 #define UVES_DATARMS "DATARMS"
444 
445 /* Object */
446 #define UVES_OBJECT "OBJECT"
447 
448 /* Line table trace and window ID */
449 #define UVES_TRACEID "TRACEID"
450 #define UVES_TRACE_OFFSET "OFFSET"
451 #define UVES_WINDOWNUMBER "WINDOW"
452 
453 /* Line table order numbers */
454 #define UVES_FIRSTABSORDER "FABSORD"
455 #define UVES_LASTABSORDER "LABSORD"
456 
457 /* Image FITS keywords */
458 #define UVES_BUNIT "BUNIT"
459 #define UVES_BSCALE "BSCALE"
460 #define UVES_TUNIT "TUNIT"
461 
462 #define UVES_CTYPE1 "CTYPE1"
463 #define UVES_CTYPE2 "CTYPE2"
464 #define UVES_CUNIT1 "CUNIT1"
465 #define UVES_CUNIT2 "CUNIT2"
466 #define UVES_CRVAL1 "CRVAL1"
467 #define UVES_CRVAL2 "CRVAL2"
468 #define UVES_CRPIX1 "CRPIX1"
469 #define UVES_CRPIX2 "CRPIX2"
470 #define UVES_CDELT1 "CDELT1"
471 #define UVES_CDELT2 "CDELT2"
472 
473 #define UVES_BITPIX "BITPIX"
474 #define UVES_NAXIS "NAXIS"
475 #define UVES_NAXIS1 "NAXIS1"
476 #define UVES_NAXIS2 "NAXIS2"
477 #define UVES_STARTX "STARTX"
478 #define UVES_STARTY "STARTY"
479 
480 #define UVES_OUT1NX "ESO DET OUT1 NX"
481 #define UVES_OUT1NY "ESO DET OUT1 NY"
482 #define UVES_OUT4NX "ESO DET OUT4 NX"
483 #define UVES_OUT4NY "ESO DET OUT4 NY"
484 
485 #define UVES_READ_SPEED "ESO DET READ SPEED"
486 
487 /* 2d extraction slit length */
488 #define UVES_HS "HS"
489 
490 /* Rebinned spectrum wavelength offset */
491 #define UVES_WSTART "WSTART"
492 #define UVES_WEND "WEND"
493 
494 /* Number of input raw frames */
495 #define UVES_DATANCOM "ESO PRO DATANCOM"
496 #define UVES_DATANCOM_OLD "ESO PRO QC DATANCOM"
497 
498 /* QC - Bad pixel corrected */
499 #define UVES_QC_BADPIXCORR "ESO QC BADPIX CORR"
500 
501 /* Reduction level */
502 #define UVES_REDLEVEL "ESO PRO REDLEVEL"
503 
504 /*
505  * Note : Currently we always write to the RECi keyword
506  * with i = 1, like the cpl_setup_product_header
507  * function. Maybe this needs to be generalized
508  * later (if a product of one recipe is further processed
509  * by another recipe).
510  */
511 #define UVES_STATUS "ESO PRO REC1 STATUS"
512 
513 #define UVES_START "ESO PRO REC1 START"
514 #define UVES_STOP "ESO PRO REC1 STOP"
515 
516 #define UVES_DPR_TECH "ESO DPR TECH"
517 #define UVES_DPR_TYPE "ESO DPR TYPE"
518 #define UVES_DPR_CATG "ESO DPR CATG"
519 #define UVES_OCS_SIMCAL "ESO OCS SIMCAL"
520 
521 /*
522  * FLAMES
523  */
524 
525 #define FLAMES_NFLATS "NFLATS"
526 
527 #define FLAMES_OBS_PLATE_ID "ESO INS SLIT3 PLATE"
528 #define FLAMES_INS_SHUT09 "ESO INS SHUT9 ST"
529 #define FLAMES_INS_SHUT10 "ESO INS SHUT10 ST"
530 #define FLAMES_PLATEID "ESO INS1 TUMB POS"
531 #define FLAMES_NEWPLATEID "ESO INS OBSPLATE"
532 #define FLAMES_DIT "ESO DET WIN1 DIT1"
533 #define FLAMES_CCFPOSMAX "ESO QC CCF POSMAX"
534 
537 /*-----------------------------------------------------------------------------
538  Functions prototypes
539 -----------------------------------------------------------------------------*/
540 bool uves_format_is_new(const uves_propertylist * plist);
541 void
542 uves_pfits_set_history_val(uves_propertylist *plist, const char *name, const char *format, ...)
543 #ifdef __GNUC__
544  __attribute__((format (printf, 3, 4)))
545 #endif
546  ;
547 
548 
549 bool uves_ccd_is_new(const uves_propertylist * plist);
552 double uves_pfits_get_startx(const uves_propertylist * plist);
553 double uves_pfits_get_starty(const uves_propertylist * plist);
554 
556 char uves_pfits_get_chipchoice(const uves_propertylist * plist);
557 const char * uves_pfits_get_origfile(const uves_propertylist * plist);
558 const char * uves_pfits_get_badpxframe(const uves_propertylist * plist);
559 const char * uves_chop_eso_prefix(const char* key);
560 const char * uves_pfits_get_rec1raw1name(const uves_propertylist * plist);
561 const char * uves_pfits_get_arcfile(const uves_propertylist * plist);
562 const char * uves_pfits_get_pipefile(const uves_propertylist * plist);
563 const char * uves_pfits_get_templateid(const uves_propertylist * plist);
564 const char * uves_pfits_get_pro_catg(const uves_propertylist * plist) ;
565 const char * uves_pfits_get_dpr_catg(const uves_propertylist * plist) ;
566 const char * uves_pfits_get_dpr_tech(const uves_propertylist * plist) ;
567 const char * uves_pfits_get_dpr_type(const uves_propertylist * plist) ;
568 void uves_pfits_set_dpr_catg(uves_propertylist * plist, const char *);
569 void uves_pfits_set_dpr_tech(uves_propertylist * plist, const char *);
570 void uves_pfits_set_dpr_type(uves_propertylist * plist, const char *);
571 const char * uves_pfits_get_date_obs(const uves_propertylist * plist) ;
572 
573 const char* uves_pfits_get_chipid(const uves_propertylist * plist, enum uves_chip chip);
574 const char* uves_pfits_get_chip_name(const uves_propertylist * plist, enum uves_chip chip);
575 const char *uves_pfits_get_drs_id(const uves_propertylist * plist);
576 const char *uves_pfits_get_tpl_start(const uves_propertylist * plist);
577 const char* uves_pfits_get_insmode(const uves_propertylist * plist);
578 const char* uves_pfits_get_inspath(const uves_propertylist * plist);
579 const char *uves_pfits_get_targ_name(const uves_propertylist * plist);
581 void uves_pfits_set_ocs_simcal(uves_propertylist * plist, int simcal);
582 
583 int uves_pfits_get_prescanx(const uves_propertylist * plist, enum uves_chip chip);
584 int uves_pfits_get_ovrscanx(const uves_propertylist * plist, enum uves_chip chip);
585 int uves_pfits_get_prescany(const uves_propertylist * plist, enum uves_chip chip);
586 int uves_pfits_get_ovrscany(const uves_propertylist * plist, enum uves_chip chip);
587 
588 int uves_pfits_get_ordpred(const uves_propertylist * plist);
589 int uves_pfits_get_binx(const uves_propertylist * plist);
590 int uves_pfits_get_biny(const uves_propertylist * plist);
591 double uves_pfits_get_mjdobs(const uves_propertylist * plist);
592 double uves_pfits_get_utc(const uves_propertylist * plist);
593 double uves_pfits_get_ra(const uves_propertylist * plist);
594 double uves_pfits_get_dec(const uves_propertylist * plist);
595 double uves_pfits_get_geolon(const uves_propertylist * plist);
596 double uves_pfits_get_geolat(const uves_propertylist * plist);
597 double uves_pfits_get_ron_adu(const uves_propertylist * plist, enum uves_chip chip);
598 double uves_pfits_get_ambipress(const uves_propertylist * plist);
599 double uves_pfits_get_gain(const uves_propertylist * plist, enum uves_chip chip);
600 double uves_pfits_get_conad(const uves_propertylist * plist, enum uves_chip chip);
601 double uves_pfits_get_exptime(const uves_propertylist * plist);
602 double uves_pfits_get_uit(const uves_propertylist * plist);
603 double uves_pfits_get_airmass_start(const uves_propertylist * plist);
604 double uves_pfits_get_airmass_end(const uves_propertylist * plist);
605 cpl_error_code uves_pfits_set_exptime(uves_propertylist *plist, double exptime);
606 void uves_pfits_set_dec(uves_propertylist *plist, double dec);
607 void uves_pfits_set_ra(uves_propertylist *plist, double ra);
608 void uves_pfits_set_firstabsorder(uves_propertylist *plist, int first_abs_order);
610 void uves_pfits_set_lastabsorder(uves_propertylist *plist, int last_abs_order);
612 double uves_pfits_get_offset(const uves_propertylist * plist);
613 void uves_pfits_set_traceid(uves_propertylist * plist, int trace_id);
614 void uves_pfits_set_offset(uves_propertylist * plist, double trace_offset);
615 int uves_pfits_get_traceid(const uves_propertylist * plist);
616 void uves_pfits_set_windownumber(uves_propertylist * plist, int window_number);
618 cpl_error_code uves_pfits_set_data_average(uves_propertylist * plist, double average);
619 cpl_error_code uves_pfits_set_data_stddev (uves_propertylist * plist, double stddev);
620 cpl_error_code uves_pfits_set_data_median (uves_propertylist * plist, double median);
621 cpl_error_code uves_pfits_set_data_min (uves_propertylist * plist, double min);
622 cpl_error_code uves_pfits_set_data_max (uves_propertylist * plist, double max);
623 cpl_error_code uves_pfits_set_object(uves_propertylist * plist, const char *object);
624 cpl_error_code uves_pfits_set_ordpred(uves_propertylist *plist, int nord);
625 cpl_error_code uves_pfits_set_badpixcorr(uves_propertylist * plist, const char *corr);
626 cpl_error_code uves_pfits_set_redlevel(uves_propertylist * plist, const char *redlevel);
627 cpl_error_code uves_pfits_set_status(uves_propertylist * plist, const char *status);
628 cpl_error_code uves_pfits_set_starttime(uves_propertylist * plist, const char *start_time);
629 cpl_error_code uves_pfits_set_stoptime(uves_propertylist * plist, const char *stop_time);
630 int uves_pfits_get_datancom(const uves_propertylist * plist);
631 const char* uves_pfits_get_ccdid(const uves_propertylist * plist);
632 double uves_pfits_get_pressure(const uves_propertylist * plist);
633 double uves_pfits_get_tempcam(const uves_propertylist * plist,enum uves_chip chip);
634 double uves_pfits_get_humidity(const uves_propertylist * plist);
635 double uves_pfits_get_slitlength_pixels(const uves_propertylist * plist, enum uves_chip chip);
636 double uves_pfits_get_slitwidth(const uves_propertylist * plist, enum uves_chip chip);
637 double uves_pfits_get_slitlength(const uves_propertylist * plist, enum uves_chip chip);
638 double uves_pfits_get_gratwlen(const uves_propertylist * plist, enum uves_chip chip);
639 const char* uves_pfits_get_gratid(const uves_propertylist * plist, enum uves_chip chip);
640 const char* uves_pfits_get_gratname(const uves_propertylist * plist, enum uves_chip chip);
641 const char* uves_pfits_get_readspeed(const uves_propertylist * plist);
642 
643 const char* uves_pfits_get_slit1_name(const uves_propertylist * plist);
644 const char* uves_pfits_get_bunit(const uves_propertylist * plist);
645 double uves_pfits_get_bscale(const uves_propertylist * plist);
646 const char* uves_pfits_get_ctype1(const uves_propertylist * plist);
647 const char* uves_pfits_get_ctype2(const uves_propertylist * plist);
648 const char* uves_pfits_get_cunit1(const uves_propertylist * plist);
649 const char* uves_pfits_get_cunit2(const uves_propertylist * plist);
650 int uves_pfits_get_bitpix(const uves_propertylist * plist);
651 int uves_pfits_get_naxis(const uves_propertylist * plist);
652 int uves_pfits_get_naxis1(const uves_propertylist * plist);
653 int uves_pfits_get_naxis2(const uves_propertylist * plist);
654 int uves_pfits_get_out1nx(const uves_propertylist * plist);
655 int uves_pfits_get_out1ny(const uves_propertylist * plist);
656 int uves_pfits_get_out4nx(const uves_propertylist * plist);
657 int uves_pfits_get_out4ny(const uves_propertylist * plist);
658 int uves_pfits_get_nx(const uves_propertylist * plist,enum uves_chip chip);
659 int uves_pfits_get_ny(const uves_propertylist * plist,enum uves_chip chip);
660 
661 double uves_pfits_get_crval1(const uves_propertylist * plist);
662 double uves_pfits_get_crval2(const uves_propertylist * plist);
663 double uves_pfits_get_crpix1(const uves_propertylist * plist);
664 double uves_pfits_get_crpix2(const uves_propertylist * plist);
665 double uves_pfits_get_cdelt1(const uves_propertylist * plist);
666 double uves_pfits_get_cdelt2(const uves_propertylist * plist);
667 double uves_pfits_get_wstart(const uves_propertylist * plist, int order);
668 double uves_pfits_get_wend(const uves_propertylist * plist, int order);
669 cpl_error_code uves_pfits_set_bunit(uves_propertylist * plist, const char *bunit);
670 cpl_error_code uves_pfits_set_bscale(uves_propertylist * plist, const double bscale);
671 cpl_error_code uves_pfits_set_ctype1(uves_propertylist * plist, const char *ctype1);
672 cpl_error_code uves_pfits_set_ctype2(uves_propertylist * plist, const char *ctype2);
673 cpl_error_code uves_pfits_set_cunit1(uves_propertylist * plist, const char *ctype1);
674 cpl_error_code uves_pfits_set_cunit2(uves_propertylist * plist, const char *ctype2);
675 cpl_error_code uves_pfits_set_crval1(uves_propertylist * plist, double crval1);
676 cpl_error_code uves_pfits_set_crval2(uves_propertylist * plist, double crval2);
677 cpl_error_code uves_pfits_set_crpix1(uves_propertylist * plist, double crpix1);
678 cpl_error_code uves_pfits_set_crpix2(uves_propertylist * plist, double crpix2);
679 cpl_error_code uves_pfits_set_cdelt1(uves_propertylist * plist, double cdelt1);
680 cpl_error_code uves_pfits_set_cdelt2(uves_propertylist * plist, double cdelt2);
681 cpl_error_code uves_pfits_set_wstart(uves_propertylist * plist, int order, double wstart);
682 cpl_error_code uves_pfits_set_wend(uves_propertylist * plist, int order, double wend);
683 
684 cpl_error_code uves_pfits_set_tunit_no(uves_propertylist * plist, int col_no, const char* value);
685 cpl_error_code uves_pfits_set_bunit_no(uves_propertylist * plist, int axis_no, const char* value);
686 
687 
688 void uves_pfits_set_hs(uves_propertylist * plist, int hs);
689 void uves_flames_pfits_set_ccfposmax(uves_propertylist *plist, double ccfposmax);
690 double uves_flames_pfits_get_dit(const uves_propertylist *raw_header);
691 int uves_flames_pfits_get_plateid(const uves_propertylist *raw_header);
692 void uves_flames_pfits_set_newplateid(uves_propertylist * plist, int plate_no);
694 const char * uves_flames_pfits_get_ident(const uves_propertylist * plist);
695 const char * uves_flames_pfits_get_object(const uves_propertylist * plist);
696 double uves_pfits_get_pixelscale(const uves_propertylist *plist);
697 
698 #endif
699