********************************************************************************
                       RELEASE NOTES FOR HEASOFT 6.34
                               August 22, 2024
********************************************************************************

The HEASoft 6.34 release is driven by new and updated mission-specific
data analysis software (XRISM, IXPE, NICER, NuSTAR, Swift/UVOT, et al.),
but as usual includes other enhancements and fixes.

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 4.5.0:

- Conversion of CFITSIO configuration to better conform with
  automake and libtool.

- Bug fix for case of bit column output in string format on clang
  compilers with high optimization

- Added compiler macro support to improve builds on loongarch64 and
  on Gnu/Hurd kernels 

- Fixed bug in fitsverify utility

********************************************************************************
                                     HEASP
********************************************************************************
 
- rmf:

  Fix for an occasional crash in rmf::rebinChannels and some code
  simplification.

  Added a check that F_CHAN + N_CHAN do not exceed the number of
  channels.

  Added a test during the rmf::read method for the MATRIX and EBOUNDS
  extensions having the same first channel.

  Fixed error in rmf::rebinEnergies if the grouping vector has zero
  values indicating the energy should be ignored. This only makes
  sense if energy bins are ignored at the beginning or end.

  Made the MATRIX extension read slightly cleverer if there is no
  TLMIN keyword for the F_CHAN column. In this case assume the first
  channel is 1 unless the minimum in the F_CHAN column is 0.

  Fixed case of empty FCHAN in the first energy bins.
 
- grouping:

  Added to grouping a method to test whether the grouping flags are
  not identically 1 and the quality flags are not identically 0.
 
- SPutils: Improved SPreadStrings so that it works correctly even if
  the line does not end with a newline.
 
- pha:

  Fixed test for negative exposure time in pha::check method - it
  should not return an error if the exposure is zero.

  Fixed writing grouping keyword when the grouping vector is
  identically 1.  It was writing the keyword value as 1 but
  the standard requires this to be 0.
 
- SPio: Added a handy routine to return all the column names in an extension.

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

- pointxform: Allow user control of output formatting via new
  parameter 'outspec', and write output coordinates to new
  parameters 'topix[12]' and 'toworld[12]'

- prefilter: Made 'rigname' optional since it is not used
 
********************************************************************************
                                    FUTILS
********************************************************************************

- fmerge: Fixed for crash uncovered using -fsanitize=address

- fpartab: Replaced with a wrapper to 'ftedit' (HEATools)

- fplot: Set a status for 'illegal extension' and 'too many y axes
  requested' errors to return control to the main program and avoid
  an unnecessary crash 

********************************************************************************
                                      FV
********************************************************************************

- Removed Hera connection, as it has ceased operations

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

- barycen: Improved par file defaults (e.g. 'useweights' default
  is now 'YES')

- barycorr: Validate input RA & DEC format (must be decimal)

- raytrace : dustmodeleffarea: (NEW) For X-ray point sources with
  dust halos, makes an effective area correction (or modifier) file,
  with the option of inputting raytracing event files made by the
  tool dustyarfmod.

- raytrace : dustyarfmod: (NEW) For X-ray point sources with dust
  halos, makes an effective area correction (or modifier) file, with
  the option of running raytracing simulations for the calculations.

- raytrace : xrtraytrace: Enhancements were made to xrtraytrace in
  two principal areas.  One of these pertains to the treatment of a
  more complex "mirror" CalDB file format to model structure in the
  innermost foils of the telescopes, that is new compared to Hitomi.
  The second area involves several changes that support a more
  complex treatment of "external objects". These latter enhancements
  will allow more accurate modeling of the XMA thermal shields.
  Specifically, more complex geometries are supported for constructing
  the external objects, and a new CalDB file is supported that can
  model spatial non-uniformity in a thin-film layer, in the form of
  a thickness map image. (However, such a thickness map CalDB file
  for XRISM does not yet exist, and is currently just an option,
  which may or may not be utilized in the future.) There are two new
  input parameters to xrtraytrace, one that specifies the name of
  the optional external object thickness map image CalDB file, and
  another that allows some of the individual components of external
  objects to be toggled on and off.  For example, after some future
  updates to the XRISM XMA thermal shield data in the mirror CalDB
  files, it will be possible to switch the film and mesh layers off,
  leaving only the frame, which is useful for emulating ground-based
  experiments.

********************************************************************************
                                  HEASPTOOLS
********************************************************************************
 
- ftchkpha: Fixed for erroneously flagging a missing keyword in a
  type II PHA file if it appeared as a column.
 
- ftchkrmf: Updated lists of mandatory and optional keywords based
  on the standards document. Better initialization of string vectors.
  Make sure to write any warning messages generated by rmf::read.
 
- ftrbnrmf: Fixed typo which prevented ecompmode=ebinfile from working.
  Added option to simultaneously rebin the arf with the rmf when energy
  binning.

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

- heasim: Include XRISM in heasim.mdb; improved par file defaults

- skyback: Improved par file defaults

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

- ftverify: Fixed bug for columns with long names+units

- fcopy (wrapper to ftcopy): Improved handling of single quotes in
  e.g. GTI filters

- fdiff (wrapper to ftdiff): Fixed exit code to match the original fdiff

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

- gtiinvert: Improved par file defaults and logging messages

- gticolconv: Improved par file defaults

********************************************************************************
                                    XSELECT
********************************************************************************
 
- Added support for XRISM

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

Xspec version 12.14.1:

New models

- Added new crossarf model for simultaneous fitting of
  spectra from multiple regions which mix together due to the PSF.

- Added versions of Gaussian lines with width parameter velocity
  in km/s instead of energy. 
  New models vagauss, zvagauss, vgabs, zvgabs, vgauss, zvgauss.

- Added new SED model for black hole binaries from Kubota et al. (SSsed).

Changes to models

- Added 3 new spectral tables (for Hydrogen at magnetic
  fields logB=11.7, 11.85, 11.95) to the nsmaxg model.

- Changed gaussian, lorentzian, and voigt line profiles so they
  are normalized from 0 to infinity instead of -infinity to
  infinity. This is not significant for standard spectral fitting
  however when using xspec to fit time series power spectra it will
  make a difference.

- Changed the cemekl default switch parameter to 2. Fixed all the
  switch parameters so only the default value is given since xspec
  ignores the others.

- Changed the default redshift for the (b)(v)cph models to 0.1 since 0.0
  does not work.

- Added members and methods to move more of the heavy lifting
  in mixing models out of the individual models and into the
  MixUtility class. Any individual model now just needs to set
  the specNumsMixSets, mixingFactors, and mixingEnergies
  structures then the doMix method does the actual mixing.

- Passed the source number into mixing models - before was assuming
  that any mixing models were only in the first source (which is most
  likely).

- When using adaptive integration in the agauss model and the models
  which use the MZCompRefl class store the number of function
  evaluations from the last integration.

Documentation changes

- Added reference links and clarified which models are changed by xsect.

- Fixed error in the equations for cstat with background in
  Statistics Appendix of Xspec manual.

Bug fixes

The following patches for 12.14 have been included:

- 12.14.0a. The plot polangle command causes a seg fault if no model is defined.

- 12.14.0b. Fixes necessary for compilation on Macs using Xcode/clang v15.3.

- 12.14.0c. The fakeit command does not handle data systematic errors
            correctly when using a spectrum as the source (ie. not 'fakeit
            none'). The systematic error should not be used as part of the
            probability distribution when simulating data.

- 12.14.0d. The changes in the previous bug fix did not include writing
            out the SYS_ERR column after fakeit if appropriate.

- 12.14.0e. This fixes a bug introduced in v12.14.0 that was preventing
            the setplot id plotting option from displaying APEC line IDs.

- 12.14.0f. This fixes a memory error that can cause a crash in the new
            bsedov model.

- 12.14.0g. The fourth parameter in the bwcycl model had been renamed
            from 'delta' to 'del' after Xspec v12.13. That was causing
            parsing problems in PyXspec when trying to access the
            parameter by name, so this patch changes its name back to
            'delta'.

- 12.14.0h. The newpar command does not properly parse the case where a
            model name begins with a '0'.

- 12.14.0i. This fixes a potential crash occurring with the the bvvnei model.

- 12.14.0j. When a parameter is linked from one model to a parameter
            belonging to a different model assigned to a higher source number,
            the save command's output file does not reproduce the link.

- 12.14.0k. Bug fix in 2D interpolation for the xscat model. This fix
            conforms to v1.0.2 of the xscat code distributed on GitHub.

In addition the following bugs have been fixed:

- Fixed bugs in the Fortran wrappers for the Numerics rebinning
  routines. Also changed variable names for hopefully greater clarity.

- Fixed potential error in the polrot model if the spectra are
  not read in the expected order.

- Header information is now written out during the fit when using
  the migrad or simplex methods.
  
- Fixed a case in the newpar command where a change to a parameter
  needs to force a recalculation in a separate model that happens to
  be linked to it.

- Fix to fitting for the case where non-norm parameters are linked
  to norm parameters.


For patches beyond 12.14.1, please visit the Xspec issues page.
 
PyXspec Release Notes for version 2.1.4
 
- Improved calculation efficiency when creating new models with
   non-default values for the parameters. 


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

Version 2.59d:

- New constants module, new input parameter 'abundtbl', diagnostics
  for 'nlte' models, data type 102

- Updated to print all parameters correctly in output files

- Updated xstar2xspec to handle abundance table parameter

- Changed defintions of alpha and gamma for pprint(10) and format
  of pprint(10) tables

********************************************************************************
                                    HITOMI
********************************************************************************

- Refactored code paired with the XRISM suite

********************************************************************************
                                     IXPE
********************************************************************************

IXPE Python tools v1.9
 
- ixpecalcarf:

  a) Updated the API so that the "attfile" parameter is now "attfiles"
     and can handle multiple files through both the Python interface
     and the command line interface.  The user can now define the
     following input types:

     * A single attitude file pathname on the command line as string.

     * A list of attitude file pathnames on the command line as a
       string of comma-separated file names (no spaces between names).

     * An "@file" on the command line which contains the symbol "@"
       followed by the pathname of a file that contains a list of
       attitude files, separated by newlines.

     * A Python list of strings, each of which is an attitude file pathname.

  b) Updated the module to better handle a mix of off-axis angles that
     are outside the maximum angle of the CALDB files (and thus outside
     the dynamic range of the calibrations).  The module now:

     * Warns the user what fraction of the attitude data points are
       outside the maximum angle.

     * Removes those attitude data points from the analysis.

     * Creates the 10-bin histogram of angles based on the range of
       angles within the maximum off-axis angle.

     * Uses this histogram to weight the ARF calculations.

  c) Fixes a bug in which the values for the CBD10001 and STOKESWT
     header keywords in the output ARF file were swapped.

  d) Fixes a bug in which the pre-check on CALDB files failed if the
     input was a link to a remove CALDB instead of a file in the
     current file system.  This module can now be used with a remote
     CALDB.

- ixpeeventviewer: Fixes two different problems that prevented display
  of events that were caused by updates to the matplotlib Python
  package and the Gtk graphics display library.  These changes have
  been tested to work with previous versions of both as well.

- ixpeflagbgd: This is a new module that flags background events
  that are identified by one or more of the criteria outlined in
  A. Di Marco et al., AJ 165 143 (2023).  The input files are
  event1 files that have been processed by the instrument pipeline
  (ixpegaincorrtemp, ixpechrgcorr, and ixpegaincorrpkmap).  The
  output will have background events flagged but not removed.

- ixpechrgcorr (actually in v6.33 debug update, but not documented):
  Updated import paths to allow the module to run.

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

NICERDAS v13:

This is primarily a bug fix and usability fix update.  No major new
functionality is provided in this release.

- nicerl2:
  * checks for writability of output directory (cldir)
  * checks for gzipped version of ufa file as a fallback
  * does not require per-MPU "uf" files to be present if tasks=SCREEN
  * if using tasks=SCREEN, doesn't overwrite .mkf file with .mkf.gz file
  * better aggregation of filtcolumns entries so that it is possible to
    use -colname to remove desired columns

- nicerl3-spect and nicerl3-lc:
  * bkgconfigs now passed to SCORPEON backgroun estimators
  * nicerl3-lc passes lcthresh parameter to niextlc
  * nicerl3-lc default value of noticerange now correctly reflects
    channel range of NICER

- nivignette:
  * new "profile=disk" surface brightness profile
  * bug fix to prevent error when reading surface brightness profile
    FITS file
  * better error checking when radial profile is provided

- all background estimation tools (SCORPEON, Space Weather, 3C50):
  * write metadata keywords to document the background model and
    configuration used
  * NIBKGTYP is the background model type (SW,3C50,SCORPEON)
  * SWVERSN is Space Weather version
  * BGYR3C50 is 3C50's "gain year" used
  * SCORPVER is SCORPEON's bkgver
  * SCORPVAR is SCORPEON's bkgvariant
  * SCORPCOM is SCORPEON's bkgcomponents
  * corresponding code in nicerl3-{lc,spect} to transfer metadata to
    product files

- niscorpspect and niscorpspectmod:
  * range of saa_norm is now 0-6000, which is a better representative of
    the true range; this only affects people trying to obtain data taken
    during SAA

- nicerarf:
  * support for nivignette's "disk" surface brightness profile (also
    nicerl3-spect)

- niobsmerge:
  * make sure that OBS_ID is written as a string and not an integer

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

NuSTARDAS v2.1.4:

This update provides preparatory software in case of a future failure
of one of the NuSTAR metrology lasers used to reconstruct the mast
motions. There is no current danger of either laser failing. This
code update will only be used if the NuSTAR SOC begins delivery of
synthetic mast files as described in Earnshaw et al. (2022)
(https://doi.org/10.1117/1.JATIS.8.1.014009). Otherwise, users
should notice no difference in the behavior of NuSTARDAS.

- nupipeline:

  Added a new hidden input parameter 'check_metsim_files' (default
  value set to 'yes', no need to set it in the command line) 

  if 'check_metsim_files=yes':  checks for the presence of the mast
  and psdcorr _sim0/1.fits files in the input 'event_cl' directory
  (these files will only be delivered in the case of a metrology
  laser failure) 

  if 'sim0/1' files are found: automatically sets internally
  runmetrology=no and uses the predictive mast and psdcorr _sim0/1.fits files 

  if 'sim0/1' files are not found: if runmetrology=yes generates
  internally the mast and psdcorr files; if runmetrology=no uses
  the "nominal" mast and psdcorr files 

  if 'check_metsim_files=no' (needed to be added to the command line):
  the data processing scheme is unchanged. In particular, if the mast
  and psdcorr _sim0/1.fits files are present in the input 'event_cl'
  directory, they are ignored 
  
  if 'runmetrology=no': copies in the output directory the mast and
  psdcorr files (parameters 'inmastaspectfile' and 'inpsdfilecor') 
  
- nuproducts: automatically checks for the presence of the
  mast _sim0/1.fits file in the input directory and, if present,
  uses it internally. If the _sim0/1.fits mast aspect file is not
  found, uses the nominal mast.fits file. 

From the user's point of view, the usage of the two modules is
unchanged. In the case of a failure of one of the two metrology
lasers, both 'nupipeline' and 'nuproducts' will automatically use
the sim0/1 files from the archive 'event_cl' directory which will
be delivered in the event of a metrology laser failure, with no
need to change the command line or update the code and/or the CALDB. 

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

- aepipeline: Correction to Suzaku pipeline expression filters

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

- Astro::Convert: allow user to control applyxform output precision

UVOT:

- uvotapercorr, uvotcentroid, uvotdetect: Updated mode of output
  parameters from 'ask' to hidden+learn.

- uvotdetect: (v3.10) Fixes transferring keycards and background processing

- uvotevtlc: (v1.6) Bug fix for merging infile GTIs

- uvotimage: (v1.3) Avoid redundant TELDEF lookup when processing
  aspect following

********************************************************************************
                                     XRISM
********************************************************************************

Changes to XRISM tools since the last internal team release ("Build 8"):

- rslflagpix: Fixed bug whereby events in the same pixel could be
  counted as crosstalk

- rslnxbgen: Added parameters selectfile and leapsecfile to rslnxbgen.par

- rslpipeline, xtdpipeline: Made revisions to image, spectrum, and
  light curve products

- rslseccor: Changed maximum output PHA value to be TLMAX rather than
  hard-coded 32767

- xaxmaarfgen: Fixed PSF percentages inside detector and region as
  reported in log

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

- pcarsp: Updated call to rddescr to add gainroot=NONE to prevent
  spurious errors related to 'shftfil'

- rddescr: Assigned a default value of 'NONE' for the 'gainroot'
  parameter to avoid errors related to 'shftfil'

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

- Update lynx to v2.9.1 (used by fhelp): Fixes a configuration problem
  that appeared on e.g. Fedora 40 with GCC 14

- Restored readline 8.0 cut and paste behavior, i.e. to allow cutting
  and pasting a series of commands with line breaks into Xspec

- Enhanced initial usability checks for Perl and Python

- Revised handling of compiler overrides for C/Perl interface libraries
  to help with build errors

- Added gfortran-14 and gfortran-mp-14 to Fortran compiler search list
  on Macs

- Fixed '--enable-mac_intel_build' option

- Updated WCSLIB to v8.3