There are four applications to do a wavelength calibration, or at least a calibration into spectroscopic values anyway. You can use frequencies or photon energies if you feel like it. You can also use nanometre, micrometre or Ångström, as you please.
At the heart of this axis calibration is an algorithm written by Mills (1992) to automatically identify features in an arc spectrum. For this to work, you must have a data base of arc feature identifications rather than just a simple line list. You can use arcgendb to convert a line list (as distributed with Figaro) into a ``feature data base''. Unfortunately the data base takes some time to build and is also rather big, 10 to 100 times bigger than the simple list. So there may be a point in taking only the relevant wavelength range from long line lists like Th-Ar and converting it into a feature data base.
With such a data base at your disposal, you still cannot run the auto-identifier. This is because the calibration procedure as performed by Figaro's arc is broken up into three steps:
Instead of arclocat you can also use fitgauss or fittri, in case that the simplified line fit in arclocat is not good enough. arclocat has modes Gauss and triangle, too, but it fits only one line at a time.
The improvement of feature identification is one goal of arcdisp. The other is to do a polynomial fit to the pixel-wavelength relation and to convert pixel coordinates into wavelengths using that fit. This latter goal can also be achieved without the graphics dialogue with arcdisp dialog=n. This does not replace the pixel coordinates of the main NDF, but creates a new array of spectroscopic values in the Specdre Extension.
arclocat, arcident and arcdisp in general work not on a spectrum, but on an image or cube that has spectra in its rows (rows, not columns). arclocat dialog=g allows you to switch from one row to another as you please, arclocat dialog=n will scan through all rows in sequence. arcident will do an independent auto-identification on each spectrum, so it is suitable for a collapsed échellogram where successive extracted orders are in the rows of an image.
arcdisp dialog=g will work on each row in sequence, you can work on one row and proceed to the next in your own time. You can quit at any time; this will leave the file without spectroscopic values, but any improved feature identifications are kept. If you step through all rows, then the spectroscopic values will be kept as well. (You can have spectroscopic values in the Specdre Extension either for all rows or none at all!) You may want to set the label and unit for the spectroscopic values after arcdisp with KAPPA's setlabel and setunits.
So far you have only succeeded in producing an array of calibrated spectroscopic values in the Specdre Extension of the arc spectrum. You will want to copy that array into the celestial observation you are actually interested in. This can be done with ndfcopy, provided the sky spectrum does have a Specdre Extension and does not have a SPECVALS component in it. That status can be achieved by two editext commands. Finally you may want to re-sample each spectrum (row in a cube) so that all use the same linear grid of spectroscopic values. To that end you use resamp mode=cube. Here is the whole procedure. (The commands are not complete; parameters are missing. Also there may be no Th-Ar line lists available for photon energies in the MeV range.)
ICL> arcgendb thar.arc thar_arc ICL> arclocat dialog=n arc1 ICL> arclocat dialog=g arc1 ICL> arcident arc1 arc2 thar_arc ICL> arcdisp arc2 ICL> setlabel arc2.more.specdre.specvals "particle energy" ICL> setunits arc2.more.specdre.specvals "log10(10**9*eV)" ICL> editext "create" sky1 ICL> editext "delete specvals" sky1 ICL> ndfcopy arc2.more.specdre.specvals sky1.more.specdre.specvals ICL> resamp cube sky1 sky2
FIGARO A general data reduction system