NXellipsometry

Status:

application definition, extends NXobject

Description:

Ellipsometry, complex systems, up to variable angle spectroscopy.

Information on ellipsometry is provided, e.g. in:

  • H. Fujiwara, Spectroscopic ellipsometry: principles and applications, John Wiley & Sons, 2007.

  • R. M. A. Azzam and N. M. Bashara, Ellipsometry and Polarized Light, North-Holland Publishing Company, 1977.

  • H. G. Tompkins and E. A. Irene, Handbook of Ellipsometry, William Andrew, 2005.

Open access sources:

Review articles:

Symbols:

Variables used throughout the document, e.g. dimensions and important parameters

N_wavelength: Size of the energy or wavelength vector used, the length of NXinstrument/spectrometer/wavelength array

N_variables: How many variables are saved in a measurement. e.g. 2 for Psi and Delta, 16 for Mueller matrix elements, 15 for normalized Mueller matrix, 3 for NCS, the length of NXsample/column_names

N_angles: Number of incident angles used, the length of NXinstrument/angle_of_incidence array

N_p1: Number of sample parameters scanned, if you varied any of the parameters such as temperature, pressure, or pH, the maximal length of the arrays specified by NXsample/environment_conditions/SENSOR/value if it exists.

N_time: Number of time points measured, the length of NXsample/time_points

Groups cited:

NXaperture, NXdata, NXdetector, NXentry, NXenvironment, NXgrating, NXinstrument, NXmonochromator, NXprocess, NXsample, NXsensor, NXslit, NXsource, NXsubentry, NXtransformations, NXuser

Structure:

ENTRY: (required) NXentry

This is the application definition describing ellipsometry experiments.

Such experiments may be as simple as identifying how a reflected beam of light with a single wavelength changes its polarization state, to a variable angle spectroscopic ellipsometry experiment.

The application definition defines:

  • elements of the experimental instrument

  • calibration information if available

  • parameters used to tune the state of the sample

  • sample description

definition: (required) NX_CHAR

An application definition for ellipsometry.

Obligatory value: NXellipsometry

@version: (required) NX_CHAR

Version number to identify which definition of this application definition was used for this entry/data.

@url: (required) NX_CHAR

URL where to find further material (documentation, examples) relevant to the application definition

experiment_identifier: (required) NX_CHAR

Unique identifier of the experiment, such as a (globally persistent) unique identifier. i) The identifier is usually defined by the facility or principle investigator. ii) The identifier enables to link experiments to e.g. proposals.

experiment_description: (recommended) NX_CHAR

A free-text description of the experiment. What is the aim of the experiment? The general procedure.

start_time: (required) NX_DATE_TIME

Start time of the experiment. UTC offset should be specified.

acquisition_program: (optional) NXprocess

@url: (required) NX_CHAR

Website of the software.

program: (required) NX_CHAR

Commercial or otherwise defined given name to the program that was used to generate the result file(s) with measured data and metadata. This program converts the measured signals to ellipsometry data. If home written, one can provide the actual steps in the NOTE subfield here.

version: (required) NX_CHAR

Either version with build number, commit hash, or description of a (online) repository where the source code of the program and build instructions can be found so that the program can be configured in such a way that result files can be created ideally in a deterministic manner.

USER: (required) NXuser

Contact information of at least the user of the instrument or the investigator who performed this experiment. Adding multiple users if relevant is recommended.

name: (required) NX_CHAR

Name of the user.

affiliation: (required) NX_CHAR

Name of the affiliation of the user at the point in time when the experiment was performed.

address: (required) NX_CHAR

Full address (street, street number, ZIP, city, country) of the user’s affiliation.

email: (required) NX_CHAR

Email address of the user.

orcid: (recommended) NX_CHAR

Author ID defined by https://orcid.org/.

telephone_number: (recommended) NX_CHAR

Official telephone number of the user.

INSTRUMENT: (required) NXinstrument

General properties of the ellipsometry equipment

model: (required) NX_CHAR

The name of the instrument

@version: (required) NX_CHAR

The used version of the hardware if available. If not a commercial instrument use date of completion of the hardware.

company: (optional) NX_CHAR

Name of the company which build the instrument

construction_year: (optional) NX_DATE_TIME

ISO8601 date when the instrument was constructed. UTC offset should be specified.

firmware: (required) NX_CHAR

Commercial or otherwise defined name of the software that was used for the measurement

@version: (required) NX_CHAR

Version and build number or commit hash of the software source code

@url: (required) NX_CHAR

Website of the software.

focussing_probes: (required) NX_BOOLEAN

Were focussing probes (lenses) used?

data_correction: (optional) NX_BOOLEAN

Were the recorded data corrected by the window effects of the lenses?

angular_spread: (optional) NX_NUMBER {units=NX_ANGLE}

Specify the angular spread caused by the focussing probes

ellipsometry_type: (required) NX_CHAR

What type of ellipsometry was used? See Fujiwara Table 4.2

Any of these values:

  • rotating analyzer

  • rotating analyzer with analyzer compensator

  • rotating analyzer with polarizer compensator

  • rotating polarizer

  • rotating compensator on polarizer side

  • rotating compensator on analyzer side

  • modulator on polarizer side

  • modulator on analyzer side

  • dual compensator

  • phase modulation

  • imaging ellipsometry

  • null ellipsometry

calibration_status: (required) NX_CHAR

Was a calibration performed? If yes, when was it done? If the calibration time is provided, it should be specified in calibration/calibration_time.

Any of these values:

  • calibration time provided

  • no calibration

  • within 1 hour

  • within 1 day

  • within 1 week

angle_of_incidence: (required) NX_NUMBER (Rank: 1, Dimensions: [N_angles]) {units=NX_ANGLE}

Incident angle of the beam vs. the normal of the bottom reflective (substrate) surface in the sample

light_source: (required) NXsource

Specify the used light source. Multiple selection possible.

calibration: (recommended) NXsubentry

Ellipsometers require regular calibration to adjust the hardware parameters for proper zero values and background light compensation.

calibration_time: (optional) NX_DATE_TIME

If calibtration status is ‘calibration time provided’, specify the ISO8601 date when calibration was last performed before this measurement. UTC offset should be specified.

calibration_sample: (required) NX_CHAR

Free-text to describe which sample was used for calibration, e.g. silicon wafer with 25 nm thermal oxide layer.

calibration_data: (required) NXsubentry

Arrays which provide the measured calibration data. Multiple sets are possible, e.g. Psi and delta measured on a e.g. silicon calibration wafer, and the straight-through data. We recommend to provide data that is measured under the same settings as the measurement was performed, that is if Psi and Delta are measured for your data, also provide Psi and Delta here and use the same wavelenghts as for the measured data.

calibration_data_type: (required) NX_CHAR

What data were recorded for the calibration? The number of variables (N_variables) have to be set to the number of provided data columns accordingly, e.g. psi/delta -> N_variables = 2, Jones vector -> N_variables = 4, Mueller martix -> N_variables = 16, etc.

Any of these values:

  • psi/delta

  • tan(psi)/cos(delta)

  • Jones matrix

  • Mueller matrix

  • not provided

calibration_angle_of_incidence: (required) NX_NUMBER (Rank: 1, Dimensions: [N_calibration_angles]) {units=NX_ANGLE}

Angle(s) of incidence used during the calibration measurement (excluding straight through mode)

calibration_wavelength: (required) NX_NUMBER (Rank: 1, Dimensions: [N_calibration_wavelength])

The wavelength or equivalent values (which are inter-convertible). The importer should convert all to one unit, and make the others accessible. Historically, energy is used in eV, but for visible spectroscopy wavelength is more common, for IR wave numbers in 1/cm units.

Possibly use the same type of data as for the measurement.

calibration_data: (required) NX_NUMBER (Rank: 3, Dimensions: [N_calibration_angles+1, N_variables, N_calibration_wavelength]) {units=NX_UNITLESS}

Calibration is performed on a reference surface (usually a silicon wafer with a well defined oxide layer) at a number of angles of incidence and in a straight through mode (transmission in air).

stage: (required) NXsubentry

Sample stage, holding the sample at a specific position in X,Y,Z (Cartesian) coordinate system and at an orientation defined by three Euler angles (alpha, beta, gamma). The stage may be motorized or manual, special for liquids or gas environment.

stage_type: (required) NX_CHAR

Specify what type of stage was used.

Any of these values:

  • manual stage

  • scanning stage

  • liquid stage

  • gas cell

  • cryostat

description: (recommended) NX_CHAR

A free-text field to provide information about the stage.

TRANSFORMATIONS: (recommended) NXtransformations

The stage coordinate system vs. the incident beam. The Z-axis of the stage is considered to point along the normal of the substrate (bottom reflecting surface) from the stage towards the general direction of the light source. The beam comes with the angle of incidence towards this Z-axis, but in opposite direction, thus they are connected with a rotation of 180 - angle of incidence (in degrees). This transformation brings us from the NEXUS coordinates to the stage coordinates. Then provide the set of translations (if there are any). These all have a vector defining their relative direction in the current coordinate system. (This current coordinate system changes with every transformation if you set the parameter ‘depends’ to the name of the previous step.) Last, provide the rotations of the sample

alternative: (optional) NX_CHAR

If there is no motorized stage, we should at least qualify where the beam hits the sample and in what direction the sample stands in a free-text description, e.g. ‘center of sample, long edge parallel to plane of incidence’.

window: (optional) NXaperture

For environmental measurements, the environment (liquid, vapor, vacuum etc.) is enclosed in a cell or cryostat, which has windows both in the direction of the source and the detector (looking from the sample). These windows also add a phase shift to the light altering the measured signal. This shift has to be corrected based on measuring a known sample in the environmental cell.

material: (required) NX_CHAR

The material of the window

Any of these values:

  • quartz

  • diamond

  • calcium fluoride

  • zinc selenide

  • thallium bromoiodide

  • alkali halide compound

  • Mylar

  • other

other_material: (optional) NX_CHAR

If you specified ‘other’ as window material, decsribe here what it is.

thickness: (required) NX_NUMBER {units=NX_LENGTH}

Thickness of the window

orientation_angle: (required) NX_NUMBER {units=NX_ANGLE}

Angle of the window normal (outer) vs. the substrate normal (similar to the angle of incidence).

reference_data: (required) NXsubentry

Recorded data that can be used to calculate the window effect. Typically this is the substrate (e.g. silicon with thermal oxide layer) in air without window and in a known medium with the window.

reference_sample: (required) NX_CHAR

What sample was used to estimate the window effect?

reference_wavelength: (required) NX_NUMBER (Rank: 1, Dimensions: [N_wavelength]) {units=NX_LENGTH}

Wavelength of the reference data. Use the same wavelengths at which all other measurements are recorded

data: (recommended) NX_NUMBER (Rank: 4, Dimensions: [2, N_angles, N_variables, N_wavelength]) {units=NX_UNITLESS}

Recorded data of a reference surface with and without window/medium.

DETECTOR: (required) NXdetector

Which type of detector was used, and what is known about it? A detector can be a photomultiplier (PMT), a CCD in a camera, or an array in a spectrometer. If so, the whole detector unit goes in here. Integration time is the count time field, or the real time field. See their definition.

detector_type: (required) NX_CHAR

What kind of detector module is used, e.g. CCD-spectrometer, CCD camera, PMT, photodiode, etc.

Any of these values:

  • PMT

  • photodiode

  • avalanche diode

  • CCD camera

  • CCD spectrometer

  • other

other_detector: (optional) NX_CHAR

If you specified ‘other’ as detector type, please write down what it is.

revolution: (optional) NX_NUMBER {units=NX_ANY}

Define how many rotations of the rotating element were taken into account per spectrum.

rotating_element: (required) NX_CHAR

Define which element rotates, e.g. polarizer or analyzer.

Any of these values:

  • polarizer (source side)

  • analyzer (detector side)

  • compensator (source side)

  • compensator (detector side)

fixed_revolution: (optional) NX_NUMBER {units=NX_FREQUENCY}

Rotation rate, if the revolution does not change during the measurement.

variable_revolution: (optional) NX_NUMBER (Rank: 1, Dimensions: [2])

Specify maximum and minimum values for the revolution.

intensity_threshold: (optional) NX_NUMBER {units=NX_UNITLESS}

Minimum signal for which dynamic averaging is performed.

min_intensity: (optional) NX_NUMBER {units=NX_UNITLESS}

Value for the minimum intensity chosen. Data points below this value might be skipped by the instrument

spectrometer: (required) NXmonochromator

The spectroscope element of the ellipsometer before the detector, but often integrated to form one closed unit. Information on the dispersive element can be specified in the subfield GRATING. Note that different gratings might be used for different wavelength ranges. The dispersion of the grating for each wavelength range can be stored in grating_dispersion.

wavelength: (required) NX_NUMBER (Rank: 1, Dimensions: [N_wavelength]) {units=NX_LENGTH}

Wavelength value(s) used for the measurement. An array of 1 or more elements. Length defines N_wavelength

spectral_resolution: (optional) NX_NUMBER {units=NX_WAVENUMBER}

Spectral resolution of the instrument.

GRATING: (optional) NXgrating

Diffraction grating, as could be used in a monochromator. If two or more gratings were used, define the angular dispersion and the wavelength range (min/max wavelength) for each grating and make sure that the wavelength ranges do not overlap. The dispersion should be defined for the entire wavelength range of the experiment.

angular_dispersion: (optional) NX_NUMBER

Dispersion of the grating in nm/mm used.

grating_wavelength_min: (optional) NX_NUMBER {units=NX_LENGTH}

Minimum wavelength of the grating.

grating_wavelength_max: (optional) NX_NUMBER {units=NX_LENGTH}

Maximum wavelength of the grating.

SLIT: (optional) NXslit

Define the width of the monochromator slit in the subfield x_gap.

fixed_slit: (optional) NX_BOOLEAN

Was the slit width fixed?

max_gap: (optional) NX_NUMBER {units=NX_LENGTH}

If slit width was not fixed, define the maximum slit width.

SAMPLE: (required) NXsample

Properties of the sample, its history, the sample environment and experimental conditions (e.g. surrounding medium, temperature, pressure etc.), along with the data (data type, wavelength array, measured data).

atom_types: (required) NX_CHAR

List of comma-separated elements from the periodic table that are contained in the sample. If the sample substance has multiple components, all elements from each component must be included in atom_types.

sample_name: (required) NX_CHAR

Descriptive name of the sample

sample_history: (required) NX_CHAR

Ideally, a reference to the location or a unique (globally persistent) identifier (e.g.) of e.g. another file which gives as many as possible details of the material, its microstructure, and its thermo-chemo-mechanical processing/preparation history. In the case that such a detailed history of the sample is not available, use this field as a free-text description to specify details of the sample and its preparation.

preparation_date: (recommended) NX_DATE_TIME

ISO8601 date with time zone (UTC offset) specified.

layer_structure: (required) NX_CHAR

Qualitative description of the layer structure for the sample. For example: Si/native oxide/thermal oxide/polymer/peptide

data_identifier: (required) NX_NUMBER

An identifier to correlate data to the experimental conditions, if several were used in this measurement; typically an index of 0 - N

data_type: (required) NX_CHAR

Select which type of data was recorded, for example Psi and Delta (see: https://en.wikipedia.org/wiki/Ellipsometry#Data_acquisition). It is possible to have multiple selections. Data types may also be converted to each other, e.g. a Mueller matrix contains N,C,S data as well. This selection defines how many columns (N_variables) are stored in the data array.

Any of these values:

  • psi/delta

  • tan(psi)/cos(delta)

  • Mueller matrix

  • Jones matrix

  • N/C/S

  • raw data

column_names: (required) NX_CHAR (Rank: 1, Dimensions: [N_variables])

Please list in this array the column names used in your actual data. That is [‘psi’, ‘delta’] or [‘MM1’, ‘MM2’, ‘MM3’, …, ‘MM16] for a full Mueller matrix, etc.

measured_data: (required) NX_NUMBER (Rank: 5, Dimensions: [N_time, N_p1, N_angles, N_variables, N_wavelength])

Resulting data from the measurement, described by data type. Minimum two columns containing Psi and Delta, or for the normalized Mueller matrix it may be 16 (or 15 if the element (1,1) is all 1).

data_error: (recommended) NX_NUMBER (Rank: 5, Dimensions: [N_time, N_p1, N_angles, N_variables, N_wavelength])

Specified uncertainties (errors) of the data described by data type. The structure is the same as for the measured data.

time_points: (optional) NX_NUMBER (Rank: 1, Dimensions: [N_time]) {units=NX_TIME}

An array of relative time points if a time series was recorded.

environment_conditions: (required) NXenvironment

Specify external parameters that have influenced the sample.

medium: (required) NX_CHAR

Describe what was the medium above or around the sample. The common model is built up from the substrate to the medium on the other side. Both boundaries are assumed infinite in the model. Here, define the name of the medium (e.g. water, air, UHV, etc.).

medium_refractive_indices: (optional) NX_NUMBER (Rank: 1, Dimensions: [N_wavelength]) {units=NX_UNITLESS}

Array of pairs of complex refractive indices of the medium for every measured wavelength. Only necessary if the measurement was performed not in air, or something very well known, e.g. high purity water. Specify the complex refractive index: n + ik

number_of_runs: (optional) NX_UINT {units=NX_DIMENSIONLESS}

How many measurements were done varying the parameters? This forms an extra dimension beyond incident angle, time points and energy/wavelength (this is the length of the 4th dimension of the data). Defaults to 1.

varied_parameters: (optional) NX_CHAR

Indicates which parameter was changed. Its definition must exist below. The specified variable has to be number_of_runs long, providing the parameters for each data set. If you vary more than one parameter simultaneously use one signal instance for each. Record every parameter value in a linear manner, so N_p1 is the number of measurements taken. For example, if you measure at two temperatures and three pressures the temperature signal value looks like [T1, T1, T1, T2, T2, T2] and the pressure signal value looks like [p1, p2, p3, p1, p2, p3], and N_p1 = 6.

Any of these values:

  • optical excitation

  • voltage

  • temperature

  • pH

  • stress

  • stage positions

optical_excitation: (optional) NXsource

Was the sample modified using an optical source? Describe in this group the parameters of the optical excitation used.

wavelength: (required) NX_NUMBER {units=NX_LENGTH}

Wavelength value(s) or the range used for excitation. In cases of continuous laser radiation, a value or a set of values may do but for other illumination types, such as pulsed lasers, or lamps, a range may describe the source better.

broadening: (optional) NX_NUMBER {units=NX_LENGTH}

Specify the FWHM of the excitation

duration: (optional) NX_NUMBER {units=NX_TIME}

How long was the sample excited.

pulse_energy: (optional) NX_NUMBER {units=NX_ENERGY}

The integrated energy of light pulse.

SENSOR: (optional) NXsensor

A sensor used to monitor an external condition. The value field contains the measured values. If it is constant within an error for every run then use only an array of length one.

derived_parameters: (optional) NXprocess

What parameters are derived from the above data.

depolarization: (optional) NX_NUMBER {units=NX_UNITLESS}

Light loss due to depolarization as a value in [0-1].

plot: (optional) NXdata

A default view of the data, in this case Psi vs. wavelength and the angles of incidence. If Psi does not exist, use other Mueller matrix elements, such as N, C and S.

@axes: (required) NX_CHAR

We recommend to use wavelength as a default attribute, but it can be replaced in the case of not full spectral ellipsometry to any suitable parameter along the X-axis.

Hypertext Anchors

List of hypertext anchors for all groups, fields, attributes, and links defined in this class.

NXDL Source:

https://github.com/FAIRmat-Experimental/nexus_definitions/tree/fairmat/contributed_definitions/NXellipsometry.nxdl.xml