********************************************************************************
                         RELEASE NOTES FOR HEASOFT 6.25
                                October 22, 2018
********************************************************************************

The HEASoft 6.25 release is primarily driven by updates to the NICER
data analysis software, but also includes other enhancements and fixes.

As before, configuration-related changes thoughout 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.46 - October 2018

- Added wildcard deletion syntax for columns, i.e. -COLNAM* will delete
  the first matching column as always; -COLNAM*+ will delete all matching
  columns (or none); exact symmetry with the keyword deletion syntax.

- Improved the algorithm for ensuring no tile dimensions are smaller 
  than 4 pixels for HCOMPRESS compression.
                   
- Added new functions intended to assist in diagnosing (primarily 
  https) download issues: fits_show_download_progress,
  fits_get_timeout, fits_set_timeout.

- Added the '-O <file>' option to fpack, which previously existed only
  for funpack.  Also added fpack/funpack auto-removal of .bz2 suffix 
  equivalent to what existed for .gz.

- For the fpack '-table' cases, warning message is now sent to stderr 
  instead of stdout.  This is to allow users to pipe the results from
  stdout in valid FITS format.  (The warning message is otherwise placed
  at the start of the FITS file and therefore corrupts it.)

- Fix made to the '-P' file prefix option in funpack.

Version 3.45 - May 2018
                   
- New support for reading and writing unsigned long long datatypes.
  This includes 'implicit datatype conversion' between the unsigned long
  long datatype and all the other datatypes.
  
- Increased the hardcoded NMAXFILES setting for maximum number of
  open files from 1000 to 10000.
                 
- Fixed a parsing bug for image subsection and column binning range
  specifiers that was introduced in v3.44.

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

- Enabled support of long string keywords (which use the CONTINUE key)

- Replaced all uses of std::auto_ptr with std::unique_ptr.  This is made
  in tandem with configuration changes which add a C++11 compiler flag
  when necessary.

- Added capability for user to specify keyword categories to read/copy. 
  Removed TYP_WCS_KEY,TYP_CMPRS_KEY from s_iKeywordCategories, as they
  are file-specific keywords.

- Bug fix to writeHistory and writeComment functions: when copying via
  the get/write functions, mult-line input was not properly formatted
  upon output.

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

- prefilter: Avoid invalid memory access

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

- quzcif: Added https support with retrieve=yes.  Added optional download
  progress bar display when retrieve=yes and chatter > 10

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

- chimgtyp: Reworked prompt for output datatype parameter; this prevents an
  infinite loop which occurred when the datatype was invalid or incorrectly
  entered.

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

- Replaced some tasks with wrappers to their new counterparts in the
  heasptools component:  

  old heagen task:    wraps to heasptools task:

    flx2tab        ->   ftflx2tab
    flx2xsp        ->   ftflx2xsp
    mkfiltrsp      ->   ftmkfiltrsp
    rgsrmfsmooth   ->   ftrgsrmfsmooth
    rsp2rmfarf     ->   ftrsp2rmfarf
    sdss2xsp       ->   ftsdss2xsp
    sprbnarf       ->   ftrbnarf

- barycorr: Fixed bug in handling GTI extensions that are not exactly
  named 'GTI'; allow orbitfiles=GEOCENTER for geocenter-to-barycenter
  only correction

- ftadjustgti [NEW]: Perform filtering and normalization of good time
  interval (GTI)

- xrtraytrace: Fixed bug that failed to detect an input energy value mismatch
  with all energies in the array of multilayer reflectivity file energies
  when the input energy list contained a valid energy immediately following
  an invalid energy. The effect of the bug was to calculate the wrong
  reflectivity value for all the input energy values that did not have a
  counterpart in the reflectivity file.

- xrtreftable: Corrected some sign errors in relectivity and transmission
  calculations. The use of the function cxpower for the square root of a
  complex number was replaced by the intrinsic C++ square root function.
  These corrections have no net effect on the reflectivity or transmission
  because they exactly cancel each other out.

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

- extractor: Speed up in the case of a very large number of gti bins by
  fixing calcbinsize so that it does not have to start at the first gti
  every time.

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

HEASP is updated to v2 which involves significant internal changes:

- All internal class members are now private and are accessed using
  get and set routines. For example in pha the member m_FirstChannel is
  set using setFirstChannel(value) and got using getFirstChannel().
  For members which are vectors individual elements can be got and
  set using for example getPhaElement(i) and setPhaElement(i,value).

- The Python module now uses numpy arrays for C++ vector
  quantities. For example the Pha vector in pha can be set using
  setPha(array([0.1,0.2,0.3,0.4,0.5]))

- Modified all methods for consistent use of const on input variables
  and made methods themselves const if the object is not modified.

- Added more load methods and constructors.

- Removed members which store OGIP version numbers since it made no
  sense to store these in classes.

- Added writeChecksum() functions when writing extensions

- Modified table::getValues to report to the SP error stack if a
  requested parameter value is outside the tabulated values

- Removed copying of other keywords and extensions since these are not
  operations from classes as these are not operations on the class.

- Improved error reporting on methods which call checkCompatibility().

- Added copying of COMMENT and HISTORY keywords to SPcopyKeys.

- Trapped possible seg fault and fixed error setting m_FirstElement
  in rmf::update and fixed error in rmf::interpolateAndMultiply.
  Corrected error in rmf::convertUnits when converting from wavelength
  units. Fixed potential seg fault in rmf::estimatedFWHM when the
  response maximum is in the first or last channel.

- Fixed bug in arf::rebin which was causing the arf to be summed
  instead of averaged in the rebinning process.

********************************************************************************
                                     HEASIM
********************************************************************************

- skyback: Fixed subscript order in maps; fixed bugs in using degree-pixel
  sky maps.  Updated FITS headers with full description in comments.

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

- ftaddarf: Fixed bug which caused a zero length arf to be written

- ftdmprmf: Fixed so that it doesn't also write to the terminal when
  an output file is set

- ftflx2tab: Fixed bug which caused REDSHIFT keyword to always be set to F

- ftflx2xsp: Fixed memory error on channel vector and incorrect setting of detchans.

- ftgenrsp: Fixed typo causing seg fault when reading a resolution file;
  Improved reading of input files and fixed error in calculating response
  when setting the norm vector; Fixed bug in setting channel and energy
  bins when using their respective break parameters

- ftrbnarf: Fixed prompting for binfact parameter

- ftrbnpha: Corrected errors in reading parameters and in calculating
  binning factors for the FAINT2BRIGHT and BRIGHT2LINEAR methods

- ftrbnrmf: Minor efficiency improvement trapping cases when channel or
  energy binning is linear with unit binning factor

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

- ftcalc: Added 'coldesc' parameter to allow specifying description of a
  new column; default value coldesc=INDEF will preserve existing function.

- ftleapsec [NEW]: Calculate number of leap seconds at requested epoch

- ftlist: Fixed bug for case of reading 0-length variable-width bit
  columns (type -TBIT). Fixed bug for case of variable-length string
  columns (-TSTRING) in which the number of elements was incorrectly
  calculated (can only be 0 or 1).

- ftsort: Allow sorting of 0-row input (produces 0-row output).

- ftsort + ftmergesort: Fixed compatibility with tables with variable-
  length columns: ftsort and ftmergesort cannot copy a subset of a table
  with variable-length columns (i.e. they can only copy the entire table).

********************************************************************************
                                     TIME
********************************************************************************

- maketime:

  Added parameters 'premax' and 'postmax' to allow finer control over how
  files with large gaps are dealt with; premax=-1, postmax=-1 is the default
  and recovers previous behavior for backwards compatibility

  Added parameters 'mingti' and 'emptygti' to allow more fine-grained
  control over GTI creation; defaults maintain existing expected behavior;
  output can now be piped to STDOUT

  Added parameter 'extname', which defaults to STDGTI for compatibility
  with previous versions; added descriptions to START and STOP columns

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

- Fixed random aborts when setting log file option on the command line

- Addressed Tcl "::unknown " messages in batch (.xco) processing

- skyview: Fixed to handle https addressing

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

HEASoft 6.25 includes Xspec 12.10.1.

- New models:
  
  - zbknpower
  - zlogpar
  - agnsed
  - qsosed
  - (v)cph    (note this included change to calcCoolingFlow function)
  - relline, relline_lp, relline_lp_ext
  - relconv, relconv_lp, relconv_lp_ext
  
- Modifications to models:
  
  - Added an xset LINECRITLEVEL option for crtLevel for
    gaussian/lorentzian/voigt lines. If set this overrides
    the coded values.
  
  - Modified diskline, rdblur, kdblur, kdblur2, laor, laor2, kerrconv,
    kerrdisk for high resolution spectroscopy.
  
  - Added tabint C/Fortran wrapper for tableInterpolate.
  
  - Added statistic cstatbN option.

- PyXspec:

  - It is now possible to call XSPEC's model functions directly from
    PyXspec using the new function xspec.callModelFunction().  This
    utility is particularly useful for users who wish to access
    particular XSPEC model functions within their own local model
    Python code.

  - Some XSPEC model parameter names contained parentheses, which
    were incompatible when used in PyXspec.  Therefore parentheses
    have been replaced with a single underscore.

See also:

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

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

Xstar v2.53:

Changes since 2.5:

- Implementation of lpri=-1 for very streamlined output; change to
  xstinitable.par to allow for larger model grids

- Minor changes to print switches and more accurate criterion for
  determining which lines are included in spectrum synthesis.

- Numerous Fortran syntactical changes

- Improved precision tests for which lines to include in emission
  spectral calculation (binemis)
  
- Added emissivities to quantities output to file xo01_detal4.fits

********************************************************************************
                                     EXOSAT
********************************************************************************

- exovig: Fixed "exovigrun: command not found" error

********************************************************************************
                                     MAXI
********************************************************************************

- New package of analysis tasks for the MAXI mission:

  mxextract - Extract source event from multiple HEALPix event files.
  mxgrmfgen - Generate the response matrix file for GSC instrument.
  mxgscandat - Calculate the time to when a source is in each of the
    GSC FOV detectors.
  mxgtiwmap - Calculate a weighted spatial distribution of events on
    the detector.
  mxlscan - Calculate a source lightcurve.
  mxproduct - Generate the high level products (images lightcurves spectra
    and response) for both instruments.
  mxscancur - Determine the source position relative to the GSC or SSC
    instrument.
  mxsrmfgen - Generate the response matrix file for SSC instrument.
  mxsscandat - Calculate the time to when a source is in SSC instrument FOV.
  mxdownload_wget - Search and retrieve the archived MAXI data for a given
    sky position and time interval
  mxversion - Print the MAXI software package version

********************************************************************************
                                     NICER
********************************************************************************

NICERDAS Version 5.0:

- nicerl2, nicercal, nicertimecal, nimpucal: Added leapinit option to
  calculate leap seconds

- nicertimecal: Allow 0-row input files; Fixed bug when running non-
  CALDB (wasn't querying leap seconds properly)

- nicertimeconv [NEW]: Basic time conversion for NICER time values

- nicerpi: Allow 0-row input files; Added new functions for NICER gain
  calibration; added energycol output to get ENERGY column in output
  if desired; allow PHA input to be float instead of int; change trend
  stuff to MV_TREND instead of FT_TREND

- nimaketime: Updated maketime call to handle new {pre,post}max and
  emptygti options

- nimpucal: Improved memory efficiency when calculating PI_RATIO

- niprefilter: Added column defaults when an APID file is missing;
  added robofile support

- niextract-events: Fixed timefile=@name.lis bug; added history
  task parameter

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

- Improved handling of remote CALDB and file i/o diagnostic output.

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

- xisrmfgen: Change to model the Si-K edge when calculating the response
  function. The software includes new parameters (xi[0/1/2/3]_jmp_loene,
  xi[0/1/2/3]_jmp_hiene, jnct_hiene, s1_factor) used in the model. This
  software change requires the new CALDB version 20181010.

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

- uvotmaghist: Allow ignoring uvotsource errors; this sounds odd but is
  allowed for the case where some UVOT images do not include the regions
  of interest. Activate by setting the UVOTMAGHIST_IGNORE_UVOTSOURCE_ERRORS
  environment variable to 1.

- XRTDAS: Improved handling of remote CALDB and file i/o diagnostic output.

********************************************************************************
                                      MISC
********************************************************************************

- PGPLOT: Added Jonathan Irwin's SVG driver

- READLINE: Updated to v7.0 + current patches

- WCSLIB: Updated to v5.19.1