The fors_pmos_extract recipe
===============================================================

.. data:: fors_pmos_extract

Synopsis
--------

Extraction of scientific spectra

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

This recipe is used to reduce scientific spectra using the extraction
mask and the products created by the recipe fors_mpol_calib. The spectra
are bias subtracted, flat fielded (if a normalised flat field is specified)
and remapped eliminating the optical distortions. The wavelength calibration
can be optionally upgraded using a number of sky lines: if no sky lines
catalog of wavelengths is specified, an internal one is used instead.

If the alignment to the sky lines is performed, the input dispersion
coefficients table is upgraded and saved to disk, and a new CCD wavelengths
map is created.

This recipe accepts both FORS1 and FORS2 frames. A grism table (typically
depending on the instrument mode, and in particular on the grism used)
may also be specified: this table contains a default recipe parameter
setting to control the way spectra are extracted for a specific instrument
mode, as it is used for automatic run of the pipeline on Paranal and in
Garching. If this table is specified, it will modify the default recipe
parameter setting, with the exception of those parameters which have been
explicitly modifyed on the command line. If a grism table is not specified,
the input recipe parameters values will always be read from the command
line, or from an esorex configuration file if present, or from their
generic default values (that are rarely meaningful).

Either a scientific or a standard star exposure can be specified in input.

The acronym SCI on products should be read STD in case of standard stars
observations.


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

  DO category:               Type:       Explanation:         Required:
  SCIENCE_PMOS                  Raw         Scientific exposure     Y
  or STANDARD_PMOS              Raw         Standard star exposure  Y
  MASTER_BIAS                   Calib       Master bias             Y
  GRISM_TABLE                   Calib       Grism table             .

  MASTER_SKYLINECAT             Calib       Sky lines catalog       .


  MASTER_NORM_FLAT_PMOS         Calib       Normalised flat field   .

  DISP_COEFF_PMOS               Calib       Inverse dispersion      Y
  CURV_COEFF_PMOS               Calib       Spectral curvature      Y
  SLIT_LOCATION_PMOS            Calib       Slits positions table   Y
  RETARDER_WAVEPLATE_CHROMATISM Calib       Chromatism correction   .


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

  DO category:               Data type:  Explanation:
  REDUCED_SCI_PMOS             FITS image  Extracted scientific spectra
  REDUCED_SKY_SCI_PMOS         FITS image  Extracted sky spectra
  REDUCED_ERROR_SCI_PMOS       FITS image  Errors on extracted spectra
  REDUCED_SCI_X_PMOS           FITS image  X Stokes parameter (and L)
  REDUCED_ERROR_X_PMOS         FITS image  Error on X Stokes parameter
  REDUCED_NUL_X_PMOS           FITS image  Null parameter for X
  REDUCED_POL_ANGLE_PMOS       FITS image  Direction of linear polarization
  REDUCED_POL_ANGLE_ERROR_PMOS FITS image  Error on polarization direction
  UNMAPPED_SCI_PMOS            FITS image  Sky subtracted scientific spectra
  MAPPED_SCI_PMOS              FITS image  Rectified scientific spectra
  MAPPED_ALL_SCI_PMOS          FITS image  Rectified science spectra with sky
  MAPPED_SKY_SCI_PMOS          FITS image  Rectified sky spectra
  UNMAPPED_SKY_SCI_PMOS        FITS image  Sky on CCD
  GLOBAL_SKY_SPECTRUM_PMOS     FITS table  Global sky spectrum
  OBJECT_TABLE_SCI_PMOS        FITS table  Positions of detected objects
  OBJECT_TABLE_POL_SCI_PMOS    FITS table  Positions of real objects

  Only if the sky-alignment of the wavelength solution is requested:
  DISP_COEFF_SCI_PMOS          FITS table  Upgraded dispersion coefficients
  WAVELENGTH_MAP_SCI_PMOS      FITS image  Upgraded wavelength map


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

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

   Create an object for the recipe fors_pmos_extract.

::

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

Parameters
----------

.. py:attribute:: fors_pmos_extract.param.dispersion

    Resampling step (Angstrom/pixel) (float; default: 0.0) [default=0.0].
.. py:attribute:: fors_pmos_extract.param.skyalign

    Polynomial order for sky lines alignment, or -1 to avoid alignment  (int; default: 0) [default=0].
.. py:attribute:: fors_pmos_extract.param.wcolumn

    Name of sky line catalog table column with wavelengths (str; default:  'WLEN') [default="WLEN"].
.. py:attribute:: fors_pmos_extract.param.startwavelength

    Start wavelength in spectral extraction (float; default: 0.0) [default=0.0].
.. py:attribute:: fors_pmos_extract.param.endwavelength

    End wavelength in spectral extraction (float; default: 0.0) [default=0.0].
.. py:attribute:: fors_pmos_extract.param.flux

    Apply flux conservation (bool; default: True) [default=True].
.. py:attribute:: fors_pmos_extract.param.flatfield

    Apply flat field (bool; default: False) [default=False].
.. py:attribute:: fors_pmos_extract.param.skyglobal

    Subtract global sky spectrum from CCD (bool; default: False) [default=False].
.. py:attribute:: fors_pmos_extract.param.skymedian

    Sky subtraction from extracted slit spectra (bool; default: False) [default=False].
.. py:attribute:: fors_pmos_extract.param.skylocal

    Sky subtraction from CCD slit spectra (bool; default: True) [default=True].
.. py:attribute:: fors_pmos_extract.param.cosmics

    Eliminate cosmic rays hits (only if global sky subtraction is also  requested) (bool; default: False) [default=False].
.. py:attribute:: fors_pmos_extract.param.slit_margin

    Number of pixels to exclude at each slit in object detection and  extraction (int; default: 3) [default=3].
.. py:attribute:: fors_pmos_extract.param.ext_radius

    Maximum extraction radius for detected objects (pixel) (int; default:  6) [default=6].
.. py:attribute:: fors_pmos_extract.param.cont_radius

    Minimum distance at which two objects of equal luminosity do not  contaminate each other (pixel) (int; default: 0) [default=0].
.. py:attribute:: fors_pmos_extract.param.ext_mode

    Object extraction method: 0 = aperture, 1 = Horne optimal extraction  (int; default: 1) [default=1].
.. py:attribute:: fors_pmos_extract.param.time_normalise

    Normalise output spectra by the exposure time (bool; default: True) [default=True].
.. py:attribute:: fors_pmos_extract.param.chromatism

    Chromatism correction to polarization angles (bool; default: True) [default=True].
.. py:attribute:: fors_pmos_extract.param.check

    Create intermediate products (bool; default: False) [default=False].


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

::

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

   fors_pmos_extract.param.dispersion = 0.0
   fors_pmos_extract.param.skyalign = 0
   fors_pmos_extract.param.wcolumn = "WLEN"
   fors_pmos_extract.param.startwavelength = 0.0
   fors_pmos_extract.param.endwavelength = 0.0
   fors_pmos_extract.param.flux = True
   fors_pmos_extract.param.flatfield = False
   fors_pmos_extract.param.skyglobal = False
   fors_pmos_extract.param.skymedian = False
   fors_pmos_extract.param.skylocal = True
   fors_pmos_extract.param.cosmics = False
   fors_pmos_extract.param.slit_margin = 3
   fors_pmos_extract.param.ext_radius = 6
   fors_pmos_extract.param.cont_radius = 0
   fors_pmos_extract.param.ext_mode = 1
   fors_pmos_extract.param.time_normalise = True
   fors_pmos_extract.param.chromatism = True
   fors_pmos_extract.param.check = False


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

::

   import cpl
   fors_pmos_extract = cpl.Recipe("fors_pmos_extract")
   [...]
   res = fors_pmos_extract( ..., param = {"dispersion":0.0, "skyalign":0})


.. 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 `Carlo Izzo <usd-help@eso.org>`_. Alternatively, you may 
send a report to the `ESO User Support Department <usd-help@eso.org>`_.

Copyright
---------

This file is currently part of the FORS Instrument Pipeline
Copyright (C) 2002-2010 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:: Carlo Izzo <usd-help@eso.org>
