[{ALLOW edit EISMainUsers}]
[{ALLOW view Anonymous}]
!!!EIS Object Methods

An EIS data object is created with

{{{IDL> data=obj_new('eis_data',filename)
}}}

where filename is the name of the EIS FITS file (either level-0 or level-1).

To extract information from an object or manipulate the data it is necessary to use methods. A list of all methods for 'data' is available by doing:

{{{IDL> data->display_methods 
}}}

We list below some useful methods.

!!Extracting a data window (getvar)

This extracts a data window from the object.

{{{IDL> wd=data->getvar(iwin)
}}}

where iwin is either the index of the window you want (beginning with 0), or the wavelength of the line you are interested in (e.g., 195.12, the correct window will be found as long as the wavelength given lies within the line window that was observed.) It is also possible to use the name of the line window (e.g. 'FE XII 195.120'), but in that case the string entered must be an exact copy of the name the line is known as in the fits file.

The output is an array whose dimensions will vary depending on the type of data. For a standard raster it will be a 3D array.

WARNING: be careful with using WD to generate images in an emission line. The first dimension of WD is always wavelength and the second dimension is Solar-Y. For raster data, the third dimension will be Solar-X but ordered according to the time each exposure was taken. Since EIS rasters west-to-east this ordering is the opposite to how IDL displays images. It is recommended that you use moments to generate images - see the section further down in this document.

To get the 1D wavelength array for the window, do:

{{{IDL> wvl=data->getlam(iwin)
}}}

although bear in mind that the spectra shift in the detector-X direction during an orbit, and in the Y-direction due to the tilt of the EIS slit relative to the detector. These issues are discussed in [EIS Software Note 5|http://solarb.mssl.ucl.ac.uk/SolarB/eis_docs/eis_notes/05_WAVELENGTH_CORRECTION/eis_swnote_05.pdf] and [EIS Software Note 4|http://solarb.mssl.ucl.ac.uk/SolarB/eis_docs/eis_notes/04_SLIT_TILT/eis_swnote_04.pdf], respectively.

!!Pointing coordinates (getxpos, getxcen, etc.)

The heliocentric coordinates for the center of a raster at a given wavelength, WVL, are obtained with:

{{{
IDL> xcen=data->getxcen(/raster)
IDL> ycen=data->getycen(wvl,/raster)
}}}

More details about EIS pointing information are given on the wiki page [Obtaining pointing information from EIS data|EISPointing].


!!Time routines

!Exposure time

The exposure time (in seconds) for each exposure of the raster is given by

{{{IDL> exp_time=data->getexp()
}}}

Note that the exposure times generally vary between exposures, and will not be exactly equal to the requested exposure time.

!The start and end times of an exposure

The start and end times of an exposure can be obtained through the shutter open and close times (ti1 and ti2):

{{{IDL> ti1=data->getti_1()
IDL> ti2=data->getti_2()
}}}

The units are given in TI format, which is the Hinode spacecraft time. The TI format can be converted to standard time formats using:
 
{{{IDL> tai=data->ti2tai(ti)
IDL> utc=data->ti2utc(ti)
IDL> sec=data->sec_from_obs_start(ti)
}}}

The last method gives the time in second since the start of the first exposure in the sequence.

NOTE: the difference between the shutter open and close times, and the exposure time returned by the getexp() method generally do not agree. The former being larger by a fraction of a second. There are various technical reasons for this including a latency between the Instrument Control Unit (ICU) communicating with the Mechanism & Heater Controller (MHC), and a delayed response time of the MHC. __Users are recommended to always use the exposure time returned by getexp().__

!Other time routines

The date of an observation can be obtained with various methods:

{{{IDL> date_obs=data->getdate_obs()
IDL> date=data->getdate()
IDL> date=data->date_obs2date(date_obs)
IDL> days=data->days_since_launch(date)
}}}

getdate_obs() gives the date in 'yyyy-mm-ddThh:mm:ss.sss' format, and getdate() in 'yyyymmdd' format. The date_obs2date converts the former to the latter format, if no date_obs is given the data object's date_obs is converted. days_since_launch() gives the number of days since launch, if no date is given then the data object's date is used.
 
!!Extracting the data header

The header is extracted into an object with

{{{IDL> hdr_obj=data->gethdr()}}}

there are then a number of methods for extracting information from the header which can be listed by doing:

{{{IDL> hdr_obj->display_methods}}}

If you just want to extract the full header into a text array, then do:

{{{IDL> text=hdr_obj->getbte_hdr() }}}

You can then use the standard routine FXPAR for extracting particular parameters, e.g.,

{{{IDL> date_obs=fxpar(text,'DATE_OBS')
}}}

Any field in the fits header can also be accessed easily by using, i.e. the above can be performed by typing

{{{IDL> date_obs=hdr_obj->getinfo('DATE_OBS')
}}}

The 'GETINFO' method can also be called by the eis data object to access the fits header fields, in which case there is no need to open the eis header object, just simply write

{{{IDL> date_obs=data->getinfo('DATE_OBS')
}}}

(The data object accesses the header object associated with it and returns the header information required)

!!Intensity units

To find the units for the intensity arrays in the data object, do

{{{IDL> units=data->getunit()}}}

which returns a 3-element string array, with the first element containing the intensity units. (The other elements are empty.)

!!Extracting a warm pixel map for a data window

eis_prep flags warm pixels on the detector during the processing by comparing with warm pixel maps stored in the Solarsoft distribution. Suppose you want to see what the warm pixel map looks like for the 195.12 data window that you're analyzing.

The first step is generate the calibration object:

{{{IDL> cal=data->getcal()}}}

The warm pixel map is then obtained with

{{{IDL> iwin=data->getwindx(195.12)
IDL> wp=cal->warm_pixels(data,iwin[0])}}}

The hot pixel map can be obtained by substituting 'warm_pixels' with 'hot_pixels'.

!!Moments, Gaussian fitting and maps

!Generating moments for a data window

Moments are usually used as a quick means of estimating the intensity, velocity and width of an emission line without having to do Gaussian fits. They are obtained by doing:

{{{IDL> m=obj_new(‘eis_moment’,data,iwin=195.12)}}}

A widget will pop up allowing you to define the emission line and continuum to be used for the moments.

A list of methods for 'm' can be obtained by doing:

{{{IDL> m->help}}}

!Gaussian fits for a data window

These are done in the same way as the moments by adding the keyword /gauss:

{{{IDL> m=obj_new(‘eis_moment’,data,iwin=195.12,/gauss)}}}

You will again be asked to define the line and continuum for the fit.

!Viewing moments and fits through maps

To view the moments or Gauss fitting parameters you first need to create an IDL map from the moment object, e.g.,

{{{IDL> mmap=m->mk_eis_map(195.12,/vel)}}}

You can also view a 'quick and dirty' map from the data object 'd' directly via,

{{{IDL> mmap=d->mk_eis_map(195.12)}}}

This will give an intensity map computed by summing in wavelength the pixels in the spectral window.

[IDL maps|http://hesperia.gsfc.nasa.gov/~zarro/idl/maps/maps.html] are a widely used means of storing solar image data and to plot the velocity map just created, do:

{{{IDL> plot_map, mmap}}}

To view intensity or line width maps simply use the /int and /wid keywords for mk_eis_map.