Last modified: 1 November 2022


CIAO 2.0 Release Notes



* acis_detect_afterglow * (*new*)

	Summary  identify and flag anaomlies where residual charges on
	the ccd detectors appear as events in consecutive exposures in acis
	event files, aka "Flaring Pixels". It sets specific bits in the
	status column to indicate whether or not an event is considered to
	most probably be valid or a flaring pixel. The criteria used in
	determining this status are user configurable and include- chip
	position (required), fltgrade degradation (optional), and pulse
	height amplitude [PHA] degradation (optional).

	Known Bugs  - Input event list must already have a 32bit status
	word. Re-run acis_process_events on file if needed.

* acis_process_events * -- Produce/update ACIS coordinates, PI, GRADE

	Interface & Algorithm Changes  - added support of sky_1d
	computations for continuous clocking data - bad pixel check moved
	from acis_format_events to acis_process_events - added additional
	calibration database mods - status column changed from 16 bit to 32
	bit to support new bits such as flaring pixels - no longer read
	instrume parameter file to set chipsys,tdetsys,fpsys - wcs for det
	coords changed from TAN to TAN- P - aspect correction code modified
	to use any of the following files- asol, aoff, or soff. - ra_targ,
	dec_targ, and roll_nom now read from obsfile - Changed default event
	defintions to be consistent with reprocessed data including:
	floating point cooridate are now stored in single percision and the
	status column expanded to 32bits. - Removed obsolete qp* parameters

	Bug Fixes  - pi bins now start at 1 instead of zero - subspaces
	(gti extensions) maintained when rerunning acis_process_events on a
	level 1 event filt - write out tlmin/max for grade and node_id columns

* aconvolve * -- Convolve an N-dimensional image with a kernel

* acrosscorr * (*beta*)

* ahelp *

* apowerspectrum * (*beta*)

* asp_apply_sim * -- Add the SIM offsets to the optical axis offset

	Bug Fixes  - fix the problem with the sign of ROLL_OFFSETS being

* asp_calc_offsets * -- Apply offsets to L1 aspect solution

	Interface & Algorithm Changes  - Full parameter history added to

	Known Bugs  - Given a stack of files with a blank line at the end
	of the stack will result in an output file that does not close
	properly and cannot be used. Users can check their stack's with
	the"stk_build" tool and remove any trailing blank lines.

* asphist * -- Bin the aspect into a 3D histogram

	Interface & Algorithm Changes  - create an empty file when no gti
	is found - rearrange the parameters and read all of them in at once

	Bug Fixes  - fix the problem with bins off by 1 res. element -
	fix SEGV problem if GTI extname is not specified in 'gtifile'

* axbary * (*new*)

	Summary: applies barycenter corrections to all times using the
	orbit ephemeris file orbitFile, ra, dec, and refFrame "FK5" (DE200)
	or "ICRS" (default; DE405).

* celldetect * -- Uses a "sliding cell" to search for sources

	Interface & Algorithm Changes  - Now accepts an exposure map
	(parameter "expstk"). - New parameter "ellsigma" controls size of
	ascii ellipse regions. - New parameter "regfile" specifies name of
	ascii regions file. -New source output column "expo_ratio" gives
	ratio of source's detect region exposure to background region
	exposure. - New parameter "expratio" suppresses ascii regions of
	sources whose expo_ratio is below specified value. - Slightly
	different binning for recursive blocking - source positions will be
	slightly different. - Source list has columns suitable for DM
	spatial filtering (COMPONENT, SRC_POS, ROTANG, etc). - Source SNR
	test is now SNR > = threshold instead of SNR > threshold. - Source
	position columns are now double precision. - "stall" parameter has
	been deleted. - Default encircled energy is now .9 (which is
	actually .8)

	Bug Fixes  - A bug which would cause celldetect to fail on HRC-S
	was fixed. - Bug in net_counts_error and bkg_counts_error has been
	fixed. - Bug in cell sizes for HRC-S fixed. - Fixed bug in source
	list FITS Header.

* csmooth * -- Adaptively smooth a 2-D image

* dmappend * -- Append multiple blocks/extension

	Bug Fixes  - add messages to remind users appending different
	extensions - negative signifigances can be reported when the maximum
	smoothing scale is reached.

* dmarfadd * -- Add multiple ARF files together weighting by exposure

	- Interface & Algorithm Changes  The tool now allows an arbitrary
	number of ARF to be added. The former restriction of 8 files is
	removed. - Minor changes to the documentation to clarify what
	happens in particular situations. - allow a non grating file to go
	through without requiring the TG_(M,PART,SCRID) keywords.

* dmcontour * (*new*)

	Known Bugs  - The region file created by dmcontour only works as
	a filter for simple regions. If the region has "holes" then the
	filter created will not work. Users can display the contours with
	ds9 to ensure that they have a "simple" region.

* dmcoords * (*new*)

* dmcopy * -- Filter and bin tables and images

* dmextract * -- Make a histogram table file

* dmgroup * (*new*)

	Summary: Tool to group a specified column in a table, with
	various options: number of bins, number of counts, SNR selection, or
	an adaptive approach.

	Known Bugs  - Will have problems when the number of bins exceeds
	the number of rows in the file. This will typically not be a problem
	for users working in 'channel' space. - the grp_stat_err column is
	incorrect when the following grouping options are used: NUM_CTS,

* dmgti * -- create a Good Time Interval (mtl_build_gti)

	Interface & Algorithm Changes  - added support for ulong/ushort.
	- added status column to identify which limits were exceeded. -
	added second extension with limits used.

	Bug Fixes  - detected/fixed bug in handling of last row.

	Known Bugs  - Spaces on the command line may not get interpreted
	correctly. Try allowing the tool to prompt. - Error messages will be
	reported for 'mtl_build_gti'.

* dmhedit * -- edit file headers

	Infrastrucutre & Algorithm Changes - Added parameters 'unit' and
	'comment' for use on the command line (in addition to the previous
	functionality in which the unit and comment were included within the
	value ) - Removed 'kernel' parameter - Made more robust regarding
	whitespace within a filelist . - Type and bounds checking when
	updating a keyword.

	Bug Fixes  - Bug fix -file access checking enhanced. - Bug fix -
	keywords containing characters and digits could not be added.

	- any *new* numerical value keyword will get stored as a floating
	point number. Existing keywords will retain their datatype. - "/"'s
	in the "value" parameter will be treated as separators for the
	comment, so things like full path names cannot be written.

* dmimg2jpg * (*new*)

	Summary: Generates a JPEG and an optional encapsulated level 1
	postscript file from a FITS file. The tool can read in CIAO region
	files and place overlays in either an overlapping mode or a merged
	region mode. Grid and coordinate markings can be added as well as
	source labeling with numbers. The font marking is primitive, but
	allows for quick looks at the image on the command line. Given three
	inputs, dmimg2jpg can also create a three color image.

	Known Bugs  - Printing the postscript images is known to take a
	long time.

* dmimgcalc * -- perform arithmetic on images

	Known Bugs  - Needs to have exact numerical match to preserve
	WCS. There is a logical match of WCS from the output of dmcopy and
	mkexpmap, but the exact values don't match, so the WCS is lost.

* dmimghist * (*new*)

	Known Bugs  - puts all pixels above max and below min into max
	and min bins respectively.

* dmkeypar * (*new*)

	Used to retrieve header keyword information. When the user supplies
	a filename and a keyword, dmkeypar will write the value, datatype,
	unit, and comment to its parameter file. COMMENT and HISTORY are
	invalid keywords.

* dmlist * -- list contents or structure of a file

* dmmakepar * -- Write header keywords to a parameter file

	Interface & Algorithm Changes  - The verbose parameter has
	changed to an integer value between 0 and 5.

* dmmakereg * (*new*)

* dmmerge * -- Merge two or more compatible tables into one

* dmpaste * (*new*)

	Known Bugs  - will not report an error if column with same name
	already exists, and will not paste the new column.

* dmreadpar * -- Add parameters to a file header

	Interface & Algorithm Changes  - The verbose parameter has
	changed to an integer value between 0 and 5

* dmrega2fits * -- Convert a grating ASCII region into a FITS format

* dmregrid * -- rebin a stack of 2 dimensional images

	Interface & Algorithm Changes  - Speed enhancements for both the
	'exact' and 'approximate' algorithms.

	Bug Fixes  - updating the previous 'exact' algorithm also fixed a
	bug which occasionally caused a segmentation fault for certain
	combinations of parameters . - if the binning specification is given
	by a stack in which the second (or later) item results in a greater
	number of output pixels than the first binning specification, a
	segmentation fault resulted. The tool now uses the number of pixels
	resulting from binning the first image, and gives a warning message.

* dmsort * -- Limited capability table sort

	Known Bugs  - should only be used in the defined threads. Its is
	known to have serious problems (and serious limitations) in general
	analysis sessions.

* dmstat * -- Computes common statistics for table and images

* dmtcalc * (*new*)

	Summary: Very powerful table calculator. Works with all data
	types, array and vector columns, as well as a number of operations
	and functions. It creates a new file from a stack of input files,
	creating and populating any new columns that the user defines in the
	series of arbitrarily complex arithmetic expressions input via the
	expression parameter. Supported operations include arithmetic,
	exponentiation, boolean, and smoothing. Supported functions include
	those in the standard math library and conditional expressions.

	Known Bugs  - Currently will create a TLMIN/MAX == 0 if the input
	columns do not already have mins and maxes attached to them.

* dmtype2split * (*new*)

	Summary: Create a type 1-like output file for each row specified
	of a type 2-like input file. Each of the specified rows in the input
	file is copied to a separate output file. If the input file is a pha
	file, keywords required by the OGIP format are also written;
	otherwise, generic keywords are written. For each scalar column in
	the input, the coordinate keyword information is written, and the
	datatype, value, and unit are written as a keyword. For each input
	column that is an array, a column is created from the datatype,
	value, and unit; the row of input data is read and written to the
	output column.

* dmwritefef * -- create a fits embedded function file

* get_src_region * (*new*)

	Summary: determines a background threshold value and then output
	regions that have counts higher than the background threshold value.

	Known Bugs  - The tool can only use the x, y physical coordinates
	of the source regions. So if the input is an event file, it must
	have the x and y columns, and the wcs infomation in the header.

* hrc_process_events * -- Correct HRC event positions, times, PHA, etc

	Interface & Algorithm Changes  - added support for float data
	type for det and sky columns - updated TLMIN/TLMAX for sky and det
	columns - add the tap ring correction - added event "flatness" test
	- added event saturation test - added event "hyperbolic" test -
	display the badpixfile warning before processing events. - Keep the
	amplitudes as 'double' for all corrections - Saturation coeffs are a
	function of amp_sf - set pi=pha if no gain map is used. - bugfix to
	the gainmap off by one - remove the hidden parameters (chipsys,
	tdetsys, fpsys) from the code and use the pixlib calls to set these
	values for different detector.

* lightcurve * -- Bin source and background events by specified time

	Bug Fixes  - a non-time-sorted file will not break the tool as it
	does before. The tool will give out warning and list the row numbers
	of the data that are not in time order.

* mkarf * -- Generate an ARF for Chandra images

	Interface & Algorithm Changes  - Support for ACIS Windows
	(maskfile) - clobber, maskfile parameters added. - Energy grid
	specified via `engrid' parameter. This gives the user more
	flexibility in choosing an energy grid.

	Bug Fixes  - avoid coredump if no bad-pixel file was found

* mkexpmap * -- Generate a Chandra imaging effective exposure map

	Interface & Algorithm Changes  - The exposure map be normalized
	by the exposure time to produce a cm^2 map, or left unnormalized
	(cm^2-sec). - gridding specification changed to match other tools
	(engrid) - clobber and normalize parameters added.

	Bug Fixes  - sign error involving RA CDELTA corrected. -
	axis-group name changed from XXX to SKY.

* mkgarf * -- Generate a Chandra Grating ARF for one detector element

	Interface & Algorithm Changes  - New parameters: clobber,
	osipfile, maskfile - Energy grid specified via `engrid' parameter.
	This gives the user more flexibility in choosing an energy grid. -
	Support for ACIS Windows (maskfile) - Support for order sorting
	tables (osipfile)

	Bug Fixes  - typo affecting the grating ARF for HRC fixed

* mkinstmap * -- Generate a Chandra instrument map

	Interface & Algorithm Changes  - Support for ACIS Windows
	(maskfile) - New parameters: clobber, osipfile, maskfile - Support
	zeroth order grating instrument maps (grating)

	Bug Fixes  - avoid coredump if no bad-pixel file was found

* mkoif * - Create an observation index file (oif.fits) used by the
	/Firstlook/ GUI.

	Known Bugs  - does not work on Linux platforms. Users can only
	use the observation index file that came with their data distribution.

* mkpsf * -- Extract a point spread function

* mkrmf * -- create response matrix file

* punlearn * -- Resets tool parameters to their default values

	Known Bugs  - reports of problems when running on parameter files
	with blank lines, eg ardlib.par. If needed, run paccess to determine
	the path to the parameter file and then just remove the file.

* reproject_events * (*new*)

* stk_build * (*new*)

	Used to build a stack from a string, a file, or a combination of the
	two. Output is to stdout, stderr, or a file. Useful for scripts.

* stk_count * (*new*)

	Used to count the number of elements in a stack. Output is to the
	stk_count parameter file. The stack can be defined by a string, a
	file, or a combination of the two.

* stk_read_num * (*new*)

	Used to read the N'th element of a stack. Output is to the
	stk_read_num parameter file. The stack can be defined by a string, a
	file, or a combination of the two.

* tg_create_mask * -- Create a region file to define spectrum sky

	Interface & Algorithm Changes  - The value of the ROLL_PNT header
	keyword instead of the value of the ROLL_NOM header keyword will be
	used to calculate the angle of the grating mask. If the ROLL_PNT
	header keyword is absent, the tool will give out a warning message,
	and the value of the ROLL_NOM header keyword will be used. - The
	value of the DEFOCUS header keyowrd instead of the value of the
	SIM_X header keyword will be used to calculate the radius of the
	mask of zeroth-order source. If the DEFOCUS header keyword is
	absent, the tool will give out a warning message, and the value of
	the SIM_X header keyword will be used. - The LESF (Drake Flat)
	parameters (s1_drk1_x, s1_drk1_y, s1_width_drk1, s1_length_drk1,
	s1_angle_drk1....) are removed, since they are not used by the tool.
	- The default value for the input_psf_tab parameter is now set to

	Bug Fixes  - Fixed a bug that occured when the input data have
	the LETG and CC MODE combination. - Fixed a bug that occured when an
	observation has a small roll angle.

* tg_resolve_events * -- Assign events to spectral orders

	Interface & Algorithm Changes  - Can accept a new type of
	response matrix (rm) file. The new rm file's energy data are
	spatially dependent (i.e depends on chip coordinates). Also, the new
	rm file's energy limits are given absolutely, instead of as
	differences from the peak. The old type of rm file can still be
	used. - The wcs information for detector coordinates are written out
	using a TAN-P transform instead of a TAN wcs transform. - Out put a
	new column, Sky_1D, if the data are ACIS continuous clocking data. -
	Added support to propagate TLMIN/TLMAX from input evt file. -
	Centralized usage of constants to use DS lib value. - The acaofffile
	and alignmentfile parameters have been changed from hidden type to
	auto type parameters. - The default value for the rmfile parameter
	is now set to CALDB. This means that the tool will look at the
	header of the input data and then use the appropriate response
	matrix file to process the data. - The qp_internals, qp_pagesize,
	and qp_bucketlen parameters have been removed. - The stdlev1
	parameter has been replaced by two new parameters (stdlev1_ACIS and
	stdlev1_HRC). stdlev1_ACIS holds the ACIS event format definition
	string, while stdlev1_HRC holds the HRC event format definition
	string. There are significant changes in the default event format
	definition string. For example, the data type of tg_r, tg_d, det,
	sky x, sky y, tg_m, tg_lam, tg_mlam have been changed from double to
	float. - The default value of the eventdef parameter has been
	changed from ")stdlev1" to ")stdlev1_ACIS".

	Bug Fixes  - Bug fix for ACIS Graded data (CORN_PHA column not
	getting propagated).

	Known Bugs  - The output of tg_resolve_events doesn't have all
	the ONTIMEn & related header keywords.

* tgdetect * -- Locate 0-order image (tgmatchsrc and tgidselectsrc)

	Interface & Algorithm Changes  - Updated with new celldetect
	parameters. - tgmatchsrc max_separation parameter changed from 1 to
	3 arcsec.

	Known Bugs  - No filter can be applied to the input or reference
	soruce files.

* tgextract * -- Bin grating wavelengths column

	Interface & Algorithm Changes  - Added some new background region
	binning parameters, so background up and background down regions for
	binning the spectra no longer have to be symmetric to each other. -
	Removed the dependency of HEG grid on MEG grid. So HEG grid is no
	longer scaled according to the ratio of MEG and HEG preiod. New
	parameters are added for the user to specify the HEG, MEG and LEG
	grid. - Added function to log all the tgextract user input
	parameters in the output file. - Added the inregion_file parameter.
	So user can specify the source region, background up region and
	background down region in the input region file. Thus the tool can
	bin non-retangular regions. For example, a bow-tie shape region can
	now be defined for extracting HRC-S/LETG spectra. - The value of the
	output EXPOSURE keyword is now the average value of the input
	EXPOSURn keywords. - Added the TG_PART column to the output region
	extension. - Added the BACKSCUP and BACKSCDN keywords. If the output
	spectra have different BACKSCAL value, the BACKSCAL keyword will be
	promoted to a BACKSCAL column in the output SPECTRUM extension.
	Ditto for BACKSCUP and BACKSCDN. - Changed the POISSERR keyword from
	string type to boolean type. Also set its value to FALSE. - User
	cannot enter HESF as the value of the tg_part_list parameter, since
	this instrument is not supported. - The bin_units parameter can only
	be set to angstrom, eV, or keV. Degrees, pixel and mm are not
	supported. - The tg_d_units can only be set to degrees. Arcsec, mm
	and pixel are not supported. - The min_bkg_tg_d and max_bkg_tg_d
	parameters have been replaced by the min_upbkg_tg_d, max_upbkg_tg_d,
	min_downbkg_tg_d, and max_downbkg_tg_d parameters. - The min_bin,
	max_bin, bin_size and num_bins parameters have been replaced by the
	min_bin_leg, max_bin_leg, bin_size_leg, num_bins_leg, min_bin_meg,
	max_bin_meg, bin_size_meg, num_bins_meg, min_bin_heg, max_bin_heg,
	bin_size_heg, and num_bins_heg parameters.
	Bug Fixes  - Fixed bugs in ACIS + LETG extractions. - Fixed bugs
	in background binning. - Fixed bugs in the output region extension.
	- Fixed the HEG binning bug. - Fixed the tg_d limits bug. So now if
	user's input min_tg_d is larger than max_tg_d, the tool will use the
	default min_tg_d and max_tg_d.

	Known Bugs  - Command line filter cannot be used with the input

* vtpdetect * -- Voronoi Tessellation and Percolation (VTP) source

	Interface & Algorithm Changes  - Added WCS outputs - New
	parameter "ellsigma" controls size of ascii region outputs. - New
	parameter "regfile" specifies name of ascii region output file. -
	Debug file outputs are no longer generated. - Source list has
	columns suitable for DM spatial filtering (COMPONENT, SRC_POS,
	ROTANG, etc).

	Known Bugs  - need to keep using "[cols x,y]" syntax for event

* wavdetect * -- Mexican-Hat Wavelet source detection (wrecon & wtransform)

	Interface & Algorithm Changes -The parameter "bkgerrinput" is
	now a boolean rather than a file name. If true, the error image is
	expected in the [2] extension of the input background image. - The
	"mask" parameter has been removed. - New parameter "ellsigma"
	controls size of ascii region outputs. - New parameter "regfile"
	specifies name of ascii region output file. - Source list has
	columns suitable for DM spatial filtering (COMPONENT, SRC_POS,
	ROTANG, etc). - Source position columns are now double precision. -
	Now accepts a Chandra exposure map. - A precomputed background map
	will now be accepted (parameter "bkginput"). - "stall" parameter has
	been deleted. - A new background extrapolator has been added, which
	reduces the number of false detections at large wavelet scales near
	detector edges. - Units have been eliminated from RATE outputs.

	Bug Fixes  - Incorrect source ellipse inclinations fixed. Slight
	algorithmic changes in computation of default normalized background.
	- A bug with non-symmetric exposure maps has been fixed. - Bugs have
	been fixed which affected background error computations when 1
	iteration was specified. - A bug in PSF lookup for gratings data was
	fixed. - Bug is source property computation fixed. Bug occured when
	PSF size for source was greater than the largest wavelet scale size



In addition to numerous bugfixes and generally greater stability, the primary
UI contributions to CIAO2.0 are:

  o The integration of an interpeted language (S-Lang) into CIAO, which
    greatly increases the analysis capabilities of sherpa/chips/etc by
    providing an interactive, IDL-like interface at the commandline.

  o This work also formed the basis for the introduction of spectroscopy
    analysis into CIAO (current tool name: GRASP, modeled in part on the
    ISIS tool developed at the MIT/CSR branch of the CXC)

  o Considerably improved interaction between our analysis applications, by
    encapsulating the notion of an "analysis session" into a class library
    that is linked into each of our applications.

  o Switched from directly using the SM executable for plotting to using the
    callable SM library instead.

  o Considerably improved configuration of portable end-user distributions.

  o GUIs now utilize parameter files to store persistent preferences.

  o Several prism improvements, including 2 new XPA commands for GRASP,
    solidified keyword editing (using dmtlib now instead of dmlist), support
    for 2D slices (along z=1) of 3D images, providing structural info for ND
    images (N>3)

  o Several FiltWin improvements, including new menu entry and commandline
    switch for loading data files, undo/redo fixes, and better ciao.par usage.

  o Improved interaction of GUIs through Analysis Menu

  o Private colormaps in GUIs

  o Faster chips performance and improved configuration of runtime files

  o RMF and image I/O in varmm; better chips parsing of SLang scripts, BUT
    until the sherp parser can be generalized more the scripts passed to 
    "evalfile()" may contain ONLY SLang and chips commands.

  o Many minor tweaks to remove compiler warnings and improve port stability.

Greater detail on these and other improvements is given below.

Infrastructure Details

  The Varmm [(Var)iables, (M)ath, and (M)acros] library is a moderately thin
  wrapper around S-Lang, and with it provides:

  o Access to a powerful IDL-like interpreted language, with a wide range
    of arithmetic and programming capabilities.
  o The ability for chips to execute scripts containing a mix of chips and
    SLang commands, and for sherpa to mix sherpa, chips, and SLang.
  o A C++ object interface to interpreted variables created interactively 
    during analysis, which permits applications like chips and sherpa to
    easily utilize those variables for plotting/fitting.
  o A rewrite of most of the sherpa I/O routines to enhance performance and
    modularity (using DM where appropriate).  These routines can be used to
    create either interpreted SLang variables or straight C++ objects, and
    currently support:

        - ASCII
        - FITS/IRAF bintable
        - FITS/IRAF images
        - ARF/RMF/PHA

    The full range of DM filtering is supported, as well the ability to
    skip arbitrary numbers of table rows when reading any file format.
  o A replacement for GNU readline, which is less functional but free of
    restrictions which formerly prohibited callable SM from being linked
    directly into CIAO analysis applications.
  o RMF and image I/O
  o Faster and more robust SLang script reading in chips (but as noted above,
    sherpa still needs more work)
  o Better portability to Dec/Alpha and Linux
  o See below for related prism work (new XPA commands)
  o Bug fix to PHA I/O  (aneta bug report, 6/16)
  o Changed behavior of varmmGet so that variables that may be resized and
    still be referenced in chips by their original name (dburke, 6/16)
  o writeascii() I/O function added
  o nominal/imperfect arrow key support added to VI mode
  o tab completion added, and command history mechanism enhanced
  o added ability to retrieve varmms (for plotting/fitting/etc) by
    namespace ID (eg: chips> curve x myNSpace->x y myNSpace->y)
  o Editor/Key binding preference for varmm readline taken from
    editor parameter in ciao.par

  These new capabilities are relatively vast in scope, and thus will
  need some time to document completely.  Until then, users can look
  in ~mnoble/varmm.emails for more detail and explicit examples.

  The interaction of our analysis GUIs/apps has been enhanced by encapsulating
  the notion of an "analysis session" into a class library that is linked
  into each of our applications.  This class object manages a shared memory
  segment and provides/supports:

  o Multiple instances of chips running concurrently
  o Imager exits ONLY when the application which invoked it is terminated or
    when a 'session' is exited (thus non-CIAO invocations of ds9 or SAOtng 
    are NOT terminated when the user exits a CIAO applications)
  o Ability to save the state of a session from filtwin or prism
  o Ability to restore a session provided the user can access all of the
    data files
  o Better communication between the GUIs and toolagent (eg, tools invoked
    from prism will default to running with the file currently being
    viewed within the prism window)
  o The ability for multiple users to login to a single machine under a single
    login (eg, dutysci) without interfering with one another, provided each 
    uses a distinct DISPLAY.
  o Introduced a ciao.par parameter file, which allows the user to set 
    various session-wide options like: the number of filter states to save
    or the maximum number of applications to run in a session, etc.
  o Updated session_save option to utilize ciao.par clobber parameter
    if output file already exists
  o Updated session_save menu to generate a warning dialog if unable to
    save the session info
  o Some internal enhancements for shared memory segments / session IDs.
  o Session management utilities:
      cxc_shmutility  renamed to ciaoshmem; -f option added to display full
                      ciao session configuraton.
      session_save    renamed to   ciaosave
      session_start   renamed to   ciaostart
  o See parameter files section below.

  GUI library

  o CIAO guis can now utilize a private colormap. The $HOME/.CXCdefaults
    forcePrivateColormap entry may be set to True, False, or dynamic (the
    default), which respectively allow the the GUIs (eg, prism) to always
    use a private colormap, never use a private colormap, or switch to a
    private colormap at runtime if necessary.   This should address most
    of the "GUIs are invisible/unusable" problems that have historically
    occurred when the X colormap has been hogged by other applications
    (like Netscape).

    NOTE: This has been tested in mwm, twm, fvwm, and CDE, but the "right
    thing to do" is ultimately a subjective question best decided by
    individual preference.  In essence we have simply traded one ugliness
    (whitewashed GUIs from empty colormaps) for another (psychedelic flashing
    when moving the mouse from one app to another), although majority
    opinion deems the latter less unsavory.
  o Fixed the Analysis menu pulldown's 'launch filtwin' option so
    that the application gets launched and an appropriate status
    message is reported
  o Updated the Analysis Pulldown menu's launch commands so that the
    imager, browser (prism), and filtwin are launched with the data
    that is loaded in the invoking application
  o File selection dialog behavior for initial directories and seach patterns
    is now dependent on the settings of parameters in ciao.par
  o Information/Error dialogs updated to display application name.
  o Old parameter files automatically detected and replaced with latest
    system version (previous is copied to a .bak file).
  o Exiting from the window manager (for example using the window's close
    menu option or {alt}{f4}) now performs the exit cleanup that occurs
    when an application is exited from the app's file pulldown menu exit
    option. Previously, the application terminated but the application's
    cleanup procedures were not invoked.


  CIAO2.0 ahelp commandline option synopsis:

  -s [subject][..context] :
  -m [subject][..context] :
  -l [subject][..context] : short,medium,long versions of help output

  -w [subject][..context] : use web browser to display information

  -k keyword              : like appropros (searches for subjects related
                            to specified keyword)

  -s -f file              :
  -m -f file              :
  -l -f file              : processes file and display as formatted ascii
                            text in short, medium, and long formats
  -f file                 : equivalent to -l -f

  -r                      : used to maintain the help database; creates
                            index files necessary for search/retrieval

  * Format of xml files changed - ENTRY entity has only four attributes:
    key, context,refkeywords and seealsogroups.
  * New entities have been added to dtd:
    ADESC       - like DESC but appended after PARAM block ,
    HREF        - used to keep information for hyperlinks in xml docs
                  translated to HTML
    VERBATIM    - used to suppress formating of text within this block,
    XMLONLY     - text used together with PASSTHRU to specify alternative
                  text for PASSTHRU to be displayed only in ascii mode.
  * PARAMINFO entity removed as it was duplicating functionality of PARAM
  * ADESC and PARA can have titles via title attribute
  * ahelp keeps a database of subjects and references, which fosters
    efficient dynamic help search/retrieval
  * maintenance of xml files has been reduced via ahelp database reindexing
    facilities (-r option)
  * ahelp automatically creates intermediate web pages while reindexing
    database if mulitple ADDRESS blocks are encountered
  * extensive checking for compliance with the current dtd
  * Some changes to the public C++ ahelp interface (see the code)

Data Analysis Details


  o Integrated session library: 
    - ability to receive updates from multiple instances of chips/prism
    - dynamically updates list of currently running chips/prism processes
    - ability to save/restore state of the entire analysis session
  o Now displays a variable number (scrollable) of table columns, rather
    than simply the static Temporal/Spatial/Housekeeping filter fields.
  o When displaying a FITS table: column data type, tlmin, tlmax, and
    units displayed through tooltips
  o Better interaction with ToolAgent, feeding it the current file and
    last filter which was applied.
  o Ability to restore sessions via a filtwin commandline option
  o Only one instance of filtwin may be invoked per analysis session
  o Persistent user preferences are saved across invocations to filtwin.par.
  o Uses ciao.par filtwin_init parameter to determine from where initial
    data will be loaded {browser, imager, plotter, none}. Filtwin will try
    to use the lowest available instance of the specified application.
  o Updated to allow the user to specify an initial data file or a session
    resume file as a commandline option. Starts a restore if the file is
    a session file, otherwise the filename is put in the file text field
  o Update filtwin instantiation from chips so that undo/redo work
  o Update filtwin to prevent the filter field scroll window from flashing
    all of the columns of a file when an undo/redo is done on a file for
    plotting (only the axes columns should be displayed)
  o Update so that an 'apply' command to a table file attempts to image the
    data instead of automatically assuming that the data should be plotted.
  o Renamed 'Plotter' in the options toggle to 'Plot Zoom' to better indicate
    that it performs a chips pickpoints operation.
  o Feedback provided when a user performs a save data command.
  o If three axes are provided in the 'Cols' field, hitting [APPLY] will
    plot col1 as X  vs  col2 as Y  with col3  as the errs.


  o Switched from using IPC-based communication with background SM process
    to using callable SM library.  This makes plots from multiple apps
    independent of one another, should provide a substantial memory savings
    for large files, generally increase performance, and simplifies the 
    software, configuration, and distribution.
  o Integrated Varmm interface to S-Lang interpeted language into Chips.
    This allows users to plot directly from interpreted variables created 
    during interactive analysis, write powerful functions/scripts, and 
    provides a broad amount of other arithmetic and programmatic capability.
  o no longer need to write an .sm.cxcds to $HOME
  o Engine and Enginemode commands disabled.
  o API now supports curve/contour/surface creation from float*, double*,
    short*, and long* arrays (previously only float* was supported)
  o Improved performance of contour plotting.
  o Several bugfixes:
    - ds9 would display blank screen if an absolute filepath not provided
    - at exit time threads no longer generate "killed" message on Linux
    - minor fixes to axes width, width, ln width, and errs commands
    - small parsing fixes 
  o Info command has been updated to display more information
  o SAO/DS9 2.0 is bundled with CIAO2.0, and SAOtng has been removed
    from the package.  Users may still utilize SAOtng (1.9.1 or later) if
    they have it installed on their systems and edit $HOME/.CXCdefaults to
    swap the default imager entry from ds9 to saotng.


  o Now exits when it receives a close request from the window manager.
  o Generated lightcurves now display err bars.
  o The name and path of generated lightcurve/spectrum files is echoed.

  Online Help

  o Online help output is automatically sized to fit the screen width.


  o Now utilizes dmlist for header keyword display
  o DataModel-visible header keywords may now be edited.
  o Easier and smoother navigation:
      - added Navigate menu and more useful keyboard accelerators
      - no longer pops up annoying "working ..." window in average case,
        but only when large # of rows is being scrolled
  o Attempting to open files that cannot be read by DM no longer leaves
    prism in an undefined, semi-unusable state.
  o Removed references to status, error, and quickhelp "external message
    files," to simplify the codebase and make it easier to debug/maintain
  o Bulk column/row deselection
  o Persistent user preferences are saved across invocations to prism.par.
  o Added "moveto {block#}" XPA command to enable switching the current
    block being displayed via remote control.
  o Added "selected rows|cols" XPA command to retrieve (via remote control)
    the rows/cols currently selection-highlighted
  o Support 3D image reading by taking 2D slice along z=1
  o Correctly reports structure of 3D, 4D, etc images, instead of issuing error
    (images > 3D, however, will still not be read).
  o Also, image info is presented more naturally/correctly as dim1 x dim2 x ...
    instead of treating all images as 2D tables of "dim1 rows, dim2 cols"
  o Directly uses dmtlib to display keys (instead of dmlist executable) to
    to ensure header display is always in-sync with file contents.
  o Clear out the data matrix when a block is either empty or cannot be read.
    Previous behavior left the old data intact
  o Small improvement to image I/O performance.
  o Several bugfixes:
      - first cell of an expanded vector column no longer 'selected'.
      - eliminated XmScrollBar warning messages when changing to files
        with fewer columns than the currently displayed file.
      - fixed segv seen when toggling between two extensions in FITS file

  o Toolagent behavior now configurable via ciao.par 'toolagent' parameter.
    If set to DISPLAY, a GUI taskmonitor is launced to display the stderr
    and stdout of the launched tool. If set to 'BACKGROUND', only the tool
    exit status is displayed, in an small popup window.

Portable System Details


  o This release will eliminate the admittedly clumsy convention of using
    CXCDS_ROOT_{system} as the base CIAO install directory, and instead 
    offers the user the ability to name this directory whatever they 
    please.  This will also simplify the installation by reducing the number
    of times the user must change their current working directory, as all 
    files can now be untarred from the same level in the tree.  
  o More intelligent searching of X and Motif/LessTif libraries, which
    also helps reduce the size of our Solaris OTS.
  o Supports multiple types of distributions (CIAO analysis / NRA3), while
    making it easy to add more.

  Building from source:

  We now utilize more of the power of Autoconf/Configure scripts.  The 
  user can now customize the configuration by using any of the following:

  --x-includes=DIR        X include files are in DIR
  --x-libraries=DIR       X library files are in DIR

  Note: The location of the X libraries is determined automatically
  however if you want to use X from a non-standard location or if
  configure has difficulty finding the X libraries or headers you
  might want to use these switches.

  --with-comp  Compile or just configure. Required for compilation.
  --with-top=/top Explicitly specify top of distribution

  This switch is used if you are installing ciao on a read-only file
  system such that the physical location is different from where the
  users will see it.

  --with-irafdir=DIR Indicate where the IRAF directory is. The default
    is /iraf

  --with-fits      Include FITS kernel
  --with-iraf      Include IRAF kernel  (Solaris only)
  --with-iraflibs  Use IRAF libraries provided in package  (Solaris only)

  --with-nothreads Disable threads

  This switch should only be used on older systems that do not fully 
  support threads.

  --with-debug If the users are compiling the software, this
    switch will setup the make scripts to compile with the
    -g switch by default.

  --with-opt=-O3  If the users are compiling the software, this
    switch will setup the make scripts to compile with the
    select optimization switch. -O3 is the default level if
    no argument is provided.

  --with-tcltk={base tcldir} If the users are compiling the
    software. This sets the directory where the make scripts will
    lib and include directories that contain the tcl/tk libraries
    and includes. If this switch is omitted the default is
    /usr (this should be correct for most linux distributions).

  --with-tclver=8.0 If the users are compiling the software, this
    switch select the version of tcl/tk to use. Currently 8.0
    is the only version that has been tested. The default is 8.0.

  --with-lesstif={base dir for lesstif / Mofit} If the users are
    compiling the software, this switch sets the base directory
    to look for the Motif lib and include directories. The
    default location is /usr/X11R6/LessTif


  o SM resource files are GNU-configured during CIAO installation
  o Removed XPA_SHORT_TIMEOUT and added XPA_METHOD=local to the
    $HOME/.cxcds.(c)sh configuration, the latter of which helps avoid
    problems on machines (like laptops) not attached to networks.

Runtime Configuration/Customization

  'ciao' alias (ciao.csh and

  o New switches
    -v Version switch: Prints the versions of all CXC software 
       installed in $ASCDS_INSTALL tree. 

    -i CIAO info switch: This switch activates a script that 
       dumps you system configuration information the screen and
       the file $HOME/ This file can then be
       used to help debug users problems.

    -o Force setup switch: This switch allows the users to over-ride
       their current ciao setup and setup a new version of ciao.
       This switch will also remove the old setup for the users
       path and LD_LIBRARY_PATH to avoid conflicts and path bloat.

  Parameter Files

  o new parameters in ciao.par to customize file selection dialogs:
      pattern - specifies the default filter pattern to use the first time
        a file selection dialog box is invoked from a GUI. 
      dir_option - specifies whether the default directory for a file dialog
        should be based on the last directory used by the application or the
        last directory referenced by any application in the session. This  
        value may be set to either APPLICATION or SESSION.  
      workdir - if dir_option is set to SESSION, this value specifies the 
        default directory to list when a file selection dialog is invoked.
  o new parameter in ciao.par to customize readline key binding preference
      editor - allows user to select emacs or vi type keybindings for readline
  o $HOME/.CXCdefaults ehanced to provide better GUI colormap support
    (background/foreground colors) under CDE.  Colormap problems are mostly
    eliminated under other window mangers.


  * Retrieval of region specifications from ds9 in filtwin is currently 
    performed in physical coordinates. Unfortunately, there is an inconstency
    between filtwin and dmcopy where dmcopy expects logical coordinates when
    working on iamge files. As a result, when attempting to apply a region
    filter from filtwin to an image in ds9, the user currently needs to 
    convert the region descriptor into logical coordinates. 

  * The region filtering interface in ds9 was changed in ds9 v1.9.4 and
    was changed back insubsequent versions of the imager. As a result,
    filtwin's region handling code works with various versions of ds9
    except for v.1.9.4.


* New Commands *

    * ANALYSIS: allows the user to specify space for analysis: energy,
      wavelength, channel
    * BACKERRORS: allows the user to specify errors for the background
      dataset read in with "BACK." (Can be used with READ to read in
      errors from a file.)
    * COVARIANCE: calculation of the covariance matrix and error estimates.
    * DEMINIT: a command to be used with the GUIDE package only.
      Prepares an intermediate file with flux and line positions from
      each model, and temperature and emissivity grids culled from the
      APED line list file.
    * FEFFILE: specifies a FITS Embedded Function file for Sherpa to
      read in.
    * FEFPLOT: allows the user to plot the line-spread function for a
      given photon energy in keV, based on information read in with
    * INTERVAL-PROJECTION: creates a 1D plot showing the fit statistic
      as a function of the value of the specified parameter, with all
      other thawed parameter values allowed to float.
    * INTERVAL-UNCERTAINTY: creates a 1D plot showing the fit statistic
      as a function of the value of the specified parameter, with all
      other thawed parameter values held to their best-fit values.
    * LPLOT: formerly the Sherpa PLOT command. Uses all the same options
      formerly understood by the PLOT command; may be abbreviated LP.
    * PRECISION: allows the user to change the number of significant
      digits in some values output to the screen with SHOW.
    * PROJECTION: calculation of error estimates.
    * REGION-PROJECTION: creates a 2D plot showing fit statistic
      contours as a function of the values of the two specified
      parameters, with all other thawed parameter values allowed to float.
    * REGION-UNCERTAINTY: creates a 2D plot showing fit statistic
      contours as a function of the values of the two specified
      parameters, with all other thawed parameter values held to their
      best-fit values.
    * SETBACK: allows the user to set the time, backscal, or areascal
      for a background dataset read in with the BACK (or READ BACK)
    * SETDATA: allows the user to set the time, backscal, or areascal
      for a dataset read in with the DATA (or READ DATA) command.
    * TRUNCATE: resets negative model values to zero. Automatically set
      if the statistic is CASH or BAYES.
    * UPDATE: stores relevant information about a fit in an S-Lang
      variable called "fitResults".
    * WCS: allows the user to use WCS coordinates, if available, when
      fitting two-dimensional models.

* GUIDE * -- Grating User Interacitve Data Extension

    * A new package for analyzing grating data, called GUIDE (Grating
      User Interactive Data Extension) has been created. This package
      can be accessed from Sherpa and consists of a small number of
      Sherpa commands and a large number of S-Lang scripts. Please see
      the GUIDE Manual for more information.
    * Access to S-Lang has been added to Sherpa. S-Lang is an
      interpreted language that may be embedded into an application to
      make it extensible. Thus it is now possible for the user to write
      their own S-Lang scripts, which incorporate both S-Lang and Sherpa
      commands, and run them inside Sherpa.
    * Data from S-Lang variables (which were read in via the VARMMIO
      read functions) can be assigned to Sherpa data sets.
    * A new format for storing information relevant to a fit, called the
      Model Descriptor List (MDL), has been created. The MDL stores all
      relevant information about a fit (e.g., names of data files,
      source and instrument models, and model parameter values). The MDL
      can be written to a FITS file, or stored in an S-Lang variable
      called "fitResults". This variable is automatically updated after
      every fit, and can also be updated manually via the UPDATE
      command. The MDL is used by GUIDE, but may also be used for
      non-GUIDE analysis.

* Changes to I/O *

    * The user can now read in PHA datasets from PHA Type II files.
    * The user can now read in/analyze double (real*8) data.
    * Support for a Sherpa preference file, .sherparc, has been added.
    * SAVE I/O has been altered; vestigial parameters DELTA and EPSILON
      are no longer output; errors are specified by err_min, err_max,
      and err_met, where err_met = c (covariance), p (projection), or u
    * The command record now places the file search.dat.[process ID]
      into the ASCDS_WORK_PATH directory, normally /tmp.
    * Users can now update multiple parameter values using GETX, GETY,
      instead of just one.
    * Users may save a Model Descriptor List (MDL) to a FITS file with
      the WRITE command.
    * Users may read in from an MDL file with the READ command. This has
      the effect of reading in all specified data files, defining all
      source and instrument models, and setting all parameter values.

* Changes to General Fitting *

    * The means by which one specifies datasets in commands has been
      generalized. Commands that are affected: ANALYSIS, BACKGROUND,
    * The user can now jointly fit data specified with DATA and BACK
      (before, all BACK data could be used for was background
      subtraction). Two backgrounds are allowed per dataset
      (specifically, BACK UP and BACK DOWN; the names reflect the tie-in
      with grating analysis). Also, the background can be fit alone.
    * The user can now specify background errors (BACKERRORS), either on
      the command line or from a file. (Equivalent to ERRORS.)
    * The user can specify the time, backscal, or areascal of an input
      dataset (SETDATA) or background dataset (SETBACK).
    * The user can change the analysis space (e.g. from energy-space to
      wavelength-space), or determine the current analysis space, using
      the command ANALYSIS. Note that ANALYSIS is reset automatically
      when PHA files are read in.
    * Sherpa can now fit arbitrarily filtered histogram ASCII input.
    * Fluxes can now be determined for individual model components.
    * Counts fluxes can now be determined for individual model components.
    * The user may filter data using NOTICE/IGNORE ENERGY/WAVE.
    * Parameter value guesses for background data fits are now based on
      the background data, not the source data.

* Changes to Responses *

    * The user can now specify an "encircled energy ARF" (EEARF) as the
      third parameter of the model RSP. Sherpa also looks for the EEARF
      in the RMF fits file; if there, it need not be specified separately.
    * The user-specified ARF file no longer needs to have the same
      binning as the user-specified RMF file. (However, the EEARF
      binning must currently match the ARF binning.)
    * The user can read in a FEF file using the command FEFFILE and
      display line-spread functions for a given photon energy using the
      command FEFPLOT. Note that the user cannot yet *use* the displayed
      line-spread function as a response.
    * Sherpa can now apply PSFs to filtered 2D data.

* Changes to Optimization Methods *

    * The LEVENBERG-MARQUARDT method has been fixed, allowing it to find
      the actual local minimum in parameter space in fewer steps.
    * The implementation of the SIMPLEX method is improved, such that it
      is less likely now that it will stop short of the local minimum.
    * GRID & GRID-POWELL have been changed so that the user may specify
      the number of grid points on each axis separately.
    * The method parameter SHOW interface has been improved; notably,
      parameters which do not actually used by the method are not listed
      (e.g. the delta parameter for Sherpa 1.0).

* Changes to Error Analysis Methods *

    * The uncertainty algorithm has been updated to allow the user to
      find uncertainties for subsets of the thawed parameters; it also
      can find uncertainty bounds beyond the min and max parameter
      values stipulated by the user. Also, one can apply uncertainty to
      a subset of the entered data (e.g. to one specific dataset when N
      datasets have been entered).
    * Two new error analysis algorithms have been added: projection and
      covariance. The former determines error estimates numerically by
      varying each chosen thawed parameter in turn, and allowing the
      other parameter values to drift to new best-fit values. The latter
      estimates errors using the covariance matrix, the inverse of the
      matrix of parameter space second-derivatives at the best-fit point.
    * Four new error analysis/visualization routines have been added:
      interval-projection, interval-uncertainty, region-projection, and
      region-uncertainty. The former two allow the user to display a 1D
      plot showing the statistic value as a function of the value of the
      specified parameter (using either the projection or uncertainty
      algorithms). The latter two allow the user to display 2D contour
      plots showing the statistic value as a function of the values of
      the two specified parameters (using either the projection or
      uncertainty algorithms).

* New Sherpa Models *

    * BPL/BPL1D: broken power law
    * CONST/CONST1D: a positive constant, one dimension
    * CONST2D: a positive constant, two dimensions
    * DELTA/DELTA1D: a delta function, one dimension
    * DELTA2D: a delta function, two dimensions
    * EDGE: absorption edge as a function of energy or wavelength, one
    * LINEBROAD: a line-broadening model, one dimension
    * NGAUSS/NGAUSS1D: a normalized Gaussian model, one dimension

* Altered Sherpa Models *

    * BB/BBODY: now includes amplitude parameter (ampl)
    * LORENTZ/LORENTZ1D: functional form changed, now normalized
    * PSF/PSFFROMTCD: parameter size changed to parameters xsize/ysize
      (i.e., Sherpa supports asymmetric kernels); nsigma changed from
      two to a user-specifiable parameter
    * RSP: new parameter eearf (encircled-energy ARF file)
    * SHEXP: the former Sherpa EXP model; functional form altered
    * SHEXP10: the former Sherpa EXP10 model; functional form altered
    * SHLOG/SHLOGE: the former Sherpa LOG/LOGE model; functional form
    * SHLOG10: the former Sherpa LOG10 model; functional form altered
    * SQRT: functional form altered
    * APEC: APEC models xsapec and xsvapec have been added. These are
      models to calculate emission from a plasma with a DEM. Data from
      either the APEC plasma emission file or a Raymond-Smith file may
      be used (the APEC file is used by default). The model xsvapec
      allows certain elemental abundances to be varied.

* General Model Changes *

    * The evaluation of all two-dimensional models now includes
      (numerical/analytical) integration (if desired).
    * All two-dimensional models may now be evaluated in "WCS coordinate
      space," i.e. as a function of RA and Dec.
    * A new command, TRUNCATE, has been added. This resets model values
      that are less than zero to zero, allowing the statistics BAYES and
      CASH to be used without difficulty. Note that when those
      statistics are specified, TRUNCATE is automatically turned on.
    * Sherpa's algorithms for guessing parameter values were overhauled:
      (1) better guesses are made for some parameters (such as fwhm of
      gauss); (2) time and arf information is taken into account for
      guesses in the analysis of PHA data; (3) if the source model
      expression and the dataset number are specified in the same
      command (e.g. source 4 = pow[p]), then that dataset is used for
      guessing, and not the first dataset.

* Changes to Statistics *

    * For model variance chi^2 (CHI MVAR), error propagation in
      background subtraction has been fixed, and post-fit plots show
      properly sized errorbars (instead of using a default errorbar size
      of one).
    * For Primini chi^2 (CHI PRIMINI), error propagation in background
      subtraction has been fixed, and post-fit plots and goodness
      computations use the correct error values.
    * Plots of fits done using the statistics BAYES and CASH now show
      errorbars estimated using the Chi Gehrels variance (rather than
      showing no errorbars at all).
    * Error propagation has been generalized for background subtraction:
      (1) errors are properly propagated if the errors for either the
      data or the background or both are read in rather than computed;
      (2) errors are properly propagated if two background files are
      specified (UP and DOWN for Chandra grating analysis).

* Plotting *

    * Improved labeling for plots, by checking for exposure times, etc.
    * One can now create composite image filters using NOTICE/IGNORE
      IMAGE and the include/exclude region feature of ds9.

* Miscellaneous *

    * Added function to wrapper class, to switch model integration on
      and off from tools which use ascfitlib.
    * RESET command changed so that only model parameters are reset, and
      not the method parameters as well.

* Bug Fixes since v. 1.1 (not including items mentioned above) *

* I/O *

    * A bug which caused improper fit results after the entry of
      two-dimensional ASCII data entry was fixed.
    * Fixed problem where chips was being started from Sherpa when the
      user issued a help command, or made a typographical error.
    * Fixed bug in WRITE ERRORS so that the correct, filtered errors are
      actually output to the screen.
    * Fixed bug causing the uncertainty minimum to be written sometimes
      with "--" in SAVE ALL.
    * Sherpa now checks PHA data for the column STAT_ERR_RATE if the
      column STAT_ERR is not found (bug fix for Einstein data).
    * The command RESET FILTER now immediately causes the data to be
      refiltered; before, if RESET FILTER was followed by, e.g., FIT,
      the fit was done using the old filter.
    * Typing "q" while in GETX (setting a parameter value from a plot)
      no longer leads to the parameter value being reset to zero.

* Plotting *

    * The user can apply IGNORE/NOTICE PLOT to a log plot to get filter
    * One can LPLOT/CPLOT/SPLOT/IMAGE negative data without having to
      set ERRORS or READ ERRORS.
    * Fixed parser bug so that commands like LPLOT DATA will open the
      plotter automatically if chips has not yet been started.
    * Attempts to LPLOT, SPLOT, CPLOT or IMAGE an instrument when no
      instrument is loaded now cause an error message to be shown,
      rather than cause a Seg.V.
    * Fixed bugs relating to SPLOT/CPLOT SOURCE/BG.
    * Contour plots of rectangular filtered regions now work correctly
      (row-major intermediate information was changed to column-major).
    * IMAGE [model name] now works properly for arbitrarily filtered
      data; the imager no longer displays a 1 x N image.
    * IMAGE ERRORS now shows the errors rather than the input data.
    * SPLOT/CPLOT FILTER improved to give better zmin/zmax or contour

* Fitting *

    * Bugs relating to timescales and data grouping in FAKEIT were fixed.
    * A bug which prevented Sherpa from fitting a (small) subset of
      filtered PHA datasets has been fixed for CIAO 1.1-1.1.1.
    * Fixed bug in the computation of residuals for 2D data.
    * An error which caused the number of degrees of freedom to be
      sometimes incorrectly tabulated when background-subtracted data
      was analyzed is fixed.
    * PSF now keeps FFT of the kernel in memory--speeding the convolution.
    * Defining a SOURCE for an empty dataset (made empty by IGNORE ALL)
      no longer results in badly set (NaN) model parameter values.
    * Parameter links can now be reversed after the link is broken (e.g.
      m1 => m2+5 ; ... ; m1 = 20 ; ... ; m2 => m1-5 is now allowed).
    * Using GUESS to reset model parameter values after a link has been
      set no longer causes the link to be broken.

* Methods *

    * A type-conversion error which caused garbage numbers to be written
      to the search.dat file was fixed.
    * Fixed bug in opt.C that caused the user's choice for random number
      seed in some optimization algorithms to be overwritten with "14391."

* Models *

    * A bug which caused Sherpa to Seg.V. when nested models were
      defined was fixed.
    * Increased the maximum number of model components per source and
      background models to be 512 (was 32).
    * Bugs in model dered fixed.
    * Bug causing bbodyfreq to output zero amplitude fixed.

* Known Bugs and Limitations *

* Relating to plotting/imaging *

    * The command CLOSE PLOT now longer deletes the plot window from the
      screen. (This is not a bug, but rather related to the fact that
      ChIPS is no longer run within Sherpa, but as a separate process.)
    * The user may not use SPLOT or CPLOT to visualize an arbitrarily
      filtered (i.e. non-rectangularly filtered) two-dimensional dataset.
    * ChIPS curves are plotted through regions that have been filtered out.
    * A Sherpa user may not overplot several datasets, although
      overplotting is allowed when using ChIPS itself.
    * Multiple plots in one ChIPS window that show different datasets
      that have been filtered in the same manner may be shifted with
      respect to one another.
    * One cannot create images which show only those data which lie
      within a NOTICE filter region.
    * The ChIPS UNDO command cannot be used properly from Sherpa; labels
      and axes are restored, but not the curves themselves. This is due
      to the fact that in ChIPS, storing the state of a plot works when
      the data were read from file, but not when read from S-Lang
      variables. Sherpa sends ChIPS data via variables, instead of
      dumping to temporary files, and hence UNDO (as well as STORE and
      RESTORE) do not work well for plots generated via sherap LPLOT
      commands. This fix for this will be for ChIPS to store plots even
      when data came from S_Lang variables.

* Relating to filtering *

    * A user may not read in a filter from a file, and then add to that
      filter by specifying more filters from the command line
    * In the analysis of PHA data, the user may not combine IGNORE BAD
      with other filter commands; the desired filter will not be created.
    * Read-in files related to a single dataset must have the same
      precision. For instance, improper results will be obtained if the
      user reads in single-precision data and a double-precision filter
      for those data.
    * Filter bounds that are given in double precision are truncated to
      single precision, regardless of whether the data are expressed in
      single or double precision. This can lead to data being improperly
      left in or out of a filter region.
    * Extra characters added to the end of otherwise valid NOTICE/IGNORE
      commands will (i) cause S-Lang error messages to be shown,
      although Sherpa *will* properly interpret the filter, and (ii) be
      shown when the SHOW command is issued
    * Some attempts to filter FITS table (FITSBIN) data using the column
      name will fail because the Sherpa parser mistakes the column name
      for a parser token. Similar errors will be seen if the column name
      is channel. An exhaustive list of bad column names has not been

* Relating to GUIDE *

    * When the MDL is updated, the flux of each model component is
      determined. Currently, the error on the flux is determined only if
      the model component is a normalized Gaussian, a Lorentzian, or a
      delta function. (For these models, the error on the flux is
      equivalent to the error on the amplitude, which is simple to
      estimate using COVARIANCE.)
    * Currently, the error on the flux can only be determined for the
      models listed above in (a) if the amplitude parameter is thawed,
      i.e., not linked to another model's amplitude parameter.

* Miscellaneous *

    * BUG: for the Linux version of Sherpa (compiled with gcc, v.
      egcs-2.91.66), an attempt to read in non-existent files will cause
      a core dump.
    * After the command JOURNAL [filename] is given, all commands issued
      to Sherpa are recorded, including mis-typed/wrong commands that
      cause error messages to appear. This can lead to problems if the
      output file is used as a script for a subsequent Sherpa session.
    * Issuing the DATA or READ DATA commands causes Sherpa to first
      delete all information that may already exist for the numbered
    * If one uses STATISTIC CHI MVAR or CHI PRIMINI, and issues the
      command SHOW ERRORS after the fit, the errors shown will not be
      correct. Do SHOW FILTER ERRORS instead.

Data Model

*  "ahelp dm" gives high level on line help.
*  Support for new DS9 region formats.

*  dmlist now gives higher precision for double precision 

*  dmcopy binning on a table which is filtered on the binning
   axes now shrinks the image to surround the filtered region.
     dmcopy  evt.fits[sky=circle(4300,4200,100)][bin sky]
   will make a 100x100 image. The command [bin/f sky]
   will make the full image replicating the older behaviour.

*  Multiple component ("logical OR") command line filtering:

   You can now do

      &&time=:63950001][cols time,tdet,det,pi,ccd_id,node_id]"

   where clean.filter is a file containing


This can make the data subspace very complicated; adding the string
[opt -ssupdate] will suppress the updating of the data subspace if you
find this is giving you trouble.

* "Exclude" syntax
   You can do
     dmcopy "evt1.fts[exclude pha=2,time=4]" bad.fits
     dmcopy "evt1.fts[exclude @flt.fits]" bad.fits
     dmcopy "evt1.fts[@!flt.fits]" bad.fits
   and get the stuff that doesn't pass the flt.fits filter.
   (Be careful with the @! notation which is quite limited, 
   you can't combine an
   exclude and an include so [pha=2,@!flt.fits] is an error,
   it in fact also excludes pha=2.)

*  LIVETIME/ONTIME keywords now updated by filtering

   If you do 
     dmcopy "evt1.fits[@flt1.fits]" evt2.fits
   the GTIs are updated as before, but now the LIVETIME
   and ONTIME (and LIVTIMn ONTIMEn) keywords are updated.
   ONTIME is the sum of the GTI intervals, and LIVETIME is
   ONTIME times DTCOR, (with DTCOR assumed 1 if not present).
   The keywords are only updated if they are present in the
   input file.

*  There have been some improvements to the copying of GTI
   extensions. GTIs are part of the file's data subspace and
   dmcopy recreates them  rather than copies them, but now
   it preserves a few crucial keywords that got lost before.

*  Bin image to image;
   We finally implemented a simple image rebinning option.
   You can rebin an image by an integer factor. 

    dmcopy   image.fits[bin 4]   blocked_image.fits  
    dmcopy   image.fits[bin x=2:20:4,y=1:1000:4]   blocked_image.fits

*  String filtering: (FITS only)
    dmcopy   bpix1.fits[shape=point:rectangle]

   If a table has a string column, you can filter on ASCII-ordered
   ranges. The above example passes rows whose value of SHAPE 
   lies between "point" and "rectangle" in alphabetical order.
   The range is a closed interval, 
   i.e. both "point" and "rectangle" pass the filter.
*  Bit filtering (FITS only)
    dmcopy   bpix1.fits[status=001x0x0]
    dmcopy   bpix1.fits[status!=001x0x0]

   This filter matches 001000, 0011010, 0011000, etc:
    the 'x' means accept either 1 or 0. Leading zeroes may be omitted
    so that 1x0x0 and 001x0x0 are the same.
   Currently you can only do this on columns of bit datatype.
   Note that XMM data uses an integer column for its FLAG bitmask;
   we plan that a later DM release will let you use bit filters
   on integer columns too, but CIAO2.0 can't do this.

*  Bin to size:
    dmcopy  evt.fits[bin sky=1:1024:#200]
   bin from 1 to 1024 generating a total of 200 bins, as an alternative
   to specifying the step size directly.

*   The syntax [cols #1,#2] now works and selects columns number 1 and 2.

*  Multiple syntax sections:
    dmcopy  bpix1.fits[shape=point][cols status][status=001x0x0]
    is now interpreted as identical to
    dmcopy  bpix1.fits[shape=point,status=001x0x0][cols status]
   This will be helpful for programmers wishing to append extra
   filters to an input DM spec. The block name, if present,
   must still be the first syntax section:
     dmcopy bpix1.fits[events][shape=point]
     dmcopy bpix1.fits[shape=point][events]

*  Control option syntax:
    [opt option-list]
    dmcopy evt.fits[bin time,pha][opt mem=200]

   The supported options are:
     mem=n       Max memory is n megabytes. Used to control how
                 big an image you can make when binning.
     -ssupdate   Suppress updating the data subspace.
     type=i2     Control data type of output binning image.

Subroutine interface enhancements

These are relevant to anyone programming directly with the DM interface.

*  WCS enhancements: CROTAn, EQUIn, LONPn, LATPn recognized.
   New routine dmCoordSetParam allows you to set LONPn.

*  Support for null subspaces. If you filter e.g.
    dmcopy evt.fits[time<0] flt.fits
   this gives a data subspace which is empty.
   DM didn't use to handle this; now it writes a
     DSVALn = "NULL"
   keyword and filtering recognizes this and acts accordingly
  (so filtering on a file with any such keyword will give no
  output rows).

 Bug fixes:

*   Binning xmin:xmax:step  generates bins from xmin to xmin + n * step
    where n is such that xmax <= xmin + n * step
    A bug in binning created an extra bin in the common case where the step
    size divided into the range exactly (in other words, the eqn above had
    a < instead of a <=). This is now fixed so your images may end
    up 1 pixel smaller than they used to.
*   Column selection/filtering bug: specs of the form
      evt.fits[pha=20:40][cols time,grade]
    in some circumstances failed to apply the pha filter if it was not
    in the list of selected columns. This is fixed properly now - I hope!

*   Compound areas now calculated correctly (e.g. BACKSCAL in dmextract)
*   Multiple component filtering support.
    You can now do
    dmcopy "evt1.fits[@flt.fits]" evt2.fits
    and get the correct answer! Earlier implementations were flawed
    when multiple GTIs were present.
*   Data subspace failed to handle default filters in multiple-component
    subspaces correctly.
*   The FITS kernel occasionally got confused about which HDU
    it was meant to be writing to. I think this is fixed now.
*   The QPOE kernel was inconsistent about block names, sometimes
    appending ".qp" to them; I fixed this, the block name will
    not include ".qp".

 Outstanding bugs

 There are still problems with inserting header                       
 keys; still no support for writing variable length arrays or   
 filtering on row number. Support for filtering regions from
 images is still primitive, with logical and physical coordinates
 not being well supported; using world coords (RA and Dec) is safer.

Other Libraries


  - The various pix_*.par parameter files are now gone.  They have
    been replaced with a set of CALDB indexed FITS files.  The files
    used by pixlib are set by the "geom.par" file.


  - The transformations/convolutions/ and deconvolutions library has
    been upgraded to use the "FFTW" algorithm.  It has also been
    upgraded for futher efficiency for 2D FFTs.  Tools such as
    wavdetect, csmooth, and aconvolve should experience great
    improvements in speed.

CALDB (*new*)

  - Based on version 4.2 of FTOOLs, the CALDB lib allows some selected
    tools to access the calibration database (CALDB) directly.  Each
    tool has to know what kinds of files it is looking for (a choice
    made by the developer+scientist) and then when the string "CALDB"
    is used for the calibration file name the tool will automatically
    find the file that matches the current observation.  Tools that
    have been CALDB-enabled include:  acis_process_events,
    hrc_process_events, tg_resolve_events, tg_create_mask, tgextract,
    mkgarf, mkarf, mkinstmap, and pixlib.

Parameter Interface
  - Will try to detect if an out-of-date parameter file is present
    in the user's home directory and will move it out of the way 
    so the tool can run without any problems.
  - Uses a different command line interface library so things like
    tab completion, back-arrows when the line wraps, emacs & vi
    style key bindings, etc may not either look or function as in
    previous versions of CIAO.

  - Various physical constants were updated with the most recently
    accepted values.

  - Bug was fixed in polygon filtering where two adjacent points
    shared the same x-coordinate.