Go Terps!
The Maryland-Magellan Tunable Filter
MMTF Public Software

We provide here a set of Fortran routines and Perl scripts to (1) calibrate the MMTF; (2) subtract sky background from data; and (3) create annular image masks.

This software is permanently installed on the computers at Magellan, but is provided here for the user's convenience when doing calibrations and data reduction elsewhere.

Please send questions, comments, and bug reports to Michael McDonald

Version 1.3, 3 Sep 2010 (Post April '08 Data)


Version 1.11, 23 June 2008 (Pre April '08 Data)


The package README file is as follows:

Maryland-Magellan Tunable Filter software package

Send comments and bug reports to David Rupke at drupke@astro.umd.edu.


A set of Fortran routines and Perl scripts to (1) calibrate the MMTF
for observing and data reduction; (2) subtract sky background from
data; and (3) create annular image masks.


1.0   08jan16   Initial public release.

1.1   08mar03   Small changes for functionality and "good practice."

Changes: Fixed bug in RINGBATCH.
         More helpful FPSOLVE outputs, and new help text.
         Rearranged directory structure to be more intuitive.
         Explicit declarations of variables in source files.
         Finished separation of (most) subroutines into library files.

1.11  08jun23   Added functionality and bug fixes.

Changes: RING now accepts input sky spectrum for sky subtraction.
         New routine XYDRIFT computes expected parallelism drift.
         RING computes IMACS gravity angle.

1.2   08jul30   Updated for new, red-sensitive CCD

Changes: RING and RINGDRIFT now look for ift prefix instead of ccd
         RING now uses a lookup table for focal length (like wcalc)
         OPTAXIS.DAT file has been updated for new CCD
         CCD-to-focal plane transformation updated for new CCD

1.21  10jan20  Added functionality and bug fixes.

1.22  10apr05  Automated optical axis routine
               Bug fixes

1.3   10sep03  Automated sausage routine, added new documentation

Changes: RING, RINGDRIFT and SAUSAGE all require the gravity angle
           to be with 10 degrees of 0 to function.
	 Filter lookup is more robust to slight differences in name


Ben Weiner, David Rupke, and Mike McDonald


a. GFORTRAN (part of the GCC version 4+ distributions):

   OR Mac OSX binaries at

   OR various platform binaries at

b. PGPLOT library:

c. CFITSIO library:


0.  Edit the Makefile to specify the PGPLOT and FITSIO library
    locations for your system.  Be sure that the environment variable
    PGPLOT_DIR is set properly, so that PGPLOT can find the
    appropriate font files, etc.

1.  Run make:

    % make all

2.  Run the set-up file (sets path and PGPLOT options):

    % source setup.sh

    For long-term use, put the contents of setup.sh in your local
    configuration file.

3.  Copy the optaxis.dat file to your data directory, and adjust the
    optical axis location if necessary.

4.  Download and try out the demo.  Run programs with no arguments to
    see optional command-line arguments.

    Create a radial spectrum for a single image:
    % ring ccd1156 6400

    Create radial spectra for multiple images:
    % ringbatch 1156 1164 6400

    An example parallelism test:
    % ringplot 1156 1164

    Produce a "data sausage" for wavelength calibration:
    % fitsausage 38 83 2

    Compare two radial spectra, checking for wavelength drift:
    % ringdrift 1156 1162

    Compare two exposures, checking for parallelism drift:
    % xydrift 1156 1162


FITSAUSAGE -- Execute the SAUSAGE routine and create the IRAF commands
necessary to fit lines in the resulting spectrum.

FPSOLVE -- Solve the Fabry-Perot equation (relating wavelength,
Z_fine, and distance from the optical axis) for unknown parameters,
given information from a data sausage about the Z_fine values of lamp
emission lines (and possibly their relative order numbers and optical
axis radii).  Used for wavelength calibration.

OPTAXIS -- Find the optical axis of the Fabry-Perot etalon, given
centers of point sources and their corresponding primary ghost
reflections.  (The axis of reflection is the optical axis.)

RADMASK -- Create an annular image mask, centered on the optical axis.

RING -- Create an azimuthally-averaged, radial spectrum from an MMTF
image.  Optionally, turn this spectrum into an image of the background
and subtract it from the original image (to, e.g., subtract the sky
from data).

RINGBATCH -- Execute the RING routine in batch mode.

RINGDRIFT -- Compare peak wavelengths of the same calibration lamp
emission line taken at the same Z_fine but at different times.  Used
for measuring drift in the intercept of the wavelength - Z_fine
relation.  Requires radial spectra prodcued by RING routine.

RINGPLOT -- View multiple radial spectra at once, organized in a grid
of X_fine and Y_fine values.  Used for testing etalon parallelism.
Requires radial spectra prodcued by RING routine.

SAUSAGE -- Create a spectrum of a "data sausage."  A data sausage is a
series of subrastered MMTF images of a calibration lamp, taken at a
series of Z_fine settings for the purpose of wavelength calibration.
The software will attempt to find the appropriate wavelength calibration
automatically, but care should be taken to make sure that this solution
is reliable. If uncertain, the user should try a manual calibration (see

XYDRIFT -- Compare a parallel (reference) and out-of-parallel
exposure, and compute the necessary change in X and Y to
re-parallelize the etalon. This is done by determining the change in
gravity angle between the two exposures and using a lookup table to
determine the necessary adjustments to X and Y.