Skip to content

X-ray Absorption Spectroscopy (XAS)

All the software mentioned in this part are detailed in section 1.2 Software glossary.

Preliminary settings

list of items of what to check before started with X-rays.
Mounting to check → be in XAS configuration not XES + tube or detector moving?

Crystal selection

The first step is to select a suitable monochromator crystal. The choice depends on: - the element of interest; - the absorption edge to be probed (e.g., K, L_III), PyMca can be used to find the values of the edges; - the available crystals (typically silicon or germanium material); - the Bragg angle limitations: below 65° the beam is spread because of the crystal astigmatism.

A Python script called reflection_finder helps with this step. The user provides the chemical symbol of the element of interest, the absorption edge and the crystal material, from two available: silicon (Si) or germanium (Ge).

For example, the following input (Fe K Si) corresponds to iron, its K-edge and silicon as a choice for the material of the crystal. The python script would then output a list of crystals and their reflections as seen below. It helps choosing reflections by ordering them based on the energy resolution. Figure 1 shows the results obtained for this example.

!Image
Results obtained with reflection_finder.py for the input "Fe K Si" which corresponds to iron, K-edge and silicon as crystal material.

The data frame shows the planes and their corresponding crystal available in the laboratory, sorted by intensity. When α = 0, the configuration is symmetric, otherwise it is asymmetric (section 1.5Config).

Energy range corresponds to Bragg angle range, theta minimum to theta maximum. Theta is the Bragg angle of the absorption edge.

What to know before choosing a crystal using the code: 1. Element and its desired edge (K, L, M,…). 2. Which crystal elements are available for use (In our case Si and Ge). 3. The energy range in which to measure (example input: 50–200 eV, 50 eV before the edge and 200 eV after the edge). 4. Bragg angle range in which to measure, usually 65–90°.

With these three pieces of information, the code can determine all information needed for the acquisition script.

Experimental parameters

Before starting measurements, the spectrometer configuration should be checked.
The components have to be as follows: - X-ray tube on the Rowland circle; - Rotation φ of the crystal at 0°;

💬 XAS measurements can be performed with the tube in a fixed position as well as the detector. Note that the script is referring to tube even if the detector is the one moving. Motor movements are detailed in sections Motors_commands and Pseudo-motors_commands.

💬 Maximum voltage: 22 keV and maximum current: 1 mA. For more information, refer to section 1.4 XR settings.


Experiment

Alignment procedure

The spectrometer has been mounted according to the Rowland circle, x and y formulated accordingly in the MCA script. MCA script calculates theoretical values of the positions but there is some error from manual mounting of the motors which means a corrective term must be implemented to the script.

1 - check with laser.

How to get started: 1. Unmount the detector and replace it with Minipix device. The MiniPix has its own stand. 2. Launch revontuli_XAS.py in the borealis base. Make sure calibration = False. 3. Use terminal commands monor.amove(0) to move crystal to zero position which is at 90° and use command monox.amove(500) to move monochromator to its x-axis rest position. 4. Open the Minipix window, turn on the X-rays and launch Pixet. 5. Launch alignment.py: - Input your Bragg angle working range (angle min, angle max). The spectrometer will move to the minimal angle. - Find x-axis and y-axis positions where the spot is centered and round.
It will start by moving on the x-axis, for that input number in millimeter. For example, to move 5 mm, input "5".
If the beam movement on the y-axis doesn’t correspond to horizontal movement, flip the 2D image in Pixet. - To change the axis from x to y, input "y". The beam spot on Pixet has to be the most circular and concentrated. - When the beam is as narrow as possible and centered, input ready. The spectrometer will move to the next angle. - Repeat the operation until it is finished. The code will give you the correction equations and plot the corresponding curves. - Put the correction equations in revontuli_XAS.py or in revontuli_asymmetric_XAS.py, exit and relaunch the script.

To do the alignment manually: - Start by moving to an angle. - Move the tube in x- and y-directions until the spot is in the center and round. If the beam movement on the y-axis doesn’t correspond to horizontal movement, flip the 2D image in Pixet. - Find out where in x-axis and y-axis the tube is located. - Input the position to excel sheet.

Spectrometer Commands

All the spectrometer commands are detailed in appendix Motors_commands and Pseudo-motors_commands. Here is a list of useful ones for the alignment procedure:

  • theta.amove(Bragg angle in degree) moves the tube and monochromator(crystal) to the given Bragg angle
  • tubex.rmove(x-axis(mm)) moves relatively the x-ray tubes motors on the x-axis
  • tubey.rmove(y-axis(mm)) moves relatively the x-ray tubes motors on the y-axis
  • tubex.where() tells you what the position is on the x-axis
  • tubey.where() tells you what the position is on the y-axis

💬 Note: motors called tubex and tubey can refer to the tube movement or detector movement depending on the spectrometer mounting.

💬 After any modifications in a script, do not forget to exit and relaunch it.


Measurement Procedure

To perform an XAS analysis, three types of measurement have to be performed: (a) Samples measurement
(b) I₀ measurement: the environment of the signal without the element of interest has to be as close as possible as the environment with it.
For example, if the sample is in a plastic wrapping, it is better to put the same plastic wrapping while performing I₀.

Spectrometer Commands

All the spectrometer commands are detailed in appendix Motors_commands and Pseudo-motors_commands. Here is a list of useful ones for the alignment procedure:

  • theta.amove(Bragg angle in degree) moves the tube and monochromator(crystal) to the given Bragg angle
  • tubex.rmove(x-axis(mm)) moves relatively the x-ray tubes motors on the x-axis
  • tubey.rmove(y-axis(mm)) moves relatively the x-ray tubes motors on the y-axis
  • tubex.where() tells you what the position is on the x-axis
  • tubey.where() tells you what the position is on the y-axis

💬 Note: motors called tubex and tubey can refer to the tube movement or detector movement depending on the spectrometer mounting.

💬 After any modifications in a script, do not forget to exit and relaunch it.


Measurement Procedure

To perform an XAS analysis, three types of measurement have to be performed: (a) Samples measurement
(b) I₀ measurement: the environment of the signal without the element of interest has to be as close as possible as the environment with it.
For example, if the sample is in a plastic wrapping, it is better to put the same plastic wrapping while performing I₀.
(c) Metallic foil measurement to calibrate in energy. Choose metal foils with well-defined and well-characterized absorption edges close to the energy range you are interested in.

Once the spectrometer is aligned, measurements can start: 1. Check that you are in the correct base, you can activate it by using the command: conda activate borealis. 2. Launch the script revontuli_XAS.py. 3. Make sure to have the correction terms for tubex and tubey, check that calibration = True, add the miller index of the plane used in the code: miller_index = h k l and check the d used in the calculation d_hkl (d ≈ 5.431 for Si and 5.658 for Ge).
Symmetric: asymmetric angle = 0
Asymmetric: asymmetric angle = value in degree 4. Place the sample on the beam path (metallic foil, sample, I₀). For a measurement in transmission mode, it can be fixed on the tube outlet or right in front of the detector using tape.
Check the signal and the dead-time on Prospect, it should not be above 10. Chapter 3 Exp optimization discusses experimental optimization and problem-solving using software and auxiliary components. 5. Before starting a new scan, a file has to be created. 6. Start a new scan with the command: energy.scan(E_min, E_max, steps, integration time per point) 7. The data are saved in the datafile created by starting a scan. PyMca can be used to display scans while running. The data is not updated automatically during the scan; this has to be done manually.

💬 To calibrate in energy the spectrometer, it is possible to use a metallic foil of the element of interest, an element with a similar energy or using harmonics. It will depend on the experimental conditions.

💬 To organize data, it is possible to name samples via the command: COMMAND.

While running, scan checking: I₀ decreasing...