34#define DET_DIT "IPAG DET DIT"
35#define GRAVI_DET_DIT "ESO DET2 SEQ1 DIT"
36#define GRAVI_NIGHT_OBS "ESO PRO NIGHT OBS"
37#define DPR_TYPE "ESO DPR TYPE"
39#define GRAVI_PRIMARY_HDR_EXT "PRIMARY_HDR"
41#define GRAVI_IMAGING_DATA_ACQ_EXT "IMAGING_DATA_ACQ"
42#define GRAVI_IMAGING_DATA_ACQ_EXT_V2 "IMAGING_DATA_ACQ_V2"
43#define GRAVI_IMAGING_DATA_FT_EXT "IMAGING_DATA_FT"
44#define GRAVI_IMAGING_DATA_SC_EXT "IMAGING_DATA_SC"
45#define GRAVI_IMAGING_ERR_SC_EXT "IMAGING_ERR_SC"
46#define GRAVI_IMAGING_ERR_FT_EXT "IMAGING_ERR_FT"
47#define GRAVI_IMAGING_MASK_SC_EXT "IMAGING_MASK_SC"
49#define GRAVI_IMAGING_DETECTOR_SC_EXT "IMAGING_DETECTOR_SC"
50#define GRAVI_IMAGING_DETECTOR_FT_EXT "IMAGING_DETECTOR_FT"
51#define GRAVI_IMAGING_DETECTOR_EXT(type) (type==GRAVI_SC?GRAVI_IMAGING_DETECTOR_SC_EXT:GRAVI_IMAGING_DETECTOR_FT_EXT)
53#define GRAVI_SPECTRUM_DATA_SC_EXT "SPECTRUM_DATA_SC"
54#define GRAVI_SPECTRUM_DATA_FT_EXT "SPECTRUM_DATA_FT"
55#define GRAVI_SPECTRUM_DATA_EXT(type) (type==GRAVI_SC?GRAVI_SPECTRUM_DATA_SC_EXT:GRAVI_SPECTRUM_DATA_FT_EXT)
56#define GRAVI_SPECTRUMFLAT_DATA_SC_EXT "SPECTRUMFLAT_DATA_SC"
58#define GRAVI_BIAS_MASK_SC_EXT "BIAS_MASK_SC"
60#define GRAVI_METROLOGY_EXT "METROLOGY"
61#define GRAVI_METROLOGY_ERR_EXT "METROLOGY_ERR"
62#define GRAVI_OPDC_EXT "OPDC"
63#define GRAVI_WAVE_ARGON_EXT "WAVE_ARGON"
64#define GRAVI_WAVE_DATA_FT_EXT "WAVE_DATA_FT"
65#define GRAVI_WAVE_DATA_SC_EXT "WAVE_DATA_SC"
66#define GRAVI_WAVE_DATA_FT_EXT "WAVE_DATA_FT"
67#define GRAVI_WAVE_DATA_EXT(type) (type==GRAVI_SC?GRAVI_WAVE_DATA_SC_EXT:GRAVI_WAVE_DATA_FT_EXT)
68#define GRAVI_WAVE_FIBRE_FT_EXT "WAVE_FIBRE_FT"
69#define GRAVI_WAVE_FIBRE_SC_EXT "WAVE_FIBRE_SC"
70#define GRAVI_WAVE_FIBRE_EXT(type) (type==GRAVI_SC?GRAVI_WAVE_FIBRE_SC_EXT:GRAVI_WAVE_FIBRE_FT_EXT)
71#define GRAVI_P2VM_MET_EXT "P2VM_MET"
72#define GRAVI_P2VM_DATA_SC_EXT "P2VM_SC"
73#define GRAVI_P2VM_DATA_FT_EXT "P2VM_FT"
74#define GRAVI_P2VM_DATA_EXT(type) (type==GRAVI_SC?GRAVI_P2VM_DATA_SC_EXT:GRAVI_P2VM_DATA_FT_EXT)
75#define GRAVI_FDDL_EXT "FDDL"
76#define GRAVI_PCA_EXT "PCA"
77#define GRAVI_PCA_RESID_EXT "PCA_RESID"
79#define GRAVI_PROFILE_DATA_EXT "PROFILE_DATA"
80#define GRAVI_PROFILE_PARAMS_EXT "PROFILE_PARAMS"
81#define GRAVI_IMAGING_DETECTOR_SC_EXT "IMAGING_DETECTOR_SC"
82#define GRAVI_IMAGING_DETECTOR_FT_EXT "IMAGING_DETECTOR_FT"
83#define GRAVI_OI_ARRAY_EXT "OI_ARRAY"
84#define GRAVI_ARRAY_GEOMETRY_EXT "ARRAY_GEOMETRY"
85#define GRAVI_OPTICAL_TRAIN_EXT "OPTICAL_TRAIN"
86#define GRAVI_OI_TARGET_EXT "OI_TARGET"
88#define GRAVI_OI_VIS_MET_EXT "OI_VIS_MET"
89#define GRAVI_OI_VIS_ACQ_EXT "OI_VIS_ACQ"
91#define GRAVI_OI_WAVELENGTH_EXT "OI_WAVELENGTH"
92#define GRAVI_OI_VIS_EXT "OI_VIS"
93#define GRAVI_OI_FLUX_EXT "OI_FLUX"
94#define GRAVI_OI_T3_EXT "OI_T3"
95#define GRAVI_OI_VIS2_EXT "OI_VIS2"
97#define GRAVI_NAN_DOUBLE -99.
98#define GRAVI_NAN_FLOAT -99.
99#define GRAVI_NAN_INT -99
103#define LAMBDA_MET 0.000001908287
107#define QC_PHASECHI2 "ESO QC PHASE_CALIBRATION_CHI2"
108#define QC_CHI2WAVE(type) (type==GRAVI_SC?"ESO QC METFITRMS WAVESC":"ESO QC METFITRMS WAVEFT")
109#define QC_MINWAVE(type) (type==GRAVI_SC?"ESO QC MINWAVE SC":"ESO QC MINWAVE FT")
110#define QC_MAXWAVE(type) (type==GRAVI_SC?"ESO QC MAXWAVE SC":"ESO QC MAXWAVE FT")
111#define QC_MINWAVE_UM(type) (type==GRAVI_SC?"ESO QC MINWAVE UM SC":"ESO QC MINWAVE UM FT")
112#define QC_MAXWAVE_UM(type) (type==GRAVI_SC?"ESO QC MAXWAVE UM SC":"ESO QC MAXWAVE UM FT")
113#define QC_RMS_RESIDUALS(type) (type==GRAVI_SC?"ESO QC RMSWAVE SC":"ESO QC RMSWAVE FT")
114#define QC_RMS_RESIDUALS_UM(type) (type==GRAVI_SC?"ESO QC RMSWAVE UM SC":"ESO QC RMSWAVE UM FT")
115#define OPD_COEFF_SIGN(type) (type==GRAVI_SC?"ESO QC OPD_COEFF_SIGN SC":"ESO QC OPD_COEFF_SIGN FT")
118#define QC_MEANDARK_SC "ESO QC MEDIANDARK SC"
119#define QC_DARKRMS_SC "ESO QC DARKRMS SC"
120#define QC_MEANSKY_SC "ESO QC MEDIANSKY SC"
121#define QC_SKYRMS_SC "ESO QC SKYRMS SC"
123#define QC_MEANDARK_FT "ESO QC MEANDARK FT"
124#define QC_DARKRMS_FT "ESO QC DARKRMS FT"
125#define QC_MEANSKY_FT "ESO QC MEANSKY FT"
126#define QC_SKYRMS_FT "ESO QC SKYRMS FT"
128#define QC_MEANDARK_MET "ESO QC MEANDARK MET"
129#define QC_DARKRMS_MET "ESO QC DARKRMS MET"
130#define QC_DARKRANGE_MET "ESO QC DARKRANGE MET"
132#define QC_MEANDARK "ESO QC MEANDARK"
133#define QC_DARKRMS "ESO QC DARKRMS"
135#define QC_ACQ_ZERO_NB "ESO QC ACQ ZERO NB"
138#define QC_MEANGAIN_SC "ESO QC MEANGAIN SC"
139#define QC_BADPIX_SC "ESO QC BADPIX SC"
140#define QC_BADPIX_DARK_SC "ESO QC BADPIX_DARK SC"
141#define QC_BADPIX_RMS_SC "ESO QC BADPIX_RMS SC"
142#define QC_BADPIX_FLAT_SC "ESO QC BADPIX_FLAT SC"
143#define QC_MEANGAIN_FT "ESO QC MEANGAIN FT"
144#define QC_BADPIX_FT "ESO QC BADPIX FT"
145#define PROFILE_STARTX "ESO PRO PROFILE STARTX"
146#define PROFILE_FULLSTARTX "ESO PRO PROFILE FULLSTARTX"
147#define PROFILE_NX "ESO PRO PROFILE NX"
151#define QC_MEANCOH_SC "ESO QC P2VM_COHERENCE_AVG_SC"
152#define QC_RMSCOH_SC "ESO QC P2VM_COHERENCERMS_AVG_SC"
153#define QC_RMSPHASE_SC "ESO QC P2VM_PHASERMS_AVG_SC"
154#define QC_MEANCOH_FT "ESO QC P2VM_COHERENCE_AVG_FT"
155#define QC_RMSCOH_FT "ESO QC P2VM_COHERENCERMS_AVG_FT"
156#define QC_RMSPHASE_FT "ESO QC P2VM_PHASERMS_AVG_FT"
157#define QC_MEANTRANS_FT "ESO QC P2VM_TRANS_AVG_FT"
158#define QC_MINTRANS_FT "ESO QC P2VM_TRANS_MIN_FT"
159#define QC_MAXTRANS_FT "ESO QC P2VM_TRANS_MAX_FT"
160#define QC_MEANTRANS_SC "ESO QC P2VM_TRANS_AVG_SC"
161#define QC_MINTRANS_SC "ESO QC P2VM_TRANS_MIN_SC"
162#define QC_MAXTRANS_SC "ESO QC P2VM_TRANS_MAX_SC"
167#define GRAVI_TYPE(type) (type==GRAVI_SC?"SC":"FT")
180#define MODE_OFFAXIS 2
185#define MET_NORMAL_HEADER 0
186#define MET_FAINT_HEADER 1
187#define MET_NORMAL_FLAG 0
188#define MET_FAINT_FLAG 1
189#define MET_BRIGHT_FLAG 2
192#define INSNAME_FT_P1 "GRAVITY_FT_P1"
193#define INSNAME_FT_P2 "GRAVITY_FT_P2"
194#define INSNAME_SC_P1 "GRAVITY_SC_P1"
195#define INSNAME_SC_P2 "GRAVITY_SC_P2"
196#define INSNAME_FT "GRAVITY_FT"
197#define INSNAME_SC "GRAVITY_SC"
198#define GRAVI_INSNAME(type,pol,npol) (type==GRAVI_SC ? (npol==1?INSNAME_SC:(pol==0?INSNAME_SC_P1:INSNAME_SC_P2) ) : (npol==1?INSNAME_FT:(pol==0?INSNAME_FT_P1:INSNAME_FT_P2) ) )
199#define INSNAME_ACQ "GRAVITY_ACQ"
204#define GRAVI_EXTVER(type,pol,npol) ( (type+1)*10 + (npol==1?0:(pol+1)) )
206#define gravi_pfits_get_sobj_decep(plist) gravi_pfits_get_decep(plist, 1.0)
207#define gravi_pfits_get_sobj_raep(plist) gravi_pfits_get_raep(plist, 1.0)
208#define gravi_pfits_get_mid_decep(plist) gravi_pfits_get_decep(plist, 0.5)
209#define gravi_pfits_get_mid_raep(plist) gravi_pfits_get_raep(plist, 0.5)
210#define gravi_pfits_get_type_decep(plist,type) (type==GRAVI_SC?gravi_pfits_get_sobj_decep(plist):gravi_pfits_get_robj_decep(plist))
211#define gravi_pfits_get_type_raep(plist,type) (type==GRAVI_SC?gravi_pfits_get_sobj_raep(plist):gravi_pfits_get_robj_raep(plist))
213#define gravi_pfits_get_dit(plist, type) (type==GRAVI_SC ? gravi_pfits_get_dit_sc(plist) : gravi_pfits_get_dit_ft(plist))
cpl_propertylist * header
int gravi_pfits_get_startx(const cpl_propertylist *plist)
find out the name of the propertylist
double gravi_pfits_get_sobj_offy(const cpl_propertylist *plist)
double gravi_pfits_get_zenithangle_beamb_acqcam(const cpl_propertylist *plist, int tel, int n, int nrow)
const char * gravi_pfits_get_insname(const cpl_propertylist *plist)
cpl_propertylist * gravi_plist_get_oifits_keywords(cpl_propertylist *header)
Create OIFITS keywords to satisfy standar.
cpl_propertylist * gravi_plist_get_qc(cpl_propertylist *)
Extract QC parameters.
int gravi_pfits_get_pola_num(const cpl_propertylist *plist, int type_data)
const char * gravi_pfits_get_met_ph(const cpl_propertylist *)
cpl_error_code gravi_pfits_update_double(cpl_propertylist *plist, const char *name, double value)
double gravi_pfits_get_sobj_offx(const cpl_propertylist *plist)
cpl_error_code gravi_pfits_update_int(cpl_propertylist *plist, const char *name, int value)
double gravi_pfits_get_gvctu_x(const cpl_propertylist *plist)
const char * gravi_pfits_get_mode_name(const cpl_propertylist *plist)
double gravi_pfits_get_gdzero(const cpl_propertylist *plist, int tel)
double gravi_pfits_get_sobj_y(const cpl_propertylist *plist)
double gravi_pfits_get_robj_diam(const cpl_propertylist *plist)
int gravi_pfits_get_fullstartx(const cpl_propertylist *plist)
double gravi_pfits_get_geolon(const cpl_propertylist *plist)
const char * gravi_pfits_get_sobj(const cpl_propertylist *plist)
int gravi_pfits_get_mode(const cpl_propertylist *plist)
double gravi_pfits_get_metfc_lockmjd(const cpl_propertylist *plist, int tel)
const char * gravi_pfits_get_pola_mode(const cpl_propertylist *plist, int type_data)
double gravi_convert_to_mjd(const char *)
cpl_error_code gravi_pfits_add_check(cpl_propertylist *header, const char *msg)
Add a QC.CHECK keyword to the header.
int gravi_data_frame_get_mode(const cpl_frame *frame)
double gravi_pfits_get_pmra(const cpl_propertylist *plist)
cpl_error_code gravi_pfits_ensure_double(cpl_propertylist *self, const char *name)
int gravi_pfits_get_extension_type(const cpl_propertylist *plist)
double gravi_pfits_get_oplzero(const cpl_propertylist *plist, int tel)
double gravi_pfits_get_plx(const cpl_propertylist *plist)
cpl_parameter * gravi_pfits_get_extrapixel_param(const cpl_propertylist *header)
Extract parameters from a product header.
const char * gravi_pfits_get_spec_res(const cpl_propertylist *plist)
double gravi_pfits_get_drotoff(const cpl_propertylist *plist, int tel)
int gravi_pfits_is_calib(const cpl_propertylist *plist)
double gravi_pfits_get_robj_raep(const cpl_propertylist *plist)
double gravi_pfits_get_dit_sc(const cpl_propertylist *plist)
double gravi_dec_to_rad(const char *stri)
double gravi_pfits_get_dit_ft(const cpl_propertylist *plist)
const char * gravi_pfits_get_string_default(const cpl_propertylist *plist, const char *name, const char *def)
const char * gravi_pfits_get_robj(const cpl_propertylist *plist)
int gravi_pfits_has_gdzero(const cpl_propertylist *plist, int tel)
double gravi_pfits_get_northangle_acqcam(const cpl_propertylist *plist, int tel)
double gravi_pfits_get_gvctu_y(const cpl_propertylist *plist)
double gravi_pfits_get_met_wavelength_mean(const cpl_propertylist *plist, cpl_table *met_table)
double gravi_pfits_get_dit_acqcam(const cpl_propertylist *plist)
cpl_vector * gravi_pfits_get_met_faint_params(const cpl_propertylist *plist)
Extract metrology faint settings.
double gravi_pfits_get_mjd(const cpl_propertylist *plist)
int gravi_pfits_get_axis(const cpl_propertylist *plist)
const char * gravi_pfits_get_resolution(const cpl_propertylist *plist)
const char * gravi_pfits_get_start_sc(const cpl_propertylist *plist)
double gravi_pfits_get_period_sc(const cpl_propertylist *plist)
double gravi_pfits_get_ft_gain(const cpl_propertylist *plist)
FT system gain in [ADU/e].
double gravi_pfits_get_geolat(const cpl_propertylist *plist)
double gravi_pfits_get_period_acqcam(const cpl_propertylist *plist)
const char * gravi_pfits_get_start_prcacq(const cpl_propertylist *plist)
double gravi_pfits_get_time_sc(const cpl_propertylist *header, cpl_size row)
Time of the middle of the SC exposure row in [us], counted from PRC.ACQ.START.
cpl_error_code gravi_pfits_add_pipe_build(cpl_propertylist *header)
Add the ESO PRO REC# PIPE LAST_BUILD in header.
double gravi_pfits_get_sobj_diam(const cpl_propertylist *plist)
char * gravi_convert_to_timestamp(double mjd)
double gravi_pfits_get_fddlwindow(const cpl_propertylist *plist)
int gravi_pfits_get_nx(const cpl_propertylist *plist)
double gravi_pfits_get_double(const cpl_propertylist *self, const char *name)
Get the double value of the given property list entry.
const char * gravi_pfits_get_feed(const cpl_propertylist *plist)
const char * gravi_pfits_get_dpr_type(const cpl_propertylist *plist)
double gravi_pfits_get_sc_gain(const cpl_propertylist *plist)
SC system gain in [ADU/e].
int gravi_pfits_get_met_mode(const cpl_propertylist *plist)
double gravi_pfits_get_pmdec(const cpl_propertylist *plist)
const char * gravi_pfits_get_extname(const cpl_propertylist *)
int gravi_pfits_has_oplzero(const cpl_propertylist *plist, int tel)
double gravi_pfits_get_decep(const cpl_propertylist *plist, double coef)
double gravi_pfits_get_double_silentdefault(const cpl_propertylist *plist, const char *name, double def)
double gravi_pfits_get_sobj_x(const cpl_propertylist *plist)
double gravi_pfits_get_diameter(const cpl_propertylist *plist, int type_data)
double gravi_pfits_get_geoelev(const cpl_propertylist *plist)
double gravi_pfits_get_raep(const cpl_propertylist *plist, double coef)
double gravi_pfits_get_met_wavelength(const cpl_propertylist *plist)
double gravi_ra_to_rad(const char *stri)
double gravi_pfits_get_robj_decep(const cpl_propertylist *plist)
double gravi_pfits_get_time_acqcam(const cpl_propertylist *header, cpl_size row)
Time of the middle of the ACQCAM exposure row in [us], counted from PRC.ACQ.START.
int gravi_pfits_get_window_start(const cpl_propertylist *plist)
double gravi_pfits_get_double_default(const cpl_propertylist *plist, const char *name, double def)
double gravi_pfits_get_ptfc_acqcam(const cpl_propertylist *plist, int spot)
const char * gravi_pfits_get_start_acqcam(const cpl_propertylist *plist)