Detectors

amplitude_detector
ad
AmplitudeDetector

Represents an amplitude detector which calculates the amplitude and phase of light fields at one frequency.

Syntax
ad name node f n=none m=none
Required

name: Name of newly created detector.

node: Node to read output from.

f: Frequency of light to detect (in Hz).

Optional

n: Tangential mode index to probe. Defaults to None such that all fields of the given frequency are summed.

m: Sagittal mode index to probe. Defaults to None such that all fields of the given frequency are summed.

astigd
AstigmatismDetector

Detector for astigmatism figure-of-merit at a given node.

The computed quantity is given via one minus finesse.gaussian.BeamParam.overlap().

Syntax
astigd name node
Required

name: Name of the detector.

node: Node to compute astigmatism at.

beam_property_detector
bp
BeamPropertyDetector

Probe for detecting the properties of a beam at a given node.

The valid values for prop are: * "w": beam size at node [metres], * "w0": waist size as measured at node [metres], * "z": distance to the waist from node [metres], * "zr": the Rayleigh range [metres], * "gouy": the Gouy phase of the beam at node [radians], * "div": divergence angle of the beam at node [radians], * "rc": radius of curvature of wavefront at node [metres], * "s": curvature of wavefront at node [1 / metres], * "q": beam parameter at node. .. note:: The "gouy" target property here detects the Gouy phase as derived from the beam parameter \(q\) at the specified node, i.e: .. math:: psi = arctan{left(frac{myRe{q}}{myIm{q}}right)}. It does not compute any Gouy phase accumulation. Use Gouy to detect the accumulated Gouy phase over a path.

Syntax
bp name node prop direction=x q_as_bp=false
Required

name: Name of newly created detector.

node: Node to read output from.

prop: The property of the beam to detect. See above for options.

Optional

direction: Plane to detect in - ‘x’ for tangential, ‘y’ for sagittal.

q_as_bp: If detecting q, should the detector output return BeamParam object instead of just a complex number.

ccd
CCD

Camera for measuring the intensity of a beam, \(I = |E(x,y)|^2\), where the unscaled x and y coordinate arrays used are xdata and ydata, respectively. Note that this is just the intensity at the points (x,y), not an integrated power over some finite pixel size.

Syntax
ccd name node xlim ylim npts w0_scaled=true
Required

name: Unique name of the camera.

node: Node at which to detect.

xlim: Limits of the x-dimension of the image. If a single number is given then this will be computed as \(x_{\mathrm{lim}} = [-|x|, +|x|]\).

ylim: Limits of the y-dimension of the image. If a single number is given then this will be computed as \(y_{\mathrm{lim}} = [-|y|, +|y|]\).

npts: Number of points in both axes.

Optional

w0_scaled: Flag indicating whether the \(x\), \(y\) axes should be scaled to the waist-size of the beam parameter at node.

ccdline
CCDScanLine

Camera for measuring the intensity of a beam, \(I = |E(x,y)|^2\), along a 1D slice. Where the unscaled x and y coordinate arrays used are xdata and ydata, respectively. Note that this is just the intensity at the points (x,y), not an integrated power over some finite pixel size.

The ScanLine.direction (i.e. axis of slice) is determined from which of xlim or ylim is specified.

Syntax
ccdline name node npts x=none y=none xlim=none ylim=none w0_scaled=true
Required

name: Unique name of the camera.

node: Node at which to detect.

npts: Number of points in slice axis.

x: The x coordinate of the slice. If ylim is given and this is not specified then defaults to zero. If xlim is given and this is also specified then it is ignored.

y: The y coordinate of the slice. If xlim is given and this is not specified then defaults to zero. If ylim is given and this is also specified then it is ignored.

xlim: The limits of the x-axis scan lines. A single number gives \(x_{\mathrm{axis}} \in [-|x|, +|x|]\), or a tuple of size two gives \(x_{\mathrm{axis}} \in [x[0], x[1]]\).

ylim: The limits of the y-axis scan lines. A single number gives \(y_{\mathrm{axis}} \in [-|y|, +|y|]\), or a tuple of size two gives \(y_{\mathrm{axis}} \in [y[0], y[1]]\).

Optional

w0_scaled: Flag indicating whether the \(x\), \(y\) axes should be scaled to the waist-size of the beam parameter at node.

ccdpx
CCDPixel

Camera for measuring the intensity of a beam, \(I = |E(x,y)|^2\), at a single point. Where the unscaled x and y coordinate used is xdata and ydata, respectively. Note that this is just the intensity at (x,y), not an integrated power over some finite pixel dimension.

Syntax
ccdpx name node x=0 y=0 w0_scaled=true
Required

name: Unique name of the camera.

node: Node at which to detect.

Optional

x: The x co-ordinate of the pixel.

y: The y co-ordinate of the pixel.

w0_scaled: Flag indicating whether the \(x\), \(y\) axes should be scaled to the waist-size of the beam parameter at node.

cavity_property_detector
cp
CavityPropertyDetector

Probe for detecting the properties of a cavity.

The valid values for prop are: * "length" or "l": round-trip cavity length [metres], * "loss": round-trip loss as a fraction, * "finesse": the cavity finesse, * "fsr": free spectral range [Hz], * "fwhm": full-width at half-maximum (i.e. linewidth) [Hz], * "pole": cavity pole frequency [Hz], * "tau": photon storage time [s], * "abcd": round-trip ABCD matrix, * "g" or "stability": stability as g-factor, * "gouy": round-trip Gouy phase [deg], * "modesep": mode-separation frequency [Hz], * "resolution": cavity resolution [Hz], * "q": eigenmode, * "w": beam size at the cavity source node [metres], * "w0": waist size [metres], * "z": distance to the waist from the cavity source node [metres], * "zr": the Rayleigh range of the eigenmode [metres], * "div": divergence angle of cavity mode [radians], * "rc": radius of curvature of wavefront at cavity source node [metres], * "s": curvature of wavefront at cavity source node [1 / metres].

Syntax
cp name cavity prop direction=x q_as_bp=false
Required

name: Name of newly created cavity property detector.

cavity: The cavity to probe. If the name is provided then the CavityPropertyDetector.cavity attribute will point to the corresponding Cavity object when adding this detector to a Model instance.

prop: Property of the cavity to probe. See above for options.

Optional

direction: Plane to detect in.

q_as_bp: If detecting q, should the detector output return BeamParam object instead of just a complex number.

fcam
FieldCamera

Camera for detecting the full image of the beam in terms of amplitude and phase.

Get the unscaled x and y coordinate data via Image.xdata and Image.ydata, respectively.

Syntax
fcam name node xlim ylim npts f=0 w0_scaled=true
Required

name: Unique name of the camera.

node: Node at which to detect.

xlim: Limits of the x-dimension of the image. If a single number is given then this will be computed as \(x_{\mathrm{lim}} = [-|x|, +|x|]\).

ylim: Limits of the y-dimension of the image. If a single number is given then this will be computed as \(y_{\mathrm{lim}} = [-|y|, +|y|]\).

npts: Number of points in both axes.

Optional

f: Field frequency offset from the carrier to detect.

w0_scaled: Flag indicating whether the \(x\), \(y\) axes should be scaled to the waist-size of the beam parameter at node.

field_detector
fd
FieldDetector

Outputs an array of the higher order modes amplitudes at a particular node and frequency. The mode ordering is given by Model.homs. Plane wave models will output a single element array.

This detector can only be used on optical nodes.

Syntax
fd name node f
Required

name: Name of newly created detector.

node: Node to read output from.

f: Frequency of light to detect (in Hz).

fline
FieldScanLine

Camera for detecting a slice of the beam in terms of amplitude and phase.

The ScanLine.direction (i.e. axis of slice) is determined from which of xlim or ylim is specified. Get the unscaled x and y coordinate data via ScanLine.xdata and ScanLine.ydata, respectively.

Syntax
fline name node npts x=none y=none xlim=none ylim=none f=0 w0_scaled=true
Required

name: Unique name of the camera.

node: Node at which to detect.

npts: Number of points in slice axis.

x: The x coordinate of the slice. If ylim is given and this is not specified then defaults to zero. If xlim is given and this is also specified then it is ignored.

y: The y coordinate of the slice. If xlim is given and this is not specified then defaults to zero. If ylim is given and this is also specified then it is ignored.

xlim: The limits of the x-axis scan lines. A single number gives \(x_{\mathrm{axis}} \in [-|x|, +|x|]\), or a tuple of size two gives \(x_{\mathrm{axis}} \in [x[0], x[1]]\).

ylim: The limits of the y-axis scan lines. A single number gives \(y_{\mathrm{axis}} \in [-|y|, +|y|]\), or a tuple of size two gives \(y_{\mathrm{axis}} \in [y[0], y[1]]\).

Optional

f: Field frequency offset from the carrier to detect.

w0_scaled: Flag indicating whether the \(x\), \(y\) axes should be scaled to the waist-size of the beam parameter at node.

fpx
FieldPixel

Camera for detecting a single pixel of the beam in terms of the amplitude and phase.

Get the unscaled x and y coordinate data via Pixel.xdata and Pixel.ydata, respectively.

Syntax
fpx name node x=0 y=0 f=0 w0_scaled=true
Required

name: Unique name of the camera.

node: Node at which to detect.

Optional

x: The x co-ordinate of the pixel.

y: The y co-ordinate of the pixel.

f: Field frequency offset from the carrier to detect.

w0_scaled: Flag indicating whether the \(x\), \(y\) axes should be scaled to the waist-size of the beam parameter at node.

gouy
Gouy

Detector to measure the accumulated gouy phase across a sequence of spaces.

This detector can operate in one of two modes, depending upon args given: * automatically determine the spaces through an arbitrary path by specifying the from_node and to_node arguments, * OR provide a pre-determined sequence of spaces (or their names) as positional arguments. Whichever option is chosen, this detector will compute the same fundamental quantity; that is the sum of the Gouy phases accumulated over each space (in degrees).

Syntax
gouy name *args from_node=none to_node=none via_node=none direction=x
Required

name: Name of newly created gouy detector.

*args: A sequence of spaces or space names.

from_node: An OpticalNode instance, or a data type which can be converted to an optical node.

to_node: An OpticalNode instance, or a data type which can be converted to an optical node.

via_node: An OpticalNode instance, or a data type which can be converted to an optical node.

direction: Plane to detect in - ‘x’ for tangential, ‘y’ for sagittal. Defaults to ‘x’.

knmd
KnmDetector

Direct probe of coupling coefficients at a component.

This detector has several “modes” which depend upon the values given for the mode indices n1, m1 and n2, m2. If: * all of n1, m1, n2, m2 are specified then the detector will output a single complex coefficient corresponding to the coupling from (n1, m1) -> (n2, m2), * just n1 and m1 are specified then it will output a vector of complex coefficients corresponding to each coupling from (n1, m1) -> (n, m) for each mode (n, m) in the model, * only n2 and m2 are specified then it will output a vector of complex coefficients corresponding to each coupling from (n, m) -> (n2, m2) for each mode (n, m) in the model, * none of n1, m1, n2, m2 are specified then the detector outputs the full matrix of complex coupling coefficients. .. hint:: When using this detector in “full-matrix” mode (i.e. by not giving the values for any of the mode indices), it can be useful to combine the output with the KnmMatrix object to obtain a more convenient representation of the scattering matrix. An example of this is shown below, where the output of a detector of this type is wrapped using KnmMatrix.from_buffer(). .. jupyter-execute:: import finesse finesse.configure(plotting=True) from finesse.knm.matrix import KnmMatrix IFO = finesse.Model() IFO.parse(‘’’ l L0 P=1 link(L0, ITM) m ITM R=0.99 T=0.01 Rc=-2090 xbeta=0.3u s LARM ITM.p2 ETM.p1 L=4k m ETM R=0.99 T=0.01 Rc=2090 cav ARM ITM.p2 modes(x, maxtem=6) knmd K_itm_r ITM 22 ‘’’) out = IFO.run(‘noxaxis()’) # Make a KnmMatrix wrapper around the output from the detector k_mat = KnmMatrix.from_buffer(out[“K_itm_r”], IFO.homs) # Now we can perform operations such as plotting the scattering matrix k_mat.plot(cmap=”bone”); See Computing arbitrary scattering matrices for some examples on the utility that the KnmMatrix object provides.

Syntax
knmd name comp coupling n1=none m1=none n2=none m2=none
Required

name: Name of newly created KnmDetector.

comp: A component which can scatter modes.

coupling: Coupling direction string, e.g. “11” for coupling coefficients on reflection from the front surface of a mirror.

n1, m1, n2, m2: int or None: From (n1, m1) and To (n2, m2) mode indices of the coupling coefficient(s) to retrieve. See above for the options.

math_detector
mathd
MathDetector

A detector that performs some math operation and outputs the result.

Syntax
mathd name expression dtype='O' dtype_shape=[] unit='arb.' label=none
Required

name: Name of detector

expression: Symbolic expression to evaluate as the detectors output

dtype_shape: The expected array shape when evaluating expression. Defaults to an empty tuple. This must be an empty tuple if dtype is a scalar type or “O”.

unit: The unit of the output for plotting. Defaults to “arb.”

label: How to label the axis when plotting this detector. Defaults to None.

Optional

dtype: The expected data type when evaluating expression. Defaults to “O”.

mmd
ModeMismatchDetector

Detector for mode mismatch figure-of-merit for a specified node coupling.

The computed quantity is given in finesse.gaussian.BeamParam.mismatch() where \(q_1\) is the input beam parameter at node1 propagated via the associated ABCD matrix to node2, and \(q_2\) is the beam parameter at node2. As mode mismatches cannot occur over spaces in Finesse, node1 must be an input node and node2 must be an output node.

Syntax
mmd name node1 node2 direction=x percent=false
Required

name: Name of the detector.

node1: Input node or port. If a Port instance is given then this node will be the input node of that port. Note that this node cannot be an output node.

node2: Output node or port. If a Port instance is given then this node will be the output node of that port. Note that this node cannot be an input node.

Optional

direction: Plane of computation, defaults to “x” for the tangential plane. Changing to “y” will compute the mode mismatch in the sagittal plane.

percent: Whether to calculate the mode mismatch as a fraction (default behaviour) or a percentage.

motion_detector
xd
MotionDetector

Represents a motion detector which calculates the amplitude and phase of surface motion.

Syntax
xd name node
Required

name: Name of newly created motion detector.

node: Node to read output from.

optimal_q_detector
optbp
OptimalQ

This detector tries to compute an optimal beam parameter (q) for a specified optical frequency at a node.

Output of this detector into an array solution will be a tuple of BeamParam in each transverse direction, (qx, qy). If the optimisation process fails beam parameter objects will NaN values will be returned.

Syntax
optbp name node f fix_spot_size=false astigmatic=false accuracy=1e-09 direction=both
Required

name: Name of the detector

node: Node name or object to put this detector at

f: Frequency component tro compute the optimal beam parameter for.

Optional

fix_spot_size: When True the optimised will keep the current spot size at the node fixed and just optimise the curvature.

astigmatic: When True qx and qy will be optimised separately

accuracy: Approximate mismatch accuracy to try and compute the optimised beam parameter to. mismatch(q_actual, q_optimal) < accuracy

direction: Return either both or just the x or y modes

power_detector_dc
pd
PowerDetector

Represents a power detector with no RF demodulations. It calculates the DC laser power at a node in Watts of optical power.

Syntax
pd name node pdtype=none
Required

name: Name of newly created power detector.

node: Node to read output from.

power_detector_demod_1
pd1
PowerDetectorDemod1

Represents a power detector with one RF demodulation. It calculates the RF beat power at a node in Watts of optical power.

If no demodulation phase is specified then this detector outputs a complex value I+1j*Q.

Syntax
pd1 name node f phase=none pdtype=none
Required

name: Name of newly created power detector.

node: Node to read output from.

f: Demodulation frequency in Hz

Optional

phase: Demodulation phase in degrees

power_detector_demod_2
pd2
PowerDetectorDemod2

Represents a power detector with two RF demodulation. It calculates the RF beat power at a node in Watts of optical power.

If no demodulation phase is specified for the final demodulation this detector outputs a complex value I+1j*Q where I and Q are the in-phase and quadrature parts of the signal.

Syntax
pd2 name node f1 phase1 f2 phase2=none pdtype=none
Required

name: Name of newly created power detector.

node: Node to read output from.

f1: First demodulation frequency in Hz

phase1: First demodulation phase in degrees

f2: Second demodulation frequency in Hz

Optional

phase2: Second demodulation phase in degrees

quantum_noise_detector
qnoised
QuantumNoiseDetector

Represents a quantum noise detector with no RF demodulations.

It calculates the amplitude spectral density of the photocurrent noise of a photodiode output demodulated at the signal frequency.

Syntax
qnoised name node nsr=false sources=none exclude_sources=none
Required

name: Name of newly created quantum noise detector.

node: Node to read output from.

Optional

nsr: If true, calculate the noise-to-signal ratio rather than the absolute noise value.

sources: If given, only detect quantum noise contributions from these components.

exclude_sources: If given, this will not detect quantum noise contributions from any of these components, even if explicitly specified in sources.

quantum_noise_detector_demod_1
qnoised1
QuantumNoiseDetectorDemod1

Represents a quantum noise detector with 1 RF demodulation.

It calculates the amplitude spectral density of the photocurrent noise of a photodiode output demodulated at the signal frequency.

Syntax
qnoised1 name node f phase nsr=false sources=none exclude_sources=none
Required

name: Name of newly created quantum noise detector.

node: Node to read output from.

f: Demodulation frequency in Hz

phase: Demodulation phase in degrees

Optional

nsr: If true, calculate the noise-to-signal ratio rather than the absolute noise value.

sources: If given, only detect quantum noise contributions from these components.

quantum_noise_detector_demod_2
qnoised2
QuantumNoiseDetectorDemod2

Represents a quantum noise detector with 2 RF demodulations.

It calculates the amplitude spectral density of the photocurrent noise of a photodiode output demodulated at the signal frequency.

Syntax
qnoised2 name node f1 phase1 f2 phase2 nsr=false sources=none exclude_sources=none
Required

name: Name of newly created quantum noise detector.

node: Node to read output from.

f1: First demodulation frequency in Hz

phase1: First demodulation phase in degrees

f2: Second demodulation frequency in Hz

phase2: Second demodulation phase in degrees

Optional

nsr: If true, calculate the noise-to-signal ratio rather than the absolute noise value.

sources: If given, only detect quantum noise contributions from these components.

quantum_shot_noise_detector
qshot
QuantumShotNoiseDetector

Represents a quantum shot noise detector with no RF demodulations.

It calculates the amplitude spectral density of the photocurrent noise of a photodiode output demodulated at the signal frequency, considering only vacuum noise contributions (ignoring radiation pressure and squeezing effects).

Syntax
qshot name node nsr=false
Required

name: Name of newly created quantum shot noise detector.

node: Node to read output from.

Optional

nsr: If true, calculate the noise-to-signal ratio rather than the absolute noise value.

quantum_shot_noise_detector_demod_1
qshot1
QuantumShotNoiseDetectorDemod1

Represents a quantum shot noise detector with 1 RF demodulation.

It calculates the amplitude spectral density of the photocurrent noise of a photodiode output demodulated at the signal frequency, considering only vacuum noise contributions (ignoring radiation pressure and squeezing effects).

Syntax
qshot1 name node f phase nsr=false
Required

name: Name of newly created quantum shot noise detector.

node: Node to read output from.

f: Demodulation frequency in Hz

phase: Demodulation phase in degrees

Optional

nsr: If true, calculate the noise-to-signal ratio rather than the absolute noise value.

quantum_shot_noise_detector_demod_2
qshot2
QuantumShotNoiseDetectorDemod2

Represents a quantum shot noise detector with 2 RF demodulations.

It calculates the amplitude spectral density of the photocurrent noise of a photodiode output demodulated at the signal frequency, considering only vacuum noise contributions (ignoring radiation pressure and squeezing effects).

Syntax
qshot2 name node f1 phase1 f2 phase2 nsr=false
Required

name: Name of newly created quantum shot noise detector.

node: Node to read output from.

f1: First demodulation frequency in Hz

phase1: First demodulation phase in degrees

f2: Second demodulation frequency in Hz

phase2: Second demodulation phase in degrees

Optional

nsr: If true, calculate the noise-to-signal ratio rather than the absolute noise value.