Analyzer

An Analyzer is a polarization selective device in the beam path that is described by a complex 2x2 Jones matrix. An unpolarized detection for example is

\[\begin{split}A= \begin{pmatrix} 1 & 0\\ 0 & 1 \end{pmatrix},\end{split}\]

which is created by the default arguments during initialization via nx.Analyzer().

An analyzer does not have fittable variables.

When you set up an analyzer you can specify several parameters which are similar as in CONUSS. Those are the efficiency, the mixing angle between the polarization components, and the canting angle of the beam with respect to \(\sigma\) direction.

import nexus as nx
import numpy as np

# set beam along pi polarization via initialization parameters
# those values are the default arguments
analyzer = nx.Analyzer(efficiency = 1, mixing_angle = 0, canting_angle = 90)

print(analyzer)
[[0.000000e+00+0.j 6.123234e-17+0.j]
 [6.123234e-17+0.j 1.000000e+00+0.j]]

There are methods to set specific polarization selective states.

  • analyzer.Unpolarized()

  • analyzer.LinearSigma()

  • analyzer.LinearPi()

  • analyzer.CircularLeft()

  • analyzer.CircularRight()

analyzer = nx.Analyzer()
analyzer.CircularLeft()

print(analyzer.matrix)
[[ 0.5+0.j  -0. -0.5j]
 [ 0. +0.5j  0.5+0.j ]]

or you can set the Jones matrix directly

# set the Jones matrix directly to unpolarized detection
analyzer.SetJonesMatrix(np.array([[1,0], [0,1]], dtype=complex))

An analyzer is added to the objects list of the experiment

exp = nx.Experiment(id = "test experiment",
                    objects [sample1, analyzer, sample2],
                    isotope = nx.lib.Moessbauer.Sn119)

You can also rotate an analyzer by a certain angle

analyzer.Rotate(45)  # angle in deg

print(analyzer)
Analyzer
  .id:
  .matrix:
[[0.5+0.j 0.5+0.j]
 [0.5+0.j 0.5+0.j]]

Notebooks

analyzer - nb_analyzer.ipynb.

polarization analysis - nb_polarization.ipynb.

Please have a look to the API Reference for more information.