SEE_ALSO

## NAME

fitgrid -- Find best match between input file and a grid of spectra

## USAGE

`fitgrid input spectrum`

## DESCRIPTION

This task reads an input spectrum from a table. It then computes each
spectrum in a list of spectra, scales them to the same flux as the
input spectrum, and computes the squared difference between it and the
input spectrum. The two spectra with the smallest squared difference
are then selected and a least squares solution is performed to get the
best linear interpolation between these two spectra. The resulting fit
can optionally be saved in a table by setting the parameter `output`
to a filename.

## PARAMETERS

- input [file name]
- The name of a spectrophotometry file. The spectrophotometric table can
have the columns WAVELENGTH, FLUX, STATERROR, and FWHM. The WAVELENGTH
and FLUX columns contain the wavelength and values of flux at that
wavelength, respectively. The STATERROR and FWHM columns contain the
respective errors of the FLUX and WAVELENGTH columns. If the
spectrophotometry file is an ascii file, the first through fourth
columns are the wavelength, flux, staterror, and fwhm and the third
and fourth columns are optional. The contents of the STATERROR column
are used in weighting the data points if they are present and if
`equal`is set to no. The FWHM column is not used by this task.

- spectrum [string]
- A list of spectra to be compared to the input spectrum. The list can
be placed in a file, whose name is passed to this parameter, preceded
by a "@" character, .e.g.,
`@filename`. Each line in the file is treated as a separate spectrun. Alternatively, the string`$0`can be placed in the expression and the values of vzero will be substituted for the string, creating a list of spectra. The form of a synphot expression is discussed in detail in the help file for the`calcspec`task.

- (output = "none") [string]
- The name of the output table containing the fitted spectrum. If
`output`is set to "none" or left blank, no table will be produced. The output table contains the best fit from the list of spectra to the input spectrum. The flux units are the same as the input spectrophotmetry file. The header of the table contains the names of the graph and component lookup tables and the model expression.

- (vzero = " ") [string]
- A list of values to substitute for variable zero. Each value in the
list is substituted in turn for the string
`$0`wherever it occurs in the input spectrum. The values must be real numbers. Using vzero is the equivalent of placing the input spectrum several times in a file, with each spectrum containing one of the values in the list. The list may contain single values or ranges. The endpoints of the ranges are separated by a dash. An optional step size follows the range, preceded by the letter`x`. If the step size is not present, the step size defaults to 1 or -1, depending on the order of the endpoints. The following table gives several examples of valid lists.1,.2,.3,.4 A list of single values .1-.4x.1 The same list expressed as a range -1 - -4 A range with an implicit step size of -1 1-9,10-20x2 A list of more than one range

- (ftol = 1.0e-5) [real, min = 0.0, max = INDEF]
- The fractional tolerance convergence criterion. Iteration of the least
square fit ceases when the scaled distance between two successive
estimates of the fit variables is less than this value. Each
component of the scaled distance is scaled by dividing the difference
between the two estimates by half their sum. Please note that the fit
soulution may not converge to an arbitrarily small value, instead it
may cycle between several values, so setting
`ftol`to too small a value may result in failure of the solution to converge.

- (maxiter = 500) [int, min = 1, max = INDEF]
- The maximum number of iterations to be performed. If convergence is not achieved in this number of iterations, then the task stops execution with a warning message to that effect.

- (nprint = 0) [int, min = 0, max = INDEF]
- The number of iterations between diagnostic prints. If
`nprint`is set to zero, there will be no diagnostic prints. Diagnostic prints are sent to STDERR and contain the number of the iteration, the chi squared value, and the model spectrum with the trial values of the fit variables.

- (slow = no) [bool]
- Select which method to use to compute the least squares fit. If
`slow`is set to no, it uses the Levenberg Marquardt method and if it is set to yes, it uses the downhill simplex method. The Levenberg Marquardt method computes an approximation to the matrix of second derivatives of the model in order to extrapolate to the point where the chi squared is a minimum. The downhill simplex method constructs a polygon of trial points and replaces the point with the highest chi squared with a new point with a lower chi squared, chosen by one of a set of strategies. The Levenberg Marquardt method usually converges on the solution in a fewer number of iterations, but the downhill simplex method will converge to the solution from a wider range of initial estimates.

- (equal = no) [bool]
- Select whether to weight the data points when computing the chi
squared. If
`equal`is set to no and the input table contains the staterror column, data points will be weighted according to their errors. Points with indefinite, negative, or zero errors are not used in the fit. If`equal`is set to yes or the staterror column is zero, the data points will not be weighted.

- (refdata = "") [pset name]
- Parameter set for reference data used in calculations.
This pset contains the following parameters:
area = 45238.93416: HST telescope area in cm**2. grtbl = "mtab$*.tmg": HST graph table. By default, this uses the most recent version. cmptbl = "mtab$*.tmc": Instrument component table. By default, this uses the most recent version.

## EXAMPLES

1. Fit a series of model spectra to the spectrum of Eta Ursa Majoris. The model spectra are contained in the file grid.lis:

crrefer$grid/bpgs/bpgs_4.tab crrefer$grid/bpgs/bpgs_9.tab crrefer$grid/bpgs/bpgs_13.tab crrefer$grid/bpgs/bpgs_20.tab

The resulting fit will be saved in fitgrid.tab.

sy> fitgrid crcalspec$eta_uma_002.tab @grid.lis out=fitgrid.tab Final solution: 0.6101387 * 0.1324818 * (crrefer$grid/bpgs/bpgs_9.tab) + (1. - 0.6101387) * 0.4985421 * (crrefer$grid/bpgs/bpgs_13.tab)

2. Fit a black body to the spectrum of Eta Ursa Majoris instead:

sy> fitgrid crcalspec$eta_uma_002.tab "bb($0)" out=fitgrid.tab \ >>> vz=10e3-30e3x1e3

Final solution: 0.6134695 * 4711.343 * (bb(19000.)) + (1. - 0.6134695) * 3840.553 * (bb(20000.))

## REFERENCES

Written by B.Simon based on XCAL code written by Keith Horne.