********************************************************************************
RELEASE NOTES FOR HEASOFT 6.32.1
August 23, 2023
********************************************************************************
The HEASoft 6.32.1 patch release contains a significant fix to
the NICER data analysis software.
There is a patch installer utility available, which can be used
to update existing 6.32 source code installations to 6.32.1:
6.32.1 Patch Installer
This link also describes how to patch existing 6.32 pre-compiled
binary installations with the 6.32.1 updates.
********************************************************************************
NICER
********************************************************************************
NICERDAS v011a:
Major bug fix related to screening of data at MPU level, resulting in
erroneous normalization and event screening. For a further description
please see documentation of the bug and remedies here:
NICER analysis threads
- nifpmsel: (v1.9) Fix for major bug related to per-MPU filtering;
adds NIMPUFIX keyword upon output to confirm that the
MPU-autoscreening fix is applied
- nicerl3-lc: (v1.5) Added check for divide-by-zero, resulting in NaN
********************************************************************************
RELEASE NOTES FOR HEASOFT 6.32
July 20, 2023
********************************************************************************
The HEASoft 6.32 release is driven by new and updated mission-specific
data analysis software (IXPE, NICER, Swift, RXTE), but as always
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
********************************************************************************
- Bug fix to fits_make_hist[d] that was introduced in 4.2.0.
- Added overflow checking for case of reading images with 8-byte
float values into 4-byte float arrays.
- fits_write_key_longstr now handles case of writing a long keyword
in combination with a long keyword value string.
- Add conversion of French locale comma-to-period in corner cases
appearing in ffr2e and ffd2e functions.
- Increased the precision when writing version number to User-Agent
strings for http connections. This is needed to fully conform to
3-field version string format.
- Bug fix to GTIOVERLAP() calculator function, which was being
treated as a boolean value in expressions, and is now correctly
treated as a floating point result.
- Bug fix to ARRAY() calculator function, which caused a memory
overflow error
- Enhancement to the ARRAY function, such that ARRAY(V,d) can
apply new dimensions to V, as long as the total number
of array/vector elements does not change.
- Enhancement of long string keyword read/write functions to fully
conform with FITS standard specifications for multi-line value
and comment strings. Two new functions have been added to
implement this: fits_get_key_com_strlen and fits_read_string_key_com.
********************************************************************************
ATTITUDE
********************************************************************************
- det2att, det2att2: Converted to libcoord's new applyQuatToVector()
function; replaces conversion to a rotation matrix before applying
to a vector
- prefilter: Added output columns ALLV6 = TERMINATOR_ANGLE DAYLIT_FRACTION
SUN_BODY_AZIMUTH MOON_BODY_AZIMUTH (as well as various body vectors);
(MPFIT) bug fix for mix of analytical and numerical derivatives
********************************************************************************
HEASP
********************************************************************************
rmf:
- Added rmf::remapEnergies method to map an rmf onto a new energy
grid.
general:
- Protected against zero-length Data in SPwriteCol.
********************************************************************************
FUTILS
********************************************************************************
- Replaced fchecksum, fcopy, fcreate, fdiff, fimgcreate, fkeypar,
and fverify with Perl wrappers to their newer counterparts in
HEATools:
fchecksum -> ftchecksum
fcopy -> ftcopy
fcreate -> ftcreate
fdiff -> ftdiff
fimgcreate -> ftimgcreate
fkeypar -> ftkeypar
fverify -> ftverify
- fsumrows: Allow command line of up to 1024 characters
********************************************************************************
FV
********************************************************************************
- Fixed "bad option" error on Mac OS when exporting a FITS table as text
********************************************************************************
HEAGEN
********************************************************************************
- ftadjustgti: Added ability to invert sense of output from GTI to 'BTI'
using a new 'invert' parameter, and added parameters 'tstart' and 'tstop'
- burstfinder: (NEW) Find time intervals in an input FITS binned light
curve that characterize start and stop of a burst.
- mkintensfilt: Fixed error that if there were no time intervals within
the intensity range then the input GTIs were output; added hidden
parameters for rate and GTI extension names as well as time and
rate column names.
********************************************************************************
HEASARC
********************************************************************************
- extractor:
Corrected RATE for dead time when writing spectra if Buildstokes is
true. Also added reading and propagation of DEADAPP keyword.
Fixed error in calculation of the uncertainties for Stokes parameters Q
and U for the UNWEIGHTED and SIMPLE options.
These corrections were available in the patch released on Jan 31, 2023.
********************************************************************************
HEASIM
********************************************************************************
- skyback: Corrections to array indexing
********************************************************************************
HEATOOLS
********************************************************************************
- ftcreate/fcreate: If extname parameter was given, print a warning
if EXTNAME is also specified in the input header keyword file ('headfile').
- ftdiff/fdiff: Fixed handling of long string keywords: need to be
converted to have bracketing single quotes to match how non-long
strings are formatted; changed numdiffs parameter to mode '(h)idden'
instead of '(a)sk'.
- ftmeld: Added 'minkey' and 'maxkey' parameters
- fselect (wrapper to ftselect): Fixed handling the case of an "@"
input file for the 'expr' parameter.
- ftverify/fverify: Warn when an ampersand is found in TTYPE keywords
********************************************************************************
XIMAGE
********************************************************************************
- Addressed malloc issues on newer amd64/x86_64 processors (possibly
only occurring on Fedora OS)
********************************************************************************
XSELECT
********************************************************************************
- Fixed bad access crash from filter time cursor if the plot device
does not have a cursor.
- Added the new hidden parameters when using mkintensfilt.
********************************************************************************
XSPEC
********************************************************************************
Parallelization
- Added parallel processing to leven when usechainrule is
no. Added xset usechainrule option to switch between fast and slow
second derivatives so this can be done without changing Xspec.init
and restarting xspec.
- In the various models which use the apec code added option of
multithreading over the temperatures for the calculation of lines
in the spectrum. Multithreading here is turned on and off using xset
APECMULTITHREAD. The default is off. For the basic apec model
multithreading does not provide a speed advantage. However, if
line broadening is selected (eg using bapec) then multithreading will
speed up the calculation. Also, for models which combine multiple
temperatures such as cooling flow or NEI models multithreading can
provide a significant speed increase.
Spectropolarimetry Plotting
- Changed the polangle plot so that the angles all lie between the
mean angle ±90 degrees. This avoids plots where values jump
between the top and bottom of the plot as the angle wraps around.
- The polangle and polfrac plots now take account of any plot
grouping set. If any spectrum in a data group is in the same plot
group as a spectrum in another data group then all the spectra in
the second data group are added to the plot group for the purposes
of these plots only.
- If any of the polfrac values or errors are calculated as NaNs
then these are replaced by the PLT NO value and will not be plotted.
Mdefine
- Fixed mdefine to handle the case when the user is mdefining
a convolution model which consists only of an xspec convolution model.
- Added support for table models using atable, mtable, or
etable in mdefine expressions.
- Added 2nd to 5th order Legendre polynomials to mdefine
built-in functions.
Updated Models
- bwcyc: Tightened the boundaries of parameters; now treats NaN as positive infinity
- cevmkl, cemekl: Increased lower limits of Tmax parameter
- gabs: Fixed units for Strength parameter
- tbnew: Reduced stderr logging of non-error announcements
Miscellaneous
- The syst command to set model systematic errors can now apply
systematics to individual models (default or named) instead of to
all models.
- The precision of parameter values from tclout(r) has been
increased to 10 figures.
- The error command diagnostic output is now controlled by the
chatter level.
Bug fixes
The following patches for 12.13.0 have been included:
12.13.0a. When the X axis is in energies or wavelengths, plot
delchi and plot fitstat (or plot chisq) are not being scaled
properly. When the X axis is in wavelengths and perhz is on, plot
counts is unable to construct its Y axis label.
12.13.0b. If a model defined using mdefine calls another xspec
model which requires a separate model calculation for each
spectrum, that information is lost.
12.13.0c. plot delchi and plot fitstat/chisq are not being
properly scaled when spectra have multiple models assigned to
them. This also restores the insertion of systematic model error
into plot delchi and plot fitstat/chisq, and adds it to other
plots that were previously ignoring it.
12.13.0d. Fix to mdefine so that it can now include built-in
Xspec convolution models as part of its expressions for additive
and multiplicative mdefine components.
12.13.0e. Added chain proposal uniform deltas [factor] and
chain proposal uniform limits options. For backwards
compatibility, chain proposal uniform defaults to chain proposal
uniform limits.
12.13.0f. The zkerrbb model undercalculates the flux (and luminosity)
by a factor of (1+z)^2.
12.13.0g. The Voigt line model can have a small sub-bin
offset and incorrect shape.
In addition the following bugs have been fixed:
- When the 'energies' command is in use for table models, a crash
may occur if all data sets are cleared.
- The 'tabint' function (for external programs using Xspec's
table interpolation code) is not properly handling the case
when default LOELIMIT and HIELIMIT are in use.
PyXspec Release Notes for version 2.1.2 (Xspec 12.13.1)
New Features:
- New method 'Plot.nAddComps()' for returning the number of add
component plots for a given plot group. This can be helpful for
determining the valid range of the 'addCompNum' input argument to
'Plot.addComps()'.
- Two new methods to take advantage of standard Xspec's new ability to
set systematic model errors for specific models:
'AllModels.systematicSingleModel' and 'AllModels.setSystematicSingleModel'.
See also:
https://heasarc.gsfc.nasa.gov/lheasoft/xanadu/xspec/issues/issues.html
********************************************************************************
XSTAR
********************************************************************************
XSTAR v2.59b:
- Fixed minor errors including incomplete initialization of cross
section array in phint53.f90. Also modified readinf of parameter
file in xstinitable to allow for small float values of emult.
********************************************************************************
IXPE
********************************************************************************
Version 3.1.0:
- ixpecalcarf (NEW): Takes an on-axis ARF (ancillary response file)
or MRF (modulation response file) input and uses the REEF (radial
encircled-energy file) and vignetting data from the CALDB and the
off-axis pointing information from the Level 1 attitude data to
correct the input response file for off-axis vignetting and
extraction region effects.
- ixpecalcfov: New version produces a DS9 region file as output
instead of a FITS image. Removed the "badpix1", "badpix2",
"badpix3", and "exc_graypix" parameters from the interface.
Added a "print_angles" Boolean parameter to control printing
the rotation angles for each detector (defaults to "yes" or True).
Floating point numbers are rounded to five decimal places in the
output region files.
- ixpeinterptemp (NEW): Takes an input Level 1 Detector Housekeeping
file and interpolates values for missing temperature data up to a
user-settable maximum gap in time. This reproduces (using the
default maximum time gap of 150 seconds) the behavior of the IXPE
processing pipeline, which interpolates temperatures before calling
the "ixpegaincorrtemp" tool to minimize the number of events that
are rejected due to missing temperature data.
- ixpemkevt2gti (NEW): Takes an input pre-Level2 event file (i.e.,
after gain correction, spurious modulation correction, and aspect
correction, but before any event column or row filtering), a Level
2 Housekeeping-derived GTI file, a Level 1 attitude file, and a
Level 1 Instrument Housekeeping file to produce the produce the
final GTI for the Level 2 events file, calculate the ONTIME,
DEADTIME, DEADC, and FCW_ENC keyword values.
- ixpeplot_polarization (NEW): Takes the FITS file output from the
updated ixpepolarization tool (see below) and provides standardized
plotting for the Q and U Stokes parameters with error bars, as well
as the associated MDP99 circle. The results of all the input files
and extraction regions are plotted together on the same axes using
matplotlib.
- ixpepolarization: New version allows up to three different input
Level 2 event files. The resulting region file output (if an
input region file is given) defines a polarization vector on the
sky calculated from the combination of all input files. In addition,
the tool produces an output FITS file which defines the Stokes
parameters for each sub-region in the input region file (or a single
entry using all the events if no region file is given) for each
event file, as well as for the sum of all input files. Removed the
"scale" parameter, added the additional files parameters, optional
modulation factor filename parameters for each input file, the
weighting scheme used to determine the Stokes parameters, and the
standard "clobber" option for the output. Floating point numbers
are rounded to five decimal places in the output region files.
In PolarizationRegion.create_line_region, precisions of "02.5f"
on RA HMS seconds were changed to "02.3f", and precisions of
"02.5f" on Dec sdms were changed to "02.2f", to match the decimal
degree precision of 5 decimal places.
- Changes made to the IXPE CALDB are detailed here:
https://heasarc.gsfc.nasa.gov/docs/ixpe/caldb/ixpe_caldbhistory.html
********************************************************************************
MAXI
********************************************************************************
- Corrected error message in mxproduct
********************************************************************************
NICER
********************************************************************************
- niobsermerge (NEW) to combine observation data sets
* nicerl3-spect and nicerl3-lc updated to work with merged data sets
* nimkfmerge now properly sets TSTART/TSTOP/DATE-OBS/DATE-END in
merged outputs
- nicerl2
* update to filtcols=NICERV5 (see niprefilter below for new columns)
* new parameters mingti/erodedilate to avoid shredded GTIs
* new parameters max_lowmem and thresh_range to deal with light
leak situation
* new parameters keep_{forced,overshoots,undershoots}, datamode for
event filtering
* new parameter keep_noisering, noisering_under for filtering
noise ringer events
* improved default verbosity with more user-helpful output
* bug fix to properly pass incremental parameter to prep_mkfiles
* add geomag_tcheck parameter, allow dealing with stale geomag data
- nicerl3-spect / nicerl3-lc
* bug fix to not accept gtifile when 3C50 background model is used
* ignore ufafile/indir/cldir parameters if not needed
* handle EXPOSURE=0 situations more gracefully by returning status=218
* improved default verbosity
* clean up temporary tco plot files
- nicerl3-lc
* allow renormalization of light curve by number of selected detectors
* new parameters detnormtype/detnormbuff/detnormchg to accomodate
normalization
* default is detnormtype=arr52, which scales light curve to equivalent
52-detector array
- niprefilter / niprefilter2
* new NICERV5 filter columns for filter file (below)
* new columns {FPM,MPU}_NOISERING_COUNTS to diagnose noise ringer events
* new column SUN_BODY_AZIMUTH to azimuth of sun in NICER body coordinates
* new columns TOT_LOWMEM_{SCI,FIFO} for total array to diagnose lost events
* new column DELTA_SLOW_LLD to diagnose array-averaged low energy
threshold changes
* bug fix to handle event files with no rows
- niautoscreen
* better graphical display of censored detectors and MPUs with
default chatter
* bug fix for round-robin detection (was more agressive disabling
than should be)
* parameter limits now include min/max as well for overall sanity checking
- nimpumerge
* new parameter fpmsel (=YES by default) to properly manage FPM
selection data
- nibackgen3C50: (v1.2) fixed CEATOR keyword in output (should be CREATOR)
- nicerarf and nicerrmf: handle failures more gently by passing status=218
up to the caller
- nicerclean
* added keep_{forced,overshoots,undershoots,noisering} and data
mode keywords;
* added noisering_under parameter for noise ringer filtering support
- nimaketime
* calculates and prints how filtering stages impact available good time
* add min_lowmem and thresh_range parameters for dealing with light
leak situation
* add mingti and erodedilate parameters for "smoothing" shredded GTIs
- nicerl2 / nicermergeclean / nicerclean:
* remove excplicit parameters from par file, use DEFAULT instead
* for example roundrobbinscr
* new parameters added keep_{undershoots,overshoots,forced,noisering}
to match nicerclean
* new parameters datamode noisering_under parameters to match nicerclean
- nifpmsel:
* handle case of full MPU disabled better
* handle tricky case where all FPMs in an MPU are GTI-selected by same GTI
- nigeodown:
* Removed Perl LWP::Simple requirement (was not used anyway)
* accomodate relative paths
- niprescreen: (NEW) tool for pre-screening NICER event data
* not meant to be called by user
* nimpucal updated to call niprescreen
* new EVENT_FLAGS bit 0x40 for 'noise ringer' events detected
- nicer-l1-metadata: fixed excludepat= Perl (>v5.10) handling and set
default to excludepat=NONE
- niextract-events: Write revised DATE-OBS, DATE-END, and (optionally)
OBS_ID keywords
- nimpucal: optimized calculation of PI_RATIO
- nivigsum: Better handling of off-axis warning when large numbers of
detectors are disabled
- SCORPEON:
* niscorpcalc: Bug fix to properly read SAA/trapped map metadata keywords
* internally factor code into Perl library
- Multiple tasks updated to change overall chatter level and logging
to provide more useful information to the user and less chaff
********************************************************************************
SWIFT
********************************************************************************
BAT:
- batcelldetect: (MPFIT) Bug fix for mix of analytical and numerical derivatives
- batmaskwtevt: Use the more efficient applyQuatToVector()
UVOT:
- uvotlc: Updated skipped parameter mode to 'hl' and help file
- uvotmaghist: Updated skipped parameter mode to 'hl' and help file
- uvotproduct: Updated skipped parameter mode to 'hl' and help file
- uvotsource: Update description of 'skipreason' parameter
- uvotimsum: Added method=VARIANCE and updated EXPOSURE calculation
for weighted sums
********************************************************************************
XTE
********************************************************************************
- hxtback: Updated to use ftselect instead of fselect.
- pcaextspect2: Adjusted background spectrum to properly handle
fractional counts by using HDUCLAS3=RATE; now runs pcaphasyserr
by default
- pcaphasyserr: (NEW) Apply systematic error estimate to PHA spectrum
- pcarmf: Major updates (version 12.0):
* photon energy range increased from 1.5-80 to 1.5-100 keV
* new EPICS2017 Xenon cross sections, which are new default (lbl_sigma=3)
* internal code factorization for readability and maintainability
* gaussian response components are now properly calculated with
inverse gaussian
* avoid unnecessary calculations for zero matrix elements
* per-anode lower level discriminator function revised based on Crab data
* New parameters xe_xsect_{k1,l1,l2,l3,m}_norm to allow adjustment
of EPICS2017 Xenon cross sections on per-shell basis. The "M"
parameter scales M, N and O shell cross sections as a group.
* New parameters pralmy_mult_p{0,1,2,3,4} to adjust propane, aluminum,
and mylar densities up and down as a single unit.
* Adjust layer1-3 density downward by Xenon leak rate.
* Further adjusted the low-energy correction factors to accomodate a
larger range of targets, not just the Crab
* Further refinement of detlld lower level discriminator threshold functions
- pcarmf / xpcaarf: revised response parameters for improved
absolute flux calibration; further updates based on refined
calibration analysis
- pcarsp: (v11.8) Bug fix when computing weighted responses for single layer
- rddescr: new parameter gainroot which helps control extra output files
- saextrct: Modified to handle missing keywords
********************************************************************************
HEASoftPy:
********************************************************************************
New version 1.3:
- Added a patch installer script 'hpyupdate'
- Added a fix for CFITSIO version confilict between AstroPy (through
IXPE import) and PyXspec
- Added timestamp check to read par files from sys_pfiles after a
fresh installation
- Fixed an issue of reading par files with extra white space
- Updated utils.local_pfiles to use tempfile instead of process id
- Added utils.local_pfiles_context to be used as context manager
for local pfiles
- Fixed logging error in IXPE tests
- Moved mode check from HSPTask to HSPTask.read_pfile + code style updates.
- Added explict ISO-8859-15 in the return of subprocess.Popen
********************************************************************************
MISC.
********************************************************************************
- Allow Python 3.6 and SciPy 1.5 which were previously disallowed
- Disallow GNU C++ older than v5.1
- Revised tests for C, C++, and Fortran compilers to alleviate
somewhat the need for setting compiler environment variables
(CC, CXX, FC)
- Reduced use of "-Wl,-no_compact_unwind" linker flag (in place to
silence warnings from Fortran code) to prevent uncaught exceptions
in C++-based tools.
- headas-setup script: Removed extraneous double-quotes from user
PATH variables. Unpaired double quotes in PATH are an increasingly
common problem on WSL.
- Updated XPI parser to accept command lines up to 4000 characters