The kmo_illumination_flat recipe
===============================================================

.. data:: kmo_illumination_flat

Synopsis
--------

Alternative to kmo_illumination based on flatfield frames.

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 flatfield frame is required.

Contrary to kmo_illumination it doesn't use flat sky frames but rather the
flatfield frames from the internal flat lamp. This recipe can be used if no
acceptable flat sky frames are available.

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_FLAT          F2D   Flatlamp-on exposures             Y      1-n   
                                (at least 3 frames recommended)                
   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    

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

   DO                    KMOS
   category              Type   Explanation
   --------              -----  -----------
   ILLUM_CORR             F2I    Illumination calibration frame   


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

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

   Create an object for the recipe kmo_illumination_flat.

::

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

Parameters
----------

.. py:attribute:: kmo_illumination_flat.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_flat.param.neighborhoodRange

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

    TRUE: Apply flux conservation. FALSE: otherwise (bool; default: False) [default=False].
.. py:attribute:: kmo_illumination_flat.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_flat.param.suppress_extension

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

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

    The lowest wavelength [um] to use when reconstructing. Derived by  default, depending on the band (float; default: -1.0) [default=-1.0].
.. py:attribute:: kmo_illumination_flat.param.b_end

    The highest wavelength [um] to use when reconstructing. Derived by  default, depending on the band (float; default: -1.0) [default=-1.0].
.. py:attribute:: kmo_illumination_flat.param.cmethod

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

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

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

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

    The number of maximum pixel values to clip with min/max-clipping.  (long; default: 1) [default=1].
.. py:attribute:: kmo_illumination_flat.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_flat = cpl.Recipe("kmo_illumination_flat")

   kmo_illumination_flat.param.imethod = "CS"
   kmo_illumination_flat.param.neighborhoodRange = 1.001
   kmo_illumination_flat.param.flux = False
   kmo_illumination_flat.param.pix_scale = 0.2
   kmo_illumination_flat.param.suppress_extension = False
   kmo_illumination_flat.param.b_samples = 2048
   kmo_illumination_flat.param.b_start = -1.0
   kmo_illumination_flat.param.b_end = -1.0
   kmo_illumination_flat.param.cmethod = "ksigma"
   kmo_illumination_flat.param.cpos_rej = 3.0
   kmo_illumination_flat.param.cneg_rej = 3.0
   kmo_illumination_flat.param.citer = 3
   kmo_illumination_flat.param.cmax = 1
   kmo_illumination_flat.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_flat = cpl.Recipe("kmo_illumination_flat")
   [...]
   res = kmo_illumination_flat( ..., 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 <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 CRIRES 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, Inc., 59 Temple Place, Suite 330, Boston, 
MA  02111-1307  USA

.. codeauthor:: Alex Agudo Berbel <usd-help@eso.org>
