00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef MUSE_LSF_PARAMS_H
00023 #define MUSE_LSF_PARAMS_H
00024
00025
00026
00027
00028 #include <cpl.h>
00029
00030 #include "muse_cplwrappers.h"
00031 #include "muse_pixtable.h"
00032 #include "muse_processing.h"
00033
00034 #define USE_LSF_PARAMS // define this for support of (old) LSF table support
00035
00036
00037
00038
00042 #define MAX_HERMIT_ORDER 4
00043
00044
00051
00052 typedef struct {
00053 int ifu;
00054 int slice;
00055 double refraction;
00056 double offset;
00058 double lambda_ref;
00060 cpl_array *sensitivity;
00062 double slit_width;
00064 double bin_width;
00066 cpl_array *lsf_width;
00068 cpl_array *hermit[MAX_HERMIT_ORDER];
00069 } muse_lsf_params;
00070
00074
00075 typedef struct {
00076 cpl_size n_param;
00077 cpl_size offset;
00078 cpl_size refraction;
00079 cpl_size sensitivity;
00080 cpl_size slit_width;
00081 cpl_size bin_width;
00082 cpl_size lsf_width;
00083 cpl_size hermit[MAX_HERMIT_ORDER];
00084 } muse_lsf_fit_params;
00085
00088
00089
00090
00091
00092 muse_lsf_params *muse_lsf_params_new(cpl_size, cpl_size, cpl_size);
00093 cpl_size muse_lsf_params_get_size(muse_lsf_params **);
00094 void muse_lsf_params_delete(muse_lsf_params *);
00095 void muse_lsf_params_delete_all(muse_lsf_params **);
00096 cpl_error_code muse_lsf_params_save(const muse_lsf_params **, const char *);
00097 muse_lsf_params **muse_lsf_params_load(const char *, muse_lsf_params **, int);
00098 muse_lsf_params **muse_processing_lsf_params_load(muse_processing *, int);
00099 muse_lsf_params *muse_lsf_params_get(muse_lsf_params **, int, int);
00100
00101 cpl_error_code muse_lsf_params_apply(const muse_lsf_params *,
00102 cpl_array *, double);
00103 cpl_array *muse_lsf_params_spectrum(const cpl_array *, cpl_table *,
00104 const muse_lsf_params *);
00105 muse_lsf_params *muse_lsf_params_fit(muse_pixtable *, cpl_table *, int);
00106 double muse_lsf_fwhm_lambda(const muse_lsf_params *, double,
00107 double, unsigned int);
00108
00109
00110 #endif