The vmspcaldisp recipe
===============================================================

.. data:: vmspcaldisp

Synopsis
--------

Determine spectral distortion models from flat field and arc lamp exposure.

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

This recipe is used to determine all the spectral distortions and
transformations from an arc lamp exposure and a master flat field
produced by the recipe vmspflat.


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

  DO category:               Type:       Explanation:         Required:
  MOS_ARC_SPECTRUM           Raw         Arc lamp exposure       Y
  MASTER_BIAS                Calib       Master bias             Y
  MASTER_DARK                Calib       Master dark             .

  MOS_MASTER_SCREEN_FLAT     Calib       Normalised flat field   .

  MOS_COMBINED_SCREEN_FLAT   Calib       Combined flat field     .

  GRISM_TABLE                Calib       Grism table             Y
  LINE_CATALOG               Calib       Line catalog            Y
  EXTRACT_TABLE              Calib       Extraction table        .

  CCD_TABLE                  Calib       Bad pixel table         .


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

  DO category:               Data type:  Explanation:
  EXTRACT_TABLE              FITS table  Extraction table
  MOS_ARC_SPECTRUM_EXTRACTED FITS image  Sky subtracted slit spectra
  (none)                     PAF         Distortion models

At least one raw arc lamp exposure should be present in the input SOF.

The normalised and the combined flat fields are the products of the
recipe vmspflat run on flat field data obtained with the same mask.

Neither of them is required for running vmspcaldisp, but if a
combined flat field is not given then no spectral curvature model
can be computed, and a first-guess is used in its place. A normalised
master flat field needs to be specified only if a flat field correction
is requested.


The bad pixel table needs to be specified only if the cleaning of bad
pixels is requested.


An extraction table generated from previous runs might be input to the
recipe, in order to iterate the modeling of the spectral distortions.


The grism table contains necessary information to control the way
spectra are extracted and the determination of the distortion models.

The vmspcaldisp recipe gets from the grism table the wavelength that
should be used as reference (header entry PRO WLEN CEN), and the
spectrum extension in CCD pixels above and below the position of the
reference wavelength (header entries PRO SPECT LLEN LO and PRO SPECT
LLEN HI). Other parameters, used in the construction of the extracted
arc lamp slit spectra, are the start and the end wavelength of the
image containing the extracted spectra (header entries PRO WLEN START
and PRO WLEN END), and the step of the sampling along the dispersion
direction (header entry PRO WLEN INC).


The primary recipe product is the extraction table, that contains
information about the local modelling of spectral distortions.

A secondary product of the vmspcaldisp recipe is the image of
extracted slit spectra, that allows a visual check of the distortion
models quality. A last product is the PAF file carrying all the
information related to the spectral distortions. This PAF file is
copied (or moved) to the product directory, and it is identical to
the IWS configuration file MOS_wavecal_G_Q.cmf where Q indicates the
VIMOS quadrant number, and G the grism name) that is created in the
directory where vmspcaldisp is launched.


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

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

   Create an object for the recipe vmspcaldisp.

::

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

Parameters
----------

.. py:attribute:: vmspcaldisp.param.BiasMethod

    Bias removal method. (str; default: 'Zmaster') [default="Zmaster"].
.. py:attribute:: vmspcaldisp.param.Fuzz

    Extra pixels from expected position of spectrum edge in spectral  extraction. (int; default: 10) [default=10].
.. py:attribute:: vmspcaldisp.param.RefineIDS

    Refine Inverse Dispersion Solution. (bool; default: False) [default=False].
.. py:attribute:: vmspcaldisp.param.ExtractionWindow

    Size of search window around expected arc line positions. (int;  default: 10) [default=10].
.. py:attribute:: vmspcaldisp.param.ApplyFlatField

    Flat field correction for input arc lamp frames. (bool; default:  False) [default=False].
.. py:attribute:: vmspcaldisp.param.CleanBadPixel

    Bad pixel correction on arc lamp image. (bool; default: False) [default=False].
.. py:attribute:: vmspcaldisp.param.CleanCosmic

    Cosmic ray events cleaning in arc lamp image. (bool; default: False) [default=False].
.. py:attribute:: vmspcaldisp.param.LineIdent

    Arc line identification method. (str; default: 'FirstGuess') [default="FirstGuess"].
.. py:attribute:: vmspcaldisp.param.LineIdentLevel

    Threshold for peak detection. (float; default: 500.0) [default=500.0].
.. py:attribute:: vmspcaldisp.param.ArcExtraction

    Arc lamp 2D extraction according to computed Local or Global IDS.  (str; default: 'Local') [default="Local"].
.. py:attribute:: vmspcaldisp.param.ModelSlit

    Model wavelength solution within each slit. (bool; default: True) [default=True].
.. py:attribute:: vmspcaldisp.param.ModelSlitOrder

    Order of polynomial for wavelength solution modeling within each slit.  (int; default: 0) [default=0].
.. py:attribute:: vmspcaldisp.param.ComputeQC

    Compute QC1 parameters. (bool; default: True) [default=True].


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

::

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

   vmspcaldisp.param.BiasMethod = "Zmaster"
   vmspcaldisp.param.Fuzz = 10
   vmspcaldisp.param.RefineIDS = False
   vmspcaldisp.param.ExtractionWindow = 10
   vmspcaldisp.param.ApplyFlatField = False
   vmspcaldisp.param.CleanBadPixel = False
   vmspcaldisp.param.CleanCosmic = False
   vmspcaldisp.param.LineIdent = "FirstGuess"
   vmspcaldisp.param.LineIdentLevel = 500.0
   vmspcaldisp.param.ArcExtraction = "Local"
   vmspcaldisp.param.ModelSlit = True
   vmspcaldisp.param.ModelSlitOrder = 0
   vmspcaldisp.param.ComputeQC = True


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

::

   import cpl
   vmspcaldisp = cpl.Recipe("vmspcaldisp")
   [...]
   res = vmspcaldisp( ..., param = {"BiasMethod":"Zmaster", "Fuzz":10})


.. 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 `ESO VIMOS Pipeline Team and VIMOS Consortium <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 VIMOS Instrument Pipeline
Copyright (C) 2002-2005 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  02110-1301 USA


.. codeauthor:: ESO VIMOS Pipeline Team and VIMOS Consortium <usd-help@eso.org>
