Finesse Cheatsheet

(Frequently asked questions for Finesse and Pykat users)

The lists below provides answers, where possible including graphics, to some common questions encountered by new (and old) Finesse users. It should be used in combination with the Finesse Syntax Reference and full user manual. This cheatsheet page is maintained by Anna Green.

The first section provides answers to common syntax-related questions. The second section provides answers to other common questions such as installation issues.


Click on each title to expand or collapse.

Syntax-Related Common Questions

'Length' and 'Tuning': L vs. phi

The distance between components is separatated into a
							macroscopic length, L and a microscopic tuning, phi.

Distances in Finesse are separated into macroscopic lengths, L which are attributed to space components, and microscopic tunings, phi which are attributed to mirror and beamsplitter components.

Lengths are defined such that a user-input value of L is rounded to the nearest multiple of the model's default wavelength, lambda, i.e. \[ L_{\rm used} = \lambda \left\lfloor\frac{L_{\rm input}}{\lambda}\right\rceil\]

Tunings are defined in units of degrees, such that a tuning of phi=360° corresponds to a change in propagation distance of one wavelength, i.e. \[ \Delta L = \frac{\phi}{360^\circ}\lambda \]

This definition is used to distinguish properties that depend on the macroscopic length, such as a cavity's free spectral range, from optical behaviours that depend on the sub-wavelength tuning of the system, such as the cavity resonant condition. As a consequence, a simple cavity model will be maximally resonant when both mirrors have a tuning of phi=0°.

The direction of tuning is arbitrarily defined to be in the direction of the normal vector on the front surface, i.e. a positive tuning moves the mirror from node2 towards node1 (for a mirror given by m ...node1 node2).

This information is covered in section 3.3.2 of the Finesse 2.0 Manual.

Beamsplitter Nodes

Beamsplitter nodes are labelled in the order
							input-refl-trans-output

The syntax for the beamsplitter component is:
bs name R T phi alpha node1 node2 node3 node4

Nodes are defined in the order depicted; typically this is input-refl-trans-output. This is independent of the angle of incidence on the beamsplitter (alpha).

This information is covered in section 3.4.4 of the Finesse 2.0 Manual.

Radius of Curvature Sign

Radius of curvature is defined as positive when the
							surface is concave as seen from the first node defined.

Radius of curvature is defined as follows: if the surface seen from the first specified node (specified at the respective mirror or beam splitter) is concave, then the number for the radius of curvature is positive.

For example, a concentric cavity will have an input mirror with negative curvature and end mirror with positive curvature.

This information is covered in section 4.3.4 of the Finesse 2.0 Manual.

Angles and Rotation: alpha, xbeta, ybeta

distance to the waist, z, is negative when the waist is
							downbeam of the reference optic, i.e. when the beam is
							in the process of focussing down to a waist.

Beamsplitters include a parameter alpha, which describes the angle of incidence on the optic and reorients the optical axis for the reflected beam. alpha is input in degrees.

Misalignment can be introduced to optics using additional parameters via the attr command. xbeta misaligns the beam in the same plane as alpha> (i.e. yaw); ybeta misaligns out of plane (pitch). x(or y)beta can be used on an xaxis or in combination with fsig to introduce jitter to a beam. Misalignments are input in radians.

NB: phi describes the tuning of an optic (see above) and should not be confused with alpha.

This information is covered in sections 4.11 and G3 of the Finesse 2.0 Manual.

Beam z Parameter Direction

distance to the waist, z, is negative when the waist
		is downbeam of the reference optic, i.e. when the beam is
		in the process of focussing down to a waist.

The cavity and beam parameter detectors (cp and bp), and trace command, can output the distance to the beam waist, z. In Finesse, the sign of z is determined by whether the beam downstream of the reference optic is being focussed towards a waist, or expanding away from one. The convention is `z<0 when the waist position is down beam', i.e. when the beam is in the process of focussing down after the optic.

For cavities (cp or trace 2 outputs), the reference optic is the input optic specified in the cav command. For a confocal or concentric cavity this means that z<0 irrespective of which optic is defined as the input. For a hemispherical cavity, the sign will depend on which optic is defined as the input.

This information is covered on the second Finesse help screen (type `kat -hh' in a terminal window or see the preamble of the Finesse 2.0 Manual).

Geometric Stability: g vs. m

Both g and m are commonly used to describe the geometric stability of an optical resonator (cavity). The two differ only in their range, and one can be mapped simply onto the other: \[ -1\leq m \leq 1 \quad\quad 0\leq g\leq1\quad \rightarrow\quad g = \frac{1}{2}\left(m+1\right)\]

The reason for having two symbols is due to their differing origins. m is a generic stability condition for periodic sqeuences of optics described by their ABCD matrix, and is thus easily output by Finesse. g originates from the specific case of a 2-mirror cavity, and allows for some convenient parameterisation of such cavities. You can read more about the two versions in sections 2.2 and 2.3 of Laser Beams and Resonators, Kogelnik and Li (1966).

This information is based on section G3 of the Finesse 2.0 Manual.

Detector Direction: node vs. node*

The default field detected at a node is the field coming
				FROM and optic (with some caveats).

There are two light fields at every node: one in each direction along the beam path. If the node has only one connection, then a detector (pd, ad, etc.) at that node will automatically measure the field in the non-empty direction. Otherwise, the detector will measure the field in the default direction, unless told otherwise by adding the optional asterisk after the node name.

Usually, the default beam is the beam going into a space coming from a different component. If there isn't a space between two components, but the other component connected to the node is instead a mirror m, beamsplitter bs, or modulator mod, then the beam from the mirror/beamsplitter/modulator is the default. If the two components connected to the node are the same type, then the beam from the first component specified is the default.

This information is covered in section 3.2.1 of the Finesse 2.0 Manual.

The cav command - when and why do I need it?

The distance between components is separatated into
				a macroscopic length, L and a microscopic tuning, phi.

The syntax for the beamsplitter component is:
cav name component1 node component2 node

The cav command computes the Gaussian eigenmodes of a (stable) cavity and uses these to define the beam parameters of each node within the cavity.

Whenever possible, cavity eigenmodes should be used to define the beam parameters in your model. This will ensure that the optimal mode basis is used for fast and accurate results with a minimum number of higher order modes.

In models with a single cavity, using a cav command will result in the input beam being defined to be perfectly mode matched to the cavity. This can by overridden by including a gauss command.

In models with multiple cavities, the cav commands are executed in the order they appear in the input file. If two cavities share an end node, the beam parameter computed by the second cav command will overwrite that from the first. gauss commands are executed last, and will overwrite any beam parameter previously set using a cav command at that node.

The cav command is not relevant to plane wave models.

This information is covered in section 4.4 and A.1 of the Finesse 2.0 Manual.

The yaxis command: complex number outputs

By default, detector outputs in Finesse are stored as absolute values. The yaxis command is used to change this.

This is necessary when detecting outputs with complex information, such as using ad detectors to extract the phase of a light field, or using a bp detector to measure the q parameter of a beam.

For example bp name x q node will by default return |q| and the specified location. To instead store the full complex value of all outputs, you should use the yaxis re:im or yaxis abs:deg command.

See the Syntax Reference for more about the yaxis command.

Scanning and reading out frequencies using ad / pd[n] with put

The amplitude detector ad detects a given field at a single static frequency. Similarly, demodulating photodiodes pd[n] demodulate at a single static frequency. In cases where the detector is intended to follow another frequency, for example when measuring the response of a cavity as the frequency of a laser is scanned, or to measure the transfer function of an error signal, this must be actively specified using the put command:

put ad_name f $x1

This instructs Finesse to set the frequency of the named ad (or pd) to match the current value of the xaxis.

See the Syntax Reference for more about the put command.

Other FAQs

Installation problems? Other Issues? Try these common fixes...

I'm new to all things Finesse and PyKat-related. How do I get started?

The Learn Laser Interferometery pages are a great place to get started with learning Finesse, PyKat and of course laser interferometery. Currently, we recommend following this Simulation Preparation Guide to install everything you need using Conda/Anaconda , then work with Finesse via Pykat using Jupyter notebooks.

I installed everything and can launch a Jupyter notebook, but PyKat can't find Finesse

You've installed everything and successfully launched a Jupyter notebook, but when you import Finesse from pykat, you see an error saying that Finesse cannot be found. What now?

Try closing down all terminal windows and browser tabs that use python/jupyter/ Finesse, then restarting everything. This is necessary so that terminal loads the environment variables that get setup once the Finesse package is installed.

If that doesn't work, it's possible there is an issue with your path (environment) variables, perhaps a result of you moving files around in your system.

For Windows Users:

For Unix Users (Linux/Mac OS):

Your .profile (sometimes .bash_profile) file might need updating to match the current path to your Finesse install. Make sure that your profile file contains the following:

export FINESSE_DIR="(path to your Finesse folder)"
export KATINI="${FINESSE_DIR}kat.ini"
export PATH=${FINESSE_DIR}:$PATH