The muse_lsf recipe
===============================================================

.. data:: muse_lsf

Synopsis
--------

Compute the LSF

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

Compute the slice and wavelength dependent LSF from a lines spectrum (ARC lamp).


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

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

   Create an object for the recipe muse_lsf.

::

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

Parameters
----------

.. py:attribute:: muse_lsf.param.nifu

    IFU to handle. If set to 0, all IFUs are processed serially. If set to  -1, all IFUs are processed in parallel. (int; default: 0) [default=0].
.. py:attribute:: muse_lsf.param.overscan

    If this is "none", stop when detecting discrepant overscan levels (see  ovscsigma), for "offset" it assumes that the mean overscan level  represents the real offset in the bias levels of the exposures  involved, and adjusts the data accordingly; for "vpoly", a polynomial  is fit to the vertical overscan and subtracted from the whole  quadrant. (str; default: 'vpoly') [default="vpoly"].
.. py:attribute:: muse_lsf.param.ovscreject

    This influences how values are rejected when computing overscan  statistics. Either no rejection at all ("none"), rejection using the  DCR algorithm ("dcr"), or rejection using an iterative constant fit  ("fit"). (str; default: 'dcr') [default="dcr"].
.. py:attribute:: muse_lsf.param.ovscsigma

    If the deviation of mean overscan levels between a raw input image and  the reference image is higher than |ovscsigma x stdev|, stop the  processing. If overscan="vpoly", this is used as sigma rejection level  for the iterative polynomial fit (the level comparison is then done  afterwards with |100 x stdev| to guard against incompatible settings).  Has no effect for overscan="offset". (float; default: 30.0) [default=30.0].
.. py:attribute:: muse_lsf.param.ovscignore

    The number of pixels of the overscan adjacent to the data section of  the CCD that are ignored when computing statistics or fits. (int;  default: 3) [default=3].
.. py:attribute:: muse_lsf.param.save_subtracted

    Save the pixel table after the LSF subtraction. (bool; default: False) [default=False].
.. py:attribute:: muse_lsf.param.line_quality

    Minimal quality flag in line catalog for selection (int; default: 3) [default=3].
.. py:attribute:: muse_lsf.param.lsf_range

    Wavelength window (half size) around each line to estimate LSF (float;  default: 7.5) [default=7.5].
.. py:attribute:: muse_lsf.param.lsf_size

    Image size in LSF direction (int; default: 150) [default=150].
.. py:attribute:: muse_lsf.param.lambda_size

    Image size in line wavelength direction (int; default: 30) [default=30].
.. py:attribute:: muse_lsf.param.lsf_regression_window

    Size of the regression window in LSF direction (float; default: 0.7) [default=0.7].
.. py:attribute:: muse_lsf.param.merge

    Merge output products from different IFUs into a common file. (bool;  default: False) [default=False].
.. py:attribute:: muse_lsf.param.combine

    Type of lampwise image combination to use. (str; default: 'sigclip') [default="sigclip"].
.. py:attribute:: muse_lsf.param.method

    LSF generation method. Depending on this value, either an interpolated  LSF cube is created, or a table with the parameters of a hermitean  gaussian. (str; default: 'interpolate') [default="interpolate"].


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

::

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

   muse_lsf.param.nifu = 0
   muse_lsf.param.overscan = "vpoly"
   muse_lsf.param.ovscreject = "dcr"
   muse_lsf.param.ovscsigma = 30.0
   muse_lsf.param.ovscignore = 3
   muse_lsf.param.save_subtracted = False
   muse_lsf.param.line_quality = 3
   muse_lsf.param.lsf_range = 7.5
   muse_lsf.param.lsf_size = 150
   muse_lsf.param.lambda_size = 30
   muse_lsf.param.lsf_regression_window = 0.7
   muse_lsf.param.merge = False
   muse_lsf.param.combine = "sigclip"
   muse_lsf.param.method = "interpolate"


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

::

   import cpl
   muse_lsf = cpl.Recipe("muse_lsf")
   [...]
   res = muse_lsf( ..., param = {"nifu":0, "overscan":"vpoly"})


.. 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 `Ole Streicher <usd-help@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 MUSE Instrument Pipeline
Copyright (C) 2005, 2019 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., 51 Franklin St, Fifth Floor, Boston, 
MA  02111-1307  USA

.. codeauthor:: Ole Streicher <usd-help@eso.org>
