Skip to main content
  1. projects/

Cherenkov Ray Tracing

projects research physics nEXO particle astrophysics computational physics
PhD thesis - This article is part of a series.
Part : This Article

What we are looking at here is the pattern of light you would recieve from (only) muon Cherenkov radiation deep underground in a cylindrical water tank. The x-axis in the plot above is the unwrapped wall of a cylinder (angular direction), and the y-axis is the height of the cylinder.

I was curious about what this pattern would look like with high-statistics (light from many muons superimposed). I found running these sorts of simulations in Geant4 very time-consuming because of the amount of detailed physics included (and having to use C++/ROOT). I also had a computational physics class project to do around the same time so I figured I would hit two birds with one stone. I spent a couple of days building the code that produced the plot you see above. I used the Numba package in Python to try out JIT-compiling (which is awesome) and GPU-accelerating (or even just parallelizing) my photon propagation/ray tracing.

The physics is pretty straightforward, first you calculate the muon angular distribution you would expect at a certain depth underground (get this from the literature). Then, you generate muons with this distribution passing through your cylinder. Next, code up the angles that Cherenkov light is emitted at within the wavelength range you are interested in (remember to normalize how many photons you produce properly). Finally, run the code and calculate which photon trajectories will intersect the cylinder and at which points (TBT intro linear algerbra). At the end, superimpose the results from many muons.

The streaks on the walls happen when muons exit (their Cherenkov cone shrinks as they approach the wall). You can even modify the code to include objects (produce shadows), reflections, scattering etc… It’s all really beautiful when done in Python.

Here is a link to the Github repo (which made it into the GitHub Arctic Vault)!


This project later led to several undergraduate projects working under me, developing this code into a GPU-compatible framework, Chroma, which is now used as one of the key simulation toolkits for nEXO.

PhD thesis - This article is part of a series.
Part : This Article