photon_transition

edrixs.photon_transition.dipole_polvec_rixs(thin, thout, phi=0, alpha=0, beta=0, local_axis=None, pol_type=None)[source]

Return polarization vector of incident and scattered photons, for RIXS calculation.

Parameters:
thin: float

The incident angle (radian).

thout: float

The scattered angle (radian).

phi: float

The azimuthal angle (radian).

alpha: float

The angle between the polarization vector of the incident photon and the scattering plane (radian)

beta: float

The angle between the polarization vector of the scattered photon and the scattering plane (radian)

local_axis: 3*3 float array

The local axis defining the scattering geometry.

  • \(x\)-axis: local_axis[:,0]

  • \(y\)-axis: local_axis[:,1]

  • \(z\)-axis: local_axis[:,2]

It will be an identity matrix if not provided.

pol_type: tuple of two strings

Specify types of polarization for incident and scattered photons. case[0] for incident photon, case[1] for scattered photon. Options can be

  • ‘linear’: Linear polarization

  • ‘left’ : Left-circular polarization.

  • ‘right’ : Right-circular polarization.

It will set pol_type=(‘linear’, ‘linear’) if not provided.

Returns:
ei_in_global: 3-length complex array

The linear polarization vector of the incident photon, with respect to the global \(xyz\) -axis.

ef_out_global: 3-length complex array

The linear polarization vector of the scattered photon with respect to the global \(xyz\) -axis.

edrixs.photon_transition.dipole_polvec_xas(thin, phi=0, alpha=0, local_axis=None, pol_type='linear')[source]

Return the linear polarization vector of incident photons, for XAS calculation.

Parameters:
thin: float

The incident angle (radian).

phi: float

The azimuthal angle (radian).

alpha: float

The angle between the polarization vector of the incident photon and the scattering plane (radian)

local_axis: 3*3 float array

The local axis defining the scattering geometry.

  • \(x\)-axis: local_axis[:,0]

  • \(y\)-axis: local_axis[:,1]

  • \(z\)-axis: local_axis[:,2]

It will be an identity matrix if not provided.

pol_type: string
  • ‘linear’: Linear polarization.

  • ‘left’ : Left-circular polarization.

  • ‘right’ : Right-circular polarization.

Returns:
ei_global: 3-length float array

The linear polarization vector of the incident photon, with resepct to the global \(xyz\) -axis.

edrixs.photon_transition.get_trans_oper(case)[source]

Get the matrix of transition operators between two atomic shell in the complex spherical harmonics basis.

Parameters:
case: string

A string indicating the two atomic shells, possible transitions are:

  • ‘ss’: \(s \rightarrow s\)

  • ‘ps’: \(s \rightarrow p\)

  • ‘t2gs’: \(s \rightarrow t2g\)

  • ‘ds’: \(s \rightarrow d\)

  • ‘fs’: \(s \rightarrow f\)

  • ‘sp’: \(p \rightarrow s\)

  • ‘sp12’: \(p_{1/2} \rightarrow s\)

  • ‘sp32’: \(p_{3/2} \rightarrow s\)

  • ‘pp’: \(p \rightarrow p\)

  • ‘pp12’: \(p_{1/2} \rightarrow p\)

  • ‘pp32’: \(p_{3/2} \rightarrow p\)

  • ‘t2gp’: \(p \rightarrow t_{2g}\)

  • ‘t2gp12’: \(p_{1/2} \rightarrow t_{2g}\)

  • ‘t2gp32’: \(p_{3/2} \rightarrow t_{2g}\)

  • ‘dp’: \(p \rightarrow d\)

  • ‘dp12’: \(p_{1/2} \rightarrow d\)

  • ‘dp32’: \(p_{3/2} \rightarrow d\)

  • ‘fp’: \(p \rightarrow f\)

  • ‘fp12’: \(p_{1/2} \rightarrow f\)

  • ‘fp32’: \(p_{3/2} \rightarrow f\)

  • ‘sd’: \(d \rightarrow s\)

  • ‘sd32’: \(d_{3/2} \rightarrow s\)

  • ‘sd52’: \(d_{5/2} \rightarrow s\)

  • ‘pd’: \(d \rightarrow p\)

  • ‘pd32’: \(d_{3/2} \rightarrow p\)

  • ‘pd52’: \(d_{5/2} \rightarrow p\)

  • ‘t2gd’: \(d \rightarrow t_{2g}\)

  • ‘t2gd32’: \(d_{3/2} \rightarrow t_{2g}\)

  • ‘t2gd52’: \(d_{5/2} \rightarrow t_{2g}\)

  • ‘dd’: \(d \rightarrow d\)

  • ‘dd32’: \(d_{3/2} \rightarrow d\)

  • ‘dd52’: \(d_{5/2} \rightarrow d\)

  • ‘fd’: \(d \rightarrow f\)

  • ‘fd32’: \(d_{3/2} \rightarrow f\)

  • ‘fd52’: \(d_{5/2} \rightarrow f\)

  • ‘sf’: \(f \rightarrow s\)

  • ‘sf52’: \(f_{5/2} \rightarrow s\)

  • ‘sf72’: \(f_{7/2} \rightarrow s\)

  • ‘pf’: \(f \rightarrow p\)

  • ‘pf52’: \(f_{5/2} \rightarrow p\)

  • ‘pf72’: \(f_{7/2} \rightarrow p\)

  • ‘t2gf’: \(f \rightarrow t_{2g}\)

  • ‘t2gf52’: \(f_{5/2} \rightarrow t_{2g}\)

  • ‘t2gf72’: \(f_{7/2} \rightarrow t_{2g}\)

  • ‘df’: \(f \rightarrow d\)

  • ‘df52’: \(f_{5/2} \rightarrow d\)

  • ‘df72’: \(f_{7/2} \rightarrow d\)

  • ‘ff’: \(f \rightarrow f\)

  • ‘ff52’: \(f_{5/2} \rightarrow f\)

  • ‘ff72’: \(f_{7/2} \rightarrow f\)

Returns:
res: 2d complex array

The calculated transition matrix.

Examples

>>> import edrixs
p to d transition
>>> trans_dp = get_trans_oper('dp')
p to t2g transition
>>> trans_t2gp = get_trans_oper('t2gp')
p_{3/2} to d transition
>>> trans_dp32 = get_trans_oper('dp32')
edrixs.photon_transition.get_wavevector_rixs(thin, thout, phi, ein, eout, local_axis=None)[source]

Return the wave vector of incident and scattered photons, for RIXS calculation.

Parameters:
thin: float

The incident angle in radian.

thout: float

The scattered angle in radian.

phi: float

The azimuthal angle in radian.

ein: float

Energy of the incident photon (eV).

eout: float

Energy of the scattered photon (eV).

local_axis: :math:`3 times 3` float array

The local \(z\) -axis, the angle thin and thout are defined with respect to this axis.

  • \(x\)-axis: local_axis[:,0]

  • \(y\)-axis: local_axis[:,1]

  • \(z\)-axis: local_axis[:,2]

It will be an identity matrix if not provided.

Returns:
k_in_global: 3-length float array

The wave vector of the incident photon, with respect to the global \(xyz\) -axis.

k_out_global: 3-length float array

The wave vector of the scattered photon, with respect to the global \(xyz\) -axis.

edrixs.photon_transition.linear_polvec(theta, phi, alpha, local_axis=None, direction='in')[source]

Return linear polarization vector.

Parameters:
theta: float number

Incident or scattered angle (in radian) with respect to local_axis.

phi: float number

Azimuthal angle (in radian) with respect to the \(x\) of local_axis.

alpha: float number

The angle (in radian) between the polarization vector and the scattering plane.

local_axis: 3*3 float array

The local axis defining the scattering geometry.

  • \(x\)-axis: local_axis[:,0]

  • \(y\)-axis: local_axis[:,1]

  • \(z\)-axis: local_axis[:,2]

It will be an identity matrix if not provided.

direction: string

The direction of photon wave, options can be

  • ‘in’: incident photon

  • ‘out’: scattered photon

Returns:
polvec: list of 3 float number

The polarization vector.

edrixs.photon_transition.quadrupole_polvec(polvec, wavevec)[source]

Given dipolar polarization vector and wave-vector, return quadrupolar polarization vector.

Parameters:
polvec: 3 elements of complex array

Dipolar polarization vector of photon, \(\epsilon_{x}, \epsilon_{y}, \epsilon_{z}\), NOTE: they can be complex when the polarization is circular.

wavevec: 3 elements of float array

Wavevector of photon, \(k_{x}, k_{y}, k_{z}\).

Returns:
quad_vec: 5 elements of float array

Quadrupolar polarization vector.

edrixs.photon_transition.unit_wavevector(theta, phi, local_axis=None, direction='in')[source]

Given incident or scattered angle, and azimuthal angle, return unit wavevector with respect to global \(xyz\)-axis.

Parameters:
theta: float number

Incident or scattered angle (in radian), with respect to local_aixs.

phi: float number

Azimuthal angle (in radian), with respect to the \(x\) of local_axis.

local_axis: 3*3 float array

The local axis defining the scattering geometry.

  • \(x\)-axis: local_axis[:,0]

  • \(y\)-axis: local_axis[:,1]

  • \(z\)-axis: local_axis[:,2]

It will be an identity matrix if not provided.

direction: string

The direction of photon wave, options can be

  • ‘in’: incident photon

  • ‘out’: scattered photon

Returns:
unit_k: list of 3 float numbers

The unit wavevector.

edrixs.photon_transition.wavevector_with_length(theta, phi, energy, local_axis=None, direction='in')[source]

Given incident or scattered angle, azimuthal angle, energy of photon, return wavevector with respect to global \(xyz\)-axis.

Parameters:
theta: float number

Incident or scattered angle (in radian), with respect to local_aixs.

phi: float number

Azimuthal angle (in radian), with respect to the \(x\) of local_axis.

energy: float number

Energy of photon (in eV).

local_axis: 3*3 float array

The local axis defining the scattering geometry.

  • \(x\)-axis: local_axis[:,0]

  • \(y\)-axis: local_axis[:,1]

  • \(z\)-axis: local_axis[:,2]

It will be an identity matrix if not provided.

direction: string

The direction of photon wave, options can be

  • ‘in’: incident photon

  • ‘out’: scattered photon

Returns:
k_with_length: list of 3 float numbers

The wavevector with length.