Skip to main content

Gaussian beams and paraxial approximation



Gaussian beams  
is a beautiful phenomenon in optics. As they propagate through space they retain their Gaussian shape, and only get broader or narrower. They are symmetric along the optical axis. No matter how many lenses you use to focus and defocus your laser beam, it will remain Gaussian. And it's shape is described by a few simple formulas, which define their thinnest section (w0, 'waist'), radius of wavefront (R), and divergence angle (Theta). Some immediate applications include fiber coupling, confocal microscopy, and light-sheet microscopy.

The formulas describing Gaussian beams were derived in the 1960-s, soon after the invention of lasers, by solving the wave equation for electromagnetic waves, and were analysed exhaustively in paraxial approximation (Kogelnik and Li, 1966).

Paraxial approximation means that angle of beam divergence angle is small (theta ~ tan(theta)). However, modern microscopy pushes limits to high-NA objectives and laser beams for higher resolution.

How good is the paraxial approximation? What if you focus a Gaussian beam to a really small spot of an order of a wavelength? Do these formulas still apply?
The short answer is yes, they apply quite well. As shown in (Agrawal and Pattanayak, 1979), non-paraxial description adds a lot of math, but not so much difference in the beam shape:
The beam profiles shown in (a) are cross-sections simulated about 1 wavelength from the waist (really close), with effective NA(air) about 1.0. The difference between paraxial and exact formulas is mostly over-estimation of peak intensity in paraxial case. The side lobes, and hence the width of beams, look remarkably similar. As you go farther from the waist, the paraxial approximation gets more accurate, too.

So if you are doing microscopy with high-NA Gaussian beams, stay cool - the old formulas from textbooks are good.

Here is an excellent review on Gaussian beams in light-sheet microscopy (Power & Huisken, Nature Methods, 2017)

References






Comments

Popular posts from this blog

3D modeling in a lab

About once a week I am asked by my colleagues which 3D modeling software I am using - usually when I am staring at the new part being 3D printed. I am using  Autodesk Inventor for a few reasons: it is a professional software for engineers and has huge community around it it provides free academic license there are thousands of youtube videos with detailed tutorials by enthusiasts easy to learn at a basic level, but there is always a lot of room for growth In a lab, there are two main workflows where Inventor is necessary: 3D modeling of complex assemblies (like custom-built microscope) and 3D printing. There are many youtube tutorials for beginners , so I here only review some things that Inventor can do, without any specific instructions.  3D modeling of parts and assemblies Before building a new microscope, you can create its virtual model and check dimensions, required adapters, and whether things will fit together. Luckily, Thorlabs has 3D model of nearly all it

How to connect a rotary encoder to Arduino and make your first PCB board

After I discovered the OpenStage project for cheap DIY microscopy stage automation, I decided to add a twist to it - control the stage positions manually with a rotary encoder, in addition to already-implemented serial port (USB). I found a nice RGB illuminated rotary encoder from Sparkfun  - it's shaft works as a button, and it is internally illuminated by built-in 3-color LEDs - a perfect device to switch speeds and manually control the stages. Hooking it up to Arduino seemed easy, and there is a very nice Encoder library to do just that. But when I started to test it, I fell into a deep rabbit hole called 'debouncing'. In short, real-world switches are never perfect and the 'moment' of switching has many messy things happening between the two leads, creating noise in the logic of reading device (Arduino). So, the voltage readout from a real rotary encoder looks like this: Note the high-frequency chirp in yellow line when it falls from high to low. T

Programming NI DAQmx board in Python: easier than you think!

For my DIY microscope I had a task - generate a train of digital pulses which simulate camera trigger, so that other devices (galvo and laser) are synched. I wanted to do it in Python , so that it seamlessly integrates in my data acquisition and analysis Jupyter notebook. After some quick search I found a PyDAQmx library which seemed mature and had good examples to begin with. Installation was smooth: download, unzip, open Anaconda prompt, python setup.py install After only 30 min fiddling, I was able to solve my problem in just a few lines of code: Holy crap, it just works, out of the box. Oscilloscope shows nice digital pulses every 100 ms, each 1 ms long. The code is much shorter and cleaner than would be in C, C#, or LabView. PyDAQmx appears to be a full-power wrapper around native NI DAQmx drivers (yes, they need to be installed), so presumably it can do all that can be done in C or even LabView (this statement needs to be tested). One can use PyDAQmx to control ga