aboutsummaryrefslogtreecommitdiff
path: root/doc/newsfile
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
commitfa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch)
treebdda434976bc09c864f2e4fa6f16ba1952b1e555 /doc/newsfile
downloadiraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz
Initial commit
Diffstat (limited to 'doc/newsfile')
-rw-r--r--doc/newsfile8008
1 files changed, 8008 insertions, 0 deletions
diff --git a/doc/newsfile b/doc/newsfile
new file mode 100644
index 00000000..51a19e99
--- /dev/null
+++ b/doc/newsfile
@@ -0,0 +1,8008 @@
+
+IRAF (Mar02) V2.12EXPORT Release Notes IRAF (Mar02)
+
+
+ IRAF V2.12EXPORT Release Notes
+ January 25, 2002
+ Updated: March 25, 2002
+
+
+These release notes provide a summary of the major changes in V2.12.
+This is a major release of IRAF and will be available for all supported
+platforms. More detailed technical documentation of all system changes
+will be found in the 'notes.v211' and 'notes.v212' files in the
+iraf$doc and iraf$local directories. Detailed revisions notes for each
+application package are in the package directories in a file called
+Revisions, e.g. apphot$Revisions.
+
+ 1. Highlights of This Release
+ 2. IRAF System Revisions Summary
+ 3. Core IRAF Revisions Summary
+ 3.1 New Tasks
+ 3.2 Existing tasks with new parameters/defaults
+ 3.3 Existing tasks with new capabilities
+ 4. NOAO Package Revisions Summary
+ 4.1 New NOAO Packages
+ 4.2 New NOAO Package Tasks
+ 4.3 Existing tasks with new parameters/defaults
+ 4.4 Existing tasks with new capabilities
+ 5. General Package Changes
+ 6. General Task Changes
+ 7. Parameter File Changes
+ 8. Details of Major System Changes
+ 8.1 FITS Kernel Changes
+ 8.2 Large Image Support
+ 8.3 Virtual Memory Cache
+ 8.4 New Developer libraries
+ 9. System Changes Which May Affect You
+ 9.1 Shared Library Version Incremented
+ 9.2 External Package Recompilation
+ 9.3 Parameter File Changes
+ 9.4 Installation Script Changes
+ 9.5 Help System Changes
+ 9.6 Image Display Changes
+ 9.7 PLIO Changes
+ 9.8 New Environment Variables Changes
+
+
+
+
+1. Highlights of This Release
+
+ o Pixel Mask Support Added to FITS Kernel
+ The FITS kernel was modified to add support for storing images in
+ extensions as compressed pixel masks using the binary table extension.
+ These masks may be accessed like any other image and allow for tasks
+ to more easily store bad-pixel masks, regions masks, or error arrays
+ in the same image file as the science data.
+
+ o New Pixel Mask Tasks
+ Several new tasks have been added to the system PROTO package for
+ manipulating pixel masks:
+
+ o MIMSTATISTICS allows image statistics to be computed while
+ rejecting pixels specified by an input mask.
+ o MSKEXPR task is a general-purpose mask expression evaluator
+ similar to IMEXPR for images, but has builtin boolean region
+ functions which can be used to set values inside or outside
+ of certain geometric shapes.
+ o MSKREGIONS creates an output mask based on an input text de-
+ scription. Region descriptions can be composed of geometric
+ shapes and logical operation on mask regions.
+
+ o OBJMASKS in the NPROTO package is a new task for detecting objects
+ in an image and creating an output catalog or pixel mask of
+ found objects.
+
+ o Shared Memory Limitations Eased
+ The IMAGES and DAOPHOT packages executables are now linked statically
+ to remove per-process memory limitations imposed by the IRAF shared
+ library on Sun and Dec Alpha systems. Previously tasks such as
+ DAOFIND and IMCOMBINE were limited to 268Mb on Sun systems, these
+ tasks can now use up to the machine memory limits.
+
+ o Image I/O Buffer Sizes Increased
+ Support for large image I/O was improved by changes to the internal
+ buffer sizes. These buffers may automatically adjust to optimal
+ values for the image being accessed, however new environment variables
+ may be set to further tune the buffers at the user level. Where
+ needed applications tasks were modified to take advantage of these
+ buffer size changes to force the imio buffer to be the size of the
+ input image.
+
+ o Simplified Installation Script
+ The install script was rewritten to clarify the output and provide
+ some basic checking of the IRAF system setup prior to installation,
+ and to do some of the most common post-install configuration. The
+ script will print an explanation of any errors it finds and suggest
+ corrective action, the hope is this will lead the user past some of
+ the most common installation errors.
+
+ In addition, the SYSINFO diagnostic script which does more extensive
+ checking of the system is also now part of the distribution. This
+ script can be used to verify the system once the install is complete,
+ or to generate a report of the system configuration if needed by
+ site support. An UNINSTALL script to remove iraf command links and
+ files created by the INSTALL script is also available to remove IRAF
+ from a machine. All scripts are now installed in the hlib$ directory.
+
+ o New HELP GUI and Output Options
+ The HELP task was enhanced to have a new GUI option for XGterm
+ users. This is essentially the XHELP task which has been available
+ in the GUIAPPS external package for some time, however the task is
+ fully backwards compatible and the text-mode output is still the
+ default. As part of this work, help pages may also now be formatted
+ as either HTML or Postscript for web presentation or pretty-printing
+ to a hardcopy device. The LROFF task was similarly modified to
+ provide direct conversion of lroff text sources.
+
+ o DISPLAY Task Changes
+ As part of the recent X11IRAF enhancements, the DISPLAY task and
+ others such as IMEXAMINE which interact with the display server were
+ modified to take advantage of the new features in XImtool V1.3.
+ These include support for 16 frame buffers (increased from 4 in
+ previous versions), and enhanced WCS readout capabilities. The
+ changes are fully backwards compatible for use with older XImtool
+ versions or display servers such as SAOimage, SAOtng, or DS9 which
+ have not yet been updated.
+
+ X11IRAF V1.3 is being released simultaneously (but still separately)
+ with IRAF V2.12. While V2.12 is fully compatible with older versions
+ of X11IRAF, however users will need to upgrade both systems to take
+ full advantage of all the new features. Users should consult the
+ X11IRAF Release Notes for details on what has changed there.
+
+ o New Packages
+ Several new packages are available in this release (see the NOAO
+ package change notes below for details):
+
+ - A new ASTCAT package for extracting astrometric and photometric
+ calibration data from remote or local catalogs was added to NOAO.
+
+ - A new CRUTIL package for doing cosmic ray detection and removal
+ package was installed in the IMRED package.
+
+ - A new QUADRED reduction package for QUAD format data was installed
+ in the IMRED package. This is a generalized replacement for the
+ ARED.QUAD and XCCDRED external packages for processing CTIO and
+ ESO FORS1 multi-amplifier data.
+
+ - A new OBSUTIL package was installed in NOAO. This is a collection
+ of tasks from various external packages which are useful to plan or
+ carry out observations.
+
+ o New Developer Libraries.
+ Several new libraries are available for SPP developers:
+
+ - PSIO is a new Postscript text generation library installed in
+ sys$psio.
+
+ - CATQUERY is a remote astrometric/photometric catalog access lib
+ installed in the XTOOLS utility library.
+
+ - SKYWCS is a sky coordinate transformation library installed in
+ the XTOOLS utility library.
+
+
+
+
+2. IRAF System Revisions Summary
+
+ o The IRAF shared library version number was incremented for SunOS
+ and Solaris systems. See below for details on how this change
+ will affect external packages and locally-compiled software.
+
+ o The maximum number of nodes in a local iraf network was increased
+ from 320 to 512.
+
+ o The max number of open files in FIO, FIO_MAXFD, was increased from
+ 256 to 4096. This is the "hard limit" on the maximum number of
+ open files in an IRAF process.
+
+ o The maximum number of host level open files, MAXOFILES, was increased
+ from 64 to 256. This is the maximum number of files that can be
+ simultaneously open at the host level. It determines the maximum
+ number of files that can be simultaneously open by an IRAF process
+ in the usual case.
+
+ o The number of keywords in a group header block for STF images (i.e.
+ the MAX_PCOUNT) was increased from 50 to 99 in the STF image kernel.
+
+ o Added support for the bitwise boolean operators: '&' (and), '|' (or),
+ '^' (xor), and '~' (not/complement), to vectory expression evaluator
+ fmtio$evvexpr.gy. The IMEXPR task was modified to allow these new
+ bitwise operations.
+
+ o Added new vector operators to VOPS library: alan, alank (logical AND)
+ and alor, alork (logical OR). These take any integer data as input
+ (short, int, long) and return a logical (expressed as int) result.
+
+ o The 'imextn' environment variable will now accept upper-case extensions
+ to specify image types.
+
+ o Host Command Execution: The way command line arguments are parsed
+ was modified to make it easier to set the value of a string parameter
+ to the null string. Whitespace is still skipped in @par files
+ as before, however null strings are valid parameter values and will
+ no longer cause a parameter prompt.
+
+ o The MKPKG special file list link support was enhanced to allow replacing
+ LFLAGS (the link flags variable) as well as the entire link line.
+ This makes is possible to write special-file list entries for packages
+ which need e.g. to be compiled nonshared on certain platforms without
+ creating a platform specific mkpkg file for the package itself.
+
+ o The HSI zawset.c routine which controls a process working set size was
+ modified to automatically detect the physical size of system memory
+ (with a maximum return value of 2Gb). The hard upper limit on memory
+ utilization defined by the unix kernel can be limited either by the
+ value return by the IRAF kernel (up to 90% of physical memory), or by
+ the value set in the user environment variable MAXWORKSET (given in
+ units of Mb).
+
+ o New stdimage display devices were added to support the display of Gemini
+ GMOS CCD data. These devices are named 'imt45' thru 'imt49' and
+ correspond to the following frame buffer sizes:
+
+ imt45 2080 x 4644 # imt45|imtgmosccd
+ imt46 6400 x 4644 # imt46|imtgmos
+ imt47 3200 x 2322 # imt47|imtgmos2
+ imt48 1600 x 1161 # imt48|imtgmos4
+ imt49 800 x 581 # imt49|imtgmos8
+
+
+
+3. CORE IRAF REVISIONS SUMMARY
+
+
+
+3.1 New Tasks
+ imcoords.ccget - extract objects from a test file catalog
+ imcoords.ccstd - transform to and from standard astrometric coordinates
+proto.mimstatistics - do image statistics through a mask
+ proto.rskysub - sky subtract images using running mean or median
+ proto.mskexpr - general mask expression evaluator
+ proto.mskregions - create a mask from a list of region specifications
+
+
+
+3.2 Existing Tasks with New Parameters or New Parameter Defaults
+ immatch.imcentroid - new parameter maxshift
+ immatch.imalign - new parameter maxshift
+ immatch.geomap - new parameter maxiter, default reject = 3.0 not INDEF
+ imcoords.ccmap - new parameter maxiter, default reject = 3.0 not INDEF
+ imcoords.imcctran - new parameter longpole
+ imutil.hedit - new parameter addonly
+imutil.imstatistics - new parameters nclip, lsigma, usigma, cache
+
+
+
+3.3 Existing Tasks with New Capabilities
+ immatch.imcentroid - optionally rejects objects whose centers wander too much
+ immatch.imalign - optionally rejects objects whose centers wander too much
+ immatch.geomap - iterative rejection capability added
+ imcoords.ccmap - iterative rejection capability added
+ imcoords.imcctran - support for non-zenithal projections added
+ imutil.hedit - support for add keyword only if new option
+imutil.imstatistics - support for iterative rejection and memory caching added
+ imutil.imexpr - support for bitwise operators or, and, xor, and not added
+
+
+
+
+4. NOAO PACKAGE REVISIONS SUMMARY
+
+
+
+4.1 New NOAO Packages
+ astcat - Astronomical catalog and surveys access package
+ crutil - Cosmic ray detection and removal package
+ obsutil - Observing utilities package
+
+
+
+4.2 New NOAO Package Tasks
+ apphot.pcalc - Do arithmetic operations on a list of apphot databases
+ apphot.pconvert - Convert a text database to a tables database
+ apphot.pdump - Print selected fields from a list of apphot databases
+ apphot.pexamine - Interactively examine and edit an apphot database
+ apphot.prenumber - Renumber stars in an apphot database
+ apphot.pselect - Select records from an apphot database
+ apphot.psort - Sort an apphot database
+
+ astcat.aclist - List the supported astrometric catalogs
+ astcat.agetcat - Extract astrometry files from astrometric catalogs
+ astcat.afiltcat - Filter astrometry files derived from astrometric catalogs
+ astcat.adumpcat - Catalog access debugging task
+ astcat.aslist - List the supported image surveys
+ astcat.agetim - Extract FITS images from image surveys
+ astcat.ahedit - Initialize the image wcs and set standard keywords
+ astcat.aimfind - Select images containing catalog objects
+ astcat.adumpim - Image survey access debugging task
+ astcat.aregpars - Default region parameter set
+ astcat.acatpars - Default astrometry file format parameter set
+ astcat.afiltpars - Default astrometry file filtering parameters
+ astcat.aimpars - Default image data parameters
+ astcat.awcspars - Default image wcs parameters
+
+ crutil.cosmicrays - Remove cosmic rays using flux ratio algorithm
+ crutil.craverage - Detect CRs against average and avoid objects
+ crutil.crcombine - Combine multiple exposures to eliminate cosmic rays
+ crutil.credit - Interactively edit cosmic rays using an image display
+ crutil.crfix - Fix cosmic rays in images using cosmic ray masks
+ crutil.crgrow - Grow cosmic rays in cosmic ray masks
+ crutil.crmedian - Detect and replace cosmic rays with median filter
+ crutil.crnebula - Detect and replace cosmic rays in nebular data
+
+obsutil.psfmeasure - Measure PSF sizes from stellar images
+ obsutil.specfocus - Determine spectral focus and alignment variations
+ obsutil.starfocus - Determine direct focus variations from stellar images
+ obsutil.ccdtime - CCD photometry exposure time calculator
+ obsutil.pairmass - Plot airmass vs time for a given coordinate
+ obsutil.sptime - Spectroscopic exposure time calculator
+ obsutil.specpars - Spectrograph instrument parameters for sptime
+ obsutil.bitcount - Accumulate the bit statistics for a list of images
+ obsutil.findgain - Estimate the gain and readnoise of a CCD
+ obsutil.shutcor - Shutter correction from images of varying exposure times
+
+ nproto.objmasks - detect and catalog objects in image
+
+
+
+4.3 Existing Packages and Tasks with New Parameters or New Parameter Defaults
+ apphot - new package parameters wcsin, wcsout, and cache
+ apphot.center - new parameters wcsin, wcsout, cache
+ apphot.daofind - new parameters wcsout, cache
+ apphot.fitpsf - new parameters wcsin, wcsout, cache
+ apphot.fitsky - new parameters wcsin, wcsout, cache
+ apphot.phot - new parameters wcsin, wcsout, cache
+ apphot.polymark - new parameters wcsin, wcsout, cache
+ apphot.polyphot - new parameters wcsin, wcsout, cache
+ apphot.qphot - new parameters wcsin, wcsout, cache
+ apphot.radprof - new parameters wcsin, wcsout, cache
+ apphot.wphot - new parameters wcsin, wcsout, cache
+ apphot.txdump - replaced by pdump, available as a hidden task
+
+astutil.setairmass - new parameters ra, dec, equinox, st, ut, scale
+
+ daophot - new package parameters wcsin, wcsout, wcspsf, and cache
+ daophot.addstar - new parameters wcsin, wcsout, wcspsf, and cache
+ daophot.allstar - new parameters wcsin, wcsout, and wcspsf
+ daophot.daoedit - new parameters cache
+ daophot.daofind - new parameters wcsout, and cache
+ daophot.group - new parameters wcsin, wcsout, wcspsf, and cache
+ daophot.nstar - new parameters wcsin, wcsout, wcspsf, and cache
+ daophot.peak - new parameters wcsin, wcsout, wcspsf, and cache
+ daophot.phot - new parameters wcsin, wcsout, and cache
+ daophot.psf - new parameters wcsin, wcsout, and cache
+ daophot.substar - new parameters wcsin, wcsout, and cache
+
+
+
+4.4 Existing Tasks with New Capabilities
+ apphot.center - coordinate system support, optional image cacheing
+ apphot.daofind - coordinate system support, optional image cacheing
+ apphot.fitpsf - coordinate system support, optional image cacheing
+ apphot.fitsky - coordinate system support, optional image cacheing
+ apphot.phot - coordinate system support, optional image cacheing
+ apphot.polymark - coordinate system support, optional image cacheing
+ apphot.polyphot - coordinate system support, optional image cacheing
+ apphot.qphot - coordinate system support, optional image cacheing
+ apphot.radprof - coordinate system support, optional image cacheing
+ apphot.wphot - coordinate system support, optional image cacheing
+
+astutil.setairmass - ra, dec, equinox, st, ut, scale are no longer hardwired
+ astutil.rvcorrect - more flexibility in setting ut
+
+ daophot.addstar - coordinate system support, optional image cacheing
+ daophot.allstar - coordinate system support
+ daophot.daoedit - optional image cacheing
+ daophot.daofind - coordinate system support, optional image cacheing
+ daophot.group - coordinate system support, optional image cacheing
+ daophot.nstar - coordinate system support, optional image cacheing
+ daophot.peak - coordinate system support, optional image cacheing
+ daophot.phot - coordinate system support, optional image cacheing
+ daophot.psf - coordinate system support, optional image cacheing
+ daophot.substar - coordinate system support, optional image cacheing
+
+
+
+
+5. General Package Changes
+
+NOAO
+
+ ONEDSPEC
+ More than 999 apertures are now allowed.
+
+ APPHOT
+ Coordinate Support:
+ All the apphot tasks have been modified to accept input coordinates
+ in the logical, tv, physical, or world systems, and to write output
+ coordinates in the logical, tv, or physical coordinate systems. One
+ consequence of this is that the apphot tasks will now work correctly
+ on image sections in interactive mode. Another is that users can now
+ work directly on image sections while preserving the coordinate
+ system of the parent image.
+
+ Image Cacheing Support:
+ All the apphot tasks which accept image pixel input have been mod-
+ ified to optional cache the entire input image in memory. Cacheing
+ may significantly improve the performance of tasks where many random
+ access operations are performed.
+
+ File and image name directory information removed from output files
+ All the apphot tasks have been modified to strip directory infor-
+ mation from the image and coordinate file names written to the output
+ files, to the terminal, and to the plot headers. The colon commands
+ will still read and write full image and coordinate file path names.
+
+ New PTOOLS Tasks Added
+ The ptools package tasks pcalc, pconvert, pdump, prenumber, pselect
+ and psort were added to the apphot package. The functionality of the
+ old txdump task as been replaced by the pdump. TXDUMP is still avail-
+ able as a hidden task.
+
+ ASTCAT
+ The astcat package is a set of tasks for extracting astrometric and
+ photometric calibration data from remote or local catalogs, filtering
+ the data, extracting FITS images from remote or local surveys, and adding
+ standard keywords to the extracted images. There is also a task for
+ selecting images which contain catalog objects and locating the catalog
+ objects in the image.
+
+ IMRED.CRUTIL
+ Cosmic ray detection and removal package. This package includes new
+ tasks and links to tasks from other package. It replaces the CRUTIL
+ external package.
+
+ IMRED.QUADRED
+ Reduction package for QUAD format data. This replaces the ARED.QUAD
+ and XCCDRED external packages for processing CTIO and ESO FORS1 multi-
+ amplifier data.
+
+ DAOPHOT
+ Coordinate Support
+ All the daophot tasks have been modified to accept input coordinates
+ in the logical, tv, physical, or world systems, and to write the output
+ coordinates in the logical, tv, or physical coordinate systems. One
+ consequence of this is that the daophot tasks will now work correctly
+ on image sections in interactive mode. Another is that users can now
+ work directly on image sections while preserving the coordinate
+ system of the parent image.
+
+ Image Cacheing Support
+ All the daophot tasks which accept image pixel input have been modified
+ to optionally cache the entire input image in memory. Cacheing signif-
+ icantly improves the performance of the tasks when many random access
+ operations are performed. The cacheing already performed by the
+ ALLSTAR task is unchanged.
+
+ File and image name directory information removed from output files
+ All the daophot tasks have been modified to strip directory information
+ from the image and coordinate file names written to the output files,
+ to the terminal, and to the plot headers. The colon commands will still
+ read and write full image and coordinate file path names.
+
+ OBSUTIL
+ New observing utilities package. This collects tasks from the NMISC,
+ SPECTIME, PROTO, and NLOCAL external package which are useful to
+ plan or carry out observations. The new tasks are:
+
+ PSFMEASURE STARFOCUS SPECFOCUS CCDTIME
+ PAIRMASS SPTIME BITCOUNT FINDGAIN
+ SHUTCOR
+
+ OBSOLETE
+ o Added tasks OIMCOMBINE and OIMSTATISTICS which are the previous
+ versions from V2.113b system
+ o Deleted the ODISPLAY task
+
+
+
+
+6. General Task Changes
+
+NOAO
+ ONEDSPEC.SPLOT
+ Rather than refusing to evaluate errors when there is negative data,
+ negative data is treated as zero.
+
+ ASTUTIL.SETAIRMASS
+ Modified to have greater flexibility in selecting the keyword defining
+ the universal time. New parameters define the keywords for RA, dec,
+ equinox, siderial time, universal time, and astrospheric scale height.
+
+ ASTUTIL.RVCORRECT
+ Modified to have greater flexibility in selecting the keyword defining
+ the universal time.
+
+ IMRED.ECHELLE.ECIDENTIFY
+ Help page describes how to externally evaluate the dispersion fcns.
+
+ IMRED.CCREDRED.COSMISRAYS
+ Task was removed (see CRUTIL)
+
+ NPROTO.FINDGAIN
+ Task was removed (see OBSUTIL)
+
+ NPROTO.OBJMASKS
+ This is a new task for detecting objects in an image and creating
+ an output catalog or pixel mask of found objects.
+
+ TWODSPEC.LONGSLIT.FITCOORDS
+ - Help page describes the contents of the database and how to ext-
+ ernally evaluate the fits.
+ - The RMS is shown in the graph title and in the :show output.
+
+ TWODSPEC.APEXTRACT.APEDIT
+ When there is just one aperture the background regions are shown
+ on the graph without needing to enter the 'b' background mode.
+
+
+IMAGES
+
+ TV.DISPLAY
+ - The mask overlay feature when the displayed image is a reduction of
+ mask (e.g. a block average) now uses the maximum of all mask pixels
+ within the display pixel.
+ - The task will now allow up to 16 frame buffers to be used for the
+ display if allowed by the server. (Currently requires XIMtool V1.3).
+
+ TV.IMEXAMINE
+ - A new key 't' allows output of a region centered on the cursor as an
+ image for further analysis by other programs.
+ - The task will now allow up to 16 frame buffers to be used for the
+ display if allowed by the server. (Currently requires XIMtool V1.3).
+ - Cursor readback will now properly detect the correct image when more
+ than one image is displayed per frame, e.g. in a mosaic. (Currently
+ requires XIMtool V1.3).
+
+ IMMATCH.IMCOMBINE
+ - New parameters "headers", "bpmasks", "rejmasks", "nrejmasks", and
+ "expmasks" provide additional types of output. The old parameters
+ "rejmask" and "plfile" were removed. The new "nrejmasks" parameter
+ corresponds to the old "plfile" and the new "rejmasks" parameter
+ corresponds to the old "rejmask".
+ - There is a new "combine" type "sum" for summing instead of averaging
+ the final set of offset, scaled, and weighted pixels.
+ - There is a new parameter "outlimits" to allow output of a subregion
+ of the full output. This is useful for raster surveys with large
+ numbers of images.
+ - Additional keywords may appear in the output headers.
+ - Scaling is now done relative to the first image rather than an average
+ over the images. This is done so that flux related keywords such as
+ exposure time and airmass remain representative.
+ - A median calculation was made faster.
+ - The previous version is available in the OBSOLETE package.
+
+ IMMATCH.IMCENTROID
+ IMMATCH.IMALIGN
+ A new parameter maxshift has been added to the imcentroid and imalign
+ tasks. Maxshift defines the maximum permitted difference between the
+ predicted and computed shifts. It is used to reject objects whose
+ positions have wandered too far from the predicted positions.
+
+ IMMATCH.GEOMAP
+ IMCOORDS.CCMAP
+ An iterative rejection capability has been added to the geomap and
+ ccmap tasks. The new parameter maxiter in combination with the existing
+ parameter reject define the rejection parameter. The default value of
+ the reject parameter has been changed from INDEF to 3.0.
+
+ The colon command ":order <value>" has been added to the geomap and ccmap
+ tasks. The new command enables the user to change all the order parameters
+ simultaneously when experimenting with different fitting functions.
+
+ IMCOORDS.STARFIND
+ The starfind task background estimation algorithm has been modified so
+ that it no longer depends on the value and density of the central pixel.
+
+ IMCOORDS.IMCCTRAN
+ Support for non-zenithal projections has been added to the imcctran task.
+ The previous technique of rotating the cd matrix does not work properly
+ for these functions. The new parameter longpole was added to imcctran.
+ Longpole enables the user to select either the cd matrix or longpole /
+ latpole method for transforming zenithal projections.
+
+ IMCOORDS.CCGET
+ The new task ccget was added to the imcoords package. Ccget extracts
+ objects in a user specified region from a a simple text file catalog.
+
+ IMCOORDS.CCSTD
+ The task ccstd was added to the imcoords package. Ccstd transforms pixel
+ and celestial coordinates to standard coordinates and vice versa.
+
+ IMUTIL.HEDIT
+ The new parameter addonly was added to hedit task. The addonly switch
+ is used to add a parameter to the image header only if it does not
+ already exist. The addonly switch has a precedence intermediate between
+ the add and delete switches.
+
+ IMUTIL.IMSTATISTICS
+ An interative rejection capability has been added to the imstatistics
+ task. The new parameters nclip, lsigma, and usigma define the rejection
+ parameters. A memory cacheing option was also added to imstatistics in
+ order to optionally speed up performance if iterative rejection is en-
+ abled or the midpt/mode is computed.
+
+ IMUTIL.IMEXPR
+ Support for the bitwise operators or (|), and (&), exclusive or (^), and
+ not (~) has been added to the imexpr task. The logical operators or (||)
+ and and (&&) have ben made truly logical i.e. they return 0's or 1's,
+ rather than results of a bitwise or and and.
+
+
+PROTO
+ MIMSTATISTICS
+ The new task mimstatistics has been added to the proto package.
+ Mimstatistics does image statistics through a mask.
+
+ RSKYSUB
+ The new task rskysub was added to the proto package. Rskysub does a
+ running mean or median sky subtraction on an ordered list of images
+ using optional background scaling and object masking.
+
+ MSKEXPR
+ The new task mskexpr has been added to the proto package. Mskexpr
+ creates a new mask from a user supplied expression, an optional
+ reference image, and an optional reference mask.
+
+ MSKREGIONS
+ The new task mskregions has been added to the proto package. Mskregions
+ creates a new mask or modifies an existing mask using a list of region
+ definitions or region expressions.
+
+
+XTOOLS
+ SKYWCS
+ A new library skywcs has been added to the xtools package. The skywcs
+ library is a set of routines for managing image and catalog celestial
+ coordinate systems and for transforming from one celestial coordinate
+ system to another. Skywcs is layered on the Starlink Positional
+ Astronomy library slalib which is installed in the iraf math package.
+
+ CATQUERY
+ A new library catquery was added to the xtools package. The catquery
+ library is a set of routines for doing local and remote catalog and
+ image survey access.
+
+SYSTEM
+ HELP
+ Task was modified to call the XHELP code to run the GUI version of
+ the task if requested. Task output is the same if the device
+ remains the default 'terminal' value, however resetting the 'device'
+ parameter to one of 'gui', 'html', or 'ps' will either spawn the GUI
+ task under xgterm or print the converted help page to the stdout.
+
+ LROFF
+ The task was enhanced with a new 'format' parameter that allows the
+ text to be formatted as one of: plain-text, HTML, or Postscript.
+
+
+
+
+7. Parameter File Changes
+
+In the tables below each parameter change is identified with one of the
+following codes followed by task name and the description of the change.
+ * n = new parameter
+ * c = changed/modified parameter
+ * d = deleted parameter
+
+
+CL
+ n cl Added the new CL parameter "release". This
+ is a string valued parameter with values such
+ as "2.11.3a", "2.12", "3.0" etc. This differs
+ from "version" which is a descriptive string
+ such as "NOAO/IRAF V2.11.3 EXPORT". There can
+ be multiple releases of one version of the
+ software, and "release" specifies exactly what
+ build the software is. The release strings are
+ composed in such a way that they can be used
+ in expressions, e.g. (release >= 2.11.3) would
+ be true for IRAF V2.11.3 and all subsequent
+ releases.
+
+DATAIO
+ c dataio.export Made the 'format' parameter automatic mode
+ c dataio.import Made the 'format' parameter automatic mode
+
+IMAGES
+ n imcoords.imcctran Added a new parameter longpole to the imcctran
+ task. If longpole=yes then coordinate transfor-
+ mations with zenithal projections will be rot-
+ ated using longpole rather than the CD matrix.
+
+ c immatch.wregister Fixed boundary option typo, "refect" to "reflect".
+ c immatch.sregister Fixed boundary option typo, "refect" to "reflect".
+
+ n immatch.imcentroid Added a new parameter maxshift to the imcentroid
+ immatch.imalign and imalign tasks. Maxshift is the maximum perm-
+ itted difference between the computed and predicted
+ shifts. Maxshift can be used to reject objects whose
+ centers have wandered too far from the expected
+ center. By default maxshift is undefined.
+
+ n immatch.geomap Added a new parameter maxiter to the geomap and
+ immatch.ccmap ccmap tasks. Maxiter defines the maximum number of
+ rejection iterations and has a default value of 0
+ for no rejection.
+
+ c immatch.geomap Changed the default value of the ccmap and geomap
+ c immatch.ccmap parameter reject from INDEF to 3.0.
+
+ c immatch.imcombine Numerous changes, see details above
+
+ c imgeom.imlintran Changed the nrows argument names to nlines
+
+
+ n imutil.hedit Added a new addonly parameter to the hedit task. If
+ addonly is set a new field will only be added to
+ the image header if it does not already exist.
+
+ n tv.imexamine Added new parameters 'output', 'ncoutput', and
+ 'nloutput' used by the new 't' keystroke when
+ outputting an image section centered on the cursor.
+
+SYSTEM
+ n help New parameters required for GUI options, output
+ formats for HTML/PS, printer, etc.
+ n lroff Added new 'format' parameter for HTML/PS output
+
+UTILITIES
+
+ c utilities.surfit Added support for the half cross-terms option to
+ the surfit task. This involved changing the type
+ of the xterms parameter from boolen (yes/no) to
+ string (none,half,full).
+
+NOAO
+
+ ASTUTIL
+ n astutil.setairmass new parameters ra, dec, equinox, st, ut, scale
+
+ DIGIPHOT
+ n apphot new package parameters wcsin, wcsout, and cache
+ n apphot.center new parameters wcsin, wcsout, cache
+ n apphot.daofind new parameters wcsout, cache
+ n apphot.fitpsf new parameters wcsin, wcsout, cache
+ n apphot.fitsky new parameters wcsin, wcsout, cache
+ n apphot.phot new parameters wcsin, wcsout, cache
+ n apphot.polymark new parameters wcsin, wcsout, cache
+ n apphot.polyphot new parameters wcsin, wcsout, cache
+ n apphot.qphot new parameters wcsin, wcsout, cache
+ n apphot.radprof new parameters wcsin, wcsout, cache
+ n apphot.wphot new parameters wcsin, wcsout, cache
+
+ n daophot new package params wcsin, wcsout, wcspsf, and cache
+ n daophot.addstar new parameters wcsin, wcsout, wcspsf, and cache
+ n daophot.allstar new parameters wcsin, wcsout, and wcspsf
+ n daophot.daoedit new parameters cache
+ n daophot.daofind new parameters wcsout, and cache
+ n daophot.group new parameters wcsin, wcsout, wcspsf, and cache
+ n daophot.nstar new parameters wcsin, wcsout, wcspsf, and cache
+ n daophot.peak new parameters wcsin, wcsout, wcspsf, and cache
+ n daophot.phot new parameters wcsin, wcsout, and cache
+ n daophot.psf new parameters wcsin, wcsout, and cache
+ n daophot.substar new parameters wcsin, wcsout, and cache
+
+
+ ONEDSPEC
+ n standard new parameter mag, magband, and teff. These
+ n splot params can be use to specify calibration files
+ n lcalib as blackbody curves scale to a specified magnitude
+
+ TWODSPEC
+ c apextract.apall1 Reduced the 'polysep' parameter.
+ c apextract.apdebug Reduced the 'polysep' parameter.
+ c apextract.apfit1 Reduced the 'polysep' parameter.
+ c apextract.apnoise1 Reduced the 'polysep' parameter.
+ c apextract.apnorm1 Reduced the 'polysep' parameter.
+ c apextract.apparams Reduced the 'polysep' parameter.
+
+
+
+
+
+8. Details of Major System Changes
+
+
+
+8.1 FITS kernel changes
+ The FITS kernel was modified to add support for storing images in
+ extensions as compressed pixel masks. The mask is stored as a binary
+ table using the "ZIMAGE" (compressed image) convention proposed by White,
+ Greenfield, Pence, and Tody in 1999:
+
+ http://heasarc.gsfc.nasa.gov
+ /docs/software/fitsio/compression/compress_image.html
+
+ In the current implementation only the "PLIO_1" compression
+ algorithm is implemented. Mask extensions may be read or written directly
+ by the kernel. When writing a new extension it will be appended to the
+ MEF file. To append an image to a MEF file as a mask, include "type=mask"
+ in the image kernel section when the output image is opened.
+
+ Masks are interfaced to the system as images and may be read and
+ written like any other image via IMIO. They have a normal image header
+ and can be manipulated with any program that deals with images. The pixel
+ type is INT.
+
+ It is also possible to access a mask image as a PLIO mask. An
+ IMSTATI query for IM_PLDES parameter will return the PLIO mask descriptor.
+ While a mask extension is opened under IMIO it is represented as a PLIO
+ mask and may be accessed in this form like any other mask.
+
+ The mask image is stored in the FITS binary table (BINTABLE)
+ extension when the image is closed, and is loaded from the extension when
+ the image is opened. The compression representation used to store the
+ mask in the binary table is the same as is used within PLIO. The new
+ (V2.12) encoding is used, allowing very large masks to be stored.
+ Currently masks up to 3D are supported. Data on each 2D mask plane
+ will be compressed in both X and Y as with PLIO. The depth of the mask
+ is preserved.
+
+ Although a mask is stored as a binary table the format of the
+ table is not completely general. In the current implementation there
+ can be only one column in the table (COMPRESSED_DATA). This is an
+ integer-valued variable length array column containing, for each line of
+ the N-dimensional image, the PLIO compressed version of that image line.
+ The actual compressed data is stored in the heap area of the table.
+ Multiple image lines may point to the same compressed line list, e.g.,
+ to store the empty line or to compression in Y.
+
+
+
+
+8.2 Large Image Support
+
+ The following changes were made to enable IMIO to use larger
+buffer sizes to optimize i/o for large images:
+
+ The default file buffer size set by IMIO is unchanged: it is still
+ about 512 MB, the value set for V2.11.2. However, a new parameter
+ IM_BUFFRAC was added. Both IM_BUFSIZE and IM_BUFFRAC are used to help
+ determine the FIO buffer size set when an image is opened. The logic
+ for this is implemented in imsetbuf.x.
+
+ Backwards compatibility. If you do nothing about IMIO/FIO buffers
+ in your program, the system may transparently use a larger buffer for
+ larger images. If you set BUFSIZE in your program, the system will
+ by default use the value you give, or possibly a larger value, if the
+ image you are accessing is very large. If you set BUFSIZE and you want
+ to guarantee that the value you set is used (even for very large images)
+ then you should also set BUFFRAC=0 to ensure that only BUFSIZE is used.
+
+ How it works. BUFFRAC specifies the default FIO buffer size used to
+ access an image, expressed as a percentage of the size of the image.
+ For example, the builtin default value of BUFFRAC=10 will try to make a
+ FIO buffer 10% of the size of the image. The actual value used will be
+ given by BUFFRAC, but will be at least BUFSIZE, and no more than a builtin
+ default maximum value, currently 32 MB. Given the builtin defaults,
+ the buffer size will range from 0.5 to 32 MB depending upon the size of
+ the image being accessed. As noted above, BUFSIZE and BUFFRAC can be
+ set to force the buffer size to a specific value if desired.
+
+ Environment variables for both parameters are provided. The names
+ are "IMIO_BUFSIZE" (specified as bytes) and "IMIO_BUFFRAC" (specified
+ as a decimal fraction). If defined, these override (at image open time)
+ the builtin default values for both parameters. An IMSET call by the
+ application will override all such defaults.
+
+ The FIO buffer allocated will not be larger than the size of the
+ image. The FIO buffer will also not exceed the maximum size set by
+ the file driver being accessed. For example, for PLIO images the file
+ buffer will not exceed about 2KB, even for a very large mask. This is
+ because the "pixel file" for a PLIO image is dev$null, the driver for
+ which specifies a maximum i/o buffer size of 2K (the real file to load
+ or save the mask will use a different descriptor).
+
+ The intent here is to provide an adaptive mechanism for setting the
+ FIO buffer size used to access an image, which automatically adapts to
+ the size of the image being accessed. If you access a lot of small
+ images you will get smaller buffers - everything will be as before.
+ If you access very large images, you may get large buffers up to the
+ builtin maximum value of (currently) 32 MB.
+
+ Using large buffers could cause a machine to run out of memory.
+ However, it is likely that if someone is working on 300 MB images
+ that they are using a machine which has a memory at least that large
+ - probably larger. If there are problems, the environment variable
+ overrides can be used to tune IMIO.
+
+ The reason for large file buffers is to limit the number of disk
+ data transfers, and hence the number of disk seeks. Using buffers larger
+ than a certain amount (32 MB is generous) is probably counterproductive.
+ If the i/o system provides 20 MB/sec i/o transfers, 32 MB will take
+ 1.6 seconds. This should be more than a large enough granularity to
+ provide efficient i/o, hence is a reasonable limit (at this point paging
+ effects are likely to dominate).
+
+
+
+8.3 Virtual Memory Cache
+
+ The VMcache client interface and daemon provide a method by
+which data-intensive IRAF tasks (or non-IRAF tasks for that matter) can
+manage how files/images are maintained in virtual memory to avoid
+excessive system paging. In essence it's a way to "lock" a specific
+image in memory to improve performance. As of this release no tasks in
+the system have been modified to make use of the VMcache daemon,
+however installing it in the system at this point provides a framework
+for future applications and systems development.
+
+ The following notes summarize the changes made for this feature
+and describe it's function in more detail. A more complete description
+of the interface, environment variables which control it, etc can be
+found in the main systems revisions file iraf$local/notes.v211.
+
+ The source for the developmental version of the VMcache library
+ and the VMcache daemon (vmcached) have been installed in the
+ unix$boot tree and the HSI binary file driver was modified to add VMcache
+ client support. This adds two new capabilities to the driver: 1)
+ built-in support for direct i/o (on systems that support it), and 2)
+ a client interface to the VMcache daemon to permit the daemon to
+ optimally manage binary file i/o if a VMcache daemon is present.
+
+ The vmcached code is complete but only enough debug/testing was done to
+ support development of the VMcache client interface for IRAF (the vmcached
+ code is debugged but the new version of the vmcache library code has
+ not been tested). Since the daemon can be utilized outside the normal
+ IRAF release we do not have to fully develop it for the release.
+
+ It should be stressed that VMcache is only useful or warranted for
+ systems that are very data intensive. The standard host operating
+ system file access heuristics are best for "normal" processing where
+ either the system is not really busy, or the datafiles are not
+ excessively large. On systems with very large physical memories
+ where massive amounts of data are being processed, VMcache can make
+ a significant difference in overall system performance.
+
+ VMcache is too complex to document here. Without going into the
+ details, its function is to manage a cache of files in system
+ virtual memory. Files can be explicitly cached or uncached, or they
+ can be "accessed", and VMcache will decide whether or not to cache
+ the file in virtual memory. This is what the VMcache client
+ interface does: every time it accesses (opens or extends) a file
+ larger then the VM threshold it sends an "access" directive to the
+ VMcache daemon. The daemon sends back a response of 0 (file not
+ cached; use direct i/o to access the file), or 1 (file cached in VM;
+ use normal VM-buffered i/o to access the file). Even if a file is
+ not cached the daemon keeps track of all accesses. Files which are
+ frequently accessed will have a higher prority and are more likely
+ to be cached in memory.
+
+ The VMcache daemon is a separate system-level program outside of
+ IRAF. This is necessary to provide a central system-wide cache
+ controller. It also provides flexibility, allowing multiple
+ versions of the daemon to exist, e.g., to allow experimentation with
+ different types of caching algorithms. It also allows easy
+ customization of the daemon independently of the IRAF applications
+ using the VMcache client interface.
+
+
+
+
+8.4 New Developer Libraries
+
+ o Several new libraries are now available for developers:
+
+ PSIO New Postscript text generation library installed in the
+ sys$psio. The PSIO interface is used to format a block of
+ text as Postscript output on a page of a given size (Letter,
+ Legal, A4 or B5). See the psio$README file for details.
+
+ CATQUERY Remote astrometric/photometric catalog access lib installed
+ in the XTOOLS utility library.
+ The catquery package provides a set of routines for local
+ and remote catalog and image survey server access. The sup-
+ ported catalogs and image surveys are described in records
+ stored in a catalog and image survey configuration file
+ respectively. The catalog and image survey records specify
+ the network address, the query format, and the output format
+ for each supported catalog or image display server. See
+ "help catalogs" and "help surveys" for details.
+
+ SKYWCS Sky coordinate transformation library installed in the XTOOLS
+ utility library.
+ The skywcs package contains a simple set of routines for
+ managing sky coordinate information and for transforming from
+ one sky coordinate system to another. The sky coordinate
+ system is defined either by a system name, e.g. "J2000",
+ "galactic", etc., or by an image system name, e.g. "dev$ypix"
+ or "dev$ypix world".
+
+
+
+
+9. System Changes Which May Affect You
+
+ * SHARED LIBRARY VERSION INCREMENTED (Sun/IRAF only)
+ The IRAF shared library for SunOS and Solaris platforms has been
+ incremented with this release due to the nature of various system
+ changes. Existing IRAF binaries (e.g. locally written software
+ or external packages) will continue to run using the old shared
+ image, however they will need to be recompiled against V2.12 in order
+ to pick up the numerous system bug fixes and features in this release.
+ In particular, pixel masks produced by V2.12 IRAF tasks may be
+ incompatible with external packages which have not been recompiled.
+
+ * EXTERNAL PACKAGE RECOMPILATION
+ The V2.12 release contains changes to the FIO and PLIO/PMIO interface
+ header files used by numerous applications. Relinking of an external
+ package may fail to pick up these changes and not recompile a source
+ file which uses one of these header files if the mkpkg file doesn't
+ correctly list all of the dependencies (nearly all packages have one
+ or more mkpkg files which have this problem). In the worst cases
+ this could lead to a runtime error due to the incompatibilities.
+
+ For this reason we recommend that all packages and local tasks be
+ recompiled (completely from source* (rather than simply relinked
+ against the new version) to assure that all changes and new features
+ will be included. Recompilation also guarantees that packages can
+ take advantage of some of the larger buffer sizes and optimizations
+ in this release. Site support can supply a list of missing mkpkg
+ dependencies for most external packages being developed outside NOAO
+ that wish to fix these files for a future release.
+
+ * PARAMETER FILE CHANGES
+ As with all major releases, we recommend that you do a MKIRAF and
+ delete all your old parameter files after the IRAF upgrade. You may
+ choose not to do this if you are in the midst of a project and have
+ setups that may be difficult to reproduce.
+
+ The automatic parameter file update/merge mechanism, which is used
+ if you do not initialize your parameters with MKIRAF, is based on
+ file date comparisons. If you run IRAF V2.11 after V2.12 has been
+ installed, the file dates on your uparm parameter files will be
+ more recent than the V2.12 installation date. If you then try to
+ run V2.12, the automatic parameter file merge/update will fail due
+ to the file dates. The system only updates personal parameter
+ files which are older than the update date of the system. A
+ MKIRAF avoids the problem if you delete your parameter files,
+ causing them to be updated from the system default versions.
+
+ * INSTALLATION SCRIPT CHANGES
+ As the first step of an ongoing effort to simplify the installation
+ and system configuration, the IRAF install script was rewritten to
+ do some error-checking of the iraf setup, present a simplified and
+ easier to read output, and do some common post-install configuration
+ of the system. Additionally, the SYSINFO diagnostic script for
+ finding system errors and reporting on the configuration, and a new
+ UNINSTALL script for removing IRAF files/links from the system have
+ also been installed. The old install script is still available as
+ a fallback in case problems with the new script are found.
+
+ * HELP SYSTEM CHANGES
+ The HELP task was modified with several new parameters controlling
+ the display and formatting of the help pages. Help may now be
+ presented as formatted text (as before), HTML, or fully formatted
+ Postscript. Additionally, users running under an XGterm window can
+ use the task in a new GUI mode. The help GUI allows users to browse
+ the help system and easily search for tasks/topics using a familiar
+ web-like interface. The GUI mode is not the default, but can be
+ enabled easily using the 'device' parameter.
+
+ * IMAGE DISPLAY CHANGES
+ Tasks which display images or interact with the image display were
+ modified to take advantage of new features added to XImtool V1.3
+ (e.g. the multiple WCS and pixel-value readouts and 16 display frame
+ buffers). These changes were done in a backwards compatible way so
+ interaction with display servers such as SAOimage, SAOtng, DS9, or
+ older XImtool versions should be unaffected. If problems are dis-
+ covered a CL environment variable 'disable_wcs_maps' can be defined
+ to force all of the old behaviors. These changes do not add any new
+ functionality to the tasks themselves, only the underlying display
+ protocols.
+
+ * PLIO Changes
+ The LEN and BLEN fields of the encoded line list (LL) descriptor
+ would limit the length of a pixel area (and hence the size of a
+ pixel mask) to the max size of a signed short, 32768. This was due
+ to the use of a simple array of type short to encode the line list
+ (which simplifies handling considerably). Nonetheless the limit to
+ 32K was unacceptable. The fix adopted was to increase the LL header
+ from 3 to 7 words. Two 16 bit words are now used to encode each of
+ LEN and BLEN. A "version" word was added to allow the old, new, and
+ future encodings to be distinguished. A "hdrlen" word was added to
+ parameterize the length of the LL header, rather than fix it at
+ compile time as in the initial version. With this change, the
+ maximum length of an image line under PLIO is increased from 32768
+ to 1073741824 (32768*32768). All the higher level PLIO code is
+ integer, so should already support larger masks.
+
+ This was done in such a way that old line lists can still be read,
+ although PLIO will always write out new format line lists (pixel
+ mask files and images, QPOE, and MWCS all store encoded line lists
+ in external storage, so backwards compatibility is important; also
+ existing complied programs will continue to generate the old
+ format). The cost is 8 bytes per encoded line list. For most masks
+ this should only increase the size of the mask by a few percent at
+ most.
+
+ * NEW ENVIRONMENT VARIABLES
+ The following new environment variables may be defined to tune the
+ size of the system file i/o buffers used by the image i/o system.
+ The system will automatically adjust to use larger buffers when
+ accessing larger images, these variables may be set to further
+ optimize the buffers
+
+ IMIO_BUFSIZE Size of the FIO buffer size in bytes.
+
+ IMIO_BUFFRAC FIO buffer size expressed as a percentage of
+ the image size. Actual value will be at least
+ BUFSIZE and no more than BUFMAX.
+
+ IMIO_BUFMAX Max size of FIO buffer which will override the
+ 32Mb default.
+
+
+ Other miscellaneous environment variables:
+
+ disable_wcs_maps If defined or set to 'yes', this variable will
+ force any tasks which interact with the image
+ display to use the old protocols.
+
+ pspage Variable which is used by the PSIO interface to
+ set the default page size. Acceptable values
+ include "letter" (the default) for US Letter,
+ "legal" for US Legal, and "a4" and "b5" for the
+ most common European sizes. Pspage can be used
+ by the new HELP and LROFF tasks to automatically
+ set the desired Postscript page size.
+
+ IRAF (Aug97) V2.11 Revisions Summary IRAF (Aug97)
+
+
+
+ IRAF V2.11 Revisions Summary
+ August 27, 1997
+
+Introduction
+
+ Modifications and additions to IRAF V2.11EXPORT, compiled since the last
+documented release of IRAF, V2.10.3, are summarized below. V2.11EXPORT is
+a major release of IRAF and will be available for all supported
+platforms. These release notes provide a summary of the major changes in
+V2.11. More detailed technical documentation of all system changes will
+be found in the "notes.v210" and "notes.v211" files in the iraf$doc and
+iraf$local directories.
+
+ 1. Things to be aware of or watch out for
+ 1.1. Parameter file changes
+ 1.2. Networking change
+ 1.3. Image format change
+ 1.4. FITS kernel
+ 1.5. RFITS/wfits changes
+ 1.6. Merged SunOS and Solaris IRAF systems
+ 1.7. Tape access
+ 1.8. Default magnitude zero changed
+
+ 2. IMAGES package changes
+
+ 3. Major system changes
+ 3.1. New FITS image kernel (FXF)
+ 3.2. Changes to the IRAF native image format (OIF)
+ 3.3. IMFORT changes
+ 3.4. Environment variables
+ 3.5. New intrinsic functions
+ 3.6. System default modifications
+ 3.7. Libraries added
+ 3.8. Graphics changes
+ 3.9. FITS-related core-level task changes
+ 3.10. General changes
+
+ 4. New tasks, or old tasks moved to new packages
+
+ 5. Task and package deletions
+
+ 6. Modifications to old tasks
+
+ 7. Parameter file changes
+
+
+The IRAF V2.11 release notes can also be found online on the Internet at
+the URL http://iraf.noao.edu/v211revs.html.
+
+
+1. Things to be aware of or watch out for
+
+
+1.1 Parameter file changes
+
+Since this is a major release we recommend that you do a mkiraf and
+delete all your old parameter files. You may choose not to do this if
+you are in the midst of a project and have setups that may be difficult
+to reproduce. Old IMAGES package parameter files will no longer be
+recognized, however, because of the package reorganization mentioned
+below. Generally, old parameter files are merged automatically with
+any new parameter files if there have been any changes, but if you do
+have problems you will need to unlearn the task before you can proceed.
+A list of the parameter file changes appears below and you may wish to
+check this list to see how this will affect your setups.
+
+The automatic parameter file update/merge mechanism, which is used if
+you do not initialize your parameters with mkiraf, is based on file date
+comparisons. If you run IRAF V2.10 after V2.11 has been installed, the
+file dates on your uparm parameter files will be more recent than the
+V2.11 installation date. If you then try to run V2.11, the automatic
+parameter file merge/update will fail due to the file dates. The system
+only updates personal parameter files which are older than the update
+date of the system. A mkiraf avoids the problem if you delete your
+parameter files, causing them to be updated from the system default
+versions.
+
+
+1.2 Networking change
+
+The "set node = foo" syntax, used to enable remote image display under
+IRAF networking, has changed. The new syntax requires that an
+exclamation be appended to the node name as in the example below (this
+dates back to V2.10.4 so many users will already be familiar with the
+feature).
+
+ cl> set node = "orion!"
+
+
+1.3 Image format change
+
+The internal IRAF image format (.imh images) has changed. V2.11EXPORT
+can read the old image format but the new image format is not readable
+by V2.10.4 or earlier versions. This means that you can not easily go
+from the new IRAF system (V2.11) to an old one (V2.10.4 or earlier)
+unless you first convert the V2.11 IRAF images to FITS files. All your
+old V2.10.4 or earlier images are readable by V2.11EXPORT. The benefit
+is that the new image format is machine independent, slightly more
+storage efficient, and supports long file pathnames. If it is
+necessary to be able to read images written by V2.11 with older
+software, V2.11 can be made to write the old IRAF image format by
+setting the oifversion environment variable, e.g., "set oifversion = 1"
+(the default is version 2). See below for details.
+
+
+1.4 FITS kernel
+
+A FITS image kernel is available in V2.11, allowing runtime read and
+write access to FITS files on disk. There are many related changes to
+IRAF image i/o and FITS support. More information on the new image
+kernel, and on the expanded FITS support available in V2.11, is given
+below.
+
+
+1.5 RFITS/WFITS changes
+
+rfits and wfits have been modified to support multi-extension FITS
+files. The extension numbering convention used is the same as in the
+FITS image kernel. As a result, users who read simple FITS files on
+disk with a command such as "rfits diskfilename 1 foo" will find that
+this no longer works - instead use "rfits diskfilename 0 foo". See
+below for details.
+
+
+1.6 Merged SunOS and Solaris IRAF systems
+
+A single installation of Sun/IRAF will now simultaneously support both
+SunOS and Solaris (previously separate IRAF distributions were required
+for each).
+
+
+1.7 Tape access
+
+The "tapecap" mechanism has changed. The system now looks for the
+filename "tapecap.<node>" followed by the default "tapecap". <node>:
+should be the hostname (as used by IRAF networking) of the server
+hosting the tape drives described by the tapecap file. For example if
+host "gemini" serves up some tape drives it's tapecap file is named
+"tapecap.gemini". If a server-specific tapecap file is not found the
+default "tapecap" (on the possibly remote server node) is used. This
+feature allows a single IRAF installation to be shared by multiple
+servers.
+
+
+1.8 Default magnitude zero changed
+
+The default APPHOT magnitude zero point has been changed from 26.0 to
+25.0 to bring it into agreement with the DAOPHOT package default value
+and thereby avoid confusion for users who switch back and forth between
+packages. The affected APPHOT tasks are phot, photpars, polypars,
+polyphot, qphot, radprof, and wphot. The APPHOTX package in the addon
+DIGIPHOTX package will retain the old zero point values until IRAF 2.11
+is released after which they will be updated.
+
+The default value of the magzero parameter in imexamine was changed
+from 30.0 to 25.0 for consistency with the DIGIPHOT package.
+
+
+2. IMAGES package changes
+
+The IMAGES package has been reorganized by function into the 7
+subpackages listed below.
+
+ imcoords - Image coordinates package
+ imfilter - Image filtering package
+ imfit - Image fitting package
+ imgeom - Image geometric transformation package
+ immatch - Image matching and combining package
+ imutil - Image utilities package
+ tv - Image display utilities package
+
+The new IMAGES package contains a total of 82 tasks, including 26 new
+tasks from the IMMATCH and VOL external addon packages, 6 existing
+PROTO package tasks, and 1 existing NOAO.PROTO package task. The
+undocumented IMAGES package IMDEBUG and its 6 tasks have been deleted
+from the IMAGES package. User should use the tasks in the ARTDATA
+package instead.
+
+This reorganization of the IMAGES package should be mostly transparent
+to the user and not affect any existing scripts, unless you were using
+any of the 6 deleted tasks. By default, the IMAGES subpackages are
+automatically loaded when you log in to the CL. Old parameter files
+will not be recognized since the package names have changed.
+
+
+3. Major system changes
+
+
+3.1 New FITS image kernel (FXF)
+
+V2.11 introduces a new image kernel providing runtime access to FITS
+multi-extension image datafiles. What this means is that IRAF tasks
+can now read and write FITS images directly at runtime. The native IRAF
+image format (used by images with the .imh extension), remains the
+default as it is the most efficient and well-tested format. IMH, FITS,
+and the other types of images supported by IRAF can be used
+interchangeably in most IRAF tasks. Although we have extensively tested
+the new FITS image kernel, it is still evolving, is complex, and still
+has some bugs. Users should use it with caution. Please let us know of
+any problems.
+
+Besides support for classical FITS images, the new FITS kernel also
+supports multi-extension FITS files: several FITS files packed into one
+large file with a PHU (Primary Header Unit) that contains global header
+information shared by the other files. Multi-extension FITS files are
+0-indexed, with the PHU being 0 and the first image extension (or other
+data extension) at index 1. If there is no PHU then the first FITS
+image is 0 and there is no global header.
+
+For further details about the FITS kernel please see the new FITS Kernel
+User's Guide by Nelson Zarate.
+
+
+3.2 Changes to the IRAF native image format (OIF)
+
+ o It was necessary to change the IRAF image format to increase the
+ maximum path length for header and pixel files. This made it necessary
+ to change the disk image format, since the old format only allowed 80
+ characters for the pixel file pathname. The path lengths can now be up
+ to 255 characters.
+
+ Support for two versions of the image and pixel file headers was added.
+ V2.11 will read both the old image format (V1) and the new image format
+ (V2). But the new image format is not readable by older versions of IRAF.
+
+ o Native format IRAF images (OIF type or extension ".imh") are now machine
+ independent, for example, a PC and a Sun can now access the same images.
+
+ o Support was added for byte swapping pixels. With the machine independent
+ image header, this allows .imh images to be read on any node (integer)
+ or any IEEE-compatible node (floating).
+
+ o Some pointers: "strings foo.imh" (or other tools like the "less" file
+ viewer) can be used at the Unix level to look at the text contained in
+ the new V2 OIF image headers.
+
+
+3.3 IMFORT changes
+
+ o IMFORT was brought up to date to read and write the new V2 ".imh" images.
+ The old V1 format is still supported but new images are written using
+ the new machine independent V2 format by default.
+
+ o Image headers can now be any size (the old IMFORT had a fixed, relatively
+ low, limit on the image header size).
+
+ o The "min_lenuserarea" variable is now supported by IMFORT (since IMFORT
+ is host level the variable must be defined in the host environment).
+ The builtin default header buffer is 64000 chars, which is about 800
+ card images.
+
+
+3.4 Environment variables
+
+Several new environment variable have been added to the system.
+
+ o The new environment variable imextn determines the image kernels
+ (image file formats) recognized by IRAF and defines the mapping of
+ imagefile extensions to these image formats. A file that does not have
+ an extension listed in imextn may not be recognized as an image by all
+ IRAF tasks. The default value of imextn is as follows:
+
+ imextn = "oif:imh fxf:fits,fit plf:pl qpf:qp stf:hhh,??h"
+
+ IRAF tasks will not recognize a file as an image unless it has an
+ extension (except rfits which will read FITS files on disk that
+ have no extensions). The rename task can be used to add
+ extensions to image files if needed. "imextn" can be redefined (use
+ reset imextn = "new-value") to modify the mapping of extensions to
+ image types.
+
+ The meaning of the fields of the default "imextn" are as follows. Each
+ substring corresponds to a single kernel. The "xxx:" is the internal
+ name of the image kernel, i.e. "oif", "fxf", "plf", etc. A comma
+ delimited list of the extensions, or extension patterns, associated with
+ that image format follows the colon. For example, for the FITS image
+ kernel, the internal kernel name is "fxf" and the system default file
+ extensions are ".fits" and ".fit".
+
+ - oif:imh - The original (native) IRAF image format.
+
+ - fxf:fits,fit - The FITS image extension format, which supports
+ classical FITS images as well as multi-extension FITS files.
+
+ - plf:pl - The pixel list format used for compressed pixel masks.
+
+ - qpf:qp - The QPOE image format for event list data (typically
+ X-ray or other high energy data).
+
+ - stf:hhh,??h - The Space Telescope runtime GEIS image format.
+
+ Users can define extensions for the fxf and stf kernels. For example,
+ if you have FITS files on disk that have a .ft extension then you can
+ reset imextn so that IRAF will recognize these image extensions:
+
+ cl> reset imextn="fxf:ft"
+
+ The new .ft extension for the FITS kernel images will now override the
+ default values - the other kernels remain unchanged. ".fits" will no
+ longer be recognized as a FITS file unless you include it in the list
+ of extensions for the "fxf" kernel.
+
+ The first extension given for a kernel defines the default file
+ extension for new images of that type (rather than e.g. the value of
+ imtype, or a builtin default).
+
+ The value of "imextn" is only read once when a process starts up. Hence
+ it is advisable to do a "flpr" (flush process cache) after changing
+ this variable, to force all processes to re-read it.
+
+ o The environment variable imtype defines the default image type for
+ new images created by IRAF. If a file extension is given explicitly
+ when creating a new image then this file extension, in combination with
+ the "imextn" mappings, determines the type of the new image. Otherwise
+ the type is determined by the value of "imtype". Typical values are
+ "imh" for native IRAF images, or "fits" for FITS images. The internal
+ kernel name documented above for "imextn" can be used instead of a file
+ extension to ensure that the desired image format is used regardless of
+ what extensions are assigned to that type by imextn.
+
+ The default value of imtype is "oif,noinherit" which means that the
+ IRAF native format is the default for all new images, regardless of the
+ type of the input image (i.e. do not "inherit" the input image type).
+ "inherit" was the default in V2.10 and earlier versions of IRAF.
+
+ For example, if you wish to use FITS as the default for new images you
+ can set imtype=fits as follows:
+
+ cl> reset imtype="fits"
+ cl> flpr % needed before the next task execution
+
+ Assuming "imextn" defines ".fits" as a valid file extension for FITS
+ imagefiles (kernel "fxf"), all new images produced by IRAF will be FITS
+ files with the extension .fits unless some other extension is given
+ explicitly when creating a new image.
+
+ cl> reset imtype = "imh,inherit"
+
+ This example sets the default type for new images to ".imh" for native
+ format images, but enables image type inheritance. By default new
+ images will be of the same type as the input image. For example if a
+ FITS image is being read another FITS image will be output, or if a
+ pixel mask is being read a pixel mask will be created.
+
+ You can override the default output image type specified by imtype by
+ giving an image extension (as defined by imextn) explicitly in the image
+ name, e.g. "pix.imh", "pix.fits", "pix.pl" and so on.
+
+ o A new environment variable called imclobber has been added.
+ The default value is set to no. If imclobber is set to yes, images
+ can and will be overwritten, without warning, when you create new
+ images.
+
+ o The original IRAF image format (OIF) kernel now supports an environment
+ variable oifversion which, if defined, specifies the file
+ version for new OIF images (for example, oifversion=2 produces the
+ new format, or version 2 images). By default the variable is undefined,
+ the builtin OIF default will be in effect, and new-format images will
+ be generated. This variable is provided only for backwards
+ compatibility, e.g., when using V2.11 IRAF with old software which
+ cannot easily be updated.
+
+
+3.5 New intrinsic functions
+
+Two new intrinsic functions were added to the CL, imaccess and defvar.
+imaccess tests whether an image exists, e.g., (imaccess("dev$pix")) or
+(imaccess(foo.fits[3])). defvar tests whether an environment variable
+exists, e.g. (defvar("imextn")).
+
+
+3.6 System default modifications
+
+ o The default size of the user area (min_lenuserarea) was increased
+ to 64000 (about 800 80 character cards). There was some ambiguity about
+ units for min_lenuserarea; it should be consistently characters now.
+
+ o The maximum number of open IRAF logical files was increased from 128 to
+ 256. This is good news for imcombine users.
+
+ o Various buffer limits were increased:
+
+ - The IRAF line length was increased from 161 to 1023 characters.
+ One often ran into this lower limit when entering a long list of
+ input image names, for example.
+
+ - CL commands can now be 2047 characters long (the old limit was
+ 1024) - this is particularly useful for scripts.
+
+ - IRAF file names can now be up to 255 characters long.
+
+ - Expanded file names (pathnames) can be up to 511 characters long.
+
+
+3.7 Libraries added
+
+The Starlink positional astronomy library SLALIB was added to the math
+package.
+
+
+3.8 Graphics changes
+
+ o SGI Translator change: Modified the header ID string produced by
+ sgi2uapl to be "%!PS", this is required by certain models of printers.
+
+ o Installed graphcap support for the STSDAS PostScript graphics kernel.
+
+ o The SGI graphics kernel was upgraded with a better roman font, and a
+ new greek font was added. To use the new high-quality greek fonts use
+ the "\fG" escape sequence when you use the "T" keystroke to mark text
+ in a plot, e.g., \fGa Hydra would produce " Hydra". The greek font
+ may also be used in label parameters for tasks like GRAPH, for example
+
+ cl> graph dev$pix xlabel="Wavelength\\fG(A)"
+
+ would produce an Angstrom symbol in parenthesis. The double backslash
+ is necessary to pass the escape string thru the CL. A file containing
+ the mappings for the greek fonts and other special characters can be
+ found at http://iraf.noao.edu/greek.ps.
+
+
+3.9 FITS-related core-level task changes
+
+
+3.9.1 IMHEADER
+
+The behavior of imheader has changed a bit - typed with no arguments it
+will list all the images in the current directory, as in the following
+example:
+
+ cl> imhead
+ pix4.imh[512,512][short]: m51 B 600s
+ boc.fits: FXF: must specify which FITS extension (boc.fits)
+ fits.fits[512,512][short]: m51 B 600s
+ pix.fits[512,512][short]: m51 B 600s
+ pix3.fits[512,512][short]: m51 B 600s
+ pix5.fits: FXF: must specify which FITS extension (pix5.fits)
+ zero.fits: FXF: must specify which FITS extension (zero.fits)
+ mask.pl[512,512][int]: m51 B 600s
+ foo.qp[1024,811][int]:
+
+The multi-extensions FITS files show up in the list with the message
+"FXF: must specify which FITS extension", since these files contain
+multiple images and the task does not know which image to open to get
+header information.
+
+At present imheader does not use "imextn" to determine what is and is
+not an image. The parameter "imlist" defines the valid imagefile
+extensions. If imextn is modified "imlist" may need to be modified as
+well.
+
+
+3.9.2 RENAME
+
+The rename task was modified to allow a destination directory to be
+specified without changing the filename. A new "field" parameter option
+"all" was added and made the default so the entire filename is changed
+(or moved in the case of a destination directory). When field is set
+to "extn" filenames without an extension will not have the new extension
+appended so a filename isn't generated which can get overwritten.
+
+
+3.9.3 rfits/wfits
+
+Some changes were also implemented in rfits and wfits to add support
+for multi-extension FITS files.
+
+ o The default action of wfits when writing to tape is unchanged for
+ single image files.
+
+ wfits now has a new parameter called "fextn" and it is set to
+ "fits". This parameter only affects FITS files written by wfits
+ to disk - the extension .fits will automatically be added to the
+ filenames, so that the files will be automatically recognized by
+ the FITS image kernel.
+
+ wfits also has two additional parameters called "extensions" and
+ "global_hdr" that deal with writing multi-extension FITS files.
+
+ o The default action of rfits from tape to disk remains unchanged.
+
+ If rfits is used to read FITS files on disk then users need to
+ be aware of a change to the behavior of the "file-list" parameter.
+ File-list is now used to define the list of files on the tape as
+ well as the list of extensions in a multi-extension FITS image.
+ To read single FITS images on disk use "" as the value for
+ "file-list". Some users have been using "1" for this value but now
+ that value will try to read the first extension which doesn't
+ exist - use "0" if you wish to put something there.
+
+ rfits will unpack multi-extension FITS files upon a read. If you
+ wish to retain the multi-extension FITS format then use T2D and
+ RENAME.
+
+The help pages have been updated to reflect these changes.
+
+wfits now writes ushort (16 bit unsigned short) images to FITS images
+with bitpix=16, bscale=1.0, and bzero=32768.0 by default. rfits will
+read these images back as type ushort.
+
+
+3.10 General changes
+
+ o The GSURFIT package has been updated to include support for the "half"
+ cross terms option useful in computing plate solutions. Tasks that can
+ make use of this feature have been updated although their default
+ behaviors have not changed.
+
+ o The code which computes the CD matrix from CDELT/CROTA was modified.
+ The old code computed the diagonal (scale) terms correctly but the
+ rotation terms were evidently incorrect. The old code was based on
+ the 1988 Hanisch and Wells WCS paper and the new code is based on a
+ more recent paper by Mark Calabretta et al, which supercedes the
+ 1988 representation. The affect of this change should be limited
+ as it only affects rotated images for which CDELT is given but no
+ CD matrix is defined. (V2.10.4p2)
+
+ o Several new celestial coordinate projection functions have been added.
+ Users with IPAC data that use the CAR projection function should now be
+ able to read the image coordinates directly with LISTPIXELS, etc.
+
+
+4. New tasks, or old tasks moved to new packages
+
+ Task Name Package Function
+
+ CCXYMATCH IMCOORDS Four new tasks for computing and evaluating
+ CCMAP simple astrometric plate solutions and storing
+ CCSETWC them in the image headers in fits-compatible
+ CCTRAN format.
+
+ CCFIND IMCOORDS CCFIND locate objects in an image given a
+ celestial coordinate list and the image wcs.
+
+ IMCCTRAN IMCOORDS Two new tasks for transforming celestial
+ SKYCTRAN coordinate lists and image celestial
+ coordinate systems from one celestial
+ coordinate system to another.
+
+ STARFIND IMCOORDS STARFIND automatically detects stellar objects
+ in a list of images.
+
+ WCSCTRAN IMCOORDS A new task for transforming between IRAF image
+ coordinate systems.
+
+ WCSEDIT IMCOORDS Two unaltered former PROTO package tasks for
+ WCSRESET editing IRAF image coordinate systems.
+
+ FRMEDIAN IMFILTER Four new tasks for doing circular/elliptical/
+ FRMODE ring image median filtering.
+ RMEDIAN
+ RMODE
+
+ IM3DTRAN IMGEOM The former addon VOL package task IM3DTRAN for
+ doing 3D image transposes.
+
+ GEOXYTRAN IMMATCH A new task for transforming coordinate lists
+ using the results of the GEOMAP task.
+
+ IMCENTROID IMMATCH Four new tasks for computing matched pixel
+ SKYXYMATCH lists. IMCENTROID is a modified version of the
+ WCSXYMATCH PROTO package task of the same name.
+ XYXYMATCH
+
+ SKYMAP IMMATCH Two new tasks for computing geometric
+ WCSMAP transforms using the image coordinate system
+ information.
+
+ IMALIGN IMMATCH Three new tasks for doing automated image
+ SREGISTER registration. IMALIGN is a modified version
+ WREGISTER of the PROTO package task of the same name.
+
+ WCSCOPY IMMATCH A new task for copying the coordinate system
+ of a reference image to a set of input images.
+
+ PSFMATCH IMMATCH A new task for matching the PSFs of a set of
+ input images to the PSF of a reference image
+ using Fourier techniques.
+
+ LINMATCH IMMATCH A new task for matching the linear intensity a
+ scale of a set of input images to the
+ intensity scale of a reference image.
+
+ IMFUNCTION IMUTIL The former PROTO package task for applying a
+ single argument function to an image.
+
+ IMJOIN IMUTIL The former addon VOL package task for joining
+ same-dimensioned images along a specified
+ dimension.
+
+ IMREPLACE IMUTIL The former PROTO package task IMREPLACE for
+ replacing bad pixels based on their value.
+
+ IMTILE IMUTIL A modified version of the NOAO.PROTO IRMOSAIC
+ task for tiling same sized 2D images into a
+ single mosaiced image.
+
+ EXPORT DATAIO Two new tasks from the external IMCNV package
+ IMPORT for exporting IRAF images to binary formats
+ and for importing binary files into IRAF
+ images.
+
+ TEXT2MASK PROTO This new task appears in conjunction with a
+ new pixel mask based version of FIXPIX.
+
+ IMEXTENSIONS PROTO This task selects and lists image extensions
+ in files. Image extensions currently occur
+ in multi-extension FITS files and multi-group
+ Geiss (STF format) files.
+
+ CCDMASK CCDRED This new task creates a pixel mask from a
+ CCD image.
+
+ AIDPAR ONEDSPEC New parameter set for automatic line
+ identification for the tasks AUTOIDENTIFY,
+ IDENTIFY and REIDENTIFY.
+
+ AUTOIDENTIFY ONEDSPEC A new task to automatically identify lines
+ and fit the dispersion function.
+
+ SKYTWEAK ONEDSPEC Sky spectra are shifted and scaled to best
+ subtract sky features from data spectra.
+
+ TELLURIC ONEDSPEC Telluric calibration spectra are shifted and
+ scaled to best divide out telluric features
+ from data spectra.
+
+ ASTCALC ASTUTIL An astronomical calculator.
+
+ ASTRADIUS ASTUTIL Finds images within a circle on the sky.
+
+
+5. Task and package deletions
+
+CUBE, DUMP, GSUBRAS, MAXMIN, MKIMAGE, MKTEST: These tasks have been
+superseded by the equivalent tasks in the IMAGES or ARTDATA packages.
+The functionality of these tasks still exists in the
+iraf$pkg/images/lib/zzdebug.x file.
+
+REGISTER: This task has been renamed to GREGISTER.
+
+IMALIGN, IMCENTROID, IMFUNCTION, IMREPLACE, WCSEDIT, WCSRESET: Moved to
+the IMAGES package.
+
+
+6. Modifications to old tasks
+
+Grouped by package, a list of modifications to old tasks in IRAF are
+summarized below. We have included modifications since the V2.10.3
+release.
+
+IMFILTER:
+ FMEDIAN, FMODE, MEDIAN, MODE
+ Minimum and maximum good data value parameters zloreject and zhireject
+ and a verbose option parameter were added.
+ MEDIAN, MODE
+ The 64 x 64 maximum kernel size limit was removed from these tasks.
+
+IMMATCH:
+ GEOMAP
+ Renamed the output parameter to database for the sake of consistency
+ with other new images tasks.
+
+ Changed the default value of the reject parameter from 0.0 to INDEF.
+
+ Added the transforms parameter. Transforms permits the user to specify
+ the names of the output database records explicitly.
+
+ Added the parameter results. Results permits the user to save a summary
+ of the results including a description of the transform geometry, and a
+ listing of the input coordinates, the fitted coordinates, and the fit
+ residuals.
+
+ Added the fitgeometry parameter. Fitgeometry permits the user to
+ constrain the linear part of the fit to: 1) x and y shifts only, 2) x
+ and y shifts and rotation only, 3) x and y shifts and x and y scale
+ changes only, 4) x and y shifts, rotation, and a scale change only, 5)
+ x and y shifts, rotation, x and y scale changes only, and 5) x and
+ shifts, rotation, skew, and x and y scale changes.
+ GREGISTER
+ Renamed the register task gregister to emphasize that it is paired with
+ the geomap task and to avoid confusion with the new registration tasks.
+ GEOTRAN, GREGISTER
+ Renamed the transform parameter to transforms.
+
+ Added the verbose parameter.
+ GEOTRAN
+ Added the ability to write to a section of an existing image.
+ IMCOMBINE
+ The limit of the number of images that may be combined has been
+ removed. If the number of images exceeds the maximum number of
+ open images permitted then the images are stacked in a single
+ temporary image and then combined with the project option.
+ Note that this will double the amount of diskspace
+ temporarily. There is also a limitation in this case that the
+ bad pixel mask from the first image in the list will be applied
+ to all the images.
+
+ Integer offsets may be determined from the image world
+ coordinate system.
+
+ A combination of ushort and short images now defaults to
+ integer.
+
+ Added support for type ushort images.
+
+ Added a new options for computing offsets using the image wcs.
+
+ Removed the limit on the maximum number of images that can be combined.
+ IMALIGN, IMCENTROID
+ Renamed the images parameter to input, changed the reference parameter
+ mode from hidden to automatic, and reversed the order of the reference
+ and coords parameters.
+
+IMUTILS:
+ IMEXPR
+ Modified the task so that it will accept an image name that looks like
+ a number in the first few characters, but which is really an image
+ name. For example, "123.imh" or "../foo.imh". The previous version
+ of imexpr was treating any string which looked like a number in the
+ first few characters as a numeric constant. (V2.10.4p2)
+ IMREPLACE
+ The lower value is now rounded up for integer images so that a
+ range like 5.1-9.9 affects pixels 6-9 instead of 5-9.
+ IMSUM
+ Now allows "ushort" data types.
+
+TV:
+ DISPLAY
+ The bad pixel mask, overlay mask, sample mask, and overlay
+ colors parameters and functionality have been added. The
+ "nsample_lines" parameter is now an "nsample" parameter.
+
+ Bugs in the coordinate system sent to the image display for
+ cursor readback were fixed.
+ IMEDIT
+ If xorder or yorder are zero then a median background is
+ computed for the 'a' and 'b' keys.
+ IMEXAMINE
+ ('a' and 'r'): The fit to the radial profile points now
+ includes both a Gaussian and a Moffat profile. The Moffat
+ profile exponent parameter, beta, may be fixed or left free to
+ be fit.
+
+ ('a' and 'r'): New estimates fo the FWHM were added to the 'a'
+ and 'r' keys. These include the Moffat profile fit noted
+ above, a direct measurement of the FWHM from the radially
+ binned profile, and a Gaussian or Moffat fit to the radial
+ enclosed flux profile. The output from these keys was modified
+ to include the new information.
+
+ ('a' and 'r'): The direct FWHM may be used to iteratively
+ adjust the fitting radius to lessen the dependence on the
+ initial fitting radius value.
+
+ ('k'): Added a kimexam parameter set.
+
+ The default value of rimexam.magzero parameter was changed from
+ 30.0 to 25.0 for consistency with the digiphot package.
+
+PROTO:
+ FIELDS
+ The default value for the lines parameter was changed to an open
+ upper limit.
+
+ Changed the default value of the lines parameter from "1-999" to
+ "1-" so that the upper bound would be open ended.
+ FIXPIX
+ This task replaces the old task (now obsolete.ofixpix) and
+ works with the more general pixel mask facilities. It also
+ provides greater flexibility in chosing the interpolation
+ direction.
+
+ICFIT used in various tasks:
+ ICFIT
+ The :xyshow output was modified to 1) not include colon labels,
+ 2) print (X, Y, Y fit, Weight) instead of (X, Y fit, Y), and 3)
+ the printed values are those actually used in the fit when using
+ composite points (naverage not 1).
+
+ARTDATA:
+ MK1DSPEC
+ Lorentzian and Voigt profiles were added and the parameters and
+ input line list format were changed. The widths are now FWHM
+ instead of gaussian sigmas.
+ MKOBJECTS, MKNOISE
+ The default value of "ranbuf" was changed to zero.
+ GALLIST
+ The default value for the minimum elliptical galaxy axial ratio
+ was changed to 0.3 to cover the range E0-E7 uniformly.
+ MKPATTERN
+ Now allows ndim=0 to make an dataless header.
+ Now allows ushort pixel type.
+
+ASTUTIL:
+ SETJD
+ The checking of the epoch keyword value was improved.
+ Previously if there was a problem with the keyword value
+ (missing or malformed) the task would use the epoch of the
+ observation. Now it is an error if an epoch keyword is
+ specified but the epoch value can't be determined. Also a
+ leading 'B' or 'J' is allowed and a warning will be given if
+ the epoch value is unlikely.
+ ASTHEDIT
+ There are new astronomical functions and input/output functions.
+ The command syntax may now use "=" as a delimiter as well as
+ the whitespace.
+
+ A new parameter "update" allows protecting images and accessing
+ read-only images for the purpose of calculating and printing
+ quantities.
+
+ The special variable name "$I" has the value of the image name,
+ $D the current date, and $T the current time.
+
+ The case of no image name creates and deletes a temporary image
+ so the task can be used purely as a calculator (but see
+ astcalc).
+
+CCDRED:
+ CCDPROC
+ The bad pixel fixing was modified to allow use of pixel masks,
+ images, or the text file description. Bad pixel masks are the
+ desired description and use of text files is only supported for
+ backward compatibility. Note that support for the trimmed or
+ untrimmed conversion from text files has been eliminated.
+
+ Line-by-line overscan/prescan subtraction is now provided with
+ three simple algorithms.
+ COMBINE
+ The limit of the number of images that may be combined has been
+ removed. If the number of images exceeds the maximum number of
+ open images permitted then the images are stacked in a single
+ temporary image and then combined with the project option.
+ Note that this will double the amount of diskspace
+ temporarily. There is also a limitation in this case that the
+ bad pixel mask from the first image in the list will be applied
+ to all the images.
+
+ Integer offsets may be determined from the image world
+ coordinate system.
+
+ Fixed a bug where a variable was improperly used for two different
+ purposes causing the algorithm to fail. This also affected IMCOMBINE
+ and SCOMBINE. See bug 316 for details. (V2.10.4p2)
+ COSMICRAYS
+ The output bad pixel data accidentally included some extra fields
+ making it incorrect to use the file directly with BADPIXIMAGE.
+ The extra diagnostic fields were removed. For details, see bug 311
+ in the buglog. (V2.10.4p2)
+
+ECHELLE:
+ ECIDENTIFY
+ The dispersion units are now determined from a user parameter,
+ the coordinate list, or the database entry.
+
+IMRED Spectral Packages:
+ DOARGUS, DOFIBERS, DOHYDRA
+ A sky alignment option was added.
+
+ The aperture identification can new be taken from image header
+ keywords.
+
+ The initial arc line identifications is done with the automatic
+ line identification algorithm.
+ DOSLIT, DO3FIBER
+ The initial arc line identifications is done with the automatic
+ line identification algorithm.
+
+ONEDSPEC:
+ Support for the Sloan Sky Survey was added by allowing multifiber
+ reductions with up to 500 fibers with non-linear dispersions. (V2.10.4p2)
+
+ BPLOT
+ Fixed a general problem in BPLOT and SLIST that caused a segmentation
+ violation error. See buglog 312 for details. (V2.10.4p2)
+ FITPROFS
+ Modified to include lorentzian and voigt profiles. The
+ parameters and positions file format have changed in this
+ version. A new parameter controls the number of Monte-Carlo
+ samples used in the error estimates.
+ IDENTIFY
+ The dispersion units are now determined from a user parameter,
+ the coordinate list, or the database entry.
+ A new key, 'e', has been added to add features from a line list
+ without doing any fits. This is like the 'l' but without the
+ automatic fitting before and after adding new features.
+
+ A new key, 'b', has been added to apply an automatic line
+ identification algorithm.
+
+ The 'x' key has been changed to use the automatic line
+ identification algorithm. The allows finding much larger
+ shifts.
+
+ The match parameter may now be specified either in user
+ coordinates or in pixels. The default is now 3 pixels.
+
+ The default threshold value has been changed to 0.
+ REIDENTIFY
+ A new parameter, "search", was added to specify a search radius
+ for the automatic line identification algorithm.
+
+ The "nlost" parameter now also applies when not tracing; i.e. it
+ will issue a warning and not record a solution if the specified
+ number of features is lost when reidentifying against a specific
+ reference spectrum as is done with multispec data.
+
+ The task will now work with only a warning if the reference
+ image is absent; i.e. it is possible to reidentify given only
+ the database.
+
+ The addfeatures function will now add features before a fit if
+ there are no reference database features. Previously features
+ could only be added after an initial fit using the reference
+ features and, so, required the reference database to contain
+ features for reidentification. This new feature is useful if
+ one wants to uses a dispersion function from one type of
+ calibration but wants to add features for a different kind of
+ calibration.
+ SAPERTURES
+ This task has been modified to allow use of image header
+ keywords as done in the APEXTRACT package.
+ SARITH
+ Previously both w1 and w2 had to be specified to select a range
+ to be used. Now if only one is specified the second endpoint
+ defaults to the first or last pixel.
+
+ The noise band in multispec data is only copied from the primary
+ spectrum and not modified. This is a kludge until the noise is
+ handled properly.
+
+ Fixed a problem in SARITH and SCOPY where a segmentation error
+ occurred when a wavelength range was specified in the reverse sense
+ of the data and without rebinning. See buglog 323 for details.
+ (V2.10.4p2)
+ SBANDS
+ Fixed a problem in SBANDS that caused a segmentation violation when
+ the number of input bandpasses was greater than 10. See buglog 298
+ for details. (V2.10.4p2)
+ SCOPY
+ Previously both w1 and w2 had to be specified to select a range
+ to copy. Now if only one is specified the second endpoint
+ defaults to the first or last pixel.
+ SPECPLOT
+ The scale and offset parameters may now be a value, a filename,
+ or and image header keyword.
+
+ The 'f' key was added to toggle between world and logical pixel
+ coordinates.
+ SPLOT
+ The profile fitting and deblending was expanded to include
+ lorentzian and voigt profiles. A new parameter controls the
+ number of Monte-Carlo samples used in the error estimates.
+ RSPECTEXT
+ The task now automatically senses the presence of a header.
+
+APEXTRACT:
+ APALL, APSUM, APNOISE, APNORMALIZE, APSCATTER, APTRACE,
+ APRECENTER, APRESIZE, APMASK, APFIND, APFLATTEN
+ The "apertures" parameter can be used to select apertures for
+ resizing, recentering, tracing, and extraction. This parameter
+ name was previously used for selecting apertures in the
+ recentering algorithm. The new parameter name for this is now
+ "aprecenter".
+ APALL, APSUM
+ The "nsubaps" parameter now allows onedspec and echelle output
+ formats. The echelle format is appropriate for treating each
+ subaperture as a full echelle extraction.
+ APALL
+ The aperture ID table information may now be contained in the
+ image header under the keywords SLFIBnnn.
+ APSUM
+ The dispersion axis parameter was moved to purely a package
+ parameter.
+
+ As a final step when computing a weighted/cleaned spectrum the
+ total fluxes from the weighted spectrum and the simple
+ unweighted spectrum (excluding any deviant and saturated
+ pixels) are computed and a "bias" factor of the ratio of the
+ two fluxes is multiplied into the weighted spectrum and the
+ sigma estimate. This makes the total fluxes the same. In this
+ version the bias factor is recorded in the logfile if one is
+ kept. Also a check is made for unusual bias factors. If the
+ two fluxes disagree by more than a factor of two a warning is
+ given on the standard output and the logfile with the individual
+ total fluxes as well as the bias factor. If the bias factor is
+ negative a warning is also given and no bias factor is applied.
+ In the previous version a negative (inverted) spectrum would
+ result.
+
+RV:
+ RVIDLINES, RVREIDLINES
+ These tasks now work in the units of the input spectra.
+ FXCOR
+ The input spectra are converted to Angstroms for the
+ crosscorrelation and analysis. Thus the velocities will
+ be correctly computed regardless of the units of the
+ input spectra.
+
+DAOPHOT:
+ DAOFIND
+ A major bug in the DAOFIND task centering code that affects the
+ computed x and y positions was fixed. Users should refer to bug
+ log entry number 332 for details. (V2.10.4p2)
+
+ A new roundness statistic was added to the DAOFIND output to
+ bring the task into conformance with standalone DAOPHOT II. The new
+ statistic is sensitive to and tries to eliminate detected objects
+ which are significantly elongated in directions other than 0, 90,
+ 180, and 270 degrees. The original roundness statistic is stored in
+ the ground column, the new one in the sround column. The same
+ default roundness limits apply to both statistics. (V2.10.4p2)
+
+ DAOPARS
+ Added a new parameter "mergerad" to the DAOPARS parameter set.
+ Mergerad permits the user to control the merging process. If
+ mergerad is INDEF (the default setting) the default merging radius
+ is used. If mergerad is 0 object merging is turned off altogether.
+ Otherwise the user can set the merging radius to a specific value.
+ Mergerad is used by the nstar and allstar tasks, but their default
+ behavior is unchanged. (V2.10.4p2)
+
+ Changed the name of the "critovlap" parameter to "critsnratio" to
+ avoid confusion with the the meaning of the parameter especially
+ with regard the mergerad parameter. The behavior of the parameter is
+ unchanged. (V2.10.4p2)
+
+
+7. Parameter file changes
+
+The parameter file changes below are for modifications between V2.10.4
+and V2.11. For a list of parameter file changes between V2.10.3 and
+V2.10.4 see the file iraf/v210/params.v2104.Z in the IRAF FTP archives.
+
+In the tables below each parameter change is identified with one of the
+following codes followed by task_name.parameter_name and the
+description of the change.
+
+ n = new parameter
+ c = changed/modified parameter
+ d = deleted parameter
+
+TV:
+ n display.nsample: replaces nsample_lines
+ d display.nsample_lines: replaced by nsample
+ n display.bpmask: specify a bad pixel mask
+ n display.bpdisplay: specify display mode for bad pixel mask
+ n display.bpcolors: specify overlay colors for bad pixel mask
+ n display.overlay: specify an overlay mask
+ n display.ocolors: specify overlay colors for overlay mask
+ n display.zmask: specify a sample mask for the zscale calculation
+ c imedit.xorder: now allows a value of zero for median background
+ c imedit.yorder: now allows a value of zero for median background
+ n rimexam.fittype: specify a profile type to fit - default is now moffat
+ n rimexam.iterations: specify number of iterations to adjust fitting radius
+ n rimexam.beta: specify beta value for moffat fitting
+ c rimexam.buffer: default value changed from 1 to 5
+ c rimexam.width: default value changed from 2 to 5
+ c rimexam.magzero: default value changed from 30 to 25
+ n wcslab.overplot: specify overplotting
+
+DATAIO:
+ n wfits.fextn: extension to append to output disk FITS filename - default is
+ fits
+ n wfits.extensions: write all images to a single FITS file ? - default is no
+ n wfits.global_hdr: prepend a global header to the FITS extensions - default
+ is yes
+
+IMAGES:
+ n fmedian.zloreject: good data minimum
+ n fmedian.zhireject: good data maximum
+ n fmedian.verbose: verbose option
+ n fmode.zloreject: good data minimum
+ n fmode.zhireject: good data maximum
+ n fmode.verbose: verbose option
+ n median.zloreject: good data minimum
+ n median.zhireject: good data maximum
+ n median.verbose: verbose option
+ n mode.zloreject: good data minimum
+ n mode.zhireject: good data maximum
+ n mode.verbose: verbose option
+ n geomap.transforms: list of record names
+ n geomap.results: results summary file
+ n geomap.fitgeometry: fitting geometry
+ d geomap.output: renamed to database
+ c geomap.reject: changed from 0.0 to INDEF
+ n [g]register.verbose: verbose option
+ d [g]register.transform: renamed to transfo
+ n geotran.verbose: verbose option
+ d geotran.transform: renamed to transforms
+ c imcombine.offsets: now allows specifying "wcs" to compute offsets from WCS
+ d imalign.images: renamed to input
+ c imalign.reference: went from hidden to auto
+ c imalign.coords: reversed places with reference
+ d imcentroid.images: renamed to input
+ c imcentroid.reference: went from hidden to auto
+ c imcentroid.coords: reversed places with reference
+ n imheader.imlist: default image names
+
+PLOT:
+ n graph.ltypes: specify the line types
+ n graph.colors: specify the colors
+
+PROTO:
+ n fixpix.masks: new version specifies bad pixel masks
+ n fixpix.linterp: specify mask values for line interpolation
+ n fixpix.cinterp: specify mask values for column interpolation
+ n fixpix.pixels: list pixels that are modified
+ d fixpix.badpixels: new version does not use bad pixel region description
+ c fields.lines: default value changed from "1-9999" to "1-"
+
+ARTDATA:
+ n mk1dspec.profile: define the profile type
+ n mk1dspec.gfwhm: replaces sigma for gaussian profile width
+ n mk1dspec.lfwhm: width for lorentzian profile
+ c artdata.randbuf: default value changed from 1000 to 0.
+ c mkpattern.ndim: allows a value of 0 for a dataless header.
+ c mkpattern.pixtype: allows ushort.
+ c gallist.ar: default value changed to 0.3.
+ d mk1dspec.sigma: replaced by gfwhm
+
+ASTUTIL:
+ n rvcorrect.keywpars: added to define keywords used
+ n asthedit.prompt: used for new calculator option
+ n asthedit.update: update the header
+ n asthedit.oldstyle: to allow backward compatibility
+
+APEXTRACT, IMRED spectral packages:
+ n apnoise.apertures: select apertures to be used
+ n apfit.apertures: select apertures to be used
+ n apedit.apertures: select apertures to be used
+ n apfind.apertures: select apertures to be used
+ n apnormalize.apertures: select apertures to be used
+ n apscatter.apertures: select apertures to be used
+ n apsum.apertures: select apertures to be used
+ n aptrace.apertures: select apertures to be used
+ n apresize.apertures: select apertures to be used
+ n apmask.apertures: select apertures to be used
+ n apflatten.apertures: select apertures to be used
+ n aprecenter.apertures: select apertures to be used
+ n aprecenter.aprecenter: was what was previously the apertures parameter
+ n apall.apertures: select apertures to be used
+ n apall.aprecenter: was what was previously the apertures parameter
+
+ARGUS, HYDRA, SPECRED:
+ n doargus.crval: for automatic line identifications
+ n doargus.crdelt: for automatic line identifications
+ n doargus.skyalign: night sky alignment option
+ n dohydra.crval: for automatic line identifications
+ n dohydra.crdelt: for automatic line identifications
+ n dohydra.skyalign: night sky alignment option
+ n dofibers.crval: for automatic line identifications
+ n dofibers.crdelt: for automatic line identifications
+ n dofibers.skyalign: night sky alignment option
+ n do3fiber.crval: for automatic line identifications
+ n do3fiber.crdelt: for automatic line identifications
+
+ARGUS, HYDRA, KPNOCOUDE, KPNOSLIT, SPECRED:
+ c params.match: default value changed to -3 (3 pixels instead of Angstroms)
+ c sparams.match: default value changed to to -3 (3 pixels instead of Angs)
+
+ONEDSPEC, IMRED spectral packages:
+ d fitprofs.sigma: replaced by gfwhm
+ d fitprofs.function: replaced by profile
+ d fitprofs.fitsigmas: replaced by fitgfwhm
+ d rspectext.header: removed since the task now senses the header information
+
+ONEDSPEC, LONGSLIT, IMRED spectral packages:
+ n identify.units: specify the desired units for the dispersion function
+ n identify.crval: for automatic line identifications
+ n identify.crdelt: for automatic line identifications
+ n identify.aidpars: parameter set for automatic line identifications
+ c identify.match: default value changed to -3 (3 pixels instead of Angstroms)
+ c identify.threshold: default value changed from 10 to 0.
+ c reidentify.match: default value changed to -3 (3 pixels instead of Angs)
+ c reidentify.threshold: default value changed from 10 to 0.
+ n reidentify.crval: for automatic line identifications
+ n reidentify.crdelt: for automatic line identifications
+ n reidentify.aidpars: parameter set for automatic line identifications
+ n reidentify.search: specify a search radius for the automatic line
+ identification algorithm
+ n ecidentify.units: specify the desired units for the dispersion function
+ n fitprofs.profile: define the profile type
+ n fitprofs.gfwhm: replaces sigma for gaussian profile width
+ n fitprofs.lfwhm: width for lorentzian profile
+ n fitprofs.fitgfwhm: replaces fitsigmas
+ n fitprofs.fitlfwhm: select whether to fit lorentzian profile widths
+ n fitprofs.nerrsample: allows control of the error calculation accuracy
+ n splot.nerrsample: allows control of the error calculation accuracy
+
+CCDRED:
+ c ccdproc.fixfile: this now specifies a bad pixel mask
+ c combine.offsets: now allows specifying "wcs" to compute from WCS
+
+RV:
+ n rvcorrect.par: Added the KEYWPARS pset declaration
+
+DAOPHOT:
+ c daopars.critsnratio: critical S/N ratio for group membership - changed
+ the name only from critovlap (V2.10.4p2)
+ n daopars.mergerad: critical object merging radius in scale units
+ (V2.10.4p2)
+ IRAF (Jul92) V2.10 Revisions Summary IRAF (Jul92)
+
+
+ IRAF Version 2.10 Revisions Summary
+ July 1992
+
+
+
+
+1. Introduction
+
+ This document summarizes the changes made to IRAF in version 2.10.
+V2.10 is a major release of IRAF, meaning that there were significant
+changes to both the system and applications software, and the release
+will eventually be made available on all supported platforms.
+
+By IRAF version 2.10 we refer only to the core IRAF system and NOAO
+packages. Numerous external or "layered" packages are also available
+for IRAF, for example the NSO package (solar astronomy), the ICE
+package (data acquisition), the STSDAS package from STScI (HST data
+reduction and analysis), the TABLES package from STScI (tabular data),
+the XRAY package from SAO (X-ray data analysis), and so on. These
+packages are layered upon the IRAF core system, and once installed, are
+indistinguishable from the rest of IRAF. Layered packages are
+developed and maintained separately from the core IRAF release and
+follow independent release schedules, hence we will not discuss them
+further here. Contact the IRAF project or any of the outside groups
+supporting IRAF layered packages for additional information on what is
+available.
+
+This document is intended only as an overview of what is new in version
+2.10 IRAF. More detailed documentation will be found in the systems and
+applications notes files (files sysnotes.v210.Z and pkgnotes.v210.Z in
+the network archive), in the online help pages, and in any reference
+papers or user's manuals distributed with the software. The IRAF
+Newsletter is a good source of information for new IRAF software.
+
+This revisions summary is organized as follows:
+
+ 1. Introduction
+
+ 2. IRAF System Revisions
+
+ 3. IRAF and NOAO Package Revisions
+ 3.1. Changes to the System Packages
+ 3.2. Changes to the NOAO Packages
+
+ 4. Programming Environment Revisions
+ 4.1. Compatibility Issues
+ 4.2. Portability Issues
+ 4.3. Software Tools
+ 4.4. Programming Interface Changes
+
+ 5. Getting Copies of this Revisions Summary
+
+The reader is assumed to already be familiar with the basic concepts and
+operation of the IRAF system. In particular, familiarity with V2.9
+IRAF is assumed.
+
+
+
+2. IRAF System Revisions
+
+
+2.1 Starting up V2.10 IRAF
+
+ Before attempting to start V2.10 IRAF each user should run the
+mkiraf command in their IRAF login directory. This will create a new
+login.cl file and uparm (user parameter) directory. mkiraf should be
+allowed to delete any existing parameter files, as there have been many
+changes to task parameter sets in the new version of IRAF.
+
+
+2.1.1 LOGIN.CL changes
+
+ The login.cl file is read by the CL during startup to perform some
+runtime initialization and to customize IRAF for each user. A standard
+login.cl file is created and initialized by the mkiraf command when the
+user's IRAF login directory is configured. For V2.10 IRAF the login.cl
+file has undergone the following changes.
+
+ o The IRAF version number is now checked automatically whenever
+ you login, and a warning message will be printed if your
+ login.cl file is out of date. If you see this message it means
+ that important changes have been made to the login.cl file and
+ you need to rerun mkiraf to update this file.
+
+ o Most of core IRAF system packages are now loaded automatically
+ at login time by the login.cl file. If you use a personal
+ loginuser.cl file and you previously loaded any core system
+ packages in this file, you should edit the file and remove
+ those entries.
+
+ o A "quiet" login option is now provided. If a file named
+ .hushiraf exists in the login directory when you start up the
+ CL, printing of the usual login messages will be disabled (the
+ only output seen will be the "cl>" prompt).
+
+ o On UNIX/IRAF systems the login script now looks at the host
+ system environment variable TERM and checks for the common
+ terminal types "sun" and "xterm", configuring the IRAF stty
+ accordingly if either terminal type is seen (note that the
+ default number of lines set for an xterm terminal window may
+ need to be modified). The logic used to do this is not
+ foolproof however, and is provided only as an example
+ illustrating how to make use of the host system terminal
+ definitions. You may need to customize this portion of the
+ script, or override it in your loginuser.cl file.
+
+ o The CL hidden parameter showtype is now set to "yes" by default.
+ This will cause a character to be printed after the name of
+ each package or named pset in CL package menus to allow these
+ objects to be easily distinguished from ordinary tasks.
+ Packages are marked with a trailing period (".") and psets with
+ an ampersand ("@"). This feature can be disabled with a
+ "showtype=no" statement.
+
+ o The V2.10 login script contains a call to a new internal
+ (non-user) IRAF task mtclean. Be sure to leave this alone, it
+ is required for the correct operation of the new magtape i/o
+ system.
+
+ The USER package defined in the template login.cl has been
+ extensively revised, adding many new tasks. These are mainly used
+ to make common UNIX commands available from within the IRAF
+ environment. Type "?user" in the CL to see what is available, e.g.:
+
+ cl> ?user
+ adb cp fc lpq mv rlogin spell top
+ bc csh find ls nbugs rsh sps touch
+ buglog date finger mail nm rtar strings vi
+ cal df ftp make od ruptime su w
+ cat diff generic man ps rusers sync wc
+ cls du grep mkpkg pwd rwho telnet wtar
+ comm emacs less mon rcp sh tip xc
+
+
+ Note that since the USER package is defined in the user's login
+ file it is easily customized to add new tasks. Refer to the
+ existing package for examples illustrating how to do this.
+
+
+2.1.2 Compatibility Issues
+
+ Version 2.10 IRAF requires the new login.cl file; if the CL does not
+start up correctly, it may be because the user has not done a mkiraf,
+or because they have some construct in their loginuser.cl file which is
+incompatible with V2.10 IRAF. The V2.10 login file is usable with V2.9
+IRAF, however this is not recommended.
+
+There have been many task parameter changes between V2.9 and V2.10. If
+"parameter not found" messages are seen, most likely the user has an old
+uparm directory, or has been switching back and forth between IRAF
+versions. An unlearn or mkiraf should fix the problem.
+
+The V2.10 IRAF networking system is not fully compatible with earlier
+versions of IRAF. This can cause problems when, e.g., a newly installed
+V2.10 system is used to communicate with an older version of IRAF on
+another system. The best solution is to update to V2.10 on all
+systems, but if this is not convenient it is possible to configure the
+networking system to avoid the problems. See the discussion of the new
+networking system given below.
+
+Accessing a remote magtape device via IRAF networking will not work
+between V2.10 and older versions of IRAF (the remote procedure calls
+have changed). To remotely access magtape devices you will need to
+install V2.10 IRAF on both the client and server nodes.
+
+In most respects installing V2.10 IRAF will be very similar to
+installing earlier versions of IRAF. The main difference is the
+tapecap file required to use the new magtape system. The old
+dev$devices file is no longer used. See the discussion of the new
+magtape system given below for more details.
+
+Due to name changes in certain low level system routines (made to avoid
+name clashes when linking with host level libraries) the V2.10
+libraries are incompatible with older versions of IRAF. Any IRAF
+programs or external packages relinked under V2.10 will have to be
+fully recompiled or the linker will complain about unresolved
+externals. Note that so long as the old program is not relinked there
+should be no problem, even if the program uses the IRAF shared image,
+since the V2.9 shared image is included in V2.10 (this applies to
+Sun/IRAF systems only).
+
+Starting with V2.10, many IRAF applications now fully support
+generalized world coordinates (WCS). While in principle this should
+not pose any compatibility problems, the image headers do contain more
+information in V2.10 than previously, and there can be problems if, for
+example, an input image contains an illegal WCS. Previous versions of
+IRAF would ignore this but in V2.10 such an image could result in an
+error or warning message. If WCS related problems are encountered it
+is probably best to contact the IRAF group for help.
+
+
+
+2.2 CL Enhancements
+
+
+2.2.1 Formatted scans and prints, scan from a pipe
+
+ New in the V2.10 CL (command language) are formatted scan and print
+routines, and the ability to scan from a pipe or other form of
+redirected input. These new facilities will prove most useful in CL
+scripts.
+
+The old unformatted scan and print routines are the following. These
+are still available and are the simplest routines to use where they are
+adequate.
+
+ scan (arglist) # scan standard input
+ fscan (list, arglist) # scan a list
+ print (expr, exprlist) # print to standard output
+ fprint (param, exprlist) # print to a string buffer
+
+
+For example,
+
+ list = "filename"
+ while (fscan (list, x, y) != EOF)
+ print ("x=", x, "y=", y)
+
+
+In the above, arglist is a comma delimited list of output arguments
+(parameter or parameter field names) and exprlist is a comma delimited
+list of expressions to be printed. list is the name of a
+list-structured parameter to be scanned, and param is the name of a
+parameter, the value field of which is to receive the output string.
+The unformatted scan routines will automatically convert output data
+values to match the types of the output arguments.
+
+The new formatted routines are as follows. These take an extra format
+argument which tells how to parse the input string in the case of the
+scanf routines, or how to format the output in the case of the printf
+routines.
+
+ scanf (format, arglist) # formatted scan from stdin
+ fscanf (list, format, arglist) # formatted scan from a list
+ printf (format, exprlist) # formatted print to standard output
+
+
+Currently there is no fprintf routine. For the printf routine the
+format argument is similar to that for the SPP/VOS printf (which is
+similar to the C printf). The format argument for the scanf routines
+is the same as the VOS LIBC scanf, which is patterned after the C scanf
+(in fact the UNIX manual page for scanf can be used as a guide to the
+CL scanf with only minor deviations).
+
+The following examples illustrate the new routines.
+
+ cl> printf ("%d foo %7.3f\n", 5, 12.123) | scanf ("%d foo %g", i, x)
+ cl> printf ("new values are i=%d, x=%g\n", i, x)
+ new values are i=5, x=12.123
+
+or,
+
+ while (fscanf (list, " %*d size=%d name=%s", i, s1) != EOF)
+ printf ("size=%05o, name=`%s'\n", i, s1)
+
+
+Note in the first example the use of scanf to scan from a pipe. There
+are actually two different versions of scan and scanf in V2.10 IRAF, an
+intrinsic function version and a procedure version. When called as an
+intrinsic function, a scan routine returns as its function value the
+number of operands successfully scanned, or EOF. When called as a
+procedure, the function value of a scan routine is discarded.
+
+Here is another example illustrating scan from a pipe, in this case
+using an unformatted scan since the hselect output is in a simple
+tabular format (hselect prints selected fields of the image header).
+
+ cl> hselect dev$pix naxis,naxis1,naxis2 yes | scan (i, j, k)
+ cl> printf ("naxis=%d, axlen=[%d,%d]\n", i, j, k)
+ naxis=2, axlen=[512,512]
+
+
+When using the formatted scan routines, care must be taken to ensure
+that the data types implied by the format argument match the actual data
+types of the output parameters. The scanf routines are implemented
+using an internal call to the C (LIBC) scanf, with the output parameter
+value fields referenced directly via a pointer. If the data type is
+incorrect the output value may be meaningless.
+
+
+2.2.2 Unlearning package parameters
+
+ The unlearn task now works for package parameters as well as task
+parameters. In a command such as "unlearn pkgname" the package
+parameters for the named package will be unlearned, as well as the
+parameters for all the tasks in the package. This works whether or not
+the package is loaded.
+
+
+2.2.3 Loading packages at login time
+
+ A bug has been fixed which affected packages with package
+parameters loaded at login time. It is now permissible to load any
+package at login time regardless of whether it has package parameters
+(V2.9 users will recognize this bug as one which prevented loading
+CCDRED in the login script).
+
+
+2.2.4 Environment variables
+
+ The environment variables imtype, cmbuflen, and min_lenuserarea are
+now defined at login time. Previously, explicit values for these
+variables were not defined, and the system would use the builtin
+internal defaults. Explicit definitions were added so that the user
+can query the current value, e.g.
+
+ cl> show cmbuflen
+ 128000
+
+A show or set with no arguments will print the full environment list.
+New values for these and other common environment variables may be set
+in the user login.cl file.
+
+
+
+2.3 System Management Related Changes
+
+
+2.3.1 Install script
+
+ The UNIX/IRAF install script underwent minor changes to make it more
+robust. Problems are still possible if the IRAF root pathname is set to
+different values in the various system dependent files modified by the
+script. The system as shipped from NOAO has the same initial root
+pathname set in all such files, but problems can occur if the files are
+manually edited during or after installation. To avoid problems always
+use the install script to make system changes such as installing at a
+different root directory.
+
+
+2.3.2 Caching of termcap entries
+
+ User caching of termcap or graphcap entries with the old mkttydata
+task is no longer recommended. The most common entries (e.g. sun,
+xterm, vt100) are already cached. Modern workstations are so fast that
+there is no longer much point in caching termcap entries; it is
+sufficient to merely place local additions near the top of the file.
+Most programs that repeatedly access the terminal cache the entries
+internally during execution. Custom caching of termcap or graphcap
+device entries requires that the system be relinked, and the risk
+inherent in relinking the system (hence giving up the prebuilt,
+pretested binaries) is not worth the small performance gain achieved.
+
+
+2.3.3 Sorting of UNIX directories
+
+ The UNIX-based versions of IRAF now sort UNIX directories whenever a
+directory is accessed to expand a file or image template. This will
+fix the problem sometimes seen in earlier versions of IRAF, in which an
+image template could appear to be expanded in a seemingly random
+fashion.
+
+
+2.3.4 UMASK support
+
+ The UNIX-based versions of IRAF now support the host level umask
+file creation mask correctly. If files or directories created by V2.10
+IRAF do not have the desired permissions, it is because you do not have
+umask set correctly at the UNIX level (most people set umask to 022).
+
+
+
+2.4 Networking Enhancements
+
+
+2.4.1 New networking driver
+
+ The UNIX/IRAF networking driver has been completely rewritten for
+version 2.10 IRAF, with the goals of eliminating redundant password
+prompts, improving efficiency, and enhancing system security. For the
+most part the changes will be transparent to the user. Once the IRAF
+system manager has configured the dev$hosts file for the local site the
+networking system should function automatically; in the default
+configuration a password prompt should be seen only when connecting to
+a server for which rhosts ("trusted" hosts) permission is not granted.
+
+The following information is provided mainly for IRAF system managers.
+In normal use the user does not need to understand how the networking
+system functions.
+
+
+2.4.1.1 How it works
+
+ The IRAF networking system is an RPC (remote procedure call)
+mechanism for the IRAF kernel; all kernel procedures may execute either
+locally or remotely, and the client and server nodes do not even need
+to run the same operating system. IRAF applications may be
+distributed, and may access resources which reside anywhere on the
+network. IRAF networking is layered upon standard low level networking
+protocols such as TCP/IP and DECNET.
+
+The IRAF networking system defines one or more connection protocols
+which are used by a client to connect to the IRAF kernel server on a
+remote machine. The old networking driver supported only one
+connection protocol, the rexec protocol, which requires a login name
+and password. The new driver adds support for an rsh based protocol.
+This is the default connection protocol for V2.10 IRAF; automatic
+fallback to the rexec protocol is provided in the event that the rsh
+connect fails. The rsh connection protocol bootstraps off the
+suid-root rsh command found in most BSD derived UNIX systems (most
+System V systems provide the equivalent command remsh).
+
+The connection protocol is used to start the in.irafksd IRAF networking
+daemon on the remote server node. This daemon executes with the same
+uid and permissions as the account which initiated the connection, and
+there is one such daemon per user per server node. Once the daemon has
+been started via the rsh or rexec connection protocol, new client
+connections are made very quickly, by merely forking the daemon to
+create the IRAF kernel server process, and setting up a direct socket
+connection between the IRAF client process and the server. The daemon
+process runs indefinitely, shutting down if idle for longer than a
+certain interval (the current default is one hour). When connecting to
+the daemon a client must supply an authentication key to gain access to
+the daemon. If authentication fails the daemon shuts down and it is
+necessary to reestablish the connection.
+
+
+2.4.1.2 The .irafhosts file
+
+ The new networking driver retains the old irafhosts file, used to
+store information telling how to connect to various IRAF hosts (the
+irafhosts file is the file .irafhosts in the user's login directory).
+The networking system will automatically create this file for the user
+if the file is not found; if an old-style file is found, it will be
+edited by the system to make it compatible with the new networking
+system. While it is no longer necessary for the irafhosts file to
+contain password information to avoid password prompts, the file is
+used to store the user authentication key, hence the file should be
+read protected. The networking system will automatically read protect
+the file if it is not already protected.
+
+To avoid authentication failures when clients on different nodes
+attempt to connect to the same server, the same authentication code
+should be used on all server nodes. Unfortunately there is no way that
+the networking system can do this automatically (without going to some
+much more complicated authentication scheme, such as a key server), so
+users who make heavy use of the networking system should install a copy
+of their irafhosts file in their login directory on all server nodes.
+If this is not done the networking system will still work, but will be
+less efficient than it could be, when simultaneously accessing the same
+server from IRAF sessions running on multiple client nodes.
+
+The truly paranoid may not be happy with even the unique user
+authentication code used in the current networking system. If this is
+the case the port parameter (see below) may be set to zero to force rsh
+to be used for every connection (in effect the in.irafksd daemon has to
+be restarted for every connection). This imposes an overhead of as
+much as several seconds on every server connect. Alternatively, KSAUTH
+can be defined in the user environment at login time, setting the value
+string to some random integer value selected at login time. If defined
+in the user environment, KSAUTH will override the value of auth given in
+the irafhosts file. This approach would at least allow efficient
+connects for a single login process tree.
+
+The irafhosts file consists of two sections. The first section defines
+several networking parameters: port, auth, hiport, and timeout. The
+second section is a list of server nodes, with login and password
+information describing how to connect to each node.
+
+ port = default
+ auth = 1234567890
+ hiport = default
+ timeout = default
+
+ ursa : <user> ?
+ * : <user> <user>
+
+
+The example above illustrates a typical irafhosts file. Typically a
+unique authentication code is allocated automatically by the system
+when the file is first created, and the other parameters retain their
+default values as shown (i.e., the string "default"). In the example
+the host list consists of an entry for the node "ursa", and an entry
+for everything else. The format of a host entry is "host-name :
+login-name password". If login-name is the reserved string "<user>"
+the user name on the client node is used for login authentication on
+the remote node. Setting the password to "<user>" as well causes the
+rsh connect protocol to be used; anything else causes the rexec
+protocol to be used. If the rexec protocol is used the password field
+may be set to the actual password or to the string "?", in which case
+the system will prompt for the password whenever a connection attempt
+is made. The "*" entry should always be the last entry in the list,
+since it matches all nodes. The default host list contains only the
+"*" entry.
+
+Additional information on the irafhosts file is provided in the
+comments in the file dev$irafhosts, and in the system notes file.
+
+
+2.4.1.3 Compatibility
+
+ By default the new networking system will try to use the rsh
+protocol to connect to the server node. If the server is running an
+older version of IRAF the connection attempt will hang and eventually
+time out. If this occurs the networking system will fall back on the
+rexec protocol and issue a password prompt, but by then the user will
+probably have interrupted the connect. The best way to avoid this
+problem is to update the server node to V2.10, but if this is not
+possible, an explicit entry for the node can be made in the irafhosts
+file, setting the password field so that the rexec protocol will be
+used.
+
+An older, e.g. V2.9 client connecting to a V2.10 server should not be a
+problem. In this case the V2.10 server will see an attempt to connect
+with the rexec protocol, which should be processed as in the past.
+
+Aside from the problem of making a connection the pre-V2.10 and V2.10
+networking systems are compatible, except for the magtape i/o calls.
+Since the magtape driver calling sequences were changed in V2.10, remote
+magtape access between V2.10 and older systems is not supported.
+
+
+2.4.2 The hosts file
+
+ The file dev$hosts is used to interface new host machines to the
+IRAF networking system. This file defines, for each host, the primary
+host name, any aliases, and the command to be executed remotely to start
+up the IRAF kernel server on a remote node.
+
+The format and role of the hosts file is unchanged in V2.10. Two
+changes were made which affect the use of this file.
+
+o A user can now have a private copy of the hosts file. To enable
+ this feature, the variable irafhnt (IRAF host name table) should be
+ defined in the user's IRAF or host level environment, with the
+ string value giving the file pathname of the user's private host
+ name table file.
+
+o The maximum number of entries in the host name table has been
+ increased from 64 to 128. In the current implementation these
+ entries are statically buffered, so it is necessary to keep the
+ maximum number of entries to a reasonable value.
+
+ The hosts file must be configured to enable IRAF networking. IRAF
+ networking is disabled if there is no entry for the local host in
+ this file. The netstatus command may be used to examine the state
+ of the host name table after it has been loaded by the networking
+ system.
+
+ There is another file dev$uhosts which often confuses people. This
+ file is not used by UNIX/IRAF and can be ignored; it is there for
+ VMS/IRAF and other IRAF implementations which do not provide the
+ equivalent of the UNIX system routine gethostbyname. On host
+ machines which implement name server facilities IRAF will use the
+ name server, allowing any machine on the internet to be accessed
+ via IRAF networking, so long as there is an entry in the system
+ wide or user IRAF hosts file.
+
+
+
+2.5 Magtape System Enhancements
+
+ The magtape subsystem underwent a major revision in V2.10. The VOS
+level MTIO interface was extensively revised, and the host-level IRAF
+magtape driver ZFIOMT is completely new. A new device configuration
+facility called tapecap was introduced. Together with the new
+"programmable" magtape driver, this makes it possible to interface
+almost any removable media mass storage device to the magtape
+subsystem. The DATAIO applications, in particular the FITS programs,
+underwent minor, but important revisions.
+
+A full specification of the new magtape subsystem, particularly the
+tapecap facility, is beyond the scope of this document. Our intention
+here is merely to introduce the new facilities. A reference paper is
+planned, time permitting, which will fully document the new magtape
+system and tapecap.
+
+
+2.5.1 Basic usage
+
+ In most respects basic usage of the magtape system is unchanged from
+previous releases. Many new capabilities have been added, but these are
+upwards compatible with earlier releases.
+
+
+2.5.1.1 Logical device names
+
+ Magtape devices are still referred to in IRAF applications much as
+they have been in the past. Whether or not the logical device names
+are the same before and after the V2.10 upgrade depends upon how the
+IRAF system manager configures the tapecap file. The new magtape
+system is much more flexible than previously regarding device names,
+but to avoid user confusion it is recommended that the old names be
+supported as aliases regardless of whatever the full device name may be.
+
+As in earlier versions of IRAF, a simple magtape reference might be
+
+ cl> mtexamine mta
+
+where "mta" is the device name. To examine only file 3 on the tape one
+might enter
+
+ cl> mtex mta[3]
+
+If the device is on the remote node "ursa" the command would be
+
+ cl> mtex ursa!mta[3]
+
+If the device is a 9 track tape supporting multiple densities we might
+specify the density explicitly, e.g.
+
+ cl> mtex mta1600[3]
+
+Device names can be more complex. For example,
+
+ cl> mtex mtwd
+
+might refer to a WangDAT drive, and
+
+ cl> mtex mtwdc
+
+to the same drive, but with data compression enabled.
+
+Devices can have multiple names, possibly with slightly different
+behavior or characteristics. Device names such as "mta" are usually
+only host specific aliases for the lower level, host independent device
+names. The names "mta" and "mtb" might be aliases for the actual device
+names "mthp0" and "mtxt1". This can be useful in networked systems
+where IRAF and the tapecap file reside on a server node, but the user
+is running IRAF on their workstation with a local tape drive attached.
+In this case there may be no entry for the local drive in the installed
+tapecap file, but the user can still access the local drive using the
+lower level, host independent device entry (it is also possible to have
+a private tapecap file as we shall see later).
+
+To see what logical devices are known to the magtape system you can
+enter the following command (the task gdevices was intended for
+graphics devices but can be pressed into service to list a tapecap file
+as well). Just because a device is listed does not mean that the
+physical device actually exists on a particular host system.
+
+ cl> gdev devices='^mt' graphcap=dev$tapecap
+
+In IRAF V2.10 it is possible to include tapecap parameters in the device
+specification to do clever things, as in the following example.
+
+ cl> mtex "mta[:so=lepus:se:nb]"
+
+This is discussed further below in the section describing the tapecap
+facility.
+
+
+2.5.1.2 Device allocation
+
+ Device allocation operates much the same in V2.10 as in earlier
+versions of IRAF. The main change is that it is no longer necessary to
+allocate a device in order to be able to access it. It is strongly
+recommended however that you always allocate a device before accessing
+it in IRAF. If the device is not allocated anyone can access the
+drive, e.g., changing the tape position, and this can cause data to be
+lost or improperly read back. The only reason to access the drive
+without allocating it is if there is some problem with device
+allocation on your system.
+
+A device is allocated with the allocate command, e.g.
+
+ cl> alloc mta
+
+A device is deallocated with deallocate. If the tape has already been
+unmounted use the rewind=no option to avoid accessing the drive. By
+default the tape will be rewound when it is deallocated. Deallocating
+and reallocating a drive initializes the magtape system, i.e., all
+cached knowledge of the status of the drive is discarded.
+
+
+2.5.1.3 Device status
+
+ The device status can be examined at any time that the magtape
+device is idle (not being actively accessed by an IRAF task) using the
+devstatus task.
+
+ cl> devs mtc
+ # Magtape unit mtc status Thu 12:54:02 04-Jun-92 user v14
+ file = 4
+ record = 1
+ nfiles = 0
+ tapeused = 405
+ pflags = 0
+
+
+Of particular interest are the tapeused and nfiles fields. nfiles
+refers to the total number of files on the tape (if a file is appended
+to the tape it will be file nfiles+1). If nfiles is given as zero that
+means that the magtape system does not yet know how many files are on
+the tape (it has not seen the end of tape).
+
+tapeused reports the amount of tape used in units of kilobytes. This
+is intended to refer to the amount of tape used up to and including the
+end of tape (EOT). However, the magtape system only knows about data
+that it has seen, i.e. physically read or written, so whether or not
+tapeused is accurate depends upon how you have accessed the tape.
+
+For example, if you started out with a fresh tape and appended a number
+of files the number should be accurate. If you just completed a full
+scan of the tape with mtexamine the number should be accurate, since
+all the data was read. If you just put on a new tape and did a scan of
+the FITS headers with "rfits make-", the number may or may not be
+accurate, depending upon the device and how file skipping forward was
+done. In most cases only the header area of each file will have been
+read and tapeused will not reflect the full contents of the tape. If
+however, "rfits make-" is done immediately after writing to a new tape,
+the number will be accurate, since all the data was written before the
+tape was rescanned to print the FITS headers.
+
+Be advised that by default an explicit rewind will clear the nfiles and
+tapeused fields, since by default rewind initializes the magtape
+system. See the discussion of rewind below.
+
+In summary tapeused can be useful for monitoring how much space is left
+on a tape, but you have to know what you are doing. When writing to a
+new tape the number will be accurate so long as you avoid doing an
+explicit rewind. A simple procedure which will always work when
+mounting a non-empty tape and appending files to it, is to do an
+mtexamine of the tape and then append the new files. This can be time
+consuming for large tapes but does provide a safe and
+device-independent method for getting the maximum amount of data on a
+tape.
+
+
+2.5.1.4 File positioning
+
+ File positioning when accessing magtape files in IRAF is
+straightforward in the sense that you can simply specify the file
+number to read an existing file, or "append" (as in wfits new-) to
+append a file to an existing tape. Most tasks accept range lists to
+access existing files, e.g.
+
+ cl> mtexamine mta file="3,5,9-11"
+
+It is even possible to position a tape to a specific record within a
+file. Opening a tape with file zero (as in "mta[0]") disables file
+positioning, allowing the tape to be positioned with host level
+utilities to workaround media problems.
+
+There can be problems with this simple scheme however, with modern tape
+devices such as DAT and Exabyte which have capacities in the gigabyte
+range and which may be used to store thousands of files. It is beyond
+the scope of a revisions summary to go into this in detail here, but a
+simple example will help illustrate the problem.
+
+Assume we have a tape mounted on device "mtwd" containing 900 files. We
+want to append image "pix" as a FITS file. The obvious thing to do is
+enter the following command.
+
+ cl> wfits pix mtwd new-
+
+This will certainly work. The only problem is that if the tape is
+freshly mounted the magtape system will not know how many files there
+are on the tape, and it will have to skip forward one file at a time to
+count the files and determine where EOT is. In the worst case of a
+tape containing several thousand files this could literally take hours.
+
+If we know apriori the number of files on the tape, e.g., 900 in our
+example, the following command would be much faster (something like
+10-40 seconds on most DAT drives, assuming a decent host level driver).
+
+ cl> wfits pix mtwd[901]
+
+Of course, if there were actually 930 files on the tape, the last 30
+files would be overwritten.
+
+There is a useful trick which works in some cases if we don't care
+exactly how many files are on the tape (whether this works depends upon
+the specific device and the host driver). Assume that we know there
+are several hundred files on the tape, but less than 1000. We enter
+the following command to append a file to the tape.
+
+ cl> wfits pix mtwd[1000]
+
+If this works, after the operation the magtape system will think there
+are 1000 files on the tape. A subsequent "wfits new-" would be very
+fast regardless of the tape position, since so long as the magtape
+system knows where the end of tape is relative to the current position,
+it can get there very fast.
+
+If the trick doesn't work for your particular device or driver you will
+probably get a positioning error when attempting to position to a
+nonexistent file beyond the EOT.
+
+More automated techniques for rapid positioning with very high capacity
+tapes are still a matter for study. One promising technique would be to
+formalize the above approach by supporting EOT-relative positioning. A
+tape catalog based approach is also possible. The best approach may
+simply be to not write so many small files on large tapes, by grouping
+images or other data system files into a single large tape file (as
+with UNIX tar). None of these approaches are implemented in V2.10.
+
+
+2.5.1.5 Rewind
+
+ In IRAF a magtape device is rewound with the rewind command, as in
+the following example.
+
+ cl> rewind mta
+
+By default this will not only rewind the tape but also initialize the
+magtape system, in the sense that all cached information regarding the
+named device is erased (e.g., nfiles and tapeused in the cached device
+status). This is necessary when changing tapes without deallocating the
+drive; always do an explicit rewind (or deallocate) of the device before
+removing a tape or mounting a new one. Having rewind initialize things
+is also useful if error recovery should fail following an interrupt or
+program abort.
+
+In some cases it may be useful to be able to do a rewind without
+erasing the cached device status. This is done by specifying the init-
+option on the command line.
+
+
+2.5.2 New magtape driver
+
+ The IRAF magtape driver is new for V2.10. The chief feature of the
+new driver is that it is programmable, via the tapecap device entry,
+making it possible to interface new devices or host drivers without
+having to make any binary code changes to IRAF. All one has to do is
+add a device entry in the tapecap file.
+
+
+2.5.2.1 Software structure
+
+ The IRAF magtape system has enough layers that it may be confusing
+exactly what the magtape driver is and what role it plays. A brief
+review of the software structure may help clarify things.
+
+Starting at the top we have applications, such as the DATAIO and MTLOCAL
+tasks, which can access magtape files. These use the IRAF/VOS
+interfaces FIO (file i/o) and MTIO (magtape i/o) to do i/o to tape
+devices. For the most part i/o is done with FIO and is device
+independent, but a call to the magtape system is required to open a
+magtape device. The tapecap file is read by the GTY interface, which
+is called by MTIO. MTIO passes the tapecap device entry as a string to
+ZFIOMT, the IRAF magtape device driver, when a tape file is opened.
+All magtape positioning and i/o is done by ZFIOMT driver under the
+control of the MTIO interface. Device allocation is done prior to
+accessing the device by the CL and is handled by the allocation
+routines in the ETC interface, with kernel support (this is largely
+independent of the magtape system).
+
+All of the code listed above is part of the portable IRAF system (i.e.,
+is OS independent and shared by all host versions of IRAF) until we get
+to the ZFIOMT driver. This is in the IRAF kernel and is host system
+dependent. At present the only version of ZFIOMT is the UNIX version;
+other versions, e.g., for VMS will follow as IRAF is updated to V2.10
+on these systems. The UNIX version of ZFIOMT uses only generic UNIX
+ioctls and should compile on most UNIX systems without change. All of
+the system and device dependence has been concentrated in the tapecap
+file. The ioctls used to communicate with a UNIX tape device are
+fairly standard, but the semantics are often poorly defined and are
+certainly not standardized.
+
+Beneath the IRAF driver are the host level magtape device drivers. A
+given host system may have more than one of these, typically one for
+each class of magtape device. Some systems, notably Sun with their ST
+(SCSI tape) driver, try to control more than one type of device with a
+single host driver. The host driver may come with the OS or may be
+supplied by a third party vendor.
+
+Beneath the host driver is the actual tape device. Often these days
+this is a SCSI tape device such as a DAT or Exabyte. These devices are
+intelligent peripherals; control of the physical tape hardware resides
+in the tape unit. There is a small computer in each tape drive which
+communicates with the host computer via the SCSI interface, passing
+commands and data back and forth. The drive will buffer 256K to 512K
+of data passed in bursts over the SCSI bus, and then copied to or from
+the physical media at a much slower rate. These drives emulate
+variable size records by blocking and deblocking within the drive unit,
+and writing fixed size blocks to the media. Features such as error
+correction and data compression are also handled within the drive.
+
+Although we usually speak of tape devices, the "magtape" device does not
+have to be a tape device at all. The IRAF magtape system can also make
+use of, e.g., a floppy disk, or anything that looks like a raw disk
+partition. The problem with the latter devices is that they usually
+don't support files and file positioning, hence can only be used to
+store one "file".
+
+
+2.5.2.2 Driver features
+
+ A detailed description of the magtape driver is beyond the scope of
+this document. Briefly, the driver supports two main classes of
+devices, variable record size devices and fixed block devices. All
+file positioning is handled by the driver, and while the driver has the
+device open it is responsible for keeping track of the device position
+(the saved device position is passed in at open time and saved by the
+high level code at close time). A couple of dozen tapecap parameters
+are defined which describe the characteristics of each device, such as
+whether it supports variable records, the maximum record size, whether
+it can backspace, and so on. A socket or file based status logging
+feature is provided which allows detailed monitoring of the tape status
+during execution (see below).
+
+In the simplest case the new magtape system, coupled with the UNIX
+version of the magtape driver, will emulate simple UNIX commands such
+as tar and mt insofar as the requests made to the host system and
+magtape device are concerned. That is, if one writes a series of files
+the only system requests made for each file will be open, write, and
+close. When reading a series of files in sequence the only requests
+made will be open, read, and close. Providing no file positioning is
+attempted it is possible to get by with no file positioning requests
+other than rewind. The driver provides extensive facilities for file
+positioning, using tapecap parameters to work around any shortcomings
+of the host system or device, but in case of trouble it is possible to
+operate with only open, close, read, and write requests, which should
+work for any device (unless it is truly broken).
+
+
+2.5.3 Tapecap
+
+ The tapecap file, or magtape device capabilities file, defines the
+magtape devices known to the system and how to access these devices.
+While large portions of this file depend only upon the host operating
+system and device type and hence are fairly site independent, it will
+typically be necessary to customize the tapecap file to configure the
+IRAF magtape system for a site. In normal use the tapecap file is
+invisible to the user, but users with special problems may wish to
+learn more about tapecap to gain more control over the behavior of the
+magtape system.
+
+
+2.5.3.1 Using tapecap
+
+ The standard tapecap file is the file dev$tapecap. A system
+environment variable tapecap is defined which by default points to this
+file.
+
+Users can customize or manipulate tapecap entries in either of two ways.
+The user can have their own private copy of the tapecap file (much as is
+currently done with the termcap and graphcap files), by resetting the
+value of the tapecap environment variable to point to their local copy
+of the file. For example,
+
+ cl> reset tapecap = home$tapecap
+
+This may be necessary to customize a device entry, or add support for a
+local device not supported by the system wide tapecap file.
+
+It is also possible to modify a tapecap device entry "on the fly", by
+overriding the values of specific tapecap parameters on the command line
+when the device is accessed. For example,
+
+ cl> mtex "mta[:so=/dev/tty]"
+
+would override the default value of the tapecap parameter "so" for
+device mta (in this case enabling status output logging and directing
+this output to the user terminal).
+
+Specifying tapecap parameters on the command line is useful for
+experimentation but rapidly becomes tiresome if many commands are
+entered. In this case it becomes simpler to redefine tapecap to include
+the desired tapecap parameter overrides.
+
+ cl> reset tapecap = ":so=/dev/tty"
+
+As we see, the tapecap environment variable can be used to either
+specify the tapecap file name, or globally override specific tapecap
+parameters (all device entries are affected). The full form of the
+value string for tapecap is
+
+ cl> reset tapecap = [tapecap-file] [`:' capabilities-list]
+
+Any number of colon-delimited tapecap capabilities or parameters may be
+given.
+
+It is beyond the scope of this document to detail all the tapecap
+parameters here. A reference paper for the magtape system is planned.
+For the present, there is a summary of the tapecap parameters in the
+ZFIOMT driver source file, os$zfiomt.c. For examples of actual usage
+refer to the tapecap file in the distributed system.
+
+
+2.5.3.2 Configuring tapecap
+
+ The tapecap file uses the standard "termcap" file format,
+originally developed for BSD UNIX and adopted long ago for IRAF. Any
+UNIX system will probably have a manual page defining the termcap file
+format, if not this can be obtained from the IRAF group.
+
+The distributed tapecap file is divided into three sections: the host
+machine specific device aliases (names like "mta" etc.), the site
+logical devices, and the generic device entries. To customize the
+tapecap file for a site you modify the first and second sections. To
+configure the tapecap file for a particular host machine you uncomment
+the entries for that host in the first section of the file. Sites
+which don't have a large network of hosts may prefer to combine the
+first two sections to simplify things. Site specific changes should
+never be made to the bottom, or generic, part of the tapecap file, as
+you will want to update this portion of the file when new versions of
+IRAF are released.
+
+Don't be intimidated by the apparent complexity of some of the tapecap
+device entries. In most cases the generic device entry will already
+exist for the device you need to interface, and all you need to do is
+add a site entry which references the generic entry. In some cases the
+generic entry itself may be sufficient (for example, in the distributed
+SunOS version of tapecap, logical device "mtxb0" would provide access
+to Exabyte unit 0 interfaced with the Sun ST driver, "mtxb1" would be
+the same but unit 1, "mthp0" the HP 9 track tape on unit 0, and so on).
+
+For example to interface Exabyte unit 2, using the Sun ST driver, as
+local device "mta", the following entry would suffice.
+
+ mta| :tc=mtst2-exb:
+
+If the generic device entry provided doesn't quite work and minor
+modifications are needed, these should be made to the local entry and
+not the standard generic entry. This is easily done with termcap
+parameter redefinitions. For example, in SunOS 4.1.2 (but not earlier
+versions of SunOS) there is a bug in the Sun ST driver which
+necessitates rewinding the tape after a tape scan is made to position
+to EOT (!). The capabilities ":se:nb" can be added to the tapecap
+entry for the device to workaround this bug, as in the following
+example.
+
+ mta| :se:nb:tc=mtst2-exb:
+
+The parameters mean that the device spaces past EOT in a read (se) and
+cannot backspace (nb). Neither of these things is actually true, but
+the effect is that the tape is rewound and spaced forward to get back
+to the desired file, working around the host level driver bug. Access
+will be less efficient than it should be, but the interface will work
+properly and the user does not have to be concerned with the problem.
+
+As a final example, suppose we need to write a new tapecap entry from
+scratch because there is no generic entry for the device in the
+distributed tapecap file. To simplify things we assume that no special
+tapecap parameters are needed, i.e., that the standard UNIX defaults
+builtin to the driver will work for the device. We are upgrading from
+an old version of IRAF so we already have an old dev$devices file to
+work with. For the purposes of our example we use an old HP 88780 1/2
+tape drive entry, but pretend that the device is something which is not
+already supported.
+
+The old devices file entry was as follows.
+
+ mta nrst20 nrst4 nrst12 nrst28 rst4 rst12 rst20 rst28
+ mta.6250 nrst20 nrst4 nrst12 nrst28 rst4 rst12 rst20 rst28
+
+The minimal tapecap entry required to duplicate this is the following.
+
+ mta|mta6250|HP 88780 1/2 inch tape drive:\
+ :al=nrst4 nrst12 nrst20 nrst28 rst4 rst12 rst20 rst28:\
+ :dv=nrst20:lk=st4:tc=9tk-6250:
+
+Here, the "al" parameter lists the device files to be allocated, the
+"dv" parameter is the device file to be used for i/o at the desired
+density (6250bpi in this case), and "lk" is the root file name to be
+used for the ".lok", or device status file. The "tc=" picks up the
+standard parameters for a 9 track 1/2 inch tape drive operating at 6250
+bpi. Two device aliases are defined, "mta" and "mta6250".
+
+
+2.5.3.3 Supported devices
+
+ The IRAF magtape system itself should support almost any magtape
+device if properly configured. What devices are actually supported at
+a site depends upon the tapecap file, and in particular upon the host
+system (different host systems have different tapecap files).
+
+ Device Driver
+
+ QIC-11 cartridge tape Sun st
+ QIC-24 cartridge tape Sun st
+ QIC-150 cartridge tape Sun st
+ Pertec compatible 1/2 inch drives Xylogics
+ HP 88780 1/2 inch drive Sun st
+ WangDAT 1300, 2000 ApUNIX
+ HP DAT ApUNIX
+ Exabyte 8200, 8500 ApUNIX, Sun st, Ciprico
+ DC2000 cartridge tape A/UX tc
+ FDHD floppy disk A/UX fd
+
+As an example, the tapecap file distributed in the V2.10.0 release of
+Sun/IRAF supported the devices listed in the table above. New devices
+are constantly being added. As V2.10 IRAF propagates to the various
+platforms on which IRAF is supported, similar tapecap files will be
+configured for those systems.
+
+
+2.5.4 Status output
+
+ The new magtape driver has a facility known as status output
+logging which can be used to monitor interactively lengthy tape jobs
+while i/o is in progress. The status output facility can also be
+useful for debugging magtape problems.
+
+In its simplest form, the status output may be directed to a file,
+e.g., an actual text file, or a terminal device. Status output is
+enabled by setting the "so" option in tapecap. For example,
+
+ cl> mtex "mta[:so=/tmp/mta.out]"
+
+would enable status output logging and direct the output text to the
+file /tmp/mta.out. Likewise,
+
+ cl> mtex "mta[:so=/dev/ttyp7]"
+
+would enable status output and direct the output to a pseudoterminal,
+e.g., an xterm window. When this form of status output logging is used
+one sees the raw, driver level status messages, as in the following
+example.
+
+ cl> mtex "mta[:so=/dev/tty]"
+ open device tc2n\n
+ devtype = Apple Tape 40SC
+ tapetype = DC2000
+ tapesize = 38500
+ density = na
+ blksize = 8192
+ acmode = read
+ file = -1
+ record = -1
+ nfiles = 0
+ tapeused = 0
+ device tc2n opened on descriptor 4\n
+ rewinding...
+ done\n
+ position to file 1\n
+ file = 1
+ record = 1
+ reading...\n
+ recsize = 65536
+ record = 9
+ tapeused = 64
+ (etc.)
+
+
+The UNIX version of the new magtape driver also has an option to direct
+status output to a TCP/IP socket, which can be anywhere on the network.
+For this option to be useful one must have a program which will listen
+on the designated socket, accept the connection when the magtape driver
+tries to open a connection, and then read and process the status
+messages (which are still text, exactly as in the example above).
+
+Status output to a socket is enabled by giving a host name instead of a
+file name in the "so" directive:
+
+ cl> mtex "mta[3:so=lepus]"
+
+to examine file 3, directing status messages to a socket on node
+"lepus".
+
+An X11 client application called xtapemon has been developed to listen
+on a socket, read messages from the tape driver, and provide a real-time
+display of the status of the tape device. While not included in the
+V2.10 IRAF distribution, this utility will be available later in 1992
+as part of the X11 support package currently under development.
+
+
+2.5.5 Error recovery
+
+ Considerable effort went into "bullet proofing" the new magtape
+system to make it recover gracefully from ctrl/c interrupts or other
+program aborts. In practice it can be very difficult to reliably catch
+and recover from interrupts in a multiprocess, distributed system such
+as IRAF. No doubt there are still conditions under which an interrupt
+will leave the magtape system in a bad state, but in most circumstances
+the system should now be able to successfully recover gracefully from
+an interrupt.
+
+If it is necessary to interrupt a tape operation, it is important to
+understand that the host system will not deliver the interrupt signal
+to the IRAF process until any pending i/o operation or other driver
+request completes. For example, in a read operation the interrupt will
+not be acted upon until the read operation completes, or in a tape
+positioning operation such as a rewind or file skip forward, the
+interrupt will not be acted upon until the tape gets to the requested
+position. For a device such as a disk you rarely notice the delay to
+complete a driver request, but for a magtape device these operations
+will take anywhere from a few seconds to a few tens of seconds to
+complete. Type ctrl/c once, and wait until the operation completes and
+the system responds.
+
+If a magtape operation is interrupted, the IRAF error recovery code will
+mark the tape position as undefined (devstatus will report a file
+number of -1). This will automatically cause a rewind and space forward
+the next time the tape is accessed. The rewind is necessary to return
+the tape to a known position.
+
+
+2.5.6 Device optimization
+
+ In addition to making it possible to characterize the behavior of a
+magtape device to permit the device to be accessed reliably, the
+tapecap facility is used to optimize i/o to the device. The parameter
+"fb" may be specified for a device to define the "optimum" FITS
+blocking factor for the device. Unless the user explicitly specifies
+the blocking factor, this is the value that the V2.10 wfits task will
+use when writing FITS files to a tape. Note that for cartridge devices
+a FITS blocking factor of 22 is used for some devices; at first this
+may seem non-standard FITS, but it is perfectly legal, since for a
+fixed block size device the FITS blocking factor serves only to
+determine how the program buffers the data (for a fixed block device
+you get exactly the same tape regardless of the logical blocking
+factor). For non-FITS device access the magtape system defines an
+optimum record size which is used to do things like buffer data for
+cartridge tape devices to allow streaming.
+
+Some devices, i.e., some DAT and Exabyte devices, are slow to switch
+between read and skip mode, and for files smaller than a certain size,
+when skipping forward to the next file, it will be faster to read the
+remainder of the file than to close the file and do a file skip
+forward. The "fe" parameter is provided for such devices, to define
+the "file equivalent" in kilobytes of file data, which can be read in
+the time that it takes to complete a short file positioning operation
+and resume reading. Use of this device parameter in a tape scanning
+application such as rfits can make a factor of 5-10 difference in the
+time required to execute a tape scan of a tape containing many small
+files.
+
+On most cartridge tape devices backspacing, if permitted at all, is very
+slow. On such devices it may be best to set the "nf" parameter to tell
+the driver to rewind and space forward when backspacing to a file.
+
+
+2.5.7 MTIO interface changes
+
+ A number of new routines were added to the MTIO (magtape i/o)
+programming interface. These are documented in the summary of
+programming environment revisions given below. Existing magtape
+applications may benefit from being modified to make use of these new
+routines.
+
+
+
+2.6 Graphics and Imaging Subsystem Enhancements
+
+
+2.6.1 New graphics applications
+
+ New tasks for histogram plotting, radial profile plotting, and
+producing lists of the available graphics devices have been added to
+the PLOT package. All of the tasks in this package were revised to add
+support for world coordinates. A related task for drawing world
+coordinate grid overlays on images or plots was added to the IMAGES.TV
+package. See the appropriate sections of IRAF and NOAO package
+revisions below for further information on these changes.
+
+
+2.6.2 Graphics system changes
+
+
+2.6.2.1 Encapsulated postscript SGI kernel
+
+ A new encapsulated postscript SGI kernel has been added. Graphics
+output may be directed to any of the logical graphics devices eps, epsl,
+epshalf, etc. to render a plot in encapsulated postscript, e.g., for
+inclusion as a figure in a document. For example,
+
+ cl> prow dev$pix 101 dev=eps; gflush
+
+will leave a ".eps" file containing the plot in the current directory.
+The command "gdev dev=eps" will produce a list of the available EPS
+logical graphics devices.
+
+
+2.6.2.2 Graphics output to the default printer
+
+ Graphics output (SGI postscript) can now be directed to the UNIX
+default printer device by directing output to any of the logical
+devices "lpr", "lp", or "lw".
+
+ cl> prow dev$pix 101 dev=lpr
+
+
+Output will be sent to the default device for the UNIX lpr command (set
+by defining "PRINTER" in your UNIX environment). This makes it
+possible to make immediate use the distributed IRAF graphcap without
+having to add entries for specific local devices (although you may
+still wish to do so).
+
+
+2.6.2.3 Tick spacing algorithm improved
+
+ The algorithm used to draw the minor ticks on IRAF plots was
+replaced by an improved algorithm contributed by the STScI STSDAS group
+(Jonathan Eisenhamer in particular). This was derived from similar
+code in Mongo.
+
+
+2.6.2.4 Graphics metacode buffer
+
+ The default maximum size of the graphics metacode buffer in the CL,
+used to buffer graphics output for cursor mode interaction, was
+increased from 64K to 128K graphics metacode words (256Kb). The
+cmbuflen environment variable may be used to change this value.
+
+
+2.6.2.5 IMTOOL changes
+
+ The imtool display server (SunView) was enhanced to add additional
+builtin color tables, support for user color tables, and setup panel
+control over the screen capture facilities. A version supporting
+encapsulated postscript output is in testing. This will be the final
+version of the SunView based version of imtool (the new display servers
+are all X window system based).
+
+
+2.6.2.6 IMTOOLRC changes
+
+ The imtoolrc file, used by display servers such as imtool and
+saoimage to define the available image frame buffer configurations, has
+been relocated to the DEV directory to make it easier for local site
+managers to customize. The IRAF install script now uses a link to
+point to this file, rather than copying it to /usr/local/lib. The
+maximum number of frame buffer configurations was increased from 64 to
+128.
+
+
+2.6.2.7 X11 support
+
+ The released version of V2.10 does not contain any changes insofar
+as X11 support is concerned. Since our X11 support code is host level
+stuff, with minimal ties to IRAF per se, it is being developed
+independently of the V2.10 release and will be distributed and
+installed as a separate product.
+
+
+
+2.7 Image Structures
+
+
+2.7.1 Image I/O (IMIO)
+
+ The image i/o interface (IMIO) is that part of the IRAF system
+responsible for imagefile access and management. The changes to IMIO
+for V2.10 included the following.
+
+
+2.7.1.1 Null images
+
+ Null images are now supported for image output, much like the null
+files long supported by the file i/o system. For example,
+
+ cl> imcopy pix dev$null
+
+would copy the image "pix" to the null image. This exercises the
+software but produces no actual output image. Unlike null files, null
+images do not work for input since images have some minimal required
+structure, whereas files can be zero length.
+
+
+2.7.1.2 Preallocating pixel file storage
+
+ In the UNIX versions of IRAF, when a new image is created storage
+is not physically allocated for the output image until the data is
+written. This is because most UNIX systems do not provide any means to
+preallocate file system storage. The UNIX/IRAF file creation primitive
+zfaloc, used by IMIO to create pixel files, now provides an option
+which can be used to force storage to be physically allocated at file
+creation time. This feature is enabled by defining the environment
+variable ZFALOC in the UNIX environment. For example,
+
+ % setenv ZFALOC
+
+can be entered before starting IRAF to cause space for all pixel files
+to be preallocated as images are created. If it is not desired to
+preallocate all image storage (there is a significant runtime overhead
+associated with preallocating large images) then a value string can be
+given to specify which types of images to preallocate storage for. For
+example,
+
+ % setenv ZFALOC /scr5
+
+would preallocate only those pixel files stored on the /scr5 disk, and
+
+ % setenv ZFALOC "/scr5,zero"
+
+would preallocate only images on /scr5, or images containing the
+substring "zero" in the image name. In general, the string value of
+ZFALOC may be the null string, which matches all images, or a list of
+simple pattern substrings identifying the images to be matched.
+
+In most cases the default behavior of the system, which is to not
+physically allocate storage until the data is written, is preferable
+since it is more efficient. The preallocation option is provided for
+users who, for example might have an application which spends a lot of
+time computing an image, and they want to ensure that the disk space
+will be available to finish writing out the image.
+
+
+2.7.1.3 Image templates now sorted
+
+ As mentioned earlier in the System Management section, UNIX/IRAF now
+sorts UNIX directories. One result of this is that the sections of
+image templates which are expanded via pattern matching against a
+directory will now be sorted, or at least logically ordered (the final
+output list will not necessarily be fully sorted if string substitution
+is being performed - this is the reason the output list itself is not
+sorted).
+
+
+2.7.1.4 The dev$pix test image
+
+ Minor changes were made to clean up the image header of the
+standard test image dev$pix. A second test image dev$wpix has been
+added. This is the same image, but with a different header containing a
+test world coordinate system (actually the image is just a second image
+header pointing to the dev$pix pixel file, now shared by both images).
+
+
+2.7.2 Image kernels (IKI)
+
+ The IMIO image kernels are the data format specific part of the
+IRAF image i/o subsystem. Each kernel supports a different image
+format. Existing disk image formats range from the conventional image
+raster formats (OIF and STF) to the photon image format (QPF and QPOE)
+and the pixel mask image format (PLF and PMIO/PLIO). There also exist
+special image kernels which allow IMIO to be used to access non-disk
+storage devices such as image display frame buffers.
+
+
+2.7.2.1 New PLF image kernel
+
+ A new image kernel, the PLF image kernel, has been added which
+allows IRAF PMIO/PLIO pixel masks to be stored as images. This kernel
+first appeared as a patch to version 2.9 IRAF but was actually
+developed within V2.10.
+
+Pixel mask images may be created, deleted, read, written, etc. like
+other IRAF images, but the image is stored in a special compressed
+format designed specially for image masks. An image mask is an
+N-dimensional raster-like object wherein typically there are regions of
+constant value but arbitrary shape. Masks are used by applications
+involving image decomposition. The image is decomposed into regions of
+different types, the type of region being very dependent upon the type
+of image analysis being performed. A special type of mask image is the
+bad pixel mask, used to flag the bad pixels in an image. Other
+applications use masks for data quality, to identify the region or
+regions to be used for analysis, and so on.
+
+A PMIO image mask is a special case of a PLIO pixel list. Masks can
+exist and be accessed independently of the image i/o system, but the
+PLF image kernel allows a mask to be stored and accessed as an IRAF
+image. Any IRAF application which operates upon images can operated
+upon a mask image. For example, the imcalc (image calculator) program
+in the SAO XRAY package can be used to combine images and masks, or
+compute new masks by evaluating an algebraic expression over an image.
+
+Mask images have the reserved image extension ".pl". Some of the
+features of mask images are illustrated by the following example.
+
+ cl> imcopy dev$pix pix.pl
+ dev$pix -> pix.pl
+ cl> imstat dev$pix,pix.pl
+ # IMAGE NPIX MEAN STDDEV MIN MAX
+ dev$pix 262144 108.3 131.3 -1. 19936.
+ pix.pl 262144 108.3 131.3 6. 19936.
+
+This is a sort of worst case test of the mask encoding algorithm, since
+our test image is not a mask but a noisy image (and hence not very
+compressible). Note that masks must be positive valued, hence the MIN
+value is different for the two images. Storing dev$pix as a mask does
+not result in any significant compression, but for a real mask very
+high compression factors are possible. The compression algorithm used
+in PLIO is simple and fast, combining 2D run length encoding and a
+differencing technique in a data structure allowing random access of
+multidimensional masks (masks are not limited to one or two dimensions).
+
+For further information on pixel lists and pixel masks, see the document
+plio$PLIO.hlp in the online system. This is also available as
+plio.txt.Z in the IRAF network archive.
+
+
+2.7.2.2 OIF image kernel changes
+
+ The OIF image kernel is the kernel for the old IRAF image format -
+this is still the default IRAF image format. Revisions to the OIF
+kernel for V2.10 included the following items.
+
+o A valid image header is now written even if an application which
+ writes to a new image is aborted. Previously, the pixel file would
+ be written but the image header would be zero length until the
+ image was closed. If an image creation task aborts the image will
+ likely be incomplete in some way, e.g., part of the pixels may not
+ have been written to, or the header may be missing application
+ specific keywords. By valid image header we mean that the header
+ will be valid to IMIO, allowing the image to be accessed to try to
+ recover the data, or to delete the image.
+
+o The image header file of a new image is now written to and closed
+ at image create time, then reopened at image close time to update
+ the header. This frees one file descriptor, an important
+ consideration for applications which for some reason need to write
+ to dozens of output images simultaneously.
+
+o The OIF image kernel uses file protection to prevent inadvertent
+ deletion of the image header file. In UNIX/IRAF systems file
+ delete protection is simulated by creating a ".." prefixed hard
+ link to the file. This could cause problems with images if the
+ user deleted the image header file outside of IRAF, leaving the
+ ".." prefixed link to the file behind. A subsequent image create
+ operation with the same image name would fail due to the existence
+ of the hidden ".." prefixed file. It is unlikely that such a file
+ (with a ".." prefix and a ".imh" extension) could ever be anything
+ but an old IRAF image header file, so the system will now silently
+ replace such files when creating a new image.
+
+ A couple of related system changes were made which, while not
+ implemented in the OIF kernel, do involve the OIF or ".imh" image
+ format. The default template login.cl now defines the environment
+ variable imtype and sets it to "imh". The environment variable
+ min_lenuserarea is also defined now at login time, with a default
+ value of 20000, allowing image headers with up to about 250 header
+ parameters.
+
+
+2.7.2.3 STF image kernel changes
+
+ The STF image kernel is the kernel for the online HST (Hubble Space
+Telescope) image format. This format allows multiple images to be
+grouped together in a single "group format" image. There is a common
+image header stored in a FITS-like format, as well as a small fixed
+format binary header associated with each image in the group.
+
+o A check was added for a group index out of range. This yields a
+ more meaningful error message about no such group, rather than
+ having IMIO complain about a reference out of bounds on the pixel
+ file.
+
+o Support was added for non-group STF images (GROUPS=F in the header).
+ At first glance a non-group group format image might seem a little
+ silly, but it turns out that a non-group STF image with a zero
+ length group parameter block is very close to "FITS on disk", since
+ the header is FITS-like and the image matrix is simple. It is
+ still not true FITS since the header and pixels are stored in
+ separate files and the pixels are not encoded in a machine
+ independent form, but on UNIX hosts which are IEEE standard and not
+ byte swapped, it comes close enough to be useful for communicating
+ with external applications in some cases.
+
+ A true FITS image kernel is planned for IRAF. This will probably
+ appear in one of the V2.10 patches, sometime during 1992.
+
+
+2.7.2.4 QPF image kernel changes
+
+ The QPF image kernel is the interface between the QPOE (position
+ordered event file) interface and IMIO, allowing QPOE event files to be
+accessed as images by general IRAF applications. Photon "images" are
+unique in that the image raster is generated at runtime as the image is
+accessed, optionally passing the photon list through event attribute
+and spatial filters, and sampling the photons to produce a raster
+image. For example,
+
+ cl> imcopy "snr[time=@snr.tf,bl=4]" snr.imh
+
+would filter the event list stored in the file "snr.qp" by the time
+filter stored in file "snr.tf", sample the image space blocking by a
+factor of 4, and store the resultant image raster in the OIF image file
+"snr.imh".
+
+ cl> display "snr[time=@snr.tf,bl=4]" 1
+
+would display the same image raster without creating an intermediate
+disk image.
+
+The changes to the QPF interface for V2.10 included the following.
+
+o A bug was fixed which would prevent very long filter expressions
+ from being correctly recorded in the IMIO image header. The
+ current version of IMIO stores applications header parameters in
+ FITS format, hence multiple FITS cards are required to store long
+ filter expressions. The bug would cause only one such card to be
+ output.
+
+o A new facility was added which allows general expressions to be
+ computed for the input event list and stored as keywords in the
+ output image header. The header of the input QPOE file can contain
+ one or more parameters named defattr1, defattr2, and so on. If
+ present, the string value of each such parameter should be a
+ statement such as
+
+ exptime = integral time:d
+
+ which will cause a keyword named "exptime" to be added to the
+ output image header, the scalar value of the keyword being the
+ value of the expression on the right. Currently, only the integral
+ function is provided. This computes the included area of a range
+ list field of the event attribute expression, such as a time
+ filter. In the example, "time" is the name of the event attribute
+ to be integrated, and the ":d" means use a range list of type
+ double for the computation. The data types currently supported are
+ integer, real and double.
+
+ Other minor changes to QPF included improvements to the error
+ recovery, and other changes to support very large filters.
+
+
+2.7.3 World coordinate system support (MWCS)
+
+ MWCS is the IRAF world coordinate system package, one of the major
+new system interfaces developed for the new image structures project.
+A full description of the MWCS interface is given in the file
+mwcs$MWCS.hlp in the online system, and in the file mwcs.txt.Z in the
+IRAF network archive.
+
+
+2.7.3.1 Applications support
+
+ MWCS was first released in V2.9 IRAF and at the time the interface
+was new and few applications were yet using it. In V2.10 IRAF most
+(but not all) applications which deal with coordinates now use MWCS.
+These include all of the system plotting tasks, and the spectral
+reduction packages. Details of the MWCS support added to the system
+and science applications in V2.10 are given in the IRAF and NOAO
+package revisions section of this revisions summary.
+
+
+2.7.3.2 New function drivers
+
+ Function drivers for the arc, sin, and gls nonlinear sky
+projections were added, as well as a special function driver for the
+multispec image format. The latter allows general programs which don't
+know anything about spectra to access and display spectra in world
+coordinates, e.g., for plotting.
+
+
+2.7.3.3 WCS attributes
+
+ The maximum number of "attributes" per WCS was increased from 64 to
+256, mainly to support the multispec function driver, which makes heavy
+use of attributes. A limit on the size of a single attribute value
+string was removed, allowing arbitrarily large attribute values to be
+stored.
+
+
+2.7.3.4 Axis mapping
+
+ Axis mapping is now fully implemented. Axis mapping is used when,
+for example, you extract a 2 dimensional section from a 3 dimensional
+image and write the result to a new image. Axis mapping allows the 2
+dimensions of the new image to be mapped backed into the original 3
+dimensional WCS, making it possible to get the full physical
+coordinates (which are 3 dimensional) for any point in the extracted
+image. A new header keyword WAXMAPnn was added to store the axis map
+in image headers.
+
+
+2.7.3.5 MWCS save format
+
+ The newer IRAF image formats such as QPOE are capable of storing
+arbitrarily complex objects such as a MWCS in an image header keyword.
+In the case of a stored MWCS object, the MWCS interface is responsible
+for encoding the object in its external storage format, and restoring
+it to a MWCS descriptor when the MWCS is accessed. The code which does
+this was revised to add a new version number for the stored V2.10 MWCS,
+to make it possible to differentiate between the MWCS save formats used
+in V2.9 and V2.10 and allow recovery of MWCS objects from data files
+written under V2.9.
+
+
+2.7.3.6 Bug fixes
+
+ Since MWCS is a new interface and V2.10 saw its first real use in
+applications, a number of interface bugs were discovered and fixed.
+Most of the bugs turned out to be in the part of MWCS which converts
+between the internal MWCS WCS representation, and the FITS WCS
+representation, used for those image formats that still use FITS-like
+headers. Bug fixes included a problem with the treatment of CROTA2, a
+problem with the FITS CD matrix, an axis mapping problem that caused
+"dimension mismatch" errors, and a problem with support for the
+old-style CDELT/CROTA which could result in a singular matrix during
+WCS inversion when compiling a transformation.
+
+
+2.7.4 Event files (QPOE)
+
+ The QPOE interface is the interface responsible for creating and
+accessing event files, the main data format produced by event counting
+detectors. We summarize here the main enhancements to QPOE made during
+the preparation of V2.10. Some of these features appeared earlier in
+the patches made to V2.9 IRAF but these revisions have never been
+formally documented so we summarize both the old and new revisions
+here. See also the discussion of the QPF image kernel given earlier.
+
+
+2.7.4.1 Blocking factors
+
+ The builtin default blocking factor, when sampling the event list
+to make an image raster, is one. This may be changed on a per-datafile
+basis by defining the parameter defblock in the QPOE file header.
+
+
+2.7.4.2 Parameter defaults
+
+ Since parameters such as the blocking factor can be set at a number
+of levels, a parameter defaulting scheme was defined to determine the
+precedence of parameter overrides. The lowest level of precedence is
+the builtin default. Next is any datafile specific value such as
+defblock. A value such as blockfactor set in the QPDEFS file will
+override the datafile default value if any. Specifying the parameter
+value in a runtime filter expression or qpseti call is the highest
+order of precedence and will override any other setting.
+
+Another way to think of this is the more recently the parameter was
+set, the higher the precedence. The oldest value is the default
+builtin to the code. Next is the datafile value, usually set when the
+datafile was created. Next is the QPDEFS macro file, usually set by
+the user or for a site. Last (highest precedence) is the value set by
+the user when the data is accessed.
+
+
+2.7.4.3 Referencing the current datafile in macros
+
+ A special symbol $DFN is now recognized during macro expansion and
+if present is replaced by the filename of the current QPOE file. This
+allows macros to be written which automatically perform some operation
+involving the datafile to which they applied, e.g., computing an
+attribute list from aspect or data quality information stored in the
+datafile header.
+
+
+2.7.4.4 Bitmask expressions
+
+ Bitmask expressions may now be negated, e.g., "%3B" is the mask 03
+octal, "!%3B" or "!(%3B)" is the complement of 03 octal.
+
+
+2.7.4.5 Large time filters
+
+ A number of changes and bug fixes were made to QPOE for V2.10 to
+support large time filters. These are lists of "good time" intervals
+used to filter the event list. These large time filters may contain
+several hundred double precision time intervals spanning the exposure
+period. Often a large time filter is combined with a complex spatial
+filter (PLIO mask) to filter an event list consisting of from several
+hundred thousand to several million events. QPOE can handle this
+efficiently regardless of whether the data is temporarily or spatially
+sorted and regardless of the complexity of the temporal or spatial
+filters.
+
+A number of minor bugs were fixed caused by the large filter expressions
+overflowing various buffers. The default sizes of the program and data
+buffers used to compile filter expressions were increased to allow all
+but very large filters to be compiled without having to change the
+defaults. If the buffers overflow more space can be allocated by
+setting the progbuflen and databuflen parameters in QPDEFS (these
+buffers are not dynamically resized at runtime for efficiency reasons).
+During testing with large time filters it was discovered that a routine
+used to test floating point equality was being used inefficiently, and
+compilation of large time filters was taking a surprisingly long time.
+A change was made which reduced the time to compile large filters by a
+factor of 10 to 15.
+
+
+2.7.4.6 Default filters
+
+ QPOE now fully supports default event attribute and spatial
+filtering of data at runtime. The idea is that the full data set (all
+events) is stored in the QPOE file, along with default event attribute
+and spatial filters. When the data is accessed these filters are, by
+default, automatically applied. Any user specified event attribute or
+spatial filters are "added" to the builtin default filters to produce
+the combined filter used when the event list is accessed. The point of
+all this is to make it easy for the user to modify or replace the
+default filters and "reprocess" the raw event list. In effect the raw
+and processed event list are available in the same file.
+
+The default filter and mask, if any, are stored in the datafile header
+parameters deffilt and defmask. If the datafile contains multiple
+event lists a default filter or mask may be associated with each list
+by adding a period and the name of the event list parameter, e.g.,
+"deffilt.foo" would be the default filter for the event list "foo".
+
+By default, if a default filter or mask exists for an event list it is
+automatically applied when the event list is accessed. Use of the
+default filter or mask can be disabled in QPDEFS with either of the
+following statements:
+
+ set nodeffilt
+ set nodefmask
+
+The default filter and mask can also be disabled in a filter expression
+by adding a "!" before the expression, as in the following example.
+
+ display "snr[!time=@times.lst,pha=(3,8:11)]"
+
+There are actually several variants on the "=" assignment operator used
+in filter expressions such as that above. The operator "=" is
+equivalent to "+=", meaning the expression term on the right adds to
+any existing filter specified for the event attribute on the left. The
+operator ":=" on the other hand, means replace any existing filter by
+the new filter expression.
+
+
+2.7.4.7 Alternate coordinate systems
+
+ The event structure used to represent each event in an event list
+may contain multiple coordinate systems if desired, for example,
+detector and sky coordinates. One coordinate system should be defined
+as the default when the event list is created, and if the event list is
+to be indexed it must be sorted using the coordinate system specified
+as the default. Any coordinate system may be used when the data is
+accessed however; this can result in quite different views of the same
+data set. For example,
+
+ cl> display snr.qp 1
+
+would display the QPOE file "snr.qp" in display frame 1, using all
+defaults for the event list, blocking factor, filter, mask, and so on.
+The default event coordinate system would probably be sky coordinates.
+To display the same event list in detector coordinates, one could enter
+the following command.
+
+ cl> display "snr.qp[key=(dx,dy)]" 1
+
+This assumes that the event structure fields "dx" and "dy" are defined
+somewhere, either in the datafile header or in QPDEFS (otherwise the
+actual field datatype-offset codes must be given).
+
+Currently if the QPOE datafile has a WCS associated with it this WCS can
+only refer to one coordinate system, normally the default event
+coordinate system. Additional WCS can be stored in the QPOE file,
+either in the stored MWCS object or as separate MWCS objects, but at
+present there is no mechanism for selecting which will be used (if the
+parameter qpwcs exists in the QPOE file header, this is assumed to be a
+stored MWCS object and this is the WCS which will be used).
+
+
+
+2.8 System Specific Changes
+
+
+2.8.1 Sun/IRAF
+
+ Since V2.10 has only just been completed and at this stage has only
+been released on Sun platforms, there are few system specific revisions
+to report. For SunOS there were several system specific revisions
+worth noting here.
+
+o The HSI binaries for the sparc architecture are now statically
+ linked. This makes them considerably larger, but avoids problems
+ with SunOS complaining about shared library version mismatches
+ (note that we refer here to to Sun shared libraries - this is not a
+ problem with the IRAF shared library facility since we control the
+ version numbers).
+
+o The HSI binaries for the Motorola architectures (f68881 and ffpa)
+ are not statically linked since they cannot be without running into
+ linker problems warning about f68881_used etc. To avoid or at least
+ minimize warnings about SunOS shared library versions the system was
+ linked on 4.1.1 instead of 4.1.2. SunOS 4.0.3 versions of the
+ Motorola HSI binaries are also available upon request.
+
+o The system as distributed was linked with the name server library,
+ -lresolv. This means that if the local host is configured to use
+ the name server, IRAF will be able to access almost any host on the
+ Internet without an entry in the /etc/hosts file on the local host.
+
+ Additional system specific changes will be reported in the
+ documentation distributed with each release, as V2.10 is moved to
+ the various platforms for which IRAF is supported.
+
+
+
+3. IRAF and NOAO package revisions
+
+ The revisions for the various packages in the IRAF core system and
+in the NOAO packages are summarized below. There have been many changes
+with this release. Users are encouraged to refer to the help pages,
+user's guides provided with some packages, revisions notes, and more
+recent issues of IRAF Newsletters for more details. Comprehensive
+notes on systems and applications modifications are in the files
+pkgnotes.v210.Z and sysnotes.v210.Z in the directory iraf/v210 in the
+network archive. This summary can be read online by typing news.
+Revisions notes for the various packages can also be accessed online as
+in the following example.
+
+ cl> phelp dataio.revisions opt=sys
+
+
+One of the system changes that affects many tasks in the IMAGES, PLOT,
+and LISTS packages as well as most tasks in the spectroscopic packages
+in NOAO is the full implementation of the world coordinate system
+(WCS), introduced in V2.9 but not fully integrated into the IRAF and
+NOAO tasks at that time. There are currently three classes of
+coordinate systems: the logical system is in pixel units of the current
+image section; the physical system is in pixel units of the parent
+image (for a WCS associated with a raster image); the world system can
+be any system defined by the application, e.g. RA and DEC or
+wavelength. In general, this should be transparent to the user since
+most defaults have been chosen carefully so that tasks perform the same
+as in V2.9. The NOAO spectroscopic tasks also use the WCS extensively,
+but again, this should be transparent to the user, although it can
+cause some problems with backward compatibility. Users will notice the
+biggest difference in the image headers with additional keywords added
+by the interface. Two tasks in the PROTO package may help the
+interested user understand more about the WCS - see wcsedit and
+wcsreset. Technical notes on the WCS are available in a paper in the
+iraf$sys/mwcs directory. Type the following to read more about the
+MWCS interface.
+
+ cl> phelp mwcs$MWCS.hlp fi+
+
+
+
+3.1 Changes to the IRAF system packages
+
+
+3.1.1 DATAIO package modifications
+
+o The output defaults for wfits have been modified. If the pixel
+ type on disk is real or double precision the output will be IEEE
+ format (FITS bitpix = -32 or -64, respectively). If the pixel type
+ on disk is short integer then the output will be integer format
+ (bitpix = 16) as before. These defaults can of course be changed
+ by modifying the parameters for wfits.
+
+o The wfits "blocking_factor" parameter can accept values up to and
+ including 10 for variable blocked devices, i.e. 1/2" tape drives,
+ Exabytes, and DATs. If the "blocking_factor" parameter is set to
+ "0", as in the default, the value is read from the "fb" parameter
+ in the tapecap file (usually 10 for variable blocked devices). For
+ fixed blocked devices such as cartridge tape drives the default
+ value for the "fb" parameter in the tapecap file is 22 (used to
+ determine a buffer size) and the block size of the device is given
+ by the "bs" parameter.
+
+o All tasks were modified to accept tapecap parameters as part of the
+ magtape file name syntax. Tapecap parameters can now be appended
+ to the magtape file name to add to or override values in the
+ tapecap file. For example, "mta6250[:se]" is a valid magtape file
+ name (the "" are important when tapecap parameters are specified at
+ execution time). See the file os$zfiomt.c for more details about
+ the tapecap parameters.
+
+o The rfits task has been modified to permit a short last record,
+ i.e. a last record that has not been padded out to 2880 bytes. No
+ warning messages are issued.
+
+o rfits was modified to map ASCII control characters in the header to
+ blanks.
+
+o The sequence number appended to disk file names by rfits and wfits
+ was modified to 4 digits, i.e. 0001 - 9999.
+
+
+3.1.2 IMAGES package modifications
+
+o WCS (world coordinate system) support was added to all tasks in the
+ IMAGES package that could introduce a coordinate transformation.
+ Some tasks had already been modified for the V2.9 release. These
+ tasks (blkavg, blkrep, geotran, imcopy, imlintran, imshift,
+ imslice, imstack, imtranspose, magnify, register, rotate, and
+ shiftlines), upon execution, will update the image header to
+ reflect any transformation.
+
+o The listpixels task was modified to list the pixel coordinates in
+ either logical, physical, or world coordinates. A format parameter
+ was added to the task for formatting the output pixel coordinates
+ taking precedence over the WCS in the image header, if used.
+
+o A new imcombine task was added to the package. This new task
+ supports image masks and offsets, and has an assortment of new
+ combining algorithms. See the help pages for complete details on
+ this powerful new task.
+
+o The imhistogram task has a new "binwidth" parameter for setting
+ histogram resolution in intensity units.
+
+o The default values for the parameters "xscale" and "yscale" in the
+ register and geotran tasks were changed from INDEF to 1.0, to
+ preserve the scale of the reference image.
+
+
+3.1.3 IMAGES.TV package reorganization and modifications
+
+o The TV package has been reorganized. The IIS dependent tasks have
+ been moved into a subpackage, TV.IIS. The imedit, imexamine, and
+ tvmark tasks that were previously in PROTO have been moved to TV.
+
+o A new task wcslab developed at STScI by Jonathan Eisenhamer was
+ added to the package. wcslab overlays a labeled world coordinate
+ grid on an image using WCS information stored in the header of the
+ image or in parameters of the task.
+
+o imexamine was modified to use WCS information in axis labels and
+ coordinate readback, if selected by the user. Two new parameters,
+ "xformat" and "yformat", were added to specify the format of the
+ WCS if it is not present in the header of the image.
+
+o A new option was added to imexamine to allow for fitting 1D
+ gaussians to lines or columns.
+
+o tvmark had two cursor key changes. The "d" keystroke command that
+ marked an object with a dot was changed to "."; the "u" keystroke
+ command that deleted a point was changed to "d".
+
+
+3.1.4 LISTS package modifications
+
+o Two new parameters were added to the rimcursor task, "wxformat" and
+ "wyformat". These parameters allow the user to specify the
+ coordinate formats for the output of the task and override any
+ values stored in the WCS in the image header.
+
+
+3.1.5 OBSOLETE package added
+
+o An new package called OBSOLETE was added. Tasks will be moved to
+ this package as they are replaced by newer tasks in the system.
+ OBSOLETE tasks will then be removed at the time of the next release.
+
+o mkhistogram, imtitle, radplt, and the old imcombine task have been
+ moved to the OBSOLETE package. Users should become familiar with
+ phistogram, hedit, pradprof, and the new imcombine and use them
+ instead since mkhistogram, imtitle, radplt, and oimcombine will be
+ retired with the next release.
+
+
+3.1.6 PLOT package modifications
+
+o A new task called phistogram was added to the PLOT package. This
+ task takes input from an image or from a list and allows full
+ control over the plotting parameters. This task replaces the
+ obsolete.mkhistogram task.
+
+o A new task pradprof was added to the PLOT package. This task plots
+ or lists the radial profile of a stellar object. This task
+ replaces the obsolete.radplt task.
+
+o A new task called gdevices was added to the package. gdevices
+ prints available information known about a particular class of
+ device. The default parameters are set up to print a list of the
+ available stdimage devices in the standard graphcap file.
+
+o WCS support was added to the tasks graph, pcol(s), and prow(s). A
+ new parameter called "wcs" was added to define the coordinate
+ system to be used on the axis, either logical, physical or world.
+ Two additional parameters, "xformat" and "yformat", were also added
+ to allow the user to set the format for axis labels overriding any
+ values in the image header. The "xlabel" parameter values were
+ extended to include the special word "wcslabel" to select the WCS
+ label for the x axis from the image header.
+
+o WCS support was added to the task implot. A new parameter called
+ "wcs" was added to define the coordinate system for plotting,
+ either logical, physical, or world. Two new ":" commands were also
+ added: ":w" allows the user to set a new WCS type interactively;
+ ":f" allows the user to change the axis format, for instance, ":f
+ %H" would change the axis to read h:m:s, if the world coordinate RA
+ had been defined in the image header. The "space" key now prints
+ out the coordinate and pixel value information.
+
+o graph has a another new parameter "overplot" that allows the user
+ to overplot multiple plots with different axes.
+
+o The default parameters for "floor" and "ceiling" in contour and
+ surface were changed to INDEF.
+
+
+3.1.7 PROTO package reorganization and modifications
+
+ This package has been reorganized. The PROTO package now resides
+in the core system. Tasks in the old PROTO package that were general
+image processing tools were kept in this new PROTO package. Tasks that
+were more data reduction specific were moved to the new NPROTO package
+in the NOAO package. The current PROTO package now contains the tasks
+binfil, bscale, epix, fields, fixpix, hfix, imalign, imcentroid,
+incntr, imfunction, imreplace, imscale, interp, irafil, joinlines,
+suntoiraf, wcsedit, and wcsreset.
+
+o The new task hfix was added to the package. This task allows the
+ user to extract the image headers into a text file, view or modify
+ this file with a specified command, and then update the image
+ header with the modified file.
+
+o A new task called suntoiraf was added to this package. This is a
+ host dependent task that will most likely be useful only on Sun's.
+ This task converts a Sun raster file into an IRAF image.
+
+o Two new tasks dealing with the WCS were added to this package,
+ wcsreset and wcsedit. wcsreset resets the coordinate systems in
+ the image header to the logical coordinate system. wcsedit allows
+ the user to modify the existing WCS or to create a new WCS and then
+ update the image header.
+
+o A new version of bscale was added to the package. The task now
+ takes a list of input images and output images.
+
+o A new version of imfunction was added to the package. The task
+ supports many more functions, for example log10, alog10, ln, aln,
+ sqrt, square, cbrt, cube, abs, neg, cos, sin, tan, acos, asin,
+ atan, hcos, hsin, htan, and reciprocal.
+
+o imreplace was modified to support the "ushort" pixel type.
+
+o The task join has been renamed joinlines.
+
+
+3.1.8 Additions to XTOOLS and MATH
+
+ Programmers may be interested in the following new additions to the
+XTOOLS and MATH libraries.
+
+o The interactive non-linear least squares fitting package INLFIT,
+ developed by Pedro Gigoux at CTIO, was added to XTOOLS.
+
+o The 1D image interpolation routines in the MATH library were
+ modified to support sinc interpolation.
+
+
+3.1.9 Glossary of new tasks in the IRAF core system
+
+Task Package Description
+
+gdevices plot List imaging or other graphics devices
+hfix proto Fix image headers
+imcombine images Combine images pixel-by-pixel
+phistogram plot Plot or print the histogram of an image or list
+pradprof plot Plot or list the radial profile of an object
+suntoiraf proto Convert Sun rasters into IRAF images
+wcsedit proto Edit the image coordinate system
+wcslab tv Overlay an image with a world coordinate grid
+wcsreset proto Reset the image coordinate system
+
+
+3.2 Changes to the NOAO Packages
+
+ An updated version of the observatory task has been installed at the
+NOAO level. The task sets observatory parameters from a database of
+observatories or from the parameters in the task itself. Many packages
+and tasks within the NOAO packages that need information about where
+the data was observed use information supplied by the observatory task.
+
+
+3.2.1 ARTDATA package modifications
+
+ A new version of the ARTDATA package was released with IRAF version
+2.9.1. A summary of those changes plus modifications since that update
+are listed below. A more comprehensive list of the changes included in
+V2.9.1 are discussed in IRAF Newsletter Number 10.
+
+o A new task mkechelle has been added that creates artificial 2D
+ echelle images.
+
+o A new task mkexamples has been added. The task is intended to
+ generate a variety of artificial images to be used in testing or
+ demonstrations.
+
+o A new task mkheader adds or modifies image headers using a header
+ keyword data file.
+
+o The mk1dspec task was modified to create multispec and echelle
+ format images, line by line.
+
+o A parameter "header" was added to mkobjects, mknoise, mk1dspec, and
+ mk2dspec so that a header data file could be added to the output
+ image. Other header parameters are also added to the image header
+ such as gain, rdnoise, and exptime.
+
+o A "comments" parameter was added to various tasks to
+ include/exclude comments in the header of the output image that
+ describe the data parameters.
+
+
+3.2.2 ASTUTIL package modifications
+
+o A new task gratings has been added to the package. This task
+ computes grating parameters; five of the seven parameters must be
+ specified at one time.
+
+o A new task setjd has been added to the package. setjd computes the
+ geocentric, heliocentric, and integer local Julian dates from
+ information given in the headers of the input list of images. This
+ information is then listed or added to the image headers.
+
+o A few changes were made to setairmass. The default value for
+ "update" was changed to "yes"; an update field was added to the
+ "show" messages; a warning is printed if both "show" and "update"
+ are set to "no" indicating that nothing was done.
+
+
+3.2.3 DIGIPHOT package modifications
+
+ A new version of the DIGIPHOT package was installed. Some changes
+were made to the existing APPHOT package used for aperture photometry,
+and those are mentioned below. But three new packages have also been
+installed, DAOPHOT, PHOTCAL, and PTOOLS.
+
+DAOPHOT has been available for the past two years as an add-on package
+known as TESTPHOT. It is now part of the distributed system. The IRAF
+version of DAOPHOT, used to do photometry in crowded fields, has been a
+collaborative effort with Peter Stetson and Dennis Crabtree of the
+DAO. For the convenience of the many TESTPHOT users, changes to the
+package since the last release of TESTPHOT are summarized below.
+
+PHOTCAL is the photometric calibration package for computing the
+transformations of the instrumental magnitudes output from APPHOT and
+DAOPHOT to the standard photometric system. This package has been a
+collaborative effort with Pedro Gigoux at CTIO.
+
+PTOOLS is a package containing an assortment of tools for manipulating
+the data files produced from APPHOT and DAOPHOT. If users are using
+STSDAS TABLES format data files then they must first install the TABLES
+layered package. This package can be obtained from either STScI or
+NOAO (see iraf/contrib in the IRAF network archive).
+
+
+3.2.4 DIGIPHOT.APPHOT package modifications
+
+o The apselect task was replaced with the functionally equivalent
+ txdump task. txdump allows the user to select fields of data from
+ the output data files produced from APPHOT tasks and either simply
+ list the extracted data or save it in another file.
+
+o A new task called pexamine has been added to the package. pexamine
+ is a general purpose tool for interactively examining and editing
+ the data files produced from tasks in either APPHOT or DAOPHOT.
+ This task is intended to complement the batch oriented task txdump.
+
+o All of the APPHOT tasks will now query to verify the "datamin" and
+ "datamax" values, if these values are used by the tasks.
+
+o The time of the observation, i.e. UT, can now be carried over into
+ the output data files, if a keyword in the image header contains
+ this information.
+
+o If there is bad data within the photometry aperture a value of
+ INDEF will be stored in the data file for that magnitude.
+
+
+3.2.5 DIGIPHOT.DAOPHOT (TESTPHOT) package modifications
+
+ This is a new package but for the convenience of the many users of
+the TESTPHOT add-on package, the changes to TESTPHOT between its last
+release and its installation into the DIGIPHOT package as DAOPHOT are
+summarized below.
+
+o The append, convert, dump, renumber, select, and sort tasks were
+ renamed to pappend, pconvert, pdump, prenumber, pselect, and psort.
+
+o The "text" parameter was moved from daopars to the DAOPHOT package
+ parameters.
+
+o All the DAOPHOT routines were modified so that "psfrad", "fitrad",
+ and "matchrad" are defined in terms of scale.
+
+o The tasks allstar, group, nstar, peak, psf, and substar were all
+ modified to include "datamin" and "datamax" in their verify
+ routines.
+
+o Support was added for a time of observation parameter to all the
+ appropriate DAOPHOT tasks. If present, this time will be carried
+ over into the output data files.
+
+o All the DAOPHOT tasks except psf have been modified to accept lists
+ of input and output files.
+
+o The new pexamine task was added to this package. pexamine is a
+ general purpose tool for interactively examining and editing the
+ data files produced from tasks in either APPHOT or DAOPHOT. This
+ task is intended to complement the batch oriented task txdump.
+
+o Several changes were made to psf: the default PSF image header will
+ now hold up to 66 stars (but it is still dependent on the
+ environment variable min_lenuserarea); a check was added so that
+ the same star can not be added to the PSF twice; potential PSF
+ stars are now rejected if their sky or magnitude values are INDEF;
+ a check was added so that stars with INDEF valued positions are
+ treated as stars that were not found.
+
+o group was modified so that the groups are output in y order instead
+ of in order of the size of the group.
+
+o Both group and peak were modified so that stars with INDEF centers
+ are not written to the output file.
+
+
+3.2.6 IMRED package modifications
+
+ The spectroscopic packages within the IMRED package have undergone
+quite a bit of work and reorganization. The spectroscopic packages are
+now ARGUS, CTIOSLIT, ECHELLE, HYDRA, IIDS, IRS, KPNOCOUDE, KPNOSLIT,
+and SPECRED. These packages are a collection of tasks from APEXTRACT
+and ONEDSPEC that are appropriate for the specific applications. All
+these packages use the new versions of the APEXTRACT and ONEDSPEC
+packages; the changes for APEXTRACT and ONEDSPEC are summarized below.
+Earlier versions of all these packages were released as the NEWIMRED
+add-on package. The NEWIMRED package is now defunct and the
+distributed system contains the latest versions of these packages.
+
+The spectroscopic packages now contain "DO" tasks that are scripts that
+streamline the reduction process for the user. The "DO" tasks have been
+modified for each particular application.
+
+The ARGUS package is for the reduction of data taken with the CTIO argus
+instrument. Its corresponding script task is doargus.
+
+The CTIOSLIT package is similar to the ARGUS package except that is a
+collection of spectroscopic tasks used for general CTIO slit
+reductions. The doslit task allows for streamlined reductions.
+
+The ECHELLE package has the addition of the doecslit task for simplied
+echelle reductions. The dofoe task has been added for the reduction of
+Fiber Optic Echelle (FOE) spectra.
+
+The HYDRA package is used for the reduction of multifiber data taken at
+KPNO. The dohydra task has been customized for streamlining nessie and
+hydra reductions.
+
+The KPNOCOUDE package has been customized for the KPNO Coude. The
+doslit task allows the user to go through the reduction process with as
+few keystrokes as possible. The do3fiber task is specialized for the 3
+fiber (two arc and one object) instrument.
+
+The KPNOSLIT package can be used for general slit reductions at KPNO.
+The doslit task in this package is similar to that in the other
+packages.
+
+The SPECRED package is the old MSRED package, used for general
+multispectral reductions. This is a generic package that can be used
+for slit and multifiber/ aperture data. General doslit and dofibers
+tasks are available.
+
+Several of the spectroscopic packages has a special task called msresp1d
+for creating 1d aperture response corrections from flat and throughput
+data. This task is specialized for multiaperture or multifiber data.
+
+All of the "DO" tasks have reference manuals that are available in the
+network archive in the iraf/docs directory.
+
+
+3.2.7 IMRED.CCDRED package modifications
+
+o A new task ccdinstrument was added to the package. The purpose of
+ this task is to help users create new CCD instrument translation
+ files to use with the package.
+
+o The combine task (as well as darkcombine, flatcombine, and
+ zerocombine) is the same task as the new imcombine task in IMAGES.
+ A few parameters were added for compatibility with the CCDRED tasks.
+
+o A new parameter was added to ccdproc called "minreplace". Pixel
+ values in flat fields below the value for "minreplace" are replaced
+ by the same value (after overscan, zero, and dark corrections).
+ This avoids dividing by zero problems.
+
+o The default computation and output "pixeltype" in the package
+ parameter for CCDRED are both real. Note that both can now be
+ specified separately.
+
+o The default parameters for darkcombine and flatcombine have been
+ changed.
+
+
+3.2.8 NOBSOLETE package added
+
+ This new package has been defined but currently no tasks reside in
+it. This package will be used as a repository for tasks that have been
+replaced by newer tasks in the NOAO packages. The NOBSOLETE tasks will
+then be removed at the time of the next release.
+
+
+3.2.9 NPROTO package modifications
+
+ The old PROTO package was divided into two separate packages, one
+called PROTO that now resides in the IRAF core system and the other
+called NPROTO that resides in the NOAO package. The current NPROTO
+tasks are binpairs, findgain, findthresh, iralign, irmatch1d,
+irmatch2d, irmosaic, linpol, and slitpic. The imedit, imexamine, and
+tvmark tasks were moved to the IMAGES.TV package. The ndprep task was
+moved to ONEDSPEC. All other tasks were moved to the PROTO package at
+the core level.
+
+o Two new tasks called findgain and findthresh were added to this
+ package. findgain determines the gain and read noise of a CCD from
+ a pair of dome flats and from a pair of bias/zero frames using the
+ Janesick method. findthresh estimates the background noise level
+ of the CCD using a sky frame and the gain and readnoise of the CCD.
+
+o A new task called linpol has been added to the PROTO package. This
+ task calculates the pixel-by-pixel fractional linear polarization
+ and polarization angle for three or four images. The polarizer
+ must be set at even multiples of a 45 degree position angle.
+
+o The task ndprep used for CTIO 2DFRUTTI reductions was moved to the
+ ONEDSPEC package.
+
+o The task toonedspec was removed since its function can now be
+ performed by the onedspec.scopy task.
+
+
+3.2.10 ONEDSPEC package reductions
+
+ There have been significant changes to the ONEDSPEC package. A
+more detailed revisions summary is available in the IRAF network
+archive as file onedv210.ps.Z in the subdirectory iraf/docs.
+
+The new package supports a variety of spectral image formats. The older
+formats can still be read. In particular the one dimensional
+"onedspec" and the two dimensional "multispec" format will still be
+acceptable as input. Note that the image naming syntax for the
+"onedspec" format using record number extensions is a separate issue
+and is still provided but only in the IMRED.IIDS and IMRED.IRS
+packages. Any new spectra created are either a one dimensional format
+using relatively simple keywords and a two or three dimensional format
+which treats each line of the image as a separate spectrum and uses a
+more complex world coordinate system and keywords. For the sake of
+discussion the two formats are still called "onedspec" and "multispec"
+though they are not equivalent to the earlier formats.
+
+In addition, the one dimensional spectral tasks may also operate on two
+dimensional images. This is done by using the "dispaxis" keyword in the
+image header or a package dispaxis parameter if the keyword is missing
+to define the dispersion axis. In addition there is a summing
+parameter in the package to allow summing a number of lines or
+columns. If the spectra are wavelength calibrated long slit spectra,
+the product of the longslit.transform task, the wavelength information
+will also be properly handled. Thus, one may use splot or specplot for
+plotting such data without having to extract them to another format.
+If one wants to extract one dimensional spectra by summing columns or
+lines, as opposed to using the more complex APEXTRACT package, then one
+can simply use scopy (this effectively replaces proto.toonedspec)
+
+Another major change to the package is that spectra no longer need to
+be interpolated to a uniform sampling in wavelength. The dispersion
+functions determined by identify/reidentify can now be carried along
+with the spectra in the image headers and recognized throughout the
+package and the IRAF core system. Thus the WCS has been fully
+implemented in the ONEDSPEC tasks and although much is to be gained by
+this it can cause problems with earlier IRAF systems as well as making
+it difficult to import data into non-IRAF software. But it is now
+possible to use imcopy with an image section on a spectrum, for
+instance, and have the wavelength information retained correctly.
+
+A sinc interpolator is now available for those tasks doing geometric
+corrections or interpolations. This option can be selected by setting
+the "interp" parameter in the ONEDSPEC package parameters.
+
+Other changes are summarized:
+
+o The new task deredden corrects input spectra for interstellar
+ extinction, or reddening.
+
+o The new task dopcor corrects input spectra by removing a specified
+ doppler velocity. The opposite sign can be used to add a doppler
+ shift to a spectrum.
+
+o The new task fitprofs fits 1D gaussian profiles to spectral lines or
+ features in an image line or column. This is done noninteractively
+ and driven by an input list of feature positions.
+
+o The task ndprep was moved to this package from the PROTO package.
+ ndprep is used for CTIO 2DFRUTTI reductions.
+
+o The new task sapertures adds or modifies beam numbers and aperture
+ titles for selected apertures based on an aperture identification
+ file.
+
+o The new task sarith does spectral arithmetic and includes unary
+ operators. The arithmetic can be performed on separate input
+ spectra or on apertures within a multispec format image.
+
+o The task scombine has been added to the package. This new task is
+ similar to the new imcombine task in the IMAGES package but is
+ specialized for spectral data.
+
+o The new task scopy copies subsets of apertures and does format
+ conversions between the different spectrum formats.
+
+o The new task sfit fits spectra and outputs the fits in various ways.
+ This includes a new feature to replace deviant points by the fit.
+ Apertures in multispec and echelle format are fit independently.
+
+o The tasks addsets, batchred, bswitch, coincor, flatdiv, flatfit,
+ subsets and sums were moved to the IIDS and IRS packages.
+
+o The task combine was removed with the all new scombine suggested in
+ its place.
+
+o The tasks rebin, sflip and shedit were removed from the package.
+ Rebinning of spectra can now be done with scopy or dispcor. scopy
+ and imcopy can now be used in place of sflip. And hedit is an
+ alternative for shedit.
+
+o bplot and slist have been modified to support the multispec format.
+
+o The task continuum now does independent fits for multispec and
+ echelle format spectra.
+
+o There is now only one dispcor task doing the work of the three
+ previous tasks dispcor, msdispcor and ecdispcor. Several of the
+ parameters for this task have been changed. The old "recformat"
+ and "records" parameters for supporting the old onedspec format
+ have been removed except in the IIDS/IRS packages. A "linearize"
+ parameter has been added for setting the interpolation to yes or no
+ on output. The "interpolation" parameter was removed since this
+ information is now read from the package parameter "interp". The
+ "ignoreaps" parameter has been changed to "samedisp".
+
+o identify and reidentify now treat multispec format spectra and two
+ dimensional images as a unit allowing easy movement between
+ different image lines or columns. The database is only updated upon
+ exiting the image. The "j", "k", and "o" keys have been added to
+ the interactive sessions to allow for scrolling through the
+ different lines in a two dimensional image. The database format
+ now uses aperture numbers rather than image sections for multispec
+ format spectra.
+
+o The task specplot has new parameters "apertures" and "bands" to
+ select spectra for plotting in the multispec format.
+
+o splot now allows deblending of any number of components and allows
+ simultaneous fitting of a linear background. Several cursor keys
+ have been redefined and colon commands have been added to fully
+ support the new multispec format and to add even more flexibility
+ to the task than before! Please see the help pages for details.
+
+o The reidentify task is essentially a new task. The important
+ changes are an interactive review option, the ability to add
+ features from a line list, using the same reference spectrum for
+ all other spectra in a 2D reference image rather than "tracing"
+ (using the results of the last reidentification as the initial
+ guess for the next one) across the image, and matching image
+ lines/columns/apertures from a 2D reference image to other 2D
+ images rather than "tracing" again.
+
+
+3.2.11 RV package added
+
+ This is a new package installed with IRAF version 2.10. A version
+of this package, RV0, has been available as an add-on for the past year
+or so. The package contains one main task fxcor that performs a Fourier
+cross-correlation on the input list of spectra. The package supports
+the multispec format.
+
+
+3.2.12 TWODSPEC package modifications
+
+ The old MULTISPEC package that has resided in the TWODSPEC package
+for years has been disabled. The code is still there for browsing,
+however, and the package can be resurrected easily if needed.
+
+The observatory task was moved to the NOAO package itself. The
+setairmass task was moved to LONGSLIT. And the setdisp task is no
+longer needed; task or package parameters are used in its place.
+
+Changes to the APEXTRACT and LONGSLIT packages are summarized below.
+
+
+3.2.13 TWODSPEC.APEXTRACT package modifications
+
+ A new version, version 3, of the IRAF APEXTRACT package has been
+completed. A detailed revisions summary is available in the IRAF
+network archive (file apexv210.ps.Z in iraf/docs).
+
+There were three goals for the new package: new and improved cleaning
+and variance weighting (optimal extraction) algorithms, the addition of
+recommended or desirable new tasks and algorithms (particularly to
+support large numbers of spectra from fiber and aperture mask
+instruments), and special support for the new image reduction scripts in
+the various IMRED packages.
+
+The multispec format, the default image format for all spectroscopic
+packages except IIDS and IRS, is either 2D or 3D (the 3D format is new
+with this release). The 3D format is produced when the parameter
+"extras" is set to yes in the extraction tasks. The basic 2D format,
+which applies to the first plane of the 3D format, has each 1D aperture
+spectra extracted in a line. Thus, the first coordinate is the pixel
+coordinate along the spectra. The second coordinate refers to the
+separate apertures. The third coordinate contains extra information
+associated with the spectrum in the first plane. The extra planes are:
+
+ 1: Primary spectra which are variance and/or cosmic ray cleaned
+ 2: Spectra which are not weighted or cleaned
+ 3: Sky spectra when using background subtraction
+ 4: Estimated sigma of the extracted spectra
+
+If background subtraction is not done then 4 moves down to plane 3.
+Thus:
+
+ output.ms[*,*,1] = all primary spectra
+ output.ms[*,5,1] = 5th aperture spectrum which is cleaned
+ output.ms[*,5,2] = raw/uncleaned 5th aperture spectrum
+ output.ms[*,5,3] = sky for 5th spectrum
+ output.ms[*,5,4] = sigma of 5th spectrum
+
+
+The following summarizes the major new features and changes.
+
+o New techniques for cleaning and variance weighting extracted
+ spectra have been implemented.
+
+o Special features for automatically numbering and identifying large
+ numbers of apertures have been added.
+
+o There is no longer a limit to the number of apertures that can be
+ extracted.
+
+o The new task apall integrates all the parameters used for one
+ dimensional extraction of spectra.
+
+o The new task apfit provides various types of fitting for two
+ dimensional multiobject spectra.
+
+o The new task apflatten creates flat fields from fiber and slitlet
+ spectra.
+
+o The new task apmask creates mask images from aperture definitions
+ using the new pixel list image format. No tasks have yet been
+ written, however, to use this new mask image format.
+
+o The new tasks and algorithms, aprecenter and apresize, will
+ automatically recenter and resize aperture definitions.
+
+o The task apio is defunct. Its functionality has been replaced by
+ the APEXTRACT package parameters.
+
+o The task apstrip has been removed.
+
+o Minor changes have been made to the old "AP" tasks to accommodate
+ these new changes in the package; in some cases new parameters have
+ been added to the task and in other cases new cursor options have
+ been implemented. See the help pages for details.
+
+
+3.2.14 TWODSPEC.LONGSLIT package modifications
+
+o The "dispaxis" parameter was added to the package parameters. This
+ value is used unless DISPAXIS is in the image header.
+
+
+3.2.15 Glossary of new tasks in the NOAO packages
+
+Task Package Description
+
+addstar daophot Add artificial stars to an image
+allstar daophot Group and fit psf to multiple stars
+apall apextract Extract 1D spectra
+apfit apextract Fit 2D spectra
+apflatten apextract Remove shapes from flat fields
+apmask apextract Create an IRAF pixel mask from apertures
+aprecenter apextract Recenter apertures
+apresize apextract Resize apertures
+ccdinstrument ccdred Review instrument translation files
+centerpars daophot Edit the centering algorithm parameters
+chkconfig photcal Check the configuration file
+continpars rv Edit continuum subtraction parameters
+daofind daophot Find stars using the DAO algorithm
+daopars daophot Edit the daophot algorithms parameter set
+datapars daophot Edit the data dependent parameters
+deredden onedspec Apply interstellar extinction correction
+do3fiber kpnocoude Process KPNO coude three fiber spectra
+doargus argus Process ARGUS spectra
+doecslit echelle Process Echelle slit spectra
+dofibers specred Process fiber spectra
+dofoe echelle Process Fiber Optic Echelle (FOE) spectra
+dohydra hydra Process HYDRA spectra
+dopcor onedspec Apply doppler corrections
+doslit ctioslit Process CTIO slit spectra
+doslit kpnocoude Process KPNO coude slit spectra
+doslit kpnoslit Process slit spectra
+doslit specred Process slit spectra
+evalfit photcal Compute standard indices
+filtpars rv Edit the filter function parameters
+findgain nproto Estimate the gain and readnoise of a CCD
+findthresh nproto Estimate a CCD's sky noise
+fitparams photcal Compute transformation equations
+fitprofs onedspec Fit gaussian profiles
+fitskypars daophot Edit the sky fitting parameters
+fxcor rv Radial velocities via cross correlation
+gratings astutil Compute and print grating parameters
+group daophot Group stars
+grpselect daophot Select groups from a daophot database
+invertfit photcal Compute the standard indices by inversion
+istable ptools Is a file a table or text database file?
+linpol nproto Polarization and Stoke's parameters
+keywpars rv Translate image header keywords
+mkcatalog photcal Type in a standard star catalog
+mkconfig photcal Prepare a configuration file
+mkechelle artdata Make artificial 1D and 2D echelle spectra
+mkexamples artdata Make artificial data examples
+mkheader artdata Append/replace header parameters
+mkimsets photcal Prepare an image set file for mkNobsfile
+mk(n)obsfile photcal Make a starfield observations file
+mkphotcors photcal Check photometric corrections files
+msresp1d argus Create 1D response spectra
+msresp1d hydra Create 1D response spectra
+msresp1d kpnocoude Create fiber response spectra
+msresp1d specred Create 1D response spectra
+nstar daophot Fit the psf to groups of stars
+obsfile photcal Make a starfield observations file
+pappend daophot Concatenate daophot databases
+pappend ptools Concatenate apphot/daophot databases
+pconvert daophot Convert text database to tables database
+pconvert ptools Convert text database to tables database
+pdump daophot Print fields from daophot databases
+pdump ptools Print columns of daophot/apphot databases
+peak daophot Fit the psf to single stars
+pexamine apphot Examine or edit an apphot output file
+pexamine daophot Examine and edit a daophot database
+pexamine ptools Examine and edit an apphot/daophot database
+phot daophot Compute sky values and initial magnitudes
+photpars daophot Edit the photometry parameters
+prenumber daophot Renumber stars in a daophot database
+prenumber ptools Renumber a list of apphot/daophot databases
+pselect daophot Select records from daophot database
+pselect ptools Select records from apphot/daophot databases
+psf daophot Fit the point spread function
+psort daophot Sort a daophot database
+psort ptools Sort a list of apphot/daophot databases
+sapertures onedspec Set or change aperture header information
+sarith onedspec Spectrum arithmetic
+scombine onedspec Combine spectra
+scopy onedspec Select and copy apertures
+seepsf daophot Compute an image of the PSF
+setjd astutil Compute and set Julian dates in images
+sfit onedspec Fit spectra
+substar daophot Subtract the fitted stars
+tbappend ptools Concatenate apphot/daophot tables databases
+tbdump ptools Print columns of tables databases
+tbrenumber ptools Renumber apphot/daophot tables databases
+tbselect ptools Select records from apphot/daophot databases
+tbsort ptools Sort apphot/daophot tables databases
+txappend ptools Concatenate apphot/daophot text databases
+txdump apphot Dump selected fields of apphot output file
+txdump ptools Print columns of text databases
+txrenumber ptools Renumber apphot/daophot text databases
+txselect ptools Select records from text databases
+txsort ptools Sort apphot/daophot text databases
+
+
+
+4. Programming Environment Revisions
+
+
+
+4.1 Compatibility Issues
+
+ V2.10 IRAF requires that any local IRAF programs external to the
+V2.10 system (such as layered packages or locally written tasks) be
+fully recompiled if they are relinked against V2.10. The problem
+arises only if the programs are relinked; external programs will
+continue to run after V2.10 is installed, but linker errors will be
+seen if the programs are relinked without being fully recompiled. This
+is because the internal names of some important system routines were
+changed in V2.10 to avoid name clashes with host system routines. For
+example, the SPP procedure "rename" is now translated to "xfrnam" when
+the SPP code it appears in is compiled.
+
+As always, actual interface changes affecting existing source code were
+very few. The macro "E" in <math.h> was renamed to "BASE_E" to minimize
+the chance of an accidental name collision. The calling sequence for
+the onentry procedure (ETC) was changed, but since this is a little used
+system procedure very few tasks should be affected. A number of new
+procedures were added to MTIO and the syntax of a magtape device has
+changed; old applications should be modified to use the MTIO procedures
+to operate upon magtape device names.
+
+These and other revisions affecting the programming environment are
+discussed in more detail below.
+
+
+
+4.2 Portability Issues
+
+ The V2.10 UNIX/IRAF kernel now includes "#ifdef SYSV" support for
+System V UNIX, making it easier to port IRAF to SysV based systems.
+The UNIX/IRAF HSI (host system interface) is still not as portable to
+UNIX variants as it could be, but at this point it is easier for us to
+make the minor revisions required for a new port than to further refine
+the HSI. The disadvantage is that it is harder than it should be for
+people in the community to do their own IRAF ports, due to the level of
+IRAF expertise required to tune the code. Someday we plan to generate
+a generic-UNIX HSI. Note that these comments pertain only to the few
+thousand lines of code in the HSI - the bulk of the IRAF code is 100%
+portable (identical on all IRAF systems) as it has always been.
+
+The recent port of IRAF to A/UX (the Apple Macintosh UNIX) is
+interesting from a portability standpoint because we used the
+publically available Fortran to C translator f2c plus the GNU C
+compiler gcc to compile all the SPP and Fortran code in IRAF. This was
+remarkably successful and means that the IRAF code is now portable to
+any system with a C compiler. In the process of performing these
+compilations a few dozen minor bugs were found by the static compile
+time checking performed by f2c and gcc. The IRAF C code was run
+through gcc with ANSI mode enabled, and hence should now be ANSI-C
+compatible. The GNU debugger gdb proved to be an effective tool for
+debugging of IRAF code compiled with gcc.
+
+
+
+4.3 Software Tools
+
+
+4.3.1 LOGIPC feature
+
+ A new facility has been added to UNIX/IRAF (all systems) for
+debugging interprocess communication (IPC). This feature will also be
+useful for debugging tasks standalone, particularly in cases where a
+bug seen when running a task from the CL is difficult to reproduce when
+the task is run standalone. The new facility allows one to carry out a
+normal IRAF session while transparently logging all interprocess
+communications. Each process can then be rerun individually using the
+logged IPC to exactly duplicate the functioning of the process to,
+e.g., examine the program operation in detail under a debugger.
+
+The facility is this: if LOGIPC is defined in the host environment when
+an iraf process is started, the process will create two files pid.in
+and pid.out, where pid is the process id. Everything read from the IPC
+input file is copied to the .in file, and everything written to the IPC
+output (i.e., sent back to the CL) is copied to the .out file. This is
+done only for connected subprocesses. It will work for any connected
+subprocess, e.g., normal cached processes and graphics subkernels in
+both foreground and background CLs, but not the i/o of the CL itself
+since the CL is not driven by IPC.
+
+The IPC streams saved are an exact binary copy of whatever was sent via
+IPC, including the binary IPC packet headers, and binary graphics data,
+and so on. All the IPC communications used to start up the process,
+run zero or more tasks, and close the process down will be logged.
+Most IPC traffic is textual in nature so it will usually be possible to
+examine the IPC files with a file pager, although the results may be
+less than satisfactory if binary data such as a graphics metacode
+stream is logged. It is not necessary to examine the IPC files to use
+them for process execution or debugging.
+
+A particularly interesting use of this feature is to allow a process to
+be run under the CL in the normal fashion, then rerun under a host level
+debugger using the saved IPC input to duplicate the input and actions
+of the process when run under the CL. For example,
+
+ % setenv LOGIPC
+ % cl
+ cl> dir
+ cl> logout
+ % unsetenv LOGIPC
+
+will run the CL, saving the IPC of all subprocesses, e.g. x_system.e.
+We can then run the system process manually, using the saved IPC input:
+
+ % $iraf/bin/x_system.e -c < pid.in
+
+To run the process under adb or dbx, using the saved input:
+
+ % adb $iraf/bin/x_system.e
+ :r <pid.in -c
+
+or
+
+ % dbx $iraf/bin/x_system.e
+ dbx> r -c < pid.in
+
+Note that the redirection has to be given first for adb, and last for
+dbx. This also works for gdb using the run command. Some
+implementations of adb are picky about syntax and will not allow a
+space between the "<" and the process id in the :r command.
+
+Running a task in this way is not identical to running the task
+standalone, e.g. using a dparam file for parameter input, because the
+full runtime context of the process as run under the CL is reproduced
+by LOGIPC but not when the task is run standalone. The differences are
+subtle but can be important when trying to reproduce a bug seen when
+the process is run under the CL. It is often the case that a bug seen
+when a task is run from the CL will disappear when the task is run
+standalone, but in most cases LOGIPC will duplicate the bug.
+
+
+4.3.2 XC changes
+
+ The xc program (IRAF compiler-linker) underwent the following
+changes for V2.10, in addition to the usual host-system specific
+changes required to support new host compiler versions.
+
+Multiple "-p pkgname" arguments are now supported. These are used when
+compiling a module which uses multiple package environments, e.g.,
+
+ cl> xc -p noao -p tables foo.x
+
+Each package environment may define package environment variables,
+directories to be searched for include files and libraries, and so on.
+Package environments are used by the IRAF layered packages.
+
+Host libraries named on the command line using the -l switch (e.g.,
+"-lresolv") are now searched after the IRAF system libraries, rather
+than before as in previous versions of xc. If the host library is
+referenced by absolute pathname it is still searched before the IRAF
+libraries, since the command line order determines the search order.
+
+
+4.3.3 SPPLINT code checker
+
+ A static code checker utility spplint has been developed for
+checking SPP programs. This uses the SPP translation utilities in IRAF
+to convert SPP to Fortran, f2c to generate C code, and lint to check
+the C code. The code is checked in various ways at all phases of
+translation. Some of the most useful checking are performed by f2c,
+which checks the number and type of arguments in all calls to IRAF VOS
+library procedures. In other words, spplint will determine if an IRAF
+library procedure is called incorrectly, as well as perform a variety
+of other checks.
+
+The spplint utility is not included in the main IRAF release, but is
+available separately. Contact the IRAF project for information on the
+availability of this and other optional code development utilities.
+
+
+4.3.4 Multiple architecture support
+
+ Multiple architecture support is a way of using multiple sets of
+compiled program binaries within a single copy of IRAF. Multiple sets
+of binaries are used to support different machine architectures (e.g.
+sparc and Motorola), different compiler options (floating point
+options, vectorization options, profiling options), different
+compilers, and so on.
+
+The command for checking the architecture of the IRAF core system or a
+layered package has been changed from showfloat to arch to reflect the
+fact that multiple architecture support is no longer used merely to
+select the floating point option.
+
+ cl> mkpkg arch
+ sparc
+
+The default architecture of the distributed system is "generic", meaning
+no specific architecture has been set (the source tree is generic, not
+configured for any particular architecture).
+
+It is suggested that developers of layered software for IRAF adopt this
+same convention in their root mkpkg files.
+
+
+4.3.5 Package environments
+
+ All the HSI software utilities now permit multiple "-p pkgname"
+package environment references. The host PKGENV environment variable
+now also permits multiple package environments to be referenced, e.g.
+
+ % setenv PKGENV "noao tables xray"
+
+The package names should be whitespace delimited (PKGENV is used to
+avoid having to give the "-p" flags on the mkpkg or xc command line).
+To successfully load a package enironment, the package root directory
+must be defined in hlib$extern.pkg or in the user's host environment.
+A host environment definition will override the value given in
+extern.pkg.
+
+
+4.3.6 Finding module sources
+
+ IRAF V2.10 includes a "tags" file in the IRAF root directory to aid
+software development. This file contains an index to all procedures in
+the IRAF VOS and HSI and can be used with host editors such as vi to
+rapidly find and display the source for IRAF system procedures. Note
+that the names of the kernel procedures are given in upper case, e.g.,
+"ZOPNBF", whereas the names of the VOS procedures are given in lower
+case. To use the tags file with vi, start the editor at the IRAF root
+directory and while in the editor, type a command such as ":ta foo" to
+view the source for procedure foo.
+
+
+
+4.4 Programming Interface Changes
+
+
+4.4.1 IEEE floating support
+
+ Modifications were made to the IEEE floating conversion routines in
+the OSB package to support NaN mapping. This is a low level package
+used by, e.g., the MII package in ETC. The interface as it currently
+stands is summarized below.
+
+ ieepak[rd] (datum) # pack scalar value
+ ieeupk[rd] (datum) # unpack scalar value
+ ieevpak[rd] (native, ieee, nelem) # pack vector
+ ieevupk[rd] (ieee, native, nelem) # unpack vector
+ iee[sg]nan[rd] (NaN) # set/get NaN value
+ ieemap[rd] (mapin, mapout) # enable/disable NaN mapping
+ ieestat[rd] (nin, nout) # get count of NaN values
+ ieezstat[rd] () # zero NaN counters
+
+
+The new or modified routines are ieesnan, ieegnan, ieemap, ieestat, and
+ieezstat. By NaN (not-a-number) we refer collectively to all IEEE
+non-arithmetic values, not just IEEE NaN. The routines ieesnan and
+ieegnan set or get the native floating value used to replace NaNs or
+overflows occurring when converting IEEE to the native floating format
+(any floating value will do, e.g., zero or INDEF). If NaN mapping is
+enabled, the ieestat routines may be used to determine the number of
+input or output NaN conversions occurring since the last call to
+ieezstat. Both real and double versions of all routines are provided.
+
+The NaN mapping enable switch and statistics counters are undefined at
+process startup; programs which use the IEEE conversion package should
+call ieemap to enable or disable NaN mapping, and ieezstat to
+initialize the statistics counters.
+
+
+4.4.2 MATH libraries
+
+ The following changes were made to the MATH libraries in the IRAF
+core system. Refer to the online help pages of the affected routines
+for detailed information.
+
+o The one-dimensional image interpolation library iminterp was
+ modified to add support for sinc interpolation.
+
+o A new library nlfit was added for non-linear function fitting. An
+ interactive graphics front end to this was also added in XTOOLS.
+
+o The name of the symbol E in <math.h> was changed to BASE_E to
+ minimize the chance of name clashes.
+
+
+4.4.3 CLIO interface
+
+ The CLIO (command language i/o) interface underwent the following
+changes for version 2.10 IRAF.
+
+o A README file was added to the source directory containing an up to
+ date interface summary.
+
+o The routines clgpset and clppset (get/put string valued parameter)
+ were renamed clgpseta and clppseta. The old procedures were
+ retained for compatibility but are now obsolete and may at some
+ point in the future disappear or be reused for some other function.
+
+o Two new routines cllpset and clepset were added for listing and
+ editing psets (parameter sets).
+
+ The calling sequences for the new pset routines are as follows.
+
+ cllpset (pp, fd, format) # list pset
+ clepset (pp) # edit pset
+
+ These new routines are still considered experimental and should be
+ avoided or used with caution (they could change).
+
+ Internal to the CLIO code, the CLIO parameter caching package
+ underwent minor changes to add a new clc_compress routine and
+ improve pset handling, as part of the minilanguage support effort.
+
+
+4.4.4 ETC interface
+
+ The ETC interface contains miscellaneous system interface routines.
+The ETC interface underwent the following changes for V2.10 IRAF.
+
+
+4.4.4.1 Calling sequence for onentry changed
+
+ The calling sequence for the onentry routine was changed. The new
+calling sequence is as follows.
+
+ action = onentry (prtype, bkgfile, cmd)
+
+The onentry procedure is an optional procedure which is called when an
+IRAF process starts up. Normally the onentry procedure is a no-op,
+passing control to the IRAF main in-task interpreter. Custom IRAF
+applications, e.g., the CL, have a special onentry procedure which
+replaces the default in-task interpreter.
+
+The change made to the onentry calling sequence was the addition of the
+additional argument cmd. This argument receives the command line used
+to invoke the IRAF process at the host level. The application can
+parse this command line to extract arguments, allowing the IRAF process
+to operate as a host program (it is already possible to call any IRAF
+task from the host level, but use of an onentry procedure allows the
+in-task interpreter to be bypassed and gives the application control
+over parsing the command line).
+
+See etc$onentry.x for additional information on how to use this
+procedure.
+
+
+4.4.4.2 New onerror and onexit procedures
+
+ Two new procedures onerror_remove and onexit_remove were added.
+These have the following calling sequences.
+
+ onerror_remove (proc) # remove posted onerror procedure
+ onexit_remove (proc) # remove posted onexit procedure
+
+The new routines are used to remove onerror or onexit procedures posted
+by a task during task execution. Such user procedures are called if
+the task aborts (onerror procedures) or during normal task exit (onexit
+procedures). Formerly there was no way to "unpost" the procedures
+other than by the normal cleanup occurring during task termination.
+
+
+4.4.4.3 New gqsort routine
+
+ A new quick-sort routine gqsort (generalized quick sort) was added.
+This has the following calling sequence.
+
+ gqsort (x, nelem, compare, client_data)
+
+gqsort is identical to the old qsort routine except for the addition of
+the fourth argument client_data. This is an integer value which is
+passed on to the compare procedure during sorting to compare two data
+values. The compare routine is called as follows.
+
+ result = compare (client_data, x1, x2)
+
+The new routine eliminates the need to use a common area to pass
+information to the compare routine, as was often necessary with qsort.
+
+
+4.4.5 FIO interface
+
+ The FIO interface (file i/o) underwent minor changes to fix some
+bugs affecting pushed back data. The F_UNREAD file status parameter
+will now correctly report pushed back data as well as any buffered
+input file data. The F_CANCEL file set option will now cancel any
+pushed back data.
+
+
+4.4.5.1 Nonblocking terminal i/o
+
+ A new nonblocking form of raw mode terminal input has been added.
+This permits polling the terminal for input without blocking
+(suspending process execution) if no input is available. In a
+character read, EOF is returned if no input is available otherwise the
+character value is returned. An example illustrating the use of
+nonblocking terminal i/o follows.
+
+ include <fset.h>
+
+ task foo
+
+ procedure foo()
+
+ int fd, ch
+ int getci()
+
+ begin
+ fd = STDIN
+ call fseti (fd, F_IOMODE, IO_RAW+IO_NDELAY)
+
+ repeat {
+ if (getci(fd,ch) == EOF)
+ call printf ("no pending input\r\n")
+ else {
+ call printf ("ch = %03o\r\n")
+ call pargi (ch)
+ }
+ call sleep (1)
+ } until (ch == '\004' || ch == 'q')
+
+ call fseti (fd, F_IOMODE, IO_NORMAL)
+ end
+
+
+This sample program sets the terminal i/o mode to nonblocking raw mode
+and polls the terminal once per second, printing the character value in
+octal if a character is typed on the terminal, exiting when ctrl/d or
+'q' is typed. Note that in raw mode characters such as ctrl/d or
+ctrl/c are passed through as data and do not get mapped to EOF,
+generate an interrupt, and so on. Raw mode i/o such as this will work
+both when running a task under the CL and standalone, and in
+combination with IRAF networking (e.g. to access a remote device).
+
+Nonblocking terminal input is used in applications which run
+continuously but which we wish to be able to control interactively.
+
+
+4.4.6 FMTIO interface
+
+ The FMTIO interface (formatted i/o) is used to format output text
+or decode input text. The V2.10 release adds two new printf output
+formats, %H and %M. These are used to print numbers in
+hours-minutes-seconds or minutes-seconds format and are equivalent to
+the older output formats %h and %m except that the number is first
+divided by 15. This converts degrees to hours allowing values given in
+units of degrees to be printed as hours with just a change of the output
+format. In other words, given a number N in units of degrees, %H would
+print the number in hours-minutes-seconds, i.e., "hh:mm:ss.ss", whereas
+%h would print the same number as degrees-minutes-seconds,
+"dd:mm:ss.ss". The %m formats are similar except that only two of the
+three fields are printed.
+
+
+4.4.7 GTY interface
+
+ The GTY interface is a generalized version of that portion of the
+older TTY interface dealing with termcap format files. The TTY code
+which accesses termcap format files has been extracted to form the new
+GTY interface, allowing arbitrary termcap format files to be accessed
+by filename, unlike TTY which returns TTY descriptors given the termcap
+or graphcap device name. GTY was contributed by Skip Schaller of
+Steward Observatory.
+
+ gty = gtyopen (termcap_file, device, ufields)
+ gtyclose (gty)
+ cp = gtycaps (gty)
+ pval = gtyget[bir] (gty, cap)
+ nchars = gtygets (gty, cap, outstr, maxch)
+
+
+The gtyopen call returns the GTY descriptor for the named device from
+the file termcap_file. The ufields string may be either NULL or a list
+of colon-delimited device capabilities, which will override the
+corresponding capabilities in the device entry given in the termcap
+file. If termcap_file is the null string ufields is taken to be the
+device entry for the named device. The gtycaps routine may be used to
+get the entire device entry as a string, whereas the gtyget and gtygets
+routines are used to get the values of individual capabilities or
+parameters.
+
+
+4.4.8 MTIO interface
+
+ MTIO is the magtape i/o interface. The magtape i/o subsystem was
+extensively revised for V2.10 IRAF, as documented earlier in this
+revisions summary. The VOS level MTIO interface itself was not changed
+other than to add a few new routines. The tapecap facility is new in
+V2.10. The revisions to the host level magtape driver ZFIOMT required
+that the calling sequences of some of the interface routines be changed.
+
+
+4.4.8.1 MTIO applications programming interface
+
+ The current MTIO applications programming interface is summarized
+below. Most of these routines are new: the old routines are mtfile,
+mtopen, mtrewind and mtposition.
+
+ yes|no = mtfile (fname)
+ yes|no = mtneedfileno (mtname)
+ gty = mtcap (mtname)
+ mtfname (mtname, file, outstr, maxch)
+
+ mtparse (mtname, device, fileno, recno, attrl, maxch)
+ mtencode (mtname, maxch, device, fileno, recno, attrl)
+
+ fd = mtopen (mtname, acmode, bufsize)
+ mtrewind (mtname, initcache)
+ mtposition (mtname, file, record)
+
+
+The mtfile routine is used to test whether the given filename is a
+magtape file or something else, i.e., a disk file. mtneedfileno tests
+whether a file number has been specified in mtname (e.g., to determine
+whether or not to query for a file number parameter). mtfname takes
+mtname and a file number and constructs a new magtape device name in
+the output string. mtparse parses a magtape device name into its
+component parts, and mtencode does the reverse. mtcap returns the GTY
+descriptor of the tapecap entry for the device. gtyclose should be
+used to free this descriptor when it is no longer needed.
+
+Some older magtape applications programs parse the magtape device name
+directly, looking for characters like `['. These old programs are
+making assumptions about the form of a magtape device name which are
+probably no longer true. Such old applications should be rewritten to
+use the new MTIO procedures for all magtape device name operations.
+
+
+4.4.8.2 MTIO system procedures
+
+ The MTIO interface also includes a number of procedures intended
+for use in systems code. These are summarized in the table below.
+
+ mtallocate (mtname)
+ mtdeallocate (mtname, rewind_tape)
+ mtstatus (out, mtname)
+ mtclean (level, stale, out)
+
+
+The only new routine here is mtclean. This is called by the mtclean
+task in the V2.10 SYSTEM package and is used to scan the magtape status
+file storage area to delete old magtape position status files. Prior
+to V2.10 these files were stored in the user's UPARM directory, but in
+V2.10 the files are stored in /tmp so that multiple IRAF sessions will
+share the same tape position information. A special task is needed to
+delete old position files in order to protect against, e.g., one user
+deleting another user's device position file while the device is
+actively in use.
+
+
+4.4.8.3 Magtape driver procedures
+
+ All access to the physical magtape device is via the host level
+IRAF magtape device driver ZFIOMT. The driver procedures had to be
+revised for V2.10 to add support for the tapecap facility and to
+accommodate changes in the way the device position is maintained. The
+new driver procedures are summarized below.
+
+ zzopmt (device, acmode, devcap, devpos, newfile, chan)
+ zzrdmt (chan, buf, maxbytes, offset)
+ zzwrmt (chan, buf, nbytes, offset)
+ zzwtmt (chan, devpos, status)
+ zzstmt (chan, param, value)
+ zzclmt (chan, devpos, status)
+ zzrwmt (device, devcap, status)
+
+
+The corresponding KI (kernel interface) routines were also modified to
+reflect the new calling sequences. A result of this is that IRAF
+networking for magtape devices is incompatible between V2.10 and
+earlier versions of IRAF.
+
+The host level device driver procedures are not normally called directly
+in applications code (applications use mtopen). Refer to the comments
+in the source file os$zfiomt.c for additional details.
+
+
+4.4.9 MWCS interface
+
+ The MWCS interface provides world coordinate system support for the
+IRAF system and applications. The main changes in the MWCS interface
+for V2.10 were bug fixes and semantic changes, e.g. various
+restrictions having to do with WCS attributes were removed, new
+function drivers were added, and so on. These changes are documented
+elsewhere in this revisions summary.
+
+The only interface change affecting MWCS was the addition of the new
+MWCS procedure mw_show.
+
+ mw_show (mw, fd, what)
+
+
+This is used to dump a MWCS descriptor to the given output file, and is
+useful for examining MWCS descriptors while debugging applications.
+
+
+
+5. Getting Copies of this Revisions Summary
+
+ Additional copies of this revisions summary are available via
+anonymous ftp from node iraf.noao.edu in the directory iraf/v210, or via
+email from iraf@noao.edu.
+ IRAF (Mar90) V2.9 Revisions Summary IRAF (Mar90)
+
+
+ IRAF Version 2.9 Revisions Summary
+ April 10, 1990
+
+
+
+
+1. Introduction
+
+ This document summarizes the changes in IRAF version 2.9. This was
+primarily a development release intended to support applications
+software development, hence the major changes were in the programming
+environment, although there are important new features of interest to
+general users too. Since IRAF V2.9 is primarily a development release,
+it is not being released on all platforms, and it is expected that many
+sites will not need to upgrade until IRAF V2.10 is available. Sites
+interested in obtaining IRAF V2.9 should contact the IRAF project to
+determine if the release is available for a particular host system. At
+the present time, the release is being made available for all Sun
+systems, for VAX/VMS, and for the DECstation running Ultrix.
+
+What follows is a brief description of some of the new features
+available in IRAF Version 2.9. This is not intended to be an
+exhaustive list, but rather a brief summary of the major changes since
+the last release of IRAF, Version 2.8, released in July 1989. More
+detailed revisions notes are available in the system notes file,
+iraf$local/notes.v29, as well as in the online revisions notes for the
+various packages.
+
+Users looking for information on a particular new package should note
+that if the package is not mentioned in these release notes and
+therefore is not included in IRAF V2.9, that does not necessarily mean
+that it is not available. Most major reduction and analysis packages
+are now made available for testing as user installable layered packages
+before they are included in the standard distribution. For information
+on the available add-on packages, contact the IRAF group, or check the
+latest IRAF Newsletter.
+
+
+This revisions summary is organized as follows:
+
+ 1. Introduction
+
+ 2. IRAF System Revisions
+
+ 3. IRAF Package Revisions
+ 3.1. Changes to the System Packages
+ 3.2. Glossary of New Tasks in the IRAF System Packages
+ 3.3. Changes to the NOAO Packages
+ 3.4. Modifications and Additions to Calibration Data
+ 3.5. Glossary of New Tasks in the NOAO Packages
+
+ 4. Programming Environment Revisions
+ 4.1. Changes to the Programming Utilities
+ 4.2. Programming Interface Changes
+
+
+
+2. IRAF System Revisions
+
+
+2.1 IEEE to native floating point conversions
+
+ Support has been added to the programming interfaces (section
+4.2.3) for converting between the IEEE floating point and native
+floating point data formats, including both single and double
+precision. The FITS programs in DATAIO (section 3.1.1) make use of
+this, allowing floating point data to be exchanged in FITS format
+without having to convert to type integer.
+
+
+2.2 World coordinate system support
+
+ A major new VOS interface MWCS has been added to support general
+world coordinate systems (WCS) and transformations thereon (section
+4.2.1). This includes support for linear, piecewise linear or sampled
+WCS, and general nonlinear WCS such as the tangent plane or gnomonic
+projection.
+
+If a FITS image is read into the system which has WCS information in the
+header, the WCS will be retained in the IRAF image header and can be
+used in coordinate transformations. The IMAGES tasks which move pixels
+around have been modified to edit the WCS to reflect the transformation
+(section 3.1.2). The image i/o system will automatically propagate the
+WCS of an image to a new copy of the image, and will edit the WCS as
+necessary if an image section is copied (this applies to all IRAF tasks
+which operate upon images). The task RIMCURSOR in the LISTS package
+has been rewritten to add support for coordinate transformations
+(section 3.1.3), and can be used, e.g., to read out the RA and DEC of
+objects on the image display using the image cursor, if the image has
+the necessary WCS information in the image header.
+
+Full integration of the new world coordinate facilities into all the
+IRAF applications, e.g., the graphics tasks and the spectral reduction
+packages, will take a year or longer due to the amount of software
+involved. In V2.9 the IRAF spectral packages have not yet been
+converted to use MWCS, and if MWCS is enabled it could alter the normal
+behavior of these packages. IRAF V2.9 is therefore shipped with MWCS
+disabled. What "disabled" means is that WCS information in the image
+headers is not edited to reflect operations involving image sections,
+or geometric transformations of images. Tasks such as RIMCURSOR which
+use an already existing WCS will still work whether or not header
+editing is disabled. If the spectral tasks will not be used and it is
+desired that world coordinates be propagated correctly in image
+transformations, MWCS header editing can be enabled in either of the
+following ways.
+
+The MWCS transformations are disabled by defining the variable "nomwcs"
+in the IRAF environment. To globally enable MWCS by default for
+everyone using the system, edit the file "hlib$zzsetenv.def" and
+comment out the following line as shown (you want to add the leading #,
+which will be missing in the distributed version):
+
+ #set nomwcs = yes
+
+To enable MWCS header editing temporarily, for the current IRAF run:
+
+ cl> reset nomwcs = no
+
+Detailed information on the coordinate systems defined by MWCS can be
+obtained in the online system with the command
+
+ cl> phelp mwcs$MWCS.hlp fi+
+
+Additional information is also given in the help page for RIMCURSOR.
+
+
+2.3 IMFORT changes
+
+ The IMFORT interface (host level Fortran or C interface to the IRAF
+image format) has undergone the following bug fixes and enhancements:
+
+o A couple of bugs associated with the IMDIR (image pixel-file
+ directory) feature introduced in IRAF V2.8 have been fixed.
+
+o Image clobber checking has been added. By default, if you create a
+ new image and another image with the same name already exists, the
+ image create will now return an error code leaving the existing
+ image unchanged. To override clobber checking in IMFORT programs,
+ restoring the previous behavior of the interface, define "clobber"
+ in your host environment.
+
+o IMFORT will now perform a limited filename translation service
+ using the IRAF VOS filename translation code. This should allow
+ most IRAF filenames to be used as input to host level IMFORT
+ programs. Full VOS filename mapping is not provided, but filenames
+ containing upper case characters and multiple "." delimited fields
+ should be translated as in IRAF programs.
+
+o On systems with multiple architecture support (e.g., Sun, Convex)
+ the FC task, used to compile and link IMFORT programs from within
+ the IRAF environment, is now a script rather than a simple foreign
+ task front end to XC. The purpose of the script is to see that all
+ the necessary IRAF and host level command line switches and
+ environment definitions (IRAFARCH, FLOAT_OPTION, etc.) are used.
+ Previously, users had to make these environment definitions
+ manually, and if they forgot the IMFORT program could fail to link
+ or execute.
+
+o On most UNIX/IRAF systems, the host library -lU77 is now searched
+ automatically by FC when an IMFORT program is linked. This library
+ is not used by any of the IRAF code, but is required to link some
+ Fortran programs that might want to use IMFORT.
+
+Users are encouraged to use FC to link their IMFORT programs. It is
+possible to manually link against the IRAF libraries if you know what
+you are doing, but the location of the libraries and the required host
+level command line switches vary for different systems and for
+different architectures of a single system, and it is easy to make
+mistakes.
+
+
+2.4 MKIRAF now copies login.cl to login.cl.OLD
+
+ On UNIX/IRAF systems, the MKIRAF command will now copy any existing
+login.cl file to login.cl.OLD, so that, for example, you can more
+easily merge any custom changes back in after running MKIRAF. On
+VMS/IRAF systems a new file version is created, as before.
+
+
+2.5 Local additions to termcap/graphcap
+
+ The termcap and graphcap device capability files have been
+reorganized with a section at the top for local additions. It is
+recommended that any locally added entries be made in this area, to
+simplify future system updates. The local additions can then be simply
+transferred to the new version of the file when a new version of IRAF
+is installed (any entries which are modified versions of standard
+entries should always be checked to see if anything has changed in the
+distributed version).
+
+
+2.6 BIN directories now smaller
+
+ On systems with multiple architecture support, the architecture
+save file OBJS.arc stored in the BIN directory for each architecture is
+now maintained as a compressed file. In a typical case this reduces
+the size of the file by about a factor of two, saving 1-2 Mb of disk
+space in each BIN directory.
+
+
+2.7 Various system buffers increased in size
+
+ The layered software support in IRAF V2.8 (extern.pkg and all that)
+had a problem with very long helpdb environment strings, limiting the
+number of external packages which could be defined. To fix this
+problem, various buffers were increased in size all over the system.
+The maximum length of an environment variable such as helpdb is now 960
+characters (12 80 character lines of text). String parameters to tasks
+can also be larger, and the system is more resistant to problems when
+size limits are exceeded. Foreign task commands, OS escapes, etc., can
+all be larger now. The current limit on such strings is about 1024
+characters, and is defined at sysgen time by the new system parameter
+SZ_COMMAND in hlib$iraf.h.
+
+
+2.8 Shared library versions
+
+ The Sun/IRAF shared library mechanism was modified to add support
+for shared library versions. The result is that when you install IRAF
+V2.9, which has a different shared library than V2.8, any local
+programs or other layered software linked under V2.8 will continue to
+run, because both the old V2.8 shared library and the new V2.9 shared
+library are included in V2.9 (with different version numbers).
+Although old programs will continue to run with V2.9, it is recommended
+that they be relinked eventually to take advantage of the many features
+and bug fixes provided by V2.9. In the case of very large packages,
+e.g., STSDAS 1.0, it may be wise to wait until the latest release can
+be obtained and installed before relinking, as the old version will not
+have been tested under IRAF V2.9 (which of course, didn't exist back
+then).
+
+
+2.9 File pager enhancements
+
+ The system file pager, used in the PAGE task, the new PHELP task,
+and other places, has undergone the following enhancements.
+
+o The N and P keys, used to move to the next or previous file when
+ paging a list of files, now have a dual meaning: when paging a
+ single file containing multiple formfeed delimited pages, the keys
+ will move to the next or previous page in the file. This feature
+ is used in the new PHELP task to page a large file containing,
+ e.g., all the HELP pages for a package.
+
+o A limited upscrolling capability is now supported, e.g., if you hit
+ the 'k' key while in the pager, the screen will be scrolled up one
+ line in the file being paged. This feature may not be supported
+ for some terminals, in which case the entire screen is redrawn at
+ the new file location.
+
+
+2.10 STF image kernel enhancements
+
+ Extensive work has been done on the STF image kernel in this
+release (the STF kernel allows IRAF to access the Space Telescope image
+format directly). The changes included the following.
+
+o Header file caching. STF images often have quite large FITS
+ headers which can be time consuming to read. A header file caching
+ scheme is now used to optimize the kernel in cases where the same
+ imagefile is repeatedly accessed, e.g., when successively reading
+ each element of a large group format image. By default up to 3
+ header files will be cached; this default should be fine for most
+ applications. If necessary the number of cache slots can be
+ changed by defining the integer variable "stfcache" in the IRAF
+ environment (the builtin maximum is 5 cached headers per process).
+
+o The semantics of the kernel regarding header updates have changed.
+ STF images differ from other IRAF images in that they may consist
+ of a group of images all in the same file, with each individual
+ image having its own header (the group header), plus a single
+ global FITS header shared by all images in the group. This is no
+ problem in a read operation, but in a write or update operation
+ there can be problems since parameters cannot be added to or
+ deleted from the individual group headers. The new semantics
+ regarding STF image header updates are as follows: 1) when updating
+ the header of a multigroup image (not recommended) only the group
+ header is updated, and attempts to add new parameters are ignored;
+ 2) when updating the header of an image containing a single group,
+ both the group header and the FITS header are updated.
+
+ As a result of these changes, the behavior of a single group STF
+ image is now identical to that of a regular IRAF image. It is
+ recommended that multigroup STF images be treated as read only if
+ possible, creating only single group images during interactive
+ processing (except when running a program that is explicitly
+ designed to create multigroup images).
+
+o The kernel was modified to work with the new MWCS (world coordinate
+ system) interface. The image section transformation is now
+ performed by MWCS rather than by the STF kernel.
+
+o A number of minor changes were made to the way the group parameter
+ block (GPB) cards are maintained in the IRAF image descriptor. The
+ comments on GPB definition cards are now preserved. Restrictions
+ on the grouping of GPB cards in the header have been removed.
+
+o A number of bugs were fixed and restrictions removed, e.g., the
+ size of a header is no longer limited to 32767 characters (404
+ lines).
+
+ The IRAF core system and NOAO science applications were extensively
+ tested with both single and multigroup STF images using the new
+ kernel, and we now feel that it is safe to use the STF image format
+ with these tasks, although the regular format is preferred if there
+ is no special reason to use the STF format (the regular format is
+ more efficient).
+
+
+2.11 QPOE (event list image format) enhancements
+
+ The QPOE image kernel, used for event list data (photon counting
+detectors, e.g., X-ray satellites such as ROSAT) underwent the
+following changes.
+
+o MWCS (world coordinate system) support has been added (section
+ 4.2.2). This provides a consistent coordinate system despite,
+ e.g., the blocking factor, rect, or image section used to construct
+ an image matrix from an event list.
+
+o When opening a QPOE file as an IRAF image, the runtime filter
+ expression used to create the image matrix is now saved in the
+ parameter QPFILTn in the image header (multiple cards are used for
+ long expressions).
+
+o Region masks of arbitrary complexity and size can now be used to
+ mask the event list when reading time-ordered or unordered
+ (unindexed) event lists. This is done using the new PLRIO package
+ (section 4.2.5) which provides the capability to efficiently random
+ access large image masks of arbitrary complexity.
+
+o Unmatched brackets, braces, or parentheses are now reported as an
+ error by the filter expression parser (this can occur even with a
+ valid expression, e.g., due to truncation of the expression
+ string). A reference to an undefined keyword, e.g., due to a
+ spelling error, is now detected and reported as an error. Any
+ errors occurring during expression parsing will now result in
+ termination of the calling task, unless caught in an error handler.
+
+o A number of bugs were fixed.
+
+
+2.12 Changes affecting image display in VMS/IRAF
+
+ A new version of Nigel Sharp's UISDISPLAY program, for image
+display on VMS systems running UIS, has been installed in
+"iraf$vms/uis". An executable for an early version of the SAOIMAGE
+display program for the X window system, written by Mike VanHilst
+(SAO), and ported to VMS by Jay Travisano (STScI) has been placed in
+the directory "iraf$vms/x11". An executable for a VMS version of XTERM
+(the X window terminal emulator, ported to VMS by Stephan Jansen), is
+also in this directory. We wanted our VMS users to have access to
+these programs, although more development work and testing is needed
+before we can offer good support for X window based image display and
+graphics on VMS. A more comprehensive package providing enhanced
+capabilities should be available as an add-on later this year.
+
+
+
+3. IRAF Package Revisions
+
+ The most notable changes to the tasks in the IRAF packages are
+summarized below. Further information may be obtained by reading the
+help page for each task, or by paging the revisions file for a
+particular package. For example, to page the revisions for the DATAIO
+package:
+
+ cl> phelp dataio.revisions op=sys
+
+
+
+3.1 Changes to the System Packages
+
+
+3.1.1 Modifications to tasks in the DATAIO package
+
+o The RFITS and WFITS tasks have been modified to add support for the
+ IEEE floating point format. The "bitpix" parameter in WFITS can be
+ set to -32 or -64 to specify real or double precision IEEE floating
+ numbers on output. RFITS recognizes these same values in the
+ bitpix keyword in the FITS header on input and converts the data
+ accordingly. Note that this option must be selected by the user as
+ the defaults for writing a FITS tape have not changed. The user is
+ cautioned that support for the IEEE floating formats is a new
+ feature of FITS and may not be supported by all FITS readers.
+
+o RFITS was modified so that the "iraf_file" parameter can be a list
+ of output images or a image root name.
+
+
+3.1.2 Modifications to tasks in the IMAGES package
+
+o MWCS (world coordinate system) support was added to those tasks in
+ the IMAGES package which change the geometry of an image, i.e.,
+ IMSHIFT, SHIFTLINES, MAGNIFY, IMTRANSPOSE, IMCOPY, BLKREP, BLKAVG,
+ ROTATE, IMLINTRAN, REGISTER, and GEOTRAN (REGISTER and GEOTRAN only
+ support simple linear transformations). If one of these tasks is
+ used to linearly transform an image, the world coordinate system
+ (WCS) in the image header will be updated to reflect the
+ transformation. Note that MWCS is disabled by default in IRAF
+ V2.9, and must be explicitly enabled to allow these tasks to edit
+ the image header to update the WCS (see section 2.2).
+
+o The IMSTATISTICS task was modified. The "verbose" parameter was
+ renamed "format" with the default being set to "yes" (fixed format
+ with column labels). Otherwise the fields are printed in free
+ format with 2 blanks separating the fields. The name of the median
+ field has been changed to "midpt".
+
+o The IMHISTOGRAM task has a new parameter called "hist_type" that
+ gives the user the option of plotting the integral, first
+ derivative, or second derivative of the histogram instead of the
+ normal histogram.
+
+
+3.1.3 Modifications to tasks in the LISTS package
+
+o The RIMCURSOR task in the LISTS package was completely rewritten to
+ add MWCS support, so that coordinates may be output in any user
+ specified coordinate system defined by the WCS information in the
+ image header of the reference image. For example, if an image with
+ a TAN projection WCS is loaded into the image display, RIMCURSOR
+ may be used to print the right ascension and declination at the
+ location defined by the image cursor. Refer to the help page for
+ details.
+
+
+3.1.4 Modifications to tasks in the PLOT package
+
+o A new graphics kernel task IMDKERN (written by Zolt Levay at STScI)
+ has been added to the PLOT package. The new graphics kernel allows
+ the graphics output of any task to be plotted as a graphics overlay
+ on the image display. As with the other graphics kernels, this may
+ be done by calling the IMDKERN task directly, but is more often
+ done by specifying the image display (e.g., device "imd") as the
+ output device when running a graphics task. Refer to the help page
+ for details.
+
+o The CONTOUR task was modified so that it could be used with IMDKERN
+ to overlay contour plots on the image display. If the parameters
+ fill=yes and perimeter=no are set the contour plot is scaled to
+ fill the entire device viewport and all axis and plot labeling is
+ disabled. If the image being displayed also fills the entire
+ device viewport (display frame) then the contour plot will be drawn
+ to the same scale as the displayed image. Refer to the help page
+ for details.
+
+o Several tasks in the PLOT package were modified to allow use with
+ image specifications containing brackets, e.g., group format
+ images, QPOE filter expressions, and image sections. The tasks
+ modified were PROW, PROWS, PCOL, PCOLS, SURFACE, and CONTOUR.
+
+o An option was added to the PVECTOR task to output the vector (cut
+ through the image at an arbitrary angle and center) as a text file
+ or image, rather than plotting the vector.
+
+
+3.1.5 Modifications to tasks in the SYSTEM package
+
+o A new task PHELP (paged help) was added to the SYSTEM package.
+ PHELP is a script task front end to HELP which collects the output
+ of HELP in a scratch file and pages it with the system pager,
+ allowing one to randomly skip around to read the help text. Note
+ that paging of all the help pages in a package is supported, e.g.,
+
+ cl> phelp images.*
+
+ would page all the help files for the IMAGES package.
+
+o The NEWS task was completely rewritten, and is now used to page the
+ revisions summary for the current and previous releases. In other
+ words, one can now type NEWS to find out what is new in the current
+ release.
+
+o The GRIPES task was modified to send mail to iraf@noao.edu or
+ 5355::iraf. The IRAF site administrator may want to check this
+ script for compatibility with the local mail system.
+
+
+3.2 Glossary of New Tasks in the IRAF System Packages
+
+Task Package Description
+
+imdkern plot Image display device (IMD) graphics kernel
+news system Summarize what is new in the current release
+phelp system Paged HELP: collects and pages the output of HELP
+rimcursor lists Read image cursor position in world coordinates
+
+
+
+3.3 Changes to the NOAO Packages
+
+
+3.3.1 New NOAO Packages
+
+ A new package ARTDATA, used to generate artificial data, has been
+added to the NOAO packages. ARTDATA includes tasks for the generation
+of star fields, optionally containing galaxies, and one and two
+dimensional spectra as well as simple test pattern images. The tasks
+GALLIST and STARLIST provide many options for producing lists of
+galaxies or stars that can then be used by the task MKOBJECTS to produce
+output images. The tasks MK1DSPEC and MK2DSPEC provide tools for making
+artificial spectral data. The task MKNOISE allows the user to add
+readout noise, poisson noise and/or cosmic ray events to new or already
+existing images. The task MKPATTERN allows the user to make images
+from a choice of patterns.
+
+
+3.3.2 Modifications to Existing NOAO Packages
+
+
+3.3.2.1 The ASTUTIL package
+
+o The task SETAIRMASS in the ASTUTIL package was modified so that it
+ now precesses the coordinates to the epoch of the observation.
+
+
+3.3.2.2 The DIGIPHOT.APPHOT package
+
+o A new task APTEST was added to the DIGIPHOT.APPHOT package that
+ tests the execution of the package. Output files are generated that
+ the user can review.
+
+o Two new parameters were added to DATAPARS, "datamin" and "datamax".
+ Pixels outside this range are rejected from the sky fitting
+ algorithms and from the non-linear least square fits in FITPSF and
+ RADPROF.
+
+o An "update" parameter was added to all of the APPHOT tasks. If the
+ "verify" parameter is set to "yes" and the task is run in
+ noninteractive mode update=yes will update the critical parameters
+ in their respective parameter sets.
+
+o Four new parameters, "airmass", "xairmass", "filter", and "ifilter",
+ were added to the DATAPARS task. These parameters provide the user
+ the option of having the filter and airmass quantities from the
+ image headers to be carried over into the APPHOT database files for
+ later transmission to calibration programs.
+
+o A new algorithm "mean" was added to the sky fitting options.
+
+o A setup menu mode was added to all the APPHOT tasks. When the user
+ types "i" in interactive mode a setup menu is presented rather than
+ a fixed set of predefined commands.
+
+
+3.3.2.3 The IMRED.IRRED package
+
+o The APSELECT task (from the APPHOT package) has been made visible.
+
+o The image i/o for IRMOSAIC, IRALIGN, IRMATCH1D, and IRMATCH2D has
+ been optimized so things should run much faster. There is now an
+ option to trim each section before insertion into the output
+ image. The actions of these tasks can now optionally be output to
+ the terminal.
+
+
+3.3.2.4 The IMRED.MSRED package
+
+o A task called MSBPLOT was added to the IMRED.MSRED package. This
+ task allows the user to plot a range of lines in multispec images
+ in batch mode.
+
+
+3.3.2.5 The ONEDSPEC package
+
+o Several modifications were made to the ONEDSPEC package. These
+ changes affect all of the IMRED packages that include these tasks
+ as well.
+
+o The equivalent width measurement using the "e" keystroke in SPLOT
+ is now computed using the ratio of the spectrum to the continuum.
+ The previous approximation is included in the logfile for
+ comparison.
+
+o The DISPERSION task will now add CDi_j (CD matrix) keywords to the
+ image header as an alternative way of expressing the dispersion
+ function. If the keywords W0 and WPC or CRVALn and CDELTn are not
+ in the image header the tasks reading this information for setting
+ the wavelength (IDENTIFY, SENSFUNC, SPLOT, and SPECPLOT) will look
+ for the CDi_j keywords. This change should have no affect on the
+ NOAO applications but provides compatibility with STSDAS
+ applications using the new MWCS interface provided with IRAF
+ version 2.9.
+
+o The call to the CALIBRATE task in the script task BATCHRED was
+ modified so that the "extinct" parameter is always set to "yes".
+ Since CALIBRATE checks to be sure the data has not been previously
+ extinction corrected this simple change provides more flexibility.
+
+
+3.3.2.6 The PROTO package
+
+o Two new tasks, IMALIGN and IMCENTROID, were added to the package.
+ IMCENTROID computes a set of relative shifts required to register a
+ set of images. The task IMALIGN both computes the shifts and
+ aligns the images.
+
+o The JOIN task (previously a simple script) has been replaced by a
+ compiled version which removes many of the restrictions of the
+ previous version.
+
+o The IR tasks have been modified as mentioned above under the
+ IMRED.IRRED section (section 3.3.2.3).
+
+o The TVMARK task was modified to permit deletion (the "u" key) as
+ well as addition of objects to the coordinate file. Another cursor
+ keystroke, the "f" key, was added allowing the user to draw a
+ filled rectangle.
+
+
+3.3.2.7 The TWODSPEC.LONGSLIT package
+
+o Tasks in the TWODSPEC.LONGSLIT package that are used for setting
+ wavelength information (EXTINCTION, FLUXCALIB, and TRANSFORM) were
+ modified for the CDi_j keywords as outlined above for ONEDSPEC.
+
+
+3.4 Modifications and Additions to Calibration Data
+
+ The calibration data used by some of the tasks in the TWODSPEC,
+ONEDSPEC, and many of the IMRED packages are kept in a directory called
+ONEDSTDS in noao$lib. The current contents of this directory are best
+summarized by paging through its README file, e.g.,
+
+ cl> page noao$lib/onedstds/README
+
+
+A new directory spec50redcal in "noao$lib/onedstds" has been added
+containing flux information for standard stars. The data in this list
+are from Massey and Gronwall, Ap. J., July 20, 1990.
+
+
+3.5 Glossary of New Tasks in the NOAO Packages
+
+Task Package Description
+
+aptest apphot Run basic tests on the apphot package tasks
+gallist artdata Make an artificial galaxies list
+imalign proto Register and shift a list of images
+imcentroid proto Compute relative shifts for a list of images
+mk1dspec artdata Make/add artificial 1D spectra
+mk2dspec artdata Make/add artificial 2D spectra
+mknoise artdata Make/add noise and cosmic rays to 1D/2D images
+mkobjects artdata Make/add artificial stars and galaxies to 2D images
+mkpattern artdata Make/add patterns to images
+msbplot msred Batch plots of multispec spectra using SPLOT
+starlist artdata Make an artificial star list
+
+
+
+4. Programming Environment Revisions
+
+
+4.1 Changes to the Programming Utilities
+
+
+4.1.1 MKPKG changes
+
+ The MKPKG utility can now substitute the contents of a file back
+into the input stream, as a special case of the macro replacement
+syntax. For example, the sequence
+
+ abc$(@file)def
+
+would be translated as
+
+ abc10def
+
+if the file "file" contained the string "10". The replacement is
+performed by inserting the contents of the file back into the input
+stream, replacing sequences of newlines, spaces, or tabs by a single
+space, and omitting any trailing whitespace.
+
+The "-p <pkg>" argument to MKPKG, XC, and so on loads the environment
+of the named package pkg, to define the package environment variables,
+load the mkpkg special file list, define the directories to be searched
+for global include files and libraries, and so on. Multiple "-p"
+arguments may be given to load multiple package environments. What is
+new is that if pkglibs is defined in the environment of a package to
+list the package library directories to be searched (the usual case),
+and multiple package environments are loaded, successive redefinitions
+of pkglibs will add to the list of directories to be searched, rather
+than redefining the old list as each new package environment is
+loaded. For example, if two package environments are loaded, and each
+defines its own library, both libraries will be searched.
+
+
+4.1.2 Generic preprocessor
+
+ A minor change was made to the generic preprocessor which affects
+how strings such as "FOO_PIXEL" are translated. In the usual case, the
+preprocessor replaces all occurrences of "PIXEL" by "int", "real", or
+whatever the actual datatype is. The translation is now context
+sensitive. Rather than translating "FOO_PIXEL" as "FOO_int" (e.g.,
+"MII_PIXEL" -> "MII_int"), the type name will now be output in upper
+case if the rest of the name in which it occurs is upper case. Hence,
+a string such as "MII_PIXEL" will now be translated as "MII_INT". This
+allows the use of generic constructs to symbolize SPP macros.
+
+
+4.1.3 SPP changes
+
+ The language constant ARB, formerly defined as 32767, is now treated
+differently depending upon how it is used. In a declaration of an array
+argument, ARB is replaced in the output Fortran by a "*", e.g., "int
+data[ARB]" becomes "INTEGER DATA(*)". In an executable statement, ARB
+is replaced by a very large ("arbitrarily" large) integer value, e.g.,
+to define a DO-loop which is to loop an arbitrary number of times. If
+ARB is mistakenly used to dimension an array which is a local variable
+rather than an argument, the SPP translator will now detect and report
+the error.
+
+
+4.1.4 Interactive development and the process cache
+
+ Whenever a CL task is run and the process containing the task is
+already idling in the CL process cache, the CL will now check to see if
+the modify date on the process executable has changed, and restart the
+process if the executable has been modified. For example, when doing
+software development from within the CL and a process is alternately
+relinked and tested, the CL will now automatically detect that the
+process has been relinked and will run the new process, without any
+need to manually flush the process cache.
+
+
+4.2 Programming Interface Changes
+
+
+4.2.1 New MWCS interface (world coordinate system support)
+
+ A major new VOS interface MWCS, providing general facilities for
+linear and nonlinear world coordinate systems, has been added to the
+programming environment and is used in IRAF V2.9 in IMIO, IMAGES, and
+other parts of the system. MWCS is intended for use in scientific
+applications as well as in system code such as IMIO, hence is of
+potential interest to anyone developing software within the IRAF
+environment. The source directory is "mwcs" and the interface is
+documented in the file "mwcs$MWCS.hlp". Users should be aware that,
+although the new interface addresses the general WCS problem and has
+been carefully designed, a second version of the interface is planned
+and the current interface is not yet a "frozen" interface.
+
+
+4.2.2 QPOE interface changes
+
+ The QPOE (event list image) interface has been extended to add
+routines to store MWCS objects in the QPOE header. By default, there
+is one MWCS per QPOE file, stored encoded in a machine independent
+binary format in a variable length array qpwcs of type opaque. The new
+routines are as follows:
+
+ mw = qp_loadwcs (qp)
+ qp_savewcs (qp, mw)
+ mw = qpio_loadwcs (io)
+
+The routines qp_savewcs and qp_loadwcs merely save a MWCS in the QPOE
+header, or load a previously saved one. The QPIO (event i/o) routine
+qpio_loadwcs is like qp_loadwcs, except that it will also modify the
+Lterm of the MWCS to reflect any blocking factor or "rect" specified in
+the filtering expression when the event list was opened. The new
+routine is called automatically by QPF and IMIO whenever a QPOE event
+list is opened under image i/o, making the physical coordinate system
+of the image matrix the same as physical event coordinates.
+
+The calling sequences of the qp_add and qp_astr routines, used to
+conditionally add or update header parameters, have been changed (so far
+as we could determine very few programs exist yet which use these
+routines, so we decided to risk an interface change). The change made
+was to add a comment argument. This change was motivated by the
+observation that people would not use the routines but would instead
+use lower level routines, in order to be able to set the comment field
+if the parameter has to be added to the header.
+
+
+4.2.3 IEEE support routines added
+
+ Routines for IEEE floating to native floating conversions have been
+added to the MII and OSB interfaces. The new MII routines are as
+follows:
+
+ nelem = miiread[rd] (fd, spp, maxelem)
+ miiwrite[rd] (fd, spp, nelem)
+ miipak[rd] (spp, mii, nelems, spp_datatype)
+ miiupk[rd] (mii, spp, nelems, spp_datatype)
+
+The miiread and miiwrite routines are like their FIO counterparts,
+except that they are used only with data of the indicated type, and
+perform the IEEE to native floating conversion (or vice versa) as part
+of the i/o operation. The miipak and miiupk routines pack
+(native->IEEE) and unpack (IEEE->native) arrays of the indicated type.
+
+The lowest level conversion routines are the OSB routines, which are
+what the MII routines use to perform the lowest level translation.
+
+ ieepak[rd] (datum)
+ ieeupk[rd] (datum)
+ ieevpak[rd] (native, ieee, nelem)
+ ieevupk[rd] (ieee, native, nelem)
+ iee[sg]nan[rd] (NaN)
+
+The ieepak and ieeupk routines transform a single scalar value in
+place, while the ieevpak and ieevupk routines transform vectors (note
+that the package prefix is "iee", not "ieee"). In-place vector
+conversions are permitted. Since IRAF does not support the IEEE
+not-a-number formats, NaN, Inf etc. values are converted to a legal
+native floating value on input. The native floating value to which
+NaNs are mapped (default zero) may be globally set with ieesnan.
+
+On some systems, e.g., the VAX, the low level conversion routines may be
+written in assembler or machine dependent C. If so, the source file
+actually used by the system will be found in the "host$as" directory.
+
+
+4.2.4 New routine GETLLINE added to FIO
+
+ A new routine getlline (get long line) has been added to FIO. This
+is similar to getline, except that it will reconstruct arbitrarily long
+newline delimited lines of text, whereas getline returns at most
+SZ_LINE characters.
+
+ nchars = getlline (fd, outstr, maxch)
+
+The new routine should not be confused with the old routine getlongline,
+a higher level routine which performs a similar function, but which
+also ignores comment lines and help blocks, and maintains a line
+counter.
+
+
+4.2.5 Modifications to PLIO/PMIO
+
+ A new routine p[lm]_sectnotconst has been added to PLIO and PMIO
+(the pixel list and image mask interfaces). As the name suggests, the
+routine tests whether a given rectangular section of the mask is all at
+the same value, and if so returns the mask value as an output argument.
+
+ bool = pl_sectnotconst (pl_src, v1, v2, ndim, mval)
+
+A new subpackage PLRIO has been added. This is used to efficiently
+random access any 2D plane of an existing pixel list or image mask.
+
+ plr = plr_open (pl, plane, buflimit)
+ plr_setrect (plr, x1,y1, x2,y2)
+ mval = plr_getpix (plr, x, y)
+ plr_getlut (plr, bufp, xsize,ysize, xblock,yblock)
+ plr_close (plr)
+
+The mask is opened for random access on a special descriptor which
+incorporates a scaled, active 2D lookup table. Most subsequent
+plr_getpix calls will return the given mask value directly from the
+table with very little overhead; only if the referenced pixel occurs in
+a region too complex to be described by a single table entry is the
+value computed by direct evaluation of the mask. A special 2D binary
+recursive algorithm (using pl_sectnotconst above) with log2(N)
+performance is used to calculate the scaled lookup table. These
+algorithms provide efficient table generation and random mask pixel
+access even for very large masks.
+ IRAF (Mar90) V2.8 Revisions IRAF (Mar90)
+
+
+ IRAF Version 2.8 Revisions Summary
+ June 30, 1989
+
+
+
+
+1. Introduction
+
+ This revisions notice coincides with the release of version 2.8 of
+IRAF. The V2.8 release is a general release for all supported IRAF
+hosts.
+
+The following is a brief description of some of the new features
+available in IRAF Version 2.8. This is not intended to be an
+exhaustive list, but rather a brief summary of the major changes since
+the last major release of IRAF Version 2.5 in July 1987 and subsequent
+intermediate releases primarily to support Sun/IRAF: IRAF Version 2.6
+(February 1988), IRAF Version 2.6+ (March 1988), and IRAF Version 2.7
+(December 1988).
+
+More detailed revisions notes are available in the system notes files in
+the iraf$doc and iraf$local directories, as well as in the online
+revisions notes for the various packages.
+
+
+
+2. IRAF System Revisions
+
+ This document highlights the most notable revisions made to the
+IRAF core system software for Version 2.8. This is only a revisions
+summary; no attempt is made to provide detailed technical documentation
+for each revision, nor is there any attempt to exhaustively summarize
+all revisions. A complete record of all core system revisions will be
+found in the System Notes for V2.8. Additional information on some of
+the topics covered below will be found in the various Installation
+Guides and Site Manager's Guides, and in the IRAF User and Technical
+Documentation manual sets.
+
+
+
+2.1 Copyright notice
+
+ Subject to AURA and NSF approval, the IRAF software will be
+copyrighted sometime during 1989. As a first step in this process, a
+copyright notice has been added to all core system source files. The
+notice reads as follows: "Copyright(c) 1986 Association of Universities
+for Research in Astronomy Inc". We will also be adding a file called
+COPYRIGHT to the distribution stating the terms of the copyright and
+associated licensing agreement for the software.
+
+The intent of this action is solely to protect the software from
+unauthorized commercial exploitation, and the copyright grants, or will
+grant, the right to copy, modify, and redistribute the IRAF software
+provided the original copyright notice remains intact, the software is
+made available in source form, and the rights we grant are passed on
+with the software. We wish to prevent others, especially commercial
+firms, from copyrighting IRAF software in their own name and possibly
+taking away the rights we grant with the software. Granting the right
+to modify and redistribute IRAF software does not mean we want to
+encourage people to do so, we merely want them to have the legal right
+to do so if they feel they need to.
+
+
+
+2.2 Major system enhancements
+
+ The information in this section is provided primarily for the
+benefit of IRAF site managers and programmers. The reader interested
+primarily in science applications may wish to skip ahead. Some systems
+level familiarity with the current IRAF system is assumed.
+
+
+2.2.1 Layered software enhancements
+
+ A given IRAF installation consists of the core IRAF system, and any
+number of layered software products or external packages. The goal of
+the layered software enhancements introduced in V2.8 is to make layered
+software products self contained and hence independent of the core
+system and of other layered software. Examples of layered software
+products are the NOAO packages, LOCAL, STSDAS, PROS, and so on.
+
+The layered software enhancements make it possible to install or
+deinstall a layered product by modifying only a single file in the core
+IRAF system. The core system may be updated without affecting layered
+software, and vice versa. Since layered products are independent and
+are simple to install, IRAF can easily be configured with only those
+packages needed at a particular site. Software developers benefit from
+the layered software enhancements because the facilities provided for
+development and maintenance of layered software are equivalent to those
+provided for development of the core IRAF system and the NOAO
+packages. User sites benefit because it is easy to extend the system
+with LOCAL packages of their own making.
+
+Each layered product (usually this refers to a tree of packages) is a
+system in itself, similar in structure to the core IRAF system. Hence,
+there is a LIB (global system library), one or more BINs (binary file
+directories), a Help database, a set of global environment definitions,
+and all the sources and runtime files, all contained within the same
+directory tree. Layered software products, in their source only form,
+are portable without change to any computer which runs IRAF.
+
+
+2.2.1.1 The hlib$extern.pkg file
+
+ This is the file which is modified to install or deinstall layered
+software products. To install a layered product, one creates a
+directory to hold the software, restores the files to disk, and edits
+the extern.pkg file to tell IRAF the name of the root package of the
+layered product, and where the root directory is located. If the
+layered software is distributed in source only form it will also be
+necessary to recompile the software, but this is a completely automated
+process.
+
+
+2.2.1.2 NOAO and LOCAL packages reorganized
+
+ As part of the project to better support layered software, the NOAO
+and LOCAL packages have been reorganized as layered products. These
+packages are now structurally equivalent to third party (non-NOAO)
+packages, except that the directory trees are rooted in IRAF. Both
+packages are now self contained, with their own LIB, BINs, Help
+database, etc., and with an entry in extern.pkg, like other layered
+products. The NOAO package serves as a working example of how to
+configure a layered package. The reorganization of these packages
+should be transparent to anyone merely using the system.
+
+
+2.2.1.3 The template LOCAL
+
+ The LOCAL package included with the distributed system has been
+stripped of all NOAO site-local tasks and restructured as a layered
+product, the template local. The template local contains only two
+sample tasks and is not intended as an end-user package, but rather as
+a template to be copied and modified by sites to construct their own
+site dependent LOCAL package. The desire to be able to easily develop
+and maintain locally added packages was one of the major motivations
+for the layered software enhancements project, and we hope that sites
+will realize the significance of this new capability and take advantage
+of it.
+
+
+2.2.1.4 CL now supports package level BIN directories
+
+ Rather than assuming a global BIN directory for all tasks and
+packages, the CL now permits multiple BIN directories, each BIN
+directory being associated with the package of definition and all
+subpackages of that package (unless they have their own BIN). A new
+BIN directory is declared with the optional argument bindir=path in the
+package statement, e.g., in a package script task.
+
+
+2.2.1.5 MKPKG support for package environments
+
+ Layered packages now have their own private LIB, including an
+environment definitions file (zzsetenv.def), mkpkg global include file
+(mkpkg.inc), and, optionally, a mkpkg special file list file for each
+supported host system, listing files requiring special compilation to
+work around host compiler bugs or whatever. The full mkpkg environment
+is formed by reading the IRAF core system environment and mkpkg
+definitions and include files, followed by the package definitions and
+include files. Reading of the package environment occurs only if mkpkg
+is called with the "-p" flag, or if the variable PKGENV is defined in
+the user's environment.
+
+Another way of expressing this is, when using mkpkg within a layered
+package, one must now specify the name of the layered package in order
+to pick up the package environment definitions. For example, to update
+the MTLOCAL package in NOAO, one would type "mkpkg -p noao update" in
+the mtlocal directory. If this is not done compilation errors may
+result, or the exectable may not be successfully installed in the
+package BIN directory.
+
+
+2.2.2 Multiple architecture support
+
+ A single IRAF system (or layered package) can now simultaneously
+support any number of machine architectures using multiple BIN
+directories sharing a single machine independent copy of IRAF. Each
+BIN directory contains all the object modules, object libraries, and
+executables for a particular architecture. An architecture can
+represent either a type of hardware, e.g., sparc, mc68020+f68881,
+mc68020+ffpa, vax, etc., or a software distinction, e.g., systems
+compiled with different sets of compiler flags, or different versions
+of a system. Multiple architectures are now supported both for IRAF
+execution, and for IRAF based software development, e.g., a single
+version of IRAF can now be used to develop and run IMFORT programs on
+both Sun-3 and Sun-4 nodes.
+
+The only case where multiple architecture support is used at the present
+time is in Sun/IRAF, which is often installed on a heterogeneous
+network of workstations, e.g., Sun-3s with various hardware floating
+point options, and Sun-4s. A single copy of IRAF will be configured
+with several BIN directories, one for each supported architecture, and
+NFS mounted on all the network nodes which will be using IRAF. There
+is no reason that this feature need be restricted to use with Sun/IRAF,
+however.
+
+
+2.2.2.1 IRAFBIN and IRAFARCH
+
+ Starting with IRAF V2.8, the old environment variable IRAFBIN has
+been obsoleted and replaced by IRAFARCH. On machines which support
+multiple architectures, the latter defines the architecture to be used
+for both IRAF execution and software development. If only IRAF
+execution is needed the variable is optional, with the best
+architecture being selected automatically when the CL is started. If
+one will be doing software development (including IMFORT) it is best to
+define the variable in the host environment before starting IRAF or
+doing any host level software development. Typical values of IRAFARCH
+for a Sun workstation are "sparc", "i386", "f68881", and "ffpa".
+
+
+2.2.2.2 System libraries moved to the BIN directory
+
+ As part of the revisions required for multiple architecture support
+for software development, all object libraries have been moved from the
+global, architecture independent LIB to the architecture dependent BIN,
+with the LIB entries being replaced by symbolic links (in the case of
+Sun/IRAF). This should be transparent to both end users and
+programmers.
+
+
+2.2.2.3 New bin.generic architecture
+
+ On Sun/IRAF systems, which are distributed configured for multiple
+architecture support, the system architecture is set to generic in the
+distributed system. What this means is that all architecture dependent
+files (objects and object libraries) have been removed from the system
+directories and archived in the file OBJS.arc in the BIN directory for
+each architecture. Rebuilding any of the packages in a system would
+require restoring the binaries for a particular architecture, e.g.,
+typing "mkpkg sparc" at the IRAF root would restore the sparc binaries
+for the core system on a Sun/IRAF installation. Note that this only
+affects software development for the system in question; software
+development for external packages or private user software is not
+affected.
+
+
+2.2.3 Shared library facility
+
+ IRAF version 2.8 adds support for a general shared library facility
+for UNIX based systems. Although currently only used with Sun/IRAF,
+this facility is potentially useful for other UNIX based IRAF systems
+as well (VMS/IRAF already has its own shared library facility).
+
+What the shared library facility does is take most of the IRAF system
+software (currently the contents of the ex, sys, vops, and os
+libraries) and link it together into a special sharable image, the file
+S.e in each core system BIN directory. This file is mapped into the
+virtual memory of each IRAF process at process startup time. Since the
+shared image is shared by all IRAF processes, each process uses less
+physical memory, and the process pagein time is reduced, speeding
+process execution. Likewise, since the subroutines forming the shared
+image are no longer linked into each individual process executable,
+substantial disk space is saved for the BIN directories. Link time is
+correspondingly reduced, speeding software development.
+
+With the introduction of the shared library facility, the disk space
+required for Sun/IRAF is substantially reduced. Due to the increased
+memory sharing and reduced process pagein times performance is
+substantially improved, especially on systems like the Sun/386i which
+has a relatively slow SCSI disk and often limited memory. The disk
+size of small programs is reduced by up to a factor of ten in some
+cases, e.g., an executable for a small program that was formerly 250 Kb
+in size might be as small as 25 Kb if the shared library is used and
+the shared image symbols are omitted at link time.
+
+
+
+2.3 User interface changes
+
+
+2.3.1 Calling IRAF tasks from the host environment
+
+ The IRAF main and zmain were modified to make it easier to call
+IRAF tasks as host level tasks, i.e., without having to set up a
+command file and run the process with the standard input redirected.
+In the new scheme, any extra arguments given on the process command
+line are passed into the IRAF main as a command buffer containing the
+IRAF command or commands to be run. For example,
+
+ cl> x_system.e netstatus
+
+would run the command netstatus in process x_system.e.
+
+ cl> x_system.e count "files=*.x"
+
+would run the count task, counting all ".x" files in the current
+directory.
+
+ cl> x_system.e count "files=*.x 4>_o"
+
+would do the same, redirecting the output at the IRAF main level to the
+file _o.
+
+ cl> x_system.e 'directory @pars $nargs=0'
+
+would run the directory task with the given parameter set, with $nargs
+set to 0. If any of the parameters to a task are omitted the task will
+query the terminal for them in the usual way, so for example
+
+ cl> alias count "$iraf/bin/x_system.e count files="
+
+would make the IRAF task count available in UNIX, allowing the IRAF
+template specifying the files to be counted to be either given on the
+UNIX command line, or prompted for if omitted. Given the above alias,
+one could enter a UNIX command such as
+
+ cl> count 'cl$*.h'
+
+
+This feature is available in all UNIX based versions of IRAF V2.8, but
+did not make it into VMS/IRAF version 2.8.
+
+
+2.3.2 Image packing density control (impkden)
+
+ Some users have complained about images taking up more disk space
+than they have to, due to the IMIO feature which conditionally blocks
+image lines to fill an integral number of disk blocks. This can result
+in more efficient image i/o but can also make a significant difference
+in the amount of disk space consumed by an image in some cases.
+
+IMIO can actually support both block-aligned and fully packed images.
+The decision is made at image creation time and is based on the image
+packing density if image lines are block aligned. If the packing
+density is too low for a block-aligned image, a fully packed image is
+created to avoid wasting disk space. The default minimum packing
+density is 0.6, i.e., up to 40% wasted space before IMIO switches to
+full packing (no wasted space).
+
+For finer control over the packing density, the user can now specify the
+optional environment variable impkden, the numeric value being the
+mininum packing density. For example,
+
+ cl> set impkden = 1.0
+
+would completely disable block-alignment of image lines in IMIO.
+
+
+2.3.3 User libraries (IRAFULIB)
+
+ It is now possible for the programmer (SPP or IMFORT) to specify a
+private directory to be searched at compile or link time when
+developing IRAF or IMFORT programs. This is done by defining the path
+to the directory in the user environment as the variable IRAFULIB.
+When locating a particular file, this directory will be searched before
+the IRAF system libraries are searched, hence this feature may be used
+to substitute custom versions of files in the IRAF system libraries,
+e.g., for debugging purposes.
+
+
+2.3.4 New logical printer device LPR
+
+ A new logical line printer or plotter device lpr is now supported on
+all UNIX/IRAF systems. This treats the UNIX task lpr as a kind of
+pseudo-device, leaving it up to UNIX to decide what physical device to
+dispose of the output to. This default is system dependent, but on
+some systems can be controlled by defining the variable PRINTER in the
+user environment.
+
+
+2.3.5 Machine independent help database
+
+ The IRAF help task uses a precompiled binary database to speed help
+keyword searching. This file is now machine independent, allowing it
+to be generated on one system and included in software distributions
+without having to be recompiled. In addition, as part of the layered
+software support, help now allows each external package to have its own
+private help database. The first time help is run, all such databases
+are read and linked to produce a database containing entries for all
+help modules in the core system and all installed external packages.
+The help database file is the file helpdb.mip in the LIB directory of
+the core system and each external package.
+
+
+2.3.6 Set terminal type will no longer hangup
+
+ On systems, e.g., workstations, which provide virtual terminal
+windows which can change in size, IRAF may query the terminal at run
+time to determine the screen size. This query is performed, for
+example, at login time if the terminal type is set to gterm or sun.
+Formerly this could cause the login process to hang indefinitely (i.e.,
+until the user typed return or interrupt) if the terminal did not
+respond to the size query, as would happen when the terminal type was
+set improperly and the actual terminal ignored the query. Thanks to
+the addition of non-blocking raw terminal i/o in V2.8 IRAF, the
+terminal screen size query will now time out with a warning message to
+reset the terminal type, if the terminal does not respond to the query
+within several seconds.
+
+
+2.3.7 Installing a new version of IRAF obsoletes old user parameter files
+
+ The problem of old, obsolete user (uparm) parameter files being
+used with a newly installed version of IRAF, which could lead to
+"parameter not found" error aborts, has been fixed. The CL now checks
+the date of the file utime in HLIB, and refuses to use the user pfile
+if it is older than either utime or the package pfile provided with the
+new system. The contents of old user pfiles are merged into the new
+system pfile, as before, preserving learned parameter values even when
+the user pfile is obsolete.
+
+
+2.3.8 @file list bug fixed
+
+ The problem of the "@file" (at-file-list) syntax not working when
+the file in question was not in the current directory has been fixed.
+
+
+
+2.4 Programming interface changes
+
+
+2.4.1 IMFORT pixel directory control
+
+ IMFORT has been modified to permit specification of the pixel file
+directory by the calling program. The modifications are completely
+upwards compatible, i.e., existing programs linked with the new
+interface will still create pixel files in the same directory as the
+header file, with "HDR$" in the image header.
+
+The Fortran programmer may set or query the pixel file directory using
+the following routines:
+
+ imsdir (dir) # set pixel directory pathname
+ imgdir (dir) # get pixel directory pathname
+
+where dir is a Fortran character variable. The value should be either
+"HDR$" (the default) or a concatenatable host directory pathname (i.e.,
+trailing / required for unix). Once set, the pixel directory will be
+used for all subsequent image create or rename operations by the
+calling process.
+
+For example,
+
+ call imsdir ("/tmp3/pixels/")
+ call imcrea (image1, axlen, naxis, dtype, ier)
+ call imcrea (image2, axlen, naxis, dtype, ier)
+
+If desired the default pixel directory may be specified in the host
+environment as imdir or IMDIR before running the program. IMFORT will
+check the host environment for this environment variable then use
+"HDR$" as the default if no host definition is found.
+
+Note that although this is similar to setting the value of imdir in the
+IRAF environment, IMFORT programs are not part of the IRAF environment
+and are not affected by changes to the IRAF imdir. Also, since IMFORT
+is a host level facility and IRAF networking is not supported, the
+network prefix (e.g., "node!") is omitted from the pixelfile pathname,
+and since IMFORT programs are not necessarily used in conjunction with
+IRAF, the ".." (hidden file protection) files are not used to protect
+against image deletion.
+
+
+2.4.2 Image display interface: IMD
+
+ A new interface IMD has been added to provide a rudimentary
+facility for interactive image display device control. This is an
+interim prototype interface which will be replaced by the new display
+interfaces when the latter become available.
+
+The IMD interface operates by mapping an image display device frame
+buffer onto an IMIO image descriptor. The display frame buffer may
+then be randomly edited by normal image i/o operations, e.g., to modify
+subrasters of the displayed image, or overlay the image with color
+graphics. The image pixel to display frame buffer coordinate
+transformation is supported, allowing applications to work in image
+pixel coordinates if desired. This interim interface is what is used
+by the new display oriented tasks imexamine, imedit, and tvmark.
+
+
+2.4.3 Image masks: PLIO, PMIO, MIO
+
+ The following new VOS interfaces have been added in V2.8 to provide
+a general boolean or integer image mask facility.
+
+ PLIO pixel list i/o
+ PMIO pixel (image) mask i/o
+ MIO masked image i/o (image i/o through a mask)
+
+
+PLIO is a general interface for storing and manipulating
+multidimensional integer valued rasters containing regions of constant
+value (i.e., masks). The masks are stored in a highly compressed form,
+the size of the compressed mask being a function of the information
+content of the mask. Both pixel array and range list i/o facilities
+are provided, as well as a set of general boolean raster operators,
+e.g., to extract or insert subrasters, AND or OR a source with a
+destination, do the same through a stencil, draw regions of various
+kinds (point, line, box, circle, polygon), and so on. See the PLIO.hlp
+file in the PLIO source directory for further information.
+
+An interactive debug program (plio$zzdebug.x) is provided for
+experimenting with masks. Note that PLIO is a stand alone interface
+and is not tied in any way to IMIO, even though the data structure
+operated upon is similar to an image matrix.
+
+PMIO is very similar to PLIO except that it is used to associate a
+masks with an IMIO maintained reference image. Currently, the PMIO
+mask must be the same resolution as the physical reference image. All
+coordinates input to PMIO are in the image section coordinates of the
+reference image. Hence, given a physical image and associated mask,
+one can operate upon both through a user specified image section
+transparently to the applications program. This includes all PLIO
+style boolean rasterop operations, as well as mask pixel and range list
+i/o. The PMIO interface is layered upon PLIO and IMIO, and the calling
+sequences are identical with PLIO except for the package prefix, and
+the addition of several new PMIO specific routines.
+
+MIO is essentially an extension of image i/o for pixel i/o through a
+mask. The central routines are the following:
+
+ mio_setrange (mp, vs, ve, ndim)
+ n|EOF = mio_[gp]lseg[silrdx] (mp, ptr, mval, v, npix)
+
+One defines a rectangular region of the image with mio_setrange, and
+then sequentially reads or writes line segments until all pixels
+visible through the mask have been accessed. This type of i/o should
+be ideal for most image processing applications which need to operate
+upon only those pixels visible through a region mask (e.g., a surface
+fitting task), upon all pixels except those on a bad pixel mask (e.g.,
+any analysis program), and so on.
+
+PLIO (or PMIO) masks may be stored in binary files on disk, the files
+having the extension ".pl". The V2.8 version of IMIO has the
+capability to treat such masks as if they were images, allowing masks
+to be easily displayed, used in image expressions, converted to image
+matrices and vice versa, etc. Applications may do either pixel or
+range list i/o to a mask image via IMIO, if MIO is not suitable for
+some reason.
+
+
+2.4.4 Photon images: QPOE, QPIO, QPEX
+
+ A new set of VOS interfaces supporting photon or event list data
+are now available. The QPOE interface implements the Position Ordered
+Event list object, which consists of a general header mechanism plus an
+event list, wherein the events are little data structures, e.g., the
+attributes required to describe a photon detection (position, energy,
+time, etc.). QPOE is designed to efficiently access very large event
+lists, e.g., several hundred thousand or several million events in size.
+Builtin event attribute filtering and region filtering capabilities are
+provided for selecting photons from the event list. These filtering
+capabilities may be combined with the sampling capability to produce
+filtered, block averaged image matrices from event lists.
+
+The QPOE interfaces are the following:
+
+ QPOE header and file access and management facilities
+ QPIO raw and filtered event i/o
+ QPEX event attribute filter mechanism
+ QPF IMIO/IKI kernel for image interface to QPOE files
+
+QPOE and QPF add a new image type to the system, with .qp file
+extension. Hence, event list data can be used as input to any of the
+image processing tasks in standard IRAF, in addition to being analyzed
+by tasks which deal with the individual photon events. A QPOE image is
+contained in a single file. When a QPOE file is accessed as an image
+the interface filters and samples the event list in real time, using a
+user defined filter, block averaging factor, region mask, and so on,
+producing the image matrix seen by applications at the IMIO level. The
+QPOE object may be repeatedly examined with different event filters to
+view the data in different ways.
+
+The QPOE interface, in addition to providing an event list capability
+for IRAF, serves as a prototype for the "flex-header" portion of the
+new image structures project. Many of the capabilities to be provided
+for image storage under the new image structures are already present in
+QPOE.
+
+Further information is given in the QPOE.hlp file in the QPOE source
+directory.
+
+
+2.4.5 File manager: FMIO
+
+ A new VOS library FMIO has been installed. FMIO is "File Manager
+I/O", and is used to implement a simple binary file manager which
+maintains the file data of so-called "lfiles" (lightweight files)
+inside a single host binary file. The system overhead for accessing
+lfiles is much less than that of host files, and many lfiles can be
+used to store a complex data structure without cluttering a host
+directory or incurring the inefficiency of accessing host files. FMIO
+is part of the DFIO project and will serve as the lowest level
+interface within DFIO; it is also used currently in the QPOE
+interface. Additional information is given in the README file in the
+source directory for the interface.
+
+
+2.4.6 IMIO changes
+
+ IMIO is the image i/o interface, the standard IRAF VOS interface
+for managing all varieties of image data.
+
+
+2.4.6.1 Mask image support
+
+ IMIO now supports a new type of image, the mask image, stored as a
+highly compressed binary (PLIO) file with the extension ".pl". Image
+masks are most commonly used to store information describing selected
+pixels in an associated data image. An image mask is logically a
+boolean or integer image, up to 28 bits deep, containing information
+only on selected pixels or regions of pixels. Masks are stored in
+highly compressed format, e.g., a simple mask may be stored in only a
+few hundred bytes of space. Mask images are readable, writable, and
+randomly modifiable, like ordinary raster images. See \(sc2.4.3 for
+more information.
+
+
+2.4.6.2 Photon image support
+
+ Support has also been added to IMIO for event list images, stored
+as position ordered event list datafiles using the QPOE interfaces.
+This new image type has the extension ".qp". QPOE images are read-only
+under IMIO. Subject to that restriction, they may be accessed like any
+other image by any IRAF image analysis program. Accessing an event
+list image as a raster image necessarily involves a runtime sampling
+operation, wherein the events in the region of interest are accumulated
+into an initially zero image matrix; in the process the event list may
+optionally be filtered by event attribute or event position, e.g.,
+
+ cl> display "xray.qp[t=(30:40),pha=10,block=4]"
+
+would display the QPOE image xray.qp with a blocking factor of 4,
+selecting only those events with t (time) in the range 30 to 40 and for
+which pha (energy) has the value 10. The event attributes and their
+names are user definable and may vary for different types of data. See
+\(sc2.4.4 for more information.
+
+
+2.4.6.3 IMPUTH
+
+ A new procedure imputh has been added to the IMIO header access
+library. The new procedure is used to append FITS like HISTORY or
+COMMENT cards to the image header.
+
+
+2.4.6.4 IMPARSE
+
+ The calling sequence of the internal IMIO procedure imparse has
+changed. Although this procedure is internal to the IMIO interface and
+is not supposed to be used within applications, there may be
+applications which make use of this procedure. Any such applications
+must be modified to reflect the new procedure calling sequence or
+runtime problems are guaranteed.
+
+
+2.4.7 Null string environment variables
+
+ The semantics of the VOS procedures envgets and envfind have
+changed. This could affect existing programs and any programs which
+use these functions should be checked to make certain they will still
+work properly.
+
+These procedures, used to fetch the string values of environment
+variables, return the length of the output string as the function value.
+Formerly, a value of zero would be returned both when the named
+variable existed but had a null string value, and when the variable was
+not found. This made it impossible to discriminate between the case of
+a variable not being defined, and one which is defined but has a null
+value. The routines have been changed to return the value ERR (a
+negative integer) if the variable is not defined. Programs which do not
+wish to make the distinction between undefined and null-valued should
+check for a function value less than or equal to zero. Programs which
+check for a function value equal to zero will fail if the named
+variable is not defined.
+
+
+2.4.8 Environment substitution in filenames
+
+ The VOS filename mapping code has been modified to add support a
+powerful new environment substitution syntax. Previously the only
+environment substitution mechanism available was the logical directory
+facility, which could only be used to parameterize the directory
+field. The new facility may be used to perform environment
+substitution anywhere in a filename. This is used in IRAF version 2.8
+to implement multiple architecture support, e.g.,
+
+ cl> set bin = "iraf$bin(arch)/"
+
+is how the core system BIN is defined in V2.8 IRAF. The syntax
+"(arch)" tells the filename mapping code to substitute the string value
+of the environment variable arch, if defined. If the variable is not
+defined the null string is substituted. Hence, if the host system does
+not implement multiple architecture support and arch is not defined,
+BIN is defined as "iraf$bin/", which is the backwards compatible
+definition. If arch is defined as, e.g., ".vax", then BIN is defined
+as "iraf$bin.vax/". The new feature allows use of a single environment
+variable to define the architecture, not only to form filenames, but
+for other purposes as well, e.g., to generate compiler switches or to
+control library searching in mkpkg.
+
+
+2.4.9 Nonblocking raw terminal i/o
+
+ The VOS file i/o interfaces have been modified to add support for
+nonblocking terminal i/o. This facility makes it possible to, in
+effect, "poll" the terminal to see if there is any input waiting to be
+read, to allow interaction without having a program block if the user
+has not typed anything.
+
+The immediate application of this in version 2.8 was the modification
+of the stty (set-terminal) facility to implement a time out for the
+terminal size query. Formerly, stty would hang up indefinitely when
+the terminal type was set to "gterm" but the actual terminal was
+something different, causing the screen size query to be ignored.
+
+In the more general case, nonblocking terminal i/o makes possible a new
+class of user interface, which is not only interactive, but event
+driven. Nonblocking i/o makes it possible for an application to be
+continually processing, while checking the terminal occasionally to see
+if the user has input any commands.
+
+At present, nonblocking i/o is always used in conjunction with raw mode
+input from a terminal. A new flag F_NDELAY, defined in <fset.h>, is
+used to enable or disable nonblocking i/o. For example,
+
+ call fseti (fd, F_RAW, YES)
+
+enables conventional blocking, single character raw mode reads, and
+
+ call fseti (fd, F_RAW, YES + F_NDELAY)
+
+enables nonblocking raw mode input (YES, NO, and F_NDELAY are bit
+flags). These modes are mutually exclusive, e.g., the first call may
+be issued while nonblocking raw mode is in effect to make the reads
+block, and vice versa. A call to fset(fd,F_RAW,NO) disables both raw
+mode and nonblocking mode. Once nonblocking raw mode is in effect one
+merely reads characters from the terminal in the usual way, using
+getc. EOF is returned if a read is performed when no data is available
+for input, otherwise the next character is returned from the input
+queue. Further information on nonblocking i/o is given in the system
+notes file.
+
+
+2.4.10 Function call tables (ZFUNC)
+
+ IRAF has always had the ability to compute the integer valued
+address of a procedure, store that address in a table, and later use
+the address as an argument to one of the zcall kernel primitives to
+call the addressed procedure. This facility has been extended by the
+addition of a set of zfunc primitives, used to call integer valued
+functions. Only integer valued functions are supported (in order to
+simplify the kernel support required), but in the systems oriented
+applications where procedure call tables are used, this is unlikely to
+be a serious limitation.
+
+
+
+2.5 Sun/IRAF specific revisions
+
+
+2.5.1 IEEE exception handling
+
+ By default the IEEE hardware is now configured, on all Sun systems,
+with the invalid, overflow, and divide by zero IEEE exceptions enabled,
+and with the default rounding direction and precision modes (nearest,
+extended) in effect. This configuration should ensure that all
+questionable floating point operations are detected, and that no IEEE
+"funny numbers" (NaN, Inf, etc.) get into the data. These values,
+since they don't behave like ordinary numbers, can cause programs to
+misbehave, e.g., go into an infinite loop. In Sun/IRAF V2.8, if a
+computation results in an IEEE funny number being generated, an
+exception abort will result. The most common example is divide by zero.
+
+The IRAF/IEEE interface offers a special debug feature that may be of
+interest to programmers developing numerically sensitive software. If
+desired, one can change the default rounding direction and precision
+(e.g., to test the numerical stability of applications) by using the
+debugger to set a nonzero value of the variable debug_ieee before
+running an executable. The procedure for doing this is documented in
+the system notes file.
+
+
+2.5.2 IMTOOL enhancements
+
+ A number of enhancements and bug fixes have been made for V2.8 to
+the SunView based IMTOOL image display server. The most notable
+changes are summarized here; refer to the IMTOOL manual page for a more
+complete description of the new features.
+
+
+2.5.2.1 Software ZOOM added
+
+ IMTOOL, which has had for some time the ability to pan about on a
+large image, now has the ability to zoom as well. Both pan and zoom
+are controlled very conveniently by the middle mouse button: place the
+mouse on an object and tape the middle button once to pan the object to
+the center of the display window; tap it again and the image will be
+zoomed. Zoom, currently implemented by writing directly into the
+hardware frame buffer, is very fast, almost as fast as a normal
+unzoomed window refresh. The default set of zoom factors is 1,2,4,8
+after which the sequence wraps around to 1. The zoom factors are user
+configurable via the IMTOOL setup panel; very large zoom factors, e.g.,
+x64, are possible. Dezoom (making a large image smaller) is not
+currently supported.
+
+
+2.5.2.2 WCSDIR eliminated
+
+ The host level WCSDIR environment variable, and the text file used
+to communicate image coordinate (WCS) information between the display
+task and the display server, have been eliminated. All WCS information
+is now passed via the datastream used to pass commands and data between
+the client and the display server. This eliminates the need for users
+to have to remember to define WCSDIR in order to get coordinates in
+image units, and some subtle process synchronization problems are
+eliminated as well.
+
+In a related change, the frame buffer configuration index is no longer
+passed in during a frame erase, hence it is no longer necessary to
+erase a frame before displaying an image to ensure that a frame buffer
+configuration change is passed to the server. The configuration index
+is now passed when the WCS information for a frame is set.
+
+
+2.5.2.3 Graphics colors
+
+ IMTOOL now allocates a range of pixel values for use as graphics
+overlay colors. Setting a frame buffer pixel to one of these values
+causes it to always be displayed with the assigned color. The graphics
+color values are not affected by windowing the display. The most
+common use of graphics colors with V2.8 IRAF is for drawing graphics
+into a displayed frame with the new tvmark task, available in PROTO.
+See the IMTOOL manpage for a table listing the color index assignments.
+
+
+2.5.2.4 New imtoolrc entries
+
+ Several new predefined frame buffer configurations have been added
+to the default imtoolrc. These include an 128 pixel square frame
+buffer (imt128), a 256 pixel square frame buffer (imt256), and a full
+screen display with the same aspect ratio as a 35 mm slide (imtfs35).
+
+
+2.5.2.5 System crash (FIFO) bug fixed
+
+ Versions of SunOS through at least 4.0.1 have a bug in the FIFO
+driver code which can cause the internal kernel FIFO data buffer to be
+deallocated while it is still in use. This will result in a bad kernel
+which will eventually panic and reboot the system. This is the cause
+of the IMTOOL crash problem which some sites may have experienced.
+IMTOOL has been modified to avoid the circumstances (repeated 4096 byte
+transfers) which cause the bug to surface. So far as we know, the real
+bug (in SunOS) has not yet been fixed, but at least on the NOAO
+systems, the frequency of occurrence of the system crashes is greatly
+reduced with the new version of IMTOOL which incorporates the
+workaround for the SunOS bug.
+
+
+2.5.2.6 Cursor marking now disabled by default
+
+ When the interactive image cursor read facility was first added to
+IMTOOL, the default response to each cursor read was to draw a small
+white dot at the position of the cursor. This is convenient when
+marking a series of objects to make a list, but with the increasing
+number of IRAF programs making user of the interactive image cursor, it
+has been necessary to change the default to disable automatic marking
+of each cursor read. The cursor mark feature is still available as an
+option and can be enabled via the setup panel.
+
+
+2.5.2.7 Ctrl/b may be used for manual blinking
+
+ In addition to the list of blink frames and the timed blink feature
+IMTOOL has provided for some time, it is now possible to manually cycle
+through the blink frames with the <ctrl/b> key. Typing <ctrl/b> while
+the mouse is in the image window will cause the display to display the
+next blink frame in sequence.
+
+
+2.5.2.8 F4 key will now toggle setup panel
+
+ The F4 function key on the Sun keyboard may now be used to toggle
+whether or not the setup panel is displayed. This provides a single
+keystroke alternative to calling up the setup panel with the frame menu.
+
+
+
+2.6 VMS/IRAF specific revisions
+
+
+2.6.1 NEWUISDISP added to VMS/IRAF
+
+ Nigel Sharp's NEWUISDISP display program, used for image display
+under UIS on microvaxes with bitmapped displays, is now available in the
+standard VMS/IRAF release, in the directory [IRAF.VMS.UIS].
+
+
+2.6.2 New INSTALL.COM script
+
+ A new INSTALL.COM script (also written by Nigel Sharp) has been
+added to VMS/IRAF. This script, run by the system manager to install
+selected IRAF executable images, will now automatically check for and
+deinstall any old versions of the executables before installing the new
+ones.
+
+
+2.6.3 VMS 4.7/5.0
+
+ Testing of the standard V2.8 VMS/IRAF release, which was prepared
+on VMS 4.7, on a VMS 5.0 system has thus far not revealed any problems
+(NOAO is still running VMS 4.7 as our standard system). Hence it
+appears that the standard V2.8 VMS/IRAF will run under VMS 5. It is
+likely, however, that any attempt to recompile VMS/IRAF under VMS 5
+would cause problems, since we have not yet tried to rebuild IRAF under
+VMS 5, and such a major operating system upgrade will often require
+changes to the IRAF code. The system may be relinked under VMS 5 if
+desired, and this does not appear to cause any problems, but neither
+does there appear to be any benefit to be gained from doing so.
+
+
+
+2.7 Summary of IRAF System Packages Revisions
+
+
+o The tasks RFITS and WFITS in the DATAIO package now support the
+ reading and writing of arbitrary sized data blocks (IRAF version 2.7
+ and later).
+
+o Several new tasks were added to the IMAGES package. IMCOMBINE (IRAF
+ version 2.6 and later) provides for the combining of images by a
+ number of algorithms. The new task CHPIXTYPE (IRAF version 2.7 and
+ later) changes the pixel types of a list of input images. The task
+ IMSLICE slices images into images of one less dimension (IRAF
+ version 2.8). The task IMSTACK has been moved into the IMAGES
+ package (although it still resides in PROTO as well).
+
+ The IMSTATISTICS task has been rewritten and now allows the user to
+ select which statistical parameters to compute and print (IRAF
+ version 2.8). The IMRENAME task has been modified to allow "in
+ place" image renames, used chiefly for moving the pixel files to a
+ new IMDIR.
+
+ Several other tasks in the IMAGES package were modified (IRAF
+ version 2.8). IMSHIFT was modified to accept a list of shifts from
+ a file. REGISTER and GEOTRAN were modified to accept a list of
+ transforms instead of only a single one. IMHISTOGRAM has undergone
+ extensive revision including support for "box" type plots, support
+ for linear or log scaling in the y coordinate, as well as support
+ for antialiasing of the histogram bins.
+
+o All the tasks in the IMAGES.TV package were modified (IRAF version
+ 2.8) so that if a task is used with an unsupported display device a
+ message is printed to that effect.
+
+o The STTY task in the LANGUAGE package has been improved (IRAF
+ version 2.6 and later) to better facilitate its "playback" feature.
+ These changes have been documented in the online help for the
+ task. This feature is little used by external sites but can be a
+ very useful instructional aid if users are aware of its capability.
+
+o A new task PVECTOR was added to the PLOT package that allows one to
+ plot an arbitrary vector in a two dimensional image (IRAF version
+ 2.6 and later).
+
+ The task STDPLOT was modified (IRAF version 2.8) so that it uses
+ the more popular SGI kernel rather than the NSPP (NCAR) kernel
+ (STDPLOT is now equivalent to the SGIKERN task). A new task
+ NSPPKERN was added that uses the NSPP kernel.
+
+o Two new tasks were added to the SYSTEM package (IRAF version 2.8).
+ The task DEVICES simply prints the dev$devices.hlp file as edited
+ by the site manager listing available devices on the local host or
+ network. The REFERENCES task is used to search the help database
+ for all tasks or other help modules pertaining to a given topic,
+ e.g., references vector will list all tasks that have the string
+ "vector" in their one line description.
+
+
+2.8 Glossary of New Tasks in the IRAF System Packages
+
+Task Package Description
+
+chpixtype images Change the pixel type of a list of images
+devices system Print information on the locally available devices
+imcombine images Combine images pixel-by-pixel using various algorithms
+imslice images Slice images into images of lower dimension
+imstack images Stack images into a single image of higher dimension
+nsppkern plot Plot metacode on a NSPP (NCAR) plotter device
+pvector plot Plot an arbitrary vector in a 2D image
+references system Find all help database references for a given topic
+
+In addition, there are new image display oriented tasks imexamine,
+imedit, and tvmark in the PROTO package in NOAO (used to interactively
+examine and edit images, or draw graphics into image display frames).
+These really belong in the core system but have been placed in
+noao.proto since they are prototype tasks.
+
+
+
+3. NOAO Package Revisions
+
+ Some of the major revisions to the NOAO packages are listed below.
+
+
+3.1 Summary of NOAO Packages Revisions
+
+
+3.1.1 New NOAO Packages
+
+ Several new packages have been added to the NOAO suite of packages.
+
+o The APPHOT package is a set of tasks for performing aperture
+ photometry on uncrowded or moderately crowded stellar fields in
+ either interactive or batch mode. This package is now installed in
+ the DIGIPHOT package (IRAF version 2.7 and later). The APPHOT
+ package was available as an add-on package to IRAF version 2.5 and
+ later while it was undergoing alpha testing. Many new features
+ have been added to the package since it first became available
+ including the new task QPHOT (quick aperture photometry) and
+ interaction with the image display cursor for supported image
+ displays (Sun workstation, IIS model 70).
+
+o The CCDRED package provides tools for the easy and efficient
+ reduction of CCD images. This package has been installed in the
+ IMRED package (IRAF version 2.6 and later). The CCDRED package was
+ also available as an add-on to IRAF version 2.5.
+
+ A short demonstration of many of the tasks in the CCDRED package is
+ provided with the DEMO task in the CCDRED.CCDTEST package.
+
+o The IMRED.ECHELLE package has been replaced with a more
+ sophisticated collection of tasks for reducing echelle type data
+ (IRAF version 2.7 and later). The new ECHELLE package recognizes a
+ new image format in which each extracted echelle order becomes a
+ line in a two dimensional image rather than having a separate one
+ dimensional spectrum for each order, although this old output
+ format is still available as an option. Several new tasks exist
+ for computing and applying a wavelength calibration to the data
+ using the echelle relationship between the orders (ECIDENTIFY,
+ ECREIDENTIFY, and ECDISPCOR) as well as for manipulating the new
+ echelle format (ECSELECT, ECCONTINUUM, and ECBPLOT).
+
+o The IRRED package has been added to the IMRED package. The IRRED
+ package collects together in one place those tasks used most
+ frequently by users reducing IR data such as that taken with the IR
+ imager at KPNO. The IRMOSAIC and IRALIGN tasks were available with
+ IRAF version 2.6 and later. IRMOSAIC takes an ordered list of
+ input images and places them on a grid in an output image. IRALIGN
+ uses this grid and a coordinate list of overlapping objects from
+ the individual subrasters to produce an aligned output image. The
+ tasks IRMATCH1D and IRMATCH2D were available with IRAF version 2.7
+ and later. These tasks are similar to IRALIGN expect that the
+ intensities of adjacent subrasters can be matched as well. A
+ script called MOSPROC (IRAF version 2.8) has also been added that
+ prepares a list of images for a quick look mosaic.
+
+o The MSRED package has been added to the IMRED package. The MSRED
+ package is a collection of tasks used for reducing multispectral
+ types of data, e.g. fiber arrays, where the individual spectra are
+ for different objects. Like the ECHELLE package, it also has its
+ own multispectral image format (a two dimensional image in which
+ each line is an extracted spectrum). Several new tasks have been
+ added to the package for wavelength calibration of multispectral
+ data.
+
+
+3.1.2 Modifications to Existing NOAO Packages
+
+
+o The ASTUTIL package was reorganized (IRAF version 2.6 and later -
+ see IRAF Newsletter No. 3 for details) and several tasks were added
+ and/or modified. A new task ASTTIMES computes and prints
+ astronomical dates and times given a local date and time. A new
+ task RVCORRECT computes and prints radial velocity corrections for
+ an observation. The tasks PRECESS and GALACTIC were modified
+ slightly using different but more accurate algorithms.
+
+ The new task SETAIRMASS (IRAF version 2.8) computes the effective
+ airmass and middle UT of an exposure. This task was also made
+ available in the TWODSPEC and IMRED packages.
+
+o The two tasks in the IMRED.BIAS package, COLBIAS and LINEBIAS, were
+ modified slightly (IRAF version 2.7 and later) so that the fitting
+ parameters for the overscan region can be set by the user as hidden
+ parameters to the tasks.
+
+o The task COSMICRAYS (from the CCDRED package) was made available in
+ the IMRED.GENERIC package (IRAF version 2.6 and later).
+
+o A new task called SYNDICO has been added to the IMRED.VTEL package
+ (IRAF version 2.6 and later). SYNDICO makes glossy prints on the
+ NOAO Dicomed printer of the synoptic, full disk, magnetograms and
+ spectroheliograms taken at the vacuum telescope at Kitt Peak.
+
+o Modifications were made to the IMRED.DTOI package. These changes
+ have been documented in IRAF Newsletter No. 4.
+
+o Three new tasks in the ONEDSPEC package, REFSPECTRA, SEXTRACT, and
+ SPECPLOT, were made available in the IMRED.COUDE, IMRED.IIDS,
+ IMRED.IRS, and IMRED.SPECPHOT packages.
+
+o Many new tasks and features have been added to the ONEDSPEC package.
+
+ The SENSFUNC task was completely rewritten (IRAF version 2.6 and
+ later) to allow determination of extinction, display of flux
+ calibrated spectra, and many new features for displaying and
+ manipulating the data.
+
+ IDENTIFY, REIDENTIFY and DISPCOR were modified (IRAF version 2.6
+ and later) so that a dispersion solution from IDENTIFY could be
+ shifted without changing the original shape of the coordinate
+ function (see IRAF Newsletter No. 3 for details).
+
+ A new deblending algorithm was added to SPLOT (IRAF version 2.7 and
+ later). See the online help for SPLOT as well as the article in
+ IRAF Newsletter No. 4.
+
+ The tasks in the ONEDSPEC.ONEDUTIL package were absorbed into the
+ ONEDSPEC package (IRAF version 2.7 and later).
+
+ The EXTINCT task disappeared with its functionality being taken
+ over by a rewritten CALIBRATE (IRAF version 2.7 and later).
+
+ The COEFS task was moved to the IMRED.IIDS and IMRED.IRS packages
+ since this is a very instrument specific task (IRAF version 2.7 and
+ later).
+
+ Three new tasks were added to the package. SEXTRACT (IRAF version
+ 2.6 and later) extracts subspectra from one dimensional input
+ spectra. REFSPECTRA (IRAF version 2.7 and later) takes over part
+ of the functionality of the old DISPCOR task and allows the user to
+ define which arc spectra are to be used in the calculation of the
+ dispersion solution of object spectra. SPECPLOT (IRAF version 2.8)
+ is a new plotting task that allows the compression of many spectra
+ to a page (see IRAF Newsletter No. 6).
+
+o Several new tasks have been added to the PROTO package.
+
+ Four tasks were added to IRAF version 2.6 and later. BSCALE is a
+ task that can be used to linearly scale images by the mean,
+ average, or mode of the image. IRMOSAIC and IRALIGN can be used to
+ combine many frames into one large image. These three tasks are
+ also available in the IMRED.IRRED package. MKHISTOGRAM calculates
+ the histogram of the data in a text file.
+
+ Three new tasks were added to IRAF version 2.7 and later. IMSLICE
+ is a task that slices an image into images of lower dimension.
+ IRMATCH1D and IRMATCH2D are two tasks that allow combining of many
+ overlapping images while matching the background intensities in two
+ different ways.
+
+ Three new tasks have been added to IRAF version 2.8 that allow the
+ user to interact with the image display (for supported display
+ devices, ie Sun workstation, IIS model 70). IMEXAMINE allows the
+ user to interactively examine portions of the displayed image.
+ TVMARK allows the user to mark objects on the image display.
+ IMEDIT allows the user to interactively edit an image.
+
+o The APEXTRACT package in the TWODSPEC package has ungone several
+ rounds of modifications, as discussed in the IRAF Newsletters, No.
+ 3 and 4. These changes included improved techniques and additional
+ options for the extraction of data.
+
+ A new task, APSCATTER, has been added to the package (IRAF version
+ 2.8). This task determines and subtracts scattered light from two
+ dimensional aperture or echelle spectra. The task was also made
+ available from within the ECHELLE package. This task was discussed
+ in IRAF Newsletter No. 6.
+
+
+3.2 Modifications and Additions to Calibration Data
+
+ The calibration data used by some of the tasks in the TWODSPEC,
+ONEDSPEC, and many of the IMRED packages are kept in a directory called
+ONEDSTDS in noao$lib. The current contents of this directory are best
+summarized by paging through its README file, e.g.,
+
+ cl> page noao$lib/onedstds/README
+
+
+Two additional line lists (used by IDENTIFY) have been added to this
+directory (IRAF version 2.8). These lists, vacidhenear.dat and
+vacthorium.dat, are simply the standard .dat files in air wavelengths
+converted to vacuum wavelengths. The equation used for the conversion
+as well as the appropriate reference in the literature are contained in
+the README file.
+
+The thorium.dat file has been updated to contain thorium lines from
+3180 Angstroms to 9540 Angstroms (IRAF version 2.6 and later). Please
+see the README file for the source.
+
+Two new directories have been added containing flux information for
+standard stars (IRAF version 2.6 and later): SPECHAYESCAL and SPEC50CAL.
+Both of these lists are from Massey et al., 1988, Ap. J., Vol. 328, p.
+315.
+
+
+3.3 Glossary of New Tasks in the NOAO Packages
+
+Task Package Description
+
+apscatter(1) apextract Fit and subtract scattered light
+apselect apphot Extract select fields from apphot output files
+asttimes astutil Compute UT, Julian day, epoch, and sidereal time
+badpiximage ccdred Create a bad pixel mask image from a bad pixel file
+bscale(3) proto Brightness scale images: new = (old-bzero) / bscale
+ccdgeometry ccdred Discussion of CCD coordinate/geometry keywords
+ccdgroups ccdred Group CCD images into image lists
+ccdhedit ccdred CCD image header editor
+ccdlist ccdred List CCD processing information
+ccdproc ccdred Process CCD images
+ccdred ccdred CCD image reduction package
+ccdtypes ccdred Description of the CCD image types
+center(3) apphot Compute accurate centers for a list of objects
+centerpars(3) apphot Edit the centering parameters
+combine ccdred Combine CCD images
+cosmicrays(4) ccdred Detect and replace cosmic rays
+daofind apphot Find stars in an image using the DAO algorithm
+darkcombine ccdred Combine and process dark count images
+datapars(3) apphot Edit the data dependent parameters
+demo ccdtest Run a demonstration of the CCD reduction package
+ecbplot echelle Batch plots of echelle spectra
+eccontinuum echelle Fit the continuum of echelle spectra
+ecdispcor echelle Dispersion correct spectra
+ecidentify echelle Identify features in spectrum for dispersion solution
+ecreidentify echelle Automatically reidentify features in spectra
+ecselect echelle Select and extract apertures from echelle spectra
+fitpsf apphot Model the stellar psf with an analytic function
+fitsky apphot Compute sky values in a list of regions
+fitskypars apphot Edit the sky fitting parameters
+flatcombine ccdred Combine and process flat field images
+flatfields ccdred Discussion of CCD flat field calibrations
+guide ccdred Introductory guide to using the CCDRED package
+imedit proto Examine and edit pixels in images
+imexamine proto Examine images using image display, graphics, and text
+imslice proto Slice images into images of lower dimension
+instruments ccdred Instrument specific data files
+iralign(3) proto Align the mosaiced image produced by irmosaic
+irmatch1d(3) proto Align and intensity match image produced by irmosaic
+irmatch2d(3) proto Align and intensity match image produced by irmosaic
+irmosaic(3) proto Mosaic an ordered list of images onto a grid
+mkfringecor ccdred Make fringe correction images from sky images
+mkhistogram proto List or plot the histogram of a data stream
+mkillumcor ccdred Make flat field illumination correction images
+mkillumflat ccdred Make illumination corrected flat fields
+mkimage ccdtest Make or modify an image with simple values
+mkskycor ccdred Make sky illumination correction images
+mkskyflat ccdred Make sky corrected flat field images
+mosproc irred Prepare images for quick look mosaicing
+msdispcor msred Dispersion correct spectra
+msreidentify msred Reidentify features from/to a multispec image
+msselect msred Select and extract apertures from spectra
+observe ccdtest Create an artificial CCD observation
+phot apphot Measure magnitudes for a list of stars
+photpars apphot Edit the photometry parameters
+polymark apphot Create polygon lists for polyphot
+polypars apphot Edit the polyphot parameters
+polyphot apphot Measure magnitudes inside a list of polygonal regions
+qphot apphot Measure quick magnitudes for a list of stars
+radprof apphot Compute the stellar radial profile of a list of stars
+refspectra(5) onedspec Assign wavelength reference spectra to other spectra
+rvcorrect astutil Compute radial velocity corrections
+setairmass(6) astutil Compute effective airmass for an exposure
+setinstrument ccdred Set instrument parameters
+sextract(2) onedspec Extract subspectra from dispersion corrected spectra
+specplot(5) onedspec Stack and plot multiple spectra
+subsection ccdtest Create an artificial subsection CCD observation
+subsets ccdred Description of CCD subsets
+syndico vtel Make dicomed print of daily grams 18 cm across
+tvmark proto Mark objects on the image display
+wphot apphot Measure magnitudes for a list of stars with weighting
+zerocombine ccdred Combine and process zero level images
+
+
+Notes:
+
+(1) Tasks also in echelle and msred packages.
+
+(2) Tasks also in coude, iids, irs, and specphot packages.
+
+(3) Tasks also in irred package.
+
+(4) Tasks also in generic package.
+
+(5) Tasks also in coude, echelle, iids, irs, msred, and specphot
+ packages.
+
+(6) Tasks also in imred and twodspec packages.
+ NEWS (Jul86) Ancient News NEWS (Jul86)
+
+30 July 86 IMIO Modifications
+-------------------------------------------------------------------------------
+
+ The new IMIO interface, used by all IRAF tasks to access bulk image data
+on disk, is now capabable of operating upon both the old IRAF format (OIF)
+images as well as STScI SDAS/GEIS format images. The default image type is
+the OIF format. Any existing OIF format images are readable by the new system
+without change. Although IRAF can read either OIF or STF format images,
+SDAS can read only STF format images, so serious SDAS users should configure
+IRAF to work with STF format images as the default. All other users should
+continue to use the OIF format images as image access is more efficient,
+and the IRAF software has been extensively tested only for OIF format images.
+Users of the OIF format should note that they can read a VMS BACKUP tape
+(or UNIX TAR tape) containing STF format images directly to disk and immediately
+access the images, without changing the default configuration of IRAF.
+
+ The image type is specified by a filename extension; extensions for the
+OIF format images are new in this release of the system. The recognized
+extensions are shown below.
+
+ image type header file extensions
+
+ OIF .imh
+ STF .??h (? stands for any character)
+
+In most cases when operating upon an image with an IRAF task the extension
+can be omitted. The most important exception occurs in image templates.
+THE PATTERN GIVEN IN AN IMAGE TEMPLATE MUST FULLY MATCH THE IMAGE HEADER
+FILE NAMES AS THEY APPEAR IN A DIRECTORY LISTING, i.e., the header filename
+extension must be matched by the image template. The image type extension
+must also be specified to access an image which is not of the default image
+type (OIF or STF), or when changing the type of an image. For example,
+
+ cl> imcopy dev$pix.imh pix.hhh
+
+will make an STF format copy in the current directory of the OIF format image
+"dev$pix".
+
+The default image type is controlled by the new environment variable IMTYPE.
+The string value of IMTYPE is the desired image header file extension, e.g.,
+"imh" (omit the dot) for an OIF format image. If IMTYPE is not defined the
+default image type is "imh". For STF format images there are many possible
+image header extensions, and IMTYPE specifies the default type IMIO should
+look for when the extension is not explicitly given, or the default extension
+to use when a completely new image is to be created. When making a new copy
+of some existing image, IMIO will make a new image of the same type as the
+existing input image unless an extension is given to force some other type
+of image to be created.
+
+ environment variable description
+
+ IMTYPE the default image type (extension)
+ IMDIR pixel storage directory for OIF images
+
+The IMDIR environment variable defines the directory in which the pixel file
+is to be placed when creating a new OIF format image. In V2.2 and older
+versions of IRAF, IMDIR could only be a logical or machine dependent directory
+pathname. The new system also recognizes the special "builtin" logical
+directory name "HDR$" (must be upper case). If the value of IMDIR is "HDR$",
+IMIO will create the pixel file in the SAME directory as the header file,
+rather than in some other directory. It is also possible to place the pixel
+file in some subdirectory of the header directory, e.g., "HDR$pixels/" will
+cause the pixel files to go into the subdirectory "pixels".
+
+ set imdir = "/tmp/user/" # pixel files -> specified directory
+ set imdir = "HDR$" # pixel files -> header file directory
+ set imdir = "HDR$pixels/" # pixel files -> subdirectory of HDR$
+
+The root filename of OIF pixel files is now the same as that of the header
+file, rather than a computer generated name. The filename extension of an
+OIF pixel file is ".pix".
+
+The STF format images support group format, a format very similar to that
+used for group format FITS tapes. IRAF users accessing an STF group format
+image can specify the `group' (subimage) to be accessed by appending a
+subscript to the image name, e.g.,
+
+ cl> imstat pix.aah[3] # access group 3
+or
+ cl> imstat pix.aah[3][*,100] # line 100 of group 3
+
+A new group format image can be created in a similar fashion, specifing the
+number of groups to preallocate space for, e.g.,
+
+ cl> imcopy dev$pix testimage[1/10]
+
+would create a new group format image "testimage" with space for 10 groups
+(subimages), and initialize group 1. The remaining groups would then be
+initialized by specifying only the group subscript "[N]". Note that all
+groups must be the same size, new groups cannot be allocated, old groups
+cannot be deleted, the set of possible group parameters is fixed at creation
+time, and all groups share the same FITS header.
+
+
+15 June 86 System Tasks
+-------------------------------------------------------------------------------
+
+ The DIRECTORY, HELP, and PAGE system tasks have all undergone important
+revisions. The directory task has been completely rewritten and now handles
+directory pathnames, etc., correctly, and in addition it has a more concise
+syntax. The HELP and PAGE tasks have been modified to replace the old "more"
+boolean query mechanism (used to pause between pages of output) with a nicer
+keystroke driven mechanism which offers more options and is faster. Read the
+manual pages for additional details. The old parameter files should be
+unlearned.
+
+
+28 April 86 Package Reorganization
+-------------------------------------------------------------------------------
+
+ The basic package structure of IRAF has been modified to make a distinction
+between the system packages and the NOAO optical astronomy packages. The basic
+directory structure of the system was also changed to reflect the new package
+organization, and the printed documentation will be changed as well when time
+permits. These changes were necessary to better isolate science software such
+as the NOAO and STScI/SDAS packages from the system software, for a more logical
+package structure, and to make it easier to install and maintain the science
+packages.
+
+The new root menu of IRAF is as follows:
+
+ dataio images lists noao sdas system
+ dbms language local plot softools utilities
+
+The NOAO menu is as follows:
+
+ artdata astutil focas mtlocal proto twodspec
+ astrometry digiphot imred onedspec surfphot
+
+Three new packages were added and three old packages were extensively revised.
+The NOAO mountain tape readers were moved from the DATAIO package into the new
+MTLOCAL package. The astronomically oriented utility tasks were moved from
+the UTILITIES package to the new ASTUTIL package. The old LOCAL package was
+renamed PROTO, and a new LOCAL package was added in the directory
+"iraf$local/tasks".
+
+The concept of the new PROTO package is appropriate for what the old LOCAL
+package was used for, i.e., prototype, temporary, or contributed tasks which
+are part of the NOAO package and which are exported with the system, but which
+are expected to eventually disappear or be replaced by planned system
+facilities. The new LOCAL package is a place to put tasks of strictly local
+interest, or tasks which are not portable, e.g., foreign tasks and the Peritek
+package. The LOCAL package should be particularly useful for outside sites
+as it gives them a place to put locally added tasks which will not be affected
+by future updates of the system. Also, the framework (mkpkg, local.cl, etc.)
+is all set up, making it easier for outside sites to add their own software
+without having to figure out how to set up an IRAF package.
+
+
+20 Feb 85 Recovery from Interrupts
+-------------------------------------------------------------------------------
+
+ Tests today (unfortunately only shortly before the first IRAF release)
+have shown that VMS/IRAF has higher failure rate than expected for recovery
+from a ctrl/c interrupt of a running subprocess, especially if the process
+is actively doing i/o. It is probably much safer to interrupt a compute
+bound process than a process which is doing heavy i/o, e.g., reading a tape
+or doing many file opens, or probably large numbers of any type of system
+calls. The failure rate for i/o intensive processes was as high as 1 failure
+to recover in 4 interrupts in some of the cases tested. Testing of UNIX/IRAF
+turned up some of the same problems, but the failure rate was considerably
+lower, probably because the kernel and i/o system are so much simpler.
+
+Interrupting a process at the wrong time can cause many problems, e.g.,
+[1] subprocess memory can be corrupted, resulting in unpredictable behaviour
+and possibly deadlock when the CL later tries to talk the the process,
+[2] a VMS forced exit of the process can occur, e.g., when trying to deliver
+an AST to an invalid address, [3] corruption of the CL/subprocess communications
+protocol can occur, resulting in deadlock or the loss of sync (the output of
+a task will come out when the next command is entered), and various other
+problems as well.
+
+Tests on the old version of VMS/IRAF, which dates back to last fall, show
+that the problem has existed all along. The fact that we did not fully
+appreciate the problem until now indicates that the problem is not a serious
+hindrance provided one is conservative about the use of interrupts. It also
+appears that this will not be an easy problem to solve, hence it is likely
+to be with us for a while. Probably nothing at all will be done about it
+for some months since other projects are likely to have a higher priority
+if this problem is understood and can be worked around.
+
+In summary, try to minimize the use of interrupts, and in particular, avoid
+interrupting processes which are doing heavy i/o. When in doubt, type
+"flpr" after interrupting a process to force it to be restarted. If a
+subprocess becomes hung it may be necessary to restart the CL itself.
+
+
+20 Feb 85 Process connect failure during ":.snap" in cursor mode
+----------------------------------------------------------------------------
+
+ We are still ocasionally having problems when trying to spawn a graphics
+subkernel in response to a ":.snap" command in cursor mode. This happens
+infrequently (which is why it is so hard to find the bug), and will usually
+go away after exiting and reentering cursor mode and trying again. It might
+also help to do a ":.gflush" while in cursor mode.