Wavelength Solutions
OSIRIS wavelength solutions are derived from arc lamp illumination of every lenslet column. By default, we use Kbb 50 mas data. The script to take wavelength solution data is located at /home/osrseng/larkin/scripts/measure_full_arcs. It will deliver a total of 57 frames.
Copy the wavelength scan data to /home/osrseng/syeh/wavelengthCalibration/arclineCalibration. E.g., from s250612_c001001.fits to s250612_c002057.fits.
In the same directory, the code for solving wavelength solutions is named
solve_global_wave_[year]_[config].pro. E.g., solve_global_wave_2025_Kbb050.pro
In this file, edit the following lines accordingly.
basename = "s250612_c002001.fits"
altbasename = "s250612_c002001.fits" ;; if taken on different UT dates
suffix = 'jun2025_mpfit' ;; root for save files
inttime = 60 ;; integration time in secondsThen we need to examine the x and y pixel values of each reference arc line in either DS9 or ql2.
The reference arc lines are located at the 19th row (counting from the top) in data frame 028.
Update the x and y pixel values of each reference arc line in this block (cx and cy) in solve_global_wave_2025_Kbb050.
pro solve_global_wave_2025_Kbb050
;; June 2025 arc data
lamp = [ 'Ar', 'Ne', 'Ne', 'Ne', 'Ar', 'Ne', 'Ar', 'Ar', 'Ar', 'Ar', 'Xe', 'Ar' ]
inten = [ 2.5, 5, 15, 3, 5, 6, 5, 5, 10, 20, 10, 3 ]
cx = [ 372, 420, 445, 577, 622, 834, 994, 1186, 1381, 1514, 1641, 1801 ]-1
cy = [ 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1441, 1441, 1442, 1442, 1442 ]-1
lambda = [ 2385.154, 2371.5599, 2364.2934, 2326.6619, 2313.952, 2253.6528, 2208.321, 2154.009, 2099.194, 2062.186, 2026.777, 1982.291 ]
Note the -1 in cx and cy arrays. This accounts for the 1-pixel shift in each direction between DS9 and ql2. DS9 pixels begin at 1, while ql2 pixels begin at 0. In this example, we examined data in DS9.
Edit the following lines accordingly in analyze_fit:
pro analyze_fit
;; look at some diagnostics of the fit
suffix = 'jun2025_mpfit'
filename = "s250612_c002028.fits"
;; June 2025 arc data
lamp = [ 'Ar', 'Ne', 'Ne', 'Ne', 'Ar', 'Ne', 'Ar', 'Ar', 'Ar', 'Ar', 'Xe', 'Ar' ]
inten = [ 2.5, 5, 15, 3, 5, 6, 5, 5, 10, 20, 10, 3 ]
cx = [ 372, 420, 445, 577, 622, 834, 994, 1186, 1381, 1514, 1641, 1801 ]-1
cy = [ 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1441, 1441, 1442, 1442, 1442 ]-1
lambda = [ 2385.154, 2371.5599, 2364.2934, 2326.6619, 2313.952, 2253.6528, 2208.321, 2154.009, 2099.194, 2062.186, 2026.777, 1982.291 ]
Compile and run solve_global_wave_2025_Kbb050, followed by analyze_fit
IDL> .comp solve_global_wave_2025_Kbb050
% Compiled module: SOLVE_GLOBAL_WAVE_2025_KBB050.
% Compiled module: ANALYZE_FIT.
IDL> solve_global_wave_2025_Kbb050
% Compiled module: READFITS.
% Compiled module: SXPAR.
% Compiled module: GETTOK.
IDL> analyze_fit
% Compiled module: READFITS.
% Compiled module: SXPAR.
% Compiled module: GETTOK.
% Compiled module: VALID_NUM.analyze_fit will produce arcline plots and check if the lines and pixels are correct. If the lines appear to show a 1-pixel offset, check whether you used DS9 or ql2 to determine arcline pixels.
solve_globale_wave_2025_Kbb050 produces the files as follows.
coeffs_jun2025_mpfit.fits
sigma_jun2025_mpfit.fits
xfwhm_jun2025_mpfit.fits
yfwhm_jun2025_mpfit.fits
xcen_jun2025_mpfit.fits
ycen_jun2025_mpfit.fits
wavelength_jun2025_mpfit.fits
locations_jun2025_mpfit.fits
Update coeffs_jun2025_mpfit.fits in callibrations.xml in DRP.