Table of Contents
This tutorial is a step by step instruction for the most basic functionality of ReMagX - structural fits of reflectivity data.
It should give you a comphrehensive introduction and tips on how to use ReMagX.
The files for this tutorial can be downloaded in the download section of this webpage.
The sample we want to analyze has the following structure
- substrate SrTiO3 (STO) (assumed infinitely thick)
- first layer LaCoO3 (LCO). The thickness is around 160 Angstrom.
- second layer vaccuum (air). (assumed infinitely thick)
All layers are assumed to grow well defined on the substrate with a perovskite crystal structure.
To insert this information into ReMagX you should first add or remove as much layers as necessary (via the speed buttons or the menu). In the end you should have 3 rows with the layer names “air”, “1”, and “bulk”.
Set the thickness of layer 1 as specified above. Set db to the short description of chemical formulas provided above. Set the roughness sigma to a starting value to 1 for each layer. Set the roughness for air to zero. Since we don't do magnetic reflectivity deltam and betam should be set to zero. The refractive index delta and beta should be small values. They are not known at this moment. Insert the values as provided in the table.
In the end the table should look like:
Since the program is very complex one should take a look into several tabs and check some values before doing the reflectivity calculation.
- const. energy settings
- set the energy of the incident photons to 1000 eV.
- set “qz max” to 0.6. If the edit field is disabled click the checkbox “use dataset x-range for simulation”
- number of points should be set to 300. If the edit field is disabled go to the tab datasets and disable the checkbox “use measurement x-range for simulation”
- The “x-Axis” should be set to the momentum transfer qz and theta. Both are Ok.
- simulation parameters
- The epsilon value is important for the matrix-formalism. Since we are using the Parratt-formalism the value is meaningless
- The full width half maximum of angular resolution should be set to a small value 0.0001
- for simulation speed reasons the fast convolution checkbox should be enabled. In most cases this is the best option.
- All post modifications should be disabled and the averaging should be set to 0
- set the incoming beam 1 to sigma-polarization
- optical constants database
- the optical constants presets should be set to “don't load”
- We want to do structural fits and no magnetic fits. Therefore activate “no magnetization”.
- Preferences in the menu
- The algorithm should be set to Parratt as this is the fastest algorithm. For structural fits it is perfectly suited.
- As we want to analyze some reflectivity data the scattering type should be set to “Reflection”.
- The roughness model should be set to Nevot&Croce as this is the fastest and most reliable algorithm.
- At the moment we are not using the script functionality. Disable script execution for a little bit speed improvement
- The standard computational precision is double. Since Parratt is very stable the precision double is always a good option
All settings are saved in Tut1.all provided with the Tutorial files. The file can be loaded via the speed button or via the menu entry “Load state”.
Calculate reflectivity curve
In the bottom right of the main window you should see the radio buttons “Mode” and the button “Reflectivity” and “Energy Scan”. Change Mode to monochromatic and press button “Reflectivity”. A curve in the color red should be calculated and displayed.
Play around with the values in the layers tables and see how the curve changes. An easy method to do this is by clicking on a table entry one time and then use the scrollbar below the table to change that value. This is a very useful tool for manual fitting.
Retrieving the refractive index
As for now the simulation uses not the real refractive indices. Off-resonance scattering factors are tabulated for each element. With these factors the refractive index can be calculated. The X-ray database website provided in the links section on this webpage is capable to build compatible tables. In both cases the chemical formulas of each compound (of each layer) and the density are required. The “vaccuum”-layer needs a .db file too but should be filled with zeros for all energies.
The created tables are processes automatically by ReMagX. To do this the files should have the same names as in the column db with file name extension .db. These files can be found in the tutorial zip-file too. They should be in the same folder as the .all file Tut1.all. The refractive indices for the selected energy are loaded by right clicking on the layer table and then clicking on “Get delta/beta from database”. The columns delta and beta are changed automatically to the correct values of the incident beam energy of 1000eV.
The table should look like:
Prepare measurement data
So far we have done some simulation of reflectivity curves. To fit some measurements one has prepare the measurements to load into ReMagX. ReMagX needs the data in a column text format. The decimal point must be “.”. For standard reflectivity (const-energy) scans one has to provide two columns: the momentum transfer qz (in units 1/A) and the reflected intensity R0.
Click on “Load Dataset” in the menu to open the import module. The file is named LCO_900eV.dat. Open it. In the next step the information about the column contents have to be entered. The file consists of three columns (energy, qz, R). As mentioned above only the second and third column are necessary. So copy the following three entries from the left table to the right one: “dummy”, “qz”, and “R0”. Take care about the correct order.
The seperator for this file is the tabulator which is the default setting. Click on preview to see if everything is fine. Click on Ok.
In the tab “DataSet” change to the new dataset with the name “LCO_900eV.dat” by double clicking. It should be marked as active. Before the data can be used you have to provide additional information about this measurement. This information should be written in the table right below the list of available datasets. Change following entrys.
- energy: Set it to 900 eV
- (angular) resolution: Should be 0.0001
- Multiplicator: Keep the measurement scaling factor one. This is a good starting point for this measurement
- Translation: Keep it zero because we neglect the background noise level.
- qz-Translation: zero
- polarization 1: The measurement was taken with sigma-light polarization. So keep the value or simply write an “s” in the field
- polarization 2: not used for this monochromatic measurement
- Type, File, and Datapoints cannot be changed.
Double click on the dataset again to activate the changes for this measurement. You should see in the tab for example “Const. Energy Settings” that the energy jumped from 1000eV to 900eV.
Load the new optical constants for this energy as we did before. Now you can start the reflectivity simulation by clicking on “Reflectivity”.
The file in this state is saved as Tut2.all
Prepare for fitting
The first step should be a manual coarse fitting of the curve as the fitting algorithms are not as good as humans to determine the structure of curve. Especially the thicknesses should be set to a more reliable number.
Very close to the initial values a much better fit of the thickness fringes can be achieved by setting layer 1 to a thickness of 150A and both roughnesses to 3 Angstrom.
Fitting a reflectivity curve
As final step you should mark the values you want to fit. This is pretty easy. But first think which values you want to fit. In this case we want to do a structural fit. That means the thicknesses and roughnesses. So right click on the thickness cell and click on fit. Do the same for the roughness of the substrate and of the film. The cells should be marked red. Additionally we want to fit the scaling factor of the measurement. Go to the tab “Additional Fit Parameters” check “measurement multiplicator”.
In the “Parameters” tab you should see four rows with the names “thickness 1”, “sigma 1”, “sigma 0”, and “meas. mult.” followed by three columns: The initial value for the fit parameteras well as the boundarys. They are set to reasonable numbers but can be changed of course.
The last paremter we should set is the qz-window in which the error function is calculated (chi-square). This can be done in the tab “Fitting window”. Normally you cannot trust the lowest and the highest angles of the measurement. Therefore the qz-range is set to 0.03 - 0.45 1/A.
In the tab “DataSet” click on dataset with the name “LCO_900eV.dat” and click the Fit button next to it. This tells ReMagX which curves you want to fit.
The current state you can find in Tut3.all
In the last step the fit can be started in the tab “Start/Stop”. It takes less than a second to converge. So the stop button can be pressed right after start was pressed. Our manual fit was already good. So the fit changed the thickness to around 148 Angstrom. The result is plotted during the fitting procedure.