********************************************************************************
                         RELEASE NOTES FOR HEASOFT 6.17
                                   July 29, 2015
********************************************************************************

The HEASoft 6.17 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
********************************************************************************

- Updates beyond version 3.37:

  - Added test to see if HAVE_UNISTD_H is defined, as a condition for 
    including unistd.h in drvrfile.c drvrnet.c, drvrsmem.c, and group.c.

  - Fixed bug when reading tile-compressed images that were compressed with
    the IRAF PLIO algorithm.  This bug did not affect fpack or funpack, but
    other software that reads the compressed image could be affected.  The 
    bug would cause the data values to be offset by 32768 from the actual 
    pixel values.

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

- Bug fix to ImageExt::put (accessed through HDU's "operator<<").
  It was not showing output for the highest numbered axis.

- Converted 'delete' calls to 'free()' in KeywordCreator's
  getLongValueString function.  This removes memory mismatch errors
  in valgrind output.

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

- Fixed bug in arf::write which incorrectly gave the SPECRESP column
  the name EFFAREA.

- Check for multiple SPECTRUM extensions when reading a pha file.

- Added a routine to return the extensions with type SPECTRUM in a file.
  Also fixed a bug that PHAnumber was not being used in all relevant cases.

********************************************************************************
                                     FHELP
********************************************************************************

- fhelp now utilizes a parameter file to allow the setting of display
  preferences.  For example, setting text=yes (the default) will force
  all help files (.txt or .html) to be displayed in the current terminal
  in ASCII text format.  Setting text=no will allow html files to be
  displayed in your current browser (if the 'online' or 'local' parameter
  is set to 'yes').  The lynx linemode browser is now distributed and
  built as part of HEASoft to ensure that .html files can be parsed as
  text.  Run "fhelp -h" for more information. 

********************************************************************************
                                   ATTITUDE
********************************************************************************

- prefilter (geocal library): Update IGRF model to 2015 (version 12). The
  years touched are 2005-2010 (via derivative term); 2010 (changed from
  provisional to definitive); 2015 (provisional); 2015-2020 (provisional
  derivative extrapolation); overall changes are small.

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

- addarf: Increased length of string for input ARFs to 5,000 characters
  and fixed compiler warnings.

- cmprmf: Fixed so that the NUMELT and NUMGRP keywords are updated.
  This bug was generating errors (e.g. "Group Array dimension is too
  small") in downstream tools (i.e. marfrmf).

- genrsp: Fixed bug in the case that the response energies extend beyond
  the channel energies. Any response from the energies outside the channel
  energy range was not being calculated.

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

- flist: Fixed output format (to integer instead of float) for unsigned
  integer columns with scaling keywords set.

- fverify: When checking TDISPn keywords, allow TFORMn='K' when TDISPn
  has format F, E, or D.

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

- swco.dat: Valid through: 2015Jul06 at 08:24:05.921UTC.

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

- addspec: Added single quotes around filenames in the expression passed
  to mathpha. This allows the filename to include a "/" without mathpha
  interpreting it as a division.

- extractor: Fixed a misleading error message when reading ROSAT data
  which has a non-standard name for the extension containing the events.

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

- ftcreate: For on/off bits datatype, use strtoul to read the input data.
  Using the previous hex format specifier ('%lx') to sscanf the data string
  wasn't suitable, since it can misinterpret non-hex formats.

- ftdiff: If hdumaxdiff <=0, ignore hdumaxdiff and report all differences.

- fthedit: For "single keyword" mode, parse the input 'keyword=value'
  card string to return a properly formatted 80-char string for inserting
  the new record.

- ftverify: When checking TDISPn keywords, allow TFORMn='K' when TDISPn
  has format F, E, or D.

********************************************************************************
                                    XSELECT
********************************************************************************

- Added a 'history' command to toggle writing of the history file
  (xselect.hty) on or off, to avoid problems when running multiple
  instances of xselect.  Also allow for an alternate location for
  xselect.hty to be written, specified via the XSEL_HISTORY_DIR 
  environment variable. 

- xselect.mdb: Added NICER entries and updated NUSTAR entry for mkf name.

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

HEASoft 6.17 includes Xspec v12.9.0:

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

New features:

- Mix model components are no longer heavily restricted in their usage.
  Previously mix components could only be placed at the start of a model
  expression, to operate on the results of the rest of the expression.
  Now they can be inserted throughout the expression in the same manner
  as convolution components.

  Models with mix components can also be assigned to source numbers 
  other than 1.  A corollary of this is that a mix model is no longer
  required to operate on all currently loaded spectra.

  To allow more than one mix model at a time the syntax for XFLT####
  keywords has been generalized. These keywords are now strings of form
  "key: value" with xspec maintaining an internal database of key, value
  pairs which mixing model code can access. Backward compatibility with
  the old version of XFLT#### containing only a value is maintained.

- Expanded the types of expressions allowed in parameter linking.  It
  can now handle the same mathematical functionality supported in mdefine
  equations.  Related to this, parameters can also be specified as 'p#'
  and 'modelName:p#' in link expressions, as well as the old '#' and 
  'modelName:#'.  The link expressions are now displayed using the 'p#'
  format.

- The output of the 'plot margin' command is now independent of the grid
  size.  There is a new 'plot integprob' command which also must be run
  after the 'margin' command and which plots the integrated probability
  within the contours shown.

- The data and back commands now handle files with multiple SPECTRUM
  extensions.  There are a number of ways of specifying a particular
  extension: filename{N} will use the Nth SPECTRUM extension;
  filename{SPECTRUM2} will look for an extension called SPECTRUM2;
  filename{back} will use the first SPECTRUM extension with the HDUCLAS2
  keyword set to 'BKG'; filename{name=value} will look for a SPECTRUM
  extension with keyword name set to value (in this case there must be
  no spaces within the {}). If the BACKFILE keyword in a source filename
  is set to the filename itself then XSPEC will get the background from
  the extension with HDUCLAS2 set to 'BKG' (this, finally, makes Chandra
  level 3 files work seemlessly in XSPEC).

- The 'error' command now has a 'nonew' option.  This determines whether
  to repeat the calculation when a new minimum is found.  Previously it
  was relying on the 'query' setting to make this decision.

- Added grey-scale image as background to to contour plots. 'dem' plots
  now display a histogram. The new 'eqw' plot option shows the
  distribution of equivalent width values after running the eqwidth
  command with the err option.

- New model 'nlapec'. There is also an APECNOLINES xset option which
  will turn off lines for all apec models.

- The models using AtomDB files now require the line files to be sorted
  in increasing order of energy within each element and ion. This allows
  a speed-up in the model calculation.

- Replaced the rescalecov script with the 'chain rescale' command.

- The 'plot delc' command now works for cstat, plotting (obs-mod)/error,
  however it is important to remember that this is not plotting
  contributions to the statistic.

Enhancements previously released as patches to 12.8.2:

- A new -udmget64 option has been added to initpackage.  This is
  intended for Mac platform users with local Fortran models which still
  make use of the udmget memory allocation function.

- 'tclout steppar' can now retrieve values of the variable parameters as
  well has the fixed parameters which are being stepped through.


All bug fixes to v12.8.2 released as patches are included in v12.9.0.
In addition the following problems have been corrected:

- For the case where counting statistics are not applied, 'fakeit' now
  outputs the spectrum in a RATE column rather than COUNTS.  This is
  to remove bias caused by truncation errors.  It also now outputs a
  STAT_ERR column and sets the POISSERR flag to false.

- Special characters have been removed from all model parameter names
  and (generally) replaced with underscores.  This is to make their
  name strings more easilty accessible in PyXspec.

- When calculating 'tclout peakrsid' with Cstat, it should not make
  use of correction files.

- Redundant model fold calculations have been removed during certain
  update contexts.

- Fix to vequil model array assignment error.

- The default filenames for fakeit output should always be in the
  current run directory, even when the response file is in a different
  directory.

- A file-write race condition has been eliminated for the case of
  running 'lmod' in parallel XSPEC sessions.

- The vvnei model had the tau and meankT parameters flipped.

- The AtomDB input files were being reopened unnecessarily often.

*********************

PyXSpec Change Log:

New Features:

- Local models may now be written in Python and inserted into XSPEC's 
  models library with new AllModels.addPyMod() function.

- The plot array retrieval interface (ie. Plot.x(), Plot.y()) has
  been expanded to allow retrieval from secondary plot panels in a
  multi-panel plot.

- New Parameter.index attribute.

- New backscale attribute for Spectrum and Background classes.

- Added new function Fit.stepparResults() for retrieving results of
  most recent steppar run. (Previously available as a patch)

- New noWrite option added to AllData.fakeit (Previously available
  as a patch)

Fixes:

- The Model.__call__ function now returns Parameter objects by
  reference rather than by value. This is to allow the returned
  object to retain any custom attributes the user may have added.

- Improved handling of Ctrl-c breaking in several prompting contexts.

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

Version 2.2.1bn24 - updates since v221bn21 (HEASOFT 6.16) include:

- Fixed error in distributing collision rates between magnetic
  sublevels of H and He-like ions in atomic data atdb.fits.

- Make the printing of heating and cooling rates rational: httot
  and cltot are the true total heating and cooling. Also decrease the
  number of lines which are binned and written to xout_spect1.fits in
  the interest of speeding things up.

- Include print-out of column densities in xstinitable.

- New version of xstar database which includes fine structure for
  He-like ions.

- Fixed error in calculation of rates from data type 16 (Iron
  collisional ionization).

- Photoionization integration routine now uses thresholds calculated
  on energy bin boundaries.  This allows for better evaluation of the
  Milne integral, though it may affect photoionization rates in the
  case of very coarse energy bins.

- Removed redundant subroutine phint53new.f.

- Added code to print ion column densities as part of lpri=2 output

- Increased buffer size in subroutine fstepr2 which writes to
  xo01\_detal2.fits such that table of lines is not artificially
  truncated.

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

NuSTARDAS v1.5.1:

Major changes introduced in this version: 

- numkarf: 1) addition of the new input parameters 'pilowarf' and
  'pihigharf' to define the energy range used to calculate the box
  ARF weights for the 'addarf' internal run (extended sources case);
  2) addition of the new input parameter 'flatflag' to apply a flat
  spatial counts distribution to calculate the box ARF weights for
  the 'addarf' internal run (extended sources case).

- numkrmf: bug fix for addrmf execution when CALDB in remote mode
  is used.

- nuproducts: addition of the new input parameters 'pilowarf',
  'pihigharf' and 'flatflagarf' to support the numkarf changes.

- nupipeline: 1) addition of the new input parameters 'pilowarf',
  'pihigharf' and 'flatflagarf' to support the numkarf changes;
  2) handling of the cases 'createexpomap=yes' and/or 'exitstage=3'
  when the '01' cleaned event file is empty.

Summary of changes:

- numkarf:

  When observing extended sources it's often the case that the
  high-energy photons have a different spatial distribution than
  the low-energy photons.  Prior to this patch, the ARF generator
  used the spatial distribution for all photons over the allowed
  NuSTAR energy range (1.6-165 keV) to determine the box ARF
  weights. The new keywords (pilowarf and pighigharf) can be used
  to set a specific energy range (e.g above >40 keV or 5-7 keV).
  Recall that the conversion between energy and PI is :
  PI = (keV - 1.6) / 0.04 channels.

  Additionally, we have added the option to use a "flat" spatial
  distribution over the source region (e.g. if the intrinsic source
  distribution is unknown) which equally weights all boxes in the
  source region when generating the ARF.

- nupipeline / nuproducts :

  Added feed through keywords to support the above changes to numkarf.

  Also improved handling of cases when high level (Stage 3)
  science products are being produced but the SCIENCE data mode
  file is empty. This commonly occurs during SLEW sequence IDs and
  previously the pipeline would exit with an error.

********************************************************************************
                                    SUZAKU
********************************************************************************

- xisexpmapgen: Fix a malloc error resulting from (at least one) use
  of a combined (3x3 and 5x5) XIS0 event file.

- aexisconf.list (aepipeline): New version which adds the following:

  2011-05-17: New list required after sequence 106001010
   Code 'f' was recycled

  2012-02-17: New list required after sequence 506025010.
   Code 'k' was recycled

  2013-10-25: New list required after sequences 408009010 and 408024010
   Code 'w' was recycled; Code 'x' was recycled

  2014-10-16: New list required after sequences 409008010 and 709020010
   Code 't' was recycled; Code 'g' was recycled

  2014-11-10: New list required after sequence 109008020
   Code 'n' was recycled; Code 'o' was recycled

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

UVOT:

- uvotexpmap / uvotshiftadd: Fixed UVOT exposure maps created with
  method=SHIFTADD to match EXPOSURE (previously missing dead time
  correction).

- uvotsequence: Corrected the labels on the UGRISM/VGRISM rows of
  the plot.

XRT (ISAC Build 31 Software Release - XRTDAS_v310):

- xrtmkarf:

  Fixed memory bug that occur when the number of the extraction
  region sub-boxes is larger than 100 Fixed bug in exposure map
  pixels numbering.

  Modified 'expofile' input parameter type from "hidden" to "queried".

- xrtproducts:

  Changed default value of 'correctlc' parameter from "no" to "yes".
  Modified 'expofile' input parameter type from "hidden" to "queried".

- xrtexpomap:

  Updated 'DATE-END' and 'MJD-OBS' keywords of the output sky exposure
  map.

- xrtgrblc:

  Changed default value of 'lccorravg', 'pcreglist' and 'wtreglist'
  input parameters.

- xrtpipeline:

  Updated 'SOFTVER' and 'CALDBVER' keywords in output event files.
  Updated xrtproducts task call to handle 'expofile' input parameter
  as "queried" type.

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

- correctlc: Fixed runtime abort caused by variable of insufficient size.

********************************************************************************
                        Configuration / Miscellaneous
********************************************************************************

- Updated reference data files (leapsec.fits, tai-utc.dat) for
  2015-07-01 leap second.

- PGPLOT: Added configurable option for the PNG driver.  To enable
  the PNG driver, run the heasoft-6.17/BUILD_DIR/configure with the
  option "--enable-png", and use "--with-png" to specify the location
  of the PNG library (if it is in a non-standard location).

- Mac OS X: Build "Universal" (both i386 & x86_64 architectures)
  libraries in heacore to prevent missing symbol errors when trying
  to use the heacore Perl module libraries.

- (FV) Update to FitsTcl 2.4 (used by the FV GUI).