21#ifndef ERISP_ERIS_ERIS_IFU_JITTER_STATIC_H_
22#define ERISP_ERIS_ERIS_IFU_JITTER_STATIC_H_
34#include <gsl/gsl_interp2d.h>
38#include "eris_ifu_functions.h"
39#include "eris_ifu_jitter_interface.h"
40#include "eris_ifu_extract_spec_static.h"
46typedef enum {OBJECT_CUBE, STD_CUBE, PSF_CUBE, STD_FLUX_CUBE, SKY_OBJECT_CUBE,
47 SKY_STD_CUBE, SKY_PSF_CUBE, SKY_STD_FLUX_CUBE, TWEAKED_CUBE, TWEAKED_STD_CUBE,
48 DAR_CUBE, DAR_STD_CUBE, DAR_PSF_CUBE, DAR_STD_FLUX_CUBE, PUPIL_CUBE,
49 JITTER_CUBE, BPM_CUBE, STD_CUBE_NOFLAT, STD_FLUX_CUBE_NOFLAT,
50 OBJECT_CUBE_COADD, TWEAKED_CUBE_COADD, DAR_CUBE_COADD,DAR_STD_CUBE_COADD,
51 DAR_PSF_CUBE_COADD, DAR_PUPIL_CUBE_COADD, STD_CUBE_COADD,
52 PSF_CUBE_COADD, STD_FLUX_CUBE_COADD, PUPIL_CUBE_COADD,
53 STD_FLUX_CUBE_COADD_NOFLAT, STD_CUBE_COADD_NOFLAT}
70cpl_error_code eris_ifu_jitter_process_exposures(
struct sofStruct *sof,
71 struct stdParamStruct stdParams,
72 struct paramStruct params,
73 cpl_frameset *frameset,
74 const cpl_parameterlist * parlist,
75 const char* recipe_name,
78cpl_error_code eris_ifu_jitter_process_cubes(
struct sofStruct *sof,
79 struct stdParamStruct stdParams,
80 struct paramStruct params,
81 cpl_frameset *frameset,
82 const cpl_parameterlist * parlist,
83 const char* recipe_name,
86cpl_imagelist *eris_ifu_jitter_reconstruct_cube(
87 cpl_image *resampledDetImage,
88 slitletDetectionModes mode,
91 cpl_vector *distancesV,
92 cpl_bivector *positionsVV);
94hdrl_image *eris_ifu_jitter_subtract_background(
95 skyTweakModes sky_tweak,
97 struct sofStruct *sof,
98 productDepthType productDepth);
100hdrl_imagelist *eris_ifu_jitter_build_cube(
103 struct sofStruct *sof,
104 struct paramStruct params,
105 bool doVelocityCorrection,
106 cpl_polynomial *ohLambdaCorrection,
107 productDepthType productDepth);
109cpl_error_code eris_ifu_extract_spec(
110 const cpl_imagelist *data_in,
111 const cpl_imagelist *noise_in,
113 cpl_vector **spec_data_out,
114 cpl_vector **spec_noise_out);
117eris_ifu_jitter_get_obj_type(sofModes mode);
119eris_ifu_jitter_get_sky_type(sofModes mode);
121eris_ifu_jitter_get_coadd_obj_type(cubeType type);
123eris_ifu_jitter_get_procatg_and_filename(cubeType type,
char **proCatg,
124 char **filenamePrefix);
126void eris_ifu_jitter_free_sofStruct(
struct sofStruct* sof_struct);
129eris_ifu_jitter_extract(cpl_frameset * frameset,
130 const cpl_parameterlist * parlist, cubeType obj_type,
const char* pcatg,
131 struct stdParamStruct stdParams,
const char* recipe_name,
132 const char* context);
134eris_ifu_jitter_extract_spec_processSof(
136 cpl_frameset* frames,
137 struct esParamStruct params,
138 struct esSofStruct *sof);
140cpl_error_code eris_ifu_extract_spec_fetch_params(
141 const cpl_parameterlist * parlist,
142 struct esParamStruct *params,
143 const char* context);
145cpl_error_code eris_ifu_dar_correction(hdrl_imagelist *cube,
146 cpl_propertylist *hdr,
151cpl_error_code eris_ifu_dar_cpl_shift(
157 cpl_kernel kernelType,
159 cpl_size kernelSize);
161cpl_error_code eris_ifu_dar_gsl_shift(
166 const gsl_interp2d_type *T);
169eris_ifu_jitter_get_cube_type_string(cubeType type);
172eris_frameset_duplicate_cube_tag(cpl_frameset* frameset,
const char* pcatg, cpl_boolean apply_flat);
174eris_frameset_count_tag(cpl_frameset * sof,
const char* tag);
176cpl_error_code eris_ifu_update_wcs_with_OCS_keywords(
177 struct sofStruct *sof);