******************************************************************************** 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. HEASoft / FTOOLS Help Desk If FTOOLS has been useful in your research, please reference this site (https://heasarc.gsfc.nasa.gov/ftools) and use the ASCL reference for HEASoft [ascl:1408.004] or the ASCL reference for the original FTOOLs paper [ascl:9912.002]: Blackburn, J. K. 1995, in ASP Conf. Ser., Vol. 77, Astronomical Data Analysis Software and Systems IV, ed. R. A. Shaw, H. E. Payne, and J. J. E. Hayes (San Francisco: ASP), 367. Web page maintained by: Bryan K. Irby HEASARC Home | Observatories | Archive | Calibration | Software | Tools | Students/Teachers/Public Last modified: Friday, 14-Mar-2025 10:27:51 EDT |