/** @mainpage psModule Image Processing Library


@section intro Introduction
This library contains the Pan-STARRS Image Processing Pipeline (IPP) modules (psModule). These modules
use the functionality of the Pan-STARRS Library (psLib) to perform more complex tasks associated with image
processing. Modules were constructed to support each of the required processing stages and are listed according
to the particular processing stage for which they will primarily be used. To preserve namespace, globally-visible
structures and functions are prefixed with pm, an abbreviation for Pan-STARRS Modules.

Modules in this release include:

 - Astrometry (pmAstrometry)
 - Subtract bias (pmSubtractBias)
 - Correct for non-linearity (pmNonLinear)
 - Flat-field (pmFlatField)
 - Mask bad pixels (pmMaskBadPixels and pmMaskBadPixelsErrors)
 - Image Combine (pmImageCombine)
 - Image Subtract (pmImageSubtract)
 - Combine readouts (pmReadoutCombine)
 - Subtract sky (pmSubtractSky)
 - Object detection (pmObjects)

The installed code for psModule consists of header files and a binary library.

@section extinstall Required external Libraries

Before building psLib from source, several external software libraries must
be installed. These include:
 - Pan-STARRS Library (psLib)
     - Available from the Maui High Performance Computiong Center (MHPCC) at https://mhpcc.pan-starrs.org/code/releases
     - Compatibility tested with rel5
     - Note, psLib itself has many external library dependencies.
 - Doxygen Documentation System
     - Only needed if code documentation is to be made
     - Available at http://www.doxygen.org
     - Compatibility tested with version 1.3.6
     - The optional companion package, GraphViz (a.k.a., the 'dot' command), is recommended to enable header-file dependency diagrams

We recommend using the particular versions listed as compatibility tested, as
that is the only versions of the external libraries tested to work well with psLib
and psModule.  Though it is quite possible that later versions of the libraries
listed will also work, care must be taken when upgrading these libraries to verify
that its functionality is compatible with the tested version.

@section install How to Build from Source

Tested versions of psModule are put into a tar file and can be downloaded from:

https://mhpcc.pan-starrs.org/code/releases

If one has a login account on mhpcc.pan-starrs.org, direct CVS access is
possible.  Example of the commands required for direct CVS retrieval are
as follows:
<pre>
$ cvs -d:ext:USERNAME@mhpcc.pan-starrs.org:/data/panstarrs/cvsroot co -r RELEASEBRANCH psModule
</pre>
where:
  - USERNAME is your login name on the server
  - RELEASEBRANCH is the desired release branch, e.g. rel7.


@section build How to Build and Test the psModule Library.

The psModule library and associated tests are made via the GNU autoconf/automake system.

The source should build using the configure script in the psModule directory.  The
recommended steps are:
<pre>
$ cd psModule
$ ./configure
$ make
$ make check
$ make install
</pre>
<i>Unless otherwise specified, the library is installed with PREFIX of the current directory.</i>

If the code was retrieved from CVS, you will need to substitute 'autogen.sh' for 'configure' in
above example.

Other configuration options, such as location of external libraries, are also available.
To get a list of options, type the following in the top psModule directory.
<pre>
$ configure --help
</pre>
A likely option needed is '--with-pslib-config', which specifies the location of
the configuration script for psLib.  By default, configure searches for it using PATH, but that
is not always sufficient.

@section install How to Install

To install the library using the prefix given in the configure step, execute in
the top build directory:
<pre>
$ make install
</pre>


@section usage Building and Linking your code to the psModule library

To assist the use of the library with your own code, a configuration tool is part
of the psModule library package.  This tool, psmodule-config, is installed in the BIN
directory, according to the options given to the configure script.

The required CFLAG options for the compiler stage of code that uses psModule can be
obtained via 'psmodule-config --cflags'.  This outputs the cc options that supplies
include path(s) required to find the psModule headers.

The required linking options, can be obtained via 'psmodule-config --libs'.  This
outputs the ld options that supplies the library paths and files required to
link to the psModule library.

Note: psmodule-config usage above refers to the install locations of the library.  

@section doc How to Create Code Documentation

Both HTML and man page documentation may be generated from the inline
documentation embedded in the code using the following commands:
<pre>
$ cd psModule
$ make docs
</pre>
<i>This places documentation in PREFIX/docs.</i>

Also, a prebuilt set of code documentation for both the releases and last
CVS snapshot can be found at:

https://mhpcc.pan-starrs.org/docs/

*/
