********************************************************************************
                         RELEASE NOTES FOR HEASOFT 6.16
                                   July 2, 2014
********************************************************************************

The HEASoft 6.16 release is primarily driven by updates to the NuSTAR
and Swift/XRT software, but also includes updates to other packages which
have been revised to mirror the current development versions in use at
the HEASARC.

As before, configuration-related changes thoughout the package means that
users who already have HEASoft v6.x.x installed will need to completely
replace their software installation; there is no clean way to simply
overlay this new release or to update an existing installation.

********************************************************************************
                                   CFITSIO
********************************************************************************

- Version 3.37:

  - Added configure options to support reading bzip2 compressed
    FITS files.  This depends on having the bzlib library installed
    on the local machine.  Patch submitted by Dustin Lang.

  - Replaced the random Gaussian and Poissonian distribution
    functions with new code written by Craig Markwardt derived
    from public domain C++ functions written by John D Cook.

  - Patched fitsio2.h to support CFITSIO on AArch64 (64-bit ARM)
    architecture (both big and little endian).  Supplied by Marcin
    Juszkiewicz and Sergio Pascual Ramirez, with further update by
    Michel Normand.

  - Fixed bug in fpackutil.c that caused fpack to exit prematurely
    if the FZALGOR directive keyword was present in the HDU header.

- Version 3.36:

   - Small change to the fileseek function in drvrfile.c to support
     large files > 2 GB when building CFITSIO with MinGW on Windows.

   - reorganized the CFITSIO code directory structure; added a 'docs'
     subdirectory for all the documentation, and a 'zlib' directory
     for the zlib/gzip file compression code.

   - made major changes to the compression code for FITS binary table
     to support all types of columns, including variable-length arrays.
     This code is mainly used via the fpack and funpack programs.

   - increased the number of FITS files that can be opened as one
     time to 1000, as defined by NMAXFILES in fitsio2.h.

   - made small configuration changes to configure.in, configure,
     fitsio.h, and drvrfile.c to support large files (64-bit file
     offsets} when using the mingw-w64 compiler (provided by
     Benjamin Gilbert).

   - made small change to fits_delete_file to more completely ignore
     any non-zero input status value.

   - fixed a logic error in a 'if' test when parsing a keyword name
     in the ngp_keyword_is_write function in grparser.c

   - when specifying the image compression parameters as part of the
     compressed image file name (using the "[compress]" qualifier
     after the name of the file), the quantization level value, if
     specified, was not being recognized by the CFITSIO compression
     routines. The image would always be compressed with the default
     quantization level of 4.0, regardless of what was specified.  This
     affected the imcopy program, and potentially other user-generated
     application programs that used this method to specify the
     compression parameters.  This bug did not affect fpack or
     funpack.   This was fixed in the imcomp_get_compressed_image_par
     routine in the imcompress.c file.

   - defined a new CFITS_API macro in fitsio.h which is used to export the
     public symbols when building CFITSIO on Windows systems with CMake. This
     works in conjunction with the new Windows CMake build procedure that
     is described in the README.win32 file. This complete revamping of the
     way CFITSIO is built under Windows now supports building 64-bit
     versions of the library.  Thanks to Daniel Kaneider (Luminance HDR
     Team) for providing these new  CMake build procedures.

   - modified the way that the low-level file_create routine works when
     running in the Hera environment to ensure that the FITS file that is
     created is within the allow user data disk area.

   - modified fits_get_compression_type so that it does not return an error
     if the HDU is a normal FITS IMAGE extension, and is not a tile-compressed
     image.

   - modified the low-level ffgcl* and ffpcl* routines to ensure that they
     never try ro read or write more than 2**31 bytes from disk at one time,
     as might happen with very large images, to avoid integer overflow errors.

   - modified Makefile.in so that doing 'make distclean' does not delete
     new config.sub and config.guess files that were recently added.

   - adopted a patch from Debian in zcompress.c to "define" the values of
     GZBUFSIZE and BUFFINCR, instead of exporting the symbols as 'int's.

********************************************************************************
                                    CCFITS
********************************************************************************

- Added proper handling of 'D' exponent notation when reading in
  keyword values of type float or complex.  This is allowed by
  the FITS standard, but the C++ stringstream conversion operator
  was not recognizing it.  This caused value to be truncated at
  the 'D' for floats, and to be ignored altogether for complex.
  The change was made entirely in the parseRecord() function.

- CCFITS: In Column::setLimits, removed the dynamic allocation of
  the static variable arrays.  These led to small memory leaks as
  they are never freed.

- Removed vestigal code file NewColumn.h.

********************************************************************************
                                     HEASP
********************************************************************************

- Fixed error when converting flux units.

- Fixed problems when creating an RMF with zero channel groups
  for at least one energy and one channel group for all the rest.

- Added an overloaded version of rmf::RandomChannel which takes
  arrays of energies and number of photons (for each energy).
  Added a C wrapper called RandomChannelMultiEnergies to Cheasp.h
  and Cwrappers.cxx. Fixed missing random number initialization in
  RandomChannels.

- Added code to all heasp destructors to clear vectors to avoid
  memory leaks.

- Added a routine, SPmatchString, to SPutils.cxx to do partial
  string matches to a vector of strings.

- Just for completeness added an rmf::uncompress method.

- Python module: New source code generated using swig 3.0.0 which
  gets past compile errors on Mac OS X 10.9 (Mavericks).

- Fixed an error in ARFobjectToStruct which wrote the high energies
  into the effective area array.

- Added ReadRMF and WriteRMF wrappers to grab or write the matrix
  and ebounds data at the same time.

- Fixed bug which causes a seg fault when reading a pha file with no
  statistical errors.

********************************************************************************
                                   CALTOOLS
********************************************************************************

- genrsp: Ensured that E_MIN is always <= E_MAX in the
  EBOUNDS extension. This was not the case when creating
  grating spectra and could be interpreted as violating the
  response matrix standard.

********************************************************************************
                                    FIMAGE
********************************************************************************

- fimgmerge: Fixed strcpy of overlapping strings which aborts on
  Macs.  Raised arbitrary maximum number of input files to 999.

********************************************************************************
                                    FUTILS
********************************************************************************

- ftverify: Squashed erroneous warning messages similar to
  "CRPIX3A: index 3 is not in range 1-2 (NAXIS)".

********************************************************************************
                                    HEAGEN
********************************************************************************

- flx2tab: The redshift parameter was being ignored. Fixed bug
  when reading parameter info file.

********************************************************************************
                                    HEASARC
********************************************************************************

- addspec: Improved diagnostic messages.

********************************************************************************
                                    HEATOOLS
********************************************************************************

- ftdiff: Do not perform numerical comparisons of TFORM or
  TDISP keyword values.  Allow for longer file paths/names.

- ftverify: Squashed erroneous warning messages similar to
  "CRPIX3A: index 3 is not in range 1-2 (NAXIS)".

********************************************************************************
                                    XIMAGE
********************************************************************************

- Fixed bug in the AST library which caused a crash when loading
  an image file without world coordinates.

********************************************************************************
                                     XSPEC
********************************************************************************

HEASoft 6.16 includes Xspec v12.8.2:

 http://heasarc.gsfc.nasa.gov/xanadu/xspec/issues/issues.html

New features:

- The code underlying the NEI models has been rewritten to accommodate
  the new AtomDB 3.0 files, the beta version of which are included as
  the default when using any of the NEI models. Older versions can be
  recovered using xset NEIVERS. The CEI models (apec etc) use some of
  the same code but there should be no change in their behaviour
  except for a slight speed-up.

- New models:
     agauss  - Gaussian model with units in Angstrom and a gaussian
                 shape in wavelength space.
     nsx     - Neutron star non-magnetic atmosphere model from Wynn Ho
                 and collaborators.
     nsmaxg  - Neutron star magnetic atmosphere model.
     rnei    - NEI recombination model assuming an initial temperature
     vrnei   - rnei with variable abundances for the common elements
     vvrnei  - rnei with variable abundances for all elements (Z<=30).
     zagauss - The agauss model with a redshift parameter.
                                  
- The goodness command has added options fit|nofit. The fit option
  runs a fit on each simulation before calculating the test statistic.

- The cstat fit statistic can be modified by appending an integer eg
  statistic cstat5. In this case the statistic will be evaluated as if
  the group min N had been used in grppha. This is not as efficient
  because the rebinning has to be done every statistic evaluation
  however it is usual for testing using simulations.

- The 'model' command now checks that parameters are all within a
  reasonable order of magnitude (~1e10) of each other, and issues a
  warning if they are not.

- Improved the handling of new-best-fit cases when running the 'error'
  command on parallel processes.  The global new-best-fit is now
  automatically retained.  Previously the user was prompted to re-run
  'error' in a single process.

- Models can now store (keyword,value) pairs using loadDbValue (C++)
  or PDBVAL (Fortran). These values can be recovered using the
  tclout(r) modkeyval option. This provides a way to get internal 
  information from the last invocation of a model.

- There is a manual XSFunctions_guide.pdf in Xspec/src/help describing
  some of the C++ classes used in the XSFunctions library. This is
  intended to make it easier to use these classes in other models.

Enhancements previously released as patches to 12.8.1:

- PyXspec: added Fit.testStatistic attribute for retrieving the test 
    statistic value from the most recent fit.
    
- PyXspec: added compiler macros for switching to <Python/Python.h>
     include paths when building on Mac platforms.
   
All bug fixes to v12.8.1 released as patches are included in v12.8.2.
In addition the following problems have been corrected:

- Fix for a particular case of non-associative expression evaluation.
  Models of the form C((M1*A)M2) or C(M1*A)M2, where C is a convolution 
  component, were being wrongly evaluated as (C(M1*A))*M2.
  
- For users with external programs linking to the XSPEC model library,
  the FNINIT function now properly initializes the AtomDB version to
  v2.0.2.
  
- Fix for an 'ignore' command syntax evaluation that was causing a crash
  on OS X Mavericks.

********************************************************************************
                                     XSTAR
********************************************************************************

Version 2.2.1bn21 - updates since v221bn16 (HEASOFT 6.15) include:

- v2.2.1bn21 (May 2014):

  Fix to an error in implementation of Bryans collisional ionization
  rates.  Fix to an error in inclusion of turbulence in implementation
  of iron M-shell UTA line absorption.

- v2.2.1bn20 (Mar. 2014):

  Fix to a bug which caused the wrong damping value to be used in some
  cases.  This occured for valence shell lines, for which the damping
  should be just due to the natural radiative lifetime, but for which
  inner shell Auger damped lines also exist for the same ions.  In this
  case, the widths for the latter lines were incorrectly used instead
  of the former.

- v2.2.1bn19 (Mar. 2014):

  Fix to bug which led to incorrect f value use for iron UTA lines.
  Fix errors to routine binemis and linopac associated with
  attempt to make routines faster:  now, always use constant
  stepsize for internal calculation of line profile.
  Change to true anders and grevesse abundances

- v2.2.1bn18 (Jan. 2014):

  New atomic data for K shell absorption by neutral and once-
  and twice-ionized stages of Ne and Mg from Gorczyca.

  Fix errors in the routine binemis which puts out binned
  emission lines.  These errors led to spurious features in
  models with very high spectral resolution.

  Change to the value of the constant hc used in conversion
  from ev to A and back, to reflect more accurate values for
  constants.  Old value was 12398.54, new value is 12398.41.
  Also change to Rydberg constant; old value was 13.598,
  new value is 13.605.  Adoption of consistent value of
  proton thermal speed as 1.29e+6 cm/s at 10^4K.

  Adoption of routine which calculates photoionization
  integrals (phint53) which uses interpolation and smoothing.

  Inclusion of code for calculating aped rates for
  collisional excitation (not yet fully implemented).

  Inclusion of Bryans rates for collisional ionization.

  Added feature which allows an array of densities to be read in.
  This is described in the chapter on inputs.  It requires that
  the 'radexp' input variable be set to a number more negative
  than -100.  Then ordered pairs of (radius, density) are read
  in from a file called 'density.dat'.  Reading continues until
  the end of the file is reached.   The density and radius values
  override the values derived from the ordinary input parameters.
  But execution will stop if other ending criteria are satisfied,
  i.e. if the model column density exceeds the input value, or
  the electron fraction falls below the specified minimum.  The
  code will stop with an error if the density.dat file does not
  exist, or if the radius values are not monotonically increasing.

  Another new feature allows reading in of table spectra in units
  of log10(F_e).  This requires that the spectrum_units input
  parameter be set to 2.

- v2.2.1bn17 (Dec. 2013):

  Make calculation of photoionization related quantities modal,
  using lfpi:

   1: total pi only;
   2: pi + rec rates only;
   3: opacities and emissivities

  Also make h-c calculation use total rates add special funcsyn,
  func3p and heatf for calculations of spectral quantities.

  Add profile calculation (linopac) inside of ucalc when lfpi=3;
  take out profile calculation from stpcut.  This facilitates
  calculation of continuum photoexcitation (which is not yet
  included).

  Change i/o of step quantities; now includes populations,
  total emissivities and opacities, line emissivities,... Also
  change savd, unsavd.  Also change name of step quantities:
  xoN...M.fits where N=1,2,3,4 for various quantities and M=pass
  number.

  Add column, electron fraction, density as keywords in step files.

  Add comments in pprint, unify code to use the same statements when
  stepping thru each physical quantity:  levels, lines, all data, etc.

  Move search for auger width to new rotuine deleafnd

********************************************************************************
                                    NUSTAR
********************************************************************************

- NuSTARDAS v1.4.1:

  Major changes introduced in this version:

  * nuproducts:

    1) Modification of the internal run of the FTOOL 'grppha' to
       define a PI energy range by using two new input parameters
       'grppibadlow' (replacing 'grppibad') and 'grppibadhigh';
    2) Addition of the new input parameter 'usrgtibarycorr' to
       regulate the barycenter correction of the optional input
       user GTI file ('usrgtifile').

  * nupipeline:

    1) Modification of the call to the 'nuproducts' module;
    2) Addition of the new input parameter 'productsgtibarycorr'
       to regulate the barycenter correction of the optional input
       user GTI file ('productsgtifile') for spectrum and light
       curve extraction.

  Summary of changes:

  - nuproducts (grppha):

    Improvements to the user interface for nuproducts allowing the
    user to automatically apply grppha corrections to the output
    spectrum. Default values for the low/high bounds of "bad"
    channels in the grppha call are at 3 and 79 keV, which allows
    users to "ignore bad" in XSPEC to ignore data outside of the
    usable science range for NuSTAR. The user accepts responsibility
    for the effect of binning the data; we encourage the users to
    explore the literature on binning and the impacts of various
    fit parameters before using grppha.

  - nuproducts (barycorr):

    Improvement to the user interface for nuproducts allowing the
    user to specific a usrgti file in barycentric time (e.g. for
    individual pulses or bursts in a pulsar). By default, the
    pipeline assumes that usrgtis are given in NuSTAR-epoch time
    and are barycenter corrected.

NuSTARDAS v1.4.0:

- Major changes introduced in this version:

  * nuexpomap: 1) addition of a new parameter named 'indet2instrfile'
    to allow the generation of sky exposure map starting from a DET2
    instrument map; 2) algorithm optimization for execution time
    reduction;

  * nubackscale: addition of a new parameter named 'inexpomapfile' to
    provide in input a sky exposure map. This change allows to skip the
    internal generation of exposure maps and reduces the task execution
    time;

  * nulccorr: addition of two new parameters named 'inskyinstrfile' and
    'inaspecthistofile' to provide in input a sky instrument map and the
    associated aspect histogram file. This change allows to skip the
    internal generation of sky instrument maps and reduces the task
    execution time;

  * numkarf: addition of a new parameter named 'inexpomapfile' to provide
    in input a sky exposure map in the case of extended sources (parameter
    'extended=yes'). This change allows to skip the internal generation
    of exposure maps and reduces the task execution time;

  * nuproducts: 1) addition of the new input parameter 'rungrppha' to
    group the source energy spectrum through an internal run of the FTOOL
    'grppha'; 2) addition of an internal run of the 'nuexpomap' module
    and modification of the calls to the 'nubackscale', 'nulccorr' and
    'numkarf' modules;

  * nucalcpi: modification of the algorithm for GRADE 0 and GRADE 9-20
    events;

  * nupipeline: 1) handling of compressed TLE files in input; 2) syntax
    modification to support latest Perl versions.

Summary of changes:

- nuexpomap/nubackscale/nulccorr/numkarf/nuproducts:

  Performance improvement to avoid multiple runs of nuexpomap. The
  software now allows the user to store a single DET2 instrument map
  file (through the det2instrfile output keyword call to nuexpomap)
  and reuse this file for future runs, including changes to the
  vignetting energy, etc.  See section 4.9 of the NuSTARDAS User's
  Guide for more details and syntax.

  This has resulted in a dramatic speed increase for nuproducts runs,
  with decreases in run times of 20 to 80%, depending on the exact
  parameters.

- nucalcpi:

  Slight change in the reconstruction algorithm for how events with
  Grade 0 and Grades 9 through 20 are handled in the software. This
  change allows for fine tuning of the GRADE_GAIN and GRADE_OFFSET
  columns in the CLC CALDB file. There are associated updates to
  the CLC CALDB files (see CALDB release notes) which marginally
  improve the gain correction for all events.

********************************************************************************
                                     SWIFT
********************************************************************************

BAT:

- bateconvert, batmasktaglc: Bug fix for closing file more
  than once (e.g. under OS X 10.9 x86_64).

UVOT:

- uvotattcorr: Apply delta quaternions for entire duration of
  exposure instead of at a single epoch.

- uvotimage: Work-around rare invalid values in UVOT event file
  WINDOW extension.

- uvotproduct: Since there are rare but intermittent issues using ds9
  to retrieve DSS images, try the SAO server if the STSci server fails
  to provide an image.

XRT:

- ISAC Build 30 Software Release - XRTDAS_v300:

  * xrtexpomap - Replaced 'nframe' input parameter with 'pcnframe'
                 and 'wtnframe'
               - Update 'DATE-OBS' keyword of the output exposure
                 map file

  * xrtlccorr - Modified default naming convention of output
                instrument map file

  * xrtmkarf - Fixed memory bug for the 64-bit architecture on
               Mac OS X 10.9.x.

  * xrtproducts - Added optional extraction of background products
                  for PC and WT mode
                - Added optional correction of the source light curve
                - Modified default naming convention of some output files

  * xrtpipeline - Added 'extractproducts' input parameter
                - Replaced 'exponframe' input parameter with
                  'expopcnframe' and 'expowtnframe'
                - Updated xrtproducts task call
                - Removed use of deprecated 'define' PERL function

********************************************************************************
                                     XTE
********************************************************************************

- fcollect: Fixed strcpy bug with overlapping memory.

- seextrct: Update to 4.3a; Increased maximum number of input files
  in SEEXTRCT from 100 to 999.  This is to match a similar change in
  SAEXTRCT v4.3a made previously.

********************************************************************************
                     Configuration / Third-party Packages
********************************************************************************

- Macs: Lift restriction on 64-bit builds on Mac OS X when heacore Perl
  modules are needed in the build.  Default Mac build architecture is
  now 64-bit; 32-bit builds are still available by configuring with
  --enable-mac_32bit_build(=yes).

- readline: Update to v6.3 and patches readline63-001 to 005.

- Tcl/Tk: Update to v8.5.15.

  Tk configuration: Disable use of freetype/fontconfig/xft in Tk.
  In some Mac X11 installations, Tk's configure successfully finds
  the routine 'XftFontOpen' linking with -lXft and proceeds to
  compile an alternate source code file (tkUnixRFont.c instead of
  tkUnixFont.c) that leads to build errors.

- wcslib: Update to WCSLIB version 4.20.
  http://www.atnf.csiro.au/people/mcalabre/WCS/

- XPA (FV/Hera): Update to XPA v2.1.15.
  http://hea-www.harvard.edu/saord/xpa/

- Fix deprecated use of 'defined' in Perl arrays (various tasks).