FLIM Simulations

Monte Carlo Model of Fluorescence Lifetime Measurements with TCSPC.

Photon Counting Applet Whole Transient Applet
Java Software Java Software

With a computer we can simulate a collection of molecules that are able to be excited by an external light pulse and also, when excited, to spontaneously emit light and return to their ground state. We let the excited state of these molecules have an effective lifetime ( τ ).


Stage 1: Excitation

The molecules are illuminated by a light pulse during which there will be some probability that each molecule will become excited, we provide this number, Pex , which is >0 and <1.

We can tell the computer to simulate this as demonstrated in the following pseudo code:


for each molecule, i

  generate a random number, R1 , between 0 and 1.

  if R1 <Pex then molecule i is excited.


Stage 2: Single photon emission

For any excited molecule there is a fixed probability, Pem, that the molecule will spontaneously emit light during the next time period, T, to return to its ground state.

Pem =  T / τ


We can simulate this by:

for each excited molecule, j

  for each time period, t

    generate a random number, R2 , between 0 and 1.

    if R2 <Pem then molecule j has emitted at time t.



Stage 3: Repeated excitation

If we assume that every emission is detected, then a TCSPC system will only detect the FIRST emission after each excitation pulse. In the above code we must keep track of all the times that every molecule emits. Then at the end of all the above code loops, choose to detect the earliest emitted photon.

This one emission event is taken and used to increment one of the bars in the graph, the bar corresponding to time t.


As we run these stages over and over again we will build up a transient signal which may (or may not) look like an exponential decay with the lifetime τ.


This simulation can be seen live with the TCSPC Java applet.


With this basic simulation run many times we can start to model effects such as photon build-up.

Explore this with the TCSPC2 Java applet.