The p3d logo. a general data-reduction tool for fiber-fed integral-field spectrographs
About p3d

Readme

Download

References

Documentation & Tutorials

Links

Screenshots

Authors & Thanks

MUSE cubes

Sourceforge project page

Download

The software can be downloaded in two ways – either download a stable release version or a development version from the project Subversion tree. Either version contains all source files, required data files, and pre-compiled binary files (without these binary files p3d cannot be used without an IDL license).

Stable release
Development version
Installation

Information on how p3d is installed on the system is described on the readme page.

Note on the installation procedure on Windows platforms:
Although p3d can be used under Windows, we have not yet been able to write detailed installation instructions for this platform; we do not use Windows machines in our own research. We would be most grateful if you could help us out with such instructions. The installation procedure is in principle the same as for the other two platforms; i.e. Linux and Mac OSX.

Release History
Change log
Here is a list of changes between the releases (the text is a copy of the NEWS file).
$Id: NEWS 5701 2023-01-01 16:49:10Z christersandin $

2.10 (2023-01-01; Revision 5700) - Enterprise

  o All tools (in ${p3d_path}):
        New instrument setup.
     - Add support for the new instrument setup [PlasMark/]Andor. This is a new
       instrument that makes use of a 2kx2k Teledyne e2v CCD42-40 Ceramic AIMO
       Back Illuminated Compact Package High Performance CCD sensor. Two
       instrument setups are implemented, using 6 bundles of 12 spectra (total
       72 spectra) and 15 bundles of 24 spectra (total 360 spectra). However,
       these setups are only examples, and the existing setup can be adjusted
       or extended to handle any configuration of spectra up to 500 spectra.
       (It would be tricky to put more spectra on a 2kx2k CCD chip.)

  o The spectrum viewer (p3d_sv):
        Correct bugs.
     - Remove the normalization of the error array when errors are unavailable.
     - Correct the handling of the REGIONS argument when starting p3d_sv using
       p3d_dispatch.py.
     - Correct a bug, where the wrong structure element was used:
       (*state).s.f.ofilename_spat[(*state).s.f.spms_index]
       ==>
       (*state).s.f.ofilename_spms[(*state).s.f.spms_index]

  o Line fitting (p3d_ifsfit):
        Add some functionality, correct bug.
     - Make further adjustments to have the tool work with single spectrum
       files.
     - Add the option to use a specific output directory (OPATH).
     - Add the option to subtract the background (on the fly) when a keyword
       with the name of the background data extension is set (BGSUBKWD).
     - Single spectrum plots will now always use the full plotting area
       (NXPLOT = NYPLOT = 1).
     - Set the spaxel area to 1.0 when using the single-spectrum mode;
       otherwise, all intensities will be negative.


2.9 (2022-07-15; Revision 5660) - Avalon 1

  o Auto-reduction tool (p3d_autoreduce, p3d_fastview):
        New tools.
     - Add a tool (p3d_autoreduce), to reduce data automatically that are
       made available in a specified directory.

       The tool p3d_autoreduce makes use of a directory with reduced files
       (PATH_REDUCED) that are used to reduce object data files that are placed
       in another directory (PATH_DATA). All reduced files that are placed in
       the reduced-files directory must be prepared with version 2.9 or later
       of p3d, as they contain the required FITS header keyword P3DFTYPE. That
       keyword is used by p3d_autoreduce to figure out what kind of data
       product each reduced file is.

       The reduced files are checked regularly for new files (POLLTIME_REDUCED)
       as is the object data directory (POLLTIME_DATA). Whenever one or a set
       of files are placed in the data directory, they are reduced, the latest
       file first. Whenever a new file is reduced, the previous raw file as
       well as the reduced file are deleted.

       The first time, the object data file is reduced using tophat reduction.
       If the used instrument is setup to handle optimal extraction and there
       is no new file in the data directory, the object file is reduced anew
       using such optimal extraction.

     - Add a tool (p3d_fastview), to view raw data, extracted data, and a
       selected spectrum on the fly. The tool interacts with p3d_autoreduce.

       The tool p3d_fastview provides a graphical user interface that allows
       some control over setup parameters used with p3d_autoreduce, can launch
       and shut down p3d_autoreduce, as well as pause or resume its operation,
       or just make use of a running session, and views images and plots of raw
       data as well as reduced data.

       The shown data include: the raw CCD image, the reduced row-stacked
       spectrum image, and a plot of a selected spectrum in the reduced
       spectrum image.

       The p3d_autoreduce pause and resume functionality can be used to save
       raw data as well as reduced data. Because, raw data files as well as
       reduced data files are otherwise removed whenever a new data file
       appears in the data directory.


2.8 (2021-12-31; Revision 5589) - God Phoenix

  o All tools (in ${p3d_path}):
        New instrument setup.
     - Add support for simulations and data reduction of the instrument setup
       PlasMark. Simulated data include calibration data such as bias
       images, continuum images, and arc images. And object data, which
       currently consist of object data. The instrument has, as with
       3D-Cancerspec, been configured with two default setups using 200 or
       500 spectra on a 2048x2048 CCD.

       However, as a new feature it is now possible to select the number of
       spectra to use with a keyword; the number of spectra can be chosen in
       the range 100-1000. Simultaneously, one can configure how many spectra
       there are in each group of spectra, and how they are separated. It is
       also possible to apply a random offset to the fiber separation (with the
       user parameter 'dist_random_tr') - the same random offset value is used
       with all continuum, arc, and object images. Also in this case is
       spherical aberration simulated by convolving simulated images with a
       Gaussial kernel; the kernel width is set with the user parameter
       'aberration_fwhm'.

       Synthetic fiber position tables are generated automatically for use
       with p3d_sv, as a square or near square configuration using
       square-shaped spatial elements. Such automatic fiber position tables
       are needed whenever the number of fibers is neither 200 nor 500.

       A new tutorial describes how p3d is setup to simulate the data and then
       reduce the same data - tutorial_plasmark_simulations.pdf. The tutorial
       comes with simulation and reduction scripts written in three languages:
       IDL, Python, and shell script (bash).

     - Add the header keyword P3DFTYPE to all main output products. The purpose
       of this keyword is to allow an easy identification of the type of data
       product that is created. For example, for created trace masks, the
       keyword is set to "MASTER TRACE MASK", and for extracted object spectra
       is is "EXTRACTED OBJECT.
     
     - Specify the parameter REQDTYPE_RAW and REQDTYPE (with values) in the
       instrument-specific keywords file, along with the parameters below (in
       either the instrument parameter file or in the user parameter file) to
       have p3d check that both raw data files as well as used reduction
       products are of the correct type:

       The following parameters specify a value that must equal the
       corresponding value set for the RAWREQDTYPE in the instrument-specific
       keywords file:

       Used by p3d_ctrace to identify raw continuum images:
         reqd_type_bias       value 

       Used by p3d_cdmask to identify raw arc images:
         reqd_type_continuum  value

       Used by p3d_cflat to identify raw continuum or sky flat images:
         reqd_type_arc        value

       Used by p3d_cobjex to identidy raw object images:
         reqd_type_flat       value 

         reqd_type_object     value


       The following parameters specify a value that must equal the
       corresponding value set for the REQDTYPE in the instrument-specific
       keywords file:

       Used by p3d_ctrace, p3d_cdmask, p3d_cflatf, and p3d_cobjex to identify
       prepared master bias images:
         reqd_type_masterbias MASTER#BIAS

       Used by p3d_cdmask, p3d_cflatf, and p3d_cobjex to identify prepared
       trace mask images:
         reqd_type_tracemask  MASTER#TRACE#MASK

       Used by p3d_cflatf and p3d_cobjex to identify prepared dispersion mask
       files:
         reqd_type_dispmask   MASTER#DISPERSION#MASK

       Used by p3d_cobjex to identify prepared flat field images:
         reqd_type_flatfield  MASTER#FLAT#FIELD

                       
2.7.1 (2021-10-13; Revision 5535) - Exelsior

  o Filter tool (continuum subtraction) (p3d_d11):
        New tool.
     - Add a tool (p3d_d11 and p3d_tool_d11), to subtract the continuum of
       extracted and calibrated data cubes. The tool cycles through the layers
       (wavelength bins) and subtracts the continuum through a normalization
       procedure using narrow bandpasses on the blue and red side of each
       layer. The normalization is made using the spectrum of an aperture that
       is defined using a more "calm" region in the data cube. Telluric lines
       as well as (optionally redshifted) emission lines are masked, meaning
       that the bandpasses are shifted towards lower and higher pixels to avoid
       those.

       This is the IDL-version of the tool, which is also available as a
       standalone Python.based tool at GitHub, where it is called astro-d11:
         https://github.com/ChristerSandin/astro-d11
       and also
         pip install astro-d11

  o The spectrum viewer (p3d_sv):
        Correct two bugs.
     - Correct the arc line number tag written to dispersion masks; these are
       now read correctly using the tag ARCLxxx instead of ARCLNxxx.

       Checking for any useful values in the variable DDATA, it is necessary
       to use the function MAX and not MIN.


2.7.0.1 (2020-10-13; Revision 5486) - Excelsior

  o Dispersion-mask creation routine (p3d_cdmask),
    The science-object extraction routine (p3d_cobjex):
        Correct Bug that prevents routine from working.
     - Correct a bug where the new variable SPNUM_FREE isn't set, which
       prevents the tools from working. A workaround would be to set
       the instrument parameter spnum_free in the instrument parameter
       file, but that is not encouraged, hence this release.

  o Dispersion calculation (p3d_wavecal_dispersion_correction):
        Correct bugs that appear when the C routines aren't used
     - Correct a bug, use NWAVES in a spot where it wasn't set.
       Add missing variables (SATMASK, OBPMASK).

  o Line fitting (p3d_ifsfit):
        Correct bug.
     - Set RACOMMENT and DECCOMMENT to empty strings when they aren't defined.

  o Routine setup (p3d_misc_initialize):
        Correct routine to work in Windows.
     - Replace the PATH separator ':' with ';' when run in Windows.


2.7 (2020-08-27; Revision 5469) - Excelsior

  o All tools (in ${p3d_path}):
        Major and minor updates.
     - It has become obvious that the IDL asynchronous queue system does
       require an IDL license to be used; it is simply not [clearly] stated
       in the IDL documentation that this is the case (it used to be, but
       was removed...and will be put back in an upcoming version of IDL).
       Because of this license requirement, the p3d queue server now runs
       on one thread, where jobs are finished, one at a time.

       While somewhat annoying, this should not affect individuals that
       strongly, unless they would reduce a very large amount of data.

     - Fitting done using the C-based version of MPFIT now uses version 1.4.


  o Virtual Machine (all tools):
        New version
     - The supplied binary file now uses IDL 8.8.0. To use p3d without a
       license, it is therefore now required to either install IDL version 7.1
       or newer, or request a p3d-specific IDL 8.8.0 distribution from the p3d
       support team.


  o The p3d web page:
     - Add a separate page that describes the easy way to use the p3d
       spectrum viewer with publicly available MUSE data cubes.

       The page can now be accessed using the simpler shortcut address:
         https://p3d.sourceforge.io/MUSE


   o The spectrum viewer (p3d_sv):
        Improve description on how to use Python, correct bugs.
     - It can be tedious to make use of the target-selection Python tool
       astroquery; because, IDL must find the Python tool. Therefore, the
       README file has been updated with three approaches towards using
       Astroquery. The instructions describe in detail what one needs to do
       to make it work. To use this functionality with the virtual machine, it
       is necessary to use the p3d-specific IDL distribution version 8.8.0.

     - Correct two issues related to the Voronoi binning map functionality used
       when saving a created bin map.

     - Correct the line fitting routine for the spectrum window so that no
       error is reported when there is no range to fit, or when there are no
       data to fit (as is the case before any spectrum has been selected).


   o Line fitting (p3d_ifsfit):
        Correct bugs.
     - Add support for bin maps where the bin numbers do not have to be
       increasing with a stride of 1; that is, the following bin number array
       is now supported: 16, 19, 27, 102, ....

     - Add the feature that line groups are skipped where the data only contain
       NaNs, which could be the case if all elements are masked in the selected
       range.


2.6.5 (2020-07-16; Revision 5428) - Discovery

  o All tools (in ${p3d_path}):
        New instrument setup, adjusted the tools for use with queue system.
     - Add support for simulations and data reduction of the instrument setup
       3D-Cancerspec. Simulated data include calibration data such as bias
       images, continuum images, and arc images. And object data, which
       currently consist of object data. The instrument has been configured
       with two default setups using 200 or 500 spectra on a 2048x2048 CCD.

       However, as a new feature it is now possible to select the number of
       spectra to use with a keyword; the number of spectra can be chosen in
       the range 200-1000. Simultaneously, one can configure how many spectra
       there are in each group of spectra, and how they are separated. One out
       of two additional new features is that one can apply a random offset to
       the fiber separation (the user parameter is called 'dist_random_tr', and
       the value can be set in the range 0.5-2.0 px); the same random offset
       value is used with all continuum, arc, and object images. The second new
       feature is that spherical aberration is simulated by convolving
       simulated images with a Gaussial kernel. The kernel width is set with
       the user parameter 'aberration_fwhm', which can be set in the range
       0.5-5.0 px.

       Synthetic fiber position tables for this instrument are generated
       automatically as a square or near square configuration using
       square-shaped spatial elements. The two default setups come, as usual,
       with pre-configured fiber position tables.

       The data-reduction procedures have been adjusted to allow reduction of
       such simulated data where the number of spectra is not fixed; the values
       are instead written to the FITS headers. The spectrum viewer has
       likewise been adjusted to allow the use of a synthetic fiber position
       table.

       A new tutorial describes how p3d is setup to simulate the data and then
       reduce the same data - tutorial_3D-Cancerspec_simulations.pdf.
       The tutorial comes with simulation and reduction scripts written in
       three languages: IDL, Python, and shell script (bash).

     - Add the keyword FTNOTIFY to all tools; this keyword can be set to a
       string with a file name. Each tool that is called with this keyword set
       creates a file with the corresponding name once the tool has finished
       executing. A typical use for this keyword is to control how jobs are
       submitted to the p3d queue server; because, one tool might depend on
       output written by another tool. Set this keyword and then have your
       reduction script wait for the presence of the specified file before it
       continues with the next task.

       The new tutorial reduction scripts tutorial_ramcancer_reduce.* provide
       illustrating examples on how the keyword can be used.


  o Dispersion-mask creation routine (p3d_cdmask):
        Fix a potentially annoying bug.
     - Correct the use of two variables in p3d_wavecal_fit_maskwd, In some
       cases, this fix will make it easier to create a dispersion mask.


  o Virtual Machine (all tools):
        New version
     - The supplied binary file now uses IDL 8.7.3. To use p3d without a
       license, it is therefore now required to either install IDL version 7.1
       or newer, or request a p3d-specific IDL 8.7.3 distribution from the p3d
       support team.


  o Tutorials and associated scripts (in doc/):
        Minor adjustment.
     - Fix the MRS1 setup tutorial to use the correct line numbers associated
       with revision 5316 of p3d.pro and p3d_misc_choose.pro. Also copy these
       files to a separate directory (doc/aux) and make use of these copied
       files in the tutorial so that the lines in the tutorial will not be
       messed up the next time either routine is edited.
     - Adjust the comment on how to use the respective IDL-based tutorial to
       use the correct tutorial file name.


2.6.4 (2019-12-08; Revision 5322) - Discovery

  o All tools (in ${p3d_path}):
        New instrument setup, improved queue system.
     - Add support for the Potsdam Arrayed Waveguide Spectrograph (PAWS). Data
       of this instrument can now use the spectrum tracing, creation of a
       dispersion mask, flat fielding, and spectrum extraction routines.

       All instruments supported by p3d up to now are integral field units,
       where each spectrum is linked to specific spatial coordinates on a
       two-dimensional surface, such as the sky. This instrument is different.
       Here, one spectrum is split into consecutive spectrum orders on the CCD.
       The number of spectrum orders depends on the specific instrument setup.
       Separate spectrum orders partly overlap in wavelength.

       p3d reduces these data as those of any other [supported] instrument.
       However, there are a couple of differences:

       o The dispersion mask must be prepared for each spectrum order
         separately; some new functionality in the dispersion-mask creation
	 tool make this process easier (viz. the option to quickly step to the
	 next unhandled spectrum with a mouse click).

       o The extracted spectrum orders are combined into one spectrum that
         contains the full wavelength range. This spectrum, as well as its
	 error and any other reduction products, are saved to the same files as
	 the usual data output, and specifically to extensions which names are
	 prefixed with a "C". For example, extracted spectrum orders are saved
	 to the "DATA" extension while the combined spectrum is saved to the
	 "CDATA" extension. Likewise, the spectrum order errors are saved to
	 the "ERROR" extension while the combined spectrum errors are saved to
	 "CERROR".

       o There is no spatial position table associated with separate spectrum
         orders, and the resulting data cannot consequenly be viewed with the
	 spectrum viewer tool p3d_sv.

     - Revise the p3d queue system to use the new IDL routines that handle
       asynchronous jobs.

       The p3d job queue handler was originally written as a set of Python
       programs (p3d_queue_class.py, p3d_queue_handler.py, p3d_queue_kill.py,
       and p3d_queue_stop.py) that kept track of submitted jobs that were
       forwarded to a number of IDL-based p3d servers (the idea of running
       multiple p3d servers is that these could make better use of available
       resources on a multi-core machine). While the Python jobs did as as good
       job as they possibly could, the separate IDL servers would sometimes
       pick the same job to work on, creating a mess.

       Thanks to the added functionality of the IDL Asynchronous Jobs, which
       were added with IDL version 8.7.0, the queue system has now been
       (partly) rewritten to make use of this more stable approach.

       Beginning with this version, the p3d queue handler now launches *one*
       p3d server; this server should be launched using the IDL Virtual Machine
       to avoid using an IDL license (and this is the default). The p3d server
       will run until it is shut down (by executing p3d_queue_stop.py, or if it
       is necessary with p3d_queue_kill.py)[, or until a bug is encountered,
       and this should of course not happen].

       The p3d server reads job files (written by the Bash and Python scripts
       in the vm directory) and submits the jobs to an internal asynchronous
       job queue where each job is launched as soon as resources become
       available. (The actual launch is accomplished by spawning a child
       process using the IDL to IDL bridge; there is no need to click on any
       additioanl IDL VM popup splash windows in this approach.)


  o Tutorials and associated scripts (in doc/):
        Adjustment.
     - Adjust the tutorials as well as the related reduction scripts to now use
       the p3d queue server.


  o Virtual Machine (all tools):
        New version
     - The supplied binary file now uses IDL 8.7.2. To use p3d without a
       license, it is therefore now required to either install IDL version 7.1,
       or request a p3d-specific IDL 8.7.2 distribution from the p3d
       support team.


2.6.3 (2019-09-05; Revision 5216) - Discovery

  o All tools (in ${p3d_path}):
        New instrument setup.
     - Add support for the fiber-Bragg grating instrument PRAXIS. Data of
       this instrument can now use the spectrum tracing, creation of a
       dispersion mask, flat fielding, and spectrum extraction routines.

  o C-compilation on Mac / Darwin platforms - p3d_misc_get_callext_exlib:
        Improve user experience.
     - For users on Darwin platforms, add use of the environment variable
       P3D_GCC_FULL_PATH, which is set by the user to the full path of the
       gcc binary she or he wants to use with p3d; this allows selection
       of any particular gcc version that is installed using Homebrew
       (see https://brew.sh). Any p3d user on a Mac / Darwin platform is
       recommended to install a version of gcc that includes support for
       OpenMP.

  o A couple of minor bug fixes:
        Small but important fixes.
     - p3d_ctrace, p3d_cdmask, p3d_cflatf, p3d_cobjex:
         Allow BISCONSTANT to be used when there is no master-bias image.
     - p3d_extract:
         Correct the routine when BIAS is a double variable.
     - p3d_extract_tophat, p3d_sv:
         Make tool work again when there are no error data.
     - p3d:
         Correct use of the dispersion-mask spectrum-viewer button.
     - p3d_sv:
         Correct a bug that appears whenever a cube is viewed.


2.6.2 (2018-12-28; Revision 5160) - Discovery

  o The spectrum viewer (p3d_sv):
        New functionality and bug fixes
     - The spectrum viewer now handles image (files) that contain a second
       image in the extension BSW_DATA; this second image could contain
       so-called laser offset, or beam-switched, spectra that are offset from
       the regular spectra. The user can select between the regular spectra,
       the [laser] offset spectra, the difference between the two, and a,
       so-called, laser normalized difference between the two using the new
       droplist widget on the Extra control panel or using the new menu entries
       in the "Image View" menu. Two additional widgets allow the offset BSW
       data to be multiplied with a factor before the offset spectra are
       subtracted from the nominal spectra; the default multiplication factor
       is 1.0.
     - Add File menu entries to look at the FITS file headers of the BSW_DATA
       and BSW_ERR extensions, when they are present.
     - Add the feature that the viewed spectrum can be saved as a plain-text
       ASCII file in addition to as a FITS file (simply use the file endings
       ".txt" or ".txt.gz").
     - Additionally, several or all spectra in the [FITS file] image or cube
       can be exported to plain-text ASCII files by selecting the corresponding
       option in the File menu. Each plain-text file contains a header
       describing the origin of the data and what each column and row contains.
       Note! please be careful when using this functionality with huge [MUSE]
         cubes; because it will take a while to write, say, one million text
	 files and there is [currently] no way to stop the writing once it has
	 begun.
     - The spectrum viewer can now be used with reduced data cubes of the
       MaNGA instrument. So far the masked elements are not treated, and
       so they're set to 0, which results in some messages saying
       "Floating divide by 0". However, just don't use those elements around
       the border of the IFU and you're fine.
     - The configuration save file version is now 1.1, which includes saving
       and loading the image selection, the instrument-parameter file
       (PARFILE), the detector (DETECTOR), the user-parameter file
       (USERPARFILE), and the window size (WINXYSIZE); the tool has been
       updated to that it uses the required version of the configuration file
       (instead of *any* version). Also correct a few bugs that didn't allow
       loading a state file. 
     - So, after having run the spectrum viewer for any image (and not only a
       cube), just launch the tool again without using any options. Voilá, it
       should load the last viewed image automatically and also set nearly all
       options that were used in the last session. A very convenient feature!
     - Correct the spatial map regarding the viewed image and the selected
       spectrum when using data not sampled on the sky (MRS1 and MRS2). The
       shown spatial map now really corresponds to the selected spectrum.
     - Correct a bug that appears when the computer isn't equipped with the
       gcc compiler; because, in that case a bug in the IDL routine
       p3d_display_sv_event_plot has complained about a missing variable
       (LOWER).
     - Correct the region statistics median calculation that is calculated when
       using an RSS image and the C routine p3d_csum. A bug has so far rendered
       p3d and IDL crashing whenever this was attempted; this is fixed with
       revision 5127.

  o Spectrum extraction:
        New functionality.
     - Raw data that contain a second set of spectra offset from the nominal
       set can now be reduced in two ways:
       o The offset spectra are reduced the same way the nominal spectra are
         reduced. The offset spectra are written to the BSW_DATA and BSW_ERR
         extensions.
       o Set the user parameter 'bsw_px_subtraction yes' to instead subtract
         the offset spectra from the nominal spectra directly, before the bias
         image is subtracted from the raw data. In the ideal situation, spectra
         (extended on the cross-dispersion axis) would be subtracted right away
	 and no extra consideration would be required. However, due to the cost
	 of CCDs, it is rarely the case that spectra do not overlap, and
	 because they do, the direct subtraction isn't complete. Instead, the
	 approach implemented here is to immediately subtract the contribution
	 to the flux of the center pixels of the offset spectra. Thereafter, a
	 regular spectrum extraction takes place (preferably using optimal
	 extraction), whereby the fraction of the flux outside of the center
	 pixels is kept. The resulting flux at each wavelength and for each
	 spectrum is calculated as the sum of the directly subtracted value of
	 the center pixels and the difference between the nominal and offset
	 flux values of the regularly extracted flux wings. Another consequence
	 of using this mode is that the parameter 'pmultfac' is set to 1
	 instead of the default value 10 (any value other than 1 is
	 conceptually difficult to implement).

  o All tools (in ${p3d_path}):
        New functionality.
     - Add support for the new experimental instrument R10E-Atik. This
       instrument is much simpler than other instruments and has spectra that
       appear as wide bands on the cross-dispersion axis instead of peaks. The
       spectrum center positions are extracted using a boxcar smoothed array.
       Moreover, the raw data contain hardly any keywords that describe the
       used setup. Consequently, this setup can be improved upon.
     - Written multi-extension FITS files now contain header keywords EXTENxxx
       that provide the number and names of all written extensions in the file.
     - Add the raw data file suffix keyword SFX to p3d and the main reduction
       tools. While a similar functionality is achieved with the user-parameter
       'sfx', this keyword allows the use of raw-data files in the p3d main GUI
       that do not use the filename suffix '.fits'. 

  o Correction for differential atmospheric refraction (p3d_darc):
        Minor new functionality
     - To analyze second-order spectra - where features appear at the double
       real wavelength - simply set the new keyword USE_SECONDORDER_SPECTRUM
       or the user-parameter 'use_secondorder_spectrum'. The wavelength array
       used to calculate the spatial offset due to differential atmospheric
       refraction is thereby calculated using the true wavelength of the
       second order features. For example, your data contain second order
       features of [NeIII] 3568, which appear in your data at the double
       wavelength, i.e. at 7132 Angstrom, assuming neglibible redshift.

  o Virtual Machine (all tools):
       New version
     - The supplied binary file now uses IDL 8.7.1. To use p3d without a
       license, it is therefore now required to either install this version of
       IDL or request a p3d-specific IDL 8.7.1 distribution from the p3d
       support team.

  o The p3d main GUI (p3d_tool_gui):
        Correct minor bug.
     - A small bug has prevented the p3d main GUI to be launched using the IDL
       VM when any other than the default instrument is used; this has been
       fixed with revision 5047.

  o The RSS to cube conversion routine (p3d_rss2cube):
        Correct minor bug.
     - Correct a bug whereby the tool was unusable (a variable was never set);
       this has been fixed with revision 5046.

  o A number of minor bug fixes.


2.6.1 (2018-08-01; Revision 5021) - Discovery

  o All tools (in ${p3d_path}):
        New IFU, beam-switched data
     - Add support for the new IFU MRS2 using the MRS1 setup files. To use
       MRS2, one simply specifies the MRS1 parameter file while setting the
       DETECTOR keyword to 1 (instead of the default 0, which makes use of
       MRS1).
     - Add support for beam-switched data in the object extraction. So far,
       this is implemented for the MRS2 setup (through the presence of the two
       header keywords BS_NROWS and BS_DIR in the raw data headers).

       In beam switched data, the IFU is pointed in a different direction
       during half the time. For example, half the time the IFU points at the
       target and the other half it points at the sky. The spectra of the
       offset observations are offset from the first position by a number of
       pixels on the cross-dispersion axis (BS_NROWS, which is set to the
       offset when there is no binning of the CCD data on the cross-dispersion
       axis).
       
       Using this mode, the continuum and arc images that are used for tracing,
       to create a dispersion mask, and flat field (normalize) the spectra,
       should not be beam switched. Only the object image can show regular
       spectra that are interleaved with the beam-switched spectra.

  o Tutorials and associated scripts (in doc/):
        Addition and improvements.
     - Add a visualization tutorial for the instrument setup MUSE-WFM.
     - Adjust the MRS1 data-reduction tutorial and scripts to include
       information about the new MRS2 IFU.
     - Adjust the Python-based scripts to work with Python version >= 3.
     - Add checking of the environment variable "rootpath" to the IDL-based
       tutrial scripts.

  o Spectrum extraction:
        New functionality, correct a bug.
     - Add a parallelized C version of the regular tophat extraction routine
       "p3d_extract_tophat", i.e. "p3d_ctophat.c". The new routine takes
       extraction times down from about 1.25s to about 0.075s with PMAS-Larr
       data (on an 8-core AMD Ryzen 1700X using all 8 cores).
     - Correct a bug in the C routine p3d_cssl_median.c; the variable
       kArgsExpected has now been set to the correct value, 9.

  o Line fitting (p3d_ifsfit):
        Correct bugs.
     - Correct the handling of sky and their associated auxiliary lines to make
       them work as intended, which is to allow fitting the sky with emission
       lines.
     - Fix the tool so that it again correctly works with scalar redshift
       values.

  o The p3d main GUI (p3d_tool_gui):
        Correct bugs.
     - Correct the tool so that the tool p3d_sv - once again - can be used from
       the p3d main GUI panel.
     - Correct the raw-image viewing tool (p3d_display_imv) so that it can view
       images again when there is no corresponding raw image present.

  o Spectrum Viewer (p3d_sv):
        Correct bugs.
     - Correct the setup of the spatial-map regions map filename array so that
       the filename is set correctly when DS9 regions are used.
     - Correct the ROI region selection button so that the tool continues to
       work also when the popu window (XROI) is closed immediately without
       selecting any region of interest.

  o Bias-subtracted images (p3d_ctrace, p3d_cdmask, p3d_cflatf, p3d_cobjex):
        Correct a bug in p3d_cflatf, adjust the other routines.
     - Correct the saving of a bias-subtracted image using "p3d_cflatf", the
       resulting file is now a working FITS file.
     - Adjust the FITS header keyword IMTYPE in the written file for all four
       tools.


2.6 (2018-05-07; Revision 4912) - Discovery

  o Spectrum Viewer (p3d_sv):
        New functionality.
     - Add a target setup panel that makes it easier to log fits and save the
       current spectrum, the current spatial map, and the current region (as
       well as its background region) to a region file, all simultaneously with
       *one* click. The target setup panel is accessed from the Extra control
       panel through the button "Show Target Setup".

       The target setup includes setting: a target name, a target type, a
       target comment, a target output path (with buttons to choose the session
       output path or the target name, or one can set the path freely), a
       target filename prefix (with buttons to choose the name of the used data
       file or the target name, or one can set the prefix freely), and buttons
       that allow the control of which files are written when the button
       "Save Files / Log Fit" is pressed. The four files are: the log file,
       the currently viewed spectrum, the currently viewed spatial map, and the
       currently selected region as well as its background, if any.

       The open log file button has been moved to the target setup panel.

     - More information is written to the line fit log file. Additions include
       the name, target type, and target comment. The mean target coordinates
       of all spatial elements in the region selected in the spatial map are
       written in column 9 for each fitted line. The RA, DEC coordinates are
       calculated using the same window coordinates and are output to the tenth
       column. Please note that the RA, DEC coordinates will be inaccurate if
       the IFU coordinates are inaccurate.

     - The target setup panel adds yet another panel, the target selection
       panel that allows a quick selection of a target name after the tool has
       made a query to the SIMBAD database (using the Python astroquery
       package). This functionality is only available with IDL version >=
       8.6.0 (8.7.0 when using the p3d-specific IDL distribution) and the
       astroquery package must be installed on the computer before launching
       the spectrum viewer; either on the system or in a virtual environment.

     - Load and save the configuration. Until now, it has been necessary to
       make all setups each time the spectrum viewer is restarted. Beginning
       with this version, it is possible to save and load the configuration
       using the state save/load functionality; the state is also saved to a
       file in the user home directory each time the tool is closed. Most
       settings are saved, but not all. The panning of the spectrum image, the
       spatial map, and the spectrum plot is not saved. Also not the setup in
       the sensitivity-function panel.       

     - Add the functionality that the output path is saved when saving anything
       to a file; to avoid having to select the output directory anew each
       time. The default output path can be set using the keyword OPATH.

  o Spectrum Viewer (p3d_sv):
        Adjustments to the functionality.
     - The spatial map x coordinate flip is now unset by default; this has the
       consequence that coordinates in the spatial map panel increase
       East => West, as in ds9.
     - The default is now to show "spectrum - background" in the spectrum plot.
     - The default spatial element selection mode is now "Sum" (instead of
       "Single").
     - Saving the current spectrum now saves both the main spectrum (its error)
       and its background spectrum (its error) to the same file, if a
       background was selected. The background is saved to the extension
       DATA_BG and the error to the extension ERROR_BG, if they are available.
       The background spectrum is rescaled to use as many spatial elements as
       the main spectrum.
     - Only one region is saved (along with its background region, if any) when
       saving the current region using the target setup panel.

  o All tools using widgets (p3d, p3d_sv, p3d_ctrace, ...):
        Improved functionality.
     - It is now possible to set the font keyword to a font of the user's
       choice, and it should all look fine (for as long as the font uses a
       fixed character width and isn't too large).
     - The option FONT='big' selects a - hopefully available - font for use
       with 4K (3840x2160) screens. The spectrum viewer (p3d_sv) also provides
       the option FONT='default' to switch back to the default font if needed.

  o Virtual Machine (all tools):
       New version
     - The supplied binary file now uses IDL 8.7.0. To use p3d without a
       license, it is therefore now required to either install this version of
       IDL or request a p3d-specific IDL 8.7.0 distribution from the p3d
       support team.

  o A number of minor bug fixes.


2.5.2 (2017-12-04; Revision 4742) - Heart of Gold
  o Simulation tool (p3d_csim):
        New feature. Multiple important bug fixes.
     - Add the functionality to use two-dimensional kernels when creating the
       simulated data (KERNEL). The kernel data are saved as a four-dimensional
       array in a fits file, where the kernel image is stored in the first two
       dimensions, the wavelength index is the third dimension (optional), and
       the spectrum index the fourth dimension (optional).
     - Correct the use of read noise and gain factors. Noise is now added to
       all blocks in multi-block instrument setups in a correct way.
     - Add a proper description on how to use the DKERNEL and CKERNEL
       parameters, and correct their use in the code.
     - Correct the use of the DSUBSAMPLE and CSUBSAMPLE parameters; they must
       both now also be set to an odd positive integer. The header keyword
       DSUBSAMP and CSUBSAMP must be set to the subsampling factor when using
       the KERNEL, DKERNEL and CKERNEL keywords, respectively.
     - The simulation works by shifting the kernels on the dispersion axis
       and the cross-dispersion axis according to how the spectra are
       shaped on the dispersion axis (DISPMASK) and cross-dispersion axis
       (TRPOSPAR). For this to work correctly, it is necessary that the
       provided spectra are padded with zeroes on the sides of the profiles.
       Alternatively, the kernels can be zero padded using the keywords
       ZPAD (used with KERNEL), DZPAD (used with DKERNEL and the default
       dispersion kernel), and CZPAD (used with CKERNEL and the default
       cross-dispersion kernel).

  o Virtual Machine (all tools):
       New version
     - The supplied binary file now uses IDL 8.6.1. To use p3d without a
       license, it is therefore now required to either install this version of
       IDL or request a p3d-specific IDL 8.6.1 distribution from the p3d
       support team.

  o A number of minor bug fixes.


2.5.1 (2017-11-06; Revision 4700) - Heart of Gold
  o Line fitting (p3d_ifsfit):
        New functionality. Correction
     - Sometimes, when the velocity varies across the observed object, it is
       insufficient to merely increase the allowed deviation of fitted
       wavelenghts using the keyword DWL. At such times it could work better to
       use a two-dimensional redshift map instead of a constant redshift.

       Add support for the use of two-dimensional redshift maps. Up to now,
       the redshift has been specified as a scalar decimal value using either
       the keyword Z or the keyword VEL_Z. Now, it is also possible to provide
       a map of the redshift that is provided as a fits file using either one
       of the same two keywords; the map is a one-dimensional array (RSS
       images) or a two-dimensional image (data cubes).

     - The C-based calculation of the binned redshift array has been adjusted
       to reflect the IDL code; this improvement affects, in particular, faint
       data (on the spatial boundaries, mostly) where spectra are only present
       in some wavelength bins.

     - Improve the description of the contents of the map images that are
       written along with the binary-table fits files. The map files are
       written when the spatial elements are square shaped. Each fitted
       property is converted to a spatially extended image that is written to a
       separate extension. When a two-dimensional redshift map is used, the
       velocity version of the input redshift
       (v0 = c * ((1 + z)² - 1) / ((1 + z)² + 1)) is written as the last
       extension (to simplify the checking for potential problems).

  o Adjust the code to work with IDL 8.6.1; specifically, this is achieved by
    replacing the formerly used notion for octal constants with a format that
    works in the latest version of IDL. For example, <"305b> is replaced with
    <'305'ob>.


2.5 (2017-06-28; Revision 4664) - Heart of Gold
  o Simulation tool (p3d_csim):
        Multiple important bug fixes.
     - Correct the written simulated raw files so that they can be reduced
       with the p3d data reduction tools.

  o Tutorials and associated scripts (in doc/):
        Improvements.
     - Add images to the description of the dispersion-mask creation part in
       all three data-reduction tutorials (MRS1, PMAS-Larr, and PMAS-PPak).

     - Add the feature to all scripts that the environment variable "rootpath"
       can be set to change the path; this way it isn't necessary anymore to
       edit any of the scripts before using them. Adjust the line numbers in
       all tutorial scripts to apply to the adjusted scripts.

  o All tools (in ${p3d_path}):
        Important bug fixes and ajustments.
     - Instruments that use the NGC CCD controller and provide combined raw
       images that include prescan and overscan regions in the image (such as
       ERA2) are now correctly sliced up again (i.e., the prescan and overscan
       regions are correctly removed). The bug was introduced with revision
       4330 and fixed with revision(s 4620 and) 4630.

     - Set the default polynomial order used when fitting extracted continuum
       spectra with a linear polynomial to 0 [MRS1 instrument]. The spectrum
       is difficult to fit with lower order polynomials, and doing so anyways
       introduces strange features in flat-fielded spectra.

     - Correct all examples that are run from the command line using a shell -
       remove all white space before and after equal signs (that I introduced
       earlier to make the source code easier to read).

  o A number of minor bug fixes and adjustments to the language of comments
    throughout the code.


2.4.3 (2017-06-06; Revision 4608) - Millenium Falcon
  o Simulation tool (p3d_csim):
        New tool.
     - Add a tool to add spectra to simulated "raw" CCD images. The tool
       p3d_csim can be used with any setup that contains the required
       header keywords preset file. The first added setup is to model
       Mosaic-like detectors, it is called mosms. Here is a list of features
       that are included in the simulations:

       + Select the instrument configuration, and thereby lock information
         about how many spectra to model, their separation, their geometrical
         placement on the IFU, and the wavelength range.

       + Select the spectra to work with.
         o The object spectrum can currently be that of a point source, which
           can be provided as a two-column plain-text file or a binary-table
           fits file. The point source is spread out using a defined seeing and
           a modeled two-dimensional Gaussian profile.
         o A continuum spectrum is used to create traces for all spectra;
           either provide a spectrum in a file or use a constant value
           (default).
         o An arc spectrum is created using a list of wavelengths and
           intensities, provided as a two-column plain-text file or a arrays.

       + For each kind of image, except the bias images, the spectra are
         centered on the spatial axis on the simulated CCD image. The spectra
         are convolved separately on the dispersion and cross-dispersion
         (spatial) axes:

         o One kernel or a set of kernels spread out on the dispersion axis
           describe how the dispersion varies on the dispersion axis. It is
           possible to use the same kernel(s) for all spectra, but one can also
           use different kernels. The resulting kernel is interpolated for
           pixels intermediate to the provided wavelengths. The kernel can be
           subsampled to any depth.

           Variations of the dispersion are accounted for by offsetting the
           dispersion kernel using an optional dispersion mask.

           The spectrum is at first convolved with the kernel on the
           dispersion axis.

         o Another kernel describes how the spectrum is spread out on the
           cross-dispersion axis. It is specified just as the dispersion-axis
           kernel described above.

           Spectra that are curved on the CCD image are account for by
           offsetting the cross-dispersion kernel using a trace fit for each
           spectrum, provided as a set of polynomial parameters.

           The spectrum is then multiplied with the normalized cross-dispersion
           axis profile for each pixel on the dispersion axis. The resulting
           profile is added to the output image.

         o After both convolutions, the output image is rebinned to remove the
           subsampling.

       + Each image is split into blocks, according to the definition in the
         instrument parameter files. Prescan and overscan regions are added to
         the image and it is flipped according to how the corresponding
         instrument CCD image would appear.

         Poisson noise and readout noise as well as a bias level is added to
         the image before it is converted to the unsigned integer type
         (16 bits per pixel) and is written to a FITS file using multiple
         extensions.

       + The idea is then that the resulting bias, continuum, arc, and object
         images are fed back to the reduction tools of p3d to reduce the files
         to allow an analysis of what results.


2.4.2 (2017-04-13; Revision 4551) - Millenium Falcon
  o Tutorials (in doc/):
        New data-reduction and visualization tutorials.
     - Add data-reduction and visualization tutorials for three instrument
       setups: MRS1, PMAS/Larr, and PMAS/PPak.

       + The data-reduction tutorials describe all steps necessary to convert
         raw input images to extracted spectra; this includes the five steps of
         creating a master bias, tracing the spectra, creating a dispersion
         mask, extracting spectra for normalization of extracted spectra, and
         extracting object spectra, using all previous products. The PMAS/Larr
         tutorial is a bit more extensive than the other two and also includes
         the creation of a sensitivity function, flux calibration using the
         sensitivity function, correcting for effects of DAR, and converting
         the resulting RSS image to a data cube. The tutorials come with both
         reduction scripts - written in Python, bash, and IDL - and data files
         that can be used to follow all steps of the reductions. The tutorial
         data are available in a file that can be downloaded through a link on
         the p3d web page. The reduction scripts are available both in the p3d
         distribution as well as in the tutorial data files.
       + The visualization tutorials describe how one can make use of the
         functionality in the p3d spectrum viewer. Examples of covered issues
         include:
           o Starting the spectrum viewer from the command line.
           o Using the spectrum image: changing colors, selecting wavelength
             bins, panning in wavelength and scrolling across spectra.
           o Using the spatial map: panning and zooming, creating regions,
             adding background regions, and blinking between spatial-map
             images of different wavelength bins.
           o Using the spectrum plot: panning and zooming, showing emission
             lines, fitting emission lines and setting the redshift.
         As with the data-reduction tutorials, the visualization tutorials come
         with both launch scripts - written in Python, bash, and IDL - and data
         files that can be used to follow the tutorial. The tutorial data are
         available in a file that can be downloaded through a link on the p3d
         web page. The launch scripts are available both in the p3d
         distribution and in the tutorial data files.

  o The science-object extraction routine (p3d_cobjex):
        Add a new feature.
     - The keyword cosmic-ray cleaning keyword CRCLEAN can now be specified
       for each input image individually.

  o The tracing procedure (p3d_ctrace):
        Add new functionality.
     - Add a new keyword, IMCOMBINE, which allows the tool to either combine
       all input images before tracing spectra (as before) or trace spectra in
       each image individually.

  o Correction for differential atmospheric refraction (p3d_darc):
        Minor adjustments.
     - Correct a few minor bugs to make the tool work anew with instruments
       such as the PMAS/Larr.
     - In the properties popup GUI: add a label on the first line to indicate
       which file the properties are shown for.

  o All tools (in ${p3d_path}):
        Bug fixes and minor adjustments.
     - Correct the handling of pre-scan and over-scan regions so that they
       can again be used instead of master-bias images, if necessary.
     - Correct the creation of landscape PostScript images, they are anew
       created as intended.
     - Correct the handling of decimal-type keywords when the tools are called
       using Python.
     - Capitalize widget labels to increase the appeal.

  o Numerous minor bug fixes and adjustments to comments throughout the code.


2.4.1 (2017-03-10; Revision 4452) - Millenium Falcon
  o Tutorials (in doc/):
        New tutorial (which is an all-new feature).
     - Add an instrument configuration tutorial for MRS1. The tutorial
       describes all steps necessary to setup p3d for the instrument MRS1 (and
       this tutorial can be used to setup similar instruments as well). The
       tutorial comes with a small data set that can be used to have a look at
       the exact format of the raw files that p3d expects for this instrument.
       The tutorial data are available through a link on the p3d web page.

  o All tools (in ${p3d_path}):
        Instrument setups.
     - Adjust the setup of MRS1.

  o The use of prescan and overscan regions (p3d_tool_pobias):
        Important bug fix.
     - Corrected a serious bug, where two keywords had ambiguous names;
       resulting in the feature of using prescan and overscan regions
       being unavailable.
     - Correct the output to the PostScript file of the value of
       !p3d_data_path.

  o Line fitting (p3d_ifsfit, p3d_ifsfit_mosaic):
        Minor (bug) fixes.
     - Fix output maps to conform to FITS specifications.
     - Exclude pixels with non-positive errors from both binning and single
       spectra; this allows the C-based routine cmpfit to always converge.
     - Fix a type to convert MUSE variances to sigmas.

  o Some additional minor bug fixes and adjustments to comments.


2.4 (2016-09-10; Revision 4387) - Millenium Falcon

  o Spectrum Viewer (p3d_sv):
        New functionality.
     - Increase the number of definable regions to 1024, which may all overlap.
       A region may use any (one) other region as a background (except itself),
       which co-added and scaled spectrum is subtracted from the co-added main
       spectrum. The spectrum plot now shows either the unsubtracted spectrum,
       the background-subtracted spectrum (this is the default), the
       background-subtracted spectrum and the background spectrum, or all three
       spectra.
     - Regions and background regions are selected either by entering the
       required index or by clicking in the spatial map - using the Ctrl and
       Ctrl+Shift modifier keys simultaneously.
     - Regions configurations can be saved as well as loaded to and from a
       plain-text file. Such region files can be loaded already upon launchning
       the spectrum viewer through use of the keyword REGIONS.
     - It is also possible to load DS9 region files. The following seven
       DS9-types of regions are supported: circle, annulus, ellipse (as well as
       ellipse ... & !ellipse ...), box (as well as box ... & !box ...),
       polygon, and text (which is actually a property and not a region). All
       regions can have local properties associated with them; specifically,
       the following properties are recognized: text, width, color, and
       textangle. All colors in the file /usr/share/X11/rgb.txt are recognized.
     - Multiple DS9 region files are loaded either by selecting the load option
       multiple times or by selecting several files simultaneously.
     - Additional checkbox buttons allow viewing all defined regions
       simultaneously in the spatial-map panel, together with the DS9
       properties if such are defined.
     - An additional option in the Spatial-map menu allows all spatial elements
       in all regions to be unselected with one click; a dialog GUI is shown to
       confirm the action.
     - When multiple groups are chosen for the same region in the regions tool
       (XROI), they are now xor:ed when calculating the spatial elements mask.
       For example, as a result, by creating two circles with the same origin
       using different radii, the resulting region is an annulus.
     - Add coordinate information for the spectrum image and the spectrum
       plot. The information includes the wavelength pixel, the wavelength
       or the wavenumber, the flux and its error (when available) at the
       position of the mouse cursor. The background flux (and its error) is
       shown for the spectrum plot when a background region is defined. The
       spectrum number is shown when the mouse pointer hovers above the
       spectrum image.
     - The flux is indicated in the spectrum panel with a diamond symbol. When
       the actual value is higher or smaller than what is seen in the spectrum
       plot, a plus (minus) symbol is shown above (below) the diamond.
     - Add the option to use physical coordinates of the spatial elements
       that are flipped on the East-West axis. The flipped coordinates are the
       same that one would see in the tool ds9.
     - Add the option to fit a Gaussian emission line in the spectrum plot;
       this feature is used by clicking on the respective outer background
       points and then at the position of the emission line. The fitted
       parameters are shown in the coordinate field until either a new fit is
       made or the "Clean Fit" button is selected.
     - Add emission line list files that are used to show the locations of
       emission lines. The redshift used is either the default system redshift
       (specified with the REDSHIFT_Z and REDSHIFT_VEL keywords) or the
       redshift of the line fit. Additional widgets allow the system redshift
       to be altered inside the tool.
     - Data cubes that use the FITS header keyword BUNIT (such as data cubes of
       the MUSE pipeline) now make use of this constant when it is in the form
       '10**(xxx)*erg/s/cm**2/Angstrom' to scale the read data with the factor
       indicated with xxx.

  o Line fitting (p3d_ifsfit):
        Major new functionality and bug fixes.
     - Now also handles binned data in three different approaches:
        o A bin map can be provided as a plain-text file or a binary-table fits
          file. The format of the bin map includes x and y positions for each
          spatial element as well as a bin index. The data can be contained in
          the fits files with a freely chosen extension name (defaults are
          BIN_TABLE and VORONOI_TABLE) and column names (defaults are BINIDX or
          BINNUM for the bin index and X and Y for the //x// and //y//
          positions, respectively).
        o The second approach is to let p3d_ifsfit calculate a bin map using
          the tool VORONOI_2D_BINNING (Cappellari & Copin 2003), where it is
          possible to define the bin range to use and the target
          signal-to-noise value.
        o The final approach is to use a cube image that was already binned,
          and where the bin map is provided either as a separate extension or
          in a separate file. This setup requires quite a number of fulfilled
          conditions to work - please see the documentation of p3d_ifsfit for
          more details.
     - Both binned and unbinned data use the C-based DLM p3d_cifsfit, which
       means fast and parallelized fits.
     - Now also writes spatial map image files in addition to the binary-table
       fits files. The image files contain images of all fitted parameters and
       their errors in separate extensions. While the binary-table fits files
       are meant to be used with p3d_ifsfit_mosaic, the image files can be used
       by any tool reading fits images.


2.3.1 (2016-02-08; Revision 3993) - Bounty

  o All tools:
        Bug fixes.
     - Correct the size of written postscript and PDF documents.
     - Correct all tools so that they can be used with the updated version of
       the IDL astro-lib routine READCOL (the affected version is of Oct 2015).

  o Line fitting (p3d_ifsfit):
        Minor new functionality and bug fixes.
     - Add the *real* redshift as a separate keyword, Z (which could be used
       instead of the wavelength shift of the keyword REDSHIFT). Alternatively,
       the redshift can be specified as a velocity using the new keyword VEL_Z.
     - Correct the C-version of the line-fitting tool.
     - Correct the use of the tool when LOGLEVEL is not used.

  o Graphical presentation of line fits (p3d_ifsfit_mosaic):
        Bug fixes.
     - Correct the filename use when writing to a PDF file.
     - Correct the color bar for non-log plots.

  o Create a dispersion mask (p3d_dmask):
        Bug fix.
     - Correct the tool so that it can be used again.

  o Line fitting (p3d_sv):
        Minor bug fixes.
     - Correct the standard-star tab calibration-file widgets.
     - The fine shifts of the wavelength range in the spectrum-plot window
       (holding the Ctrl or Ctrl+Shift keys when using the mouse wheel) now
       works with a minimum shift to higher wavelengths of 1 pixel (could be 0
       pixel until now).


2.3 (2015-12-16; Revision 3951) - Bounty

  o All tools (in ${p3d_path}):
        Improved the documentation, minor and important new functionality.
     - Entries in log files are now prefixed with a time stamp.
     - Add the option to avoid using the p3d queue system; this is accomplished
       by setting the -s or --noqueue flag when calling the bash scripts or
       p3d_dispatch.py. Use this functionality to avoid having to use the p3d
       queue system that requires some effort to learn and understand.
     - Made improvements to the p3d queue system to make it more stable. The
       queue system now requires Python version >= 2.7 to run.
       (Only one hurdle remains to have it work on Windows-based platforms;
        the POSIX tool "xwininfo" is used to check for the existence of the IDL
        popup window on the screen.)
     - Add a p3d-specific IDL distribution that removes the necessity to
       register with EXELISVIS to download IDL; this distribtion is used
       whenever IDL is not installed on the system. IDL is assumed to be free
       of IDL when the environment variable IDL_DIR is unset. Please e-mail us
       to get a download link for this distribution file; use the e-mail
       address in the README file.
     - The spectrum viewer, the dispersion-mask creation GUI, and the new tool
       p3d_ifsfit_mosaic now include the ColorBrewer color tables; also when
       the IDL version < 8.3. These color tables are available as values
       higher than the regular IDL tables. To specify the Spectral ColorBrewer
       color table in an IDL-independent way, it is suggested to use use either
       the command:
         "COLORTABLE='CB25'" (on the IDL command line) or
         "COLORTABLE=CB25" (in a shell or in Python, outside IDL)
       or the equivalent command:
         "COLORTABLE='25,brewer.tbl'" (on the IDL command line) or
         "COLORTABLE=25,brewer.tbl" (in a shell or in Python, outside IDL)
     - All PostScript and PDF printouts can now be made using one of the
       following paper sizes: ISO A2, A3, [A4], A5, US Letter, Legal, or
       Tabloid (A4 is the default when nothing else is specified). The paper
       size is set either with the keywords A2, A3, A5, LETTER, LEGAL, or
       TABLOID or with the user-parameters 'a2', 'a3', 'a5', 'letter', 'legal',
       or 'tabloid'.
     - Add support for the new instrument Wise/WIFU, according to the wishes of
       A. Levi.
     - E3D files are now written with the full header of the original data
       intact.
     - The p3d main GUI has been updated; mostly on the inside, but also on the
       outside:
         o Data can now be flux calibrated from the GUI.
         o The IFS/IFU selection GUI is rewritten to use several tabs.
         o The code is rewritten for increased flexibility (it would now be
           possible to add language files, if the community would have such an
           interest).
     - Fiber position-table files are now read before they are used, and can be
       individual to an IFU for the same instrument setup.
     - Add rudimentary support for IMACS. Some work is still required with this
       rather complex instrument.

  o The spectrum viewer (p3d_sv):
        Major new functionality
     - The spectrum viewer has been renamed from p3d_rss to p3d_sv, where sv
       stands for spectrum viewer (rss stands for row-stacked spectra).
     - The spectrum viewer can now be used with reduced data cubes of the MUSE
       instrument. The amount of available RAM on the computer sets the only
       limit to what size can be loaded. The keyword NO_ERRORS can be set to
       avoid loading the error or variance image and thereby save on loading
       time and RAM.
     - Spatial maps of square-shaped spatial elements are now drawn with
       regular images, while circular and hexagon-shaped spatial elements keep
       using polygons. Using regular images, the spectrum image and the
       spatial map are recalculated every time they change; this is made so to
       avoid using more memory than the exiting window sizes (enabling the
       use of huge MUSE datacubes).
     - Add coordinate labels that show the world coordinates (RA, DEC), the
       spatial-element id and image row, spatial-element coordinates, and
       window coordinates on the status line.
     - All draw areas on the first two tabs (not the sensitivity-function tab)
       can now be controlled using the scroll wheel - to pan and zoom. Hover
       the mouse pointer above the question mark below the respective draw area
       on the right-hand side to see help on how to use the mouse.
     - Added two reference wavelength bins in the spectrum image that can be
       used with the new blinking functionality to blink between the regular
       wavelength bin and either one or both of the reference bins. The blink
       time can also be configured.
     - All draw widgets are now redrawn by p3d instead of being handled by IDL.
     - The tool can now be resized; the relative height of the spatial-map area
       can be set with a widget slider in the new 'Extra' control panel.
     - The code has been recoded for speed and is split into several source
       files for increased visibility.

  o Line fitting (p3d_ifsfit, p3d_ifsfit_mosaic):
        Major new functionality
     - Add the tool p3d_ifsfit, which can be configured to fit any number of
       emission and absorption lines in IFU data, using any (possible)
       wavelength range and combination of separate and blended lines. For
       example, both a Gaussian-profile emission line (HII regions) and a
       Lorentzian-profile absorption line (stellar population) of Halpha can be
       fitted simultaneously.
     - Add the tool p3d_ifsfit_mosaic that creates output for presentation from
       data of p3d_ifsfit; output to (encapsulated) postscript, screen, or
       bitmap files. Options exist to control sizes, number of panels, colors,
       axes, fonts, properties, color-bar appearance, etc.

  o Numerous minor bug fixes and adjustments to comments throughout the code.


2.2.6 (2014-09-22; Revision 3223) - Serenity

  o All tools (in ${p3d_path}):
        Improved the documentation, minor and important new functionality.
     - Add support for the new instrument ERASMUS-F. This instrument is
       configured in a similar way to how VIRUS is done. The instrument uses
       six bundles that are split on two detectors, left and right. The
       reductions need to use the correct detector, and only one bundle with
       19 fibers each is reduced at any one time.
     - Add support for some of the IFUs of VIRUS (i.e. not VIRUS-P)...
       additional support is added as the IFUs become available (and are used).
     - Line-profile plots are now drawn on multiple pages, for instruments
       that use many pixels.
     - Add the color table "cubehelix" (all its options are available through
       keywords in p3d, and p3d_rss):
         http://www.mrao.cam.ac.uk/~dag/CUBEHELIX/

  o The spectrum viewer (p3d_rss):
        Minor new functionality
     - The spatial map can now be saved as a bitmap image or to a postscript
       file, the output includes a color bar. Formats include TIFF, JPEG, PNG,
       PS, and EPS. The size of the image is specified in advance with
       droplist widgets in the menu. The output is optionally annotated with
       the spatial-element ID and row number.
     - Initial support to draw the x-axis with the unit wavenumber or
       nanometer, instead of the default unit Ångström.

  o The tracing procedure (p3d_ctrace):
        Add new functionality.
     - Add the new profile function "TophatGaussian" to complement the already
       existing types that are used when calculating cross-dispersion profiles
       ("Gaussian", "Lorentzian", "DoubleGaussian", "Lorentzian/Gaussian"; note
       that the name strings differ slightly compared to before, but the older
       strings are still acccepted, such as "Lorentz/Gauss"). The new profile
       function is now used by default with the VIRUS-P, the VIRUS-W, and the
       VIRUS setups.

       Note! This is not an optimal profile for these instruments, but it
             appears to be slightly better than a Gaussian profile.

  o Compilation of the IDL routines for the p3d server (p3d_tool_makevm):
        Convenience fix.
     - The compilation is now correctly reported to fail if the required IDL
       routines are not available in the path.

  o Various minor bug fixes and adjustments to comments throughout the code.


2.2.5.1 (2013-12-19; Revision 3053) - Serenity

  o Cosmic-ray cleaning (p3d_cr):
        Fixed a bug.
     - The C-based cosmic-ray cleaning routine is reactivated after the
       problematic bug that is mentioned for release 2.2.5 was fixed. The fix
       was applied with revision 3025.

  o Correct a bug in the C routine p3d_cssl_median.c. Switching from using
       IDL_LONG to size_t, in an iterator, I had not checked that the value was
       compared with a negative value. The result was that the code crashed.
       The bug could be circumvented by not using the scattered-light
       subtraction (by using the following statement in the user-parameter
       file: "subtractscatteredlight no"). This bug was introduced in revision
       2989, and was fixed with revision 3045.


2.2.5 (2013-11-06; Revision 3018) - Serenity

  o All tools (in ${p3d_path}):
        New instrument setups.
     - Added support for the AAT/AAOMega/SAMI instrument. The setup should work
       more or less starting with revision 2851 (adjusted the spectrum
       extraction with in revision 2912).

     - Added support for the VIRUS instrument. This new setup is only intended
       to be used as a testing tool for lab data. The setup has initially been
       configured for IFUs 11, 18, and 8 (as well as partly 3, 4, and 5), but
       support for all 65-80 IFUs is easily added.

  o All tools that combine raw-data images:
        New functionality.
     - The C-based module that combines raw images with the min/max filter
       method, p3d_cimcom.c, now works as expected also when there are more
       than 20 images. This is how it works from now on.

       When the user selects 10 images or fewer - this value is set with the
       user parameter imcomb_minmaxgroupn - the images are stacked and the two
       pixels with the lowest and the highest values are discarded. Another set
       with the lowest and the highest values are discarded if the number of
       images is higher than 10, but lower than or equal to 20. The total
       number of discarded pixels are as follows (assuming that
       imcomb_minmaxgroupn=10), as function of the number of combined images n:
       n<11, 2; 10=2780.

  o C routines:
        Optimization.
     - Optimized the C routines p3d_cpixex.c and p3d_cmpd.c.


2.2.2 (2013-05-29; Revision 2771) - Serenity

  o All tools (in ${p3d_path}):
        Major new functionality.
     - All tools in p3d were so far accompanied by their individual binary file
       for use with the IDL Virtual Machine. This setup has now been completely
       changed. From now on there is only one binary file that contains all
       tools - "p3d_tool_server.sav". The binary file is launched as a server
       on any number of threads on the computer where p3d is used (default is
       all threads minus one).

       Thereafter, a new Python-based p3d queue handler manages all p3d IDL
       servers that were launched by the user, by submitting jobs to free
       servers. Jobs are dispatched by the new tool p3d_dispatch.py, which is
       also called by the now obsolete bash scripts in ${p3d_path}/vm/ (those
       scripts are still kept to allow already written scripts to be executed
       without any changes).

       An important feature is that jobs are submitted using either all threads
       or just one thread (the queue manages different jobs transparently). It
       is up to the user to select an appropriate number of threads. Any tool
       that uses multiple threads internally, such as profile fitting or
       spectrum extraction, should be launched using one thread. The older bash
       scripts have been modified such that p3d_ctrace_vm.sh, p3d_cflatf_vm.sh,
       and p3d_cobjex_vm.sh require all threads.

       Simultaneously the p3d compiling script, as well as the additional tools
       download script are replaced with Python versions of the same tools:
         p3d_tool_makevm.sh is replaced with p3d_tool_makevm.py, and
         p3d_acquire_xtools.sh is replaced with p3d_acquire_xtools.py.

     - Activated the new parallelized C routine that cleans single images of
       cosmic-ray hits. For a test with one VIMOS image and 8 threads the
       C based cleaning took 16.6s, and with 1 thread 45.8s. The corresponding
       time using the IDL-based routine was 41.6s. The routine  - p3d_ccr.c -
       was mainly written by F. Tabataba-Vakili.

     - Activated the new parallelized C routine that combines images using the
       min/max method. For a test with three VIMOS images the IDL took 14.13s,
       the C routine with one thread 0.335s, and with four threads 0.115s, the
       corresponding speedup is thereby 40 and 120! The routine
       - p3d_cimcom.c - was written by F. Tabataba-Vakili.

     - Activated the new parallelized C routine that calculates pixel-based
       cross-dispersion profiles for the optimal extraction when using
       p3d_extract_optimal_mox and for viewing the profiles in
       p3d_extract_optimal (the entry in the remaining routine p3d_optimal_mpd
       was converted when that routine was made a C routine). The routine
       - p3d_cpixex.c - was written by F. Tabataba-Vakili.

        Minor bug fix.
     - All tools in p3d can be used with the new p3d queue server system. Up to
       now there was a bug when parsing filenames of keywords. This has been
       fixed with revision 2680, but it is still impossible to use filenames
       that contain only one starting slash; such as "/file.fits".

     - The p3d main GUI tool has been corrected to reload multi-extension
       dispersion-mask images properly (when creating a new dispersion-mask
       image). The tool now also behaves properly also when the external
       program ds9 is not in the path. Thanks to Pieter Gruyters for pointing
       at the issues that these two bugs led to. This was fixed with revision
       2693.

     - The latest VIMOS setup, which is used since 2012.03.15 at the telescope,
       has been fixed (bvimos_hr.prm). The cropped detector-section that is
       used with HR-blue was used with all grisms, which is in error. This has
       been fixed so that HR-blue uses a cropped version, while the other
       grisms use the uncropped section. This was fixed with revision 2711.
       This issue was addressed by P. Gruyters.


  o The RSS to cube conversion routine (p3d_rss2cube):
        Fixed a minor bug.
     - The spatial element scale could not be specified using the keyword
       SPAXELSCALE, but instead had to be provided in the user-parameter file.
       This was corrected with revision 2667.

  o Dispersion-mask creation routine (p3d_cdmask):
        Fixed a minor bug.
     - In p3d_wavecal_dispmask_gui there is a statement that compares an
       integer with a string. Apparently this works great in IDL 7.1 x86_64,
       but not at all in IDL 7.1.1 x86_64. This has been corrected with
       revision 2685. This bug was spotted by C. Herenz.

     - p3d_wavecal_dispmask_add_spec has had a bug since revision 2402 (this
       was when the scaled polynomial fit of the wavelength array was added)
       that prevents calibration-fiber data from being added for instruments
       that use such; in this case FLAMES/Argus/IFU1/IFU2. This has been
       corrected with revision 2729. This bug was found by S. Kamann.

  o Spectrum extraction (p3d_cdmask, p3d_cflatf, p3d_cobjex):
     - Reducing VIMOS data and not having /NOOBCHECK set there was a bug that
       prevented the OB id number to be parsed in dispersion-mask images that
       use the new extension-based format. This was corrected with revision
       2761. This bug was found by A. Castrillon.

  o Flux calibration (p3d_fluxsens, p3d_fluxcal, p3d_rss):
        Fixed a minor/major bug.
     - A sensitivity-function file can be saved using either p3d_fluxsens or
       the sensititivity-function tab in p3d_rss. In the latter case the
       wavelength-array keywords CRVAL, CDELT, and CRPIX, were so far not
       written for the first dimension (as they have to be for p3d_fluxcal to
       work). (Note! This only concerns instruments where the second axis is
       the dispersion axis.) This has been corrected with revision 2678.
       This bug was spotted by P. Gruyters.

  o Updated support for some instruments:
     - Integral (/INTEGRAL, /OLDINTEGRAL):
       On a request of M. de Bont and K. Exter, the instrument-keywords were
       adjusted so that keyword parameters containg a dash are read properly.
       This makes possible the creation of a sensitivity function for this
       instrument (the spectrum must still be corrected for flux lost between
       fibers, but it is a start).
       The old-Integral instrument-keywords file was updated in revision 2719,
       previous revisions (since a long time back) are unable to extract
       airmass values properly.
     - VIRUS-P (/VIRUS):
       After a request from E. Freeland (Stockholm Univ.) a dead-fibers file
       was added for fiber bundle 2. Note that the fiber status have evolved
       from the initial state (where everything worked) to now. Hence, it may
       be necessary to edit a copy of the new dead-fibers file for intermediate
       data.

  o The p3d main GUI (p3d_tool_gui):
         Bug fix!
     - Switching to the new extension-based format for dispersion-mask images,
       I had forgotten to fix the checking of which quadrant is used with
       VIMOS files. This was fixed with revision 2621.

  o Various minor bug fixes and adjustments to comments throughout the code.


2.2.1 (2013-01-21; Revision 2611) - Serenity

  o All tools (in ${p3d_path}):
        New instrument setup supported.
     - Added support for the latest VIMOS setup, which is used since 2012.03.15
       at the telescope. The new setup is used with the BVIMOS keyword, and the
       bvimos_hr.prm instrument-parameter file. Only half of the CCD is used
       with the new HR-blue configuration, compared to the older configuration.
       This support was added with revision 2599.

  o The dispersion-mask creation (p3d_wavecal_dispmask_gui):
        Corrected a major bug.
     - In previous updates to use fits-file extensions also with the
       dispersion-mask file a zero-extension header was forgotten in the
       first-extension header. It is impossible to save a dispersion mask with
       this bug. This has been corrected with revision 2605, and is the cause
       for this release.

  o Various minor bug fixes and adjustments to comments throughout the code.


2.2 (2012-12-13; Revision 2578) - Serenity
  o Flux calibration (p3d_fluxsens, p3d_fluxcal, p3d_rss):
        Now ready to be used.

     - With this release all flux-calibration routines, as well as related
       parts in the master user-parameter file, are thoroughly documented and
       tested. The flux calibration procedure is intended to be the following:
       at first, a sensitivity function is created using observed spectra of a
       standard star with the tool p3d_fluxsens. Thereafter extracted science
       spectra are flux calibrated using p3d_fluxcal.

       p3d_fluxsens is meant to be an automatic tool that avoids any user
       interaction, an interactive version is instead available in the spectrum
       viewer; all options of p3d_fluxsens are available through various
       widgets under the sensitivity-function tab. To mention some features,
       the sensitivity function is fitted to an observed (and sky subtracted)
       spectrum using one of eight kinds of interpolation: regular polynomial,
       Chebyshev polynomial, Legendre polynomial, three varieties of (cubic)
       splines, and two varieties of quadratic piecewise interpolation; the
       polynomial order can be chosen in the range 0-20.

       One feature is only available in the spectrum viewer, the masking of
       unwanted calibration standard-star data band-passes/entries. These
       entries are easily rejected by clicking on them one by one with the left
       mouse button, or dragging out a box with the left mouse button in one of
       the plot panels. Edited data can be saved to a plain-text file for
       continued use with other data or with p3d_fluxsens. Masked entries are
       unmasked in the reverse order they were masked by pressing the right
       mouse button repeatedly.

       The polynomial fits were implemented and checked to work with revision
       2415.

  o The spectrum viewer (p3d_rss):
        Interesting new functionality
     - The spectrum viewer is able to read both RSS images and data cubes that
       were created using the CALIFA project data-reduction pipeline. To view
       such data files it is necessary to start the spectrum viewer from the
       command line. Here is an example:

         p3d_rss_vm.sh CALIFA_cube.fits.gz parfile=ppak4k.prm

       Data cubes are converted to an RSS image, by the p3d spectrum viewer,
       before the graphical user interface is launched.

  o The science-object extraction routine (p3d_cobjex):
        Corrected a major bug.

     - Corrected a serious bug that affects some reductions using re-alignment
       of the dispersion solution with telluric lines. Specifically, the bug
       affects anyone using a dispersion mask that is poorly determined for the
       lowermost pixels, which might be the case with data where there are no
       calibration arc lines in the lowermost part of the wavelength range. The
       correction was made to the routine p3d_wavecal_dispersion_correction.

       This bug fix involves two issues. Since very long it was forgotten to
       update the arrays with relative pixel sizes after offsets were applied.
       The second issue is the following. The resampling wavelength array was
       always calculated starting with the first pixel in the output array. If
       the dispersion mask was poorly determined at the lower wavelength range
       it was often impossible to create an accurate wavelength calibration, in
       particular when the dispersion solution was re-aligned using telluric
       lines. An example of data where this might happen are VIMOS/HR-orange
       data, where there are no arc lines shortwards of about 5500Å. Wavelength
       calibrated data using a dispersion mask that is poorly determined for
       lower wavelengths would result in the wavelength array being shifted one
       pixel at all wavelengths, of affected spectra.

       The resampling wavelength array is now calculated starting from the
       middle output pixel, by default. The starting pixel can be chosen with
       the keyword RESAMPLE_STARTPX or the user parameter 'resample_startpx'.
       This issue was completely corrected with revision 2349.

  o Accuracy of dispersion masks (p3d_cdmask):
        Major modification - significantly improved the accuracy.

     - Polynomial fits have been drastically improved, by rescaling abscissa
       arrays to always use the range [-1,1]. This way it is possible to use
       high-order regular polynomials with good results; when the order is
       about <15. For dispersion masks this adjustment has required saving of
       additional data, with the lower and the upper pixel values that were
       used in the scaling, in the dispersion-mask file. All tools that read
       such dispersion-mask files automatically recognize file formats using
       both the new format and the older format (which is unable to perform the
       rescaling due to the missing data). The polynomial fits were implemented
       and checked to work with revision 2410. The spectrum-viewer buttons in
       the main GAUI panel were updated to work with revision 2478.

  o All tools (in ${p3d_path}):
        Major modifications.

     - Added support for the instruments VIRUS-W and Integral (new CCD, all
       four IFUs: SB1-SB3 and equalized). These instruments use files where
       data of several blocks are contained in the same file.

     - Cosmic-ray cleaning: Added the keyword GAUSSKERNELSIZE and the user
       parameter 'crgausskernelsize' to the tools p3d_ctrace, p3d_cdmask,
       p3d_cflatf, p3d_cobjex, and p3d_cr.

       Also added some instructions on how to make the cosmic-ray cleaning
       mimic the results achieved in Husemann et al. (2012; PyCosmic).
       Basically, one must set the keyword GROWRADIUS to zero.

     - Repaired the support for the FLAMES mini IFUs (IFU1 and IFU2). Due to an
       improvement in revision 2095 to handle dead fibers correctly the routine
       was unable to trace spectra at all. The "improvement" has been commented
       out in revision 2508, and the routine works as it should again.

     - Up to now (nearly) all output data were written to separate files. Now
       the keyword ALLINONE, as well as the user parameter "allinone", has been
       added to all tools. The default value of this keyword and user parameter
       is that allinone is set. This means that (nearly) all output data are
       written to the same file, using consecutive extensions. To have the same
       behavior as before it is necessary to unset this keyword.

       All tools of p3d handle files using both approaches, in any mixture.
       For example, if parts of the files where created with ALLINONE unset, it
       is possible to continue with ALLINONE set.

       The names of the different extensions are explained in the master
       user-parameter file.

       The purpose of this change was to allow the resulting data cube files to
       be used with the CASA viewer (which requires additional header
       keywords), but also have a smaller number of resulting output files. All
       written fits files are now (meant to) conform to the FITS standard.

       Multi-extension fits files are easily examined using the program ds9
       using commands such as the following examples:
         ds9 file.fits[DATA] ::
           To view data in the main extension.
         ds9 file.fits.gz[ERROR] ::
           To view data in the error extension.
         ds9 file.fits.gz[DATA] file.fits.gz[MASK] ::
           To open the main data and the mask image in separate frames.

       This new mode was confirmed to work fully with revision 2478.

  o The use of prescan and overscan regions (p3d_c?????):
        Corrected a serious bug (that should affect very few)
     - Prescan regions of PMAS/4kx4k data were never normalized to use the mean
       gain, as the rest of the data are, including overscan data. Corrected
       this bug by adding a correction factor to the block combined image, all
       reductions making use of the prescan regions must be redone. This was
       fixed with revision 2465.

     - Added the possibility to specify bias values explicitly using the
       BIASCONSTANT keyword, or the 'biasconstant' user parameter. This support
       was added and checked to work with revision 2559.

  o The master-bias tool (p3d_cmbias):
        Minor new functionality
     - Added the keyword NODIALOG, and the new user parameter 'biasnodialog',
       which avoids the widget dialog that asks if a single image should be
       smoothed. By default NODIALOG is set, and no smoothing is performed.
       This support was included with revision 2462.

  o Bias-subtracted images (p3d_ctrace, p3d_cdmask, p3d_cflatf, p3d_cobjex):
        Minor new functionality
     - Added the keyword SAVEBIASSUB, and the new user parameter 'savebiassub',
       which save the (optionally combined) bias-subtracted raw-data image to a
       separate file. This could be a useful option if one wants to check the
       quality of the bias subtraction, in particular when using a bias image
       that was created using prescan and overscan data. This support was
       included with revision 2482.

  o The RSS to cube conversion routine (p3d_rss2cube):
        Fixed a minor bug.
     - Corrected a bug that affects output saturated-pixels data cubes. So far
       such data cubes were never created, instead the bad-pixels mask image
       was written again, if a bad-pixels mask image was present.

  o The p3d development version repository.
        Changed location
     - Until 7.12.2012 the p3d repository address was:
         http://p3d.svn.sourceforge.net/svnroot/p3d
       After 7.12.2012 the repository address was changed due to software
       upgrade at sourceforge.net. The new addresses are:
         svn://svn.code.sf.net/p/p3d/code
       or
         http://svn.code.sf.net/p/p3d/code.
       Directories pointing at the old directory can be used for as long as
       there is no need or wish to update p3d. The new repository is
       incompatible with the old repository, which is why the old one must be
       replaced with a copy using one of the two new repository addresses
       before p3d can be updated anew.

       p3d developers have two choices to access the repository: either using
       the svn+ssh protocol or the https protocol. The exact command lines are
       provided at the p3d web site when one is logged in (with repository
       write access).

  o Various minor bug fixes and adjustments to comments throughout the code.


2.1.4 (2012-09-17; Revision 2250) - The Warbird
  o The spectrum viewer (p3d_rss):
        Major new functionality
     - Spatial elements used to be selectable (deselectable) only by clicking
       on them one by one with the left (right) mouse button, or selecting
       either all or no elements. With version 2.1.2 it became possible to also
       select spectra of dead, low-transmission, and sky fibers.

       Now it is in addition possible to select spectra (spatial elements)
       using a widget tool that defines one or several regions of interest
       (ROIs). These ROIs are defined interactively using either rectangles,
       ellipses, polygons, or freehand drawn curves. The spatial elements that
       fall roughly within all setup regions are selected upon closing the ROI
       tool. The same regions are used anew whenever the ROI tool is opened
       again in the same session. It is also possible to save the ROIs inside
       the ROI tool, and later load then from the spectrum viewer for reuse.

       Additionally, it is possible to save and load created spatial-element
       bin map files. These map files are plain-text files that contain as many
       bins as required; each bin is assigned a positive integer, which is
       greater than zero. The spectrum viewer allows viewing and creating one
       such bin at a time. The bin number is changed using a droplist widget.

  o Regarding the instrument support for PMAS/4kx4k CCD (both PPAK and Larr):
     - When files are downloaded from the Calar-Alto archive they have
       filenames with a date and time string in them. This time string does not
       work properly with previous versions of p3d, since p3d cannot determine
       the names of all files of all blocks automatically. This has now been
       corrected with revision 2196, which uses the original filename that is
       available in the header-keyword keyword ORIG_FILENAME FILENAME
       (of PMAS/4kx4k CCD files).

  o The dispersion-mask creation (p3d_wavecal_dispmask_gui):
     - At some point the feature was deactivated, which displays a help for
       each button in the tool. It has now been reactivated again, with
       revision 2185.

  o The use of prescan and overscan regions (p3d_cr):
     - There has been a small bug that would prevent prescan and overscan
       bias images from being used with images that are to be cleaned of
       cosmic rays. This was fixed with revision 2230.

  o Combining multiple files with extracted data (p3d_cexposure):
        Corrected a serious bug.
     - An error was included with the new feature using bad-pixels mask images
       of revision 2126 (which is included in release 2.1.3). The error of the
       first file was never squared, which results in final errors that should
       be squared to be more correct. This has been corrected with revision
       2152.

  o Various minor bug fixes and adjustments to comments throughout the code.


2.1.3 (2012-06-28; Revision 2134) - The Warbird

  o The spectrum extraction
    (p3d_cdmask, p3d_cflatf, p3d_cobjex, and p3d_cexposure):
        New functionality
     - An output bad-pixels mask image is written if a bad-pixels mask image or
       a cosmic-ray mask image are provided, or if the cosmic-ray mask image is
       calculated. Each spectrum element in the output mask contains the total
       number of masked pixels in the bad-pixels mask image. The output mask
       images are used by p3d_cexposure when extracted images are combined.
     - The resampling of extracted spectra from pixel to wavelength units is
       now done more carefully to completely avoid Not-a-Numbers in the output
       spectrum image.

  o Bias subtraction:
        Minor new functionality
     - New-generation-controller instruments (ERA2) can now also use prescan or
       overscan regions to calculate a bias image.

  o Saving data in the e3d format:
        New functionality
     - All routines writing science-object row-stacked spectrum (RSS) files now
       also write e3d-formatted files. This option is activated either using
       the keyword SAVEE3D or the user parameter savee3d. The following four
       routines can now do this, in addition to p3d_cobjex: p3d_fluxcal,
       p3d_cvimos_combine, p3d_darc, and p3d_cexposure.

  o Removing of cosmic-ray hits in single raw-data images (p3d_cr):
        Minor new functionality
     - Added the new keyword and user parameter GROWRADIUS, which allows a
       definition of the width of the frame of pixels around each pixel that is
       masked as a cosmic-ray hit. Additional cosmic-ray hits are identified in
       these neighbor pixels. In this case the first criterion is used as
       S'>sigfrac*sigclip. The growing radius has previously always been set to
       1, but can now also be set to 0 and 2. The default value is 1.

  o The spectrum viewer (p3d_rss):
        Minor new functionality
     - The (approximate) spectrum-viewer window size can now be specified using
       the keyword WINXYSIZE. Allowed values are:
         [1000,750]<=WINXYSIZE<=[max(xsize),max(ysize)].
       The p3d main GUI provides a set of pre-defined values in the Options
       menu. Only those options are available that are smaller than or equal to
       the screen size.
     - Since revision 1982 it is no longer necessary to specify the IFU angle
       header keyword (KWANGLE) when the PARFILE keyword is set. The correct
       parameter name is now read automatically from the instrument-specific
       keywords file. Note that this new feature only affects sessions that are
       not based on use of the p3d main GUI.
       Note! For instruments that do not use this option it is necessary to
         update to revision 2116, since previous revisions contain a bug that
         does not allow the spectrum viewer to be opened.

  o The fiber position tables for FLAMES/ARGUS, FLAMES/IFU1, and FLAMES/IFU2
    now also contain positions for the sky fibers. These sky fibers can be
    viewed in the spectrum viewer when the keyword ANDSKY is set, or the GUI
    menu option "Spectrum viewer - view sky fibers" is set to "yes". The sky
    fiber positions do not correspond to the actual position on the sky.

  o Various minor bug fixes and adjustments to comments throughout the code.


2.1.2 (2012-04-23; Revision 1948) - The Warbird
  o All tools (in ${p3d_path}):
        Improved the documentation, minor and important new functionality.

     - Added support for the new instrument ERA2. This instrument uses files
       where data of several blocks are contained in the same file. It has
       been necesary to adjust p3d quite significantly to support this format.
       Hence, some problems might occur elsewhere.

     - Added support to use prescan and overscan regions to create a bias
       when no master-bias image is specified. The region to use is simply
       specified using the following parameters:

       biaspx :: uses the x-axis prescan region. Specifically, a median value
                 is calculated for each pixel on the y axis in the x-axis
                 prescan region. The same array is used with all y-axis columns
                 of the data that are bias subtracted.

       biaspy :: uses the y-axis prescan region. Specifically, a median value
                 is calculated for each pixel on the x axis in the y-axis
                 prescan region. The same array is used with all x-axis rows
                 of the data that are bias subtracted.

       biasox :: uses the x-axis overscan region. Specifically, a median value
                 is calculated for each pixel on the y axis in the x-axis
                 overscan region. The same array is used with all y-axis
                 columns of the data that are bias subtracted.

       biasoy :: uses the y-axis overscan region. Specifically, a median value
                 is calculated for each pixel on the x axis in the y-axis
                 overscan region. The same array is used with all x-axis rows
                 of the data that are bias subtracted.

       biasconstant :: Set this keyword to use a constant value as a bias
                 value; otherwise an array is used. All the regions that are
                 specified using the keywords - or user parameters - biaspx,
                 biaspy, biasox, and biasoy can be used when this keyword,
                 or user parameter, is set; otherwise only one of them.

       Default values are specified in the instrument-parameter files of the
       following instruments: PMAS/Larr, PMAS/PPAK, VIMOS, FLAMES, GMOS. For
       as long as the raw data contains either region any region can be used.
       The use is specified either using a keyword in p3d_cr, p3d_ctrace,
       p3d_cdmask, p3d_cflatf, and p3d_cobjex, or using the user-parameter
       file.

       Note! These regions are only used when no master-bias image is
             specified.

       This functionality is so far preliminary, and not fully documented. Full
       support will be included starting release 2.2.

     - The routine documentation has been significantly revised for clarity.
       p3d_cobjex: improved the documentation so that it more accurately
         describes how the science-object spectrum extraction works, including
         information on how to use the instrument-flexure correction, as well
         as scattered-light subtraction features.
       p3d_cflatf: improved the documentation so that it more accurately
         describes how flat-field data are treated, including a section on how
         to combine a lamp flat-field image with a twilight flat-field image.
       p3d_rss: Cleaned up the documentation, removing a part belonging to
         p3d.pro.

     - The instrument-parameter file PARFILE can now be specified without the
       full path as a prefix. I.e., instead of
         PARFILE=!p3d_path+'data/instruments/vimos/nvimos_hr.prm'
       it is now possible to write
         PARFILE='nvimos_hr.prm'
       the file is searched for automatically in the p3d data subdirectory.

  o Flux calibration (p3d_fluxsens, p3d_fluxcal):
        New functionality.
     - Added first versions of routines that allow flux calibration. These
       routines are only preliminary in this release. More complete
       functionality, and documentation, will be available in the future
       release 2.2.

  o The science-object extraction routine (p3d_cobjex):
        Added some new functionality.

     - Added the option to save the final normalized flat-field image. This
       image is now stored when then keyword SAVEFINALFLAT is set, or the
       user parameter ff_save_final_image is set to 'yes'.

     - The flat-field transmission file of an extracted twilight flat-field
       image is now properly used to normalize data for the fiber-to-fiber
       transmission. To use this feature: first set the TRANSMISSION keyword
       before running the p3d_cflatf tool (also see the new keywords PCUTLOW
       and PCUTHIGH), and then extract the data using p3d_cobjex, setting the
       NF2F keyword.

     - Added the option that the wavelength arrays of individual spectra can be
       corrected individually, when using one or several sky-emission lines.
       Previously all wavelength arrays of the dispersion mask were always
       offset using one median value calculated for all used sky-emission lines
       and spectra. This approach has been found to be particularly poorly
       suited with the multi-detector instrument VIMOS.

       Note that the default method now is to use an individual correction.

       A linear fit is now also made of the pixel offset between two or more
       sky-emission lines. It is up to the user to select appropriately spaced
       lines.

       Additionally, the wavelength offset is weighted with the pixel size,
       since the offset due to flexure takes place in pixel space, and not in
       wavelength space. This treatment allows a more correct offset. See the
       keyword ONESKYOFFSET, as well as the user parameter 'oneskyoffset', for
       more information.

     - During the dispersion correction the errors are now ensured to be
       non-zero - there are no more NaNs in the resulting output images.

  o The flat-field preparation routine (p3d_cflatf):
        minor new functionality.

     - Improved the documentation so that it more accurately describes how
       flat-field data are treated, including a section on how to combine a
       lamp flat-field image with a twilight flat-field image.

     - Updated the handling of the fiber-to-fiber transmission file, so that it
       will work to correct data using, for example, both a lamp flat and a
       twilight flat.

     - Added the keywords PCUTLOW and PCUTHIGH which can be set to use only a
       part of the CCD before calculating the fiber-to-fiber transmission
       array. It might be useful to change one of these values if the CCD
       sensitivity is lower on one side. For example, with the VIMOS HR-blue
       grating PCUTLOW should be set to something like PCUTLOW=32.0.

  o The dispersion-mask creation tool (p3d_cdmask):
        New functionality.
     - Added the keyword LINELISTLIMIT, as well as the user parameter
       'linelistlimit_dm', which allows an automatic selection of only those
       entries that are brighter than the selected value. This option is only
       available if the arc-line list file contains at least two columns, where
       a relative intensity is specified in the second column (as a decimal
       value). All entries are used, which do not contain a second column.

  o The spectrum viewer (p3d_rss):
        New functionality.
     - Added the option to save either the currently selected spectrum (as
       before) or both the currently selected spectrum and the subtracted
       spectrum to the same file. Both options are available in the File menu.
     - Added the option to divide all spectra with the selected spectrum, to
       the previous option of subtracting the selected image from all spectra.

     - Hexagon-shaped elements are now shown and selected properly in the
       spatial map. Such elements are used with the GMOS-S and the GMOS-N IFUs.

     - If the new keyword PARFILE is specified it is no more necessary to
       specify the argument POSFILE, or the dispersion axis DAXIS.

     - In addition to selecting " all" and "none" of the spatial elements in
       the spatial map view, it is now possible to also select "a- t" (all but
       low-transmission elements), "   t" (low-transmission elements), "a-dt"
       (all but dead and low-transmission elements), "a-d " (all but dead
       elements), "  d " (dead elements), "  dL" (dead and low-transmission
       elements), "a-s " (all but sky elements), and " sky" (all sky elements).
       Of course, these changes only apply to the instruments which have such
       low-transmission, dead, or sky fibers. It is, additionally required to
       specify the PARFILE argument when starting p3d_rss.

  o Various minor bug fixes and adjustments to comments throughout the code.


2.1.1 (2012-02-06; Revision 1615) - The Warbird
  o Combining multiple files with extracted data (p3d_cexposure):
        New functionality.

     - Added a new tool that combines mutliple extracted exposures that are
       taken illuminating the exact same field on the sky. The supplied data
       are at first checked for consistency in image size and equal values on
       the wavelength calibration parameters CRVAL and CDELT. Thereafter the
       files are either averaged, weighting with the exposure time of the
       individual exposures. Alternatively, setting the /SATURATED keyword it
       is expected that all files have a different exposure time. In this case
       the longest exposure is used as reference. Portions of individual
       spectra, where a mask indicates that a pixel was saturated, are then
       replaced with scaled data of the same spectrum and portion of a file
       using a shorter exposure time. The routine accepts any number of files.
       The routine produces one output file with merged data, and a file with 
       corresponding errors if all the error files of the input images are
       available.

  o Handling of saturated pixels in the raw data:
        New functionality.

     - From now on a new mask file is written along with extracted data
       whenever the keyword SATMASK is set in the routines p3d_cdmask,
       p3d_cflatf, and p3d_cobjex. This mask file indicates, for each element
       in the spectra, if any of the used raw-data pixels were saturated. Only
       the center part of the cross-dispersion profile is considered for
       optimally extracted spectra. This functionality will be used to combine
       extracted spectra that use different exposure times.

  o The science-object extraction procedure (p3d_cobjex):
        Minor bugs affecting the functionality.

     - A cosmic-ray mask file that was provided as an input keyword (CRMASK)
       was never identified.

     - If a run would contain several groups, where some would require the
       combination of images, and some others not, while /crclean was set, then
       the combined images would not be properly reduced.

  o The dispersion-mask creation procedure (p3d_cdmask):
        Major bug affecting PMAS 4kx4k reductions.

     - A new method to handle arc-line entries in vignetted regions of the
       PMAS 4kx4k CCD, both Larr and PPAK, was introduced in version 2.1.
       However, the initial version is completely filled with bugs. This has
       been corrected with revision 1557, also the log-file output has been
       improved. Additionally, the vignetted arc-line entries (wavelengths) are
       indicated in the "Check the final fits" tab, for the affected spectra.

       Note! To continue to use version 2.0, when creating a dispersion-mask,
             it is necessary to comment the "vignettedfile_dm" entries in the
             instrument-parameter files larr4k.prm and ppak4k.prm.

        Minor issue affecting any data with calibration spectra.

     - Corrected the display of the affected spectrum (number) in the
       "Check the final fit" tab. The number is now showing the correct
       spectrum also for data that contain calibration spectra.

  o Compatibility with PINGSoft:
        Added functionality

     - Added PINGSoft-formatted fiber-position table files (to
       ${p3d_path}/data/tables/pingsoft_postables/), which can be used with the
       reduced outcome of p3d to analyze the data using the IFS analysis tool
       PINGSoft: http://www.ast.cam.ac.uk/ioa/research/pings/html/index.html.
       These new tables were introduced with revision 1602.

  o Reduction work with GMOS:
        Minor issue affecting cosmic-ray cleaning with GMOS data

     - Fixed the cosmic-ray cleaning routine so that it works with the
       multi-extension data of GMOS. It did not until now. This was fixed with
       revision 1577.

  o Reduction work with MPFS:
        Major issue affecting any accurate spectrum extraction

     - Updated the instrument parameters so that it is possible to calculate
       accurate cross-dispersion line profiles for optimal extraction by
       default. This was made with revision 1584.

  o Reduction work with VIRUS-P:
        Major bug affecting VIRUS-P reductions.

     - Fixed a bug that concerned how the parsing of the CCD binning parameter
       CCDSUM. The bug caused all VIRUS-P reductions to not work, since quite a
       while. This was fixed with revision 1572.

  o The (automatic) feature to compile the C-language source files...
        Minor bug affecting those with a src/ directory unavailable for writing

     - Corrected the minor bug (a forgotten path separator) so that it works
       again.

  o Various minor bug fixes and adjustments to comments throughout the code.


2.1 (2012-01-16; Revision 1529) - The Warbird
  o Correction for differential atmospheric refraction (p3d_darc):

     - Added a new tool that corrects extracted science images for differential
       atmospheric refraction. The new tool works out-of-the-box with all the
       IFUs that use square-shaped spatial elements (VIMOS, FLAMES, PMAS/Larr,
       MPFS, and SPIRAL). In some cases the required physical properties are
       unavailable in the data header. In that case they must be entered by
       hand.

     - The routine allows the user to choose between three implemented
       approaches to calculate the offsets. The results of all three approaches
       are collected in a plot, which allows the user to choose the most
       accurate method as he or she believes is more correct.

     - The offsets are calculated using the wavelength-dependent
       refractive-index equation of Ciddor (1996; as well as Edlén 1966).

     - A second approach uses a height-integrating approach to calculate the
       refractive-index that comes from the Starlink project. The routine
       integrates the refractive index through the trophosphere and the
       stratosphere.

     - A third method uses an empirical fit of a two-dimensional Gaussian
       profile to the data itself to calculate the DAR-caused offsets on both
       the X and the Y axis.

     - Most of the features of the DAR-correction routine of J.Walsh (ESO) have
       been included with his permission.

     - Please note that the calculated errors are off as correlated errors are
       completely ignored (at the moment).

  o Removing of cosmic-ray hits in single raw-data images (p3d_cr):
     - Added a new tool that cleans single raw-data images of cosmic-ray hits.
       The new tool works with all raw data that are used with p3d.

     - The tool uses an IFS-adapted version of the L.A. Cosmic IDL routine of
       J.Bloom (Berkeley); this adaptation has been made with the permission of
       both P.van Dokkum (Yale) and J.Bloom. The modifications have been
       implemented partly according to the suggestions of B.Husemann (AIP).

     - By default the routine only produces a cleaned image and a cosmic-ray
       hit mask. However, if the keyword WRITEALL is set then intermediate
       products are also written to the disk at each iteration; these products
       allow a close inspection of the quality of the cleaning procedure, and
       may also require huge amounts of disk space.

     - The cosmic-ray mask is used as a bad-pixel mask during (optimal)
       spectrum extraction. Thereby the, so-called, weight of masked pixels are
       set to zero - i.e. they are excluded from the calculations.

     - The routine can be called separately, but is also available from
       p3d_ctrace, p3d_cdmask, p3d_cflatf, and p3d_cobjex, when the new keyword
       /CRCLEAN is set.

  o The spectrum extraction:
     - The resampling of the extracted spectra from pixel to wavelength units
       can now be done using either a one-dimensional drizzling algorithm, or
       the original linear-interpolation approach. The error calculation of the
       original linear-interpolation method has been improved. The older less
       accurate errors are still available for comparison; through the use of
       the ORIGINALERRORS keyword.
     - The multi-profile deconvolution method that uses a band-diagonal matrix
       has been fully ported to C for fast and parallelized execution. The new
       routine, which has been written by F. Tabataba-Vakili at AIP, compiles
       and executes automatically; together with the other C routines.

  o The RSS to cube converter (p3d_rss2cube):
     - Added a new tool that converts the extracted images that p3d writes into
       cubes, which may be easier to work with. This routine is only available
       as a stand-alone tool, and also only works with the IFUs that use
       square-shaped elements, i.e. PMAS/Larr, SPIRAL, VIMOS, FLAMES, and MPFS.

  o The scattered-light subtraction:
     - The scattered-light subtraction can now be switched on and off using a
       keyword to the call of p3d_cflatf and p3d_cobjex.

  o Regarding the instrument support for VIMOS and FLAMES:
     - Due to an extremely serious bug in the routine that reads the gain and
       the readout noise values from the data header, all errors calculated for
       these two instruments so far have been wrong - they have been too small.

  o Regarding the instrument support for VIMOS:
     - Corrected a bug that would prevent a proper extraction of data that were
       sampled using the medium resolution setup (the DETSEC parameter was
       improperly read from the instrument-parameter file).      

  o Regarding the instrument support for PMAS/4kx4k CCD (both PPAK and Larr):
     - The new PMAS 4kx4k CCD has a region in all four corners of the CCD that
       are vignetted. When creating a dispersion-mask image, any arc line
       inside of these vignetted regions are now automatically excluded from
       the chosen selection of line-list entries before the arc-line positions
       are fitted with a polynomial. This way it is thought that the wavelength
       calibration can be made more accurate in affected spectra. Note that a
       exact definition of the vignetted region is difficult to make. If you
       think that you have a better solution on how to define the extent of
       the vignetted regions, then please, have a look at the two files
       ppak4k_vignet.dat and larr4k_vignet.dat.

  o The spectrum viewer (p3d_rss):
     - The spatial maps are now saved as two- or three-dimensional image arrays
       instead as of an unordered one-dimensional array (which is how has been
       until now). In the new file each pixel corresponds to a spatial element.
       This feature is now only available on instruments with square-shaped
       spatial elements, i.e. PMAS/Larr, SPIRAL, VIMOS, FLAMES, and MPFS.

  o The instrument- and user-parameter file parser (p3d_misc_read_params):
     - The routine did not return the correct flag if a parameter was only
       found in the user-parameter file and not in the instrument-parameter
       file. For example, if crval is only set in the user-parameter file then
       it would always be reported as not found. This has been corrected with
       revision 1414.

  o Added the (automatic) feature to compile the C-language source files in a
    temporary directory on the local computer. Up to now the compilation was
    always done in ${p3d_path}/src/, which would not work on a central
    installation.

  o Various minor bug fixes and adjustments to comments throughout the code.


2.0.3 (2011-10-13; Revision 1181) - The Swashbuckler
  o Corrected a problem that occasionally would prevent the spectra
    from being properly traced. The story is:
      The first part of the tracing procedure locates peaks in the
      data. The routine (p3d_tracing_findspec0) tries to find a
      resonable value on what is a minimum value in non-peak areas.
      It could fail if the bias level varies across the image, as
      it does with the PMAS 4kx4k CCD. Consequently the master-bias
      image is now subtracted from the continuum image, before the
      latter one is used to trace the spectra. This solution seems
      to work.
      This is a problem that is more likely to occur with a
      multi-file instrument such as PMAS using the 4kx4k CCD;
      because, the bias level differs across the files.
    The problem was reported on Oct 13 2011, by Manu Nuñez.

  o The VIMOS extracted-images combination routine; p3d_cvimos_combine:
      Corrected a serious bug that would prevent the correct use of an input
      renormalization correction-array file (the keyword CORRFFILE). Also
      replaced the calculation of a mean telluric-line flux with a median.
      Thereafter the fluxes are normalized again using the maximum
      median-value quadrant.


2.0.2 (2011-09-28; Revision 1150) - The Swashbuckler
  o Regarding the instrument support for VIMOS:
     - Added a new feature to the combination routine (p3d_cvimos_combine).
       Flux-calibrated data are now re-normalized using a telluric line. This
       final normalization corrects for smaller inaccuracies in the data that
       are left after the flux calibration (which is performed using, e.g.,
       IRAF). This new re-normalization can be switched off, and the telluric
       line that is used can be chosen freely (or automatically). The
       re-normalization can be done both per spectrum and per quadrant.
     - The telluric-line fits are now illustrated in a plot that includes
       the raw data and the fit. One plot is created for each spectrum and
       each detector. The file is compressed automatically to save space.

  o The science-object extraction (p3d_cobjex):
     - The telluric-line fits of the sky alignment procedure, which is applied
       with the application of the dispersion solution, are now illustrated in
       a plot that includes the raw data and the respective fit. One plot is
       created for each spectrum and each detector. The file is compressed
       automatically to save space.

  o The spectrum viewer (p3d_rss):
     - Added a colorbar for the spectrum image and the spatial image.
     - Corrected a format mix-up when saving a mean or total spectrum. Also
       corrected a serious bug affecting the error calculations of the
       "sky"-subtracted spectrum.
     - Corrected the annotation of the "viewed" wavelength in the spectrum
       plot.
     - The wavelength-range zoom value and the wavelength-range shift value
       are now reset to the initial values when the 'Reset' button is pressed.

  o Corrected a bug in the object-extraction routine p3d_cobjex, which could
       appear if the GROUP keyword was used together with flat fielding. The
       result could be seen as (kind of) randomly rearranged spatial maps
       (fixed with revision 1054).

  o Corrected the World Coordinate System header entries for the
       cross-dispersion axis. Now the data are properly labeled in ds9. /PW

  o Corrected the e3d output; due to an (old) -1 image-row offset the fiber
       position table inthe e3d file was always wrong (corrected with
       revision 1048).

  o Cleaned up all routines of the trace/disp.mask/object shift reference
       files. These were never used, and are not required anymore
       (fixed with revision 1056).

  o Various minor bug fixes and adjustments to comments throughout the code.


2.0.1 (2011-08-18; Revision 1028) - The Swashbuckler
  o After creating a trace mask, fitting line profiles (also the trace-mask
       creation routine), or extracting spectra (using any of the optimal
       extraction methods), p3d now -always- creates a postscript printout.
       This printout can be used to check if the (respective) fit was
       satisfactory. The printout paper-size (US letter/a4) and the number of
       wavelength bins that are shown can be set in the user parameter file.
       The output file is compressed using bzip2, if this command exists in the
       path; if not then the file is left as it is.

  o Corrected a bug in the C routine p3d_cssl_median.c. The third dimension of
       the input arrays arr and data was improperly accessed. This bug was
       spotted by F. Tabataba-Vakili.

  o Corrected an issue in p3d_flatfield.pro, which could, eventually, result in
       an all-zeros flat-fielded object spectrum image.


2.0 (2011-06-17; Revision 1011) - The Swashbuckler
  o Regarding the instrument support:
     - VLT/UT2/FLAMES/(ARGUS, IFU1, IFU2) (/FLAMES)
       Corrected the tracing procedure for the mini-IFUs. Francesco D'Eugenio
       informed us of this inconsistency. Fibers 192, 229, and 278 (IFU1) and
       192 and 303 (IFU2) are dead, as well as the last (off-chip) fibers. This
       was corrected with revision 877 (tracings using all previous revisions
       are consequently wrong).

  o Recentering the calculated cross-dispersion line profiles on object data:
     - Due to flexure data of most instruments are shifted on the CCD as the
       time progresses (as a function on where on the sky the telescope is
       pointing). Starting with Revision 897 p3d now attempts to correct for
       such offsets in the cross-dispersion direction, whenever optimal
       extraction is used and the parameter recenterprofiles is set to yes.
       These offsets are normally very small, but even an offset of 0.10 pixel
       can have a strong influence on the extracted intensities; the influence
       becomes stronger the closer the spectra are arranged on the CCD. There
       are three methods available to calculate these offsets: either the data
       are smoothed (median-filtered) on the dispersion axis before the line
       profiles are fitted anew (for one or a few pixels on the dispersion
       axis), or the routine first searches for the brightest telluric line in
       the data, before that line is fitted (this approach is only available if
       a dispersion-mask image is provided as input to p3d_cobjex), or an
       offset is provided explicitly. The recentering can be configured either
       through the user parameter file (all settings), or through the RECENTER
       keyword to p3d_cobjex (only the basic setup - which normally is enough).

  o The fiber-flat field normalization (p3d_flatfield).
     - Starting with revision 966 any dead, unused, or low-transmission fibers
       are ignored when calculating a mean spectrum, which is used to
       normalize the flat-field data using /NDISP.

  o The dispersion-mask creation (p3d_cdmask and p3d_wavecal_dispmask_gui):
     - Up to now it was always necessary to create a dispersion-mask image from
       scratch interactively, which could be a quite time-consuming process if
       there are many dispersion masks to create. Starting with revision 892 it
       is now possible to specify a starting dispersion-mask image as an input.
       Using such a starting image, which -must- use the same observing
       conditions as the new dispersion-mask image, the creation process is
       very fast!
     - An arc-line list file can now be specified in the p3d main GUI, before
       it launches p3d_cdmask.
     - Starting with revision 1004 the used arc-line list is stored in the
       header of the dispersion-mask image. Because of this it is not
       necessary, anymore, to (first store and then remember to) provide
       p3d_cdmask with the same arc-line list file that was used to create the
       DISPMASKIN dispersion-mask image - the data are loaded automatically from
       the header.

  o The vimos extracted spectra combination program:
     - The previously very preliminary version of the VIMOS extracted-objects
       image combination program is now debugged, fully documented, it writes
       log messages to both the status line and the log file. The routine,
       p3d_cvimos_combine, can be called from both the IDL command line, the
       shell prompt (using p3d_cvimos_combine_vm.sh), and from the GUI (using
       the lowermost righthand-side tab in the VIMOS configurations).

  o The spectrum viewer:
     - Added error handling to all (mean) spectrum-writing commands. The mean
       spectrum file now also contains the extended header keyword, to make the
       file fully consistent with the FITS format.

  o The log files:
     - Starting with revision 909, added the file revision number to the
       routine-specific identification string "rname". This addition makes it
       possible to see which routine version was used to produced the outcome.

  o The scattered-light subtraction:
     - Starting with revision 963 the calculation of a median-filtered image,
       using all parts of the image where there are no spectra, is now carried
       out by a C routine. The C routine is orders of magnitude faster than the
       IDL routine, and also makes use of multi-processor platforms (through
       OpenMP). The routine is compiled automatically by p3d.

  o Corrected numerous smaller bugs.


2.0b (2011-05-03; Revision 873) - The Swashbuckler
  o Modified the implementation:
     - VLT/UT3/VIMOS (/VIMOS, /NVIMOS, /MVIMOS, /MNVIMOS):
       Data using the high (medium) resolution grism (HR [MR]) are now selected
       using the /VIMOS and /NVIMOS (/MVIMOS and /MNVIMOS) keywords. Data from
       before (after) the instrument reburbish in May-August 2010 must now use
       the /VIMOS and /MVIMOS (/NVIMOS and /MNVIMOS) keywords.

  o The IDL VM scripts
    Made some minor corrections to how the code is executed using the IDL VM.
    The routine scripts (p3d_c*_vm.sh) would have returned an error regarding
    a missing environmental variable "path", which is never set, or used, in
    these routines. Removed the statement "cd $path". The script "p3d_vm.sh"
    has prevented a correct use of the data output directory. The script no
    more changes directory to ${p3d_path} before launching the p3d GUI; this
    allows a correct use of the /CWD keyword.

     - These scripts contain a large number of additional improvements.

  o The spectrum extraction
    Added the option to subtract a scattered light component, which could just
    as well be a dark current component. This mode is activated by setting the
    darkscattsubtract parameter to yes in the user parameter file. The
    subtraction works by fitting a two-dimensional image to the
    bias-subtracted image where the spectra should be extracted from. The fit
    is only made on the unmasked pixels; all pixels nearby to spectra are
    masked. All properties of the fit are controlled with the options in the
    (master) user parameter file.

  o The cross-dispersion profile fitting routine
    Has now been ported to C. Instead of the IDL version of MPFIT the new
    routine uses the C version, which is named cmpfit. The necessary source
    code is retrieved automatically with the script p3d_acquire_xtools.sh.
    The C source code is compiled when it is used, completely transparently
    to the user (using the IDL routine MAKE_DLL). If you see that all your
    cores, on your multi-core computer, are not used, then check if your
    compiler supports OpenMP. The routine has been found to compile
    correctly on linux and macosx, but should also work as it is on solaris-
    based platforms. We still need to set up the proper compiler options for
    windows-based platforms.

    If the compilation fails, for whatever reason, then the original IDL
    routine is used instead.

  o The dispersion-mask creation GUI
     - Dead or unused fibers are no more fitted in the final step, when the
       individual arc-line pixel positions are fitted to the raw data. This way
       the probability that any arc-line in a spectrum after, or before, the
       current spectrum will be incorrectly fitted is minimized.
     - Corrected the behavior when reading a arc-line file using the File menu
       option. Using the same approach as when the routine first starts, the
       read line list is now keeping arc-line entries outside the current
       wavelength range.

  o Various smaller improvements:
     - The default plot colors are now black lines on a white background. It
       used to be the opposite.
     - Also the spectrum-gap files (gapfile) can be put in the directory of the
       user parameter file now.

  o Corrected various bugs:
     - Exporting the extracted science spectra in Euro3D format is now working.

     - Corrected a bug in the spectrum viewer, where the summed spectrum was
       saved instead of the average spectrum, even though an average spectrum
       was selected.


2.0a (2011-01-27; Revision 661) - The Swashbuckler
  o Documentation
    All main data-reduction routines are now documented; this includes the six
    files: p3d.pro, p3d_cmbias.pro, p3d_ctrace.pro, p3d_cdmask.pro,
    p3d_cflatf.pro, and p3d_cobjex.pro. Also the spectrum viewer, p3d_rss.pro,
    has been documented.

    The documentation includes the following information:
     - A short description of what the routine does.
     - The main GUI routine (p3d.pro) and the dispersion-mask routine
       (p3d_cdmask) both contain a complete description of how they are used.
     - A section with information on where additional (detailed) information
       can be found on how the routine works, and where the parameter files can
       be found, which are required to run the routine.
     - A section about the format of the input and the output files.
     - Additional sections with more detailed information on specific tasks.
     - A description of all input and output parameters/keywords.
     - An example section with information on how to use the routine; both by
       itself from the IDL command prompt, or using shell scripts together with
       the IDL Virtual Machine.

  o Added support for six additional instruments:
     - WHT/WYFFOS/INTEGRAL (/INTEGRAL, /OLDINTEGRAL):
       p3d has been configured to work with data of all four IFUs of INTEGRAL,
       i.e.: SB1, SB2, SB3, and the Equalized IFU. In the standard setup the
       data must come from the newer 2-detector configuration. If you have data
       of the older one-detector configuration you must use the old detector
       configuration (/OLDINTEGRAL).

       As is the case with the IFU of MPFS all spectra of INTEGRAL are placed
       on the CCD without any gaps. Consequently the spectrum profile fitting
       becomes very slow, as all spectra are fitted simultaneously.

     - VLT/UT2/FLAMES/(ARGUS, IFU1, IFU2) (/FLAMES):
       p3d has been configured to work with all available configurations of
       FLAMES/ARGUS and the mini IFUs FLAMES/IFU1 and FLAMES/IFU2.

     - VLT/UT3/VIMOS (/VIMOS):
       Specifically, p3d is now capable of working with data using the medium-
       and high-resolution grisms (i.e. HR Blue, HR Orange, HR Red, and MR).
       No support for the low-resolution grisms is planned, since these modes
       produce data that is very difficult to reduce accurately.
       Thanks to an improved tracing procedure it should not be necessary to
       modify any parameters when tracing the spectra. But as always, please
       check the outcome to see if p3d could indeed identify all spectra
       correctly. VIMOS is a complex IFU to trace since there are so many
       unused and dead fibers; actually, several spectra simply fall off the
       CCDs. Creating a dispersion solution p3d starts off with a linear
       dispersion solution, which has been calibrated by hand for the HR Blue
       and HR Orange grisms. The remaining two grisms, i.e. HR Red and MR, have
       not yet been calibrated, with respect to the wavelength ranges. So it
       will be more tricky to create a dispersion solution for these grims
       if you are uncertain on which arc lines you can see.

       VIMOS data are provided for four separate detectors, referred to as
       quadrants. The data must be reduced for each quadrant separately,
       before they are combined into one data set. p3d checks all raw data
       files for the header keyword that indicates which detector was used, it
       is not possible to combine images originating in different detectors.

       Starting October 2010 VIMOS has been upgraded with aligned CCDs. The
       current configuration will unlikely work directly for data of this
       upgraded IFU. However, the required changes should be limited to
       providing new dead fiber files. 
      
     - Gemini/GMOS (GMOS-S and GMOS-N) (/GMOSS,/GMOSN):
       Currently p3d supports the two one-slit modes; i.e. the red and the blue
       slits. The two-slit mode is more complex to reduce, and is not (yet)
       supported. Since we do not have data for GMOS-N the data files are not
       completely configured for this IFU yet (in principle it should only be
       necessary to modify the dead fibers file). Additionally, note that the
       wavelength axis of data of these IFUs cover more than 6000 pixels. The
       initial guess of the linear dispersion solution works poorly across all
       the detectors, which is why it is necessary to make a manual dispersion
       solution, shifting lines at the opposite end by as much as several
       hundred pixels.

     - MPFS (/MPFS3K):
       p3d supports the newer 3kx2k CCD. The spectrum separation is nearly the
       same as the FWHM; hence, the spectrum-to-spectrum cross talk is most
       significant. The strong overlap currently prevents good fits of the
       profiles. Because the spectra are so tightly packed it seems necessary
       to limit the permitted FWHM range during the fitting process. The same
       profile width does not seem to work for both the blue and the red ends.
       A more complete solution will likely have to account for a varying
       FWHM across the dispersion axis. Note that there is no gap between the
       fibers of this IFU (O.K. a gap due to a dead fiber is used as a gap to
       have two spectrum groups). The spectrum profile fitting procedure
       becomes very slow since all spectra are fitted simultaneously.

     - VIRUS-P (/VIRUS):
       Both the setup of fiber bundles 1 and 2 are now available using the
       /VIRUS keyword; the keyword /OLDVIRUS for fiber bundle 1 has been
       removed from the routine p3d.pro.

     - and PMAS:
       Through a minor change in the gratings file the new V500 grating is now
       fully supported (the only modification was to replace U300 with V500).

  o Cross-dispersion line profile fitting procedure:
    Before the signal of different spectra can be deconvolved during the
    spectrum extraction it is necessary to calculate a line profile for each
    spectrum. p3d now allows the background linear function to be controlled:
     - By default the constant value and the slope are fitted together with
       all the other profile parameters of each group of spectra.
     - The slope can now be set to zero explicitly by setting the parameter
       "lprofnobgslope" to "yes".
     - The constant value can be set to any positive value (including 0.0),
       by setting the parameter "lprofbgzlevel" to that value. If the parameter
       is instead set to -1 the default fitting is achieved, while a parameter
       value of -2 results in using the lowest value outside the fiber regions.
       This last option is useful whenever scattered light seems to be present.

  o The tracing procedure:
     - When fitting profiles it is now also possible to fit the width of each
       spectrum individually; by setting the 'lprofwidth' parameter to yes.
       Please note, however, that this procedure currently seems to work well
       only with Gaussian profiles. The other profile functions seem to need to
       be more constrained when also the spectrum width is fitted. Since this
       mode makes the profile fitting even slower the default is lprofwidth=no.
     - It is now possible to use a list of spectrum separations for the second
       tracing step. Such a list must have SPNUM-1 entries, where SPNUM is the
       number of spectra. It is important for this tracing mode that the first
       spectrum is actually found in the data. If it is not then it is
       absolutely compulsory that the first spectrum/spectra are indicated in
       the dead fibers file as being dead, unused, or possibly unused.
       Currently this mode is used with the FLAMES/ARGUS IFU, where the
       calibration fiber positions are difficult to fit with a constant
       separation. 
     - Dead, unused, and possibly unused fibers are not used anymore in the
       third tracing step; this is where the spectrum pattern is matched with
       the spectra found in the second tracing step. This improvement was
       necessary to trace spectra of IFUs with many unused or dead fibers,
       such as VIMOS.
     - Dead, unused, and possibly unused fibers are now indicated in the trace
       inspector GUI with dark green symbols and lines.

  o The flat fielding procedure:
    Has been modified to include a better fiber-to-fiber transmission
    normalization, as well as a division by the average spectrum. The new
    modes are available through options in the user parameter file, as is the
    old approach (where all spectra where divided with the average spectrum).

    The fiber-to-fiber transmission function can now either be taken from the
    current or a separate dataset. This approach is useful if you want to use
    twilight flats to perform the fiber-to-fiber transmission correction, while
    you at the same want to use a continuum flat to first smooth and replace
    the dataset with a polynomial fit, before the full spectra are normalized.

  o Using p3d with the IDL VM - i.e., without an IDL license:
    This was previously a bit tricky as all configuration had to be done using
    the GUI. This has now all become much easier.

     - All commands that are required to start p3d (i.e. those of p3d.pro
       and p3d_gui.pro - actually, nearly all commands) can now be entered at
       the shell prompt when starting p3d using the VM script p3d_vm.sh.
       For example, to start p3d for the VIMOS IFS instrument, with a log file
       dred.log, and writing all output data to the current directory, you
       would give the following command (this, currently, works on all the
       UN*X platforms):
         ${p3d_path}/vm/p3d_vm.sh /vimos logfile=dred.log /cwd

     - It is now also possible to call the individual routines using the IDL
       VM. Five new shell scripts are provided in the vm/ directory, one for
       each data-reduction task: p3d_cmbias_vm.sh, p3d_ctrace_vm.sh,
       p3d_cdmask_vm.sh, p3d_cflatf_vm.sh, and p3d_cobjex_vm.sh. These scripts
       are most easily called by writing shell scripts that define all the
       required input parameters of the respective task. Each IDL routine
       (i.e., p3d_cmbias.pro, p3d_ctrace.pro, p3d_cdmask.pro, p3d_cflatf.pro,
       and p3d_cobjex.pro) has been modified to read command line parameters.
       How the parameters are passed to the shell script is described in the
       respective IDL routine. Here is an example on how to call p3d_ctrace.pro
       from the terminal (outside IDL):

          parfile=${p3d_path}/data/instruments/pmas/larr2k.prm
          opath=Output
          masterbias=${opath}/masterbias.fits.gz
          userparfile=${opath}/user_p3d.prm
          p3d_ctrace_vm.sh tracefile_1.fits.gz,tracefilefile_2.fits.gz \
              $parfile masterbias=$masterbias userparfile=$userparfile \
              opath=$opath logfile=$opath/dred.log /verbose

       Note that it is necessary to click on the splash screen that pops up
       each time the IDL VM is started. A trick on how to automatically click
       on this splash screen (to actually start IDL) is given in README.

     - The spectrum viewer can also be called using the IDL VM. A new shell
       script is provided in the vm/ directory "p3d_rss_vm.sh". In comparison
       to when this routine is called from inside IDL the first argument is
       the filename of the spectrum fits-file. Inside IDL the first argument
       would be the already loaded image variable.


  o The fiber position tables for PMAS/PPAK/4kx4kCCD and PMAS/PPAK/2kx4k CCD
    now also contain the proper positions of the sky fibers. These sky fibers
    are consequently shown properly when viewing them in the spatial map of the
    spectrum viewer.

  o Corrected numerous bugs related to configurations where the dispersion axis
    is in the second dimension (i.e. on the Y axis).


1.1.1 (2010-04-21; Revision 182)
  o Corrected a problem that has affected all optimally extracted spectra of
    all revisions and releases so far. The problem has been that it has been
    necessary to apply a 0.5pixel offset to the profile spectrum positions
    before the spectrum extraction. Previously this offset was applied in an
    improper way which has not solved the problem. From now on all profile
    positions are offset by 0.5 pixel before the data are saved to the *_cdlp*
    file. In order to achieve a better accuracy in you extracted spectra it is
    necessary to either recalculate the profiles or apply the 0.5 pixel offset
    by hand, before extracting the spectra anew. If you want to know more about
    how important it is with accurate profile center positions for the accuracy
    of your extracted spectra please have a look in Sections 4.1 and 4.4 in
    the p3d paper.
    Note! Most instruments are affected by flexure, which has the potential to
    cause an additional offset between the profiles calculated using a
    continuum or sky flat exposure and the object exposure. p3d does not -yet-
    correct for such offsets (although support might be added soon).
  o The image viewer p3d_imv now also looks for raw data in the directory of
    the main input file (FILENAME) and in the parent directory of FILENAME.
    This makes it easier to inspect the data if the reductions are carried out
    on one machine, and are thereafter transferred to another computer (where
    the path is different).


1.1 (2010-04-16; Revision 162) - Upperkuchen
  o Much improved support for use with the PMAS 4kx4k CCD.
  o Implemented a much more strict checking of the available parameters in the
    instrument keywords file(s).
  o Included support for flipping the raw data on the dispersion axis. The
    flipping is performed when the DFLIP parameter is set (either in the
    instrument parameter file or in the user parameter ditto).
  o File suffixes, and the string that is used with combined images, can now be
    set in the user parameter file.
  o All parameters in the master user parameter file
    (data/master_userparfile.dat) are now fully described.
  o Added transparent support for gzip-compressed input data files.
    Z-compressed files (which were compressed using the UN*X-command compress)
    and bzip2-compressed files are also supported on UN*X platforms - see the
    READFITS routine of astro-lib for more information. Output data files are
    compressed using gzip (all platforms!) if the user parameter compress is
    set to yes (default==no).
  o All references to PASP have been changed to A&A, which is where the paper
    on p3d is published (yes, we changed our mind).
  o Updated PPAK tracing parameters to work more generally.
  o Document headers have been adjusted to work better with the IDL->html
    translation tools of O. Streicher.
  o Fixed numerous smaller bugs.

  o GUI
    - Added several different filters in the file dialogs, supporting
      compressed files as well as non-compressed ones.
    - Only the first-block files of multi-block instruments are now shown by
      default in the file dialogs.
    - The default width of file dialogs is now set to 500px when using the VM
      (see the Xdefaults file in vm/).

  o Image combination
    - All image-combination-related operations have been moved to a separate
      routine (routines/p3d_misc_imcombine_wrapper.pro) to comply with the
      "Don't Repeat Yourself" coding principle.
    - Added a slow combination method since the fast MIN() function of IDL
      gives strange results (with PMAS at least). This slow method is now also
      the default.

  o Spectrum extraction
    - The optimal extraction routines MOX and MPD have been moved to their own
      routines.
    - The default extraction method for MPD is now 'banddiagonal' and not 'svd'
      as previously ('svd' is painfully slow).
    - Information about what is going on is now also printed on the console
      when verbose==1.

  o Master Bias
    - It is now possible to pick only one file and then let p3d smooth it
      before it is used as a master bias. This now also works with the
      PMAS 4kx4k CCD.

  o Wavelength calibration / Dispersion Mask creation
    - Now works properly with two input files for all supported instruments.
      Two files (ideally of different exposure time) can be used if arc lines
      on one side of the detector are much fainter/brighter than on the other
      side.
    - After entries in the line list were matched with the data a more precise
      Gaussian fitting (or weighting) was previously performed in the
      "Create dispersion mask" step. In order to allow a checking of the more
      precise fitting this fitting has now been given its own function in the
      GUI ("Fit centroids"). This function (button) must now be used after the
      "Match centroids" step, and before the "Create dispersion mask" step.
    - The default behavior for p3d is now to not rebin the data on the
      dispersion axis before starting the GUI. This allows big data sets to be
      used on very small screens (DBIN=1). If the user still wants to have the
      data rebinned then she/he can select another mode in the Options menu,
      or simply set the DBIN parameter in the user parameter file.

  o Object extraction
    - Now accepts a cosmic ray mask (although this method does not work well at
      all).
    - p3d can now also save output spectra in the E3D-format (finally; as we
      have promised in the paper on p3d).


1.0 (2010-02-02; Revision 30) - Destiny
  o Initial version.

page last updated on: Sunday January 1, 2023 16:54:33; retrieved on: Saturday April 27, 2024 03:21:25