Correction for EIS Line Centre Variations Due To Orbital Motion Using Instrument Temperatures#
An empirical model has been developed to reproduce the drift of the EIS spectrum using instrumental house keeping temperatures and relative motion of the spacecraft, see S. Kamio et al (2010).
(Click here to see a complete list of all new and modified SolarSoft routines)
The wavelength correction can be found using eis_wave_corr_hk.pro, the gethkwavecorr() method of the eis_data object or eis_prep.pro. All procedures use specially prepared house keeping data files that are distributed with SolarSoft in the directory $EIS_DATA/wave_corr. If the house keeping files that are needed for correcting a certain EIS raster are missing in your SolarSoft installation, the new routines will search for the files in $EIS_WAVE_CORR_HK_DATA (if this environment variable is set), and in the current working directory. If the files are not found, they will automatically be downloaded from the Oslo archive and saved in $EIS_WAVE_CORR_HK_DATA (if set) or to the current working directory (if not set).
The following three examples demonstrate different methods to obtain the new wavelength correction. The example data-set is specified through
IDL> paths = '~/hinodedata/eis/mission/2007/12/11/eis_l0_20071211_162413.fits.gz'
(please modify the path to the location where your Hinode data are stored) and the data-file can be obtained here.
1. eis_wave_corr_hk.pro#
This is simply a wrapper procedure calling the necessary methods of the eis_data object. It is called with the same parameters as the well known eis_wave_corr.pro:
IDL> eis_wave_corr_hk, paths, wvl_corr_hk, dw_tilt_hk, dw_t_hk ; The two last parameters are optional IDL> plot, dw_t_hk,/xst,/yst IDL> eis_wave_corr, paths, wvl_corr, dw_tilt, dw_t ; The two last parameters are optional IDL> oplot, dw_t, line=2
In addition eis_wave_corr_hk takes two keywords:
- wvl_cube: If set to a named variable, wvl_cube will return a 3 dimensional wavelength cube in the format used by mk_analysis.pro of the Component Fitting System for IDL (cfit) package.
- lam: the underlying methods of eis_data calculates the wavelength correction in pixels, and we assume that the shift in pixels is the same for all lines formed at any location on the two detectors. However, when measured in Angstroms the line centre variation and the slit tilt will vary slightly with wavelength. As default, eis_wave_corr_hk assumes that the corrections are to be calculated for the Fe XII 195 Å line, but the lam keyword may be set to the wavelength of the line you want to investigate.
IDL> eis_wave_corr_hk, paths, wvl_corr_hk2, dw_tilt_hk2, dw_t_hk2, wvl_cube=wvl_cube, lam=284.16 IDL> help, wvl_cube IDL> loadct,12 & oplot, dw_t_hk2, color=170 ; The 284.16 plot is very similar to the 195.12 plot
Finally, eis_wave_corr_hk can take a level 0 or level 1 eis_data object reference as input instead of a file name:
IDL> o = obj_new('eis_data',paths) IDL> eis_wave_corr_hk, o, wvl_corr
2. gethkwavecorr(), a new eis_data method#
When creating an eis_data object, the aux_data will contain two new null pointers, hkpixcorrtilt and hkpixcorrtime:
IDL> o = obj_new('eis_data',paths) IDL> help, o->getaux_data(),/str
The two pointers will become valid when the method gethkwavecorr() is called (i.e. when you try to access the contents of the pointers):
IDL> corr = o->gethkwavecorr() IDL> help, corr,/str IDL> help, o->getaux_data(),/str
The gethkwavecorr() may be called with a wavelength as input parameter, or with the keyword wvl_cube set, to get the same functionality as for the eis_wave_corr_hk wrapper as explained above.
IDL> corr = o->gethkwavecorr(/wvl_cube) IDL> help,corr,/str IDL> corr = o->gethkwavecorr(284.16) IDL> oplot,corr.time,color=0
3. eis_prep.pro, with hkwavecorr set#
eis_prep.pro now accepts the keyword hkwavecorr. If set, the resulting level 1 file will contain the wavelength correction information.
IDL> eis_prep,paths,outdir='~/',/hkwavecorr,/default,/quiet,/save IDL> o = obj_new('eis_data','~/eis_l1_20071211_162413.fits') IDL> help,o->getaux_data(),/str IDL> corr = o->gethkwavecorr() IDL> oplot,corr.time