********************************************************************************
                         RELEASE NOTES FOR HEASOFT 6.13
                               December 21, 2012
********************************************************************************

The HEASoft 6.13 release is primarily driven by updates to the Swift
mission software, but also includes updates to other packages which
have been revised to mirror the current development versions in use at
the HEASARC.

As before, configuration-related changes thoughout the package means that
users who already have HEASoft v6.x.x 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
********************************************************************************

- DEVELOP: Fixed flaw in the way logical columns (TFORM = 'L') in binary
  tables were read which caused an illegal value of 1 in the column to be
  interpreted as a 'T' (TRUE) value.

- Version 3.32:

  * Extended the column filtering syntax in the CFITSIO file name parser
    to enable users and scripts to append new COMMENT or HISTORY keyword
    into the header of the filtered file (provided by Craig Markwardt).
    For example,

     fcopy "infile.fits[col #HISTORY='Processed on 2012-10-05']" outfile.fits

    will append this header keyword: "HISTORY Processed on 2012-10-05".

  * Small change to the code that opens and reads an ASCII region file to
    return an error if the file is empty.

  * Fixed obscure sign propagation error when attempting to read the
    uncompressed size of a gzipped FITS file.  This resulted in a memory
    allocation error if the gzipped file had an uncompressed file size
    between 2^31 and 2^32 bytes.  Fix supplied by Gudlaugur Johannesson 
    (Stanford).

- Version 3.31:

  - Enhanced the CFITSIO column filtering syntax to allow the comma, in
    addition to the semi-colon, to be used to separate clauses, for example:
    [col X,Y;Z = max(X,Y)].  This was done because users are not allowed to
    enter the semi-colon character in the on-line Hera data processing
    system due to computer security concerns.

  - Enhanced the CFITSIO extended filename syntax to allow specifying image
    compression parameters (e.g. '[compress Rice]') when opening an existing
    FITS file with write access.  The specified compression parameters will
    be used by default if more images are appended to the existing file.

  - Modified drvrfile.c to do additional file secrity checks when CFITSIO
    is running within the HEASARC's Hera software system.  In this case
    CFITSIO will not allow FITS files to be created outside of the user's
    individual Hera data directory area.

  - Fixed an issue in fpack and funpack on Windows machines, caused by
    the fact that the 'rename' function behaves differently on Windows
    in that it does not clobber an existing file, as it does on Unix
    platforms.

  - Fixed bug in the way byte-swapping was being performed when writing 
    integer*8 null values to an image or binary table column.  

  - Added the missing macro definition for fffree to fitsio.h.

  - Modified the low level table read and write functions in getcol*.c and 
    putcol*.c to remove the 32-bit limitation on the number of elements. 
    These routines now support reading and writing more than 2**31 elements
    at one time. Thanks to Keh-Cheng Chu (Stanford U.) for the patch.

  - Modified Makefile.in so that the shared libcfitsio.so is linked against 
    pthreads and libm.

- Version 3.30:

  Enhancements

   * Added new routine called fits_is_reentrant which returns 1 or 0
     depending on whether or not CFITSIO was compiled with the -D_REENTRANT
     directive.  This can be used to determine if it is safe to use CFITSIO
     in multi-threaded programs.

   * Implemented much faster byte-swapping algorithms in swapproc.c based
     on code provided by Julian Taylor at ESO, Garching.  These routines
     significantly improve the FITS image read and write speed (by more
     than a factor of 2 in some cases) on little-endian machines (e.g.,
     Linux and Microsoft Windows running on x86 PCs) where byte-swapping
     is required.  This has no effect on big-endian machines (e.g., Macs). 
     Even faster performance can be achieved in some cases by invoking the
     new "--enable-sse2" or "--enable-ssse3" configure options when
     building CFITSIO on machines that have CPUs and compilers that support
     the SSE2 and SSSE3 machine instructions.

   * Added additional support for implicit data type conversion in cases
     where the floating point image has been losslessly compressed with
     gzip.  The pixels in these compressed images can now be read back as
     arrays of short, int, and long integers as well as single and double
     precision floating-point.

   * Modified fitsio2.h and f77_wrap.h to recognize IBM System z mainframes
     by testing if __s390x__ or __s390__ is defined.

   * Small change to ffgcrd in getkey.c so that it supports reading a blank
     keyword (e.g., a keyword whose name simply contains 8 space chracters).

   Bug Fixes

   * Fixed a bug in imcomp_decompress_tile that caused the tile-compressed
     image to be uncompressed incorrectly (even though the tile-compressed
     image itself was written correctly) under the following specific
     conditions:

      - the original FITS image has a "float" datatype (R*4) 
      - one or more of the image tiles cannot be compressed using the standard
        quantization method  and instead are losslessly compressed with gzip
      - the pixels in these tiles are not all equal to zero (this bug does
        affect tiles where all the pixels are equal to zero)
      - the program that is reading the compressed image uses CFITSIO's
        "implicit datatype conversion" feature to read the "float" image
        back into an array of "double" pixel values.

     If all these conditions are met, then the returned pixel values in
     the affected image tiles will be garbage, with values often ranging 
     up to 10**34.  Note that this bug does not affect the fpack/funpack
     programs, because funpack does not use CFITSIO's implicit datatype
     conversion feature when uncompressing the image.

********************************************************************************
                              CFITSIO PERL MODULE
********************************************************************************

Update to version 1.09 of the CFITSIO Perl module:

   http://hea-www.harvard.edu/~rpete/cfitsio/

2012-07-27

        * CFITSIO.pm: $VERSION = '1.09';
        * CFITSIO.xs: sync with cfitsio 3.31

  cfitsio v3.31 added a missing prototype for function fffree which
  conflicted with the existing definition in CFITSIO.xs.

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

- Fixed a couple of problems with the FITS::addTable function.  It was not
  allowing a new table with a pre-existing HDU name even when the version
  number was different.  Also it was not writing the EXTVER keyword when
  the version number was > 1.

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

Library for manipulating spectra and responses, including a Python interface.
A detailed guide to the library and its use when writing programs or using
Python is available in $HEADAS/../heacore/help/headas_guide.pdf.

New in this release:

- Added unit conversions through calcXfactor and calcYfactor routines.

- Added a global SPerrorStack to improve error reporting. Entries
  are added to the stack using SPreportError and can be retrieved
  using SPgetErrorStack which returns a string. SPclearErrorStack
  resets the stack.

- Added modifications to all classes to handle case where user
  writes an extension of some type into a file which already contains
  an extension of the same type. Now writes the new extension with
  an EXTVER keyword set to one more than the highest EXTVER of other
  extensions of the same type in the file.

- Made checkCompatibility routines consistent across classes and
  added a check for units.

********************************************************************************
                   APE / XPI (Parameter Interface Libraries)
********************************************************************************

- Correct bug in which parameter values assigned a value of whitespace
  were instead inheriting parameter values from farther to the right
  on the command line, i.e. par2=" " parfive="yes" was assigning
  "yes" both to par2 and parfive.

- Preserve quoted whitespace (only) in parameter assignments, e.g. for
  the separator parameter in ftlist.

- New APE-based version of pquery to replace old XPI-based version.
  This fixes broken behavior in the following FTOOLS Perl scripts:
  FUTILS: fmodtab; TIME: day2time, time2day; HEASARC: makeregion,
  gisxspec, pspcxspec, wgaxspec.

- Fix XPI parameters tchat and lchat (terminal and log chatter) used in the
  following tasks: EXOSAT: cmadead, exoleuv, exomerge; FIMAGE: fvec2img;
  HEAO1: a2lcurve, a2source, dsdlcurve; HEASARC: nh, sky2xy, xy2sky; 
  OSO8: osopha, osorat; ROSAT: abc, bct, utc.par(abc); XIMAGE: mkcolor,
  mkhratio; XRONOS: autocor, crosscor, earth2sun, efold, efsearch, lcmath,
  lcstats, lcurve, listdata, powspec, timeskew.

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

- atFunctions v3.3 (2012.11.22):

  Bug fix in atSetElement(), atSetElement2(), atSetElement3(), in the equation
  calculating "zzbar", the first time derivatitive of the mean anomaly.  The
  following constants have also been updated/corrected:

                          Original       Revised/corrected
                          --------------------------------
   static double gravc =    .0743666;        .0743668
   static double j2 =      .00108264;        .001082626
 
   static double dycon =      398599.;       398600.
   static double aj2 =    .001082628;        .001082626
   static double aj4 =      -2.12e-6;        -1.616e-6
   static double eradi =     6378.16;        6378.137

  A brief comparison of output between the original code and
  the revised code shows that the changes are small, with errors of the
  order 1-2 km, at the largest.  The biggest changes resulted not from the
  bug fix - a simple sign change - but from updating/fixing the constants.

  Comparison of output:

  Satellite [X, Y, Z] (km)
  -----------------------------------------------------------------------------------------------
                                                  X                 Y                 Z
  bug-fixed_code:  mjd= 56200.0000000000   5182.82270127579  -3213.41407482482   3288.36194675555
  original_code :  mjd= 56200.0000000000   5182.50469061843  -3213.81259433846   3288.47385908001

  bug-fixed_code:  mjd= 56220.0000000000   5263.44591867794  -2967.04673975258  -3408.89612834825
  original_code :  mjd= 56220.0000000000   5262.34360993661  -2969.55376653281  -3408.41672189663

  bug-fixed_code:  mjd= 55555.1234500000   4725.02005822229   4055.33660081729   3078.72232915383
  original_code :  mjd= 55555.1234500000   4727.31468669830   4053.32307841280   3077.85219344827
  -----------------------------------------------------------------------------------------------

  Mean motion / nbar  (radians per day)
  -------------------------------------------
  bug-fixed_code:   nbar =  94.51009698425256
  original_code :   nbar =  94.50989651601652

  bug-fixed_code:   nbar =  94.51152172197288
  original_code :   nbar =  94.51132124659411

  bug-fixed_code:   nbar =  94.33024342746587
  original_code :   nbar =  94.33004379113659
  -------------------------------------------

- aberrator: Update to task version 1.1.  Add 'orbext' parameter
  to support NuSTAR orbit extension named 'ORBIT'.  Add 'attcol'
  parameter to support either POINTING or QPARAM as input (previously
  was only POINTING).

- aspcorr: Pass through tristarid parameters for catalog cross-referencing
  (matchtol, uncount, unmag).

- newmakefilter: Improve loss of precision on J (32 bit unsigned integer)
  columns with large values.

- tristarid: Allow disabling catalog cross-referencing by passing
  matchtol < 0 and uncount < 0.  Bug fix: an externally supplied quaternion
  should not be ignored when there are insufficient sources (3+) to find a
  solution by triplet matching.

********************************************************************************
                                     PLT
********************************************************************************

- Prevent infinite loops when an input plt command file does not exist.

********************************************************************************
                                    PGPLOT
********************************************************************************

- Increase max output filename length to 128 characters (input can be longer).

********************************************************************************
                                    FUTILS
********************************************************************************

- fmodhead: Update to allow handling of HIERARCH keywords.

- ftabcopy: Invert order of Aw to wA in TFORM keyword for binary table output.

- fverify: Removed the overly-stringent test that the WCSAXESa keywords must
  precede any other WCS keyword.  Improved text of error messages about
  illegal characters in keyword name and illegal logical column values.  Fixed
  uninitialized variable bug that affected checks on the WCSAXES keyword.

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

- ftcreate: Fixed bug on 64-bit Linux which caused extraneous TNULL keywords.

- ftverify: Removed the overly-stringent test that the WCSAXESa keywords must
  precede any other WCS keyword.  Improved text of error messages about illegal
  characters in keyword name and illegal logical column values.  Fixed
  uninitialized variable bug that affected checks on the WCSAXES keyword.

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

- barycorr:

   * Add command line option "-clockfile" which allows explicit designation
     of a clock offset correction file.

   * Add command line option "-dtmaxclock" which specifies the maximum time
     difference in seconds before a clock recalculation takes place.

   * Clock offset correction amount is now recalculated if -dtmaxclock is
     set to >0; AND time changes by more than -dtmaxclock value; OR time
     crosses midnight boundary; this accomodates rapidly changing NuSTAR
     clock over long observations.

   * Optimize the orbit code

   * Add NuSTAR as mission supported by barycorr (Andrew Davis, NuSTAR project)

   * Add nCC nustar clock correction

   * Note that the clock correction code is only invoked once at the
     start of the task - for any mission - so it does not capture clock
     offset variations during an observation.  

   * Refactor the nCC code into clock file reader, calculator and driver;
     could be reused for Swift.

- flx2xsp: Relocated from the ftools/heasarc package and rewritten.  This
  task creates spectra and response files for use in XSPEC from an input
  text file of fluxes and errors.  The new version adds two parameters 'xunit'
  and 'yunit' to allow multiple possible units for energy/wavelength and flux.  

- (NEW) flx2tab: Read an input text file with one or more model spectra and
  convert to an XSPEC table model file.

- (NEW) mkfiltrsp: Read an input text with a filter response to make a single
  channel response matrix.

- rgsrmfsmooth: Replacement version of task previously located in the
  ftools/spectral directory.  Smooths an XMM RGS response matrix for an
  extended source.

- (NEW) sdss2xsp: Program to convert SDSS FITS files into XSPEC PHA and RSP.
  Assumes that the SDSS resolving power is 2000 (sigma).

- libgeomag: New library comprised of routines in geomag.f, which was relocated
  from the attitude task "prefilter" to make the routines available to other
  missions.

- SwiftClock.pm: 
  Fixed minor bug in extrapolating in ASCII file (was ignoring last entry).

- swco.dat: 

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

- flx2xsp, raysmith and mekal tasks relocated to heagen and Xspec components.

********************************************************************************
                                   EXTRACTOR
********************************************************************************

  Speed-up modification of fixwmp: decides whether a WMAP bin is in the
  region by checking whether its center is in the region instead of checking
  every pixel in the bin and looking for one which lies in the region.

  For the case of no TLMIN/MAX changed the default upper grade to GMAXSIZE-1
  which is currently 255. This was a change from the arbitrary value of 25
  which caused a problem for NuSTAR since they take grades up to 26 and
  currently have no TLMIN/MAX in their event files.

********************************************************************************
                                    XSELECT
********************************************************************************

- Fixes for the problem that xselect has a tendency to go into an infinite
  loop if a command is given the wrong argument.  Now it nicely passes the
  user back to the main prompt so they can try again.

- Improved plot device code so that filenames can be given for appropriate
  devices (e.g. "set device myplot.ps/cps").

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

Version 12.8.0:

New features:

- Parallel-processing capability for specific tasks has been added
  by way of the new "parallel" command.  This allows the user to
  set a maximum number of processes to spawn when running certain
  XSPEC commands.  Currently the options for parallel-processing are
  limited to use with the "fit" and "error" and commands, though we
  plan to implement more in the near future.  This first implementation
  is considered to be a BETA release, and we look forward to hearing
  your comments and suggestions.

- XSPEC now distinguishes between the 'fit' statistic and the 'test' 
  statistic. The fit statistic is used to find the best-fit parameter
  values and errors while the test statistic is used to provide a
  goodness-of-fit. Consequently, the goodness command now uses 
  the test statistic. Separating these two classes of statistic has
  allowed us to add a number of new test statistics. These include 
  Kolmogorov-Smirnov and the related Anderson-Darling and Cramer-von
  Mises. Also new are the runs statistic, based on the number
  of runs of consecutive positive (or negative) residuals, and the Pearson 
  Chi-Square (pchi) statistic, Pearson's original test statistic.

- The basic Levenberg-Marquardt fit algorithm has undergone a number
  of changes. The most visible is an additional column in the output
  during the fit. |beta|/N is the norm of the vector of derivatives of
  the statistic with respect to the parameters divided by the number
  of parameters. At the best fit this should be zero so provides
  another measure of how well the fit is converging. |beta|/N can also
  be used as the criterion to stop the fit instead of the statistic
  delta although this is still considered experimental.

  Other internal changes to the fit algorithm are to treat the first
  iteration as a special case where only normalizations are allowed to
  change and to add the option of using delayed gratification, which
  can speed up convergence.

- New models: compmag, comptb, rgsxsrc. The latter is reinstated from
  it use in XSPEC v11.

- New plotting command "plot goodness", for plotting a histogram of the
  most recent "goodness" simulation.
  
- New tclout option "goodness sims" .

- Added the option of using the Goodman-Weare algorithm instead of 
  Metropolis-Hastings when using the chains command to run MCMC.

- Added the Whittle statistic for fitting models to power density spectra.

- If a data file is read which has RESPFILE="[]" then the response
  extensions (MATRIX, EBOUNDS) are read from the same file.

- Added support for a new type of model component: a mixing component
  which operates on the model pre-multiplied by the effective
  area. This is similar to the pile-up model type but allows for a
  models which require mixing between multiple spectra.

- Table model files can now have interpolated and additional parameters
  intermixed provided that additional parameters are indicated by
  METHOD=-1 in the PARAMETERS extension.

Enhancements previously released as patches to 12.7.1:

- The "plot chain" has a new "thin" option for thinning the display
  of chain points.
 
- Added a "tclout ignore" option for easy retrieval of currently ignored
  channels.  Similar capability added to PyXspec's Spectrum class.
  
All bug fixes to v12.7.1 released as patches are included in v12.8.0.
In addition the following problems have been corrected:

- The eqpair model used wrongly-sized arrays when multiple spectra were
  used with RMFs having varying numbers of photon energy bins.  Eqpair
  (plus eqtherm and compth) also needed a new default value for its
  optical depth parameter, which fixes the problem if parameter 4 is
  zero.

- A fit parameter which started close to the minimum/maximum could under
  some circumstances be incorrectly pegged at the maximum/minimum. 
  
- When the "error" command was run on a model with soft limits (ie.
  soft limits for some parameters set to a narrower range than hard
  limits), and the best fit value fell within the soft limit region,
  the displayed differences (in parentheses) were not consistent with
  the reported ? limits.

- Problem occurred in apec model when zero width lines were in the final
  energy bin.
  
- Fix to a potential normalization problem occurring in Lorentz model
  with low-energy large-width lines.
      
- When running initpackage/lmod from PyXspec on certain Linux builds,
  local models calling functions in XSPEC's xslib library producing
  unresolved symbol link errors.

New tools:

- "raysmith" and "mekal" tasks relocated here from the ftools/heasarc module,
  and "kbmodels" task relocated here from the ftools/spectral module.

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

Version 2.2.1bn13 - updates since HEASOFT 6.12 include:

- Changes to bring xstar221bk --> xstar221bn:

  - elimination of big ajis rate matrix
  - new r matrix data for al, ni
  - larger data structures

- Increase length of ERRMSG to handle sprintf in Display_FITS_ParmTable()
  when number of values is large (kInterpolated case).

- Fixed error in heatt.f which turned off rrc luminosity.

- Changes to provide better calculation of optically thick models:
  Re-introduction of the tmpp factor in the transfer equation integration.
  Refinement of 2 sided clouds and inclusion of 2 sided escape.

- Changes to allow writing of step-by-step rrc emissivities (in routine
  fstepr3.f) Plus, expand maximum size of energy array to 10^6.

- Updates to allow 10^6 energy points, turbulent and thermal line widths
  to add in quadrature, Al II UV resonance line.

- Fix segfault occurring when XSTARDEBUG was not set in the environment.

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

- day2time: Fixed mismatched 'timezero'-'time' parameter "get".

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

- For logical columns of a binary table, display 'U' (undefined) for illegal
  values (anything other than 'T', 'F', or 0) rather than interpreting the
  values as 'F'.

- Fixed bugs occurring when trying to display slices of a data cube FITs file.

- Avoid memory faults when trying to open a FITs file that has a binary table
  with non-zero variable length array columns but has no rows. 

- Fixed bugs (extra columns, incorrect row selections) in ASCII output when
  saving from a binary table.

- Increased precision in output ASCII file values and displayed table cells.

- Fixed exported text file from vector columns in a binary table (was only
  showing the first element)

- Fixed table "Edit Cell" function on x86_64.

- Fixed plotting in ds9 which was not correctly handling lower case column
  names.

- Fixed fv scripting error in which the existence of a $HOME/.fv directory was
  assumed.

- Allow directory paths that contain parentheses.

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

- hxdmkgainhist_gso:

  * Bug fix due to a change of the text xspec output.

- xisgtigen:

  * New parameter (hidden) 'wingti' (default "no") to maximize GTI
    for the window option or the psum mode. With wingti=yes, telemetry
    saturation is judged for each exposure of window (or each line in
    the psum mode).

- xisrmfgen:

  * New parameters: bi_si_edge_mode, fi_si_edge_mode

  * "bi_si_edge_mode" activates a new response model that improves
     the XIS1 response around Si K edge. "bi_si_edge_mode" is set
     to 1 by default.

  * Running xisrmfgen with "bi_si_edge_mode" of 0 produces the same
    RMF file as before.

  * "fi_si_edge_mode" is introduced just for future use. "fi_si_edge_mode"
    is set to 0 by default.

  * xisrmfgen does not run with "fi_si_edge_mode" of 1.

- Update to com_cli-2.08, to fix compilation with g95 0.93 on Mac OS X.

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

- uvotgcn:
  * Write ASPCORR keyword if aspect correction taken from earlier processing
    of related information.

- uvotevtlc, uvotmaghist, uvotproduct, uvotsource:
  * Write column SATURATED.

- uvotimage, uvotoptsum:
  * Use sec2time instead of swifttime to convert MET to UTC for consistency with
    other Swift software

- uvotimsum:
  * Clarified error message logged when input image is not oriented North up.

- uvotmaghist:
  * Enabled LSS correction by default (there was a duplicate lssfile entry in
    the parameter file which disabled it by default).

- uvotproduct:
  * Using recent versions of ds9 for graphic generation had assorted issues
    with title and label placement and grid features. Added the gridfile
    parameter to allow the user to specify the grid file.  Use a custom
    ds9 v6 grid file if that version is detected.
  * Disallow timezero=0 since it has a meaning other than MET=0 to uvotmaghist
    (which this tool runs).

- uvotskycorr:
  * Disable catalog cross-referencing by default since it is not a necessary
    function of this tool.

********************************************************************************
                                 CONFIGURATION
********************************************************************************

- The installed architecture-specific directory name on Mac OS X (e.g.
  "i386-apple-darwin12.2.0") now accurately reflects the nature of the build
  (i386 vs. x86_64).  Previously the name was derived solely by config.guess
  based on the default state of the C compiler being used.

- The Xspec component - when built in isolation, i.e. without any other mission-
  specific or general utility packages present in the heasoft-6.13 code tree -
  will now default to a 64-bit build (x86_64-apple-darwinX.X.X) on Mac OS X.
  If desired, users may override this behavior to force a 32-bit build by
  configuring with the option '--enable-mac_32bit_build=yes'.