ERIS Pipeline Reference Manual 1.9.2
eris_ifu_dfs.h
1/* $Id$
2 *
3 * This file is part of the ERIS Pipeline
4 * Copyright (C) 2002,2003 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
21#ifndef ERIS_IFU_DFS_H
22#define ERIS_IFU_DFS_H
23
24#ifdef HAVE_CONFIG_H
25#include <config.h>
26#endif
27
28/*-----------------------------------------------------------------------------
29 Includes
30 -----------------------------------------------------------------------------*/
31
32#include <cpl.h>
33#include <hdrl.h>
34
35#include <stdbool.h>
36#include "eris_ifu_constants.h"
37
38
39/*-----------------------------------------------------------------------------
40 Define
41 -----------------------------------------------------------------------------*/
42#define UNIT_FLUXCAL "erg.s**(-1).cm**(-2).angstrom**(-1)"
43#define UNIT_ADU "ADU"
44#define UNIT_TIME "s"
45#define UNITLESS ""
46// Detector
47#define ERIS_IFU_DETECTOR_SIZE 2048
48#define ERIS_IFU_DETECTOR_SIZE_X 2048
49#define ERIS_IFU_DETECTOR_SIZE_Y 2048
50#define ERIS_IFU_DETECTOR_BP_BORDER 4
51
52#define REC_NAME_DARK "eris_ifu_dark"
53#define REC_NAME_FLAT "eris_ifu_flat"
54#define REC_NAME_DISTORTION "eris_ifu_distortion"
55#define REC_NAME_DETLIN "eris_ifu_detlin"
56#define REC_NAME_WAVECAL "eris_ifu_wavecal"
57#define REC_NAME_STDSTAR "eris_ifu_stdstar"
58#define REC_NAME_PUPIL "eris_ifu_pupil"
59#define REC_NAME_JITTER "eris_ifu_jitter"
60#define REC_NAME_EXTRACT_SPEC "eris_ifu_extract_spec"
61#define REC_NAME_COMBINE "eris_ifu_combine"
62
63/*-----------------------------------------------------------------------------
64 * FITS header keywords
65 ----------------------------------------------------------------------------*/
66#define NAXIS1 "NAXIS1"
67#define CRPIX1 "CRPIX1"
68#define CRVAL1 "CRVAL1"
69#define CDELT1 "CDELT1"
70#define NAXIS2 "NAXIS2"
71#define CRPIX2 "CRPIX2"
72#define CRVAL2 "CRVAL2"
73#define CDELT2 "CDELT2"
74#define NAXIS3 "NAXIS3"
75#define CRPIX3 "CRPIX3"
76#define CRVAL3 "CRVAL3"
77#define CDELT3 "CDELT3"
78#define CUNIT3 "CUNIT3"
79#define CTYPE3 "CTYPE3"
80#define CD1_3 "CD1_3"
81#define CD2_3 "CD2_3"
82#define CD3_3 "CD3_3"
83
84// General
85#define INSTRUMENT_ERIS "ERIS"
86#define INSTRUMENT_SINFONI "SINFONI"
87#define INSTRUMENT_NONE "NONE"
88#define ARM_NIX "NIX"
89#define ARM_SPIFFIER "SPIFFIER"
90
91#define FHDR_INSTRUMENT "INSTRUME"
92#define FHDR_MJD_OBS "MJD-OBS"
93//#define FHDR_DIT "ESO DET DIT"
94#define FHDR_E_ARM "ESO SEQ ARM"
95#define FHDR_EXPTIME "EXPTIME"
96#define FHDR_DET_CHIP_GAIN "ESO DET CHIP GAIN"
97#define FHDR_DET_CHIP_RON "ESO DET CHIP RON"
98#define FHDR_DPR_TYPE "ESO DPR TYPE"
99#define FHDR_DPR_TECH "ESO DPR TECH"
100#define FHDR_PRO_CATG "ESO PRO CATG"
101// ERIS/SPIFFIER
102#define FHDR_E_DIT "ESO DET SEQ1 DIT"
103
104#define FHDR_E_AR_LAMP_ST "ESO INS1 LAMP3 ST"
105#define FHDR_E_KR_LAMP_ST "ESO INS1 LAMP4 ST"
106#define FHDR_E_NE_LAMP_ST "ESO INS1 LAMP5 ST"
107#define FHDR_E_XE_LAMP_ST "ESO INS1 LAMP6 ST"
108#define FHDR_E_QTH_LAMP_ST "ESO INS1 LAMP2 ST"
109#define FHDR_E_FILTER_ID "ESO INS3 SPFW ID"
110#define FHDR_E_GRATING_ID "ESO INS3 SPGW ID"
111#define FHDR_E_PREOPTICS_ID "ESO INS3 SPXW ID"
112
113#define E_GRATING_J_LOW "J_low"
114#define E_GRATING_H_LOW "H_low"
115#define E_GRATING_K_LOW "K_low"
116#define E_GRATING_J_SHORT "J_short"
117#define E_GRATING_J_MIDDLE "J_middle"
118#define E_GRATING_J_LONG "J_long"
119#define E_GRATING_H_SHORT "H_short"
120#define E_GRATING_H_MIDDLE "H_middle"
121#define E_GRATING_H_LONG "H_long"
122#define E_GRATING_K_SHORT "K_short"
123#define E_GRATING_K_MIDDLE "K_middle"
124#define E_GRATING_K_LONG "K_long"
125#define E_PREOPTICS_250MAS_SCALE "250mas"
126#define E_PREOPTICS_100MAS_SCALE "100mas"
127#define E_PREOPTICS_25MAS_SCALE "25mas"
128#define E_PREOPTICS_PUPIL "pupil"
129
130#define FHDR_E_CRVAL1 "CRVAL1"
131#define FHDR_E_CRVAL2 "CRVAL2"
132#define FHDR_E_CUMOFFS1 "ESO OCS CUMOFFS RA"
133#define FHDR_E_CUMOFFS2 "ESO OCS CUMOFFS DEC"
134
135
136// SINFONI/SPIFFI
137#define FHDR_S_DIT "ESO DET DIT"
138
139#define FHDR_S_AR_LAMP_ST "ESO INS1 LAMP4 ST"
140#define FHDR_S_KR_LAMP_ST "ESO INS1 LAMP2 ST"
141#define FHDR_S_NE_LAMP_ST "ESO INS1 LAMP3 ST"
142#define FHDR_S_XE_LAMP_ST "ESO INS1 LAMP1 ST"
143#define FHDR_S_NA_LAMP_ST "ESO INS1 LAMP6 ST"
144#define FHDR_S_QTH_LAMP_ST "ESO INS1 LAMP5 ST"
145#define FHDR_S_FILTER_ID "ESO INS FILT1 ID"
146#define FHDR_S_FILTER_NAME "ESO INS FILT1 NAME"
147#define FHDR_S_GRATING_ID "ESO INS GRAT1 ID"
148#define FHDR_S_PREOPTICS_ID "ESO INS OPTI1 NAME"
149
150#define S_GRATING_J_BAND "J"
151#define S_GRATING_H_BAND "H"
152#define S_GRATING_K_BAND "K"
153#define S_GRATING_HK_BAND "H+K"
154#define S_PREOPTICS_250MAS_SCALE "0.25"
155#define S_PREOPTICS_100MAS_SCALE "0.1"
156#define S_PREOPTICS_25MAS_SCALE "0.025"
157#define S_PREOPTICS_PUPIL "pupil"
158
159
160/*----------------------------------------------------------------------------
161 * Raw frame types for ERIS/SPIFFIER
162 * don't forget to update the ERIS_IFU_RAW_TAGS macro when frame types
163 * are added or removed
164 *--------------------------------------------------------------------------*/
165
166#define ERIS_IFU_RAW_DARK "DARK"
167#define ERIS_IFU_RAW_FIBRE_NS "FIBRE_NS"
168#define ERIS_IFU_RAW_FLAT_LAMP "FLAT_LAMP"
169#define ERIS_IFU_RAW_FLAT_LAMP_ON "FLAT_LAMP_ON"
170#define ERIS_IFU_RAW_FLAT_LAMP_OFF "FLAT_LAMP_OFF"
171#define ERIS_IFU_RAW_FLAT_NS "FLAT_NS"
172#define ERIS_IFU_RAW_FLAT_NS_ON "FLAT_NS_ON"
173#define ERIS_IFU_RAW_FLAT_NS_OFF "FLAT_NS_OFF"
174#define ERIS_IFU_RAW_WAVE_NS "WAVE_NS"
175#define ERIS_IFU_RAW_WAVE_NS_ON "WAVE_NS_ON"
176#define ERIS_IFU_RAW_WAVE_NS_OFF "WAVE_NS_OFF"
177#define ERIS_IFU_RAW_ARC_LAMP "WAVE_LAMP"
178#define ERIS_IFU_RAW_ARC_LAMP_ON "WAVE_LAMP_ON"
179#define ERIS_IFU_RAW_ARC_LAMP_OFF "WAVE_LAMP_OFF"
180#define ERIS_IFU_RAW_SKY "SKY"
181#define ERIS_IFU_RAW_DARK_NS "DARK_NS"
182#define ERIS_IFU_RAW_FIBRE_NS "FIBRE_NS"
183#define ERIS_IFU_RAW_OBJ "OBJ"
184#define ERIS_IFU_RAW_SKY "SKY"
185#define ERIS_IFU_RAW_OBJ_SKY "SKY_OBJ"
186#define ERIS_IFU_RAW_STD_FLUX "STD_FLUX"
187#define ERIS_IFU_RAW_STD_FLUX_SKY "SKY_STD_FLUX"
188#define ERIS_IFU_RAW_STD "STD"
189#define ERIS_IFU_RAW_STD_SKY "SKY_STD"
190#define ERIS_IFU_RAW_PSF "PSF_CALIBRATOR"
191#define ERIS_IFU_RAW_PSF_SKY "SKY_PSF_CALIBRATOR"
192#define ERIS_IFU_RAW_PUPIL_LAMP "PUPIL_LAMP"
193#define ERIS_IFU_RAW_PUPIL_SKY "PUPIL_SKY"
194#define ERIS_IFU_RAW_LIN "LINEARITY_LAMP"
195#define ERIS_PERSISTENCE_IMA "PERSISTENCE_IMA"
196#define ERIS_PERSISTENCE_CUBE "PERSISTENCE_CUBE"
197
198
199//#define ERIS_IFU_KEY_NAME_LAMP_HALO FHDR_E_QTH_LAMP_ST
200
201#define ERIS_IFU_RAW_TAGS "," \
202 ERIS_IFU_RAW_DARK "," \
203 ERIS_IFU_RAW_FLAT_LAMP_ON "," \
204 ERIS_IFU_RAW_FLAT_LAMP_OFF "," \
205 ERIS_IFU_RAW_FLAT_LAMP "," \
206 ERIS_IFU_RAW_FLAT_NS "," \
207 ERIS_IFU_RAW_FLAT_NS_ON "," \
208 ERIS_IFU_RAW_FLAT_NS_OFF "," \
209 ERIS_IFU_RAW_WAVE_NS "," \
210 ERIS_IFU_RAW_WAVE_NS_ON "," \
211 ERIS_IFU_RAW_WAVE_NS_OFF "," \
212 ERIS_IFU_RAW_ARC_LAMP "," \
213 ERIS_IFU_RAW_ARC_LAMP_ON "," \
214 ERIS_IFU_RAW_ARC_LAMP_OFF "," \
215 ERIS_IFU_RAW_DARK_NS "," \
216 ERIS_IFU_RAW_FIBRE_NS "," \
217 ERIS_IFU_RAW_OBJ "," \
218 ERIS_IFU_RAW_SKY "," \
219 ERIS_IFU_RAW_OBJ_SKY "," \
220 ERIS_IFU_RAW_STD "," \
221 ERIS_IFU_RAW_STD_SKY "," \
222 ERIS_IFU_RAW_PUPIL_LAMP "," \
223 ERIS_IFU_RAW_PUPIL_SKY "," \
224 ERIS_IFU_RAW_STD_FLUX "," \
225 ERIS_IFU_RAW_STD_FLUX_SKY "," \
226 ERIS_IFU_RAW_PSF "," \
227 ERIS_IFU_RAW_PSF_SKY "," \
228 ERIS_PERSISTENCE_IMA "," \
229 ERIS_PERSISTENCE_CUBE "," \
230 ERIS_IFU_RAW_LIN ","
231
232/*----------------------------------------------------------------------------
233 * Calibration frame types for ERIS/SPIFFIER
234 * don't forget to update the ERIS_IFU_REF_CALIB_TAGS macro when frame types
235 * are added or removed
236 *--------------------------------------------------------------------------*/
237#define ERIS_IFU_CALIB_DARK "MASTER_DARK"
238#define ERIS_IFU_CALIB_FLATFIELD "MASTER_FLAT"
239#define ERIS_IFU_CALIB_DISTORTION "DISTORTION"
240#define ERIS_IFU_CALIB_REF_LINES "REF_LINE_ARC"
241#define ERIS_IFU_CALIB_FIRST_FIT "FIRST_WAVE_FIT"
242#define ERIS_IFU_CALIB_WAVE_SETUP "WAVE_SETUP"
243#define ERIS_IFU_CALIB_SLIT_POS "SLITLET_POS"
244#define ERIS_IFU_CALIB_DIST_SETUP_WAVE "DRS_SETUP_WAVE"
245#define ERIS_IFU_CALIB_WAVE_MAP "WAVE_MAP"
246#define ERIS_IFU_CALIB_DISTANCES "DISTANCES"
247#define ERIS_IFU_CALIB_DARK_BP_MAP "BPM_DARK"
248#define ERIS_IFU_CALIB_DETLIN_BP_MAP "BPM_LINEARITY"
249#define ERIS_IFU_CALIB_OH_SPEC "OH_SPEC"
250#define ERIS_IFU_CALIB_TELL_MOD_CATALOG "TELL_MOD_CATALOG"
251#define ERIS_IFU_CALIB_EXTCOEFF_TABLE "EXTCOEFF_TABLE"
252#define ERIS_IFU_CALIB_FLUX_STD_CATALOG "FLUX_STD_CATALOG"
253#define ERIS_IFU_CALIB_EFFICIENCY_WINDOWS "EFFICIENCY_WINDOWS"
254#define ERIS_IFU_CALIB_RESPONSE_WINDOWS "RESPONSE_WINDOWS"
255#define ERIS_IFU_CALIB_FIT_AREAS "FIT_AREAS"
256#define ERIS_IFU_CALIB_QUALITY_AREAS "QUALITY_AREAS"
257#define ERIS_IFU_CALIB_ATMOS_EXT "ATMOS_EXT"
258#define ERIS_IFU_CALIB_HIGH_ABS_REGIONS "HIGH_ABS_REGIONS"
259#define ERIS_IFU_CALIB_RESP_FIT_POINTS_CATALOG "RESP_FIT_POINTS_CATALOG"
260#define ERIS_IFU_CALIB_TELL_MOD_CATALOG "TELL_MOD_CATALOG"
261#define ERIS_PERSISTENCE_DBG "PERSISTENCE_DBG"
262#define ERIS_PERSISTENCE_DBG_FN "eris_persistence_dbg.fits"
263#define ERIS_PERSISTENCE_HDR "PERSISTENCE_HDR"
264#define ERIS_PERSISTENCE_HDR_FN "eris_persistence_hdr.fits"
265#define ERIS_RESAMPLE_TABLE "RESAMPLE_TABLE"
266
267#define ERIS_IFU_REF_CALIB_TAGS "," \
268 ERIS_IFU_CALIB_DARK "," \
269 ERIS_IFU_CALIB_FLATFIELD "," \
270 ERIS_IFU_CALIB_DISTORTION "," \
271 ERIS_IFU_CALIB_REF_LINES "," \
272 ERIS_IFU_CALIB_FIRST_FIT "," \
273 ERIS_IFU_CALIB_WAVE_SETUP "," \
274 ERIS_IFU_CALIB_SLIT_POS "," \
275 ERIS_IFU_CALIB_DIST_SETUP_WAVE "," \
276 ERIS_IFU_CALIB_WAVE_MAP "," \
277 ERIS_IFU_CALIB_DISTANCES "," \
278 ERIS_IFU_CALIB_DARK_BP_MAP "," \
279 ERIS_IFU_CALIB_DETLIN_BP_MAP "," \
280 ERIS_IFU_CALIB_EXTCOEFF_TABLE "," \
281 ERIS_IFU_CALIB_FLUX_STD_CATALOG "," \
282 ERIS_IFU_CALIB_EFFICIENCY_WINDOWS "," \
283 ERIS_IFU_CALIB_RESPONSE_WINDOWS "," \
284 ERIS_IFU_CALIB_FIT_AREAS "," \
285 ERIS_IFU_CALIB_QUALITY_AREAS "," \
286 ERIS_IFU_CALIB_ATMOS_EXT "," \
287 ERIS_IFU_CALIB_HIGH_ABS_REGIONS "," \
288 ERIS_IFU_CALIB_RESP_FIT_POINTS_CATALOG "," \
289 ERIS_IFU_CALIB_TELL_MOD_CATALOG "," \
290 ERIS_RESAMPLE_TABLE "," \
291 ERIS_IFU_CALIB_OH_SPEC ","
292
293/*----------------------------------------------------------------------------
294 * Frame types for utilities
295 * don't forget to update the ERIS_IFU_REF_CALIB_TAGS macro when frame types
296 * are added or removed
297 *--------------------------------------------------------------------------*/
298#define ERIS_IFU_UTIL_CUBE "CUBE"
299#define ERIS_IFU_UTIL_MASK "MASK"
300
301#define ERIS_IFU_REF_UTIL_TAGS "," \
302 ERIS_IFU_UTIL_CUBE "," \
303 ERIS_IFU_UTIL_MASK ","
304
305/*----------------------------------------------------------------------------
306 * DO CATG
307 *--------------------------------------------------------------------------*/
308/* IDPs */
309#define PRODCATG_CUBE_OBJ "ANCILLARY.CUBE.IFS"
310#define PRODCATG_CUBE_SKY "ANCILLARY.CUBE.IFS.SKY"
311
312#define ERIS_IFU_COMBINE_DOCATG "OBJECT_CUBE"
313#define ERIS_IFU_COMBINE_PROCATG "COMBINED_CUBE"
314
315/*----------------------------------------------------------------------------
316 * Product frame types for ERIS/SPIFFIER which are (also) used as calibrations
317 * don't forget to update the ERIS_IFU_PRO_CALIB_TAGS macro when frame types
318 * are added or removed
319 *--------------------------------------------------------------------------*/
320
321/* eris_ifu_dark */
322/* product_level: 0 */
323#define ERIS_IFU_PRO_DARK "MASTER_DARK_IFU"
324#define ERIS_IFU_PRO_DARK_FN "eris_ifu_dark_master_dark.fits"
325#define ERIS_IFU_PRO_DARK_BPM "BPM_DARK"
326#define ERIS_IFU_PRO_DARK_BPM_FN "eris_ifu_dark_bpm.fits"
327/* product_level: 1 */
328#define ERIS_IFU_PRO_DARK_DBG_BPM2D "DARK_BPM2D"
329#define ERIS_IFU_PRO_DARK_DBG_BPM2D_FN "eris_ifu_dark_bpm2d.fits"
330#define ERIS_IFU_PRO_DARK_DBG_BPM3D "DARK_BPM3D"
331#define ERIS_IFU_PRO_DARK_DBG_BPM3D_FN "eris_ifu_dark_bpm3d.fits"
332#define ERIS_IFU_PRO_DARK_DBG_CONTRIBMAP "DARK_CONTRIBMAP"
333#define ERIS_IFU_PRO_DARK_DBG_CONTRIBMAP_FN "eris_ifu_dark_contribMap.fits"
334/* product_level: 2 */
335#define ERIS_IFU_PRO_DARK_DBG_IMAGE_FN "eris_ifu_dark_dbg_image"
336#define ERIS_IFU_PRO_DARK_DBG_CUBE_FN "eris_ifu_dark_dbg_cube"
337#define ERIS_IFU_PRO_DARK_DBG_3D_FN "eris_ifu_dark_dbg_3d"
338
339/* eris_ifu_flat */
340/* product_level: 0 */
341#define ERIS_IFU_PRO_FLAT "MASTER_FLAT"
342#define ERIS_IFU_PRO_FLAT_FN "eris_ifu_flat_master_flat.fits"
343#define ERIS_IFU_PRO_FLAT_BPM "BPM_FLAT"
344#define ERIS_IFU_PRO_FLAT_BPM_FN "eris_ifu_flat_bpm.fits"
345/* product_level: 1 */
346#define ERIS_IFU_PRO_FLAT_DBG_HI "_DBG_LAMP_HI"
347#define ERIS_IFU_PRO_FLAT_DBG_HI_FN "_dbg_flat_hi.fits"
348#define ERIS_IFU_PRO_FLAT_DBG_BPM2D "_DBG_BPM2D"
349#define ERIS_IFU_PRO_FLAT_DBG_BPM2D_FN "_dbg_bpm2d.fits"
350#define ERIS_IFU_PRO_FLAT_DBG_BPM3D "_DBG_BPM3D"
351#define ERIS_IFU_PRO_FLAT_DBG_BPM3D_FN "_dbg_bpm3d.fits"
352#define ERIS_IFU_PRO_FLAT_DBG_CONTRIBMAP "_DBG_CONTRIBMAP"
353#define ERIS_IFU_PRO_FLAT_DBG_CONTRIBMAP_FN "_dbg_flat_contribMap.fits"
354/* product_level: 2 */
355#define ERIS_IFU_PRO_FLAT_DBG_CUBE "FLAT_DBG_CUBE"
356#define ERIS_IFU_PRO_FLAT_DBG_CUBE_FN "_dbg_flat_cube"
357#define ERIS_IFU_PRO_FLAT_DBG_CUBE_ON_FN "_dbg_flat_on"
358#define ERIS_IFU_PRO_FLAT_DBG_CUBE_OFF_FN "_dbg_flat_off"
359
360/* eris_ifu_wavecal */
361/* product_level: 0 */
362#define ERIS_IFU_PRO_WAVE_MAP "WAVE_MAP"
363#define ERIS_IFU_PRO_WAVE_MAP_FN "eris_ifu_wave_map.fits"
364/* product_level: 1 */
365#define ERIS_IFU_PRO_WAVE_LAMP_STACKED "WAVE_LAMP_STACKED"
366#define ERIS_IFU_PRO_WAVE_LAMP_STACKED_FN "eris_ifu_wave_arcImg_stacked.fits"
367#define ERIS_IFU_PRO_WAVE_LAMP_RESAMPLED "WAVE_LAMP_RESAMPLED"
368#define ERIS_IFU_PRO_WAVE_LAMP_RESAMPLED_FN "eris_ifu_wave_arcImg_resampled.fits"
369#define ERIS_IFU_PRO_WAVE_COLLAP_SPECTR "WAVE_COLLAPSED_SPECTR"
370#define ERIS_IFU_PRO_WAVE_COLLAP_SPECTR_FN "eris_ifu_wave_dbg_collapSpect.fits"
371#define ERIS_IFU_PRO_WAVE_FIT_TABLES "WAVE_FIT_TABLES"
372#define ERIS_IFU_PRO_WAVE_FIT_TABLES_FN "eris_ifu_wave_dbg_fit_tables.fits"
373
374/* eris_ifu_distortion */
375/* product_level: 0 */
376//#define ERIS_IFU_PRO_DIST_DISTANCES "DISTANCES"
377//#define ERIS_IFU_PRO_DIST_DISTANCES_FN "eris_ifu_distortion_distances.fits"
378#define ERIS_IFU_PRO_DIST_SLIT_POS "SLITLET_POS"
379#define ERIS_IFU_PRO_DIST_SLIT_POS_FN "eris_ifu_distortion_slitlet_pos.fits"
380#define ERIS_IFU_PRO_DIST_DISTORTION "DISTORTION"
381#define ERIS_IFU_PRO_DIST_DISTORTION_FN "eris_ifu_distortion_distortion.fits"
382#define ERIS_IFU_PRO_DIST_BPM "BPM_DIST"
383#define ERIS_IFU_PRO_DIST_BPM_FN "eris_ifu_distortion_bpm.fits"
384/* product_level: 1 */
385//#define ERIS_IFU_PRO_DIST_DBG_STACKED_ON "DIST_DBG_STACKED_ON"
386#define ERIS_IFU_PRO_DIST_DBG_STACKED_ON_FN "eris_ifu_distortion_dbg_ns_on"
387//#define ERIS_IFU_PRO_DIST_DBG_STACKED_OFF "DIST_DBG_STACKED_OFF"
388//#define ERIS_IFU_PRO_DIST_DBG_STACKED_OFF_FN "eris_ifu_distortion_dbg_ns_off.fits"
389//#define ERIS_IFU_PRO_DIST_DBG_STACKED "DIST_DBG_STACKED"
390#define ERIS_IFU_PRO_DIST_DBG_STACKED_FN "eris_ifu_distortion_dbg_ns_div"
391//#define ERIS_IFU_PRO_DIST_DBG_DARK "DIST_DBG_DARK"
392#define ERIS_IFU_PRO_DIST_DBG_DARK_FN "eris_ifu_distortion_dbg_dark"
393#define ERIS_IFU_PRO_DIST_DBG_WARPED "DIST_DBG_WARPED"
394#define ERIS_IFU_PRO_DIST_DBG_WARPED_FIT "DIST_DBG_WARPED_FIT"
395#define ERIS_IFU_PRO_DIST_DBG_WARPED_FN "eris_ifu_distortion_dbg_ns_warped.fits"
396#define ERIS_IFU_PRO_DIST_DBG_WARPED_CUBE_FN "eris_ifu_distortion_dbg_ns_warped_cube.fits"
397#define ERIS_IFU_PRO_DIST_DBG_WARPED_CUBE_FLAT "DIST_DBG_WARPED_CUBE_FLAT"
398#define ERIS_IFU_PRO_DIST_DBG_WARPED_CUBE_FLAT_FN "eris_ifu_distortion_dbg_ns_warped_cube_flat.fits"
399#define ERIS_IFU_PRO_DIST_DBG_WARPED_CUBE_FLAT_MEAN "DIST_DBG_WARPED_CUBE_FLAT_MEAN"
400#define ERIS_IFU_PRO_DIST_DBG_WARPED_CUBE_FLAT_MEAN_FN "eris_ifu_distortion_dbg_ns_warped_cube_flat_mean.fits"
401#define ERIS_IFU_PRO_DIST_DBG_WARPED_WAVE "DIST_DBG_WARPED_WAVE"
402#define ERIS_IFU_PRO_DIST_DBG_WARPED_WAVE_FN "eris_ifu_distortion_dbg_ns_warped_wave.fits"
403#define ERIS_IFU_PRO_DIST_DBG_WARPED_FULL "DIST_DBG_WARPED_FULL"
404#define ERIS_IFU_PRO_DIST_DBG_WARPED_FULL_FN "eris_ifu_distortion_dbg_ns_warped_full.fits"
405#define ERIS_IFU_PRO_DIST_DBG_WARPED_CUBE_FULL_FN "eris_ifu_distortion_dbg_ns_warped_cube_full.fits"
406#define ERIS_IFU_PRO_DIST_DBG_MASTER_FLAT_LAMP "DIST_DBG_MASTER_FLAT_LAMP"
407#define ERIS_IFU_PRO_DIST_DBG_MASTER_FLAT_LAMP_FN "eris_ifu_distortion_dbg_flat_lamp.fits"
408
409/* product_level: 2 */
410#define ERIS_IFU_PRO_DIST_QC_FIT_FN "eris_ifu_distortion_qc_fit.fits"
411#define ERIS_IFU_PRO_DIST_QC_WARPED_FIT_FN "eris_ifu_distortion_qc_warped_fit.fits"
412/* product_level: 3 */
413#define ERIS_IFU_PRO_DIST_DBG_DIST_FIT_GRID "DIST_DBG_WARPED_VAL2FIT"
414#define ERIS_IFU_PRO_DIST_DBG_DIST_FIT_GRID_FN "eris_ifu_distortion_grid_val2fit.fits"
415/* product_level: 4 */
416
417/* eris_ifu_detlin */
418/* product_level: 0 */
419#define ERIS_IFU_PRO_DETLIN_BPM "BPM_DETLIN"
420#define ERIS_IFU_PRO_DETLIN_BPM_FN "eris_ifu_detlin_bpm.fits"
421#define ERIS_IFU_PRO_DETLIN_BPM_FILT "BPM_DETLIN_FILT"
422#define ERIS_IFU_PRO_DETLIN_BPM_FILT_FN "eris_ifu_detlin_bpm_filt.fits"
423#define ERIS_IFU_PRO_DETLIN_GAIN_INFO "GAIN_INFO"
424#define ERIS_IFU_PRO_DETLIN_GAIN_INFO_FN "eris_ifu_detlin_gain_info.fits"
425
426//product_level: 2
427#define ERIS_IFU_PRO_DETLIN_DBG_CUBE_ON_FN "eris_ifu_detlin_dbg_cubeOn"
428#define ERIS_IFU_PRO_DETLIN_DBG_CUBE_OFF_FN "eris_ifu_detlin_dbg_cubeOff"
429#define ERIS_IFU_PRO_DETLIN_DBG_CUBE_SUB_FN "eris_ifu_detlin_dbg_cubeSub"
430
431/* eris_ifu_jitter */
432/* product_level: 0 */
433#define ERIS_IFU_PRO_JITTER_CUBE_COMBINE "CUBE_COMBINE"
434#define ERIS_IFU_PRO_JITTER_CUBE_COMBINE_FN "eris_ifu_jitter_cube_combine.fits"
435#define ERIS_IFU_PRO_JITTER_CUBE_MEAN "CUBE_MEAN"
436#define ERIS_IFU_PRO_JITTER_CUBE_MEAN_FN "cube_mean.fits"
437#define ERIS_IFU_PRO_JITTER_CUBE "CUBE"
438#define ERIS_IFU_PRO_JITTER_TWK_CUBE_COADD_FLUXCAL "SKY_TWEAKED_CUBE_COADD_FLUXCAL"
439#define ERIS_IFU_PRO_JITTER_TWK_CUBE_COADD "SKY_TWEAKED_CUBE_COADD"
440#define ERIS_IFU_PRO_JITTER_TWK_CUBE_COADD_FN "eris_ifu_jitter_twk_cube_coadd"
441#define ERIS_IFU_PRO_JITTER_TWK_CUBE_MEAN "SKY_TWEAKED_CUBE_MEAN"
442#define ERIS_IFU_PRO_JITTER_DAR_CUBE_COADD_FLUXCAL "DAR_CORRECTED_CUBE_COADD_FLUXCAL"
443#define ERIS_IFU_PRO_JITTER_DAR_CUBE_COADD "DAR_CORRECTED_CUBE_COADD"
444#define ERIS_IFU_PRO_JITTER_DAR_CUBE_COADD_FN "eris_ifu_jitter_dar_cube_coadd"
445#define ERIS_IFU_PRO_JITTER_OBJ_DAR_CUBE_COADD "DAR_CORRECTED_CUBE_COADD"
446#define ERIS_IFU_PRO_JITTER_OBJ_DAR_CUBE_COADD_FLUXCAL "DAR_CORRECTED_CUBE_COADD_FLUXCAL"
447#define ERIS_IFU_PRO_JITTER_OBJ_DAR_CUBE_MEAN "DAR_CORRECTED_CUBE_MEAN"
448#define ERIS_IFU_PRO_JITTER_OBJ_CUBE_COADD_FLUXCAL_MEAN "OBJECT_CUBE_COADD_FLUXCAL_MEAN"
449#define ERIS_IFU_PRO_JITTER_STD_CUBE_COADD_FLUXCAL_MEAN "STD_CUBE_COADD_FLUXCAL_MEAN"
450#define ERIS_IFU_PRO_JITTER_FLUX_STD_CUBE_COADD_FLUXCAL_MEAN "FLUX_STD_CUBE_COADD_FLUXCAL_MEAN"
451#define ERIS_IFU_PRO_JITTER_STD_FLUX_CUBE_COADD_FLUXCAL_MEAN "STD_FLUX_CUBE_COADD_FLUXCAL_MEAN"
452#define ERIS_IFU_PRO_JITTER_OBJ_DAR_CUBE_MEDIAN "DAR_CORRECTED_CUBE_MEDIAN"
453
454#define ERIS_IFU_PRO_JITTER_TWK_OBJ_CUBE_COADD_FLUXCAL_MEAN "SKY_TWEAKED_CUBE_COADD_FLUXCAL_MEAN"
455
456#define ERIS_IFU_PRO_JITTER_OBJ_CUBE_COADD "OBJECT_CUBE_COADD"
457#define ERIS_IFU_PRO_JITTER_OBJ_CUBE_COADD_FLUXCAL "OBJECT_CUBE_COADD_FLUXCAL"
458#define ERIS_IFU_PRO_JITTER_OBJ_CUBE_MEAN_FLUXCAL "OBJECT_CUBE_MEAN_FLUXCAL"
459#define ERIS_IFU_PRO_JITTER_STD_CUBE_COADD "STD_CUBE_COADD"
460#define ERIS_IFU_PRO_JITTER_STD_CUBE_COADD_FLUXCAL "STD_CUBE_COADD_FLUXCAL"
461#define ERIS_IFU_PRO_JITTER_STD_FLUX_CUBE_COADD "STD_FLUX_CUBE_COADD"
462#define ERIS_IFU_PRO_JITTER_STD_FLUX_CUBE_COADD_FLUXCAL "STD_FLUX_CUBE_COADD_FLUXCAL"
463#define ERIS_IFU_PRO_JITTER_STD_CUBE_COADD_NOFLAT "STD_CUBE_COADD_NOFLAT"
464#define ERIS_IFU_PRO_JITTER_STD_FLUX_CUBE_COADD_NOFLAT "STD_FLUX_CUBE_COADD_NOFLAT"
465#define ERIS_IFU_PRO_JITTER_PSF_CUBE_COADD "PSF_CUBE_COADD"
466#define ERIS_IFU_PRO_JITTER_PUPIL_CUBE_COADD "PUPIL_CUBE_COADD"
467#define ERIS_IFU_PRO_JITTER_PSF_CUBE_COADD_FLUXCAL "PSF_CUBE_COADD_FLUXCAL"
468#define ERIS_IFU_PRO_JITTER_SKY_CUBE_COADD "SKY_CUBE_COADD"
469#define ERIS_IFU_PRO_JITTER_OBJ_CUBE_COADD_FN "eris_ifu_jitter_obj_cube_coadd"
470#define ERIS_IFU_PRO_JITTER_STD_CUBE_COADD_FN "std_cube_coadd"
471#define ERIS_IFU_PRO_JITTER_STD_FLUX_CUBE_COADD_FN "std_flux_cube_coadd"
472#define ERIS_IFU_PRO_JITTER_STD_CUBE_COADD_NOFLAT_FN "std_cube_coadd_no_flat"
473#define ERIS_IFU_PRO_JITTER_STD_FLUX_CUBE_COADD_NOFLAT_FN "std_flux_cube_coadd_no_flat"
474#define ERIS_IFU_PRO_JITTER_PSF_CUBE_COADD_FN "psf_cube_coadd"
475#define ERIS_IFU_PRO_JITTER_PUPIL_CUBE_COADD_FN "pupil_cube_coadd"
476#define ERIS_IFU_PRO_JITTER_CUBE_MEAN "CUBE_MEAN"
477
478//#define ERIS_IFU_PRO_JITTER_EXPOSURE_MAP "OBJECT_EXPOSURE_MAP"
479#define ERIS_IFU_PRO_JITTER_EXPOSURE_MAP "EXPOSURE_MAP"
480#define ERIS_IFU_PRO_JITTER_OBJ_CUBE_MEAN "OBJECT_CUBE_MEAN"
481#define ERIS_IFU_PRO_JITTER_OBJ_CUBE_NOFLAT_MEAN "OBJECT_CUBE_NOFLAT_MEAN"
482#define ERIS_IFU_PRO_JITTER_OBJ_DAR_CUBE_FLUXCAL_MEAN "DAR_CORRECTED_CUBE_COADD_FLUXCAL_MEAN"
483#define ERIS_IFU_PRO_JITTER_STD_CUBE_MEAN "STD_CUBE_MEAN"
484#define ERIS_IFU_PRO_JITTER_STD_CUBE_NOFLAT_MEAN "STD_CUBE_NOFLAT_MEAN"
485#define ERIS_IFU_PRO_JITTER_STD_FLUX_CUBE_MEAN "STD_FLUX_CUBE_MEAN"
486#define ERIS_IFU_PRO_JITTER_PSF_CUBE_MEAN "PSF_CUBE_MEAN"
487#define ERIS_IFU_PRO_JITTER_PSF_CUBE_NOFLAT_MEAN "PSF_CUBE_NOFLAT_MEAN"
488#define ERIS_IFU_PRO_JITTER_SKY_CUBE_MEAN "SKY_CUBE_MEAN"
489#define ERIS_IFU_PRO_JITTER_SKY_CUBE_NOFLAT_MEAN "SKY_CUBE_NOFLAT_MEAN"
490#define ERIS_IFU_PRO_JITTER_CUBE_MEDIAN "CUBE_MEDIAN"
491#define ERIS_IFU_PRO_JITTER_OBJ_CUBE_MEDIAN "OBJECT_CUBE_MEDIAN"
492#define ERIS_IFU_PRO_JITTER_STD_CUBE_MEDIAN "STD_CUBE_MEDIAN"
493#define ERIS_IFU_PRO_JITTER_STD_FLUX_CUBE_MEDIAN "STD_FLUX_CUBE_MEDIAN"
494#define ERIS_IFU_PRO_JITTER_PSF_CUBE_MEDIAN "PSF_CUBE_MEDIAN"
495#define ERIS_IFU_PRO_JITTER_SKY_CUBE_MEDIAN "SKY_CUBE_MEDIAN"
496#define ERIS_IFU_PRO_JITTER_PSF_CUBE_COADD_MEDIAN "PSF_CUBE_COADD_MEDIAN"
497#define ERIS_IFU_PRO_JITTER_STD_CUBE_COADD_MEDIAN "STD_CUBE_COADD_MEDIAN"
498#define ERIS_IFU_PRO_JITTER_STD_FLUX_CUBE_COADD_MEDIAN "STD_FLUX_CUBE_COADD_MEDIAN"
499#define ERIS_IFU_PRO_JITTER_OBJ_CUBE_COADD_MEDIAN "OBJECT_CUBE_COADD_MEDIAN"
500#define ERIS_IFU_PRO_JITTER_PSF_CUBE_COADD_MEAN "PSF_CUBE_COADD_MEAN"
501#define ERIS_IFU_PRO_JITTER_STD_CUBE_COADD_MEAN "STD_CUBE_COADD_MEAN"
502#define ERIS_IFU_PRO_JITTER_OBJ_CUBE_COADD_MEAN "OBJECT_CUBE_COADD_MEAN"
503#define ERIS_IFU_PRO_JITTER_CUBE_MEDIAN_FN "eris_ifu_jitter_cube_median"
504#define ERIS_IFU_PRO_JITTER_CUBE_FN "eris_ifu_jitter_cube"
505#define ERIS_IFU_PRO_JITTER_CUBE_FLUXCAL_FN "eris_ifu_jitter_cube_fluxcal"
506#define ERIS_IFU_PRO_JITTER_PSF_CUBE "PSF_CUBE"
507#define ERIS_IFU_PRO_JITTER_PSF_CUBE_FN "psf_cube"
508#define ERIS_IFU_PRO_JITTER_STD_CUBE "STD_CUBE"
509#define ERIS_IFU_PRO_JITTER_STD_CUBE_NOFLAT "STD_CUBE_NOFLAT"
510#define ERIS_IFU_PRO_JITTER_STD_FLUX_CUBE "STD_FLUX_CUBE"
511#define ERIS_IFU_PRO_JITTER_PUPIL_CUBE "PUPIL_CUBE"
512#define ERIS_IFU_PRO_JITTER_STD_FLUX_CUBE_NOFLAT "STD_FLUX_CUBE_NOFLAT"
513#define ERIS_IFU_PRO_JITTER_STD_CUBE_NOFLAT_FN "std_cube_no_flat"
514#define ERIS_IFU_PRO_JITTER_STD_FLUX_CUBE_FN "std_flux_cube"
515#define ERIS_IFU_PRO_JITTER_STD_FLUX_CUBE_NOFLAT_FN "std_flux_cube_no_flat"
516#define ERIS_IFU_PRO_JITTER_STD_CUBE_FN "std_cube"
517#define ERIS_IFU_PRO_JITTER_OBJ_CUBE "OBJECT_CUBE"
518#define ERIS_IFU_PRO_JITTER_OBJ_CUBE_FN "obj_cube"
519#define ERIS_IFU_PRO_JITTER_SKY_CUBE "SKY_CUBE"
520#define ERIS_IFU_PRO_JITTER_SKY_STD_FLUX_CUBE "SKY_STD_FLUX_CUBE"
521#define ERIS_IFU_PRO_JITTER_SKY_CUBE_FN "sky_cube"
522#define ERIS_IFU_PRO_JITTER_TWK_CUBE "SKY_TWEAKED_CUBE"
523#define ERIS_IFU_PRO_JITTER_TWK_CUBE_FN "twk_cube"
524#define ERIS_IFU_PRO_JITTER_DAR_CUBE "DAR_CORRECTED_CUBE"
525#define ERIS_IFU_PRO_JITTER_DAR_CUBE_FN "dar_cube"
526#define ERIS_IFU_PRO_JITTER_BPM_CUBE "BPM_CUBE"
527#define ERIS_IFU_PRO_JITTER_BPM_CUBE_FN "bpm_cube"
528//product_level: 1
529//product level: 3
530#define ERIS_IFU_PRO_JITTER_DBG_RAW_FN "eris_ifu_jitter_dbg_raw"
531#define ERIS_IFU_PRO_JITTER_DBG_DARK_FN "eris_ifu_jitter_dbg_darksub"
532#define ERIS_IFU_PRO_JITTER_DBG_FLAT_FN "eris_ifu_jitter_dbg_flat"
533#define ERIS_IFU_PRO_JITTER_DBG_WRAP_FN "eris_ifu_jitter_dbg_wrap"
534#define ERIS_IFU_PRO_JITTER_DBG_WAVE_FN "eris_ifu_jitter_dbg_wave"
535#define ERIS_IFU_PRO_JITTER_SPECTRUM "SPECTRUM"
536#define ERIS_IFU_PRO_JITTER_SPECTRUM_NOFLAT "SPECTRUM_NOFLAT"
537#define ERIS_IFU_PRO_JITTER_SPECTRUM_FLUXCAL "SPECTRUM_FLUXCAL"
538#define ERIS_IFU_PRO_JITTER_SPECTRUM_FLUXCAL_FN "eris_ifu_jitter_spectrum_fluxcal"
539#define ERIS_IFU_PRO_JITTER_EXTRACTION_MASK "EXTRACTION_MASK"
540#define ERIS_IFU_PRO_JITTER_EXTRACTION_MASK_FN "eris_ifu_jitter_extraction_mask"
541#define ERIS_IFU_PRO_JITTER_EFFICIENCY "EFFICIENCY"
542#define ERIS_IFU_PRO_JITTER_EFFICIENCY_FN "eris_ifu_jitter_efficiency"
543#define ERIS_IFU_PRO_JITTER_RESPONSE "RESPONSE"
544#define ERIS_IFU_PRO_JITTER_RESPONSE_FN "eris_ifu_jitter_response"
545
546#define ERIS_IFU_PRO_COMBINE "COMBINED_CUBE"
547
548#define ERIS_IFU_PRO_CALIB_TAGS "," \
549 ERIS_IFU_PRO_DARK "," \
550 "MASTER_DARK_IMG" "," \
551 ERIS_IFU_PRO_DARK_BPM "," \
552 ERIS_IFU_PRO_FLAT "," \
553 ERIS_IFU_PRO_FLAT_BPM "," \
554 ERIS_IFU_PRO_WAVE_MAP "," \
555 ERIS_IFU_PRO_DIST_DISTORTION "," \
556 ERIS_IFU_PRO_DIST_BPM "," \
557 ERIS_IFU_PRO_DETLIN_BPM "," \
558 ERIS_IFU_PRO_JITTER_RESPONSE "," \
559 ERIS_IFU_PRO_DETLIN_BPM_FILT ","
560
561#define ERIS_IFU_PRO_JITTER_TAGS "," \
562 ERIS_IFU_PRO_JITTER_OBJ_CUBE "," \
563 ERIS_IFU_PRO_JITTER_STD_CUBE "," \
564 ERIS_IFU_PRO_JITTER_STD_FLUX_CUBE "," \
565 ERIS_IFU_PRO_JITTER_STD_CUBE_NOFLAT "," \
566 ERIS_IFU_PRO_JITTER_STD_FLUX_CUBE_NOFLAT "," \
567 ERIS_IFU_PRO_JITTER_PSF_CUBE "," \
568 ERIS_IFU_PRO_JITTER_SKY_CUBE "," \
569 ERIS_IFU_PRO_JITTER_TWK_CUBE_COADD "," \
570 ERIS_IFU_PRO_JITTER_TWK_CUBE_MEAN "," \
571 ERIS_IFU_PRO_JITTER_SKY_STD_FLUX_CUBE "," \
572 ERIS_IFU_PRO_JITTER_TWK_CUBE "," \
573 ERIS_IFU_PRO_JITTER_BPM_CUBE "," \
574 ERIS_IFU_PRO_JITTER_DAR_CUBE "," \
575 ERIS_IFU_PRO_JITTER_OBJ_DAR_CUBE_COADD "," \
576 ERIS_IFU_PRO_JITTER_OBJ_DAR_CUBE_COADD_FLUXCAL "," \
577 ERIS_IFU_PRO_JITTER_OBJ_DAR_CUBE_MEAN "," \
578 ERIS_IFU_PRO_JITTER_OBJ_DAR_CUBE_MEDIAN "," \
579 ERIS_IFU_PRO_JITTER_OBJ_CUBE_COADD "," \
580 ERIS_IFU_PRO_JITTER_DAR_CUBE_COADD "," \
581 ERIS_IFU_PRO_JITTER_OBJ_CUBE_COADD_FLUXCAL "," \
582 ERIS_IFU_PRO_JITTER_STD_CUBE_COADD "," \
583 ERIS_IFU_PRO_JITTER_STD_CUBE_COADD_FLUXCAL "," \
584 ERIS_IFU_PRO_JITTER_STD_FLUX_CUBE_COADD "," \
585 ERIS_IFU_PRO_JITTER_STD_CUBE_COADD_NOFLAT "," \
586 ERIS_IFU_PRO_JITTER_STD_FLUX_CUBE_COADD_FLUXCAL "," \
587 ERIS_IFU_PRO_JITTER_STD_FLUX_CUBE_COADD_NOFLAT "," \
588 ERIS_IFU_PRO_JITTER_PSF_CUBE_COADD "," \
589 ERIS_IFU_PRO_JITTER_PSF_CUBE_COADD_FLUXCAL "," \
590 ERIS_IFU_PRO_JITTER_SKY_CUBE_COADD "," \
591 ERIS_IFU_PRO_JITTER_OBJ_CUBE_MEAN "," \
592 ERIS_IFU_PRO_JITTER_STD_CUBE_MEAN "," \
593 ERIS_IFU_PRO_JITTER_OBJ_CUBE_NOFLAT_MEAN "," \
594 ERIS_IFU_PRO_JITTER_STD_CUBE_NOFLAT_MEAN "," \
595 ERIS_IFU_PRO_JITTER_PSF_CUBE_NOFLAT_MEAN "," \
596 ERIS_IFU_PRO_JITTER_SKY_CUBE_NOFLAT_MEAN "," \
597 ERIS_IFU_PRO_JITTER_STD_FLUX_CUBE_MEAN "," \
598 ERIS_IFU_PRO_JITTER_PSF_CUBE_MEAN "," \
599 ERIS_IFU_PRO_JITTER_STD_CUBE_MEDIAN "," \
600 ERIS_IFU_PRO_JITTER_STD_FLUX_CUBE_MEDIAN "," \
601 ERIS_IFU_PRO_JITTER_PSF_CUBE_MEDIAN "," \
602 ERIS_IFU_PRO_JITTER_SKY_CUBE_MEAN "," \
603 ERIS_IFU_PRO_JITTER_SKY_CUBE_MEDIAN "," \
604 ERIS_IFU_PRO_JITTER_PSF_CUBE_COADD_MEDIAN "," \
605 ERIS_IFU_PRO_JITTER_STD_CUBE_COADD_MEDIAN "," \
606 ERIS_IFU_PRO_JITTER_STD_FLUX_CUBE_COADD_MEDIAN "," \
607 ERIS_IFU_PRO_JITTER_OBJ_CUBE_COADD_MEDIAN "," \
608 ERIS_IFU_PRO_JITTER_PSF_CUBE_COADD_MEAN "," \
609 ERIS_IFU_PRO_JITTER_STD_CUBE_COADD_MEAN "," \
610 ERIS_IFU_PRO_JITTER_OBJ_CUBE_COADD_MEAN "," \
611 ERIS_IFU_PRO_JITTER_CUBE_MEAN "," \
612 ERIS_IFU_PRO_JITTER_SPECTRUM "," \
613 ERIS_IFU_PRO_JITTER_SPECTRUM_FLUXCAL "," \
614 ERIS_IFU_PRO_JITTER_OBJ_CUBE "," \
615 ERIS_IFU_PRO_JITTER_RESPONSE "," \
616 ERIS_IFU_PRO_JITTER_EXTRACTION_MASK "," \
617 ERIS_IFU_PRO_JITTER_EFFICIENCY "," \
618 ERIS_IFU_PRO_JITTER_EXPOSURE_MAP "," \
619 ERIS_IFU_PRO_JITTER_CUBE ","
620
621
622/*----------------------------------------------------------------------------
623 * Product frame types for ERIS/SPIFFIER
624 *--------------------------------------------------------------------------*/
625
626#define ERIS_IFU_PRO_OBS_STD "OBS_STD"
627
628/*----------------------------------------------------------------------------
629 * FITS extension names for OH spectra
630 *--------------------------------------------------------------------------*/
631#define OH_SPECTRA_J "OHspec_J"
632#define OH_SPECTRA_H "OHspec_H"
633#define OH_SPECTRA_K "OHspec_K"
634#define OH_SPECTRA_HK "OHspec_HK"
635
636// saturation
638#define ERIS_IFU_FLAT_SATURATED 50000
639
641#define ERIS_IFU_FLAT_SAT_MIN 2
642
643/*----------------------------------------------------------------------------
644 * DQI constants (Data Quality I...) (FITS16BIT)
645 *--------------------------------------------------------------------------*/
646// Value: // Bit#:
647#define ERIS_DQI_GOOD 0 // 0: good data
648//#define ERIS_DQI_TLC_CORR 1 // 1: affected by telluric feature (corrected)
649//#define ERIS_DQI_TLC_UNCORR 2 // 2: affected by telluric feature (uncorrected)
650//#define ERIS_DQI_GHOST 4 // 3: ghost/stray light at >10% intensity level
651#define ERIS_DQI_SAT 8 // 4: saturated data value
652#define ERIS_DQI_BP 16 // 5: bad pixel (general)
653//#define ERIS_DQI_NA_LASER 32 // 6: Na-laser notch filter affected
654#define ERIS_DQI_BP_BPM2D 64 // 7: user def: bad pixel from BPM 2D
655#define ERIS_DQI_BP_BPM3D 128 // 8: user def: bad pixel from BPM 3D
656#define ERIS_DQI_FLAT 256 // 9: user def: bad pixel from flat
657#define ERIS_DQI_DETLIN 512 // 10: user def: no linear pixel
658#define ERIS_DQI_SKY 1024 // 11: user def: added due sky subtraction
659//#define ERIS_DQI_xxx 2048 // 12: user def:
660//#define ERIS_DQI_xxx 4096 // 13: user def:
661//#define ERIS_DQI_MISSING_DATA 8192 // 14: missing data
662//#define ERIS_DQI_OUTSIDE_DATA_RANGE 16384 // 15: outside data range
663
664/*----------------------------------------------------------------------------
665 * Definitions for FITS files with data, error and data quality (DEQ) extens.
666 *--------------------------------------------------------------------------*/
667#define FHDR_HDUCLASS "HDUCLASS"
668#define FHDR_HDUDOC "HDUDOC"
669#define FHDR_HDUVERS "HDUVERS"
670#define FHDR_HDUCLAS1 "HDUCLAS1"
671#define FHDR_HDUCLAS2 "HDUCLAS2"
672#define FHDR_HDUCLAS3 "HDUCLAS3"
673#define FHDR_EXTNAME "EXTNAME"
674#define FHDR_SCIDATA "SCIDATA"
675#define FHDR_ERRDATA "ERRDATA"
676#define FHDR_QUALDATA "QUALDATA"
677
678#define DEQ_HDUCLASS "ESO"
679#define DEQ_HDUDOC "SDP"
680#define DEQ_HDUVERS "SPD version 8"
681#define DEQ_HDUCLAS1 "IMAGE"
682#define DEQ_HDUCLAS2_DATA "DATA"
683#define DEQ_HDUCLAS2_ERROR "ERROR"
684#define DEQ_HDUCLAS2_QUAL "QUALITY"
685#define DEQ_SCIDATA "DATA"
686#define DEQ_ERRDATA "ERROR"
687#define DEQ_QUALDATA "DQI"
688
689typedef enum {
690 mse=0,
691 rmse=1,
692 invmse=2,
693 invrmse=3} deqErrorType;
694
695static const char *const deqErrorTypeString[] = {
696 "MSE",
697 "RMSE",
698 "INVMSE",
699 "INVRMSE"
700};
701
702typedef enum {
703 maskzero=0,
704 maskone=1,
705 flag32bit=2,
706 flag16bit=3,
707 unspecified=4} deqQualityType;
708
709static const char *const deqQualityTypeString[] = {
710 "MASKZERO",
711 "MASKONE",
712 "FLAG32BIT",
713 "FLAG16BIT",
714 "UNSPECIFIED"
715};
716
717/*-----------------------------------------------------------------------------
718 Functions prototypes
719 -----------------------------------------------------------------------------*/
720cpl_boolean eris_ifu_tag_is_cdb(char *tag);
721cpl_boolean eris_ifu_tag_is_sky(const char *tag);
722cpl_boolean eris_ifu_tag_is_obj(const char *tag);
723
724cpl_error_code eris_ifu_dfs_set_groups(cpl_frameset *);
725
726cpl_frameset *
728 const cpl_frameset * in,
729 const char * tag);
730
731cpl_error_code eris_ifu_save_deq_image(
732 cpl_frameset *allframes,
733 cpl_propertylist * header,
734 const cpl_parameterlist *parlist,
735 const cpl_frameset *usedframes,
736 const cpl_frame *inherit,
737 const char *recipe,
738 const cpl_propertylist *applist,
739 const char *remregexp,
740 const char *filename,
741 const cpl_image *image,
742 const cpl_image *error,
743 deqErrorType errorType,
744 const cpl_image *dataQualityMask,
745 deqQualityType qualityType,
746 const char* unit);
747
748cpl_error_code eris_ifu_save_deq_cube(
749 cpl_frameset *allframes,
750 cpl_propertylist * header,
751 const cpl_parameterlist *parlist,
752 const cpl_frameset *usedframes,
753 const cpl_frame *inherit,
754 const char *recipe,
755 cpl_propertylist *applist,
756 const char *remregexp,
757 const char *filename,
758 cpl_imagelist *image,
759 cpl_imagelist *error,
760 deqErrorType errorType,
761 const cpl_imagelist *dataQualityMask,
762 deqQualityType qualityType/*,
763 cpl_type imageType*/);
764
765
766cpl_error_code eris_ifu_save_image_phase3(
767 cpl_frameset *allframes,
768// cpl_propertylist * header,
769 const cpl_parameterlist *parlist,
770 const cpl_frameset *usedframes,
771// const cpl_frame *inherit,
772 const char *recipe,
773 const cpl_propertylist *applist,
774 const char *remregexp,
775 const char *filename,
776 const cpl_image *image,
777 cpl_type type,
778 const char* unit);
779
780cpl_error_code eris_ifu_save_table(cpl_frameset *allframes,
781 cpl_propertylist *header,
782 const cpl_parameterlist *parlist,
783 const cpl_frameset *usedframes,
784 const cpl_frame *inherit,
785 const char *recipe,
786 const char *procatg,
787 cpl_propertylist *applist,
788 const char *remregexp,
789 const char *filename,
790 const cpl_table *table);
791
792//cpl_error_code eris_ifu_save_bpm(cpl_frameset *allframes,
793// cpl_propertylist *header,
794// const cpl_parameterlist *parlist,
795// const cpl_frameset *usedframes,
796// const cpl_frame *inherit,
797// const char *recipe,
798// const char *procatg,
799// cpl_propertylist *applist,
800// const char *remregexp,
801// const char *filename,
802// const cpl_image *bpm);
803
804cpl_error_code eris_ifu_load_deq_image(
805 const char *filename,
806 cpl_propertylist **primaryHeader,
807 cpl_image **dataImage,
808 cpl_image **errImage,
809 cpl_image **qualImage,
810 deqErrorType *errorType,
811 deqQualityType *qualityType);
812
813cpl_error_code eris_ifu_load_deq_imagelist(
814 const char *filename,
815 cpl_propertylist **primaryHeader,
816 cpl_imagelist **dataImagelist,
817 cpl_imagelist **errImagelist,
818 cpl_imagelist **qualImagelist,
819 deqErrorType *errorType,
820 deqQualityType *qualityType);
821
823 const char *filename,
824 cpl_propertylist **primaryHeader,
825 cpl_image **qualImage,
826 deqQualityType *qualityType);
827
828hdrl_imagelist * eris_ifu_load_deq_hdrl_imagelist (
829 const char *filename,
830 cpl_propertylist **primaryHeader,
831 cpl_imagelist **qualImagelist,
832 deqQualityType *qualityType);
833
835 const cpl_frame *frame,
836 ifsBand band,
837 ifsPreopticsScale scale,
838 cpl_image **qualImage,
839 deqQualityType *qualType);
840
842 const char *filename,
843 ifsBand band,
844 ifsPreopticsScale scale,
845 cpl_image **qualImage,
846 deqQualityType *qualType);
847
849 const char* filename,
850 cpl_polynomial ** poly_u,
851 cpl_polynomial ** poly_v);
852
854 const char* filename,
855 cpl_polynomial ***polynomials,
856 cpl_table **borders);
857
858cpl_vector *eris_ifu_load_distances(
859 const char* filename);
860
861cpl_bivector * eris_ifu_load_slit_positions(
862 const char* filename);
863
864cpl_error_code eris_ifu_append_qc_int(
865 cpl_propertylist *pl,
866 const char *name,
867 int val,
868 const char* comment);
869cpl_error_code eris_ifu_append_qc_double(
870 cpl_propertylist *pl,
871 const char *name,
872 double val,
873 const char* comment);
874cpl_error_code eris_ifu_append_qc_float(
875 cpl_propertylist *pl,
876 const char *name,
877 float val,
878 const char* comment);
879cpl_error_code eris_ifu_set_qc_int(
880 cpl_propertylist *pl,
881 const char *name,
882 int val,
883 const char* comment);
884
885bool eris_ifu_frame_is_on(const cpl_frame *fr);
886
887bool eris_ifu_frame_is_sky(const cpl_frame *fr);
888
889int eris_ifu_get_callamp_status(cpl_propertylist *header);
890
891float eris_ifu_get_dit(cpl_propertylist *header);
892
893ifsBand eris_ifu_get_band(const cpl_propertylist *header);
894
895ifsInstrument eris_ifu_get_instrument(const cpl_propertylist *header);
896
897ifsPreopticsScale eris_ifu_get_preopticsScale(
898 cpl_propertylist *header);
899cpl_error_code eris_ifu_heades_add_hduclass_common(cpl_propertylist* plist,
900 const char* deq_hduclas);
901cpl_error_code eris_ifu_heades_add_hduclass_data(cpl_propertylist* plist);
902cpl_error_code eris_ifu_heades_add_hduclass_errs(cpl_propertylist* plist,
903 deqErrorType errorType);
904cpl_error_code eris_ifu_heades_add_hduclass_qual(cpl_propertylist* plist,
905 deqQualityType qualityType);
906
907ifsPreopticsScale
908eris_ifu_get_spiffier_preoptics_scale(const char *scaleId);
909
910ifsPreopticsScale
911eris_ifu_get_spiffi_preoptics_scale(const char *scaleId);
912double eris_get_cumoffs_ra(cpl_frame * frame);
913double eris_get_cumoffs_dec(cpl_frame * frame);
914double eris_get_mjd_obs(cpl_frame * frame);
915cpl_error_code
916eris_ifu_extract_mst_frames(const cpl_frameset * sof, cpl_frameset* cdb);
917cpl_error_code
918eris_ifu_extract_sky_frames(const cpl_frameset * sof, cpl_frameset* sky);
919cpl_error_code
920eris_ifu_extract_obj_frames(const cpl_frameset * sof, cpl_frameset* obj);
921
922#endif
cpl_error_code eris_ifu_load_deq_image(const char *filename, cpl_propertylist **primaryHeader, cpl_image **dataImage, cpl_image **errImage, cpl_image **qualImage, deqErrorType *errorType, deqQualityType *qualityType)
‍** Function to write a DFS compliant pipeline product with a badpixel map
Definition: eris_ifu_dfs.c:889
cpl_error_code eris_ifu_append_qc_float(cpl_propertylist *pl, const char *name, float val, const char *comment)
Append a QC parameter of type FLOAT to a property list.
ifsPreopticsScale eris_ifu_get_preopticsScale(cpl_propertylist *header)
Return the the pre-optics scaling.
cpl_error_code eris_ifu_append_qc_double(cpl_propertylist *pl, const char *name, double val, const char *comment)
Append a QC parameter of type DOUBLE to a property list.
cpl_bivector * eris_ifu_load_slit_positions(const char *filename)
Load slitlet position bivector from a table.
float eris_ifu_get_dit(cpl_propertylist *header)
Get the detector integration time (DIT) from FITS header.
cpl_error_code eris_ifu_heades_add_hduclass_qual(cpl_propertylist *plist, deqQualityType qualityType)
Add quality extension classification properties to FITS header.
Definition: eris_ifu_dfs.c:324
bool eris_ifu_frame_is_sky(const cpl_frame *fr)
Determine if a frame is a sky frame.
cpl_error_code eris_ifu_load_deq_imagelist(const char *filename, cpl_propertylist **primaryHeader, cpl_imagelist **dataImagelist, cpl_imagelist **errImagelist, cpl_imagelist **qualImagelist, deqErrorType *errorType, deqQualityType *qualityType)
Load a DEQ-format imagelist (cube) with data, error, and quality extensions.
ifsPreopticsScale eris_ifu_get_spiffier_preoptics_scale(const char *scaleId)
Determine observing scale on Sky.
cpl_error_code eris_ifu_extract_obj_frames(const cpl_frameset *sof, cpl_frameset *obj)
extract object raw frames from frame set and put them in a new one
cpl_error_code eris_ifu_load_distortion_polynomials(const char *filename, cpl_polynomial ***polynomials, cpl_table **borders)
Load distortion polynomials and slitlet borders from a table.
cpl_frameset * eris_ifu_extract_frameset(const cpl_frameset *in, const char *tag)
Extract frames with a specific tag from a frameset.
Definition: eris_ifu_dfs.c:201
cpl_error_code eris_ifu_save_image_phase3(cpl_frameset *allframes, const cpl_parameterlist *parlist, const cpl_frameset *usedframes, const char *recipe, const cpl_propertylist *applist, const char *remregexp, const char *filename, const cpl_image *image, cpl_type type, const char *unit)
Save a DFS-compliant Phase 3 image product.
Definition: eris_ifu_dfs.c:666
hdrl_image * eris_ifu_load_cal_image_frame(const cpl_frame *frame, ifsBand band, ifsPreopticsScale scale, cpl_image **qualImage, deqQualityType *qualType)
Load a calibration image from a frame.
double eris_get_mjd_obs(cpl_frame *frame)
find out the Julian Date of the observation
hdrl_image * eris_ifu_load_cal_image_file(const char *filename, ifsBand band, ifsPreopticsScale scale, cpl_image **qualImage, deqQualityType *qualType)
Load a calibration image from a filename.
ifsPreopticsScale eris_ifu_get_spiffi_preoptics_scale(const char *scaleId)
Determine observing scale on Sky.
ifsInstrument eris_ifu_get_instrument(const cpl_propertylist *header)
Return the used instrument of the FITS file header.
hdrl_imagelist * eris_ifu_load_deq_hdrl_imagelist(const char *filename, cpl_propertylist **primaryHeader, cpl_imagelist **qualImagelist, deqQualityType *qualityType)
Load a DEQ-format cube into an HDRL imagelist structure.
cpl_error_code eris_ifu_heades_add_hduclass_common(cpl_propertylist *plist, const char *deq_hduclas)
Add common HDU classification properties to FITS header.
Definition: eris_ifu_dfs.c:248
double eris_get_cumoffs_ra(cpl_frame *frame)
find out the ESO OCS CUMOFFS RA of the observation
cpl_boolean eris_ifu_tag_is_obj(const char *tag)
Add PRO* keywords to a SINFONI FITS header.
hdrl_image * eris_ifu_load_deq_hdrl_image(const char *filename, cpl_propertylist **primaryHeader, cpl_image **qualImage, deqQualityType *qualityType)
Load a DEQ-format file into an HDRL image structure.
cpl_error_code eris_ifu_dfs_set_groups(cpl_frameset *)
Set the frame group (RAW, CALIB, or PRODUCT) for all frames in a frameset.
Definition: eris_ifu_dfs.c:89
double eris_get_cumoffs_dec(cpl_frame *frame)
find out the ESO OCS CUMOFFS DEC of the observation
cpl_boolean eris_ifu_tag_is_sky(const char *tag)
check if input frame tag is a static of master calibration
cpl_error_code eris_ifu_set_qc_int(cpl_propertylist *pl, const char *name, int val, const char *comment)
Set (or update) a QC parameter of type INT in a property list.
cpl_boolean eris_ifu_tag_is_cdb(char *tag)
check if input frame tag is a static of master calibration
cpl_error_code eris_ifu_save_deq_image(cpl_frameset *allframes, cpl_propertylist *header, const cpl_parameterlist *parlist, const cpl_frameset *usedframes, const cpl_frame *inherit, const char *recipe, const cpl_propertylist *applist, const char *remregexp, const char *filename, const cpl_image *image, const cpl_image *error, deqErrorType errorType, const cpl_image *dataQualityMask, deqQualityType qualityType, const char *unit)
Save a DFS-compliant image product with data, error, and quality extensions.
Definition: eris_ifu_dfs.c:367
int eris_ifu_get_callamp_status(cpl_propertylist *header)
Return a bit mask indicating which calibration lamps are turned on.
cpl_error_code eris_ifu_save_deq_cube(cpl_frameset *allframes, cpl_propertylist *header, const cpl_parameterlist *parlist, const cpl_frameset *usedframes, const cpl_frame *inherit, const char *recipe, cpl_propertylist *applist, const char *remregexp, const char *filename, cpl_imagelist *image, cpl_imagelist *error, deqErrorType errorType, const cpl_imagelist *dataQualityMask, deqQualityType qualityType)
Save a DFS-compliant cube product with data, error, and quality extensions.
Definition: eris_ifu_dfs.c:516
cpl_error_code eris_ifu_save_table(cpl_frameset *allframes, cpl_propertylist *header, const cpl_parameterlist *parlist, const cpl_frameset *usedframes, const cpl_frame *inherit, const char *recipe, const char *procatg, cpl_propertylist *applist, const char *remregexp, const char *filename, const cpl_table *table)
Save a DFS-compliant table product.
Definition: eris_ifu_dfs.c:745
cpl_error_code eris_ifu_heades_add_hduclass_data(cpl_propertylist *plist)
Add data extension classification properties to FITS header.
Definition: eris_ifu_dfs.c:273
cpl_vector * eris_ifu_load_distances(const char *filename)
Load slitlet distance vector from a table.
ifsBand eris_ifu_get_band(const cpl_propertylist *header)
Determine preoptic band.
cpl_error_code eris_ifu_append_qc_int(cpl_propertylist *pl, const char *name, int val, const char *comment)
Append a QC parameter of type INT to a property list.
cpl_error_code eris_ifu_extract_sky_frames(const cpl_frameset *sof, cpl_frameset *sky)
extract sky raw frames from frame set and put them in a new one
cpl_error_code eris_ifu_heades_add_hduclass_errs(cpl_propertylist *plist, deqErrorType errorType)
Add error extension classification properties to FITS header.
Definition: eris_ifu_dfs.c:297
cpl_error_code eris_ifu_load_distortion_polynomials_old(const char *filename, cpl_polynomial **poly_u, cpl_polynomial **poly_v)
Load old-format distortion polynomials from a table.
cpl_error_code eris_ifu_extract_mst_frames(const cpl_frameset *sof, cpl_frameset *cdb)
extract master and ref frames from input set and put them in a new one
bool eris_ifu_frame_is_on(const cpl_frame *fr)
Determine if a frame has calibration lamps ON or OFF.