The xsh_geom_ifu recipe
===============================================================

.. data:: xsh_geom_ifu

Synopsis
--------

Produces the spatial geometry of the IFU pattern on the sky

Description
-----------

This recipe Produces the spatial geometry of the IFU pattern on the sky
Input Frames : 
  - A set of n science frames ( n == 1 or >=3, Tag = TRACE_arm)
  - [UVB,VIS] A master bias frame (Tag = MASTER_BIAS_arm)
  - [OPTIONAL] A master dark frame (Tag = MASTER_DARK_arm)
  - A master flat frame (Tag = MASTER_FLAT_IFU_arm)
  - An AFC corrected model order edges table for IFU frame (Tag = ORDER_TAB_AFC_IFU_arm)
  - [PHYSMOD] An AFC corrected model cfg frame (Tag = XSH_MOD_CFG_OPT_AFC_arm)
  - [POLY] An AFC corrected model wavesol frame (Tag = WAVE_TAB_AFC_arm)
  -  An AFC corrected dispersion solution frame (Tag = DISP_TAB_AFC_arm)
  - [OPTIONAL] A badpixel map (Tag = BADPIXEL_MAP_arm)
Products : 
  - A set of shift offset tables (Tag = OFFSET_TAB_slitlet_IFU_arm)

Constructor
-----------

.. method:: cpl.Recipe("xsh_geom_ifu")
   :noindex:

   Create an object for the recipe xsh_geom_ifu.

::

   import cpl
   xsh_geom_ifu = cpl.Recipe("xsh_geom_ifu")

Parameters
----------

.. py:attribute:: xsh_geom_ifu.param.keep_temp

    If 'no', temporary files are deleted. (str; default: 'no') [default="no"].
.. py:attribute:: xsh_geom_ifu.param.debug_level

    Additional xshooter debug level. One of 'none', 'low', 'medium',  'high' (str; default: 'none') [default="none"].
.. py:attribute:: xsh_geom_ifu.param.time_stamp

    Add timestamp to product file name. (bool; default: False) [default=False].
.. py:attribute:: xsh_geom_ifu.param.decode_bp

    Integer representation of the bits to be considered bad when decoding  the bad pixel mask pixel values.   Most frequent codes relevant for  the user:   0: good pixel,   8: pick-up noise,   16: cosmic-ray  removed,   32: cosmic-ray unremoved,   128: calibration file defect,  256: hot pixel,   512: dark pixel,   4096: A/D converted saturation,  32768: non linear pixel,   1048576: extrapolated flux in NIR,  4194304: Interpolated flux during extraction. (int; default:  2144337919) [default=2144337919].
.. py:attribute:: xsh_geom_ifu.param.pre_overscan_corr

    pre-overscan correction. 0: no correction 1: mean overscan correction  2: mean prescan correction 3: (mean pre+mean overscan)/2 correction  (int; default: 1) [default=1].
.. py:attribute:: xsh_geom_ifu.param.stack_method

    Method used to build master frame. (str; default: 'median') [default="median"].
.. py:attribute:: xsh_geom_ifu.param.klow

    Kappa used to clip low level values, when method is set to 'mean'  (float; default: 5.0) [default=5.0].
.. py:attribute:: xsh_geom_ifu.param.khigh

    Kappa used to clip high level values, when method is set to 'mean'  (float; default: 5.0) [default=5.0].
.. py:attribute:: xsh_geom_ifu.param.crh_clip_kappa

    Kappa value in sigma clipping during CRH rejection using multiple  frames (float; default: 5.0) [default=5.0].
.. py:attribute:: xsh_geom_ifu.param.crh_clip_niter

    Number of iterations in sigma clipping during CRH rejection using  multiple frames (int; default: 5) [default=5].
.. py:attribute:: xsh_geom_ifu.param.crh_clip_frac

    Minimal ratio of points accepted / total in sigma clipping during CRH  rejection using multiple frames (float; default: 0.7) [default=0.7].
.. py:attribute:: xsh_geom_ifu.param.background_edges_margin

    X margin to order edge to define background sampling points (int;  default: 1) [default=1].
.. py:attribute:: xsh_geom_ifu.param.background_poly_deg_y

    Poly mode fit deg along Y. (int; default: 9) [default=9].
.. py:attribute:: xsh_geom_ifu.param.background_poly_deg_x

    Poly mode fit deg along X. (int; default: 9) [default=9].
.. py:attribute:: xsh_geom_ifu.param.background_poly_kappa

    Poly mode kappa value of kappa-sigma-clip outliers removal. (float;  default: 10.0) [default=10.0].
.. py:attribute:: xsh_geom_ifu.param.removecrhsingle_sigmalim

    Poisson fluctuation threshold to flag CRHs (see van Dokkum,  PASP,113,2001,p1420-27) (float; default: 5.0) [default=5.0].
.. py:attribute:: xsh_geom_ifu.param.removecrhsingle_flim

    Minimum contrast between the Laplacian image and the fine structure  image that a point must have to be flagged as CRH. (see van Dokkum,  PASP,113,2001,p1420-27) (float; default: 2.0) [default=2.0].
.. py:attribute:: xsh_geom_ifu.param.removecrhsingle_niter

    Max number of iterations (int; default: 4) [default=4].
.. py:attribute:: xsh_geom_ifu.param.rectify_kernel

    Name of the Interpolation Kernel Used. Possible values are:  tanh,  sinc, sinc2, lanczos, hamming, hann. (str; default: 'tanh') [default="tanh"].
.. py:attribute:: xsh_geom_ifu.param.rectify_radius

    Rectify Interpolation radius [bin units]. (float; default: 4.0) [default=4.0].
.. py:attribute:: xsh_geom_ifu.param.rectify_bin_lambda

    Wavelength step in the output spectrum [nm] (float; default: -1.0) [default=-1.0].
.. py:attribute:: xsh_geom_ifu.param.rectify_bin_slit

    Spatial step along the slit in the output spectrum [arcsec] (float;  default: -1.0) [default=-1.0].
.. py:attribute:: xsh_geom_ifu.param.localizeifu_bckg_deg

    Degree (<=2) of the polynomial component in the cross-dispersion  profile fit (int; default: 50) [default=50].
.. py:attribute:: xsh_geom_ifu.param.localizeifu_smooth_hsize

    Half-size of the median filter for smoothing the cross-dispersion  profile prior to localization (int; default: 3) [default=3].
.. py:attribute:: xsh_geom_ifu.param.localizeifu_wavelet_nscales

    Number of scales used for wavelet a trous algorithm (int; default: 5) [default=5].
.. py:attribute:: xsh_geom_ifu.param.localizeifu_wavelet_hf_skip

    Number of high frequency scales skipped from the wavelet decomposition  (int; default: 2) [default=2].
.. py:attribute:: xsh_geom_ifu.param.localizeifu_sigma_low

    Gaussian fits of the cross-dispersion profile whose FWHM is lower than  this value are rejected (float; default: 0.05) [default=0.05].
.. py:attribute:: xsh_geom_ifu.param.localizeifu_sigma_up

    Gaussian fits of the cross-dispersion profile whose FWHM is larger  than this value are rejected (float; default: 0.95) [default=0.95].
.. py:attribute:: xsh_geom_ifu.param.localizeifu_snr_low

    Gaussian fits of the cross-dispersion profile whose SNR is lower than  this value are rejected (float; default: 0.05) [default=0.05].
.. py:attribute:: xsh_geom_ifu.param.localizeifu_snr_up

    Gaussian fits of the cross-dispersion profile whose SNR is larger than  this value are rejected (float; default: 0.95) [default=0.95].
.. py:attribute:: xsh_geom_ifu.param.localizeifu_slitlow_edges_mask

    in arsec (float; default: 0.0) [default=0.0].
.. py:attribute:: xsh_geom_ifu.param.localizeifu_slitup_edges_mask

    in arsec (float; default: 0.0) [default=0.0].
.. py:attribute:: xsh_geom_ifu.param.localizeifu_use_skymask

    TRUE if we want to mask sky lines using SKY_LINE_LIST file. (bool;  default: False) [default=False].
.. py:attribute:: xsh_geom_ifu.param.localizeifu_chunk_hsize

    Half size of chunk [bin] (int; default: 0) [default=0].
.. py:attribute:: xsh_geom_ifu.param.correctifu_niter

    Number of iterations in computing the localization shifts of the IFU  slitlets (int; default: 3) [default=3].
.. py:attribute:: xsh_geom_ifu.param.correctifu_lambdaref

    Reference wavelength where the reference localization on the slit is  chosen (float; default: -1.0) [default=-1.0].
.. py:attribute:: xsh_geom_ifu.param.correctifu_lambdaref_hsize

    HAlf size in nm to estimate reference wavelength (float; default: 2.5) [default=2.5].
.. py:attribute:: xsh_geom_ifu.param.do_cube

    if TRUE creates a data cube (bool; default: False) [default=False].
.. py:attribute:: xsh_geom_ifu.param.compute_map

    if TRUE recompute (wave and slit) maps from the dispersion solution.  (bool; default: True) [default=True].
.. py:attribute:: xsh_geom_ifu.param.check_afc

    Input AFC corrected model/wave solution and science frame check.If  TRUE the recipe verify that the input mode/wave solution is AFC  corrected, its INS.OPTIi.NAME is 'Pin_0.5 ', and its OBS.ID and  OBS.TARG.NAME values matches with the corresponding values of the  science frame. (bool; default: True) [default=True].
.. py:attribute:: xsh_geom_ifu.param.flat_method

    method adopted for flat: (str; default: 'blaze') [default="blaze"].


The following code snippet shows the default settings for the available 
parameters.

::

   import cpl
   xsh_geom_ifu = cpl.Recipe("xsh_geom_ifu")

   xsh_geom_ifu.param.keep_temp = "no"
   xsh_geom_ifu.param.debug_level = "none"
   xsh_geom_ifu.param.time_stamp = False
   xsh_geom_ifu.param.decode_bp = 2144337919
   xsh_geom_ifu.param.pre_overscan_corr = 1
   xsh_geom_ifu.param.stack_method = "median"
   xsh_geom_ifu.param.klow = 5.0
   xsh_geom_ifu.param.khigh = 5.0
   xsh_geom_ifu.param.crh_clip_kappa = 5.0
   xsh_geom_ifu.param.crh_clip_niter = 5
   xsh_geom_ifu.param.crh_clip_frac = 0.7
   xsh_geom_ifu.param.background_edges_margin = 1
   xsh_geom_ifu.param.background_poly_deg_y = 9
   xsh_geom_ifu.param.background_poly_deg_x = 9
   xsh_geom_ifu.param.background_poly_kappa = 10.0
   xsh_geom_ifu.param.removecrhsingle_sigmalim = 5.0
   xsh_geom_ifu.param.removecrhsingle_flim = 2.0
   xsh_geom_ifu.param.removecrhsingle_niter = 4
   xsh_geom_ifu.param.rectify_kernel = "tanh"
   xsh_geom_ifu.param.rectify_radius = 4.0
   xsh_geom_ifu.param.rectify_bin_lambda = -1.0
   xsh_geom_ifu.param.rectify_bin_slit = -1.0
   xsh_geom_ifu.param.localizeifu_bckg_deg = 50
   xsh_geom_ifu.param.localizeifu_smooth_hsize = 3
   xsh_geom_ifu.param.localizeifu_wavelet_nscales = 5
   xsh_geom_ifu.param.localizeifu_wavelet_hf_skip = 2
   xsh_geom_ifu.param.localizeifu_sigma_low = 0.05
   xsh_geom_ifu.param.localizeifu_sigma_up = 0.95
   xsh_geom_ifu.param.localizeifu_snr_low = 0.05
   xsh_geom_ifu.param.localizeifu_snr_up = 0.95
   xsh_geom_ifu.param.localizeifu_slitlow_edges_mask = 0.0
   xsh_geom_ifu.param.localizeifu_slitup_edges_mask = 0.0
   xsh_geom_ifu.param.localizeifu_use_skymask = False
   xsh_geom_ifu.param.localizeifu_chunk_hsize = 0
   xsh_geom_ifu.param.correctifu_niter = 3
   xsh_geom_ifu.param.correctifu_lambdaref = -1.0
   xsh_geom_ifu.param.correctifu_lambdaref_hsize = 2.5
   xsh_geom_ifu.param.do_cube = False
   xsh_geom_ifu.param.compute_map = True
   xsh_geom_ifu.param.check_afc = True
   xsh_geom_ifu.param.flat_method = "blaze"


You may also set or overwrite some or all parameters by the recipe 
parameter `param`, as shown in the following example:

::

   import cpl
   xsh_geom_ifu = cpl.Recipe("xsh_geom_ifu")
   [...]
   res = xsh_geom_ifu( ..., param = {"keep_temp":"no", "debug_level":"none"})


.. seealso:: `cpl.Recipe <https://packages.python.org/python-cpl/recipe.html>`_
   for more information about the recipe object.

Bug reports
-----------

Please report any problems to `P.Goldoni, L.Guglielmi, R. Haigron, F. Royer <regis.haigron@obspm.fr>`_. Alternatively, you may 
send a report to the `ESO User Support Department <usd-help@eso.org>`_.

Copyright
---------

This file is part of the X-shooter Instrument Pipeline
Copyright (C) 2006 European Southern Observatory

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
MA  02111-1307  USA

.. codeauthor:: P.Goldoni, L.Guglielmi, R. Haigron, F. Royer <regis.haigron@obspm.fr>
