The kmo_illumination recipe
===============================================================

.. data:: kmo_illumination

Synopsis
--------

Create a calibration frame to correct spatial non-uniformity of flatfield.

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

This recipe creates the spatial non-uniformity calibration frame needed for
all three detectors. It must be called after the kmo_wave_cal-recipe, which
generates the spectral calibration frame needed in this recipe. As input at
least a sky, a master dark, a master flat and the spatial and spectral cali-
bration frames are required.

The created product, the illumination correction, can be used as input for
kmo_std_star and kmo_sci_red.


Input files
^^^^^^^^^^^^
::

   DO                    KMOS                                                  
   category              Type   Explanation                    Required #Frames
   --------              -----  -----------                    -------- -------
   FLAT_SKY               F2D   Sky exposures                     Y      1-n   
                                (at least 3 frames recommended)                
   MASTER_DARK            F2D   Master dark                       Y       1    
   MASTER_FLAT            F2D   Master flat                       Y       1    
   XCAL                   F2D   x calibration frame               Y       1    
   YCAL                   F2D   y calibration frame               Y       1    
   LCAL                   F2D   Wavelength calib. frame           Y       1    
   WAVE_BAND              F2L   Table with start-/end-wavelengths Y       1    
   FLAT_EDGE              F2L   Table with fitted slitlet edges   N      0,1   

Output files
^^^^^^^^^^^^
::

   DO                    KMOS
   category              Type   Explanation
   --------              -----  -----------
   ILLUM_CORR            F2I    Illumination calibration frame   
   If FLAT_EDGE is provided: 
   SKYFLAT_EDGE          F2L    Frame containing parameters of fitted 
                                slitlets of all IFUs of all detectors


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

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

   Create an object for the recipe kmo_illumination.

::

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

Parameters
----------

.. py:attribute:: kmo_illumination.param.imethod

    Method to use for interpolation: ["NN" (nearest neighbour), "lwNN"  (linear weighted nearest neighbor), "swNN" (square weighted nearest  neighbor), "MS" (Modified Shepard's method), "CS" (Cubic spline)]  (str; default: 'CS') [default="CS"].
.. py:attribute:: kmo_illumination.param.neighborhoodRange

    Defines the range to search for neighbors. in pixels (float; default:  1.001) [default=1.001].
.. py:attribute:: kmo_illumination.param.range

    The spectral ranges to combine when collapsing the reconstructed  cubes. e.g. "x1_start,x1_end;x2_start,x2_end" (microns) (str; default:  '') [default=""].
.. py:attribute:: kmo_illumination.param.flux

    TRUE: Apply flux conservation. FALSE: otherwise (bool; default: False) [default=False].
.. py:attribute:: kmo_illumination.param.add_all

    FALSE: omit 1st FLAT_SKY frame (acquisition), TRUE: don't perform any  checks, add them all (bool; default: False) [default=False].
.. py:attribute:: kmo_illumination.param.pix_scale

    Change the pixel scale [arcsec]. Default of 0.2" results into cubes of  14x14pix, a scale of 0.1" results into cubes of 28x28pix, etc. (float;  default: 0.2) [default=0.2].
.. py:attribute:: kmo_illumination.param.suppress_extension

    Suppress arbitrary filename extension. (TRUE (apply) or FALSE (don't  apply) (bool; default: False) [default=False].
.. py:attribute:: kmo_illumination.param.b_samples

    The number of samples in wavelength for the reconstructed cube (long;  default: 2048) [default=2048].
.. py:attribute:: kmo_illumination.param.b_start

    The lowest wavelength [um] to take into account when reconstructing  (default of -1 sets the proper value for the actual band  automatically) (float; default: -1.0) [default=-1.0].
.. py:attribute:: kmo_illumination.param.b_end

    The highest wavelength [um] to take into account when reconstructing  (default of -1 sets the proper value for the actual band  automatically) (float; default: -1.0) [default=-1.0].
.. py:attribute:: kmo_illumination.param.cmethod

    Either apply "average", "median", "sum", "min_max." or "ksigma". (str;  default: 'ksigma') [default="ksigma"].
.. py:attribute:: kmo_illumination.param.cpos_rej

    The positive rejection threshold for kappa-sigma-clipping (sigma).  (float; default: 3.0) [default=3.0].
.. py:attribute:: kmo_illumination.param.cneg_rej

    The negative rejection threshold for kappa-sigma-clipping (sigma).  (float; default: 3.0) [default=3.0].
.. py:attribute:: kmo_illumination.param.citer

    The number of iterations for kappa-sigma-clipping. (long; default: 3) [default=3].
.. py:attribute:: kmo_illumination.param.cmax

    The number of maximum pixel values to clip with min/max-clipping.  (long; default: 1) [default=1].
.. py:attribute:: kmo_illumination.param.cmin

    The number of minimum pixel values to clip with min/max-clipping.  (long; default: 1) [default=1].


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

::

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

   kmo_illumination.param.imethod = "CS"
   kmo_illumination.param.neighborhoodRange = 1.001
   kmo_illumination.param.range = ""
   kmo_illumination.param.flux = False
   kmo_illumination.param.add_all = False
   kmo_illumination.param.pix_scale = 0.2
   kmo_illumination.param.suppress_extension = False
   kmo_illumination.param.b_samples = 2048
   kmo_illumination.param.b_start = -1.0
   kmo_illumination.param.b_end = -1.0
   kmo_illumination.param.cmethod = "ksigma"
   kmo_illumination.param.cpos_rej = 3.0
   kmo_illumination.param.cneg_rej = 3.0
   kmo_illumination.param.citer = 3
   kmo_illumination.param.cmax = 1
   kmo_illumination.param.cmin = 1


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

::

   import cpl
   kmo_illumination = cpl.Recipe("kmo_illumination")
   [...]
   res = kmo_illumination( ..., param = {"imethod":"CS", "neighborhoodRange":1.001})


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

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

Please report any problems to `Alex Agudo Berbel <kmos-spark@mpe.mpg.de>`_. Alternatively, you may 
send a report to the `ESO User Support Department <usd-help@eso.org>`_.

Copyright
---------

This file is part of the KMOS Instrument Pipeline
Copyright (C) 2002,2003 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, 51 Franklin Street, Suite 500, Boston, MA  02110-1335  USA

.. codeauthor:: Alex Agudo Berbel <kmos-spark@mpe.mpg.de>
