GRAVI Pipeline Reference Manual 1.8.0
Loading...
Searching...
No Matches
gravi_data.h
Go to the documentation of this file.
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
24CPL_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
38typedef 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
91cpl_error_code gravi_data_append (gravi_data * first, const gravi_data * second, int force);
93
94/*
95 * Load and save gravi data
96 */
97
98gravi_data * gravi_data_load(const char * filename);
99gravi_data * gravi_data_load_ext(const char * filename,
100 const char * extensions_regexp);
101gravi_data * gravi_data_load_frame (cpl_frame * frame, cpl_frameset * used_frameset);
102int gravi_data_patch (gravi_data * file_to_patch, cpl_frameset * patch_frameset);
103gravi_data * gravi_data_load_rawframe (cpl_frame * frame, cpl_frameset * used_frameset);
104gravi_data * gravi_data_load_rawframe_ext (cpl_frame * frame,
105 cpl_frameset * used_frameset,
106 const char * extensions_regexp);
107
108cpl_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
119cpl_error_code gravi_data_save_data(gravi_data * ,
120 const char * ,
121 unsigned );
122
123/*
124 * Element access
125 */
126
127int gravi_data_has_extension (gravi_data * , const char * );
128int gravi_data_has_type (gravi_data * self, const char * type);
129int gravi_data_get_size (const gravi_data *);
130
131cpl_propertylist * gravi_data_get_plist(gravi_data *, const char *);
132cpl_propertylist * gravi_data_get_plist_x(gravi_data* , int );
133
134cpl_table * gravi_data_get_table_x(gravi_data* , int );
135cpl_imagelist * gravi_data_get_cube_x(gravi_data* , int );
136
137cpl_table * gravi_data_get_table(gravi_data*, const char *);
138cpl_imagelist * gravi_data_get_cube(gravi_data* , const char * );
139cpl_propertylist * gravi_data_get_oi_plist(gravi_data * ,
140 const char * , const char * );
142 const char * , const char * );
143cpl_table ** gravi_data_get_oiwave_tables (gravi_data * data, int type_data, int npol);
145/*
146 * Inserting and removing elements
147 */
148
149cpl_error_code gravi_data_erase_x (gravi_data *, int);
150cpl_error_code gravi_data_erase (gravi_data *, const char *);
151cpl_error_code gravi_data_erase_type (gravi_data * self, const char * type);
152
153cpl_error_code gravi_data_add_table (gravi_data * self,
154 cpl_propertylist * plist,
155 const char * extname,
156 cpl_table * table);
157
158cpl_error_code gravi_data_add_cube (gravi_data * self,
159 cpl_propertylist * plist,
160 const char * extname,
161 cpl_imagelist * imglist);
162
163cpl_error_code gravi_data_add_img (gravi_data * self,
164 cpl_propertylist * plist,
165 const char * extname,
166 cpl_image * image);
167
168cpl_error_code gravi_data_copy_ext (gravi_data * output,
169 gravi_data * input,
170 const char * name);
171
172cpl_error_code gravi_data_copy_ext_i (gravi_data * output,
173 gravi_data * input,
174 cpl_size num);
175
176cpl_error_code gravi_data_copy_ext_insname (gravi_data * output,
177 gravi_data * input,
178 const char * name,
179 const char * insname);
180
181cpl_error_code gravi_data_move_ext (gravi_data * output,
182 gravi_data * input,
183 const char * name);
184
185/*
186 * Work on gravi_data
187 */
188
189cpl_error_code gravi_data_clean_for_astro (gravi_data * data);
190cpl_error_code gravi_data_check_consistency (gravi_data * data);
191cpl_error_code gravi_data_detector_cleanup (gravi_data * data,
192 const cpl_parameterlist * parlist);
193cpl_error_code gravi_data_dump(gravi_data *self);
194cpl_error_code gravi_data_dump_mode (gravi_data * data);
195
196
197#endif
198
typedefCPL_BEGIN_DECLS struct _gravi_data_ gravi_data
Definition: gravi_data.h:38
cpl_propertylist * plist
Definition: gravi_old.c:2000
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:635
cpl_error_code gravi_data_erase(gravi_data *, const char *)
Erase an extension by its EXTNAME.
Definition: gravi_data.c:2212
cpl_propertylist * gravi_data_get_oi_plist(gravi_data *, const char *, const char *)
Get the propertylist from EXTNAME and INSNAME.
Definition: gravi_data.c:2001
gravi_data * gravi_data_duplicate(const gravi_data *)
Create a copy of the gravi data.
Definition: gravi_data.c:250
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:2353
cpl_imagelist * gravi_data_get_cube_x(gravi_data *, int)
Get the cube of an extension by position.
Definition: gravi_data.c:1926
cpl_propertylist * gravi_data_get_extra_primary_header(gravi_data *)
Get the propertylist for additional keywords to the primary header.
Definition: gravi_data.c:2074
gravi_data * gravi_data_load_ext(const char *filename, const char *extensions_regexp)
Low-level function to load FITS file.
Definition: gravi_data.c:474
gravi_data * gravi_data_load(const char *filename)
Low-level function to load FITS file.
Definition: gravi_data.c:402
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:2435
cpl_propertylist * gravi_data_get_plist(gravi_data *, const char *)
Get the propertylist from EXTNAME.
Definition: gravi_data.c:2049
gravi_data * gravi_data_new(int)
Create an empty gravi_data.
Definition: gravi_data.c:110
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:2289
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:2394
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:2247
cpl_error_code gravi_data_copy_ext_i(gravi_data *output, gravi_data *input, cpl_size num)
Copy extensions from one data to another.
Definition: gravi_data.c:1647
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:599
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:1232
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:2664
cpl_error_code gravi_data_dump_mode(gravi_data *data)
Dump some information about data in messagin.
Definition: gravi_data.c:565
cpl_imagelist * gravi_data_get_cube(gravi_data *, const char *)
Return a pointer on an IMAGE extension by its EXTNAME.
Definition: gravi_data.c:2131
int gravi_data_has_extension(gravi_data *, const char *)
Check if data has extension with given EXTNAME.
Definition: gravi_data.c:1808
int gravi_data_has_type(gravi_data *self, const char *type)
Return the number of ext whose EXTNAME and INSNAME match 'type'.
Definition: gravi_data.c:1833
cpl_error_code gravi_data_save_data(gravi_data *, const char *, unsigned)
Save a gravi data in a FITS file.
Definition: gravi_data.c:856
cpl_table * gravi_data_get_table(gravi_data *, const char *)
Return a pointer on a table extension by its EXTNAME.
Definition: gravi_data.c:2096
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:1952
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:716
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:1741
cpl_error_code gravi_data_erase_x(gravi_data *, int)
Erase an extension by its position.
Definition: gravi_data.c:2161
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:308
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:925
cpl_propertylist * gravi_data_get_plist_x(gravi_data *, int)
Get the propertylist of an extension by position.
Definition: gravi_data.c:1876
int gravi_data_get_size(const gravi_data *)
Get the number of extension in a gravi_data.
Definition: gravi_data.c:828
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:1690
cpl_error_code gravi_data_dump(gravi_data *self)
Dump the overall structure of a gravi_data in stdout.
Definition: gravi_data.c:796
cpl_error_code gravi_data_copy_ext_insname(gravi_data *output, gravi_data *input, const char *name, const char *insname)
Copy extensions from one data to another.
Definition: gravi_data.c:1587
gravi_data * gravi_data_load_rawframe_ext(cpl_frame *frame, cpl_frameset *used_frameset, const char *extensions_regexp)
Load a RAW FITS file and create a gravi_data from specified extensions.
Definition: gravi_data.c:760
cpl_error_code gravi_data_check_consistency(gravi_data *data)
Verify the integrity of RAW data.
Definition: gravi_data.c:2531
cpl_table * gravi_data_get_table_x(gravi_data *, int)
Get the table of an extension by position.
Definition: gravi_data.c:1901
void gravi_data_delete(gravi_data *)
Delete a gravi data.
Definition: gravi_data.c:146