GRAVI Pipeline Reference Manual  1.2.3
gravi_data.h
1 /* $Id: gravi_data.h, 2011/04/07 11:22:28 nazouaoui $
2  *
3  * This file is part of the ESO Common Pipeline Library
4  * Copyright (C) 2001-2008 European Southern Observatory
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19  */
20 
21 #ifndef GRAVI_DATA_H_
22 #define GRAVI_DATA_H_
23 
24 CPL_BEGIN_DECLS
25 
26 /*-----------------------------------------------------------------------------
27  Includes
28  ----------------------------------------------------------------------------*/
29 
30 #include <cpl.h>
31 #include <stdio.h>
32 #include <string.h>
33 
34 /*-----------------------------------------------------------------------------
35  New types
36  ----------------------------------------------------------------------------*/
37 
38 typedef struct _gravi_data_ gravi_data;
39 
40 /*-----------------------------------------------------------------------------
41  Defines
42  ----------------------------------------------------------------------------*/
43 
44 #define gravi_data_get_oi_wave(data, type, pol, npol) gravi_data_get_oi_table (data, GRAVI_OI_WAVELENGTH_EXT, GRAVI_INSNAME(type,pol,npol))
45 #define gravi_data_get_oi_vis(data, type, pol, npol) gravi_data_get_oi_table (data, GRAVI_OI_VIS_EXT, GRAVI_INSNAME(type,pol,npol))
46 #define gravi_data_get_oi_vis2(data, type, pol, npol) gravi_data_get_oi_table (data, GRAVI_OI_VIS2_EXT, GRAVI_INSNAME(type,pol,npol))
47 #define gravi_data_get_oi_t3(data, type, pol, npol) gravi_data_get_oi_table (data, GRAVI_OI_T3_EXT, GRAVI_INSNAME(type,pol,npol))
48 #define gravi_data_get_oi_flux(data, type, pol, npol) gravi_data_get_oi_table (data, GRAVI_OI_FLUX_EXT, GRAVI_INSNAME(type,pol,npol))
49 
50 #define gravi_data_get_wave_fibre(data, type) gravi_data_get_table (data, type==GRAVI_SC?GRAVI_WAVE_FIBRE_SC_EXT:GRAVI_WAVE_FIBRE_FT_EXT)
51 #define gravi_data_get_wave_fibre_plist(data, type) gravi_data_get_plist (data, type==GRAVI_SC?GRAVI_WAVE_FIBRE_SC_EXT:GRAVI_WAVE_FIBRE_FT_EXT)
52 #define gravi_data_get_wave_data(data, type) gravi_data_get_table (data, type==GRAVI_SC?GRAVI_WAVE_DATA_SC_EXT:GRAVI_WAVE_DATA_FT_EXT)
53 #define gravi_data_get_wave_data_plist(data, type) gravi_data_get_plist (data, type==GRAVI_SC?GRAVI_WAVE_DATA_SC_EXT:GRAVI_WAVE_DATA_FT_EXT)
54 #define gravi_data_has_wave(data, type) gravi_data_has_extension (data, type==GRAVI_SC?GRAVI_WAVE_DATA_SC_EXT:GRAVI_WAVE_DATA_FT_EXT)
55 
56 #define gravi_data_get_p2vm_data(data, type) gravi_data_get_table (data, type==GRAVI_SC?GRAVI_P2VM_DATA_SC_EXT:GRAVI_P2VM_DATA_FT_EXT)
57 #define gravi_data_has_p2vm(data, type) gravi_data_has_extension (data, type==GRAVI_SC?GRAVI_P2VM_DATA_SC_EXT:GRAVI_P2VM_DATA_FT_EXT)
58 
59 #define gravi_data_get_imaging_detector(data, type) gravi_data_get_table (data, type==GRAVI_SC?GRAVI_IMAGING_DETECTOR_SC_EXT:GRAVI_IMAGING_DETECTOR_FT_EXT)
60 #define gravi_data_has_detector(data, type) gravi_data_has_extension (data, type==GRAVI_SC?GRAVI_IMAGING_DETECTOR_SC_EXT:GRAVI_IMAGING_DETECTOR_FT_EXT)
61 
62 #define gravi_data_get_spectrum_data(data, type) gravi_data_get_table (data, type==GRAVI_SC?GRAVI_SPECTRUM_DATA_SC_EXT:GRAVI_SPECTRUM_DATA_FT_EXT)
63 #define gravi_data_get_spectrum_data_plist(data, type) gravi_data_get_plist (data, type==GRAVI_SC?GRAVI_SPECTRUM_DATA_SC_EXT:GRAVI_SPECTRUM_DATA_FT_EXT)
64 #define gravi_data_has_spectrum(data, type) gravi_data_has_extension (data, type==GRAVI_SC?GRAVI_SPECTRUM_DATA_SC_EXT:GRAVI_SPECTRUM_DATA_FT_EXT)
65 
66 #define gravi_data_get_profile_plist(data) gravi_data_get_plist (data, GRAVI_PROFILE_DATA_EXT)
67 
68 #define gravi_data_get_oi_wave_plist(data, type, pol, npol) gravi_data_get_oi_plist (data, GRAVI_OI_WAVELENGTH_EXT, GRAVI_INSNAME(type,pol,npol))
69 #define gravi_data_get_oi_vis_plist(data, type, pol, npol) gravi_data_get_oi_plist (data, GRAVI_OI_VIS_EXT, GRAVI_INSNAME(type,pol,npol))
70 #define gravi_data_get_oi_vis2_plist(data, type, pol, npol) gravi_data_get_oi_plist (data, GRAVI_OI_VIS2_EXT, GRAVI_INSNAME(type,pol,npol))
71 #define gravi_data_get_oi_t3_plist(data, type, pol, npol) gravi_data_get_oi_plist (data, GRAVI_OI_T3_EXT, GRAVI_INSNAME(type,pol,npol))
72 #define gravi_data_get_oi_flux_plist(data, type, pol, npol) gravi_data_get_oi_plist (data, GRAVI_OI_FLUX_EXT, GRAVI_INSNAME(type,pol,npol))
73 
74 #define gravi_data_get_header(data) gravi_data_get_plist (data, GRAVI_PRIMARY_HDR_EXT)
75 #define gravi_data_get_extname(data,ext) gravi_pfits_get_extname (gravi_data_get_plist_x(data, ext))
76 #define gravi_data_get_qc(data) gravi_plist_get_qc (gravi_data_get_plist(data, GRAVI_PRIMARY_HDR_EXT) )
77 #define gravi_data_is_internal(data) gravi_pfits_is_calib (gravi_data_get_plist(data, GRAVI_PRIMARY_HDR_EXT))
78 #define gravi_data_get_img(data,ext) cpl_imagelist_get (gravi_data_get_cube (data,ext), 0)
79 #define gravi_data_get_spec_res(data) gravi_pfits_get_spec_res (gravi_data_get_plist (data, GRAVI_PRIMARY_HDR_EXT))
80 
81 /*----------------------------------------------------------------------------
82  Public prototypes
83  ----------------------------------------------------------------------------*/
84 
85 /*
86  * gravi data constructors and destructor
87  */
88 
89 gravi_data * gravi_data_new(int);
90 gravi_data * gravi_data_duplicate(const gravi_data *);
91 cpl_error_code gravi_data_append (gravi_data * first, const gravi_data * second, int force);
92 void gravi_data_delete(gravi_data *);
93 
94 /*
95  * Load and save gravi data
96  */
97 
98 gravi_data * gravi_data_load(const char * filename);
99 gravi_data * gravi_data_load_ext(const char * filename,
100  const char * extensions_regexp);
101 gravi_data * gravi_data_load_frame (cpl_frame * frame, cpl_frameset * used_frameset);
102 int gravi_data_patch (gravi_data * file_to_patch, cpl_frameset * patch_frameset);
103 gravi_data * gravi_data_load_rawframe (cpl_frame * frame, cpl_frameset * used_frameset);
104 gravi_data * gravi_data_load_rawframe_ext (cpl_frame * frame,
105  cpl_frameset * used_frameset,
106  char * extensions_regexp);
107 
108 cpl_error_code gravi_data_save_new (gravi_data * self,
109  cpl_frameset * allframes,
110  const char * filename,
111  const char * suffix,
112  const cpl_parameterlist * parlist,
113  cpl_frameset * usedframes,
114  cpl_frame * frame,
115  const char * recipe,
116  cpl_propertylist * applist,
117  const char * proCatg);
118 
119 cpl_error_code gravi_data_save_data(gravi_data * ,
120  const char * ,
121  unsigned );
122 
123 /*
124  * Element access
125  */
126 
127 int gravi_data_has_extension (gravi_data * , const char * );
128 int gravi_data_has_type (gravi_data * self, const char * type);
129 int gravi_data_get_size (const gravi_data *);
130 int gravi_data_get_size_table (const gravi_data *);
131 
132 cpl_propertylist * gravi_data_get_plist(gravi_data *, const char *);
133 cpl_propertylist * gravi_data_get_plist_x(gravi_data* , int );
134 
135 cpl_table * gravi_data_get_table_x(gravi_data* , int );
136 cpl_imagelist * gravi_data_get_cube_x(gravi_data* , int );
137 
138 cpl_table * gravi_data_get_table(gravi_data*, const char *);
139 cpl_imagelist * gravi_data_get_cube(gravi_data* , const char * );
140 cpl_propertylist * gravi_data_get_oi_plist(gravi_data * ,
141  const char * , const char * );
142 cpl_table * gravi_data_get_oi_table(gravi_data * ,
143  const char * , const char * );
144 cpl_table ** gravi_data_get_oiwave_tables (gravi_data * data, int type_data, int npol);
145 
146 /*
147  * Inserting and removing elements
148  */
149 
150 cpl_error_code gravi_data_erase_x (gravi_data *, int);
151 cpl_error_code gravi_data_erase (gravi_data *, const char *);
152 cpl_error_code gravi_data_erase_type (gravi_data * self, const char * type);
153 
154 cpl_error_code gravi_data_add_table (gravi_data * self,
155  cpl_propertylist * plist,
156  const char * extname,
157  cpl_table * table);
158 
159 cpl_error_code gravi_data_add_cube (gravi_data * self,
160  cpl_propertylist * plist,
161  const char * extname,
162  cpl_imagelist * imglist);
163 
164 cpl_error_code gravi_data_add_img (gravi_data * self,
165  cpl_propertylist * plist,
166  const char * extname,
167  cpl_image * image);
168 
169 cpl_error_code gravi_data_copy_ext (gravi_data * output,
170  gravi_data * input,
171  const char * name);
172 
173 cpl_error_code gravi_data_move_ext (gravi_data * output,
174  gravi_data * input,
175  const char * name);
176 
177 /*
178  * Work on gravi_data
179  */
180 
181 cpl_error_code gravi_data_clean_for_astro (gravi_data * data);
182 cpl_error_code gravi_data_check_consistency (gravi_data * data);
183 cpl_error_code gravi_data_detector_cleanup (gravi_data * data,
184  const cpl_parameterlist * parlist);
185 cpl_error_code gravi_data_dump(gravi_data *self);
186 cpl_error_code gravi_data_dump_mode (gravi_data * data);
187 
188 
189 #endif
190 
gravi_data * gravi_data_new(int)
Create an empty gravi_data.
Definition: gravi_data.c:102
cpl_propertylist * gravi_data_get_oi_plist(gravi_data *, const char *, const char *)
Get the propertylist from EXTNAME and INSNAME.
Definition: gravi_data.c:1636
gravi_data * gravi_data_load_frame(cpl_frame *frame, cpl_frameset *used_frameset)
Load a FITS file and create a gravi_data.
Definition: gravi_data.c:573
gravi_data * gravi_data_load(const char *filename)
Low-level function to load FITS file.
Definition: gravi_data.c:376
cpl_error_code gravi_data_copy_ext(gravi_data *output, gravi_data *input, const char *name)
Copy extensions from one data to another.
Definition: gravi_data.c:1325
cpl_propertylist * gravi_data_get_plist_x(gravi_data *, int)
Get the propertylist of an extension by position.
Definition: gravi_data.c:1511
cpl_error_code gravi_data_erase_type(gravi_data *self, const char *type)
Erase all extension related to an instrument (SC, FT, MET...)
Definition: gravi_data.c:1867
int gravi_data_has_extension(gravi_data *, const char *)
Check if data has extension with given EXTNAME.
Definition: gravi_data.c:1443
gravi_data * gravi_data_load_rawframe(cpl_frame *frame, cpl_frameset *used_frameset)
Load a RAW FITS file and create a gravi_data.
Definition: gravi_data.c:690
gravi_data * gravi_data_load_ext(const char *filename, const char *extensions_regexp)
Low-level function to load FITS file.
Definition: gravi_data.c:448
cpl_error_code gravi_data_move_ext(gravi_data *output, gravi_data *input, const char *name)
Move extensions from one data to another.
Definition: gravi_data.c:1376
cpl_error_code gravi_data_save_data(gravi_data *, const char *, unsigned)
Save a gravi data in a FITS file.
Definition: gravi_data.c:830
cpl_table ** gravi_data_get_oiwave_tables(gravi_data *data, int type_data, int npol)
Get pointer to the OI_WAVELENGTH tables of both polarisations.
Definition: gravi_data.c:2253
cpl_error_code gravi_data_erase_x(gravi_data *, int)
Erase an extension by its position.
Definition: gravi_data.c:1781
cpl_table * gravi_data_get_table(gravi_data *, const char *)
Return a pointer on a table extension by its EXTNAME.
Definition: gravi_data.c:1716
cpl_error_code gravi_data_check_consistency(gravi_data *data)
Verify the integrity of RAW data.
Definition: gravi_data.c:2121
cpl_imagelist * gravi_data_get_cube_x(gravi_data *, int)
Get the cube of an extension by position.
Definition: gravi_data.c:1561
cpl_error_code gravi_data_dump(gravi_data *self)
Dump the overall structure of a gravi_data in stdout.
Definition: gravi_data.c:770
cpl_error_code gravi_data_detector_cleanup(gravi_data *data, const cpl_parameterlist *parlist)
Perform self-bias correction to the SC raw data.
Definition: gravi_data.c:1086
cpl_error_code gravi_data_save_new(gravi_data *self, cpl_frameset *allframes, const char *filename, const char *suffix, const cpl_parameterlist *parlist, cpl_frameset *usedframes, cpl_frame *frame, const char *recipe, cpl_propertylist *applist, const char *proCatg)
Save a gravi data in a CPL-complian FITS file.
Definition: gravi_data.c:896
cpl_error_code gravi_data_dump_mode(gravi_data *data)
Dump some information about data in messagin.
Definition: gravi_data.c:539
int gravi_data_has_type(gravi_data *self, const char *type)
Return the number of ext whose EXTNAME and INSNAME match &#39;type&#39;.
Definition: gravi_data.c:1468
cpl_error_code gravi_data_clean_for_astro(gravi_data *data)
Clean the data to keep only OIFITS extensions related to SC.
Definition: gravi_data.c:2054
cpl_propertylist * gravi_data_get_plist(gravi_data *, const char *)
Get the propertylist from EXTNAME.
Definition: gravi_data.c:1684
cpl_table * gravi_data_get_table_x(gravi_data *, int)
Get the table of an extension by position.
Definition: gravi_data.c:1536
cpl_imagelist * gravi_data_get_cube(gravi_data *, const char *)
Return a pointer on an IMAGE extension by its EXTNAME.
Definition: gravi_data.c:1751
cpl_error_code gravi_data_add_cube(gravi_data *self, cpl_propertylist *plist, const char *extname, cpl_imagelist *imglist)
Add an IMAGE (imagelist) extension in gravi_data.
Definition: gravi_data.c:1972
gravi_data * gravi_data_load_rawframe_ext(cpl_frame *frame, cpl_frameset *used_frameset, char *extensions_regexp)
Load a RAW FITS file and create a gravi_data from specified extensions.
Definition: gravi_data.c:734
cpl_error_code gravi_data_add_table(gravi_data *self, cpl_propertylist *plist, const char *extname, cpl_table *table)
Add a BINTABLE extension in gravi_data.
Definition: gravi_data.c:1909
void gravi_data_delete(gravi_data *)
Delete a gravi data.
Definition: gravi_data.c:137
gravi_data * gravi_data_duplicate(const gravi_data *)
Create a copy of the gravi data.
Definition: gravi_data.c:236
int gravi_data_patch(gravi_data *file_to_patch, cpl_frameset *patch_frameset)
Load a RAW FITS file and create a gravi_data.
Definition: gravi_data.c:609
cpl_error_code gravi_data_erase(gravi_data *, const char *)
Erase an extension by its EXTNAME.
Definition: gravi_data.c:1832
cpl_error_code gravi_data_append(gravi_data *first, const gravi_data *second, int force)
Append a gravi_data into another existing one.
Definition: gravi_data.c:290
cpl_error_code gravi_data_add_img(gravi_data *self, cpl_propertylist *plist, const char *extname, cpl_image *image)
Add an IMAGE (single image) extension in gravi_data.
Definition: gravi_data.c:2013
int gravi_data_get_size(const gravi_data *)
Get the number of extension in a gravi_data.
Definition: gravi_data.c:802
cpl_table * gravi_data_get_oi_table(gravi_data *, const char *, const char *)
Get an OI_FITS table from EXTNAME and INSNAME.
Definition: gravi_data.c:1587