This project has moved. For the latest updates, please go here.

Monte Carlo Solver reflectance as a function of fx

Sep 20, 2012 at 6:01 PM

Is it possible to display the data from the monte carlo solver as reflectance as a function of fx instead of rho?  There seems to be error when source detector separation approaches zero and I'm worried that affects the transformation into the frequency domain with a Hankel transform (done with exported data in Matlab).

Sep 20, 2012 at 6:08 PM

Thanks for the post, Zander. Can you give the group some more detail, and perhaps post a graph highlighting the error you're referring to? No image upload on this forum, but you can link to a picture on (use the direct image URL).

Sep 20, 2012 at 6:19 PM

In this graph (, the first monte carlo was run with three layers with all the same optical properties (mua = 0.6, musp = 1.5) but different thicknesses (0.12, 0.25, Infinite mm, in that order) with an air layer on top.  The second monte carlo was the same but change the thicknesses to 1, 9, and infinite mm.  You can see the reflectance at 0mm is different.  Also compared to the basic and Nurbs monte carlo forward model, values differ (just showing the basic in red).

Sep 20, 2012 at 6:37 PM
Is the air layer domain set to [-Inf, 0)?

What was the radial binnning?

Hard to see the plot comparisons...can you plot in semilogy or loglog?
Sep 20, 2012 at 7:30 PM

log log:

log lin:

lin log:

The air layer is set from [-Inf, 0].

Radial binning for all was 0.1mm, 0 to 9.9mm.

Sep 20, 2012 at 7:51 PM
VP group - any thoughts/questions?
Sep 20, 2012 at 8:19 PM

Just glancing at the figures.  A couple of thoughts:

(1) which plots are which sets of data?

(2) could be that your variance is high near the source input due to the number of photons run?

Sep 20, 2012 at 8:45 PM
Edited Sep 20, 2012 at 9:20 PM

For these images, the red is homogeneous "layers" with these thicknesses (1, 9, and infinite mm) and the light blue is (0.12, 0.25, Infinite mm, in that order).  The other ones are labeled nurbs or scaled MC in the legend.

log log:

log lin:

lin log:

Sep 20, 2012 at 9:23 PM
Edited Sep 20, 2012 at 9:33 PM

seems like I get most of my error when I have two thin layers in a row (0.12, 0.25mm, infinite mm), blue tracing in image below, vs one thin layer on top of a thicker layer (0.12,10,infinite mm), green tracing in image below).

Sep 24, 2012 at 11:20 PM

Sorry Zander for joining in so late.  I thought I'd make sure this set  of posts came to some satisfactory conclusion before addressing your new post.  I'm a bit confused by your plots because the x axis goes from -1 to 1 and this is supposed to be a plot of R(rho).  For example, for  Why is this?

Also, would it be possible to post your infile?

Thanks, Carole

Sep 24, 2012 at 11:30 PM

Ah, I'm catching up.  Those plots are on log-log scale.  Okay.  Let me give your infile(s) a look.  Thanks, Carole

Sep 25, 2012 at 1:06 AM

sorry Carole, I have just been manually inputting the values (mua = 0.6, musp = 1.5, g = 0.8, n = 1.4) for the two sets of thicknesses (0.12, 0.25mm, infinite mm) and (1, 9, and infinite mm) online.

Sep 25, 2012 at 1:53 AM

So now that I see your data all together, I see a potential problem.  Is your last layer tissue or air?  If you use the default tissue definition on the MC solver panel GUI, the layers are air-tissue-tissue-air, and so the last layer is air.

If it is air, then I see a problem. In your first system the total tissue thickness if 0.37mm and in the second it is 10mm.  The reflectance from these two systems will be very different due to the amount transmitted out the bottom of the slab.

If your last layer is tissue, then both reflectance plots should be equal as you say. 

Let me know and we can go from there. Carole

Sep 25, 2012 at 2:06 AM

Hi Carole- the last layer is tissue.

Sep 25, 2012 at 3:31 AM

Xander, thanks for sticking with me.  I ran your input and got similar results that you did.  When I stepped through the code, I found an assumption coded into the MultiLayerTissue definition.  We assume that the first and last layers are air.  This assumption is used when determining whether the photon is on the boundary of the tissue domain (in a tissue method called OnDomainBoundary). 

David, I think we made this assumption together.  I'll need to look at the code closer to determine if making this more general for semi-infinite tissue definitions is possible or if breaking this assumption will mean major changes. 

Xander, in the meantime, if you make the last tissue layer very thick and add an air layer below, all should be good.  I just ran two cases: (1) layer 1 = [0,1], layer 2 = [1,10] and (2) layer 1 = [0,0.12], layer 2 = [0.12, 10], and get the same reflectance plot.

If you would like 3 tissue layers, i.e. a 5 layer system, air-tissue-tissue-tissue-air, I can create an infile for you that you can load into the GUI.

Thanks for finding this discrepancy in the code.  I will look further into specifying semi-infinite tissue definitions and definitely boost our documentation on this assumption when specifying tissue definitions if needed.



Sep 25, 2012 at 3:48 AM

Thanks Carole,

As far as what I actually wanted to do with this code, I think two layers is sufficient.  You may check my other post and have other ideas for me, so just let me know!