The xsh_orderpos recipe
===============================================================

.. data:: xsh_orderpos

Synopsis
--------

Create the orders centre traces table file

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

This recipe creates the orders centre traces table.

Input Frames for UVB and VIS:
  Raw file (Tag = ORDERDEF_arm_D2)
  Master Dark (Tag = MASTER_DARK_arm)
  Master Bias (Tag = MASTER_BIAS_arm)
Input Frames for NIR:
  Raw file ON(Tag = ORDERDEF_NIR_ON)
  Raw file OFF(Tag = ORDERDEF_NIR_OFF)
Input Frames for all arms
  Guess order table (Tag = ORDER_TAB_GUESS_arm)
  Spectral format table (Tag = SPECTRAL_FORMAT_TAB_arm)
  - [OPTIONAL] A map of non linear bad pixels (Format=QUP, Tag = BP_MAP_NL_arm)
  - [OPTIONAL] A map of reference bad pixels (Format = QUP,RAW, Tag = BP_MAP_RP_arm)
Prepare PRE structures.

For NIR, subtract NIR-OFF from NIR-ON.

For UVB and NIR, Substract the master Bias and master dark.

Detect Orders and calculate the order table.

The final products are:
   An updated Order Table, PRO.CATG=ORDER_TABLE_CENTR_arm.

   A order trace residuals Table, PRO.CATG=ORDERPOS_RESID_TAB_arm.

   The order pos frame bias subtracted, PRO.CATG=ORDERDEF_ON_arm.


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

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

   Create an object for the recipe xsh_orderpos.

::

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

Parameters
----------

.. py:attribute:: xsh_orderpos.param.keep_temp

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

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

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

    Half window size in pixels for the 1D box to search for the maximum in  the cross-dispersion profile (int; default: 5) [default=5].
.. py:attribute:: xsh_orderpos.param.detectcontinuum_running_win_hsize

    Half window size for the running median box during the search for the  maximum in the cross-dispersion profile (int; default: 0) [default=0].
.. py:attribute:: xsh_orderpos.param.detectcontinuum_fit_win_hsize

    Half window size for the fit of the cross-dispersion profile (int;  default: 5) [default=5].
.. py:attribute:: xsh_orderpos.param.detectcontinuum_center_thresh_fac

    Threshold factor applied to check that the flux at the fitted peak is  higher than error. (float; default: 0.0) [default=0.0].
.. py:attribute:: xsh_orderpos.param.detectcontinuum_ordertab_step_y

    Step in Y for order centroid detection (int; default: 1) [default=1].
.. py:attribute:: xsh_orderpos.param.detectcontinuum_ordertab_deg_y

    Degree in Y in the polynomial order tracing X=f(Y) (int; default: 5) [default=5].
.. py:attribute:: xsh_orderpos.param.detectcontinuum_clip_res_max

    Maximum allowed residual (before kappa-sigma clip) (float; default:  0.5) [default=0.5].
.. py:attribute:: xsh_orderpos.param.detectcontinuum_clip_sigma

    Kappa value in sigma clipping during order trace polynomial fit  (float; default: 5.0) [default=5.0].
.. py:attribute:: xsh_orderpos.param.detectcontinuum_clip_niter

    Number of iterations in sigma clipping during order trace polynomial  fit (int; default: 5) [default=5].
.. py:attribute:: xsh_orderpos.param.detectcontinuum_clip_frac

    Minimal fractions of points accepted / total in sigma clippingduring  order trace polynomial fit (float; default: 0.4) [default=0.4].


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

::

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

   xsh_orderpos.param.keep_temp = "no"
   xsh_orderpos.param.debug_level = "none"
   xsh_orderpos.param.time_stamp = False
   xsh_orderpos.param.decode_bp = 2144337919
   xsh_orderpos.param.pre_overscan_corr = 1
   xsh_orderpos.param.detectcontinuum_search_win_hsize = 5
   xsh_orderpos.param.detectcontinuum_running_win_hsize = 0
   xsh_orderpos.param.detectcontinuum_fit_win_hsize = 5
   xsh_orderpos.param.detectcontinuum_center_thresh_fac = 0.0
   xsh_orderpos.param.detectcontinuum_ordertab_step_y = 1
   xsh_orderpos.param.detectcontinuum_ordertab_deg_y = 5
   xsh_orderpos.param.detectcontinuum_clip_res_max = 0.5
   xsh_orderpos.param.detectcontinuum_clip_sigma = 5.0
   xsh_orderpos.param.detectcontinuum_clip_niter = 5
   xsh_orderpos.param.detectcontinuum_clip_frac = 0.4


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

::

   import cpl
   xsh_orderpos = cpl.Recipe("xsh_orderpos")
   [...]
   res = xsh_orderpos( ..., 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,R.Haigron,P.Goldoni,F.Royer, A. Modigliani <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,R.Haigron,P.Goldoni,F.Royer, A. Modigliani <amodigli@eso.org>
