polarisation¶
Polarisation utilities
analyse_polarisation(stokes_vector, *jones_matrices)
¶
Applies a Jones matrix to a Stokes vector and returns the resulting Stokes vector.
Parameters: stokes_vector (1x4 array): incident beam Stokes parameters P0, P1, P2, P3 (I, Q, U, V) jones_matrix (2x2 array): Jones matrix of the optical element * multiple jones_matrices can be entered and will be applied in order
Returns: numpy.ndarray: Transformed Stokes vector [I', Q', U', V']
Source code in mmg_toolbox/utils/polarisation.py
analyser_jones_matrix(crystal_bragg, rotation)
¶
Return the Jones matrix for an analyser crystal The Jones matrix [4x4] can be used to operate on a Jones vector [2x1] to describe how the polarisation will be analysed.
The basis chosen in such that x = v X z, where v is vertical and z is the incident beam direction in lab space.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
crystal_bragg
|
float
|
Scattering Bragg angle, in degrees |
required |
rotation
|
float
|
Rotation angle about the incident beam, in degrees |
required |
Returns:
| Type | Description |
|---|---|
ndarray
|
Jones matrix [4x4] |
Source code in mmg_toolbox/utils/polarisation.py
apply_jones_to_stokes(S, J)
¶
Applies a Jones matrix to a Stokes vector and returns the resulting Stokes vector.
Parameters: S (array-like): Input Stokes vector [I, Q, U, V] J (2x2 array): Jones matrix
Returns: numpy.ndarray: Transformed Stokes vector [I', Q', U', V']
Source code in mmg_toolbox/utils/polarisation.py
check_polarisation(label)
¶
get_polarisation(pol)
¶
Return polarisation mode from h5py Dataset, Group or File
Raises ValueError if polarisation not recognized.
Example: with h5py.File('data.nxs', 'r') as hdf: pol = get_polarisation(hdf) # -or- dataset = nx_find(hdf, 'NXbeam', 'incident_polarization_stokes') pol = get_polarisation(dataset)
Parameters:
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
pol
|
Dataset | Group
|
h5py.Dataset or h5py.Group object |
required |
Returns:
| Type | Description |
|---|---|
str
|
polarisation mode |
Source code in mmg_toolbox/utils/polarisation.py
jones2mueller(jones)
¶
Convert Jones matrix [2x2] to Mueller matrix [4x4] see https://en.wikipedia.org/wiki/Mueller_calculus
Source code in mmg_toolbox/utils/polarisation.py
pol_subtraction_label(label)
¶
Return xmcd or xmld
Source code in mmg_toolbox/utils/polarisation.py
polarisation_label_from_stokes(*stokes_parameters)
¶
Convert Stokes vector to polarisation mode
Source code in mmg_toolbox/utils/polarisation.py
polarisation_label_to_stokes(label)
¶
Convert polarisation mode to Stokes vector
Source code in mmg_toolbox/utils/polarisation.py
stokes_from_vector(*parameters)
¶
Return the Stokes parameters from an n-length vector
Source code in mmg_toolbox/utils/polarisation.py
stokes_to_lab_vector(S, beam_direction, reference_plane)
¶
CHECK THIS!!! Converts Stokes parameters to a 3D polarization vector in lab space.
Parameters: S (array-like): Stokes vector [I, Q, U, V] beam_direction (array-like): 3D unit vector of beam propagation direction reference_plane (array-like): 3D vector defining the reference plane (e.g., horizontal)
Returns: numpy.ndarray: 3D polarization vector in lab space