This web page was created in support of the papers "Three Monte Carlo programs of polarized light transport into scattering media: part I & 2". The three Monte Carlo programs described in the papers are available here for download along with basic instructions for their use.

Unpolarized Light Monte Carlo programs have been around for some time; some are available here.

The Polarized Light Monte Carlo programs described here keep track of the status of polarization of light traveling through a scattering media. In the Monte Carlo programs presented here the scatterers are microspheres. These codes use a Mie scattering program to calculate the scattering coefficients of the scattering matrix.

An important issue in Polarized light Monte Carlo is the tracking of the polarization reference frame. We show three different methods to do so

- Meridian Plane Monte Carlo: uses meridian planes
- Euler Monte Carlo: uses Euler rotations of two unit vectors
- Quaternion Monte Carlo: uses quaternions

These programs were developed in C programming language, they were compiled and tested in Red Hat Linux 7 and MacOsX-Unix (we were also able to run them in a Knoppix environment)

Here are step by step instructions on how to run these programs

Download the Monte Carlo code you want to try

Unzip it or untar it

>unzip -iquv.08.03.zip

>untar -cf -iquv.08.03.tar

Read the README file that has a lot of information I will not repeat here

Open a terminal window

For mac users it looks like this

You can also find the terminal in Applications/Utilities/Terminal.app

Find the directory where you put the Monte Carlo program

Make the program by typing make at the prompt

Ignore the warnings

You are now ready to run your Monte Carlo program, just type ./iquv the propt

You are done! This program produces 16 images. Launch H corresponds to a field whose status of polarization is parallel to the reference frame (Stokes Vector [1 1 0 0]), Launch V is for perpendicular (Stokes Vector [1 -1 0 0]), Launch P is for 45 degrees (Stokes Vector [1 0 1 0]), and Launch R is for right circular polarized (Stokes Vector [1 0 0 1]).

For every launched Stokes vector 4 images are created corresponding to the reflected 4 elements of the Stokes vector IQUV, so for Launch H you will have HI.dat HQ.dat HU.dat HV.dat, Launch V you will have VI.dat VQ.dat VU.dat VV.dat, and so forth