********************************************************************************
                         RELEASE NOTES FOR HEASOFT 6.28
                                August 11, 2020
********************************************************************************

The HEASoft 6.28 release is driven primarily by updates to mission-
specific data analysis software (NuSTAR, Swift), but includes other
enhancements and fixes.

As before, configuration-related changes throughout the package mean that
users who already have HEASoft 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.49:

- Fix to imcompress.c.  It now turns off quantization if ZSCALE
  and ZZERO columns are missing.  Treatment will be the same as
  if ZQUANTIZ were set to 'NONE', even if ZQUANTIZ is present
  and set to something else.

- Added mutex to fits_execute_template() function so that the
  creation of files using ASCII templates will be thread safe.

- In fpack when using -table flag, replaced warning message with
  a more detailed description mentioning FITS format update.

- Added flag to CMake builds to disable curl dependency.  Also
  only add CURL_LIBRARIES to CMake link target if curl is found.

- Minor adjustment to download progress output.

- Added support for Haiku OS.

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

- Bug fix in setLimits functions needed to create objects of
  type ColumnVectorData<unsigned short>

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

- Fixed a bug which could cause pha files to have both a keyword and
  column with the same name.

- Changed read column methods so that they check for a keyword if the
  column is not found rather than the other way round. This avoids a
  possible problem if the extension has both.

- Efficiency improvements.

- Added options for start and end channel to grouping::loadOptimal.

- Fixed a bug in grouping::GroupBin which was not taking into account the
  quality flag.

- In arf::read check for an EBOUNDS extension to read ENERG_LO and ENERG_HI
  which might occur in a type II file

- Fixed a bug in rmf::check which incorrectly flagged an error
  if the F_CHAN column had the maximum channel value and the first
  channel was non-zero.

- Modified the rmf and rmft classes to change from vectors to
  vectors of vectors for the first channel in group, number of
  channels in group, order of group, and matrix elements. This leads
  to a simplification in the code.

 - Added a new version of rmf::addRow which takes the channel group
   information. Added a rmf::substituteRow method which takes a
   compressed format row as input.

- Changed rmf::normalize to return the vector of normalization
  factors.

- Added an rmf::changeFirstChannel method to change the first channel
  value used (usually switching between 0 and 1.

- Trapped case in table::getValues of there being no overlap between
  the input energy range and the tabulated energy range.

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

- addarf: Fixed bug preventing clobber parameter from working

- dmprmf: Replaced with a wrapper to ftdmprmf (heasptools)

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

- fverify: Synchronized with ftverify (improved checking for
  duplicate HIERARCH keywords)

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

- addspec: Updated to use ftmarfrmf & ftaddrmf (heasptools)
  instead of marfrmf & addrmf

- extractor: Fixed bug writing a region extension if the region
  contains shapes with different numbers of points

********************************************************************************
                                   HEASPTOOLS
********************************************************************************

- Changes for new internal structure of rmf class.

- ftaddrmf: Slight efficiency improvement: reduces number of rmf
  object copies by one.

- ftflx2xsp: Added a first parameter to let the user control the first
  channel number.

- ftgrouppha: Added option to use minchannel and maxchannel
  parameters with the opt method; modified so if the backfile or
  respfile parameters are set then it writes the appropriate
  keyword values to the output spectrum; added reading background
  and/or response file from the input file if the parameters are
  set to %; also, do not reset the ANCRFILE in the output file.

- ftrbnrmf: Improved testing and diagnostic information for user
  setting inconsistent input

- ftrgsrmfsmooth: Fixed bug in reading the image description file.
  Slight efficiency improvement from not copying an rmf object.

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

- ftjoin: Minor pattern matching improvements

- ftmerge: Added support for tables with variable-length arrays

- ftsort: Changed way that variable columns are checked for

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

- Fixed problem with the gisclean command if a filename included an
  environment variable.

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

HEASoft 6.28 includes Xspec 12.11.1, a patch release:

All fixes and enhancements contained in 12.11.0 patches (a-m) are
included. The following are also included:

- Added new "show bayes" option to display all non-constant Bayesian
  prior assignments to individual parameters.

- All Bayesian prior assignments are now properly stored in files
  generated by 'save' command.

- Added new tclout(r) modnames option to write out model names.

  Added new tclout(r) pfree option to give T/F on whether a parameter
  is free.

  Added new tclout(r) option "tclout modgroups <modname>" which returns
  the data groups associated with a particular model.

- Modified tclout(r) so it only writes out each model once, not one
  time for each data group to which the model applies.

- Removed the requirement of a valid fit to perform a "flux error"
  calculation, provided that a proper chain file for the model is
  loaded.

- Improved the generation of parameters using simpars when parameters
  have widely varying sizes. It is still better in this case to define
  a new model using mdefine which scales the parameter values appropriately.

- Trapped problem in table models if there is no overlap between the
  response energies and the tabulated energies.

- Fixed problem that if two different response matrices with the same
  name but in different directories are used then xspec assumes that
  they are the same.

- Fixed problem that generated an error if the response F_CHAN had
  the maximum channel value and the first channel was non-zero.

- Fixed bug for corner-case of attempting to fit when response
  parameters are assigned to inactive models.

See also:

 https://heasarc.gsfc.nasa.gov/lheasoft/xanadu/xspec/issues/issues.html

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

NuSTARDAS v2.0.0:

Requirements: NuSTAR CALDB 20200YXX

This NuSTARDAS implements a new temperature-dependence during the ARF
generation that should improve performance in a small number of cases
for FPMA. The software change is required to account for cases where
the optic for FPMA is "cold", implying a decrease in the effectiveness
of the thermal blanketing (MLI) and a corresponding increase in the
low-energy transmission. This primarily affects observations after 2018.

This builds on the long-term ARF changes for FPMA documented here:

 https://heasarc.gsfc.nasa.gov/docs/heasarc/caldb/nustar/docs/release_20200429.txt

The accompany CALDB patch 20200YXX contains the temperature-dependent
corrections and is required for this software version.

Details on the issue can be found in this paper:

 https://arxiv.org/abs/2005.00569

More details about the MLI correction can also be found here:

 http://www.srl.caltech.edu/NuSTAR_Public/NuSTAROperationSite/mli.php


:: Note ::

This patch requires access to the optics bench housekeeping file
(obebhkfile). This file is distributed for each observation in the
"hk" subdirectory from the HEASARC. If an observation is downloaded
from the HEASARC, as always, we recommend running nupipeline to
recalibrated the data using the latest CALDB files. This will copy
the OBEB HK file into the output directory (commonly the "event_cl"
directory). No further action is required by the user as these input
files are automatically detected by nuproducts during later analysis
if they are present in the event_cl directory.

To call nuproducts directly on the data downloaded from HEASARC
requires the use of new input keyword: `inobebhkfile'. Details of
this are described in the software user's guide

 https://heasarc.gsfc.nasa.gov/docs/nustar/analysis/nustar_swguide.pdf

and in the quickstart guide:

 https://heasarc.gsfc.nasa.gov/docs/nustar/analysis/nustar_quickstart_guide.pdf

:: Software changes ::

The major changes introduced in this version are:

- numkarf: 1) Added temperature dependency for ARF files CALDB query;
  2) Added new 'obebhkfile' input parameter and computation of
  "OPT0_5TEMP" average value.

- nuproducts: 1) Modified call of numkarf task; 2) Added new
  'obebhkfile' input parameter.

- nupipeline: 1) Modified call of nuproducts task; 2) Added new
  `inobebhkfile' and `obebhkfile' input parameters.

- nu_highfits: Modified to support TFORM values '1PD(X)/1PI(X)'.

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

BAT:

- (batgrbproduct) bat-burst-advocate: minor typo fix in filtering
  expression

UVOT:

- (uvotimage) uvotrawevtimg: BUG FIX: update attitude for each new
  event time. The primary impact of this bug was star trails in
  settling images.

XRT:

- XRTDAS v3.6.0 (build 36): Modifications to support variable-
  length arrays (TFORM '1PD(X)/1PI(X))' (as are now generated by
  extractor)

- xrtlccorr: Corrected minor bug in a few error messages

- xrtgrblcspec: Minor correction to avoid empty channels with small
  gap intervals

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

- xenon2fits: Fixed crash

- pcarsp: Fixed call to ftrbnrmf (no chatter parameter)

********************************************************************************
                                     MISC.
********************************************************************************

- Miscellaneous updates to support GCC 10 (previously included with
  HEASoft v6.27.2a)