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
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
polarization analysis - nb_polarization.ipynb
.
Please have a look to the API Reference for more information.