The xsh_wavecal recipe
===============================================================

.. data:: xsh_wavecal

Synopsis
--------

Compute arclines tilt and instrument resolution

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

This recipe detects and follow arc lines in a fully illuminated slit
frame.

Input Frames:
  Raw frame (Tag = ARC_SLIT_arm)
  Arc Line List (Tag = ARC_LINE_LIST_arm)
  Master Bias (Tag = MASTER_BIAS_arm)
  [OPTIONAL] Master Dark (Tag = MASTER_DARK_arm)
  Order Table (Tag = ORDER_TABLE_EDGES_arm)
  [poly mode] Wave Solution (Tag = WAVE_TAB_2D_arm)
  [poly mode] Theoretical Map (Tag = THEO_TAB_spec_arm, spec=SING/IFU)
  [physical model mode] Model cfg tab (Tag = XSH_MOD_CFG_TAB_arm)
  - [OPTIONAL] A non-linear badpixel map (Tag = BP_MAP_NL_arm)
  - [OPTIONAL] A reference badpixel map (Tag = BP_MAP_RP_arm)
  [OPTIONAL-To compute spectral resolution] Dispersion Table Frame (Tag = DISP_TAB_arm)
Prepare PRE structures.

Subtract the master Dark (UVB, VIS and NIR)
Substract the master Bias (UVB and VIS)
Divide by Flat.

Detect and follow arc lines.

Products:
   Wavelength solution, PRO.CATG = WAVE_TAB_ARC_SLIT_arm [if poly mode]
   Linetilt list, PRO.CATG = TILT_TAB_SLIT_arm
   Residuals table, PRO.CATG = RESID_TAB_GOOD_LINES_arm
   Wave Map, PRO.CATG = WAVE_MAP_arm [if model-wavemap-compute=TRUE]
   In case of IFU mode cdata previous producs repat for each IFU slices
   Arc frame, Bias subtracted in PRE format, PRO.CATG = ARC_BIAS_SUBTRACT_arm
   If arm=UVB/VIS and PRO.CATG=ARC_NIR_ON if arm=NIR
   Arc frame, Bias subtracted, FLAT-FIELDED, PRO.CATG = WAVECAL_FLATFIELDED_arm

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

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

   Create an object for the recipe xsh_wavecal.

::

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

Parameters
----------

.. py:attribute:: xsh_wavecal.param.keep_temp

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

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

    Add timestamp to product file name. (bool; default: False) [default=False].
.. py:attribute:: xsh_wavecal.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_wavecal.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_wavecal.param.followarclines_search_window_half_size

    Half window size (HWS) in pixels (Y axis) of search window for each  line. (int; default: 13) [default=13].
.. py:attribute:: xsh_wavecal.param.followarclines_order_edges_mask

    Nb of pixels suppressed (X) from edges of search window. (int;  default: 3) [default=3].
.. py:attribute:: xsh_wavecal.param.followarclines_min_sn

    Minimum Signal over Noise ratio at center to keep the line (6 for IFU,  15 for SLIT). (float; default: -1.0) [default=-1.0].
.. py:attribute:: xsh_wavecal.param.tilt_clip_kappa

    Multiple of sigma in sigma clipping for evaluate tilt (float; default:  2.5) [default=2.5].
.. py:attribute:: xsh_wavecal.param.tilt_clip_niter

    Number of iterations in sigma clipping for evaluate tilt (int;  default: 5) [default=5].
.. py:attribute:: xsh_wavecal.param.tilt_clip_frac

    Minimal fractions of points accepted / total in sigma clipping for  evaluate tilt (float; default: 0.7) [default=0.7].
.. py:attribute:: xsh_wavecal.param.specres_clip_kappa

    Multiple of sigma in sigma clipping for evaluate spectral resolution  (float; default: 2.5) [default=2.5].
.. py:attribute:: xsh_wavecal.param.specres_clip_niter

    Number of iterations in sigma clipping for evaluate spectral  resolution (int; default: 5) [default=5].
.. py:attribute:: xsh_wavecal.param.specres_clip_frac

    Minimal fractions of points accepted / total in sigma clipping for  evaluate spectral resolution (float; default: 0.7) [default=0.7].


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

::

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

   xsh_wavecal.param.keep_temp = "no"
   xsh_wavecal.param.debug_level = "none"
   xsh_wavecal.param.time_stamp = False
   xsh_wavecal.param.decode_bp = 2144337919
   xsh_wavecal.param.pre_overscan_corr = 1
   xsh_wavecal.param.followarclines_search_window_half_size = 13
   xsh_wavecal.param.followarclines_order_edges_mask = 3
   xsh_wavecal.param.followarclines_min_sn = -1.0
   xsh_wavecal.param.tilt_clip_kappa = 2.5
   xsh_wavecal.param.tilt_clip_niter = 5
   xsh_wavecal.param.tilt_clip_frac = 0.7
   xsh_wavecal.param.specres_clip_kappa = 2.5
   xsh_wavecal.param.specres_clip_niter = 5
   xsh_wavecal.param.specres_clip_frac = 0.7


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

::

   import cpl
   xsh_wavecal = cpl.Recipe("xsh_wavecal")
   [...]
   res = xsh_wavecal( ..., 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 `L.Guglielmi <amodigli@eso.org>`_. 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:: L.Guglielmi <amodigli@eso.org>
