********************************************************************************
RELEASE NOTES FOR HEASOFT 6.35
March 14, 2025
********************************************************************************
The HEASoft 6.35 release is driven by new and updated mission-specific
data analysis software (XRISM, IXPE, Swift, RXTE, 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.6.0:
- Improved the empty-primary data test performed in fits_open_file
- Correction to eval_defs.h typedefs to allow for compilation on old
GCC compilers
- The fitsverify utility tool now distinguishes between alternate
coordinate systems when testing positions of WCSAXES keywords
- Updates made for greater C23 compatibility as required for GCC v15
- Possible memory vulnerabilities patched. Our thanks
to Doyensec for reporting this
- Fix to a possible heap buffer overflow in a utility tool
Our thanks to TeamH4C for reporting this
- Negative size parameter vulnerability patched in utility tool
Our thanks to TeamH4C for reporting this
********************************************************************************
CCFITS
********************************************************************************
- New function HDU::addKeyNull() for creating keywords with null
values (ie. CFITSIO's fits_write_key_null() functionality).
Existing keywords with null values can now also be modified.
********************************************************************************
HEASP
********************************************************************************
arf:
- Added remapEnergies method analogous to that in the rmf class
pha:
- Fixed setGrouping to make sure that any information about bad
quality channels in the spectrum is combined with any setting of
channels as bad quality in the grouping process
- Fixed coding error in getMinSNOptimalGrouping which could cause
overrunning the end of a vector
- Fixed read method so that it uses the extension suffix on an input
filename. Also added the option to pass an extension version number
into the write method.
phaII:
- Fixed read method so that it uses the extension suffix on an input
filename. Also added the option to pass an extension version number
into the write method.
grouping:
- Improved diagnostics in loadOptimal if FWHM and Counts have
different sizes
rmf:
- Fixed remapEnergies so that it divides by the total weighting
if operating on a REDIST matrix. This makes it consistent with
rebinEnergies.
- Corrected use of J or I when writing depending on the number of
channels
- Added append method to explicitly write rmf to an existing
file with an option to write only the MATRIX or only the EBOUNDS
SPutils:
- Added routines to copy a single HDU from one file to another and
to split an extension suffix from a filename
********************************************************************************
HEAUTILS
********************************************************************************
headas_gti - Significant changes to GTI library interface:
- Added mjdrefi,mjdreff fields to structure
- HDput_frac_time normalize integer & fractional parts before writing
- HDgti_read default extension is now *GTI*, allow '(current)', read
MJDREF as full fractime, fix bug when using refer_to (stop times
were not offset)
- HDgti_write writes EMPTYGTI keyword for empty GTIs
- New routine HDgti_readfile to read files and HDgti_read for opened
files
- Keep integer parts of MJDREF and TIMEZERO separate
- Added accessor routines for MJDREF and TIMEZERO; normalize integer
and fractional parts
- For emtpy GTIs write a single-row no-exposure file
- Further refinements to handle real-world conditions and GTIs
- HDput_frac_time(): write double/fractional number keywords with
16 decimal digits of precision
- Removed hardcoded column numbers
- Added error trapping
- Use floor() instead of (int)
- Added interface to HEACORE::HEAUTILS Perl module
********************************************************************************
ATTITUDE
********************************************************************************
- prefilter:
* Added initialization code for computation of earth/moon/target body vectors
* Allow for RXTE orbit file that may have broader time coverage than
attitude file when orbpropagate=YES
********************************************************************************
CALTOOLS
********************************************************************************
- caldbinfo: Updated to provide more useful information to the user about
whether the CALDB is set up correctly or not. For local installations,
it now checks for the presence of the appropriate caldb.indx file in
the $CALDB/data/mission/instrument directory
- udcif: Fixed issues with file lengths
********************************************************************************
HEAGEN
********************************************************************************
- barycorr: Updated to use JPL Ephemeris DE440 (1950-2060) by default
- burstbkgevt: (NEW) Generate simulated background events based on input
background lightcurve and spectra
- burstfinder:
* Improved fitting, more accurate characterization of burst
times, and corrections to pre- and post-burst interval limits
* Updated to conform to new refactored headas_gti() interface
- burstt90t50: (NEW) Compute T90 and T50 using CGRO definition
- ftadjustgti, rebingausslc: updated to conform to new refactored
headas_gti() interface
- sumvec: (NEW) Create a new column that is the sum of elements in
a vector column
- xrtraytrace: Method of opening mirror file changed to avoid problem
with remote CALDB.
********************************************************************************
HEASARC
********************************************************************************
- bincurve: Replaced fixed binning with dynamic memory allocation
- extractor:
* Updated time keywords for newer standard. Also updated DATE-BEG
and DATE-END to match MJD-BEG and MJD-END instead of just copying
DATE-OBS and DATE-END from the input event file.
* Copy primary header keywords from the input event file into the
primary header for light curves and images. This copies what is
already done for spectra.
* Fixed to handle propagation of COMMENT and HISTORY keywords correctly
* Modification from mission team for the estimated error on Q and U
spectra and light curves for the unweighted and simple cases
- searchflickpix: Changed COUNTS column in output file from 32-bit (I)
to 64-bit (J) integer
********************************************************************************
HEASPTOOLS
********************************************************************************
- ftaddrmf: Added support for XRISM-like RMFs with multiple MATRIX
extensions; now checks that all input rmfs have the same number of
MATRIX extensions and sums them all.
- (NEW) ftchktablemodel: check the validity of a FITS table model file
- ftgrouppha: Added support for CSC-type files which have their
background spectrum as another SPECTRUM extension in the same file;
improved diagnostics on errors
- ftmarfrmf: Added ability to multiply RMFs containing multiple
matrices (e.g. for XRISM Resolve) by an ARF.
- ftrbnrmf: Added a note to the help about when the output RMF is
divided by the binning factor.
- ftrgsrmfsmooth: Moved to Xspec/src/tools (see below)
********************************************************************************
HEATOOLS
********************************************************************************
- ftmgtime: Now more flexible about accepting files with mixed MJDREF
and no-MJDREF keywords; accepts indates='-' to disable rebasing of GTIs;
updated to conform to new refactored headas_gti() interface
- ftsort: Added 'merge' sort method
- ftverify / fverify:
* Now distinguishes between alternate coordinate systems when testing
positions of WCSAXES keywords
* Minor fix in fits_parse_card to prevent the case of reading 1 byte
before the start when removing trailing space from keywords.
* In get_str(), added a check to prevent a negative int from being
sent as the size arg to strncpy; added bounds check to get_str()
when removing trailing space
********************************************************************************
XSELECT
********************************************************************************
- Changed the default mission at startup to XRISM from SUZAKU.
- xselect.mdb: Corrected start of XRISM filenames to 'xa' instead of 'ah'
- xsl_filter_intensity: Exit with status from running mkintensfilt command
- Changed PLT plots to have a white background
- Allow filtering on multiple columns and fixed a bug when filtering
with a column starting with the letters PI.
- Increased arbitrary maxpts setting for fplot because of long
IXPE observations
- Increased the maximum size of the light curve when doing filter
time cursor.
********************************************************************************
XRONOS
********************************************************************************
- lcmath: Changed 'addsubr' parameter to be hidden with default=no
********************************************************************************
XSPEC
********************************************************************************
Xspec version 12.15.0
New models:
- Added lorentzian (lorabs) and voigt (vlorabs) absorption line multiplicative
models
- For completeness, added versions of the lorentz and voigt lines with widths
in velocity, not energy, and with a redshift parameter:
zlorabs, zvlorabs, zlorentz,
vlorentz, zvlorentz,
zvoigt,
voigtabs, zvoigtabs,
vvoigt, zvvoigt,
vvoigtabs, zvvoigtabs.
- Added new convolution model rgsext which is a version of rgsxsrc with a
parameter for additional blurring. Both rgsext and rgsxsrc can now get
information on image file, boresight, and extraction size from XFLT keywords
in the spectrum.
- Added model feklor for Fe K fluourescence line from 7 Lorentzians.
Changes to models:
- Added files for AtomDB v3.1.2 and SPEX v3.08 and made these the defaults.
- Added support to apec models for equilibrium ion balance file and making
ion fractions available in CIE models.
- Added method to calculate the electron/ion ratio for nei models and
store the information in the model database so it can be recovered
by e.g. tclout modkeyval ApecElectronIonRatio.
- Added ability to correct the electron density for apec models. This changes
the normalization for the cases when the ne/nH ratio differs from 1.2.
- When calculating nei models added saving of ion fraction arrays as
ApecIonFractionsZZ where ZZ is the chemical symbol of the element.
- Added equilibrium ionization balance files for v2.0.2, v3.0.7, and v3.0.9
versions of AtomDB. Note that v3.0.4-3.0.9 had identical files.
- Renamed eigen_v3.0.fits to apec_v3.0_eigen.fits and eigen_v3.0.4.fits to
apec_v3.0.4_eigen.fits. Added apec_v3.0.7_eigen.fits which is appropriate
for nei models with versions 3.0.7 and 3.0.9.
- Added a SEIGEN keyword to the primary header of the NEI continuum file
to indicate which version of the eigenvector file is correct to use
with this version of the NEI continuum and line files.
- Handled the case of an input _coco file having no Cont_Err or Pseudo_Err
column. This allows us to save some space in files where errors are not
included.
- Added utilities to get and put a SPEX version number analogous to
the AtomDB version number. Added support for multiple versions of
SPEX. Added SPEX_VERSION to Xspec.init to define a default SPEX
version number.
- Fixed MixUtility::doMix so that it correctly handles the case of
spectra not being included in any of the mixing sets. Fixed the
polrot mixing model so that it does not require triplets of (I,Q,U)
in each data group. Each datagroup can only have one pair of (Q,U)
at most but can have any other spectra.
- Added documentation to xsdskb.f for the bolometric flux calculation.
Other:
- ftrgsrmfsmooth (tool relocated from heasptools):
* Rewrote to use the xspec model code in rgsExtendedSource.cxx
* Added 'extfactor' to match with xspec 'rgsext' model parameter
* Catch case of user entering a positive grating order and convert
it to the negative order with a warning message
- When the mdefine expression includes a table model then set the
spectrum dependency flag to true. This is necessary to handle the
case where the table model depends on XFLT values.
- Improved the warning message when detecting an energy of zero in
a response file.
- Added the ability to set the minuit strategy level and tolerance
and fixed the setting of precision for the migrad and simplex methods.
- hardcopy.tcl now plots in any of the hardcopy formats available.
The format is chosen by the suffix of the filename.
- Changed from using cfortran to using ISO bindings to call Fortran
from C/C++ in PltPkg. This is the first step in removing all
cfortran use from xspec.
Bug fixes
The following patches for 12.14.1 have been included:
- 12.14.1a. The default hard and soft limits for the 'frac_th' parameter
of the sssed model are not being set properly.
- 12.14.1b. Memory errors in routines called by the ismabs model may
cause a crash.
- 12.14.1c. Enabling mdefine to work with polarization models.
- 12.14.1d. This fixes two problems in the Voigt line profile. The
first is that the Lorentzian width parameter was being used as
though it was the HWHM, not the FWHM. The second is that an error
was introduced in the normalization when making the change to
normalizing from 0 to infinity instead of -infinity to infinity.
********************************************************************************
XSTAR
********************************************************************************
Version 2.59e:
- Updated convolution of the continuum emissivity and opacity to include
thermal and turbulent broadening
- Fixed minor error in gsmooth2
- Changes to pprint to improve display of Auger yields
- xstar2xspec: make 'vturb' a variable parameter
- Fixed level numbering error in database affecting type 86 data for
Fe first row ions
********************************************************************************
CALET
********************************************************************************
New suite of CALET tools:
- cgbm_bstgti: Search for burst(s) and calculate the time intervals
using as input an event file from a specific CALET GBM detector.
- cgbm_findrmf: Select and retrive RMFs from the CGBM CALDB for a given
time, sky location, detector, and gain.
- cgbm_speclc: Extract spectra and/or lightcurves from a CGBM event file
within a time interval.
- caletversion: Report version string for CALET package.
********************************************************************************
IXPE
********************************************************************************
Minor change to the IXPE compiled tools:
- ixpegaincorrtemp: Rather than simply crashing with no explanation
when the user gives an "infile" with no extension, a more instructive
error message is logged (an extension is still required).
Changes to the IXPE Python tools:
- ixpeaspcorr:
* Updated the method for finding an image peak and fitting box using
all the data in the given event file.
* Interval fitting now uses the same fitting box rather than finding
the image peak and fitting box within each interval.
* Image peak fitting now uses 2-D Gaussian fit correctly when there
is enough data. i. Fit parameters are checked for being physically
realistic, if not, they are discarded, and arithmetic mean and std.
deviation are used instead. ii. Fits that fail to converge are
discarded and arithmetic mean and std. deviation are used instead.
* Interval fitting now chooses a fitting method (overall data fit,
arithmetic mean and std. deviation to interval data, or 2-D
Gaussian fit to interval fitting box image) based on the number
of available counts.
* Interval fitting does not use valid events flagged as background
to calculate the interval image peak parameters, but it does
correct the position of valid events flagged as background.
* A new user interface parameter posfitfile_out added to allow
users to save the parameters from each interval fit to a file.
* Two new user interface parameters orbit_folding and a0110file_in
allow the user to optionally fold the event times at the IXPE
orbit period (derived from a0110file_in data), then calculate
and apply the position fits using intervals of orbit-folded time
rather than event detection time.
* This subtly changes the edges of some event detection time bins
when orbit folding is not used, but only by sub-second amounts.
Therefore, corrections without orbit folding are not exactly the
same as the previous version, though statistically equivalent.
* Help file was updated.
- ixpeboomdriftcorr:
* Now corrects valid events flagged as background as well as
valid events without the flag.
* Fixed a bug in which some data sets were causing the program
to exit with an IndexError. This was a mater of mismatched
index range between a mask and the array it was masking.
* Help file was updated.
- ixpecalcarf:
* Fixed a bug in which, if a "specfile" argument was given for
a file with no "ANCRFILE" keyword, the software would not
apply corrections to the response file. The new code will
warn the user if the ANCRFILE keyword is missing, or if it
points to a file that does not exist, and attempt to use the
"arfin" parameter, or the will use quzcif to look up the
appropriate ARF file from the CALDB.
* Fixed a bug in which the fix above generated duplicate
"ANCRFILE" messages.
* Added support for extended sources: Added new parameters to
support this (both are required to support extended sources):
"regfile", a ds9 region file that defines the extended area.
"pmapfile", a Level 1 pointing map produced by ixpeexpmap.
The extended areas will be used to calculate the off-axis
angles used for the vignetting correction. In addition, if
the region file defines a single circular region, the REEF
correction for the aperture correction will also be
incorporated into the output ARF.
* Help file was extensively updated.
- ixpeexpmap:
* Made more efficient use of numpy histogram2d to add offset
positions to the pointing map to greatly speed up the
calculation of the pointing and exposure maps.
* Changed "infile" argument so that it can be any of the following:
A single input attitude file name.
A comma-separated list of attitude file names.
An @file listing multiple attitude files.
* Changed default values of "teldef" and "badpix" arguments
from "-" to "caldb".
* Fixed a bug in which a missing "OBJECT" keyword in the primary
header of the "infile" file caused a crash. The software will
now tolerate input with no "OBJECT" keyword.
* Help file was updated.
- ixpemkxspec:
* New module that will convert a list of IXPE spec files into
a ".xcm" file for submission to xspec. The input "specfiles"
can be a comma-separated list of files or an @file. A single
input file will not be processed. The files are sorted and
grouped by detector ID in the output file and list rmf files
as well as the input file. The name of the output file can
be specified by "xcmname". By default, the module will look
up missing or invalid "RESPFILE" from the CALDB (can be
controlled with parameter "caldbresp"). An optional line
can be added to specify the valid energy range based on
input values of the "ignore", "emin" and "emax" parameters.
********************************************************************************
MAXI
********************************************************************************
MAXI:
- mxdownload_wget: Spelling corrections; added .hk to required files;
changed default search radius to 3.0 from 8.0
- mxscancur: Fixed corruption of memory address holding REFDATA
environment setting
********************************************************************************
NICER
********************************************************************************
NICERDAS v13a:
- niscorpsum: Updated to conform to new refactored headas_gti() interface
- niscorplc, niscorpspect: Remove temporary file.xcm.log temporary problem
********************************************************************************
NUSTAR
********************************************************************************
NuSTARDAS v2.1.5:
- nucalcsaa, nuexpomap, nulccorr, nulivetime, numkarf: Updated to conform
to new refactored headas_gti() interface
- nupipeline: set check_metsim_files=no in nupipeline.par
to prevent errors for users of QuickLook ToO products while
looking for files in an event_cl/ directory that does not yet exist.
********************************************************************************
SWIFT
********************************************************************************
BAT:
- batbinevt, batmasktaglc, batoccultmap, battblocks: Updated to conform
to new refactored headas_gti() interface
UVOT:
- uvotapercorr: Do not force B REEF for white filter
- uvotpict: Update X DISPLAY environment variable earlier (needed for
'headless' environments)
- uvotskycorr: Allow use of semicolon separator in detopt parameter value
- uvotsource: Note use of mag 99 for sources impacted by small scale sensitivity
XRT:
- xrtimage: Updated to conform to new refactored headas_gti() interface
- xrtinstrmap, xrtlccorr: Updated string length for DATE-OBS and DATE-END
keywords following changes to extractor output
********************************************************************************
XRISM
********************************************************************************
XRISM V002:
ahfits library (heacore):
ahfits_file.cxx/h: Corrected parameter names in function prototype
cloneSingleHDU; Added updateNumberOfRows call before return from
cloneSingleHDU; Added cautionary comments in code, advising developers
to add new columns before establishing local variable connections.
ahfits_router.cxx/h: Added cautionary comments in code, advising
developers to add new columns before establishing local variable
connections.
ahgen.pm: Updated a debug message; updated a filename regexp in
parse_file_name subroutine to allow URLs.
New tools:
* rslbratios: For XRISM Resolve, calculates temporal, spatial, and
time-averaged count rates by grade, as well as observed and
predicted branching ratios, together with additional diagnostics
for probing anomalous branching ratio behavior.
* rslmpcor: Corrects the EPI2 energy column for mid-resolution
primary (Mp) and secondary (Ms) events in a XRISM Resolve event
file, and then uses that corrected value to recalculate the
corresponding PI column.
* xmatraceback: Facilitates extended source analysis for Hitomi SXS
and XRISM Resolve by using raytracing simulation output to make
RA/Dec images of the sky corresponding to specified detector
regions, accounting for PSF effects.
* xtdpixclip: Constructs histograms of counts per pixel from an
Xtend event file, flags pixels that exceed thresholds within
user-specified regions, and outputs the flagged pixels and
events, and separately, the unflagged events.
Updates to existing tools:
- rslctsfluct: Refactored code and optimized for execution time.
- rslpha2pi: Added HYBRID correction method, which substitutes
the TEMP_AVG value from the driftfile for the TEMP_FIT value if
TEMP_FIT is null.
- rslpipeline: Added ability to input custom GTI file or gain
history file; added option HYBRID for gain correction method.
Added useavgtime parameter to use mean instead of midpoint for
drift time. Added support for new tool rslmpcor. Changed
preview image extraction to include full field of view.
- rslpixgti: Updated GTI-related keyword handling by invoking
ahgtigen with cpkeyword=ALL.
- xaarfgen: Corrected comments, error messages.
- xtdmodegti: Added WINDOW1 to allowed data modes for DETNAM=CCD12.
- xtdpipeline; Removed call to searchflickpix task. Changed
preview image extraction to include full Xtend field of view.
Updated parameters for xtdpi task.
- xapipeline, with support module xapllib.pm: Updated parameters
for xtdpi task.
Updates to existing libraries:
- ahgain: Added useavgtime option to fitEvents function. Allows caller
to choose whether the time coordinate representing a time bin is the
average time or the midpoint. This change was also propagated into
several tasks: ahgainfit, sxsgain, rslgain, and rslpipeline.
New REFDATA files:
* calsrc_XTD_det.reg: region file for Xtend calibration sources
* unobstructed_XTD_det.reg: region file for unobstructed part of
detector FOV
********************************************************************************
XTE
********************************************************************************
- xteprefilter (NEW): Compute a prefilter-style filter file for XTE
observations
- pcamergeobsids: Added support for merging prefilter-style filter files
- pcaprepobsid: Added call to xteprefilter to generate a prefilter-
style filter file
- saextrct, seextrct: Expanded internal GTI arrays to 9999 files; Updated
path length limits to 4096 characters, including columns parameter
- (xtelib) gtiminfo(): Added further error checks on array checking
to prevent segfault
********************************************************************************
MISC.
********************************************************************************
- lynx: Removed from the distribution; it is now an optional prerequisite
to allow linemode browsing of HTML help files using 'fhelp'
- PLT: Added call to PGPLOT routine to plot multiple polymarkers and
made plotting of error bars and symbols more efficient.