finesse.gaussian.transform_beam_param(ABCD, q1, nr1=1, nr2=1)[source]

Transforms a beam parameter q1 by the matrix ABCD.

The value of the new beam parameter returned is given by the Kogelnik transformation,

\[q_2 = n_{r,2} \frac{A \frac{q_1}{n_{r,1}} + B}{ C \frac{q_1}{n_{r_1}} + D}, \]

where \(A\), \(B\), \(C\), \(D\) are the corresponding elements of the ABCD matrix, and \(n_{r,1}\), \(n_{r,2}\) are the refractive indices of the source and target media respectively.


ABCD : numpy.ndarray

A 2D numpy array of shape (2, 2) containing the ABCD matrix elements. Note that this can be a matrix of symbolic elements or a matrix of numbers.

q1 : complex, BeamParam, symbolic

A complex number, BeamParam instance or complex symbolic expression, representing the beam parameter to be transformed by ABCD.

nr1 : float, symbolic

The index of refraction of the source medium.

nr2 : float, symbolic

The index of refraction of the target medium.


out : complex, BeamParam, symbolic

The transformed beam parameter. If ABCD is symbolic then a symbolic expression is returned. If q1 is a BeamParam instance then a new BeamParam instance is returned. Note that these two conditions couple such that a BeamParam with a symbolic q attribute may be returned.