X-shooter Pipeline Reference Manual 3.8.15
Data Structures | Macros | Enumerations | Functions
xsh_utils.h File Reference
#include <cpl.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <xsh_globals.h>
#include <xsh_data_grid.h>
#include <xsh_utils_polynomial.h>
#include <xsh_data_instrument.h>
#include <xsh_parameters.h>

Go to the source code of this file.

Data Structures

struct  xsh_sort_data
 
struct  XSH_GAUSSIAN_FIT
 

Macros

#define M_PI   3.1415926535897932384626433832795
 
#define XSH_MAX(A, B)    A > B ? A : B
 
#define XSH_MALLOC(POINTER, TYPE, SIZE)
 
#define XSH_CALLOC(POINTER, TYPE, SIZE)
 
#define XSH_REALLOC(POINTER, TYPE, SIZE)
 
#define XSH_NEW_PROPERTYLIST(POINTER)
 
#define XSH_NEW_FRAME(POINTER)
 
#define XSH_NEW_FRAMESET(POINTER)
 
#define XSH_FREE(POINTER)
 
#define XSH_PREFIX(prefix, name, instr)
 
#define XSH_MODE_PREFIX(prefix, name, instr)
 
#define XSH_TABLE_NEW_COL(TABLE, NAME, UNIT, TYPE)
 
#define BOOLEAN_TO_STRING(boolean)    boolean == 0 ? "false" : "true"
 

Enumerations

enum  { XSH_DEBUG_LEVEL_NONE , XSH_DEBUG_LEVEL_LOW , XSH_DEBUG_LEVEL_MEDIUM , XSH_DEBUG_LEVEL_HIGH }
 

Functions

long xsh_round_double (double x)
 Computes round(x)
 
double xsh_max_double (double x, double y)
 Maximum of two numbers.
 
double xsh_pow_int (double x, int y)
 Computes x^y.
 
void xsh_random_init (void)
 
int xsh_get_random_int_window (const int v1, const int v2)
 generates random integer values in range [v1,v2]
 
double xsh_get_random_double_window (const double v1, const double v2)
 generates random integer values in range [v1,v2]
 
cpl_frame * xsh_frame_inv (cpl_frame *in, const char *filename, xsh_instrument *instr)
 Inverse the flux of a PRE frame.
 
cpl_frame * xsh_frame_abs (cpl_frame *in, xsh_instrument *instr, cpl_frame **sign)
 Computes absolute value of a frame.
 
cpl_frame * xsh_frame_mult (cpl_frame *in, xsh_instrument *instr, cpl_frame *sign)
 Computes product of two input frames.
 
cpl_parameterlist * xsh_parameterlist_duplicate (const cpl_parameterlist *pin)
 Extract frames with given tag from frameset.
 
void xsh_plist_dump (cpl_propertylist *plist)
 Dump propertylist.
 
cpl_error_code xsh_frameset_dump (cpl_frameset *set)
 Dump frameset.
 
char * xsh_get_basename (const char *filename)
 Return base filename.
 
const char * xsh_get_license (void)
 Get the pipeline copyright and license.
 
void xsh_init (void)
 Reset library state.
 
int xsh_min_int (int x, int y)
 Minimum of two numbers.
 
int xsh_max_int (int x, int y)
 Maximum of two numbers.
 
void xsh_free (const void *mem)
 Deallocate memory.
 
void xsh_free_temporary_files (void)
 Free temprary files list.
 
cpl_error_code xsh_end (const char *recipe_id, cpl_frameset *frames, cpl_parameterlist *list)
 Recipe termination.
 
cpl_error_code xsh_begin (cpl_frameset *frames, const cpl_parameterlist *parameters, xsh_instrument **instr, cpl_frameset **raws, cpl_frameset **calib, const char *tag_list[], int tag_list_size, const char *recipe_id, unsigned int binary_version, const char *short_descr)
 Recipe initialization.
 
void xsh_add_temporary_file (const char *name)
 Add temporary file to temprary files list.
 
cpl_error_code xsh_get_property_value (const cpl_propertylist *plist, const char *keyword, cpl_type keywordtype, void *result)
 Read a property value from a property list.
 
char * xsh_sdate_utc (time_t *t)
 
char * xsh_stringdup (const char *s1)
 String duplication.
 
char * xsh_stringcat (const char *s1, const char *s2)
 String concatenation.
 
char * xsh_stringcat_3 (const char *s1, const char *s2, const char *s3)
 String concatenation.
 
char * xsh_stringcat_4 (const char *s1, const char *s2, const char *s3, const char *s4)
 String concatenation.
 
char * xsh_stringcat_5 (const char *s1, const char *s2, const char *s3, const char *s4, const char *s5)
 String concatenation.
 
char * xsh_stringcat_6 (const char *s1, const char *s2, const char *s3, const char *s4, const char *s5, const char *s6)
 String concatenation.
 
char * xsh_stringcat_any (const char *s,...)
 Concatenate an arbitrary number of strings.
 
void xsh_reindex (double *data, int *idx, int size)
 TO BE DESCRIBED.
 
void xsh_reindex_float (float *data, int *idx, int size)
 TO BE DESCRIBED.
 
void xsh_reindex_int (int *data, int *idx, int size)
 TO BE DESCRIBED.
 
int * xsh_sort (void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *))
 Sort an array and give is index table.
 
void xsh_tools_min_max (int size, double *tab, double *min, double *max)
 computes min & max in ab array
 
void xsh_tools_get_statistics (double *tab, int size, double *median, double *mean, double *stdev)
 Compute median, stdev and mean for the tab.
 
void xsh_free_table (cpl_table **t)
 Deallocate a table and set the pointer to NULL.
 
void xsh_free_image (cpl_image **i)
 Deallocate an image and set the pointer to NULL.
 
void xsh_free_mask (cpl_mask **m)
 Deallocate an image mask and set the pointer to NULL.
 
void xsh_free_imagelist (cpl_imagelist **i)
 Deallocate an image list and set the pointer to NULL.
 
void xsh_free_propertylist (cpl_propertylist **p)
 Deallocate a property list and set the pointer to NULL.
 
void xsh_free_polynomial (cpl_polynomial **p)
 Deallocate a polynomial and set the pointer to NULL.
 
void xsh_free_matrix (cpl_matrix **m)
 Deallocate a matrix and set the pointer to NULL.
 
void xsh_free_array (cpl_array **v)
 Deallocate an array and set the pointer to NULL.
 
void xsh_free_vector (cpl_vector **v)
 Deallocate a vector and set the pointer to NULL.
 
void xsh_free_stats (cpl_stats **s)
 Deallocate a stats object and set the pointer to NULL.
 
void xsh_unwrap_image (cpl_image **i)
 Unwrap an image and set the pointer to NULL.
 
void xsh_unwrap_vector (cpl_vector **v)
 Unwrap a vector and set the pointer to NULL.
 
void xsh_unwrap_array (cpl_array **a)
 Unwrap an array and set the pointer to NULL.
 
void xsh_unwrap_bivector_vectors (cpl_bivector **b)
 Unwrap a bi-vector and set the pointer to NULL.
 
void xsh_free_parameterlist (cpl_parameterlist **p)
 Deallocate a parameter list and set the pointer to NULL.
 
void xsh_free_parameter (cpl_parameter **p)
 Deallocate a parameter and set the pointer to NULL.
 
void xsh_free_frameset (cpl_frameset **f)
 Deallocate a frame set and set the pointer to NULL.
 
void xsh_free_frame (cpl_frame **f)
 Deallocate a frame and set the pointer to NULL.
 
void xsh_show_time (const char *comment)
 show time
 
cpl_error_code xsh_tools_sort_double (double *pix_arr, int size)
 Sort a double array.
 
cpl_error_code xsh_tools_sort_float (float *pix_arr, int size)
 Sort a float array.
 
cpl_error_code xsh_tools_sort_int (int *pix_arr, int size)
 Sort an integer array.
 
void xsh_tools_tchebitchev_transform_tab (int size, double *pos, double min, double max, double *tcheb_pos)
 computes Tchebitchev transformation
 
double xsh_tools_tchebitchev_transform (double pos, double min, double max)
 computes Tchebitchev transformation
 
double xsh_tools_tchebitchev_reverse_transform (double pos, double min, double max)
 computes reverse Tchebitchev transformation
 
cpl_vector * xsh_tools_tchebitchev_poly_eval (int n, double X)
 Compute tchebitchev Tn(X) first coefficient for tchebitchev polynomial.
 
double xsh_tools_get_median_double (double *array, int size)
 Calculates the median value of an array of double.
 
int xsh_tools_running_median_1d_get_max (double *tab, int size, int wsize)
 get max of a list of doubles after running median
 
void xsh_image_fit_spline (cpl_image *img, xsh_grid *grid)
 perform spline fit
 
void xsh_vector_fit_gaussian (cpl_vector *x, cpl_vector *y, XSH_GAUSSIAN_FIT *result)
 set debug level
 
double xsh_vector_get_err_median (cpl_vector *vect)
 Computes median error on a data set.
 
double xsh_vector_get_err_mean (cpl_vector *vect)
 Computes mean error on a data set.
 
int xsh_debug_level_set (int level)
 set debug level
 
int xsh_debug_level_get (void)
 get debug level
 
const char * xsh_debug_level_tostring (void)
 set debug level
 
int xsh_time_stamp_set (int ts)
 set timestamp
 
int xsh_time_stamp_get (void)
 get timestamp
 
void xsh_mem_dump (const char *prompt)
 
cpl_image * xsh_imagelist_collapse_sigclip_iter_create (const cpl_imagelist *imlist, double sigma_low, double sigma_upp, const int niter)
 Average with sigma-clipping rejection an imagelist to a single image.
 
double convert_bin_to_data (double bin_data, int binning)
 
double convert_data_to_bin (double data, int binning)
 
cpl_frameset * xsh_order_frameset_by_date (cpl_frameset *frameset)
 Order frameset by date.
 
cpl_error_code xsh_set_cd_matrix (cpl_propertylist *plist)
 Set CD matrix.
 
cpl_error_code xsh_set_cd_matrix1d (cpl_propertylist *plist)
 Set CD matrix.
 
cpl_error_code xsh_set_cd_matrix2d (cpl_propertylist *plist)
 Set CD matrix.
 
cpl_error_code xsh_set_cd_matrix3d (cpl_propertylist *plist)
 Set CD matrix.
 
int xsh_erase_table_rows (cpl_table *t, const char *column, cpl_table_select_operator operator, double value)
 Erase table rows.
 
int xsh_select_table_rows (cpl_table *t, const char *column, cpl_table_select_operator operator, double value)
 Select table rows.
 
polynomialxsh_polynomial_regression_2d (cpl_table *t, const char *X1, const char *X2, const char *Y, const char *sigmaY, int degree1, int degree2, const char *polynomial_fit, const char *residual_square, const char *variance_fit, double *mse, double *red_chisq, polynomial **variance, double kappa, double min_reject)
 Fit a 2d polynomial to three table columns.
 
cpl_error_code xsh_check_input_is_unbinned (cpl_frame *in)
 Check if an input frame is not binned.
 
cpl_error_code xsh_update_pheader_in_image_multi (cpl_frame *frame, const cpl_propertylist *pheader)
 Update FITS header.
 
cpl_error_code xsh_monitor_flux (cpl_frame *frm_ima, const cpl_frame *frm_tab, xsh_instrument *instrument, const char *qc_key_prefix)
 
Monitor Flux level along the orders traces given by an input table
 
cpl_error_code xsh_frameset_dump_nod_info (cpl_frameset *set)
 Dump frameset nod info.
 
void xsh_frame_spectrum_save (cpl_frame *frm, const char *name_o)
 save an spectrum frame
 
void xsh_frame_image_save (cpl_frame *frm, const char *name_o)
 save an image frame
 
void xsh_frame_table_save (cpl_frame *frm, const char *name_o)
 Save a table frame.
 
char * xsh_set_recipe_file_prefix (cpl_frameset *raw, const char *recipe)
 Set recipe frames prefix.
 
const char * xsh_set_recipe_sky_file_prefix (char *rec_prefix)
 Set recipe sky frames prefix.
 
cpl_frame * xsh_frameset_average (cpl_frameset *set, const char *tag)
 Dump propertylist.
 
cpl_frame * xsh_frameset_add (cpl_frameset *set, xsh_instrument *instr, const int decode_bp)
 coadd frames in a frameset
 
int xsh_fileutils_move (const char *srcpath, const char *dstpath)
 
int xsh_fileutils_copy (const char *srcpath, const char *dstpath)
 
void xsh_add_product_file (const char *name)
 Add temporary file to temprary files list.
 
void xsh_free_product_files (void)
 Free temprary files list.
 
const char * xsh_string_tolower (char *s)
 Convert all uppercase characters in a string into lowercase characters.
 
const char * xsh_string_toupper (char *s)
 Convert all lowercase characters in a string into uppercase characters.
 
double xsh_spline_hermite_table (double xp, const cpl_table *t, const char *column_x, const char *column_y, int *istart)
 Spline interpolation based on Hermite polynomials.
 
double xsh_spline_hermite (double xp, const double *x, const double *y, int n, int *istart)
 Spline interpolation based on Hermite polynomials.
 
cpl_frame * xsh_util_multiply_by_response (cpl_frame *merged_sci, cpl_frame *response, const char *tag)
 Multiply input frame by response frame.
 
cpl_frame * xsh_util_multiply_by_response_ord (cpl_frame *merged_sci, cpl_frame *response, const char *tag)
 Multiply input frame by response frame.
 
cpl_frame * xsh_util_frameset_collapse_mean (cpl_frameset *set, xsh_instrument *instrument)
 Compute mean frame from a list of (IMAGE) framesets.
 
cpl_frame * xsh_spectrum_resample (cpl_frame *frame_inp, const double wstep, const double wmin, const double wmax, xsh_instrument *instr)
 resample a spectrum
 
cpl_frame * xsh_spectrum_resample2 (cpl_frame *frame_inp, const double wstep, const double wmin, const double wmax, xsh_instrument *instr)
 
cpl_frame * xsh_spectrum_interpolate (cpl_frame *table_frame, const double wstep, const double wmin, const double wmax)
 spectra interpolation
 
cpl_frame * xsh_spectrum_interpolate_linear (cpl_frame *table_frame, const double wstep, const double wmin, const double wmax)
 spectra interpolation
 
cpl_image * xsh_vector_to_image (const cpl_vector *vector, cpl_type type)
 Convert a vector to a 1d image.
 
cpl_vector * xsh_image_to_vector (cpl_image *spectrum)
 
cpl_image * xsh_normalize_spectrum_image (const cpl_image *spectrum, const cpl_image *spectrum_error, const cpl_propertylist *spectrum_header, const int binx, const double gain, const double exptime, const double airmass, const int n_traces, const cpl_table *atm_extinction, cpl_image **scaled_error)
 Normalize a spectrum.
 
cpl_frame * xsh_normalize_spectrum (const cpl_frame *obj_frame, const cpl_frame *atm_ext_frame, cpl_boolean correct_binning, xsh_instrument *instrument, const char *tag)
 Normalize a spectrum.
 
cpl_frame * xsh_normalize_spectrum_ord (const cpl_frame *obj_frame, const cpl_frame *atm_ext_frame, cpl_boolean correct_binning, xsh_instrument *instrument, const char *tag)
 Normalize a spectrum.
 
void xsh_array_clip_mean (cpl_array *array, double kappa, int niter, double frac_min, double *mean, double *stdev)
 mean clip of an array
 
void xsh_array_clip_median (cpl_array *array, double kappa, int niter, double frac_min, double *median, double *stdev)
 median clip of an array
 
void xsh_array_clip_poly1d (cpl_vector *pos_array, cpl_vector *val_array, double kappa, int niter, double frac_min, int deg, cpl_polynomial **poly, double *chisq, int **flags)
 clip outliers from a 1D poly fit
 
cpl_error_code xsh_rectify_params_set_defaults (cpl_parameterlist *pars, const char *rec_id, xsh_instrument *inst, xsh_rectify_param *rectify_par)
 
cpl_error_code xsh_remove_crh_single_params_set_defaults (cpl_parameterlist *pars, const char *rec_id, xsh_instrument *inst, xsh_remove_crh_single_param *rectify_par)
 
void xsh_gsl_init_gaussian_fit (cpl_vector *xpos_vect, cpl_vector *ypos_vect, double *init_par)
 
void xsh_gsl_fit_gaussian (cpl_vector *xpos_vect, cpl_vector *ypos_vect, int deg, double *params, double *errs, int *status)
 
double xsh_hms2deg (const double hms)
 Convert a double from hours minute seconds to deg:
 
double xsh_sess2deg (const double sess)
 Convert a double from ssessagesimal to deg: 203049.197= 20:30:49.197 = 20.5136658333.
 
double * xsh_function1d_xcorrelate (double *line_i, int width_i, double *line_t, int width_t, int half_search, int normalise, double *xcorr_max, double *delta)
 
int raw_mjd_frame_compare (const cpl_frame *f1, const cpl_frame *f2)
 
cpl_error_code get_average_qc_from_raws (cpl_frameset *fset, xsh_instrument *instrument, cpl_propertylist *qclist)
 
cpl_error_code get_chromatic_eff (cpl_frame *eff, cpl_propertylist *qclist)
 
cpl_error_code calc_curve_qc (cpl_image *im, xsh_instrument *instrument, cpl_propertylist *qclist)
 
cpl_error_code calc_flat_slit_qc (cpl_image *im, int xa1, int xa2, cpl_propertylist *qclist)
 
cpl_error_code calc_resp_qc (cpl_table *mtab, cpl_table *rtab, xsh_instrument *instrument, int lower, int upper, const char *label, cpl_propertylist *qclist)
 

Macro Definition Documentation

◆ BOOLEAN_TO_STRING

#define BOOLEAN_TO_STRING (   boolean)     boolean == 0 ? "false" : "true"

Definition at line 117 of file xsh_utils.h.

◆ M_PI

#define M_PI   3.1415926535897932384626433832795

Definition at line 43 of file xsh_utils.h.

◆ XSH_CALLOC

#define XSH_CALLOC (   POINTER,
  TYPE,
  SIZE 
)
Value:
assure(POINTER == NULL, CPL_ERROR_ILLEGAL_OUTPUT,\
"Try to allocate non NULL pointer");\
POINTER = (TYPE*)(cpl_calloc(SIZE,sizeof(TYPE)));\
assure (POINTER != NULL, CPL_ERROR_ILLEGAL_OUTPUT,\
"Memory allocation failed!")
#define assure(CONDITION, ERROR_CODE,...)
Definition: xsh_error.h:54

Definition at line 56 of file xsh_utils.h.

◆ XSH_FREE

#define XSH_FREE (   POINTER)
Value:
if(POINTER!=NULL) cpl_free(POINTER);\
POINTER = NULL

Definition at line 92 of file xsh_utils.h.

◆ XSH_MALLOC

#define XSH_MALLOC (   POINTER,
  TYPE,
  SIZE 
)
Value:
assure(POINTER == NULL, CPL_ERROR_ILLEGAL_OUTPUT,\
"Try to allocate non NULL pointer");\
POINTER = (TYPE*)(cpl_malloc(SIZE*sizeof(TYPE)));\
assure (POINTER != NULL, CPL_ERROR_ILLEGAL_OUTPUT,\
"Memory allocation failed!")

Definition at line 49 of file xsh_utils.h.

◆ XSH_MAX

#define XSH_MAX (   A,
 
)     A > B ? A : B

Definition at line 46 of file xsh_utils.h.

◆ XSH_MODE_PREFIX

#define XSH_MODE_PREFIX (   prefix,
  name,
  instr 
)
Value:
XSH_FREE(prefix);\
prefix = xsh_stringcat_any(name,"_",\
"_",\
"" ) ;\
XSH_ASSURE_NOT_NULL(prefix)
const char * xsh_instrument_mode_tostring(xsh_instrument *i)
Get the string associated with a mode.
const char * xsh_instrument_arm_tostring(xsh_instrument *i)
Get the string associated with an arm.
char * xsh_stringcat_any(const char *s,...)
Concatenate an arbitrary number of strings.
Definition: xsh_utils.c:1925
#define XSH_FREE(POINTER)
Definition: xsh_utils.h:92

Definition at line 103 of file xsh_utils.h.

◆ XSH_NEW_FRAME

#define XSH_NEW_FRAME (   POINTER)
Value:
assure(POINTER == NULL, CPL_ERROR_ILLEGAL_OUTPUT,\
"Try to allocate non NULL pointer");\
POINTER = cpl_frame_new();\
assure (POINTER != NULL, CPL_ERROR_ILLEGAL_OUTPUT,\
"Memory allocation for frame failed!")

Definition at line 77 of file xsh_utils.h.

◆ XSH_NEW_FRAMESET

#define XSH_NEW_FRAMESET (   POINTER)
Value:
assure(POINTER == NULL, CPL_ERROR_ILLEGAL_OUTPUT,\
"Try to allocate non NULL pointer");\
POINTER = cpl_frameset_new();\
assure (POINTER != NULL, CPL_ERROR_ILLEGAL_OUTPUT,\
"Memory allocation for frameset failed!")

Definition at line 84 of file xsh_utils.h.

◆ XSH_NEW_PROPERTYLIST

#define XSH_NEW_PROPERTYLIST (   POINTER)
Value:
assure(POINTER == NULL, CPL_ERROR_ILLEGAL_OUTPUT,\
"Try to allocate non NULL pointer");\
POINTER = cpl_propertylist_new();\
assure (POINTER != NULL, CPL_ERROR_ILLEGAL_OUTPUT,\
"Memory allocation for propertylist failed!")

Definition at line 70 of file xsh_utils.h.

◆ XSH_PREFIX

#define XSH_PREFIX (   prefix,
  name,
  instr 
)
Value:
XSH_FREE(prefix);\
prefix = xsh_stringcat_any(name,"_",\
"" ) ;\
XSH_ASSURE_NOT_NULL(prefix)

Definition at line 96 of file xsh_utils.h.

◆ XSH_REALLOC

#define XSH_REALLOC (   POINTER,
  TYPE,
  SIZE 
)
Value:
assure(POINTER != NULL, CPL_ERROR_ILLEGAL_INPUT,\
"Try to re-allocate NULL pointer") ;\
POINTER = (TYPE *)cpl_realloc(POINTER,SIZE*sizeof(TYPE)));\
assure( POINTER != NULL, CPL_ERROR_ILLEGAL_OUTPUT,\
"Memory re-allocation failed!")

Definition at line 63 of file xsh_utils.h.

◆ XSH_TABLE_NEW_COL

#define XSH_TABLE_NEW_COL (   TABLE,
  NAME,
  UNIT,
  TYPE 
)
Value:
check( cpl_table_new_column(TABLE, NAME, TYPE));\
check( cpl_table_set_column_unit( TABLE, NAME, UNIT))
#define check(COMMAND)
Definition: xsh_error.h:71

Definition at line 113 of file xsh_utils.h.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
XSH_DEBUG_LEVEL_NONE 
XSH_DEBUG_LEVEL_LOW 
XSH_DEBUG_LEVEL_MEDIUM 
XSH_DEBUG_LEVEL_HIGH 

Definition at line 136 of file xsh_utils.h.

Function Documentation

◆ xsh_spectrum_resample2()

cpl_frame * xsh_spectrum_resample2 ( cpl_frame *  frame_inp,
const double  wstep,
const double  wmin,
const double  wmax,
xsh_instrument instr 
)