aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2015-03-05 12:53:09 -0500
committerJoseph Hunkeler <jhunkeler@gmail.com>2015-03-05 12:53:09 -0500
commit832b4b34ff8ce84a13751883c0822c16c152fe48 (patch)
treeedb4d7050c37ade55bc543de80e76e58c4486908 /doc
parent8f848043369b49e861942ce132181fed2c53c2d3 (diff)
downloadcalfuse-832b4b34ff8ce84a13751883c0822c16c152fe48.tar.gz
Massive rework
Diffstat (limited to 'doc')
-rw-r--r--doc/FIXING_SELINUX_ISSUES84
-rw-r--r--doc/INSTALLING_A_FORTRAN_COMPILER259
-rw-r--r--doc/INSTALLING_CalFUSEv3.2.3215
-rw-r--r--doc/INTRO_TO_CalFUSEv3.2.3385
-rw-r--r--doc/Makefile.am6
-rw-r--r--doc/Makefile.in504
-rw-r--r--doc/pipeline_status.html3515
7 files changed, 4968 insertions, 0 deletions
diff --git a/doc/FIXING_SELINUX_ISSUES b/doc/FIXING_SELINUX_ISSUES
new file mode 100644
index 0000000..548077b
--- /dev/null
+++ b/doc/FIXING_SELINUX_ISSUES
@@ -0,0 +1,84 @@
+
+-------------------------------------------------------------------------------
+ Fixing issues due to SELinux
+-------------------------------------------------------------------------------
+
+While installing CalFUSE 3.2.0 on Scientific Linux V 5.0 the following
+SELinux issues came up. SELinux points to these web pages for a more
+detailed explanation of the issues:
+http://people.redhat.com/drepper/selinux-mem.html and
+http://people.redhat.com/drepper/textrelocs.html
+
+A suggestion from the http://people.redhat.com/drepper/textrelocs.html
+web page is to compile the c libraries with -fpic or -fPIC.
+
+The first SELinux issue maybe related to this being a new install of Scientific Linux and
+not truly related to CalFUSE.
+
+
+Summary
+-------
+
+SELinux is preventing access to files with the label, file_t.
+
+Detailed Description
+
+SELinux permission checks on files labeled file_t are being
+denied. file_t is the context the SELinux kernel gives to files that do not have a label.
+This indicates a serious labeling problem. No files on an SELinux box should ever be
+labeled file_t. If you have just
+added a new disk drive to the system you can relabel it using the restorecon command.
+Otherwise you should relabel the entire files system.
+
+Allowing Access
+
+You can execute the following command as root to relabel your computer
+system:
+
+touch /.autorelabel; reboot
+
+Note that this will reboot your computer system.
+
+
+Summary
+-------
+
+SELinux is preventing /calfuse/v3.2/bin/cf_hist_init from loading
+/calfuse/v3.2/lib/libcf.so,
+/calfuse/v3.2/lib/libsla.so, and
+/calfuse/v3.2/lib/libcfitsio-2.470.so
+which require text relocation.
+
+
+Detailed Description
+
+The /calfuse/v3.2/bin/cf_hist_init application attempted to load
+/calfuse/v3.2/lib/libcf.so,
+/calfuse/v3.2/lib/libsla.so, and
+/calfuse/v3.2/lib/libcfitsio-2.470.so
+which require text relocation. This is a potential security problem. Most libraries do
+not need this permission. Libraries are sometimes coded incorrectly and request this
+permission. The SELinux Memory Protection Tests web page explains how to remove this
+requirement. You can configure SELinux temporarily to allow
+/calfuse/v3.2/lib/libcf.so,
+/calfuse/v3.2/lib/libsla.so, and
+/calfuse/v3.2/lib/libcfitsio-2.470.so
+to use relocation as a workaround, until the libraries are fixed.
+Please file a bug report against this package.
+
+Allowing Access
+
+If you trust
+/calfuse/v3.2/lib/libcf.so,
+/calfuse/v3.2/lib/libsla.so, and
+/calfuse/v3.2/lib/libcfitsio-2.470.so
+to run correctly, you can change the file context to textrel_shlib_t.
+
+The following commands will allow this access:
+
+chcon -t textrel_shlib_t /calfuse/v3.2/lib/libcf.so
+chcon -t textrel_shlib_t /calfuse/v3.2/lib/libsla.so
+chcon -t textrel_shlib_t /calfuse/v3.2/lib/libcfitsio-2.470.so
+
+
+- Michael E. Van Steenberg
diff --git a/doc/INSTALLING_A_FORTRAN_COMPILER b/doc/INSTALLING_A_FORTRAN_COMPILER
new file mode 100644
index 0000000..9af64ff
--- /dev/null
+++ b/doc/INSTALLING_A_FORTRAN_COMPILER
@@ -0,0 +1,259 @@
+
+-------------------------------------------------------------------------------
+ INSTALLING A FORTRAN COMPILER
+-------------------------------------------------------------------------------
+
+Please note that these are solutions that we tried and therefore recommend,
+especially since they worked on every machine we tried, but there might be other
+solutions if none of this works for you. Just google fortran and your machine
+specs and you should find some ideas.
+
+
+FORTRAN for Solaris:
+--------------------
+
+ CalFUSE has been compiled and tested on Solaris with the Fortran
+ compilers provided by SUN (f77 and f90) and GNU (g77 and gfortran).
+ Both are available for free, so even if you already have another fortran
+ compiler, you should get one of these. Other Fortran compilers may
+ work, but we cannot guarantee your results.
+
+ -> We recommend that you first try the Sun Studio Compilers from Sun's
+ development website:
+ http://developers.sun.com/sunstudio/downloads/index.jsp
+ CalFUSE compiles properly with version 12.
+
+ -> An old version of Fortran may already exist on your machine. Look for
+ the old 'libF77.so' and 'libM77.so' libraries in one of these
+ directories: '/usr/4lib' and '/opt/SUNWspro/lib/'. They would probably
+ have a name with a version number at the end. If so, you can try to
+ create symbolic links to these two (with the command 'ln -s <library>
+ <link>') using their exact names 'libF77.so' and 'libM77.so'. Then add
+ to your LD_LIBRARY_PATH environment variable the directory in which you
+ created the two links. Also add '/opt/SUNWspro/bin/' to your PATH and
+ try again to run the CalFUSE configure routine.
+
+ -> Otherwise, you can try to install 'g77' from the GNU compilers by
+ installing the package 'gcc-3.4.6'. (We were unable to make 'gfortran'
+ from GCC version 4 and higher work on Solaris.) You will need root
+ access to do so.
+
+ First type the command 'iconv' in your shell. If it returns "command
+ not found", then you must first install the package libiconv as well.
+
+ You can retrieve packages for various versions of Solaris (7 to 10) and
+ different CPU architectures (Sparc or Intel) from this website (select
+ the appropriate system/CPU combination in the menu on the right side):
+ http://www.sunfreeware.com
+
+ If the web page download fails, you can access the packages by ftp
+ ( where <CPU> = sparc or intel and <V> = 7, 8, 9 or 10 ):
+ ftp ftp.sunfreeware.com
+ login: anonymous
+ password: <your_email_address>
+ binary
+ cd pub/freeware/<CPU>/<V>/
+ get gcc-3.4.6-sol<V>-<CPU>-local.gz
+ get libiconv-1.11-sol<V>-<CPU>-local.gz (if iconv is missing)
+ bye
+
+ When you have the necessary packages, first add '/usr/local/bin' to your
+ PATH environment variable and '/usr/local/man' to your MANPATH. Then
+ unzip the packages with 'gunzip' and, as root, type the following
+ commands:
+ > pkgadd -d libiconv-1.9.2-sol<V>-<CPU>-local (if iconv is missing)
+ > pkgadd -d gcc-3.4.6-sol<V>-<CPU>-local
+
+ -> You can also try to recompile the GCC compilers yourself from the source
+ available on the GNU website:
+ http://ftp.gnu.org/gnu/gcc/
+ But this is a very long (it took us 10 hours) and complicated process,
+ and we recommend that you install the package as described above.
+
+ If you really have to compile the code by hand, for example because
+ you cannot get root permission, follow these instructions:
+ - Choose the latest 3.x.x version available. (We were unable to
+ install fortran version 4.x.x because the necessary libraries were
+ missing.)
+ - Create three directories, none of them a subdirectory of another:
+ srcdir - to contain the source archive
+ bindir - where the binaries will be installed
+ insdir - from which you will do the install
+ For example, I had respectively '/home/ooghe/gcc/src/',
+ '/home/ooghe/gcc/bin/' and '/home/ooghe/gcc/install/'.
+ - Unzip and untar the downloaded archive in 'srcdir'
+ - Echo your 'PATH' environment variable and remove '/usr/ucb/bin'
+ from it if it is present. Add '/usr/sfw/bin' if it is not.
+ For example:
+ > export PATH=/usr/bin:/etc:/usr/sbin:/usr/sfw/bin:/usr/ccs/bin:.
+ - Do the following:
+ > export CONFIG_SHELL=/bin/ksh
+ - Go to 'insdir' and do the following:
+ > 'srcdir'/configure --prefix='bindir' --enable-languages=c,fortran
+ where 'srcdir' and 'gccdir' should be complete path directories, e.g.,
+ '/home/username/gcc/src' and '/home/username/gcc/bin'
+ - Bootstrap and finally install the compiler:
+ > gmake bootstrap
+ > gmake install
+ - Add 'bindir'/bin to your PATH environment variable, and
+ 'bindir'/lib to your LD_LIBRARY_PATH one.
+
+
+===============================================================================
+
+FORTRAN for Linux:
+------------------
+
+ CalFUSE has been compiled and tested on Linux with the Fortran compilers
+ provided by GNU (g77 and gfortran). They are available for free, so
+ even if you already have another fortran compiler, you should get one of
+ these. You can try to make CalFUSE work with another compiler, but we
+ cannot guarantee your results.
+
+ Most Linux distributions include one of the GNU Fortran compilers, but
+ if it is not on yours, you should first try to get a binary for your
+ machine.
+
+ -> If your Linux is based on a distribution like Debian, Fedora or SUSE,
+ look for a binary on this web page:
+ http://gcc.gnu.org/wiki/GFortranDistros
+
+ -> Otherwise, you can try to install the latest binary from this web page,
+ but we do not recommend it because the latest compilers may still contain
+ some bugs:
+ http://gcc.gnu.org/wiki/GFortranBinaries
+
+ -> If you do not have any other solution, you should recompile GCC from the
+ source by following the instructions available on
+ http://gcc.gnu.org/wiki/GFortranBinaries
+
+
+===============================================================================
+
+FORTRAN for MAC OS X:
+---------------------
+
+
+ CalFUSE has been compiled and tested on MAC OS X with the Fortran
+ compilers provided by GNU (g77 and gfortran). They are available for
+ free, so even if you already have another Fortran compiler (like ifort
+ from Intel or f77 from ABSoft), you should get one of these. You can
+ try to make CalFUSE work with another compiler, but we cannot guarantee
+ your results.
+
+ There are many ways to install the GNU compilers on a MAC;
+ here are some suggestions:
+
+ -> For Mac OS X 10.4 (Tiger) or higher, we know that the installation
+ provided on this web page works well:
+ http://www.macresearch.org/xcode_gfortran_contest_winner_damien_bobillot
+ Just download the gfortran compiler corresponding to your CPU
+ architecture (Intel or PowerPC) and follow the "gfortran compiler
+ instructions".
+
+ If this web page is down, you can get the same archives from the
+ CalFUSE FTP site:
+
+ ftp fuse.pha.jhu.edu
+ login: anonymous
+ password: <your_email_address>
+
+ cd fuseftp/calfuse
+ binary
+ (PPC) get macos-gfortran-intel-bin.tar.gz
+ (Intel) get macos-gfortran-ppc-bin.tar.gz
+ bye
+
+ When you have the appropriate package, install the compiler
+ using the following command:
+ (PPC) sudo tar -zxvf macos-gfortran-ppc-bin.tar.gz -C /
+ (Intel) sudo tar -zxvf macos-gfortran-intel-bin.tar.gz -C /
+
+ Note: It is possible that /usr/local/bin is not in your default
+ PATH environment variable. If the command 'gfortran' does not work,
+ then, assuming you're using the default bash shell, type
+ (or include in /etc/profile):
+ > export PATH=/usr/local/bin:$PATH
+
+ -> Otherwise, you can try to find more recent versions of these
+ packages on these different websites, but we don't recommend them
+ because they usually still have a few development bugs:
+ http://hpc.sourceforge.net/
+ http://www.macresearch.org/xcode_gfortran_plugin_update
+ http://gcc.gnu.org/wiki/GFortranBinariesMacOS
+
+ -> You can also try to install yourself a version of gfortran or
+ g77 from one of GCC releases at this address:
+ http://ftp.gnu.org/gnu/gcc/
+ This might be the only solution if you are using Mac OS X 10.3
+ or lower.
+ In this specific case, we recommend that you try first to install
+ 'g77' from 'gcc-3.3.3', following Jeff's instructions as follows:
+
+-------------------------------------------------------------------------------
+Jeff Kruk
+31 May 2004
+
+Hi All-
+
+I have successfully installed GNU fortran on my Mac laptop.
+It is not part of the Apple Developer tools (at least not anymore),
+so you have to get it directly from GNU. The instructions from GNU
+state that you need the whole source tree to compile the compilers,
+so you have to ignore the portions of the GCC package that are provided
+by Apple with their developers toolkit.
+
+After reading through lots of instructions, I concluded that all the
+default options were just fine. So, here is a boiled-down set of
+instructions.
+
+You will need 3 different directories:
+srcdir: where you put all the files from GNU
+objdir: where you do the build
+installdir: this defaults to /usr/local, which is what I used.
+(You may have to do this as root to put things in /usr/local)
+
+The one complication is that GNU "strongly recommends" that none of
+these directories be subdirectories of one another.
+So I put the downloaded files in /Users/kruk/Desktop/gcc-3.3.3
+and I did the build in /Users/kruk/gcc/bin.
+
+Here's the sequence of commands needed:
+
+1) Use your browser to go to
+http://ftp.gnu.org/gnu/gcc/releases/gcc-3.3.3
+click on gcc-3.3.3.tar.gz
+unpack this in 'srcdir' (in my case this was ~/Desktop/gcc-3.3.3)
+
+2) Make the directory where you will do the build. In my case this was:
+> cd ~
+> mkdir gcc
+> mkdir bin
+> cd gcc/bin
+
+3) Configure all the files:
+> ~/Desktop/gcc-3.3.3/configure
+
+4) Make the compilers:
+> gnumake bootstrap
+(I think the default 'make' is the same as gnumake, but I wasn't taking
+any chances)
+When this completes, there are no files in /usr/local yet!
+
+5) Do the actual install:
+> gnumake install
+
+[This can take a long time -- up to 90 minutes. - Ed.]
+
+That's it!
+
+Note: If you are using an Intel-based Mac, also follow these instructions
+ from Vincent Hénault-Brunet: "I recently compiled CalFUSE on my Mac
+ Intel laptop. The problem had to do with g77. I didn't know, but g77
+ doesn't work on Mac Intel. It will compile but doesn't work properly.
+ I had to patch the power-pcc version of g77 (patch found at
+ http://www1.gly.bris.ac.uk/~wookey/MEFTLG/g77.htm ), and CalFUSE
+ compiled without any problem."
+
+
+- Van Dixon, Bernard Godard, Jeff Kruk and Benjamin Ooghe-Tabanou
diff --git a/doc/INSTALLING_CalFUSEv3.2.3 b/doc/INSTALLING_CalFUSEv3.2.3
new file mode 100644
index 0000000..9579254
--- /dev/null
+++ b/doc/INSTALLING_CalFUSEv3.2.3
@@ -0,0 +1,215 @@
+#
+# Note: Before downloading CalFUSE, please send a blank e-mail to
+# fuse_support@pha.jhu.edu with the subject line "GOT CALFUSE".
+# We'll save your address and send you information about future
+# software updates or bug reports. Thanks!
+#
+
+-------------------------------------------------------------------------------
+ INSTALLING CalFUSE v3.2.3
+-------------------------------------------------------------------------------
+
+These instructions cover Solaris, Linux, Linux 64, and Mac OS X
+installations.
+
+You will need at least 1.6 GB of disk space to install the pipeline and
+its associated calibration files.
+
+The software is in the tar file cfv3.2.3.sw.tar.gz
+
+The calibration files are divided among three tar files:
+
+cfv3.2.3.cala.tar.gz <-- Cal files that start with letter a
+cfv3.2.3.calg.tar.gz <-- Cal files that start with letter g
+cfv3.2.3.calz.tar.gz <-- All other cal files
+
+
+A. DOWNLOADING THE CALFUSE SOFTWARE AND ASSOCIATED CALIBRATION FILES:
+---------------------------------------------------------------------
+
+ Obtain the compressed tar files:
+
+ prompt> ftp fuse.pha.jhu.edu
+ login: anonymous
+ password: <your_email_address>
+
+ cd fuseftp/calfuse
+ binary
+ get cfv3.2.3.sw.tar.gz
+ get cfv3.2.3.cala.tar.gz
+ get cfv3.2.3.calg.tar.gz
+ get cfv3.2.3.calz.tar.gz
+ bye
+
+ Uncompress and extract all tarfiles in your calfuse directory.
+
+
+B. INSTALLATION INSTRUCTIONS:
+-----------------------------
+
+0) Note for all systems:
+
+ You need to type "make -e install" only once, not in each
+ subdirectory.
+
+
+1) SOLARIS
+
+ First check whether '/opt/SUNWspro/lib' is in your
+ 'LD_LIBRARY_PATH' environment variable. If it is not, be
+ sure to add it.
+
+ In [calfuse_directory]/v3.2/src, type:
+
+ make distclean
+ chmod +x configure.solaris
+ ./configure.solaris
+ make clean
+ make -e install
+
+ The Solaris operating system should come with a Fortran
+ compiler; however, if the configure routine returns an error
+ message about Fortran, it is probably missing, and you will
+ have to install it. To do so, follow the instructions for
+ Solaris in the file INSTALLING_A_FORTRAN_COMPILER.
+
+
+2) LINUX and LINUX 64
+
+ If you are running Linux on a 64-bit machine, you must also
+ install a 64-bit version of the CFITSIO library. You
+ can skip this step if your machine is running in 32-bit
+ mode. The operation may require root access to your system,
+ so you may have to ask for help from your system manager.
+ First use your 'Applications/Add-Remove Software'
+ tool to see whether CFITSIO is available by default on
+ your system (as it is for Scientific Linux version 5.0).
+ If so, install it; if not, you can download the release
+ corresponding to your operating system from the Internet.
+ Search for 'cfitsio' on the web page http://rpm.pbone.net/.
+ If this page is not available, search the FITSIO webpage
+ (http://heasarc.gsfc.nasa.gov/docs/software/fitsio/fitsio.html)
+ for RPM format distributions.
+
+ Once the necessary libraries are installed, move to the
+ directory [calfuse_directory]/v3.2/src and type
+
+ make distclean
+ chmod +x configure.linux or chmod +x configure.linux64
+ ./configure.linux or ./configure.linux64
+ make clean
+ make -e install
+
+ Notes:
+
+ a) GCC should come with a Fortran compiler; however, if the
+ configure routine returns an error message about Fortran,
+ it is probably missing, and you will have to install it.
+ To do so, follow the instructions for Linux in the file
+ INSTALLING_A_FORTRAN_COMPILER.
+
+ b) If the compilation fails with an error such as:
+ "undefined reference to '_gfortran_pow_i4_i4'" or similar,
+ it probably means you have both g77 and gfortran installed.
+ In this case we recommand that you try to remove the gfortran
+ package from your Linux distribution (using synaptic, apt-get
+ or aptitude, for example).
+
+ c) Linux64 users: If you installed cfitsio in a directory
+ other than the usual '/usr/include/cfitsio', determine the
+ path you used, for example '/usr/local/cfitsio64' and, in
+ [calfuse_directory]/v3.2/src, type the following commands,
+ where <new_path> is the path identified above:
+
+ cp configure.linux64 configure.linux64.sv
+ sed -e "s#/usr/include/cfitsio#<new_path>#g#" \
+ configure.linux64.sv > configure.linux64.sv2
+ sed -e "s/#cfit/ /g" \
+ configure.linux64.sv2 > configure.linux64
+
+ Then restart the installation procedure.
+
+ d) If you encounter trouble with SELinux while installing
+ CalFUSE, you should read the informations from Michael Van
+ Steenberg in the file FIXING_SELINUX_ISSUES.
+
+
+3) MAC OS X
+
+ In [calfuse_directory]/v3.2/src type
+
+ make distclean
+ chmod +x configure.macosx
+ ./configure.macosx
+ make clean
+ make -e install
+
+ Notes:
+
+ a) CalFUSE requires Mac OS X 10.2 or higher.
+
+ b) CalFUSE uses both the C and Fortran compilers. If you
+ are running OS X 10.3 or above, you probably have a C
+ compiler. If not, retrieve the Xcode suite of developer
+ tools from the Apple Developer Connection website
+ (developer.apple.com). To obtain the Fortran compiler,
+ follow the instructions for MacOS in the file
+ INSTALLING_A_FORTRAN_COMPILER.
+
+ c) If the linker complains about missing library routines,
+ you may need to modify the definition of LIBS in the various
+ Makefiles. For example, you may need to replace "-L/usr/local/lib"
+ with "-L/sw/lib".
+
+ d) For best results, run CalFUSE in an X11 window; otherwise,
+ your trailer files will be full of warning messages from IDL.
+
+ e) FYI: the environment variable called 'LD_LIBRARY_PATH'
+ on other systems is called 'DYLD_LIBRARY_PATH' by Mac OS.
+
+
+C. SETTING THE ENVIRONMENT VARIABLES:
+-------------------------------------
+
+ The directory '[calfuse_directory]/v3.2/bin' contains the
+ scripts 'cfsetup.sh' and 'cfsetup.csh', which define the
+ environment variables needed by CalFUSE. You will run one
+ of these two depending on the shell you are using.
+
+ Usually, if you are on a Solaris machine or on a Mac running
+ OS X 10.2, you will use the '.csh' script. On Linux and
+ more recent versions of MAC OS X, you should probably use
+ the '.sh' script. If one gives you an error message, try
+ the other.
+
+ The scripts assume that you have installed the pipeline in
+ your home directory. If you have installed it elsewhere,
+ you must edit the script, changing the root CalFUSE directory
+ ('CF_DIR') defined at the beginning.
+
+ If you are using the '.csh' script, do the following:
+ source cfsetup.csh
+ rehash
+ If you are using the '.sh' script, do the following:
+ source cfsetup.sh
+ hash -r
+
+ You can also insert the whole script into your '.login'
+ file, in which case the environment variables will be set
+ each time you log in.
+
+
+D. RUNNING THE PIPELINE:
+------------------------
+
+ To run the pipeline on either timetag or histogram
+ data, just type 'calfuse' followed by the name of the raw
+ data file. For example:
+
+ calfuse P99901010011attagfraw.fit
+ calfuse P99901010011ahistfraw.fit
+
+
+Address questions or concerns to fuse_support@pha.jhu.edu.
+
+- Van Dixon, Bernard Godard, and Benjamin Ooghe-Tabanou
diff --git a/doc/INTRO_TO_CalFUSEv3.2.3 b/doc/INTRO_TO_CalFUSEv3.2.3
new file mode 100644
index 0000000..0408121
--- /dev/null
+++ b/doc/INTRO_TO_CalFUSEv3.2.3
@@ -0,0 +1,385 @@
+# Documentation for CalFUSE, the FUSE Calibration Pipeline
+#
+# Introduction to CalFUSE v3.2
+#
+# Created 02/03/2004
+# Van Dixon
+#
+# History:
+# 03/05/2004 Update for v3.0.5.
+# Change name of POTHOLE column to QUALITY.
+# 04/01/2004 Update for v3.0.6.
+# Pipeline now runs on Linux and works on HIST data.
+# Default output binning reduced to 0.013 A.
+# 05/05/2004 Update for v3.0.7.
+# Fixed bug in initial spectral-centroiding routine.
+# Extraction routine now uses the same algorithm to
+# compute the spectral, weights, and bkgd arrays.
+# Modified boxcar extraction to improve background
+# estimate.
+# 08/20/2004 Update for v3.0.7 release.
+# Pipeline now runs on Mac OS X 10.2 and higher.
+# Screening now preceeds aperture centroiding.
+# Raised minimum pulse height to 2 for all segments.
+# 01/21/2005 Add a note about reading the new extracted
+# spectral files into IDL.
+# 04/19/2005 Update for v3.1.0 release.
+# 06/06/2005 Update for v3.1.1 release.
+# 06/10/2005 Clarify discussion of spectral file format.
+# 06/15/2005 Update for v3.1.2 release.
+# 06/24/2005 Add instructions for generating new jitter files.
+# 07/12/2005 Modify instructions for generating new jitter files.
+# 07/21/2005 Add information about post-processing tools.
+# 09/07/2005 Update for v3.1.3 release.
+# 12/02/2005 Update for v3.1.5 release.
+# 12/03/2005 New changes to cf_mirror_motion and cf_grating_motion
+# 01/24/2006 Update for v3.1.6 release.
+# 02/02/2006 Update for v3.1.7.
+# 05/24/2006 Update for v3.1.8.
+# 11/08/2006 Update for v3.2.0.
+# 01/15/2007 Move FIFO-overflow correction to cf_convert_to_farf.
+# 08/24/2007 Update for v3.2.1.
+# 02/15/2008 Update for v3.2.2.
+# 12/05/2008 Update for v3.2.3.
+#
+
+
+I. Introduction
+
+ CalFUSE v3.2.3 is the latest version of the FUSE data-reduction
+ pipeline. This package includes a new set of calibration files and
+ support for Linux 64-bit and Solaris 10 machines.
+
+ For complete details about the program, see the paper,
+ "CalFUSE v3: A Data-Reduction Pipeline for the Far Ultraviolet
+ Spectroscopic Explorer" by Dixon et al. (2007)
+ (http://adsabs.harvard.edu/abs/2007PASP..119..527D). It describes
+ the CalFUSE pipeline, the instrument calibrations upon which it is
+ based, and the format of the resulting calibrated data files.
+
+
+II. Recent Improvements
+
+ New in CalFUSE v3.1.5
+
+ Bad-Pixel Correction: A new routine, cf_screen_bad_pixels, flags
+ photon events falling in known bad-pixel regions.
+
+ Histogram Mode: For data obtained in HIST mode,
+ cf_count_rate_y_distort must use a single count-rate value for
+ the entire exposure. To better estimate it, we replace the
+ time-dependent FEC-rate array with its weighted mean value.
+ Rather than using different HIST_PAD values for each aperture,
+ cf_extraction_limits now pads apertures by 8 pixels (top and
+ bottom).
+
+ Jitter Correction: To improve the jitter-correction algorithm, we
+ removed the data-screening functions from cf_satellite_jitter and
+ moved them to a new routine, cf_screen_jitter.
+
+ New in CalFUSE v3.1.6
+
+ Burst Correction: Because cf_screen_bursts attempts to exclude
+ airglow photons from the calculated background, these photons must
+ be flagged before the routine is called. To this end,
+ cf_screen_airglow is now the first of the screening routines.
+
+ Background Models: The model background consists of a
+ spatially-uniform component and a scattered-light image. As a
+ result of changes introduced in CalFUSE v3.1.3, the scattered-light
+ component was over-estimated, because the data were summed over a
+ larger region of the detector than the scattered-light image. Now,
+ the same limits are applied to both data and models.
+
+ New in CalFUSE v3.1.7
+
+ Spectral Centroids: We tightened the limits over which
+ cf_find_spectra computes the spectral centroid to prevent a bright
+ star in a nearby aperture or the enhanced background near the
+ detector edge from pulling the extraction window off center. In
+ both cf_compute_y_centroid and cf_find_spectra, we returned the
+ parameter-file keywords EMAX_LIF and EMAX_SIC to their original
+ behavior: if the centroid differs from the default value by more
+ than this limit, the default value is used.
+
+ New in CalFUSE v3.1.8
+
+ Astigmatism and Dispersion: The routine
+ cf_astigmatism_and_dispersion was divided into two programs,
+ cf_astigmatism and cf_dispersion.
+
+ Fewer Warnings: The pipeline no longer issues WARNING messages
+ when a raw or intermediate data file is empty, when the jitter file
+ is missing, when the detector voltage is low, or when it cannot
+ perform optimal extraction.
+
+ Fewer Bad Spectra: The program cf_extract_spectra no longer
+ discards (that is, sets to zero the flux and error arrays of)
+ spectra with non-zero values of EXP_STAT.
+
+ New in CalFUSE v3.2.0
+
+ Time-Dependent X and Y Distortions: It turns out that the X and Y
+ coordinates computed by the detector electronics for a particular
+ spectral feature drift slowly with time. The new routine
+ cf_time_xy_distort corrects for this effect.
+
+ Grating Motion: The grating-motion correction has been revised to
+ better correct the zero point of the wavelength scale.
+
+ Jitter Files: Over the years, FUSE engineers have repeatedly
+ modified the spacecraft-control software, but the routine that
+ generates jitter files has not been kept up to date. As a result,
+ the program was not using all available information to determine
+ the quality and value of pointing errors. We have modified the
+ code to make use of this information. As a result, the meaning of
+ the jitter-file TRKFLG array has changed: values between 1 and 5
+ reflect increasing levels of confidence in the quality of reported
+ pointing errors, a value of 0 indicates that pointing telemetry is
+ missing, and a value of -1 says that the pointing is unknown but
+ likely to be bad. Jitter files generated with the new routine
+ receive a version number >= 3.0. The use of old jitter files with
+ the new software is likely to yield unsatisfactory results. If you
+ have the housekeeping files, you can generate jitter files that are
+ consistent with the new pipeline. To do it, delete (or hide) the
+ old jitter files, then type
+
+ prompt> cf_jitter P9990101001hskpf.fit P9990101001jitrf.fit
+
+ for each exposure. Run the pipeline as usual.
+
+ Jitter Correction: The jitter routines cf_screen_jitter and
+ cf_satellite_jitter have been updated to take advantage of the
+ information present in the new jitter files, and three new keywords
+ have been added to the parameter file. Times for which the X or Y
+ pointing errors are greater than DX_MAX or DY_MAX (default is 30")
+ are flagged as bad. Only pointing errors with associated tracking
+ flag values >= TRKFLG (default is 3) are considered reliable.
+
+ FIFO Overflow: Before, the screening routines flagged times when
+ the detector count rate went to zero because of FIFO overflows.
+ This technique underestimated the actual target flux. Now, we
+ modify the IDS dead-time correction to account for photon losses
+ due to FIFO overflows.
+
+ New in CalFUSE v3.2.1
+
+ Jitter Correction: We have modified the program cf_jitter, which
+ constructs jitter files, to be more robust when presented with
+ weird pointing data.
+
+ SAA Contours: The size of the South Atlantic Anomaly varies on
+ timescales of weeks. If you find that the default contours (in the
+ file saac004.fit) are too small, causing times with elevated
+ background rates to be flagged as good, you can switch to the
+ smaller set of contours in the file saac005.fit by modifying the
+ file master_calib_file.dat.
+
+ New in CalFUSE v3.2.2
+
+ New Platforms: CalFUSE now runs on 64-bit machines running Linux
+ and Sun workstations running Solaris v10. See the file
+ INSTALLING_CalFUSEv3.2.2 for installation details.
+
+ We have used data from the last few months of the mission to
+ produce final versions of the PHAH_CAL, STIM_CAL, and PHAX_CAL
+ files.
+
+ New in CalFUSE v3.2.3
+
+ The final version of the pipeline includes updates needed for the
+ final processing of the FUSE archive. First, airglow exposures get
+ special treatment: data taken close to the earth limb are flagged
+ but not rejected. Airglow exposures are ignored by cf_combine and
+ idf_combine unless the -a flag is set. Second, the usual limits on
+ the spectral centroids are not applied to HIST data, because
+ spectra from other apertures are not present to confuse the
+ centroiding algorithm.
+
+
+III. Overview of Pipeline
+
+ The following modules are called by the shell script calfuse.csh:
+
+ cf_ttag_init, cf_hist_init
+ Converts raw-data file into an IDF containing photon-event
+ list, GTI's, and timeline table. Histogram data are converted
+ to a pseudo-time-tag format.
+
+ cf_convert_to_farf
+ Corrects for detector deadtime. Transforms photon coordinates
+ into the FARF (flight alignment reference frame).
+
+ cf_screen_photons
+ Checks data quality. Assigns status flag to each photon.
+
+ cf_remove_motions
+ Corrects for mirror, grating, FPA, and spacecraft motions.
+
+ cf_assign_wavelength
+ Applies astigmatism and Doppler corrections.
+ Assigns wavelength to each photon.
+
+ cf_flux_calibrate
+ Converts WEIGHT to ERG/CM2 for each photon.
+
+ cf_bad_pixels
+ Applies image-motion corrections to bad-pixel map.
+
+ cf_extract_spectra
+ Extracts LiF and SiC spectra only for target aperture.
+ Wavelength array is user defined; default spacing is 0.013 A.
+
+
+IV. Installing and Running the Pipeline
+
+ CalFUSE is now available for Macs running OS X 10.2 and higher,
+ 64-bit Linux machines, and Sun workstations running Solaris 10.
+
+ Please see the document INSTALLING_CalFUSEv3.2.2 for instructions.
+
+ For both TTAG and HIST data, the command is
+
+ prompt> calfuse P99901010011attagfraw.fit
+ prompt> calfuse P99901010011ahistfraw.fit
+
+ The pipeline expects to find all data files (*raw.fit, *jitrf.fit,
+ *hskpf.fit) in the current directory. It operates on one detector
+ segment at a time.
+
+ CalFUSE v3 produces the following output files: an intermediate
+ data file (IDF), discussed below; a bad-pixel map (BPM), with a
+ format similar to the IDF; two extracted spectral files, one for
+ each of the LiF and SiC channels; and (if IDL is installed on your
+ machine) a pair of GIF or JPEG files, one an image of the detector
+ and the other a count-rate plot.
+
+
+V. The Intermediate Data File (IDF)
+
+ The photon-list files consist of three FITS binary tables. The
+ first contains the photon events themselves. The pipeline does not
+ discard any events, but uses a series of flags to indicate whether
+ particular photons violate pulse-height limits, limb-angle
+ constraints, etc. The IDL tool cf_edit (discussed below) allows
+ users to modify these flags and combine IDF files from multiple
+ exposures.
+
+ The second extension to the data files is a list of good-time
+ intervals (GTI's). They are not used by the extraction routine,
+ but may prove helpful to pipeline users.
+
+ The third extension is called a timeline table. For each second
+ during the exposure, it lists a dozen parameters, including count
+ rate, day-night status, and detector voltage. The pipeline uses
+ this list to set the status flags for each photon.
+
+ Note: because of the new file format employed by IDF files,
+ extensions 1 and 3 must be read using the /fscale keyword.
+
+ idl> a=mrdfits('P99901010011attagfidf.fit',1,/fscale)
+ idl> help,a,/str
+
+ Elements of individual arrays must be addressed using the syntax
+
+ idl> print,a.time[3:30] -- not a[3:30].time
+
+ For details about the format of the IDF, please see the document
+
+ [calfuse_directory]/v3.1/src/README_FILES/IDF_Format.txt
+
+
+VI. Manipulating the IDF with cf_edit
+
+ CF_EDIT is an Interactive Data Language (IDL) visualization tool
+ for the examination and modification of FUSE IDF files containing
+ flux- and wavelength-calibrated photon-event lists. Users without
+ IDL licenses may use the IDL "Virtual Machine" version of the
+ tool for free. Complete instructions for installing and using
+ cf_edit are available at this URL:
+
+ http://fuse.pha.jhu.edu/analysis/fuse_idl_tools.html
+
+ More information on the IDL Virtual Machine is available here:
+
+ http://www.rsinc.com/idlvm/index.asp
+
+
+VII. The Output Spectral File
+
+ The format of the output spectral files is somewhat changed from
+ earlier versions of CalFUSE.
+
+ float WAVE Wavelength (Angstroms)
+ float FLUX Flux (erg/cm2/s/A)
+ float ERROR Gaussian errors (erg/cm2/s/A)
+ int COUNTS Raw counts in extraction window
+ float WEIGHTS Raw counts corrected for deadtime, etc.
+ float BKGD Estimated background in extraction window
+ short QUALITY Percentage of window used for extraction
+
+ Note that the QUALITY array no longer lists the number of Y pixels
+ that contribute to each output X pixel. Instead, it is the fraction
+ of the extraction window considered to contain valid data, expressed
+ as a percentage (0 is all bad; 100 is all good).
+
+ Do-it-yourself-ers can use the following recipe to generate a
+ flux-calibrated spectrum:
+
+ TARGET_COUNTS = WEIGHTS - BKGD
+ TARGET_FLUX = TARGET_COUNTS * HC / LAMBDA / AEFF / EXPTIME / WPC
+
+ where AEFF = effective area in cm^2 and WPC = size of output pixel in
+ Angstroms.
+
+VIII. Additional Files Available from MAST
+
+ CalFUSE produces eight extracted spectral (*fcal.fit) files for
+ each exposure. We combine them into a set of three
+ observation-level files for submission to the MAST archive.
+ Depending on the target and the questions that you are trying to
+ answer, you may find that these files are of sufficient fidelity
+ for scientific investigation. Here's a brief description of their
+ contents:
+
+ ALL: For each channel (LiF 1A, SiC 1A, etc.), we combine data from
+ all exposures in the observation into a single spectrum. If the
+ individual spectra are bright enough, we cross correlate and shift
+ before combining them. If the spectra are too faint, we combine the
+ individual IDF files and extract a single spectrum to optimize the
+ background model. The combined spectrum for each channel is stored
+ in a separate extension.
+
+ Note: The cataloging software used by MAST requires the presence of
+ an ALL file for each exposure, not just for the entire observation.
+ We now generate such a file, but it contains no data, only a FITS
+ file header. The observation-level ALL files discussed above can be
+ identified by the string "00000all" in their names.
+
+ ANO (all, night-only): Same format as the ALL files, but using only
+ data obtained during the night-time portion of each exposure. These
+ files are generated only for TTAG data, and only if EXPNIGHT > 0.
+
+ NVO (National Virtual Observatory): Contains a single spectrum
+ spanning the entire FUSE wavelength range. The spectrum is
+ assembled by cutting and pasting segments from the most sensitive
+ channel at each wavelength. Segments are shifted to match LiF 1A
+ between 1045 and 1070 E. Columns are WAVE, FLUX, and ERROR and are
+ stored in a single binary table extension.
+
+IX. Data-Analysis Tools
+
+ A variety of IDL routines to display and manipulate FUSE data are
+ available from the FUSE IDL Tools Reference Page:
+
+ http://fuse.pha.jhu.edu/analysis/fuse_idl_tools.html
+
+ Data-analysis tools distributed with the CalFUSE pipeline are
+ reviewed in the document FUSE Tools in C:
+
+ http://fuse.pha.jhu.edu/analysis/fuse_toolbox.html
+
+ A subset of these programs, designed specifically for the
+ manipulation of IDF files, is described in the IDF Cookbook:
+
+ http://fuse.pha.jhu.edu/analysis/idfcook/index.html
diff --git a/doc/Makefile.am b/doc/Makefile.am
new file mode 100644
index 0000000..239796f
--- /dev/null
+++ b/doc/Makefile.am
@@ -0,0 +1,6 @@
+docdir = $(datadir)/doc/@PACKAGE@-@VERSION@
+doc_DATA = FIXING_SELINUX_ISSUES \
+ INSTALLING_A_FORTRAN_COMPILER \
+ INSTALLING_CalFUSEv3.2.3 \
+ INTRO_TO_CalFUSEv3.2.3 \
+ pipeline_status.html
diff --git a/doc/Makefile.in b/doc/Makefile.in
new file mode 100644
index 0000000..0ed656b
--- /dev/null
+++ b/doc/Makefile.in
@@ -0,0 +1,504 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = doc
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/src/include/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(docdir)"
+DATA = $(doc_DATA)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cfitsio_CFLAGS = @cfitsio_CFLAGS@
+cfitsio_LIBS = @cfitsio_LIBS@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = $(datadir)/doc/@PACKAGE@-@VERSION@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+doc_DATA = FIXING_SELINUX_ISSUES \
+ INSTALLING_A_FORTRAN_COMPILER \
+ INSTALLING_CalFUSEv3.2.3 \
+ INTRO_TO_CalFUSEv3.2.3 \
+ pipeline_status.html
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign doc/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-docDATA: $(doc_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \
+ done
+
+uninstall-docDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir)
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(DATA)
+installdirs:
+ for dir in "$(DESTDIR)$(docdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-docDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-docDATA
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ cscopelist-am ctags-am distclean distclean-generic \
+ distclean-libtool distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am \
+ install-docDATA install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
+ uninstall-am uninstall-docDATA
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/doc/pipeline_status.html b/doc/pipeline_status.html
new file mode 100644
index 0000000..be15d28
--- /dev/null
+++ b/doc/pipeline_status.html
@@ -0,0 +1,3515 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.6 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
+ <meta name="CREATED" content="20000121;18144100">
+ <meta name="CHANGED" content="20000124;16081300">
+ <title>CALFUSE Pipeline Status</title>
+</head>
+<body bgcolor="#FFFFFF">
+
+<h1>
+CalFUSE Pipeline Status</h1>
+<b>Final pipeline version is 3.2.3, dated December 5, 2008.</b>
+
+<p STYLE="margin-bottom: 0in">Latest updates:
+
+<p>December 5, 2008
+<br>Van Dixon
+<BR>v3.2/src/libcf/cf_calculate_y_centroid.c
+<BR>v3.2/src/libcf/cf_find_spectra.c
+<BR>v3.2/src/libcf/cf_screen_jitter.c
+
+<P>
+In HIST mode, there are no spectra in other apertures to cause
+confusion, so we need not require that the target centroid lie within X
+pixels of either the airglow centroid or the tabulated centroid. Both
+cf_find_spectra.c and cf_calculate_y_centroid.c were modified to effect
+this change.
+
+<P>
+Modified cf_screen_jitter.c so that the jitter correction is not
+applied to ERO observations of Jupiter (program X006).
+
+<P>
+<hr WIDTH="100%">
+
+<p>August 22, 2008
+<br>Van Dixon
+
+<P>
+<BR>v3.2/include/calfuse.h
+<BR>v3.2/src/fuv/cf_bad_pixels.c
+<BR>v3.2/src/fuv/cf_screen_photons.c
+<BR>v3.2/src/libcf/cf_apply_filters.c
+<BR>v3.2/src/libcf/cf_fuv_init.c
+<BR>v3.2/src/libcf/cf_screen_jitter.c
+<BR>v3.2/src/libcf/cf_set_photon_flags.c
+<BR>v3.2/src/analysis/cf_combine.c
+<BR>v3.2/src/analysis/cf_xcorr.c
+<BR>v3.2/src/analysis/idf_combine.c
+<BR>v3.2/src/analysis/cf_make_all_obs.csh
+<BR>v3.2/src/analysis/cf_make_900_obs.csh
+
+<P>
+I've modified CalFUSE to treat bright-earth and airglow observations
+differently than before. Here are the details:
+<P>
+When creating the IDF files for bright-earth observations (programs
+M106 and S100) or 900-level airglow exposures, CalFUSE sets the header
+keyword EXP_STAT = 2. For 900-level exposures, the SRC_TYPE is set to
+EE, and the following warning is written to the file header:
+"Airglow exposure. Not an astrophysical target."
+<P>
+The pipeline then processes the file as usual. In particular, the
+limb-angle flag is set in the timeline table (extension 3 of the IDF),
+and the "Time with low limb angle" is written to the file header.
+However, if EXP_STAT = 2, the following things change:
+
+<UL>
+<LI>no jitter correction is performed;
+<LI>when the time-dependent flags are copied from the timeline
+ table to the individual photons, the limb-angle flag is masked
+ out;
+<LI>when the good-time intervals and exposure time are
+ calculated, the limb-angle flag is ignored.
+</UL>
+
+<P>
+The extracted spectra include photons obtained at low limb angles. The
+detector-image plots do, too. But the count-rate plots indicate times
+when the line of sight passes below the limb-angle limit.
+<P>
+For programs M106 and S100, all of the data are included in the
+observation-level ALL, ANO, and NVO files. For all other programs,
+900-level airglow exposures are excluded from the sum. A new
+observation-level file is produced: a single quick-look (gif) plot
+showing the summed spectrum from all of the 900-level exposures in the
+observation. It has a name like M112580100900specttagf.gif.
+
+<P>
+Update version number to v3.2.3.
+
+<P>
+<hr WIDTH="100%">
+
+<p>April 11, 2008
+<br>Van Dixon
+<BR>v3.2/src/analysis/cf_xcorr.c
+<BR>v3.2/src/analysis/cf_combine.c
+<BR>v3.2/src/analysis/cf_make_all_obs.csh
+
+<P>
+We've changed the logic used to combine individual exposures into
+observation-level files for data obtained in HIST mode. If the target
+is too faint to perform a cross-correlation, but is still in the slit
+(i.e., its flux is within 50% of the reference spectrum), add the
+spectra using a shift of zero. If an exposure suffers a limb-angle or
+SAA violation, include it anyway, assuming that HIST targets are
+bright enough that the additional background flux is not a problem.
+
+<P>
+<hr WIDTH="100%">
+
+<p>March 21, 2008
+<br>Van Dixon
+<BR>v3.2/src/libcf/cf_find_spectra.c
+
+<P>
+In HIST mode, there are no spectra in other apertures to cause
+confusion, so we need not require that the target centroid lie
+within 30 pixels of the expected value.
+
+<P>
+<hr WIDTH="100%">
+
+<p>Feb 22, 2008
+<br>Benjamin Ooghe
+<BR>INSTALLING_CalFUSEv3.2.2
+<BR>INSTALLING_A_FORTRAN_COMPILER
+<BR>FIXING_SELINUX_ISSUES
+
+<P>Updated installation information.
+
+<P>
+<BR>v3.2/bin/calfuse.sh
+<BR>v3.2/bin/cfsetup.sh
+<BR>v3.2/bin/cfsetup.csh
+
+<P>Added scripts to set environment variables in Bourne-based shells
+(sh and bash) for systems without CSH and automated the setting of the
+shell path.
+
+<P>
+<BR>v3.2/src/configure.linux
+<BR>v3.2/src/configure.linux64
+<BR>v3.2/src/configure.macosx
+<BR>v3.2/src/configure.solaris
+<BR>v3.2/src/cfitsio/configure
+<BR>v3.2/src/Makefile.Linux
+<BR>v3.2/src/Makefile.Linux64
+<BR>v3.2/src/Makefile.MacOSX
+<BR>v3.2/src/analysis/Makefile.Linux
+<BR>v3.2/src/analysis/Makefile.Linux64
+<BR>v3.2/src/analysis/Makefile.MacOSX
+<BR>v3.2/src/analysis/idf_combine.c
+<BR>v3.2/src/analysis/cf_coadd.c
+<BR>v3.2/src/analysis/cf_arith.c
+<BR>v3.2/src/analysis/cf_combine.c
+<BR>v3.2/src/analysis/cf_pack.c
+<BR>v3.2/src/cal/jitter/Makefile.Linux
+<BR>v3.2/src/cal/jitter/Makefile.Linux64
+<BR>v3.2/src/cal/jitter/Makefile.MacOSX
+<BR>v3.2/src/cal/jitter/cf_jitter.c
+<BR>v3.2/src/cal/jitter/cf_jitter_diag.c
+<BR>v3.2/src/fes/Makefile.Linux
+<BR>v3.2/src/fes/Makefile.Linux64
+<BR>v3.2/src/fuv/Makefile.Linux
+<BR>v3.2/src/fuv/Makefile.Linux64
+<BR>v3.2/src/fuv/Makefile.MacOSX
+<BR>v3.2/src/fuv/cf_gainmap.c
+<BR>v3.2/src/fuv/cf_countmap.c
+<BR>v3.2/src/libcf/Makefile.Linux
+<BR>v3.2/src/libcf/Makefile.Linux64
+<BR>v3.2/src/libcf/Makefile.MacOSX
+<BR>v3.2/src/libcf/cf_idf_io.c
+<BR>v3.2/src/slalib/mk
+<BR>v3.2/src/slalib/mk.sv
+<BR>v3.2/src/slalib/sla_source.tar
+
+<P>Updated configure files and Makefiles for all systems in order to
+compile with more different fortran compilers (f77, f90, g77, gfortran)
+and on recent systems (Solaris 10, recent Linux, Mac OS X 10.4)
+including 64-bit architecture machines. This required the modification
+of source files to correct bad int/long declarations that cause
+problems on 64-bit architectures, on Solaris 10 systems, and on some
+fortran compilers.
+
+<P>
+<BR>v3.2/include/calfuse.h
+<BR>v3.2/src/libcf/cf_fes_proc_update.c
+<BR>v3.2/src/libcf/cf_fes_proc_check.c
+
+<P>Fixed warning messages from GCC compiler (missing brackets and
+unused symbols).
+
+<P>
+<BR>v3.2/src/analysis/cf_make_all_obs.csh
+
+<P>Use airglow spectra when they are the only ones available.
+
+<P>
+<BR>v3.2/src/analysis/cf_nvo.c
+
+<P>Fixed memory problem causing occasional bad values in the NVO flux arrays.
+In copy_spec, the shift+start value was sometimes negative, causing the
+routine to read negative indexes in the flux and error arrays. Also,
+the final values of the flux_nvo and error_nvo arrays weren't always
+written.
+
+<P>
+<BR>v3.2/src/fuv/cf_bad_pixels.c
+
+<P>In cf_generate_pseudo_photons, verify for each fill-data event that
+the LOCATION_SHLD flag is not set to ensure that it does not
+fall outside of the active area of the detector.
+
+<P>
+<BR>v3.2/src/libcf/cf_thermal_distort.c
+
+<P>In cf_estimate_drift_coefficients, set max value of index to jmax-1
+rather than jmax.
+
+
+<P>
+<hr WIDTH="100%">
+
+<p>February 22, 2008
+<br>Van Dixon
+<BR>v3.2/src/fuv/cf_convert_to_farf.c
+<BR>v3.2/src/fuv/cf_flux_calibrate.c
+<BR>v3.2/src/fuv/cf_ttag_init.c
+<BR>v3.2/src/libcf/cf_modify_hist_pha.c
+<BR>v3.2/src/libcf/cf_screen_jitter.c
+<BR>v3.2/src/libcf/cf_set_good_time_intervals.c
+
+<P>
+Modified cf_convert_to_farf to write out the new PHA values assigned
+by cf_modify_hist_pha.
+
+<P>
+Cleaned up i/o in cf_flux_calibrate.
+
+<P>
+Added -e flag to cf_ttag_init. It sets the header keyword HKEXISTS
+to YES in the output IDF file.
+
+<P>
+In cf_modify_hist_pha, fixed bug in loop through MJD array.
+
+<P>
+In cf_screen_jitter, don't apply jitter correction to observations
+taken after the spacecraft lost pointing control.
+
+<P>
+Changed malloc to cf_malloc in cf_set_good_time_intervals.
+
+<P>
+Update version number to v3.2.2.
+
+<P>
+<hr WIDTH="100%">
+
+<br>
+<p>May 18, 2007
+<br>Van Dixon
+<BR>v3.2/src/libcf/cf_init_support.c
+
+<P>
+If HV array in HSKP file consists of a single 0 followed by all -1's,
+use header info to populate timeline table. Change name of subroutine
+fill_hv_array to hv_from_hskp and add hv_from_header.
+
+<P>
+Update version number to v3.2.1.
+
+<P>
+<hr WIDTH="100%">
+
+<p>April 7, 2007
+<br>Van Dixon
+<BR>v3.2/src/fuv/cf_bad_pixels.c
+
+<P>
+Within cf_bad_pixels, we scale nmax, the program's guess at the number
+of bad pixels it will have to deal with, by 1.5 to help prevent array
+overflows. To make warning messages more meaningful, we call
+cf_error_init after each call to cf_extraction_limits and make
+CF_PRGM_ID and CF_VER_NUM static variables.
+
+<P>
+This is the release version of CalFUSE v3.2.0.
+
+<P>
+<hr WIDTH="100%">
+
+<p>March 29, 2007
+<br>Van Dixon
+<BR>v3.2/src/libcf/cf_init_support.c
+<BR>v3.2/src/cal/jitter/cf_jitter.c
+
+<P>
+On error, cf_check_digitizer now sets EXP_STAT flag to -2, rather than
+-999, to be more consistent with cf_hist_init.
+
+<P>
+We modified cf_jitter to handle the time period (in March 2007) when
+the ACS telemetry rate was cut in half and generally made the code
+more robust.
+
+<P>
+<hr WIDTH="100%">
+
+<br>
+<p>March 23, 2007
+<br>Van Dixon
+<BR>v3.2/src/fuv/cf_hist_init.c
+<BR>v3.2/src/libcf/cf_init_support.c
+<BR>v3.2/src/libcf/cf_screen_jitter.c
+<BR>v3.2/src/libcf/cf_satellite_jitter.c
+
+<P>
+In cf_hist_init, set EXP_STAT to -1 if a raw hist file contains no
+extensions. Treat the limits of the active area as good pixels.
+
+<P>
+In cf_init_support, give a more detailed error message if the
+housekeeping file is not usable.
+
+<P>
+In cf_screen_jitter and cf_satellite_jitter, calculate time_diff (the
+offset between the jitter and IDF versions of EXPSTART) once, rather
+than each time it's used.
+
+<br>
+<p>March 20, 2007
+<br>Van Dixon
+<BR>v3.2/src/fuv/cf_bad_pixels.c
+
+<P>
+In the subroutine cf_combine_pothole_data, if an entire dead spot falls
+outside of the aperture, skip it and move on to the next one.
+
+<P>
+<hr WIDTH="100%">
+
+<p>March 7, 2007
+<br>Van Dixon
+<BR>v3.2/src/libcf/cf_init_support.c
+<BR>v3.2/src/libcf/cf_velang.c
+<BR>v3.2/src/libcf/space_vel.c
+<BR>v3.2/include/calfuse.h v1.81
+
+<P>
+The subroutine space_vel used a convoluted scheme to compute what
+is essentially a dot product. I simplified the code, deleted an
+argument, and modified the subroutines that call it.
+
+<P>
+This is version 3.2.0 of the CalFUSE pipeline.
+
+<P>
+<hr WIDTH="100%">
+
+<p>February 13, 2007
+<br>Van Dixon
+<BR>v3.2/src/fuv/cf_remove_motions.c
+
+<BR>v3.2/src/libcf/cf_fifo_dead_time.c
+<BR>v3.2/src/libcf/cf_init_support.c
+
+<P>
+When writing the LiF and SiC count rate arrays to the IDF file,
+cf_remove_motions crashed if the array values were too large to be
+stored as unsigned integers. As such enormous values are always wrong,
+they are now set to zero.
+
+<P>
+Sometimes, the header keyword TTPERIOD is erroneously set to 0.
+If so, cf_init_support and cf_fifo_dead_time now set it to 1.0,
+the most likely value.
+
+<P>
+<hr WIDTH="100%">
+
+<p>January 2, 2007
+<br>Van Dixon
+<BR>v3.2/src/fuv/cf_screen_photons.c
+<BR>v3.2/src/fuv/cf_convert_to_farf.c
+<BR>v3.2/src/fuv/cf_remove_motions.c
+
+<BR>v3.2/src/libcf/cf_apply_dead_time.c
+<BR>v3.2/src/libcf/cf_fifo_dead_time.c
+<BR>v3.2/src/libcf/cf_target_count_rate.c
+<BR>v3.2/src/libcf/pole_ang.c
+<BR>v3.2/src/libcf/cf_velang.c
+<BR>v3.2/src/libcf/cf_screen_high_voltage.c
+<BR>v3.2/src/libcf/cf_satellite_jitter.c
+<BR>v3.2/src/libcf/cf_grating_motion.c
+<BR>v3.2/src/libcf/cf_time_xy_distort.c
+<BR>v3.2/src/libcf/cf_init_support.c
+<BR>v3.2/src/libcf/cf_set_photon_flags.c
+
+<BR>v3.2/src/cal/jitter/cf_jitter.c
+
+<BR>v3.2/src/analysis/cf_combine.c
+<BR>v3.2/src/analysis/cf_nvo.c
+<BR>v3.2/src/analysis/cf_pack.c
+<BR>v3.2/src/analysis/idf_combine.c
+
+
+<P>
+To fix a bug in our correction for photon-event losses to FIFO
+overflows, we modified the subroutine cf_screen_fifo_overflow, renamed
+it cf_fifo_dead_time, and moved it from cf_screen_photons to
+cf_convert_to_farf. The subroutine cf_apply_dead_time issues a warning
+if DET_DEAD > 1.5, rather than TOT_DEAD. Because we no longer use
+the HV status flag to denote FIFO overflows, mention of the FIFO flag
+was removed from cf_set_photon_flags. Within cf_convert_to_farf, we
+now set the header keywords DET_DEAD, IDS_DEAD, and TOT_DEAD to unity
+by default.
+
+<P>
+Within cf_remove_motions, we now treat the LiF and SiC count-rate
+arrays as floats. We pass the WEIGHT array to cf_target_count_rate,
+so that it returns dead-time corrected count rates. If these count
+rates are too large to store as shorts, we use the TSCALE and TZERO
+keywords to store them as unsigned shorts. For HIST data, we scale
+the default LiF and SiC rates (read from the housekeeping file) by
+the value of DET_DEAD to account for detector dead-time losses.
+
+<P>
+The new subroutine pole_ang returns the angle between the orbit pole
+and a given RA and DEC. It is called by cf_velang, which populates
+the POLEANGL keyword.
+
+<P>
+The subroutine cf_screen_high_voltage no longer sets the EXP_STAT keyword.
+
+<P>
+The subroutine cf_find_spectra has been modified: if the new argument
+airglow_centroid is TRUE, then the program uses the airglow lines to
+compute the centroid of the target spectrum. To invoke this option,
+call cf_remove_motions with the -a flag.
+
+<P>
+The program cf_jitter has been extensively modified. Among other
+changes, it can (if necessary) compute the commanded quaternion from
+the target coordinates in the housekeeping file header. Values of the
+TRKFLG array now range from -1 to 5, with -1 meaning that tracking is
+bad, 0 that no information is available, and 1 to 5 representing
+increasingly reliable tracking estimates. The subroutines
+cf_satellite_jitter and cf_screen_jitter have been modified
+accordingly. In particular, the minimum value of TRKFLG that is to be
+considered reliable and the X and Y aperture limits are read from the
+pipeline parameter file.
+
+<P>
+Both the subroutine cf_grating_motion and the grating-motion
+calibration file have been completely revised. The new model depends
+on the target's beta and pole angles. An additional set of corrections
+tracks long-term drifts in the spectra's X and Y positions.
+
+<P>
+A new subroutine, cf_time_xy_distort, corrects for long-term drifts
+in the detector X and Y coordinate scales. It is called by
+cf_convert_to_farf.
+
+<P>
+We fixed a bug in the way that cf_init_support constructs the AIC
+count-rate array.
+
+<P>
+Lots of little changes in the analysis routines: When selecting which
+detector segment to include in the composite spectrum, cf_nvo now
+rejects segments with OBSTIME < 10 sec if the entire exposure is > 100
+s. The program idf_combine adds comment fields to the header keywords
+WOFFS and WOFFL. The program cf_combine now counts SPEC### and WAVE###
+using the variable ngood, rather than nfiles. Finally, we made small
+changes to the way that cf_pack copies the SPEC keywords to the output
+file header.
+
+
+<P>
+<hr WIDTH="100%">
+
+<p>June 22, 2006
+<br>Van Dixon
+<BR>v3.2/src/fuv/cf_hist_init.c
+<BR>v3.2/src/fuv/cf_extract_spectra.c
+<BR>v3.2/src/fuv/cf_ttag_init.c
+<BR>v3.2/src/libcf/cf_screen_jitter.c
+<BR>v3.2/src/libcf/cf_screen_burst.c
+<BR>v3.2/src/libcf/cf_optimal_extraction.c
+<BR>v3.2/src/libcf/cf_fuv_init.c
+<BR>v3.2/src/libcf/cf_error_msg.c
+
+<P>
+The pipeline no longer issues WARNING messages when a raw or
+intermediate data file is empty, either because it contains no photons
+or because the entire exposure has been flagged as bad; when the jitter
+file is missing (though out-of-date jitter files inspire a WARNING);
+when the detector voltage is low; and when the pipeline cannot perform
+optimal extraction. It issues level 1 verbose messages instead.
+
+<P>
+Now that OPUS has been updated, the variable morekeys has been set to
+zero in both cf_hist_init and cf_ttag_init.
+
+<P>
+This is version 3.1.8 of the CalFUSE pipeline.
+
+<P>
+<hr WIDTH="100%">
+
+<br>
+<p>May 24, 2006
+<br>Van Dixon
+<BR>v3.2/src/fuv/cf_extract_spectra.c
+<BR>v3.2/src/analysis/cf_combine.c
+<BR>v3.2/src/analysis/cf_nvo.c
+<BR>v3.2/src/analysis/cf_pack.c
+<BR>v3.2/src/analysis/cf_xcorr.c
+<BR>v3.2/src/analysis/idf_combine.c
+<BR>v3.2/idl/cf_obsplot.pro
+
+<P>
+We modified cf_extract_spectra so that it will no longer discard (that
+is, set to zero the flux and errors arrays of) spectra with non-zero
+values of EXP_STAT. Those spectra are now rejected by cf_combine,
+instead.
+
+<P>
+The program cf_combine has been extensively revised:
+it now runs through the input files with a single loop;
+it supports the same command-line options as idf_combine; and
+it ignores spectra with EXP_STAT != 0 (unless the -a flag is set).
+
+<P>
+Both cf_nvo and cf_xcorr now use the Lyman beta line to align the
+spectra of background observations. They use the interstellar O VI and
+C II lines to align white dwarf spectra. For BKGD targets, cf_nvo
+always selects the channel with the highest effective area, regardless
+of its observed flux. The mean flux, used when deciding which segment
+to use, is now calculated using the same wavelength regions for each
+channel. For PC targets, the O VI lines are not included in the mean
+flux calculation.
+
+<P>
+The program cf_pack now writes an index to the various file extensions
+to the primary HDU of the output *000all* file.
+
+<P>
+Both cf_combine and idf_combine now write a number of header keywords
+as longs, rather than floats.
+
+<P>
+Three changes to cf_obsplot.pro: For BKGD targets, omit flux
+comparison when selecting which detector segments to use. Compute mean
+flux using same wavelength intervals for each band. For PC targets,
+don't include O VI in the calculation of the mean flux.
+
+<P>
+<hr WIDTH="100%">
+
+<br>Van Dixon
+<BR>v3.2/src/fuv/cf_assign_wavelength.c
+<BR>v3.2/src/fuv/cf_bad_pixels.c
+<BR>v3.2/src/libcf/cf_astigmatism.c
+<BR>v3.2/src/libcf/cf_dispersion.c
+<BR>v3.2/src/libcf/cf_apply_dead_time.c
+<BR>v3.2/src/libcf/cf_extraction_limits.c
+<BR>v3.2/src/libcf/cf_init_support.c
+<BR>v3.2/src/libcf/cf_screen_burst.c
+<BR>v3.2/src/libcf/cf_screen_fifo_overflow.c
+<BR>v3.2/src/libcf/cf_screen_jitter.c
+<BR>v3.2/src/libcf/cf_set_photon_flags.c
+<BR>v3.2/src/analysis/cf_make_all_obs.csh
+<BR>v3.2/src/analysis/cf_nvo.c
+<BR>v3.2/src/analysis/cf_pack.c
+<BR>v3.2/src/analysis/cf_xcorr.c
+
+<P>
+Divided cf_astigmatism_and_dispersion into two routines, incorporating
+astig_check_input_image into the new program cf_astigmatism and
+cf_x2lambda into cf_dispersion. Modified cf_assign_wavelength and
+cf_bad_pixels to call the new routines. Because cf_astig_farf is not
+used, it is no longer defined in calfuse.h or compiled by the
+Makefile.
+
+<P>
+Cleaned up i/o in cf_apply_dead_time.
+
+<P>
+For targets observed in HIST mode, cf_extraction_limits.c now pads
+apertures by SPECBINY pixels.
+
+<P>
+In cf_init_support, flag as bad all times after final OPUS GTI.
+
+<P>
+In cf_screen_burst, require that the number of windows in subroutine
+median_filter be >= 1.
+In cf_screen_fifo_overflow, changed length of data_rate array from
+nevents to nseconds.
+In cf_screen_jitter, screening is now applied to targets observed with
+APERTURE = RFPT.
+In cf_set_photon_flags, modify header keyword EXP_STAT only if was initially 0.
+
+<P>
+In the analysis directory, modified cf_make_all_obs.csh to be smarter
+when deciding whether to cross-correlate spectra or combine IDF files.
+Also modified logic for discarding 000 files. In cf_nvo, ignore
+segments with OBS_TIME = 0 and allow use of SiC data for 1000-1100 A
+region. (Sometimes the LiF channels are not used.) In cf_pack, if a
+segment is missing, write an empty image extension to the combined data
+file. In cf_xcorr, scale each spectrum to the mean flux of the
+reference spectrum.
+
+<P>
+This is version 3.1.8 of the CalFUSE pipeline.
+
+<P>
+<hr WIDTH="100%">
+
+<p>February 3, 2006
+<br>Van Dixon
+<BR>v3.2/src/fuv/cf_compute_y_centroid.c
+<BR>v3.2/src/fuv/cf_find_spectra.c
+<BR>v3.2/src/libcf/cf_scale_bkgd.c
+<BR>v3.2/src/fuv/cf_extract_spectra.c
+
+<P>
+We tightened the limits over which cf_find_spectra computes the
+spectral centroid to prevent a bright star in a nearby aperture or the
+enhanced background near the detector edge from pulling the extraction
+window off center. In both cf_compute_y_centroid and cf_find_spectra,
+we returned the EMAX_LIF and EMAX_SIC keywords to their original
+behavior: if the centroid differs from the default value by more than
+this limit, the default value is used.
+
+<P>
+We fixed a bug introduced in the last modification of cf_scale_bkgd
+that essentially turned off the background subtraction.
+
+<P>
+We added a command-line flag to cf_extract_spectra that forces the use
+of optimal extraction, even for extended sources.
+
+<P>
+This is version 3.1.7 of the CalFUSE pipeline.
+
+<P>
+<hr WIDTH="100%">
+
+<p>January 24, 2006
+<br>Van Dixon
+<BR>v3.2/src/fuv/cf_screen_photons.c
+<BR>v3.2/src/libcf/cf_scale_bkgd.c
+
+<P>
+Because cf_screen_burst wants to exclude airglow photons from the
+calculated background, we must identify them before calling the
+routine. To that end, I've made cf_screen_airglow the first of the
+screening routines.
+
+<P>
+The model background consists of a spatially-uniform component and a
+scattered-light image. The scattered-light component was
+over-estimated, because the data count totals were computed using a
+larger region of the detector than the scattered-light model totals.
+Now, we apply the same limits to both data and models.
+
+<P>
+The program returns a slice of the background that is supposed to match
+that covered by the probability array. Limit checks in the subroutine
+get_limits prevented the background slice from falling off of the
+detector. Sometimes, you want to background slice to fall off of the
+detector. In such cases, the limit checks could introduce an unwanted
+offset in the model background. We've deleted the limit checks and use
+other means to avoid bad index values.
+
+<P>
+This is version 3.1.6 of the CalFUSE pipeline.
+
+<P>
+<hr WIDTH="100%">
+
+<p>January 3, 2006
+<br>Van Dixon
+<BR>v3.2/src/libcf/cf_grating_motion.c
+
+<P>
+Correct LiF 1 data for residual zero-point errors in the wavelength scale.
+
+<P>
+<hr WIDTH="100%">
+
+<p>December 2, 2005
+<br>Van Dixon
+<BR>v3.2/src/libcf/cf_mirror_motion.c
+
+<P>
+cf_mirror_motion now exits without modifying the data if target is an
+extended source.
+
+<P>
+<hr WIDTH="100%">
+
+<p>December 2, 2005
+<br>Van Dixon
+<BR>v3.2/src/libcf/cf_astigmatism_and_dispersion.c
+<BR>v3.2/src/libcf/cf_apply_dead_time.c
+<BR>v3.2/src/libcf/cf_convert_to_ergs.c
+<BR>v3.2/src/libcf/cf_count_rate_y_distort.c
+<BR>v3.2/src/libcf/cf_doppler_and_heliocentric.c
+<BR>v3.2/src/libcf/cf_extraction_limits.c
+<BR>v3.2/src/libcf/cf_fpa_position.c
+<BR>v3.2/src/libcf/cf_init_support.c
+<BR>v3.2/src/libcf/cf_make_mask.c
+<BR>v3.2/src/libcf/cf_optimal_extraction.c
+<BR>v3.2/src/libcf/cf_satellite_jitter.c
+<BR>v3.2/src/libcf/cf_screen_bad_pixels.c (NEW)
+<BR>v3.2/src/libcf/cf_screen_fifo_overflow.c
+<BR>v3.2/src/libcf/cf_screen_jitter.c (NEW)
+<BR>v3.2/src/fuv/cf_bad_pixels.c
+<BR>v3.2/src/fuv/cf_extract_spectra.c
+<BR>v3.2/src/fuv/cf_remove_motions.c
+<BR>v3.2/src/fuv/cf_screen_photons.c
+
+<P>
+To improve our bad-pixel correction, we've added a new routine,
+cf_screen_bad_pixels, which flags photon events falling in known
+pothole regions. cf_make_mask now fills gaps in the bad-pixel mask
+that open when it is converted from pixels to wavelengths. In the
+optimal-extraction algorithm, cf_optimal_extraction now scales the
+variance estimate by the bad-pixel mask to better approximate the
+observed counts. The main pothole routine, cf_bad_pixels, now uses
+cf_x2lambda() and cf_get_potholes(), rather than its own subroutines
+that do the same job. Also, it no longer adds random numbers to the
+output pixel coordinates -- that's no longer necessary. Finally,
+cf_bad_pixels no longer trims potholes at the edges of the
+extraction windows. We modified cf_astigmatism_and_dispersion so that
+it would not complain when events fall outside of the astig images.
+
+<P>
+We added a test to cf_apply_dead_time to catch bad dead-time values: If
+there is no housekeeping file, AND the engineering snapshot times are
+bad, AND the mean value of either dead-time array is > 1.5, set the
+array to unity and issue a warning.
+
+<P>
+In cf_convert_to_ergs, we changed the effective-area arrays to type
+double to match the AEFF_CAL files.
+
+<P>
+For histogram data, cf_count_rate_y_distort must use a single count
+rate value for all of the data. To better estimate it, we replace the
+time-dependent FEC-rate array with its weighted mean value.
+
+<P>
+To improve our calculation of the Doppler correction, we changed the
+variables velocity and doppler to doubles in cf_doppler_and_heliocentric.
+
+<P>
+Rather than using different HIST_PAD values for each aperture,
+cf_extraction_limits now always pads the apertures by 8 pixels (top and
+bottom) when in HIST mode.
+
+<P>
+We deleted unused variables in cf_fpa_position.
+
+<P>
+More efforts to catch corrupted keywords in cf_init_support: When
+the housekeeping file is missing and the engineering snapshot times are
+corrupted, we use EXPSTART and EXPEND to estimate eng_time. If EXPEND is
+corrupted, we use EXPTIME.
+
+<P>
+To improve the jitter-correction algorithm, we've removed the
+data-screening functions from cf_satellite_jitter and moved them to a
+new routine, cf_screen_jitter. The modules cf_remove_motions and
+cf_screen_photons have been modified accordingly.
+
+<P>
+We caught a bug in cf_screen_fifo_overflow: It was using the
+RATE_LIF and RATE_SIC arrays to estimate the raw count rate, but those
+arrays are populated from the housekeeping file and do not reflect data
+losses due to FIFO overflows. Now we calculate the count rate across
+the entire detector directly from the photon-event data.
+
+<P>
+We added a flag to cf_extract_spectra that allows the user to disable
+optimal extraction from the command line.
+
+<P>
+This is version 3.1.5 of the CalFUSE pipeline.
+
+<P>
+<hr WIDTH="100%">
+
+<p>September 19, 2005
+<br>Van Dixon
+<BR>v3.1/src/libcf/cf_read_fpa_pos.c (RESTORED)
+
+<P>
+Had to restore cf_read_fpa_pos, as it's called by ttag_combine.
+
+<P>
+This is version 3.1.3 of the CalFUSE pipeline.
+
+<P>
+<hr WIDTH="100%">
+
+<p>September 7, 2005
+<br>Van Dixon
+<BR>v3.1/src/analysis/cf_arith.c (RENAMED)
+<BR>v3.1/src/analysis/cf_coadd.c
+<BR>v3.1/src/analysis/cf_combine.c
+<BR>v3.1/src/analysis/cf_make_all_exp.c (NEW)
+<BR>v3.1/src/analysis/cf_nvo.c
+<BR>v3.1/src/analysis/cf_pack.c
+<BR>v3.1/src/analysis/cf_xcorr.c
+<BR>v3.1/src/analysis/getshift.c
+<BR>v3.1/src/analysis/modhead.c
+<BR>v3.1/src/libcf/cf_init_support.c
+<BR>v3.1/src/libcf/cf_fpa_position.c
+<BR>v3.1/src/libcf/cf_read_fpa_pos.c (DELETED)
+<BR>v3.1/src/libcf/cf_screen_burst.c
+<BR>v3.1/src/libcf/cf_write_extracted_spectrum.c
+
+<P>
+We are required to provide MAST an <b>all</b> file for each exposure and
+one set of <b>all</b>, <b>ano</b>, and <b>nvo</b> files per observation.
+These files are created by cf_coadd, which has been completely re-written.
+It calls cf_make_all_exp for each exposure and cf_make_all_obs.csh once
+per observation. The new program cf_make_all_exp copies the primary HDU
+of the channel with the longest EXPTIME into an otherwise empty file.
+cf_nvo now sets the keyword NEXTEND back to 1.
+In cf_pack, the keyword COMB_COR is set to COMPLETE.
+
+<P>
+The name of cf_arith3 has been changed back to cf_arith.
+If called with no arguments, cf_arith, cf_combine, cf_xcorr, and getshift
+don't return an error, just a "usage" message.
+If the input list given to cf_combine contains only file names (no shifts),
+the program assumes that all shifts are zero.
+The programs cf_xcorr and cf_combine have been modified
+to use the same sign convention for spectral shifts as FUSE_REGISTER.
+The program modhead now accepts multi-word strings as keyword values.
+
+<P>
+In cf_init_support, use LWRS background limits for RFPT observations.
+In cf_fpa_position, correct for both X and Z displacement of FPA's.
+Delete call to cf_read_fpa_pos.
+In cf_screen_burst, ignore photons with arrival times greater than MAX_EXPTIME.
+In cf_write_extracted_spectrum, delete FITS_write_date from cf_copy_hist_header.
+
+<P>
+<hr WIDTH="100%">
+
+<p>July 12, 2005
+<br>Van Dixon
+<BR>v3.1/src/analysis/cf_combine.c
+<BR>v3.1/src/analysis/cf_nvo.c
+<BR>v3.1/src/analysis/cf_pack.c
+<BR>v3.1/src/cal/jitter/cf_jitter.c
+<BR>v3.1/src/libcf/cf_satellite_jitter.c
+
+<P>
+In cf_combine, we use fgets to read the input file and assume that pix_shift
+is an integer.
+In cf_nvo, we modify the cross-correlation routine to use LiF 2B as the
+wavelength standard if header keyword FESCENT is set to FES B.
+In cf_pack, we set the header keyword COMB_COR to COMPLETE.
+
+<P>
+cf_jitter writes a new keyword, JIT_VERS, to the header of each jitter
+file. If this keyword is missing or is less than 2,
+cf_satellite_jitter now warns that the jitter file format is out
+of date, which may result in the rejection of good data.
+
+<P>
+<hr WIDTH="100%">
+
+<p>June 16, 2005
+<br>Van Dixon
+<BR>v3.1/src/libcf/cf_rebin_probability_array.c
+<BR>v3.1/src/libcf/cf_scale_bkgd.c
+<BR>v3.1/src/fuv/cf_extract_spectra.c
+<BR>v3.1/include/calfuse.h v1.71
+
+<P>
+A bug in the spectral-extraction subroutines caused CalFUSE always to
+use the smaller, point-source extraction window, even for extended
+sources. This could lead to an underestimate of the flux for extended
+sources. The pipeline now uses either the point-source or
+extended-source aperture, as appropriate.
+
+<P>
+This is version 3.1.2 of the CalFUSE pipeline.
+
+<P>
+<hr WIDTH="100%">
+
+<p>June 8, 2005
+<br>Van Dixon
+<BR>v3.1/src/analysis/cf_combine.c
+<BR>v3.1/src/analysis/cf_make_all.csh
+<BR>v3.1/src/analysis/cf_nvo.c
+<BR>v3.1/src/analysis/cf_pack.c
+<BR>v3.1/src/analysis/cf_xcorr.c
+<BR>v3.1/src/analysis/extract_jitter.c
+<BR>v3.1/src/analysis/idf_combine.c
+<BR>v3.1/src/libcf/cf_calculate_y_centroid.c
+<BR>v3.1/src/libcf/cf_find_spectra.c
+<BR>v3.1/src/libcf/cf_idf_io.c
+<BR>v3.1/src/libcf/cf_modify_hist_pha.c
+<BR>v3.1/src/libcf/cf_rebin_probability_array.c
+
+<BR>v3.1/include/calfuse.h v1.70
+
+<P>
+We modified cf_combine to support the generation of our new
+observation-level spectral files. It now writes the keywords NSPEC,
+SPEC###, and WOFF### to the primary HDU of the output file.
+
+<P>
+Three C routines and a shell script generate a new set of
+observation-level spectral files. For targets that are bright enough,
+we cross-correlate and combine the extracted spectra from each
+exposure. For fainter targets, we combine the IDF files from each
+exposure and extract a single spectrum for the whole observation. Then
+we repeat this exercise for the night-only data. Finally, we combine
+observation-level spectra from the various channels into a single
+spectral file for submission to the National Virtual Observatory.
+
+<P>
+cf_make_all is the shell script that calls these routines.
+<br>
+cf_xcorr determines the relative wavelength offset of each exposure.
+<br>
+cf_pack combines the observation-level spectra from each channel into
+a single ALL or ANO (all data, night-only) file.
+<br>
+cf_nvo selects data from the best channel for each waveband, shifts
+it to a common wavelengh scale, and generates the NVO file.
+
+<P>
+In extract_jitter, fixed a bug that set EXPSTART equal to EXPEND.
+
+<P>
+In idf_combine, comment out warning when FPA motion is detected.
+The pipeline corrects for this.
+
+<P>
+In cf_calculate_y_centroid, don't override user-specified centroid,
+even if it is far from the expected value. Fixed bug in tabulation of
+the expected Y centroids.
+
+<P>
+In cf_find_spectra, use airglow centroid of LWRS aperture to constrain
+airglow centroids of smaller apertures. Use airglow centroid of
+target aperture to constrain search for centroid of target spectrum.
+
+<P>
+In cf_idf_io, allow arrays of floats to be read as doubles.
+
+<P>
+In cf_modify_hist_pha, fixed bug in loop through MJD array.
+
+<P>
+In cf_rebin_probability_array, rounding errors left non-zero
+probabilities in regions beyond the ends of the extraction windows.
+Re-normalization raised these probabilities to unity. Now, if total
+probability in a column is less than 0.1, it is set to zero.
+
+<P>
+<hr WIDTH="100%">
+
+<p>April 19, 2005
+<br>Van Dixon
+
+<BR>v3.0/include/calfuse.h v1.66, v1.67, v1.68, v1.69
+
+<P>
+Between August and December of 2004, pipeline modifications were
+limited to bug fixes and a few new data-analysis routines. Since
+January of 2005, we made extensive modifications to the code, both to
+correct errors and to add new capabilities. All changes are documented
+in the headers of the individual modules and subroutines. Rather than
+repeat that information, we list here only the principal changes to the
+pipeline's capabilities.
+
+<P>
+In v3.0, data obtained during periods of uncertain pointing information
+were often flagged as bad. Now, the jitter files are generated using a
+simpler, more robust algorithm to determine when pointing information
+is reliable. If it's not, the pipeline does nothing, rather than
+flagging the data as bad.
+
+<P>
+In v3.0, data obtained when the detector voltage was less than 95% of
+the expected value were flagged as bad. Now, for detectors 1A, 1B, and
+2B, the level is 85%. For detector 2A, data with HV > 90% of full is
+processed without comment, data with HV > 80% of full generates a
+warning message, and data with HV < 80% of full is flagged as bad.
+(These limits are stored in the VOLT_CAL file.) For detector 2A data
+in the 80-90% range, the user should examine the pulse-hight
+distribution of photon events in the target aperture to ensure that the
+peak of the distribution is well separated from the background.
+
+<P>
+In v3.0, the geometric-distortion correction moved small segments of the
+HIST spectra out of their extraction windows. The solution was to
+increase the size of the HIST extraction windows in Y. A new keyword,
+HIST_PAD, which depends on both the detector and the aperture, is read
+from the header of the corresponding extension of the CHID_CAL file.
+While making this change, we found and corrected a bug in the
+calculation of the spectral Y centroid that affected both TTAG and
+HIST data.
+
+<P>
+In v3.0, the HIST and TTAG wavelength scales did not agree. This was a
+result of the walk correction, which was applied to TTAG but not HIST
+data. Since the walk correction is never zero, HIST data were never
+fully converted to the FARF. We now assign a pulse height (the mean
+for a particular date and aperture) to each HIST photon and apply the
+walk correction to all data.
+
+<P>
+When scaling the model background image to match the data, the
+subroutine cf_scale_bkgd (formerly cf_ttag_bkgd) did not properly
+account for regions of the detector excluded because of airglow
+contamination. As a result, it underestimated the total background.
+The program has been extensively revised.
+
+<P>
+The final extracted spectral (*fcal.fit) files now have the standard
+FITS binary table format that was employed in old (v2.4.3 and earlier)
+versions of the pipeline.
+
+<P>
+Errors in the calculation of TIME_SUNRISE and TIME_SUNSET have been
+corrected. As these values are never greater than 6000 s, they are
+now stored (and treated) as SHORTs.
+
+<P>
+If the pipeline cannot compute the centroids of the detector stim
+pulses, it now reads a new calibration file (STIM_CAL), in which the
+time-dependent average values of the drift coefficients are tabulated.
+
+<P>
+The burst-detection algorithm computes the mean count rate on the
+unilluminated regions of the detector and writes it to the IDF. It now
+does so for the entire exposure, not just for times previously
+identified as good.
+
+<P>
+Several keywords have been added to the IDF file headers, including
+the limb-angle limits BRITLIMB and DARKLIMB from the SCRN_CAL file
+and the calculated orbital period (ORBPERID).
+
+<P>
+The AIRG_CAL files, which identify regions of each detector likely
+to be contaminated by airglow features, are now expressed in FARF,
+rather than RAW, coordinates. This change allows us to use smaller
+airglow windows and thus to throw away less data.
+
+<P>
+The default pulse-height limits (both upper and lower) have been
+modified for all four detectors.
+
+<P>
+<hr WIDTH="100%">
+
+<p>August 24, 2004
+<br>Van Dixon
+<BR>v3.0/src/libcf/cf_fes_proc_update.c
+<BR>v3.0/src/libcf/cf_fes_proc_check.c
+<BR>v3.0/src/libcf/cf_count_rate_y_distort.c
+<BR>v3.0/src/libcf/cf_calculate_y_centroid.c
+<BR>v3.0/src/libcf/cf_optimal_extraction.c
+
+<BR>v3.0/include/calfuse.h v1.65
+
+<P>
+Installed two subroutines needed to process FES files. Modified calfuse.h
+to support them.
+
+<P>
+In cf_count_rate_y_distort, interpolate stretch correction among
+tabulated Y values to prevent counts from piling up at 10-pixel
+boundaries.
+
+<P>
+In cf_calculate_y_centroid, confirm that all spectral centroids, not
+just that of the target aperture, are within bounds.
+
+<P>
+In cf_optimal_extraction, use QUALITY array to set X limits of
+extraction region. Insure that sigma_out array is non-zero.
+
+<P>
+<hr WIDTH="100%">
+
+<p>August 12, 2004
+<br>Van Dixon
+<BR>v3.0/src/fuv/cf_assign_wavelength.c
+<BR>v3.0/src/fuv/cf_bad_pixels.c
+<BR>v3.0/src/fuv/cf_extract_spectra.c
+<BR>v3.0/src/fuv/cf_remove_motions.c
+<BR>v3.0/src/fuv/cf_screen_photons.c
+<BR>v3.0/src/libcf/cf_astigmatism_and_dispersion.c
+<BR>v3.0/src/libcf/cf_apply_filters.c
+<BR>v3.0/src/libcf/cf_calculate_y_centroid.c
+<BR>v3.0/src/libcf/cf_fuv_init.c
+<BR>v3.0/src/libcf/cf_find_spectra.c
+<BR>v3.0/src/libcf/cf_grating_motion.c
+<BR>v3.0/src/libcf/cf_identify_channel.c
+<BR>v3.0/src/libcf/cf_init_support.c
+<BR>v3.0/src/libcf/cf_make_mask.c
+<BR>v3.0/src/libcf/cf_mirror_motion.c
+<BR>v3.0/src/libcf/cf_modify_hist_times.c
+<BR>v3.0/src/libcf/cf_optimal_extraction.c
+<BR>v3.0/src/libcf/cf_proc_check.c
+<BR>v3.0/src/libcf/cf_rebin_background.c
+<BR>v3.0/src/libcf/cf_satellite_jitter.c
+<BR>v3.0/src/libcf/cf_screen_burst.c
+<BR>v3.0/src/libcf/cf_screen_high_voltage.c
+<BR>v3.0/src/libcf/cf_screen_limb_angle.c
+<BR>v3.0/src/libcf/cf_set_photon_flags.c
+<BR>v3.0/src/libcf/cf_thermal_distort.c
+<BR>v3.0/src/libcf/cf_ttag_bkgd.c
+<BR>v3.0/src/libcf/cf_write_extracted_spectrum.c
+<BR>v3.0/src/libcf/eclipse.c
+<BR>v3.0/src/libcf/solar_ang.c
+<BR>v3.0/src/libcf/space_vel.c
+<BR>v3.0/src/libcf/state_geod.c
+<BR>v3.0/src/libcf/state_limb.c
+
+<BR>v3.0/include/calfuse.h v1.64
+
+<P>
+Re-organized the pipeline, moving cf_screen_photons before
+cf_remove_motions. This required changes to both programs, as well as
+a number of subroutines.
+
+<P>
+Numerous modifications to cf_fuv_init: We now allow for the possibility
+that the time associated with a calibration file exactly equals
+EXPSTART. If the BRIT_OBJ keyword is set to DEFOCUS, we modify
+SRC_TYPE to E. Write CF_VERS to trailer file. Set ASTG_COR to
+PERFORM, as the pipeline doesn't do it automatically.
+
+<P>
+Changes to routines in cf_init_support: Add BRIT_OBJ keyword to header.
+Rewrite fill_hv_array() to make it more robust. If HV values in header
+are good, use them to determine whether HV arrays for 2A and 2B are
+swapped.
+
+<P>
+In both eclipse and state_geod, we corrected the FORTRAN call to sla_preces.
+To address warnings from the Mac OS X compiler, we made minor
+modifications to month_day.
+
+<P>
+If more than 90% of an exposure is lost to a burst, jitter, etc.,
+cf_set_photon_flags will write the cause to the trailer file.
+
+<P>
+Changes to cf_identify_channel: Don't bother shifting extraction
+windows to correct for FPA position. If shift is known, it is not needed.
+Because the extraction windows don't quite match the WGTS arrays, pad
+windows by XPAD pixels in X. Change i (which steps through targ_ap
+array) from long to int.
+
+<P>
+Corrected bug in cf_mirror_motion that caused it to swap motion corrections
+for sides 1 and 2. (This routine also got a new calibration file.)
+
+<P>
+In cf_grating_motion, we estimate the time between sunrises using the
+orbit period in the file header, rather than assuming a 6000-second orbit.
+
+<P>
+In cf_satellite_jitter, we skip the jitter correction if the jitter
+file lacks the JIT_STAT keyword. The program returns EXP_JITR
+to the calling routine.
+
+<P>
+Both cf_find_spectra and cf_calculate_y_centroid now use the photon
+flags to exclude events arriving during bursts, etc., from their
+centroid calculations.
+
+<P>
+In cf_astigmatism_and_dispersion, must change ASTG_COR to COMPLETE or
+SKIPPED by hand, as the pipeline won't do it automatically.
+
+<P>
+Changes to bad-pixel routines: Fixed bug in cf_make_mask, changing & to &&.
+
+<P>
+Changes to extraction subroutines:
+Fixed bug in cf_ttag_bkgd: nxb was undefined if RUN_BKGD = NO.
+Don't bother shifting the weights array to account for FPA motions, as
+this should already have been corrected in the conversion to the FARF.
+In cf_optimal_extraction: If weights_out[j] = 0, set variance = bkgd.
+Iterate optimal extraction to accuracy of 0.01 counts. In the boxcar
+extraction algorithm, we reduced the parray limit to 1E-4 to better
+match fluxes from optimal extraction for bright stars.
+The routine cf_write_extracted_spectrum now has an option (-o)
+to override the default root name for the extracted spectra.
+
+<P>
+Removed unused variables from the following routines: state_limb,
+cf_rebin_background, cf_screen_high_voltage, cf_screen_limb_angle,
+cf_thermal_distort, solar_ang, space_vel, and cf_bad_pixels.
+
+<P>
+Made minor i/o changes to cf_screen_burst. The routine cf_proc_check
+now calls cf_verbose rather than cf_if_warning when a pipeline step is
+inappropriate for TTAG data.
+
+<P>
+We made a lot of changes to the way that we deal with time for HIST
+data: In cf_apply_filters, we mask the BRST, SAA, and LIMB flags when
+calculating exposure time. In cf_set_photon_flags, we set only DAY
+flag; we all write other flags to EXP_STAT keyword. A new routine,
+cf_modify_hist_times, sets the photon-arrival times of photons in HIST
+files to the midpoint of the longest good-time interval.
+
+<P>
+This is the release version 3.0.7 of the CalFUSE pipeline.
+
+<P>
+<hr WIDTH="100%">
+
+<p>June 4, 2004
+<br>Van Dixon
+<BR>v2.4/src/fuv/cf_fuv_init.c
+<BR>v2.4/include/calfuse.h v1.175
+
+<P>
+Modified cf_fuv_init to allow for the possibility that the MJD for a
+calibration file equals EXPSTART for an exposure.
+
+<P>
+This is version 2.4.4 of the CalFUSE pipeline.
+
+<P>
+<hr WIDTH="100%">
+
+<p>May 13, 2004
+<br>Van Dixon
+<BR>v2.4/src/fuv/cf_update_qual.c
+<BR>v2.4/src/fuv/cf_dtcor.c
+<BR>v2.4/include/calfuse.h v1.174
+
+<P>
+Modified cf_update_qual and cf_dtcor to deal gracefully with bad
+counters in the data file headers.
+
+<P>
+This is version 2.4.3 of the CalFUSE pipeline.
+
+<P>
+<hr WIDTH="100%">
+
+<p>May 4, 2004
+<br>Van Dixon
+<BR>v3.0/src/fuv/cf_assign_wavelength.c
+<BR>v3.0/src/fuv/cf_countmap.c
+<BR>v3.0/src/fuv/cf_extract_spectra.c
+<BR>v3.0/src/fuv/cf_gainmap.c
+<BR>v3.0/src/fuv/cf_hist_init.c
+<BR>v3.0/src/fuv/cf_remove_motions.c
+<BR>v3.0/src/fuv/cf_ttag_init.c
+<BR>v3.0/src/libcf/cf_apply_dead_time.c
+<BR>v3.0/src/libcf/cf_calculate_y_centroid.c
+<BR>v3.0/src/libcf/cf_convert_to_ergs.c
+<BR>v3.0/src/libcf/cf_doppler_and_heliocentric.c.c
+<BR>v3.0/src/libcf/cf_error_msg.c
+<BR>v3.0/src/libcf/cf_find_spectra.c
+<BR>v3.0/src/libcf/cf_fuv_init.c
+<BR>v3.0/src/libcf/cf_init_support.c
+<BR>v3.0/src/libcf/cf_rebin_background.c
+<BR>v3.0/src/libcf/cf_set_good_time_intervals.c
+<BR>v3.0/src/libcf/cf_set_photon_flags.c
+<BR>v3.0/src/libcf/cf_set_user_gtis.c
+<BR>v3.0/src/libcf/cf_source_aper.c
+<BR>v3.0/src/libcf/cf_ttag_bkgd.c
+<BR>v3.0/src/libcf/cf_write_extracted_spectrum.c
+
+<BR>v3.0/include/calfuse.h v1.61, v1.62, v1.63
+
+<P>
+Bernard performed housecleaning (removing unused variables, changing
+variable types to match subroutine definitions, etc.) on the following
+routines: cf_assign_wavelength, cf_hist_init, cf_ttag_init, cf_countmap,
+and cf_bad_pixels.c. Also these subroutines: cf_apply_dead_time,
+cf_calculate_y_centroid, cf_doppler_and_heliocentric.c,
+cf_error_msg, cf_init_support, cf_set_good_time_intervals,
+cf_set_photon_flags, cf_set_user_gtis, and cf_source_aper.
+
+In addition, he modified cf_ttag_init to create a photon list
+containing a single dummy event when the raw file is empty and
+cf_init_support to better catch errors in the header counter keywords.
+
+<P>
+We made significant modifications to cf_extract_spectra, replacing
+cf_rebin_and_flux_calibrate_background with cf_rebin_background.
+cf_optimal_extraction now performs all calculations with the weights
+array, rather than ergcm2. It returns counts and sigma arrays, rather
+than flux and variance as before; cf_extract_spectra must
+flux-calibrate each array, and cf_write_extracted_spectrum no longer
+converts from variance to sigma. The boxcar algorithm now uses the
+probability (weights) array to set the limits of the extraction window,
+better replicating the results of optimal extraction. Optimal
+extraction now iterates to 10% accuracy. The output weights and bkgd
+arrays are calculated by the optimal-extraction routine, so better
+match the final flux-calibrated spectra.
+
+<P>
+In verbose mode, cf_convert_to_ergs prints out the relative weighting of
+the two effective-area files.
+
+<P>
+The first call to cf_identify_channel was moved from cf_find_spectra to
+cf_remove_motions. The documentation of cf_remove_motions was improved.
+
+<P>
+The keywords MKBK_COR and BKGD_COR are gone, so cf_fuv_init no longer
+populates them.
+
+<P>
+The routine cf_rebin_and_flux_calibrate_background was replaced by
+cf_rebin_background. Flux calibration is now performed by
+cf_extract_spectra. cf_ttag_bkgd returns a null-valued background
+image if RUN_BKGD = NO.
+
+<P>
+This is version 3.0.7 of the CalFUSE pipeline.
+
+<P>
+<hr WIDTH="100%">
+
+<p>April 5, 2004
+<br>Van Dixon
+<BR>v3.0/src/libcf/cf_geometric_distort.c
+<BR>v3.0/include/calfuse.h v1.60
+
+<P>
+Rescale SPECBINY only if it is > 1.
+
+<P>
+<hr WIDTH="100%">
+
+<p>April 1,2004
+<br>Van Dixon
+<BR>v3.0/src/fuv/cf_extract_spectra.c
+<BR>v3.0/src/libcf/cf_geometric_distort.c
+<BR>v3.0/src/libcf/cf_hist_init.c
+<BR>v3.0/src/libcf/cf_init_support.c
+<BR>v3.0/src/libcf/cf_optimal_extraction.c
+<BR>v3.0/src/libcf/cf_proc_check.c
+<BR>v3.0/src/libcf/cf_rebin_probability_array.c
+<BR>v3.0/src/libcf/cf_ttag_bkgd.c
+<BR>v3.0/src/libcf/cf_write_extracted_spectrum.c
+<BR>v3.0/include/calfuse.h v1.59
+
+<P>
+Abandon use of WPC array throughout the pipeline. Instead, modify
+cf_optimal_extraction to evenly distribute photon events across
+one X pixel when in HIST mode. If optimal-extraction loop does not
+converge within 50 iterations, exit and use results from boxcar extraction.
+<p>
+In cf_proc_check, call cf_verbose rather than cf_if_warning if program
+not appropriate for HIST data.
+<p>
+Change the way that routines deal with empty data files. In
+cf_hist_init, issue a warning -- but continue
+processing -- if NEVENTS = 0. (A similar change for cf_ttag_init
+will have to wait for the next version of the pipeline.)
+In cf_extract_spectra, write null-valued
+output spectra if either EXPTIME or NEVENTS = 0. In
+cf_write_extracted_spectrum, if valid_spectrum = FALSE, write warning
+message to file header.
+<p>
+Include math.h in cf_hist_init to define fmod(). This solves the
+long-standing problem of the program crashing on Linux machines.
+<p>
+Modify cf_init_support to better deal with counter errors.
+<p>
+In cf_geometric_distort, modify header keyword SPECBINY to reflect
+Y spacing in the FARF.
+<p>
+In cf_ttag_bkgd, set Y limits of 2-D background arrays equal to those
+of the probability (weights) array. Since the sizes are now equal,
+cf_optimal_extraction does not need to test them. Make centroid of
+probability array a float in cf_extract_spectra and associated
+subroutines.
+<p>
+In cf_rebin_probability_array, shift probability array to account
+for position of FPA.
+
+<P>
+This is version 3.0.6 of the CalFUSE pipeline.
+
+<P>
+<hr WIDTH="100%">
+
+<p>March 30, 2004
+<br>Van Dixon
+<BR>v2.4/src/fuv/cf_hist_init.c
+<BR>v2.4/include/calfuse.h v1.173
+
+<P>
+Modified cf_hist_init to produce
+null-valued data file if NEVENTS=0.
+
+<P>
+This is version 2.4.2 of the CalFUSE pipeline.
+
+<P>
+<hr WIDTH="100%">
+
+<p>March 16,2004
+<br>Van Dixon
+<BR>v3.0/src/fuv/cf_extract_spectra.c
+<BR>v3.0/src/fuv/cf_hist_init.c
+<BR>v3.0/src/fuv/cf_ttag_init.c
+<BR>v3.0/src/fuv/cf_bad_pixels.c
+<BR>v3.0/src/fuv/cf_countmap.c
+<BR>v3.0/src/fuv/cf_gainmap.c
+<BR>v3.0/src/fuv/cf_convert_to_farf.c
+<BR>v3.0/src/libcf/cf_astigmatism_and_dispersion.c
+<BR>v3.0/src/libcf/cf_init_support.c
+<BR>v3.0/src/libcf/cf_satellite_jitter.c
+<BR>v3.0/src/libcf/cf_thermal_distort.c
+<BR>v3.0/src/libcf/cf_write_extracted_spectrum.c
+<BR>v3.0/include/calfuse.h v1.57, v1.58
+
+<P>
+Implement WPC array in cf_extract_spectra and associated subroutines.
+<br>In cf_hist_init.c, fix error in correcting hot pixels.
+<br>In cf_ttag_init.c, exit if no photons in raw data file.
+<br>In cf_bad_pixels.c, change maximum size of the output arrays in
+cf_combine_pothole_data and insure that lif_cnt and sic_cnt arrays are
+non zero.
+<br>In cf_countmap.c and cf_gainmap.c, allow user to select coordinate
+system: RAW, FARF (default), final.
+<br>In cf_astigmatism_and_dispersion.c, make subroutine cf_x2lambda globally
+accessible.
+<br>In cf_convert_to_farf.c, pass weight array to cf_thermal_distort.
+<br>In cf_init_support.c, read begin and end counters as float.
+Set countrate to zero when cntb is more than 16777216.
+<br>In cf_satellite_jitter.c, polulate the PLATESC keyword in the input file header.
+<br>In cf_thermal_distort.c, added weights to the calculation (needed for
+histogram mode) and corrected bug in procedure for finding stim pulses.
+<br>In cf_write_extracted_spectrum.c, populate archive search keywords and
+change name of POTHOLE column to QUALITY.
+
+<P>
+This is version 3.0.5 of the CalFUSE pipeline.
+
+<P>
+<hr WIDTH="100%">
+
+<p>February 16, 2004
+<br>Van Dixon
+<BR>v3.0/include/calfuse.h v1.56
+
+<P>
+Release CalFUSE v3.0.4 for beta testing.
+
+<P>
+<hr WIDTH="100%">
+
+<p>May 22, 2003
+<br>Van Dixon
+<BR>v2.4/src/idl/cf_plot_rate.pro
+<BR>v2.4/src/fuv/fcal.c
+<BR>v2.4/src/fuv/cf_make_ttag_bkgd.c
+<BR>v2.4/include/calfuse.h v1.172
+
+<P>
+Modified cf_plot_rate.pro, fcal.c, and cf_make_ttag_bkgd.c to deal
+gracefully with zero-length exposures. Resulting spectral file has
+FLUX and ERROR arrays set to zero.
+
+<P>
+This is version 2.4.1 of the CalFUSE pipeline.
+
+<P>
+<hr WIDTH="100%">
+
+<p>May 19, 2003
+<br>Van Dixon
+<BR>v2.4/src/analysis/cf_combine.c
+<BR>v2.4/include/calfuse.h v1.171
+
+<P>
+Imported two of Jeff's modifications to cf_combine:
+<br>
+Close each input file in initial loop.
+Without this, cfitsio crashes upon opening the 60th file.
+<br>
+Weight each pixel by exposure time after excluding ``bad'' pixels.
+
+<P>
+<hr WIDTH="100%">
+
+<p>May 2, 2003
+<br>Van Dixon
+<BR>v2.4/src/analysis/cf_uninterp.c
+<BR>v2.4/include/calfuse.h v1.170
+
+<P>
+Added cf_uninterp.c to re-calibrate extracted spectra using only
+the most recent flux-calibration file.
+
+<P>
+This is version 2.4.0 of the CalFUSE pipeline.
+
+<P>
+<hr WIDTH="100%">
+
+<p>April 29, 2003
+<br>Van Dixon
+<BR>v2.3/src/fuv/cf_ttag_jitter.c
+<BR>v2.3/src/fuv/cf_hist_jitter.c
+<BR>v2.3/include/calfuse.h v1.169
+
+<P>
+Modified jitter routines to allow possiblity that jitter filename is in
+lower-case letters.
+
+<P>
+<hr WIDTH="100%">
+
+<p>April 25, 2003
+<br>Van Dixon
+<BR>v2.3/src/fuv/cf_fuv_init.c
+<BR>v2.3/include/calfuse.h v1.167, v1.168
+
+<P>
+In cf_fuv_init, never linearly extrapolate calibration files forward in
+time. If an observation is not bracketed by calibration files,
+simply use the latest one.
+
+<P>
+This is version 2.3.2 of the CalFUSE pipeline.
+
+<P>
+<hr WIDTH="100%">
+
+<p>April 16, 2003
+<br>Van Dixon
+<BR>v2.3/src/fuv/cf_fuv_init.c
+<BR>v2.3/include/calfuse.h v1.166
+
+<P>
+In cf_fuv_init, test for corrupted detector bias values. Updated
+comment field of HV_FLAG. Modified associated warning messages.
+
+<P>
+This is version 2.3.1 of the CalFUSE pipeline.
+
+<P>
+<hr WIDTH="100%">
+
+<p>April 15, 2003
+<br>Van Dixon
+<BR>v2.3/src/fuv/cf_ttag_screen.c
+<BR>v2.3/include/calfuse.h v1.165, v1.166
+
+<P>
+Test only first letter of scrn*.fit keyword DAYNIGHT in cf_ttag_screen.
+
+<P>
+<hr WIDTH="100%">
+
+<p>April 2, 2003
+<br>Van Dixon
+<BR>v2.3/src/fuv/cf_ttag_geodopp.c
+<BR>v2.3/src/fuv/cf_ttag_jitter.c
+<BR>v2.3/include/calfuse.h v1.164
+
+<P>
+Simplified DX/DY test in cf_ttag_geodopp. Test that TRKFLG is <= 5
+(the highest allowed value) in cf_ttag_jitter.
+
+<P>
+<hr WIDTH="100%">
+
+<p>April 2, 2003
+<br>Van Dixon
+<BR>v2.3/src/fuv/cf_ttag_geodopp.c
+<BR>v2.3/include/calfuse.h v1.163
+
+<P>
+Test DX and DY values to make sure they are valid before combining
+into mean Doppler shift. NaN values lead to bad-pixels masks full
+of zeros, which lead to empty extracted spectra.
+
+<P>
+<hr WIDTH="100%">
+
+<p>March 10, 2003
+<br>Van Dixon
+<BR>v2.3/src/fuv/cf_ttag_geodopp.c
+<BR>v2.3/include/calfuse.h v1.162
+
+<P>
+Alain Lecavelier points out that, for high-count-rate TTAG data, the
+pipeline produces error bars that are about half of what one would
+expect from SQRT(N) statistics. Turns out that the change that I made
+to cf_ttag_geodopp in March 2002 was in error. I returned the code to
+its previous state, and the error bars are now much better behaved.
+Error bars for histogram data are unaffected by this change.
+
+<P>
+This is version 2.3.0 of the CalFUSE pipeline.
+
+<P>
+<hr WIDTH="100%">
+
+<p>February 24, 2003
+<br>Van Dixon
+<BR>v2.2/src/fuv/cf_make_ttag_bkgd.c
+<BR>v2.2/src/fuv/cf_make_hist_bkgd.c
+<BR>v2.2/include/calfuse.h v1.161
+
+<P>
+Peter Young's Dec Alpha compiler identified a bug in these routines.
+EXPNIGHT is stored in the header as type LONG, but these routines read
+it as type FLOAT. CFITSIO should make the conversion automatically,
+but apparently fails to do so on his machine. I've modified the calls
+to FITS_read_key() in both routines.
+<P>
+<font color=red>This is the release version of CalFUSE v2.2.3.</font>
+
+<P>
+<hr WIDTH="100%">
+
+<p>February 20, 2003
+<br>Van Dixon
+<BR>v2.2/src/libcf/read_tle.c
+<BR>v2.2/src/libcf/sgp4.c
+<BR>v2.2/src/fuv/cf_ttag_jitter.c
+<BR>v2.2/src/fuv/cf_make_ttag_bkgd.c
+<BR>v2.2/src/fuv/cf_extract.c
+<BR>v2.2/src/fuv/cf_driftcorr2.c
+<BR>v2.2/src/fuv/cf_coadd.c
+<BR>v2.2/src/analysis/ttag_combine.c
+<BR>v2.2/include/calfuse.h v1.160
+
+<P>
+Peter Young's Dec Alpha compiler identified two sets of bugs in these routines.
+Several calls to FITS_read_key() or FITS_update_key() used an ampersand incorrectly:
+<br>
+FITS_read_key(fptr, TSTRING, "INSTRUME", &instrument, comment, &status);
+<br>
+and a few routines used abs() when fabs() is required.
+<P>
+P.Y.'s compiler refused to recognize one of the #define keywords in
+sgp4.c, so Bryce Roberts replaced it with the actual value throughout
+the routine.
+
+<P>
+<hr WIDTH="100%">
+
+<p>December 13, 2002
+<br>Van Dixon
+<BR>v2.2/src/fuv/cf_ttag_screen.c
+<BR>v2.2/src/fuv/cf_hist_screen.c
+<BR>v2.2/src/fuv/cf_ttag_burst.c
+<BR>v2.2/src/fuv/cf_ttag_jitter.c
+<BR>v2.2/include/calfuse.h v1.159
+
+<P>
+Modify cf_ttag_screen and cf_hist_screen to write all EXP_* keywords as
+type long. Modify cf_ttag_burst and cf_ttag_jitter to pass through all
+photon events in the stim-pin regions, even during bad times. Have
+them add EXP_BRST and EXP_JITR to EXP_BAD, and write all as type long.
+
+<P>
+Updated CALFUSE version to 2.2.3.
+
+<P>
+<hr WIDTH="100%">
+
+<p>November 8, 2002
+<br>Van Dixon
+<BR>v2.2/src/fuv/cf_extract.c
+<BR>v2.2/include/calfuse.h v1.158
+
+<P>
+Modify cf_extract to write keyword SPECYCNT to outfits, not infits.
+
+<P>
+<hr WIDTH="100%">
+
+<p>November 6, 2002
+<br>Van Dixon
+<BR>v2.2/src/fuv/cf_hist_jitter.c
+<BR>v2.2/src/fuv/cf_ttag_jitter.c
+<BR>v2.2/include/calfuse.h v1.157
+
+<P>
+Make cf_hist_jitter and cf_ttag_jitter issue warning, but continue
+running, if keyword JIT_STAT is not found.
+
+<P>
+<hr WIDTH="100%">
+
+<p>November 1, 2002
+<br>Van Dixon
+<BR>v2.2/src/fuv/cf_hist_jitter.c
+<BR>v2.2/idl/cf_plot_hist_rate.pro
+<BR>v2.2/include/calfuse.h v1.156
+
+<P>
+Make cf_hist_jitter and cf_plot_hist_rate exit gracefully if jitter
+file not found.
+
+<P>
+<hr WIDTH="100%">
+
+<p>October 29, 2002
+<br>Van Dixon
+<BR>v2.2/src/analysis/cf_arith.c
+<BR>v2.2/src/analysis/cf_combine.c
+<BR>v2.2/include/calfuse.h v1.155
+
+<P>
+Corrected error in history lines of both routines.
+
+<P>
+<hr WIDTH="100%">
+
+<p>October 24, 2002
+<br>Van Dixon
+<BR>v2.2/src/fuv/Makefile
+<BR>v2.2/src/fuv/cf_make_hist_bkgd.c
+<BR>v2.2/include/calfuse.h v1.154
+
+<P>
+Add cf_hist_jitter to Makefiles.
+Remove unused variables in cf_make_ttag_bkgd.
+
+<P>
+<hr WIDTH="100%">
+
+<p>October 11, 2002
+<br>Van Dixon
+<BR>v2.2/src/fuv/cf_ttag_jitter.c
+<BR>v2.2/include/calfuse.h v1.153
+
+<P>
+Three changes to cf_ttag_jitter: Initialized nrej to 0, made program
+exit quietly if jitter file not found, and set all times to floats in
+test step, to correct bug whereby some photons were being erroneously
+rejected. Note that the program still rejects photons with times later
+than the end of the input good-time interval. This happens because the
+burst-correction routine converts the GTI boundaries to integers.
+
+<P>
+Updated CALFUSE version to 2.2.2.
+
+<P>
+<hr WIDTH="100%">
+
+<p>August 29, 2002
+<br>Van Dixon
+<BR>v2.2/src/fuv/cf_hist_init.c
+<BR>v2.2/src/fuv/cf_ttag_init.c
+<BR>v2.2/include/calfuse.h v1.152
+
+<P>
+The initialization routines now exit with an error if NEVENTS = 0.
+
+<P>
+<hr WIDTH="100%">
+
+<p>August 28, 2002
+<br>Van Dixon
+<BR>v2.2/src/fuv/cf_hist_jitter.c
+<BR>v2.2/src/libcf/cf_fcal.c
+<BR>v2.2/idl/cf_plot_hist_rate.pro
+<BR>v2.2/include/calfuse.h v1.151
+
+<P>
+cf_hist_jitter reads the jitter file, determines how much time (if any)
+the target spent out of the aperture, and writes this number to the
+keyword EXP_JITR. cf_fcal subtracts this value from EXPTIME when
+flux-calibrating the spectrum. The IDL procedure cf_plot_hist_rate.pro
+plots the count rate during a histogram exposure using counter values
+from the housekeeping file.
+
+<P>
+Updated CALFUSE version to 2.2.1.
+
+<P>
+<hr WIDTH="100%">
+
+<p>July 31, 2002
+<br>Van Dixon
+<BR>v2.2/src/fuv/cf_hist_count_map.c
+<BR>v2.2/src/fuv/cf_ttag_count_map.c
+<BR>v2.2/src/fuv/cf_ttag_gain_map.c
+<BR>v2.2/src/fuv/cf_make_ttag_bkgd.c
+<BR>v2.2/src/fuv/cf_ttag_jitter.c
+<BR>v2.2/src/fuv/cf_update_qual.c
+<BR>v2.2/src/libcf/cf_fuv_init.c
+<BR>v2.2/include/calfuse.h v1.150
+
+<P>
+The SDP group decided that CalFUSE 3.0 should use a radically different
+scheme for processing time-tagged data. In the mean time, we have made
+incremental progress on CalFUSE v2, and we have decided that this
+version of the program should go behind the firewall as soon as
+possible. Accordingly, I copied v2.1.7 to v2.2.0 and have continuued
+to make incremental changes to the code. Highlights are
+
+<P>
+Modify cf_hist_count_map, cf_ttag_count_map, cf_ttag_gain_map, and
+cf_update_qual to read version 002 YSTR files.
+<BR>
+Correct a Linux bug in cf_make_ttag_bkgd.
+<BR>
+Add cf_ttag_jitter and modify cf_fuv_init to support it.
+
+<P>
+Updated CALFUSE version to 2.2.0.
+<P>
+<font color=red>This version of CalFUSE will go behind the firewall on
+1 August 2002.</font>
+
+<P>
+<hr WIDTH="100%">
+
+<p>June 14, 2002
+<br>Van Dixon
+<BR>v2.1/src/fuv/cf_make_ttag_bkgd.c
+<BR>v2.1/include/calfuse.h v1.149
+
+<p>
+Moved v1.16 of cf_make_ttag_bkgd back to CalFUSE v2.1.
+<P>
+Updated CALFUSE version to 2.1.7.
+
+<hr WIDTH="100%">
+
+<p>June 14, 2002
+<br>Van Dixon
+<BR>cf_make_ttag_bkgd.c
+<BR>cf_undistort.c
+<BR>cf_driftcorr.c
+<BR>cf_extract.c
+<BR>cf_dpix.c
+<BR>cf_ttag_screen.c
+<BR>cf_hist_dopp.c
+<BR>cf_wcal.c
+<BR>cf_doppler_util.c
+<BR>calfuse.h v1.151
+
+<br>
+<p>
+In cf_make_ttag_bkgd, correct error when using MKBK_COR=OMIT (1.15) and
+fill in holes made by the removal of geocoronal lines. The latter is
+needed in determination of X variations of scattered light. Re-wrote
+cf_undistort to handle shifts as floats. Modified cf_driftcorr to
+write output as an array of shorts. Modified cf_extract, cf_dpix to
+read linear wavelength scale. Modified read_wavelengths in
+cf_doppler_util and calls to it in cf_ttag_screen and cf_hist_dopp.
+Modified cf_wcal to implement linear wavelength solution.
+<P>
+Updated CALFUSE version to 3.0.1.
+
+<hr WIDTH="100%">
+
+<p>May 30, 2002
+<br>Van Dixon
+<BR>cf_doppler_util.c
+<BR>cf_ttag_screen.c
+<BR>cf_hist_dopp.c
+<BR>cf_dpix.c
+<BR>cf_extract.c
+<BR>calfuse.h v1.150
+
+<br>
+<p>
+In cf_doppler_util, modified read_wavelength no longer to generate and
+return an xpix array, then modified the calling routines cf_ttag_screen
+and cf_hist_dopp accordingly. Modified cf_dpix and cf_extract to
+handle the linear wavelength scale.
+
+<hr WIDTH="100%">
+
+<p>May 29, 2002
+<br>Van Dixon
+<BR>cf_doppler_util.c
+<BR>cf_driftcorr.c
+<BR>cf_update_qual.c
+<BR>calfuse.h v1.149
+
+<br>
+<p>
+In cf_doppler_util, modified the subroutine read_wavelength to handle a
+linear wavelength scale. Installed Rich's new version of cf_driftcorr,
+which puts a correction for the count-rate dependent Y stretch into the
+DY image. Because we no longer need to correct the bad-pixel map for
+the Y stretch, I moved back from v1.8 to v1.5 of cf_update_qual.
+
+<hr WIDTH="100%">
+
+<p>May 21, 2002
+<br>Van Dixon
+<BR>cf_dpix
+<BR>calfuse.h v1.148
+
+<br>
+<p>
+Fixed a couple of bugs in cf_dpix: made LWRS the default aperture and
+allowed the boundary between the SiC and LiF regions to vary with
+detector.
+<p>
+Made this change to both v2.1 and v3.0.
+
+<hr WIDTH="100%">
+
+<p>May 17, 2002
+<br>Van Dixon
+<BR>cf_dtcorr
+<BR>cf_undistort
+<BR>cf_wcal
+<BR>calfuse.h v1.147
+
+<br>
+<p>
+Updated #define keywords in cf_dtcorr. Turned on X-distortion
+correction in cf_undistort and moved it to follow cf_driftcorr2.
+Implemented linear wavelength scale in cf_wcal.
+<p>
+Updated CALFUSE version to 3.0.0.
+
+<hr WIDTH="100%">
+
+<p>May 14, 2002
+<br>Van Dixon
+<BR>cf_make_ttag_bkgd
+<BR>cf_make_hist_bkgd
+<BR>calfuse.h v1.146
+
+<br>
+<p>
+Teach background modules to read compressed background-calibration files.
+<P>
+<font color=red>This is the release version of CalFUSE v2.1.</font>
+
+<hr WIDTH="100%">
+
+<p>April 16, 2002
+<br>Van Dixon
+<BR>cal_fuse_exp_ttag.csh
+<BR>cal_fuse_exp_hist.csh
+<BR>calfuse.h v1.145
+
+<br>
+<p>
+Remove cf_wormcorr from pipeline for now.
+<P>
+Updated CALFUSE version to 2.1.6.
+
+<hr WIDTH="100%">
+
+<p>April 8, 2002
+<br>Van Dixon
+<BR>cf_make_hist_bkgd
+<BR>cf_make_ttag_bkgd
+<BR>cf_ttag_burst
+<BR>bchr*001.fit
+<BR>scrn*013.fit
+<BR>calfuse.h v1.144
+
+<br>
+<p>
+New software from Rich: New BCHR (background characterization) files
+contain the binary extensions that used to be in the SCRN files.
+Pipeline modules were modified to read the new files.
+<P>
+Updated CALFUSE version to 2.1.5.
+
+<hr WIDTH="100%">
+
+<p>March 29, 2002
+<br>Van Dixon
+<BR>cf_make_ttag_bkgd
+<BR>cf_ttag_burst
+<BR>bkgd*005.fit
+<BR>bkgd*006.fit
+<BR>bkgd*007.fit
+<BR>bkgd*008.fit
+<BR>scrn*012.fit
+<BR>calfuse.h v1.143
+
+<br>
+<p>
+New software from Rich: The burst module has been modified to update
+the EXPNIGHT value. The background module has a new procedure for
+determining the intrinsic background from the data. The background
+files should do a better job at short wavelengths. The screening files
+redefine the background sample regions and add a few more geocoronal
+line positions.
+<P>
+Updated CALFUSE version to 2.1.4.
+
+<hr WIDTH="100%">
+
+<p>March 17, 2002
+<br>Van Dixon
+<BR>cf_make_ttag_bkgd
+<BR>cf_make_hist_bkgd
+<BR>cf_ttag_geodopp
+<BR>cf_hist_geodopp
+<BR>calfuse.h v1.142
+
+<br>
+<p>
+Turns out that all of these programs were treating the error arrays as
+sigmas rather than variances (sigma squared). Modified to propagate
+errors correctly.
+
+<P>
+Updated CALFUSE version to 2.1.3.
+
+<hr WIDTH="100%">
+
+<p>February 22, 2002
+<br>Van Dixon
+<BR>cf_fuv_init
+<BR>ttag_combine
+<BR>cf_dtcor
+<BR>calfuse.h v1.141
+
+<br>
+<p>
+Introduced new keyword, RAWTIME, which is equal to EXPTIME before
+CalFUSE starts tossing out data. Modified cf_fuv_init and ttag_combine
+to propagate it correctly.
+<p>
+Modified cf_dtcor to determine exposure time from the keywords CTIME_B
+and CTIME_E, which are the times of the initial and final engineering
+packets from which the counter data were taken.
+<P>
+Updated CALFUSE version to 2.1.2.
+
+<hr WIDTH="100%">
+
+<p>February 15, 2002
+<br>Van Dixon
+<BR>calfuse.h v1.140
+
+<br>
+<p>
+Changed OPUS_VERSION to 2.5.
+
+<hr WIDTH="100%">
+
+<p>February 13, 2002
+<br>Van Dixon
+<BR>cf_fuv_init
+<BR>ttag_combine
+<BR>calfuse.h v1.139
+
+<br>
+<p>
+Modified logic of voltage test in cf_fuv_init. Add COMMENT lines
+to data file header if low voltage found. Respond gracefully if
+bias keywords do not exist.
+<p>
+Modified ttag_combine to respond gracefully if EXPNIGHT does not exist.
+
+<hr WIDTH="100%">
+
+<p>February 12, 2002
+<br>Van Dixon
+<BR>cf_fuv_init
+<BR>calfuse.h v1.138
+
+<br>
+<p>
+Modified cf_fuv_init to check detector voltage and complain if low.
+New volt***001.fit calibration files, VOLT_CAL keyword.
+<P>
+Updated CALFUSE version to 2.1.1.
+
+<hr WIDTH="100%">
+
+<p>January 25, 2002
+<br>Van Dixon
+<BR>cf_ttag_burst
+<BR>calfuse.h v1.137
+
+<br>
+<p>
+Modified cf_ttag_burst to write a list of bursts to an ASCII file.
+
+<hr WIDTH="100%">
+
+<p>January 15, 2002
+<br>Van Dixon
+<BR>ttag_combine
+<BR>calfuse.h v1.136
+
+<br>
+<p>
+Modified ttag_combine to update keyword EXPNIGHT in output file.
+
+<hr WIDTH="100%">
+
+<p>December 7, 2001
+<br>Van Dixon
+<BR>cf_update_qual
+<BR>calfuse.h v1.135
+
+<br>
+<p>
+Richard's new version of cf_update_qual modifies the bad-pixel maps to
+account for the count-rate dependence of the detector Y scale.
+
+<hr WIDTH="100%">
+
+<p>November 30, 2001
+<br>Van Dixon
+<BR>cf_dpix, cf_extract, cf_wormcorr, cf_optextract, cf_spexextract,
+cf_plot_extract.pro, cal_fuse_exp_ttag.csh, cal_fuse_exp_hist.csh,
+parm**007.fit
+<BR>calfuse.h v1.134
+
+<br>
+<p>
+In earlier versions of the pipeline, the shift to correct for FPA
+offsets was performed by cf_wcal. We have moved it earlier in the
+pipeline, right after the astigmatism correction, and combine the
+FPA corrections with the other shifts in order to have a single
+float-to-integer conversion. The new module is called cf_dpix.
+
+<p>
+cf_extract now reads the keyword RUN_OPTI, rather than OPT_EXTR, from
+the parameter file. It also writes the Y centroid of each spectrum to
+the corresponding output file header.
+
+<p>
+Sylvestre added software to identify the worm in the LiF 1B spectrum:
+cf_wormcorr reads the keyword RUN_WORM from the parameter file. If
+RUN_WORM = LIF, SIC, or BOTH, the program attempts to identify the
+region of the worm and write the range of affected pixels (WORM_BEG and
+WORM_END) to the output file header. The IDL routine
+cf_plot_extract.pro draws a ring around the worm, if found.
+
+<p> Modified cal_fuse_exp_ttag.csh and cal_fuse_exp_hist.csh to call
+both cf_dpix and cf_wormcorr. Modified calfuse.h to include new
+processing keywords DPIX_COR and WORM_COR.
+
+<hr WIDTH="100%">
+
+<p>November 27, 2001
+<br>Van Dixon
+<BR>cf_ttag_screen
+<BR>calfuse.h v1.133
+
+<br>
+<p>
+Changed the way that cf_ttag_screen treats user-defined good-time
+intervals. Now takes intersection of them with pre-defined intervals
+(from OPUS or cf_ttag_combine) before screening. Also changed the
+module to apply all screens (SAA, day/night, limb angle, pulse height)
+regardless of where the good-time intervals came from. Screening can
+be turned off by modifying the <tt>scrn*.fit</tt> files, if desired.
+
+<hr WIDTH="100%">
+
+<p>November 21, 2001
+<br>Van Dixon
+<BR>cf_update_qual
+<BR>calfuse.h v1.132
+
+<br>
+<p>
+Installed Rich's new QUAL files. Modified cf_update_qual to read them.
+
+<hr WIDTH="100%">
+
+<p>November 16, 2001
+<br>Van Dixon
+<BR>calfuse.h v1.131
+
+<br>
+<p>
+Defined NO_PIXEL in calfuse.h. Used by geometric-distortion and
+extraction routines.
+
+<hr WIDTH="100%">
+
+<p>October 26, 2001
+<br>Van Dixon
+<BR>cf_dtcor
+<BR>calfuse.h v1.130
+
+<br>
+<p>
+Modified cf_dtcor to set counters to zero if values are too large to
+read as longs.
+
+<hr WIDTH="100%">
+
+<p>October 26, 2001
+<br>Van Dixon
+<BR>cf_fuv_init
+<BR>calfuse.h v1.129
+
+<br>
+<p>
+Modified cf_fuv_init to check header keyword OPUSVERS and complain if
+the data file was processed using an old version of OPUS.
+
+<hr WIDTH="100%">
+
+<p>October 10, 2001
+<br>Van Dixon
+<BR>cf_ttag_init
+<BR>calfuse.h v1.128
+
+<br>
+<p>
+Modified cf_ttag_init to reset the keywords SPECBINX, SPECBINY,
+SIA_TBL, and NUM_HIST without checking their current value.
+This code was moved from cf_ttag_image, where it had been
+commented out in April 2001.
+<p>
+Added keyword OPUS_VERSION to calfuse.h
+<p>
+Updated CALFUSE version to 2.1.0.
+
+<hr WIDTH="100%">
+
+<p>October 10, 2001
+<br>Van Dixon
+<BR>ttag_combine
+<BR>flux*008.fit
+<BR>calfuse.h v1.127
+
+<br>
+<p>
+Rich Robinson has made numerous upgrades to ttag_combine. Among other
+things, it can now handle the DX, DY and DNFLG columns added by
+cf_ttag_init.
+<p>
+Jeff Kruk has produced new flux-calibration files
+based on the latest wavelength calibration.
+<p>
+Updated CALFUSE version to 2.0.5.
+<font color=red>This is the release version of CalFUSE v2.0.</font>
+
+<hr WIDTH="100%">
+
+<p>October 2, 2001
+<br>Van Dixon
+<BR>wave*014.fit
+
+<br>
+<p>
+Don Lindler has produced new wavelength files appropriate for data that
+do NOT have the walk correction applied to their stim pins.
+They were created by taking the previous line locations and correcting
+them before fitting by:
+
+<pre>
+ xx = ((x-leftF)/(rightF-leftF))*(right1-left1)+left1
+ xcor = ((xx-left2)/(right2-left2))*(rightF-leftF)+leftF
+where:
+ left1,right1 are the measured STIM positions when the walk correction
+ was applied to the STIMs
+ left2,right2 are the measured STIM positions when the walk correction
+ was not applied to the STIMs
+ leftF, rightF - are the FARF STIM positions
+ x - is the measured x position in the spectra that had the walk
+ correction applied to the STIMs
+ xcor is the corrected x position that would be expected if the walk
+ correction was not applied to the STIMs
+</pre>
+
+<hr WIDTH="100%">
+
+<p>September 21, 2001
+<br>Van Dixon
+<BR>scrn*010.fit
+
+<br>
+<p>
+Version 008 had new PHA limits. Version 009 had new information for
+background models. Version 010 has both.
+
+<hr WIDTH="100%">
+
+<p>September 17, 2001
+<br>Van Dixon
+<br>calfuse.h 1.126
+<BR>cf_make_ttag_bkgd
+
+<br>
+<p>
+New version of background routine reads the keyword BKGDTYPE in the
+screening file. Default value is 1; if set to -1, routine does not
+perform an iterative fit to the observed scattered light.
+<P>
+Installed new wavelength calibration files, v013, which are corrected
+for the motion of the stim pins due to walk correction in previous
+versions of the pipeline.
+<P>
+Updated CALFUSE version to 2.0.4.
+
+<hr WIDTH="100%">
+
+<p>September 11, 2001
+<br>Van Dixon
+<br>calfuse.h 1.125
+<BR>cf_ttag_walk
+<BR>cf_hist_walk
+
+<br>
+<p>
+Don't apply walk correction to photons/pixels within STIM_PAD (512)
+pixels of the detector edge. New walk-correction files (v003) have
+zeros in the stim-pin region.
+
+<hr WIDTH="100%">
+
+<p>September 5, 2001
+<br>Van Dixon
+<br>calfuse.h 1.124
+<BR>cf_make_ttag_bkgd
+<BR>cf_extract
+
+<br>
+<p>
+If MKBK_COR is set to OMIT, cf_make_ttag_bkgd changes it to SKIPPED.
+cf_extract copies the keyword OPT_EXTR into the FITS file headers.
+
+<hr WIDTH="100%">
+
+<p>August 30, 2001
+<br>Van Dixon
+<br>calfuse.h 1.123
+<BR>cf_make_ttag_bkgd
+
+<br>
+<p>
+New cf_make_ttag_bkgd iteratively fits dark-count and scattered-light
+components of the background to deal with the fact that the dark count
+varies with time. Spits out a file filled with zeros if MKBK_COR
+is set to OMIT.
+<P>
+New wavelength calibration files. Updated CALFUSE version to 2.0.3.
+
+<hr WIDTH="100%">
+
+<p>August 23, 2001
+<br>Van Dixon
+<br>calfuse.h 1.122
+<br>cf_fuv_init
+<br>cf_ttag_burst
+<br>cf_ttag_walk
+<br>cf_hist_walk
+<br>cf_astig
+<BR>cf_make_hist_bkgd
+<BR>cf_make_ttag_bkgd
+<BR>cf_bkgd
+
+<br>
+<p>
+Replaced keyword TBURST with EXP_BRST in cf_ttag_burst.
+<p>
+Enable user to turn off the burst rejection, walk correction,
+background subtraction, or astigmatism correction by changing keywords
+in parm**006.fit. cf_fuv_init reads the PARM file and changes the
+appropriate keywords (e.g., BRST_COR) from PERFORM to OMIT. Subsequent
+pipeline steps check their keyword; if it is OMIT, they change the
+value to SKIPPED, issue a warning, and exit, copying input to output if
+appropriate. Updated CALFUSE version to 2.0.2.
+
+<hr WIDTH="100%">
+
+<p>August 21, 2001
+<br>Van Dixon
+<br>calfuse.h 1.121
+<br>cf_wcal
+<br>cf_fpa_pos
+<br>cf_ttag_init
+
+<br>
+<p>
+Moved cf_fpa_pos from cf_wcal to libcf. ttag_combine uses this routine
+to determine the FPA positions and complains if an FPA moves by more
+than 10 microns between exposures.
+
+<hr WIDTH="100%">
+
+<p>August 20, 2001
+<br>Van Dixon
+<br>calfuse.h 1.120
+<br>cf_ttag_init
+<br>cf_dtcor
+
+<br>
+<p>
+Header keywords SPECBINX and SPECBINY should be 1 for ttag data. An
+old version of OPUS set these to 0. Changed cf_ttag_init to update
+these parameters if it finds them equal to 0. Also updated cf_dtcor to
+use Dave Sahnow's new parameters for dead-time correction. Added a
+check: if DET_DEAD > 2.0, assume it's wrong and set to 1.0.
+
+<hr WIDTH="100%">
+
+<p>July 25, 2001
+<br>Van Dixon
+<br>calfuse.h 1.119
+<br>cf_astig.c
+
+<br>
+<p>
+New version of cf_astig employs Sylvester's cross-correlation routine
+to determine spectral centroids. New PHAM, WAVE, and FLUX files.
+Updated CALFUSE version to 2.0.1.
+<br><font color=red>This is the beta-test version of CalFUSE v2.0.</font>
+
+<hr WIDTH="100%">
+
+<p>July 2, 2001
+<br>Van Dixon
+<br>calfuse.h 1.118
+<br>cf_ttag_init.c
+<br>cf_ttag_screen.c
+<br>cf_ttag_burst.c
+<br>cf_make_ttag_bkgd.c
+<br>cf_make_hist_bkgd.c
+
+<br>
+<p>
+Implemented Richard's new background modeling routine, which
+independently computes the day- and night-time contributions to the
+scattered-light background. To do so, he adds an extra column, DNFLG,
+to all of the photon-event files. Package includes improvements
+to the burst-screening algorithm. Updated CALFUSE version to 2.0.0.
+
+<hr WIDTH="100%">
+
+<p>June 29, 2001
+<br>Van Dixon
+<br>calfuse.h 1.114
+<br>lsrd_vel.c
+<br>lsrk_vel.c
+
+<br>
+<p>
+Changed sign returned by the LSR correction subroutines to conform with
+astronomical standard. Updated CALFUSE version to 1.9.9
+
+<hr WIDTH="100%">
+
+<p>June 19, 2001
+<br>Jeff Kruk
+<br>helio_vel.c
+<p>
+Alex Fullerton determined that we have been applying the heliocentric
+velocity correction with the wrong sign. The orbital dopper correction
+has been applied with the correct sign. The function helio_vel.c
+inverts the sign returned by the SLALIB routines, so the simplest
+correction is to remove this sign inversion.
+
+<hr WIDTH="100%">
+
+<p>April 10, 2001
+<br>Van Dixon
+<br>calfuse.h 1.111
+<br>cf_hist_walk.c 1.1
+<br>cal_fuse_exp_hist.csh
+
+<br>
+<p>
+Installed new module to apply walk correction to histogram data.
+Modified shell script cal_fuse_exp_hist.csh to call this routine.
+Added PHAM entry to CALIBRATION_FILE_KEYS in calfuse.h. Updated
+CALFUSE version to 1.9.8
+
+<hr WIDTH="100%">
+
+<p>April 2, 2001
+<br>Van Dixon
+<br>calfuse.h 1.110
+<br>cf_ttag_walk.c 1.1
+<br>cal_fuse_exp_ttag.csh
+<br>cal_fuse_exp_hist.csh
+
+<br>
+<p>
+Installed new module to apply walk correction. Modified shell
+scripts cal_fuse_exp_ttag.csh and cal_fuse_exp_hist.csh to call this
+routine. Added WALK entry to CALIBRATION_FILE_KEYS in calfuse.h.
+Updated CALFUSE version to 1.9.7
+
+<hr WIDTH="100%">
+
+<p>March 28, 2001
+<br>Van Dixon
+<br>calfuse.h 1.109
+<br>cf_extract.c 1.52
+<br>cal_fuse_exp_ttag.csh
+<br>cal_fuse_exp_hist.csh
+
+<br>
+<p>
+Installed new module to perform optimal extraction. Modified shell
+scripts cal_fuse_exp_ttag.csh and cal_fuse_exp_hist.csh to call this
+routine. In calfuse.h, added definition of cf_optextract and new
+arguments to cf_spextract. Updated CALFUSE version to 1.9.6
+
+<hr WIDTH="100%">
+
+<p>March 27, 2001
+<br>Van Dixon
+<br>calfuse.h 1.108
+<br>cf_make_bkgd.c 1.22
+<br>cal_fuse_exp_ttag.csh
+<br>cal_fuse_exp_hist.csh
+
+<br>
+<p>
+Installed new module to scale background calibration file. Modified
+shell scripts cal_fuse_exp_ttag.csh and cal_fuse_exp_hist.csh to call
+this routine (instead of cf_make_bkgd_temp). Add AIRG entry to
+CALIBRATION_FILE_KEYS in calfuse.h. Updated CALFUSE version to 1.9.5
+
+<hr>
+
+<p>March 19, 2001
+<br>Van Dixon
+<br>calfuse.h 1.107
+<br>cf_ttag_burst.c 1.9
+<br>cal_fuse_exp_ttag.csh
+<br>cal_fuse_exp_hist.csh
+
+<br>
+<p>
+Installed new module to reject data during detector bursts. Modified
+shell scripts cal_fuse_exp_ttag.csh and cal_fuse_exp_hist.csh to call
+this routine. Modified Makefiles to install it. Updated CALFUSE
+version to 1.9.4
+
+<hr>
+<p>March 14, 2001
+<br>Van Dixon
+<br>calfuse.h 1.106
+<br>cf_astig.c 1.8
+<br>cal_fuse_exp_ttag.csh
+<br>cal_fuse_exp_hist.csh
+
+<br>
+<p>
+Installed new program to implement astigmatism correction, now called cf_astig.
+Modified shell scripts cal_fuse_exp_ttag.csh and cal_fuse_exp_hist.csh to call
+this routine. Modified Makefiles to install it.
+Updated CALFUSE version to 1.9.3
+
+<hr>
+<p>February 9, 2001
+<br>Jeff Kruk
+<br>calfuse.h 1.105
+<br>cf_ttag_screen.c 1.55
+
+<br>
+<p>
+Add checks to cf_ttag_screen.c to ensure that user-defined good time intervals
+actually fit within the time spanned by the dataset, and that in each case the
+end of a good time interval is later than the beginning. Invalid user GTI's
+are ignored. Also added printout to trailer file of the number of events that
+were rejected by pulse height limits. Updated CALFUSE version to 1.9.2
+
+<hr>
+<p>February 8, 2001
+<br>J.C. Hsu
+<br>calfuse.h 1.104
+<br>cf_linear.c 1.0
+<br>cf_transform1d.c 1.0
+<br>cf_1dff.c 1.0
+<br>cf_make_1dff.c 1.0
+
+<br>
+<p>
+Install programs needed to perform 1-D flat fielding. All Makefiles updated.
+The "official" pipeline shell scripts were not updated; users wishing to try
+the 1-D flatfields should edit their local copies of the shell scripts for
+the time being. Thus, the pipeline version was not updated.
+
+<hr>
+<p>December 21, 2000
+<br>Paul Barrett, J.C. Hsu
+<br>Makefile.Alpha
+<br>cf_ttag_screen.c 1.54
+<br>cf_ttag_image.c 1.22
+<br>cf_ttag_init.c 1.16
+<br>cf_wcal.c 1.25
+
+<br>
+<p>
+In response to problems encountered by Vincent LeBrun installing
+calfuse on a DEC Alpha running True64, we made a number of changes.
+The main one was to correct type mismatches in cfitsio calls:
+in a number of cases an "int" variable was referenced as TLONG and vice versa.
+Added -ieee flag to compiler options in Makefile.Alpha.
+cf_ttag_image: fix type mismatches in cfitsio calls
+cf_ttag_init: fix type mismatches in cfitsio calls
+cf_ttag_screen: fix type mismatches in cfitsio calls
+cf_wcal: fix type mismatches in cfitsio calls
+This is the first instance in which v1.9.1 differs from v1.8.7, and no
+change in functionality was involved, so the pipeline version was
+not updated.
+
+<hr>
+<p>November 15, 2000
+<br>Jeff Kruk
+<br>cf_make_ff_temp.c 1.6
+<br>cf_make_bkgd_temp.c 1.6
+<br>cf_ttag_screen.c 1.53
+
+<br>
+<p>
+Fixed typos in print statements in several routines.
+No change in functionality resulted, so the pipeline version number
+was not incremented.
+
+<hr>
+<p>October 19, 2000
+<br>Jeff Kruk
+<br>CALFUSE 1.9.1
+<br>calfuse.h 1.103
+
+<br>
+<p>
+Created CALFUSE version 1.9.1 as the new development version.
+calfuse.h was updated to reflect the new version number.
+
+<hr>
+<p>October 18, 2000
+<br>Martial Andre, Jeff Kruk
+<br>cf_extract.c 1.47
+<br>calfuse.h 1.102
+
+<br>
+<p>
+The image centroid (in Y) for extended sources is once again calculated
+including airglow lines. In many cases extended sources are very faint
+and the airglow will help locate the spectra. Extended sources will
+ordinarily fill the slits in the same manner as airglow, so the accuracy
+of the centroid calculation will not be adversely affected.
+<p>
+Changed CALFUSE version to 1.8.7.
+
+<hr>
+<p>October 13, 2000
+<br>Jeff Kruk
+<br>cf_ttag_screen.c 1.52
+<br>cf_extract.c 1.46
+<br>cf_fuv_init.c 1.9
+
+<br>
+<p>
+Three calls to FITS_read_key (infits, TSTRING, keyword, &arrayname,...) in the
+program cf_ttag_screen were modified to remove the extraneous ampersand.
+<p>
+One call to FITS_read_key (infits, TSTRING, keyword, &arrayname,...) in
+cf_extract.c was modified to remove the extraneous ampersand. Also
+fixed a bug in the test for the variable ystop_bis being out of limits.
+<p>
+CF_VER_NUM was brought up to date in cf_fuv_init.c
+
+<P>These changes are too small to update the version number of the pipeline.
+
+<hr>
+<p>October 2, 2000
+<br>Jeff Kruk, JC Hsu
+<br>cf_hist_dopp 1.25
+<br>calfuse.h 1.101
+<br>cal_fuse_exp_ttag.csh
+<br>cal_fuse_exp_hist.csh
+
+<br>
+<p>
+The program cf_hist_dopp was modified to incorporate corrections for
+grating thermal motion. The mean motion for the exposure is added to
+the doppler correction.
+<p>
+The shell script cal_fuse_exp_hist.csh was
+modified to call cf_make_shift and to pass the resulting shift file
+to cf_hist_dopp.
+<p>
+The include file calfuse.h was modified to include the function prototype
+for lif_sic_border() (see below), and to change the MKSH_COR
+histogram pipeline entry in CALIBRATION_STEP_KEYS to PERFORM.
+<p>
+The shell scripts cal_fuse_exp_ttag.csh and cal_fuse_exp_hist.csh were
+modified to test cfstat before calling the idlplot routines.
+
+<P>The pipeline version number was incremented to 1.8.6.
+
+<hr>
+<p>October 2, 2000
+<br>Jeff Kruk
+<br>cf_check_point 1.17
+<br>cf_hist_screen 1.21
+<br>cf_ttag_screen 1.51
+
+<br>
+<p>
+The programs cf_hist_screen and cf_ttag_screen were modified to
+update the keyword EXPNIGHT, newly created to provide the number of
+seconds of exposure time (after screening) that were obtained during
+the night side of the oribt. This keyword will be used by an upcoming
+version of cf_bkgd.
+<p>
+The function cf_check_point was modified to return a flag indicating
+whether the satellite was in daylight or night at the time being
+checked.
+
+<P>The pipeline version number was updated for an additional change made
+later in the day.
+
+<hr>
+<p>October 2, 2000
+<br>Jeff Kruk, JC Hsu
+<br>lif_sic_border() 1.00
+
+<br>
+<p>
+The function lif_sic_border() was extracted from cf_hist_dopp.c
+and make a function in libcf so that it would be available for
+the upcoming 1-D version of cf_ff. The libcf Makefiles were modified
+accordingly.
+
+<P>No change in functionality resulted, so no update to the pipeline
+version number was made.
+
+<hr>
+<p>October 2, 2000
+<br>Jeff Kruk
+<br>state_limb 1.08
+
+<br>
+<p>
+The function state_limb() was modified (v1.08) to include fortran
+function prototype wrappers for the new slalib calls introduced by
+the previous change (slaDcc2s, slaEvp, slaDranrm).
+
+<P>This change was solely for running Make on the distribution version
+of calfuse, so no update to the pipeline version number was made.
+
+<hr>
+<p>September 26, 2000
+<br>Martial Andre
+<br>state_limb 1.05, 1.06, 1.07
+<br>cf_check_point 1.16
+<br>cf_orbit 1.03
+<br>calfuse.h 1.98, 1.99, 1.100
+
+<br>
+<p>
+The function state_limb() was modified (v1.05) to calculate the limb angle
+constraint in the same way as is done by the mission planners:
+it checks if the limb itself is in daylight or night, rather than the
+old simplistic method of seeing if the satellite was in day or night.
+This required a modification to the call to state_limb.
+Versions 1.06, 1.07 of state_limb were to fix minor bugs.
+<p>
+The function cf_check_point (v1.16) and the program cf_orbit (v1.03) were
+modified to make use of this new limb angle constraint calculation.
+<p>
+The include file calfuse.h (v1.98, v1.99) was modified to provide the
+proper function prototype for the new versions of state_limb and
+cf_check_point.
+
+<P>These changes led to the increase in pipeline version number to 1.8.5
+(implemented by version 1.100 of calfuse.h).
+
+
+<hr>
+<p>September 18, 2000
+<br>Ed Murphy
+<br>Pipeline Distribution Version
+
+<br>
+<p>
+Ed Murphy & Paul Barrett produce distribution version of pipeline.
+Major change was to incorporate "makemake" files.
+
+<P>Update the version number of the pipeline to v1.8.4.
+
+<hr>
+<p>September 18, 2000
+<br>Ed Murphy
+<br>cf_astig2 1.07
+
+<br>
+<p>
+Ed made some change, not documented in the header.
+
+<P>Since this routine is still in testing, I have not updated the
+pipeline version number. The new version of cf_astig2.c is 1.07.
+
+
+<hr>
+<p>September 6, 2000
+<br>Jeff Kruk
+<br>cf_dtcor 1.18
+
+<br>
+<p>
+Jeff Kruk modified cf_dtcor.c to populate three new keywords
+in the FUV header:
+DEAD_DET Detector dead time factor
+DEAD_IDS IDS dead time factor
+DEAD_TOT Combined dead time factor
+
+New version of cf_dtcor.c is 1.18. He also changed sunmath.h to math.h.
+
+<P>These changes are too small to update the version number of the pipeline.
+
+<hr>
+<p>September 5, 2000
+<br>Ed Murphy
+<br>cf_astig2 1.06
+
+<br>
+<p>
+Modify cf_astig2 to get the calibration file from the ASTG_CAL keyword
+rather than being hardcoded.
+
+<P>Since this routine is still in testing, I have not update the
+pipeline version number. The new version of cf_astig2.c is 1.06.
+
+<hr>
+<p>August 25, 2000
+<br>Ed Murphy
+<br>cf_astig2 1.05
+
+<br>
+<p>
+Jeff Kruk found that cf_astig2 crashed on all segment 1B data. The
+routine lacked any boundary checking and was running off the bottom
+of the image when attempting to centroid the SiC spectrum. The
+centroiding routines have been updated to include boundary checking.
+
+<P>I also added the ability for the routine to check the number
+of arguments.
+
+<P>Since this routine is still in testing, I have not update the
+pipeline version number. The new version of cf_astig2.c is 1.05.
+
+<hr>
+<p>August 23, 2000
+<br>Martial Andre
+<br>cf_extract 1.44
+
+<br>
+<p>
+Martial fixed a bug in the initialization of column_sum that caused a
+fatal bus error.
+The change is too small to update the pipeline version number.
+<P>
+
+<hr>
+<p>August 18, 2000
+<br>Ed Murphy
+<br>cf_update_qual 1.03
+
+<br>
+<p>
+I added calls to cf_proc_check and cf_proc_update to cf_update_qual
+to rid the trailer files of the warnings concerning the QUAL_COR
+keyword. New version of cf_update_qual is 1.03. The change is too
+small to update the pipeline version number.
+<P>
+
+<hr>
+<p>August 14, 2000
+<br>Martial
+<br>cf_extract 1.43
+
+<br>
+<p>
+To avoid the centroid to be shifted close to the bright edge, the procedure should compute the size of
+the scanning window for each different channel (the changes done in version 1.41 were wrong!!!)
+<P>
+
+<hr>
+<p>August 13, 2000
+<br>Martial
+<br>cf_coadd 1.17
+
+<br>
+<p>
+Propagation of quality should have been done with float since the very beginning (now fixed).
+<P>
+
+<hr>
+<p>August 9, 2000
+<br>Martial
+<br>cf_extract 1.42
+
+<br>
+<p>
+Added a define statement to use sunmath only ifdef SOLARIS.
+<P>
+
+<hr>
+<p>July 26, 2000
+<br>J. C. Hsu, R. Robinson, Ed Murphy
+<br>cf_update_qual v1.02
+<br>cf_driftcorr2 v1.23
+
+<p>J. C. Hsu has written a program cf_update_qual to update the quality
+flags in the *_img.fit files after the drift correction has been
+determined. The FARF positions of the dead spots and edges of the detectors
+were determined by Rich Robinson and are in the qual*001.fit calibration
+files. The drift correction is used to correct for the strecth/shift
+in going from the FARF to the observed data frame.
+
+<p>When implementing cf_update_qual, Ed Murphy noticed that cf_driftcorr2
+was centroiding the stims incorrectly. The error arose because the
+algorithm was computing the stim centroid in a box that had an extent
+of +-256 in X. Since the stims are at pixel ~230 (on segment 1a) the
+centroiding box was including counts along the X=0 column, which
+skewed the centroid. In the particular observation that he used
+to test the routine (M999 flat field) the X=0 column was particularly
+bright due to the high count rates in a stim lamp observation. This
+problem probably does not effect most observations, since the X=0 column
+is normally much weaker. He also modified cf_driftcorr2 to use the
+FARF stim positions given in calfuse.h as opposed to the positions that
+were hard coded into the routine.
+<P>
+Ed Murphy created V1.8.3.
+
+<hr>
+<p>July 21, 2000
+<br>Martial
+<br>cf_extract 1.41
+
+<br>
+<p>
+Fixed bug of implementation of a pointer in im_centroid wich caused a bus error.
+<P>
+
+<hr>
+<p>June 27, 2000
+<br>Jeff Kruk
+<br>cf_dtcor v1.17
+
+<p>Jeff Kruk added an IDS dead time correction to the dead time correction
+routine cf_dtcor.c.
+
+<P>
+Ed Murphy created V1.8.2 and V1.7.8.
+
+<hr>
+<p>June 26, 2000
+<br>Martial
+<br>cf_coadd v1.15
+
+<p>Now the default resolution of the coadded spectra is 0.1 Angstrom. This way,
+we make sure that astronomers outside JHU don't use them for science purpose
+(since some of the channels are currently misaligned => artefacts). Note that
+the user is still free to have maximal resolution by tuning the arguments.
+
+<hr>
+<p>June 20, 2000
+<br>Ed Murphy
+<br>cf_ttag_screen 1.49, cf_hist_dopp v1.23
+<br>PR 41926
+
+<br>
+<p>
+Peter Young noticed that the Doppler shift in pixels for the SiC and
+LiF spectra on segment 1a were both in the same direction. Since the
+dispersions run in opposite directions, the two shifts should be opposite
+in sign. The DISPAPIX keyword in the wavelength calibration file records
+the average dispersion in Angstroms/pixel. It should be positive when
+the wavelength increases with increasing pixel number and it should be
+negative when the wavelength decreases with increasing pixel number
+(SiC1 and LiF2). However, I found that the DISPAPIX keyword was always
+positive in the recent versions of the wavelength calibration files.
+Therefore, for SiC1 and LiF2, the sign of the Doppler and heliocentric
+corrections are incorrect.
+
+<P>
+I have modified the code in cf_ttag_screen and cf_hist_dopp to read in
+the absolute value of DISPAPIX and compute the sign of the shift based
+on the aperture to which the photon belongs. The new version of
+cf_ttag_screen is 1.49 and the new version of cf_hist_dopp is 1.23.
+
+<P>
+I have also removed the flat-fielding step from the pipeline. Even
+though we do not have a flat-field file, we have been applying a flat
+field (filled with 1's) to the data so that we could incorporate a bad
+pixel mask. However, we are not stretching/shifting the flat field file
+(since it is all 1's) to match the data which means that the bad pixel
+mask does not line up with the data. J.C. Hsu is in the process of
+writing a new module to properly apply the bad pixel mask. However,
+the routine cf_ttag_geodopp.c still requires the _ff.fit file, so we
+must still run cf_make_ff_temp. This intermediate _ff.fit data file
+contains all 1's over the active area of the detectors, and 0's
+everywhere else. Since we are not running the cf_ff, the locations
+where the flat field is 0 are not being flagged as bad. This was
+causing cf_ttag_geodopp to report a lot of "Divide by zero in ffbuf"
+errors. For now, I have turned off the warning in cf_ttag_geodopp.
+
+<P>
+Ed Murphy created V1.8.1 and V1.7.7.
+
+<hr>
+<p>June 13, 2000
+<br>Martial
+<br>cf_extract 1.40
+<br>
+
+<br>
+<p>
+The algorithm of finding the centroid has been totally changed. Now the position
+of the spectrum is reached via a maximisation of the flux in the extraction window.
+Moreover, the airglows are systematically screened to center only on the source.
+
+<hr>
+<p>June 9, 2000
+<br>Martial
+<br>cf_extract 1.39
+
+<br>
+<p>
+Airglow screened while computing the centroid.
+<P>
+<hr>
+<p>June 9, 2000
+<br>Martial
+<br>cf_extract 1.38
+
+<br>
+<p>
+Major change to calculate the centroid. Center is reached for flux maximum.
+<P>
+<hr>
+<p>June 4, 2000
+<br>Martial
+<br>Version 7 of the extraction windows
+<br>
+
+<br>
+<p>
+The way the windows are calculated changed drastically. Using the parameter of the distortion
+correction, the shape of each window has been simplified (butterfly or trapeze) and the
+weigth files are filled with parabolic profiles (first approximation). For more details
+see /data1/fuse/calfuse/v1.8/src/cal/extraction_masks/README
+
+
+<hr>
+<p>May 24, 2000
+<br>Martial
+<br>cf_extract 1.37
+
+<br>
+<p>
+Added a define statement for the cpp and DEC
+<P>
+<hr>
+<br>
+<hr>
+<p>May 18, 2000
+<br>Jeff Kruk, Ed Murphy
+<br>cf_wcal 1.24
+
+<br>
+<p>
+Jeff Kruk upgraded cf_wcal to read either the new FPA keywords (FPASXPOS
+or FPALXPOS) or the old keywords (FP1SXPOS, FP1LXPOS, FP2SXPOS, or
+FP2LXPOS). New version is 1.24.
+<P>
+Ed Murphy created V1.8.0.
+
+
+<hr>
+<p>May 17, 2000
+<br>Jeff Kruk, Ed Murphy, Paul Barrett
+<br>CALFUSE v1.7.6
+
+<br>
+<p>
+Jeff Kruk has completed the new version of cf_dtcor.
+<P>
+Ed Murphy found and corrected a bug in cf_extract that prevented the
+SiC extraction windows from being reset to the default position if
+the centroid was more than EMAX_SIC pixels from the exptected position.
+<P>
+Paul Barret changed the interpolation algorithm back to a constant (to
+prevent ringing around the outside of the spectrum) and fixed a bug in
+that implementation.
+
+<hr>
+
+<p>May 12, 2000
+<br>Jeff Kruk, Paul Barrett
+<br>CALFUSE v1.7.5
+
+<br>
+<p>
+Jeff Kruk has modified cf_wcal.c (now version 1.23) to correct the
+wavelength scale for the position of the FPA.
+<P>
+Paul Barrett has produced new versions of the detector distortion
+files: geom*005.fit in /data1/fuse/calfuse/calfiles.
+
+<hr>
+
+<p>April 24, 2000
+<br>Ed Murphy
+<br>CALFUSE v1.7.4
+
+<br>
+<p>
+The pipeline can now generate a few diagnostic plots (using IDL) while
+it is running if the CF_IDLDIR environment variable is set to point to
+the location of the IDL programs. To set up the pipeline to make the
+plots, add the following to your .cshrc or .login file:<BR>
+setenv CF_IDLDIR '/data1/fuse/calfuse/current/idl/'
+<P>
+The plots are in GIF format so that they can, at some future time,
+be linked to the SDOG pages.
+<hr>
+<p>April 24, 2000
+<br>Ed Murphy
+<br>CALFUSE v1.7.4
+
+<br>
+<p>
+Development on V1.7.4 of the pipeline has been frozen. Only bug fixes
+will be made from now on. The current stable version of the pipeline
+now points to V1.7.4. You will need new calibration files, new
+parameter files, and a new master_calib_file.dat
+<P>
+Upgrades (besides those listed in previous messages) include:
+<ol>
+<li> Both the code (V1.7.*) and calibration files are now in the
+Flight Alignment Reference Frame. This means that the stretch and
+shift has been reduced from about 120 pixels in X to less than 10
+pixels in X.
+<li> Improved wavelength calibration from Don Lindler.
+<li> Improved flux calibration from Jeff Kruk.
+<li> Improved distortion correction from Paul Barrett.
+<li> The user now has the ability to scale the background by a simple
+scalar value when using pulse height screening. The value to scale
+the background is in the PHA_BKGD keyword in the screening parameter
+file.
+<li> The user now has the ability to limit the motion of the spectral
+extraction windows based on the pipeline determined centroid. If the
+difference between the expected and actual positions is larger than
+the limit, the pipeline defaults to the expected position. The limit
+is set using the EMAX_LIF and EMAX_SIC keywords in the parm**002.fit
+files.
+<li> The user now has the ability to ignore the pipeline determined
+centroid and place the extraction windows where ever they wish using
+the SPEX_SIC and SPEX_LIF keywords in the parm**002.fit files. Note
+that the maximum motion limit described above still applies.
+</ol>
+
+<hr WIDTH="100%">
+
+<p>March 24, 2000
+<br>Paul Barrett
+<br>CALFUSE v1.7.4
+<br>PR 41000
+<p>It has been suggested that a higher order interpolation scheme be used
+when expanding the binned histogram data, instead of the current constant
+interpolation scheme. A quadratic average interpolation algorithm has been
+implemented in cf_hist_init. This algorithm uses data from neighboring
+pixels to interpolate the data in binned pixles while conserving the total
+number of counts per binned pixel. This routine has been tested.
+<p>This modification to cf_hist_init will now allow histogram data to be
+used for determining distortion corrections by providing necessary spatial
+resolution.
+<hr WIDTH="100%">
+<p>March 7, 2000
+<br>Ed Murphy
+<br>CALFUSE V1.6.9 and V1.7.3
+<br>PR 40864
+
+<p STYLE="margin-bottom: 0in">In the SDOG report for P1320101 Jeff Kruk
+found that the pipeline seemed to be excessively screening out data that
+was near, but not violating, the night time limb angle limit. I found flawed
+logic in the limb angle check in cf_check_point.c that meant that the bright
+limb angle was always used regardless of the day/night flag. The problem
+has been corrected (cf_check_point.c now V1.15) and the routine has been
+tested.
+<br>
+<hr>
+<p>February 10, 2000
+<br>Ed Murphy
+<br>CALFUSE V1.6.8 and V1.7.2
+<br>PR 40661
+
+<p STYLE="margin-bottom: 0in">Bill Oegerle noticed that the pipeline was
+not subtracting the background from some recently processed datasets. The
+pipeline has been in this state since sometime around the end of December
+1999. I fixed the problem in both versions of the pipeline: new versions
+are V1.6.8 and V1.7.2
+<p>The problem was found in cf_make_bkgd_temp.c, which is a temporary module
+designed to read in the background calibration file and write it into the
+*ttagf_bkgd.fit file needed by the pipeline. The module does not stretch
+or shift the background image but does scale the background by the integration
+time. In the calibration file, the background image is composed of short
+integers with the value 1 everywhere. The keyword BSCALE gives the number
+of square cm per pixel, so that the file contains the number of counts
+per pixel per second. The original version of cf_make_bkgd_temp.c read
+in the calibration image and wrote it out directly, without converting
+the input image to floats. All it did was multiply BSCALE by the integration
+time, so that when cf_bkgd.c read in the file and scaled by BSCALE, the
+resulting image would be background counts per pixel for the full integration.
+<p>In late December 1999, it was decided to rewrite cf_make_bkgd_temp.c
+to rebin the data for histogram mode observations. In this case, the new
+routine read in the calibration file array (all 1), converted the background
+image to floats by applying BSCALE, rebinned the data (if necessary), and
+wrote out an array of floats. However, the header was copied from the input
+file, so the BSCALE keyword still remained even though the data had already
+been scaled as part of the routine. In addition, the step where BSCALE
+was multiplied by the integration time also remained in the new version.
+Therefore, when cf_bkgd.c read in the *ttagf_bkgd.fit intermediate file,
+it used the BSCALE keyword a second time. The result was that the subtracted
+background was about two orders of magnitude too small.
+<p>Because the pipeline now unbins the histogram data, we have reverted
+back to the original versions of the routines which do not rebin the data
+and do not suffer from this problem. The new version of cf_make_bkgd_temp.c
+is V1.4.&nbsp;
+<hr>
+<p>February 1, 2000
+<br>Ed Murphy
+<br>CALFUSE V1.6.7 and V1.7.1
+<br>PR 40541
+
+<p STYLE="margin-bottom: 0in">A few histogram data sets were crashing the
+pipeline becuause of a bad pixel value that was larger than 32767. This
+value was large enough that it would not fit into a short integer in the
+pipeline and cfitsio would return a data conversion error. Jim Rose has
+agreed to modify the OPUS pipeline to find pixel values larger than 32767
+and change them to the data fill value 21865. As seen below, the pipeline
+will convert the data fill value to 0.0 and change its quality flag to
+bad.
+<hr>
+<p>February 1, 2000
+<br>Ed Murphy
+<br>CALFUSE V1.6.7 and V1.7.1
+<br>PR 40544
+
+<p STYLE="margin-bottom: 0in">A number of histogram data sets have fill
+data in them (decimal 21865) which the pipeline was not filtering out.
+I have modifed v1.6.7 and v1.7.1 of the pipeline to check pixels for the
+fill data value. If the fill data value is found, it will replace the data
+with 0.0 and change the quality flag to bad.
+<hr>
+<p>January 31, 2000
+<br>Ed Murphy
+<br>CALFUSE V1.6.7 and V1.7.1
+<br>PR 40553
+
+<p STYLE="margin-bottom: 0in">Until now, the DATE keyword in the header
+was not modified by any of the modules in the pipeline, even though its
+comment stated that it was the "date the file was written." I have modified
+cf_proc_update.c to update the DATE keyword. Since cf_proc_update is called
+at the end of each module of the pipeline, the output files and all intermediate
+data products will now have accurate dates and times in the DATE keyword.
+This change was made to both V.1.6.7 and V1.7.1 of the pipeline.
+<hr>
+<p>January 24, 2000
+<br>Martial
+<br>CALFUSE V1.6 and V1.7
+
+<p STYLE="margin-bottom: 0in">CENTROIDING PROBLEMS FIXED :
+
+<p STYLE="margin-bottom: 0in">Until now, the cf_extract procedure was unable
+to perform a good centroiding in Y when very few counts were involved.
+Since we used the formula : Ycenter = (<font face="symbol">&aring;</font>
+Yi * nbcounts_i)/<font face="symbol">&aring;</font>nbcounts_i, where nbcounts_i
+is the total number of counts along the row i, the result was depending
+on the Y limits of the sum. For instance, if the upper limit equals infinity,
+the result is infinity (do not forget that the noise is different of 0).
+So, to use this formula, we need a first guess for the position of the
+center in order
+
+<p STYLE="margin-bottom: 0in">to choose a domain of calculation surrounding
+it. At present, this first guess is the maximum peak.
+<br>
+<hr>
+<p>January 21, 2000
+<br>Martial
+<br>CALFUSE V1.6 and V1.7
+
+<p STYLE="margin-bottom: 0in">The new extraction windows are now available
+(spex*005.fit). This is the first set of In Orbit Based Extraction Windows
+: all the apertures have the same window (based on 100 percent with LWRS).
+
+<p STYLE="margin-bottom: 0in">The associated weight files are also available
+(wgts*003.fit). Note that since the raw windows extracted from In Orbit
+Data are very noisy, I had to smooth and correct the geometrical distorsions
+, sometimes " by hand ".
+<br>&nbsp;
+<table BORDER CELLSPACING=3 CELLPADDING=4 >
+<caption><COL WIDTH=85><COL WIDTH=85><COL WIDTH=85><THEAD>
+<br></THEAD><TBODY>
+<br></TBODY></caption>
+
+<tr VALIGN=TOP>
+<th>Detector</th>
+
+<th>Data Used</th>
+
+<th>Notes</th>
+</tr>
+
+<tr VALIGN=TOP>
+<td>1A (LiF)</td>
+
+<td>/data2/fuse/CAL/M101/M1010201</td>
+
+<td>Good&nbsp;</td>
+</tr>
+
+<tr VALIGN=TOP>
+<td>1A (SiC)</td>
+
+<td>/data2/fuse/CAL/M103/M1030303</td>
+
+<td>Good&nbsp;</td>
+</tr>
+
+<tr VALIGN=TOP>
+<td>1B (LiF)</td>
+
+<td>/data2/fuse/CAL/M101/M1010201</td>
+
+<td>Corrected by hand : mirror transformation applied</td>
+</tr>
+
+<tr VALIGN=TOP>
+<td>1B (SiC)</td>
+
+<td>/data2/fuse/CAL/M103/M1030304</td>
+
+<td>Corrected by hand : linear regression for the narrow domain</td>
+</tr>
+
+<tr VALIGN=TOP>
+<td>2A (LiF)</td>
+
+<td>/data2/fuse/CAL/M101/M1010201</td>
+
+<td>Good</td>
+</tr>
+
+<tr VALIGN=TOP>
+<td>2A (SiC)</td>
+
+<td>/data2/fuse/CAL/M103/M1030304</td>
+
+<td>Good&nbsp;</td>
+</tr>
+
+<tr VALIGN=TOP>
+<td>2B (LiF)</td>
+
+<td>NOT AVAILABLE</td>
+
+<td>Here I didn't find a signal strong enough ... I used the old Ground
+Based Files + geometrical correction</td>
+</tr>
+
+<tr VALIGN=TOP>
+<td>2B (SiC)</td>
+
+<td>/data2/fuse/CAL/M103/M1030304</td>
+
+<td>Ground Based Files + geometrical correction</td>
+</tr>
+</table>
+
+<div STYLE="margin-bottom: 0in"></div>&nbsp;
+
+
+<p STYLE="margin-bottom: 0in">Note also that you can change the windows
+with "cf_modifwindows" wich apply an homothetic factor to the LiF channel
+and the SiC channel :
+
+<p STYLE="margin-bottom: 0in">>cf_modifwindows filename 0.8 (80% for LiF)
+0.9 (90% for SiC)
+<br>
+<hr>
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<p>January 5, 2000
+<br>Ed Murphy
+<br>CALFUSE V1.6 and V1.7
+
+<p STYLE="margin-bottom: 0in">By popular demand, I have written a program
+to convert an ASCII file to the 1-D FITS extracted format that comes out
+of the pipeline. The program is called ascii2fits and is in the /usr/local/fusesw/calfuse/current/bin
+directory. The program takes 3 arguments: Calling sequence:ascii2fits ascii_file
+template_fits_file output_fits_file The ASCII file must have six columns:
+wavelength (float) flux (float) errors (float) quality flags (int) counts
+(float) errors on counts (float) The template FITS file is used to populate
+the header keywords. It can be any raw or pipeline processed file.
+<br>
+<hr>
+<p>January 03, 2000
+<br>Paul Barrett
+<br>CALFUSE V1.6.5
+
+<p STYLE="margin-bottom: 0in">Overlapping pixels are now averaged by cf_hist_geodopp.
+This is a temporary fix to minimize the effect on the spectrum due to a
+mis-match between the BARF and FARF, i.e. it removes the spikes from the
+spectrum.
+<br>
+<hr>
+<p>December 21, 1999
+<br>Ed Murphy
+<br>CALFUSE V1.7.1
+
+<p STYLE="margin-bottom: 0in">Version 1.7.1 of the pipeline is now in the
+FARF frame, however, the calibration files are not.
+<br>
+<hr>
+<p>December 21, 1999
+<br>Ed Murphy
+<br>CALFUSE V1.6.5
+
+<p STYLE="margin-bottom: 0in">The dead time correction step has been removed
+from the pipeline. The new version of pipeline is V1.6.5. The pipeline
+module itself was fine. However, Dave Sahnow has found that the on-board
+counters behave strangely at low count rates (in addition to behaving strangely
+in the SAA). Until this issue is resolved, we will not dead time correct
+the data.
+<br>
+<hr>
+<p>December 21, 1999
+<br>Ed Murphy
+<br>CALFUSE V1.6.4
+
+<p STYLE="margin-bottom: 0in">Histogram data currently show strong spikes
+approximately once per Angstrom. This behavior is not unexpected. It comes
+from the fact that we have to compress the image in the X direction by
+about 110 pixels in order to bring the data into the reference frame of
+the calibration files. Until we can redefine the calibration file reference
+frame and remake all our calibration files, this behavior will be present
+in the data.
+<br>
+<hr>
+<p>December 17, 1999
+<br>Ed Murphy
+<br>CALFUSE V1.6.4
+<p>Version 1.6.4 of the CALFUSE pipeline is now frozen. In the future,
+only bug fixes will occur. The /usr/local/fusesw/calfuse/current directory
+will now point to v1.6. All development will take place in v1.7.
+<p>Upgrades include:
+<ol>
+<div STYLE="margin-bottom: 0in">The histogram pipeline finally works. The
+histogram images are, for now, expanded out to 16384x1024 in size to avoid
+some of the binning problems we were encountering.</div>
+
+
+<p STYLE="margin-bottom: 0in">The spectral thermal shifts are now removed
+from the data using Kathy's algorithm. If you have a local copy of the
+calibration files, will need to copy the new version of master_calib_file.dat
+from /data1/fuse/calfuse/parmfiles and the new calibration file shft001.fit
+from /data1/fuse/calfuse/calfiles.
+
+<p STYLE="margin-bottom: 0in">In ttag data, the calculated centroid of
+the target aperture is used to offset all apertures to account for movememnt
+in the Y direction. In the past, each aperture was centroided and offset
+independently. However, because of the overlapping spectra on side 2, the
+HIRS aperture centroid often caused the HIRS extraction to contain significant
+flux from the LWRS aperture.
+<p>A large number of small items were taken care of (keyword updates, minor
+bug fixes, etc.).</ol>
+
+<div STYLE="margin-bottom: 0in">REMINDER: Many people directly reference
+"v1.5" rather than "current" in their PATH and LD_LIBRARY_PATH. If you
+do this, be sure to change both PATH and LD_LIBARARY_PATH to v1.6. Otherwise,
+you will be running the pipeline with outdated copies of the library routines
+since we are now using dynamically linked libraries (linked in at run time).</div>
+
+<br>
+<hr>
+ <address><a href="mailto:emurphy@pha.jhu.edu">Ed Murphy</a></address>
+<!-- Created: Fri Apr 28 15:14:57 EDT 2000 -->
+<!-- hhmts start -->
+Last modified: Monday, December 10 2001
+<!-- hhmts end -->
+ </body>
+</html>