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. UseGouy
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 returnBeamParam
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
andydata
, 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
andydata
, 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
andydata
, 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 theCavityPropertyDetector.cavity
attribute will point to the correspondingCavity
object when adding this detector to aModel
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 returnBeamParam
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
andImage.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.
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 viaScanLine.xdata
andScanLine.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
andPixel.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
: AnOpticalNode
instance, or a data type which can be converted to an optical node.to_node
: AnOpticalNode
instance, or a data type which can be converted to an optical node.via_node
: AnOpticalNode
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 theKnmMatrix
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 usingKnmMatrix.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 theKnmMatrix
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 detectorexpression
: Symbolic expression to evaluate as the detectors outputdtype_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 aPort
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 aPort
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 detectornode
: Node name or object to put this detector atf
: 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 separatelyaccuracy
: Approximate mismatch accuracy to try and compute the optimised beam parameter to. mismatch(q_actual, q_optimal) < accuracydirection
: 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 Hzphase1
: First demodulation phase in degreesf2
: 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 Hzphase
: 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 Hzphase1
: First demodulation phase in degreesf2
: Second demodulation frequency in Hzphase2
: 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 Hzphase
: 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 Hzphase1
: First demodulation phase in degreesf2
: Second demodulation frequency in Hzphase2
: Second demodulation phase in degrees- Optional
nsr
: If true, calculate the noise-to-signal ratio rather than the absolute noise value.