ROOT-based simulator for ray tracing (ROBAST) is a non-sequential ray-tracing simulation library developed for wide use in optical simulations of gamma-ray and cosmic-ray telescopes. The library is written in C++ and fully utilizes the geometry library of the ROOT analysis framework.
In 2007 ROBAST was first developed to simulate the modified Baker–Nunn optical system of the Ashra experiment, which is composed of three aspherical lenses and spherical segmented mirrors as illustrated in Figure 1. In 2010 ROBAST was released as an open-source project to be more widely used in the cosmic-ray and gamma-ray community. It is currently used by many sub projects of the Cherenkov Telescope Array and some other projects.
If you are already familiar with ROOT and C++, and if you are looking for a ray-tracing simulator suited for cosmic-ray telescopes, ROBAST is what you want. Even if you are a ROOT/C++ beginner, it is worth to try ROBAST and start learning ROOT and C++ right now.
Thanks to the ROOT geometry library and additional ROBAST classes, complex telescope geometry with a number of segmented mirrors and telescope masts can be built. Indeed, ROBAST is currently used for optics simulations of several telescope designs of the Cherenkov Telescope Array;
As shown in Figures 1 and 2, segmented mirrors, telescope masts and trusses, lenses, and focal plane can be modeled in ROBAST. The telescope geometry can be drawn in an OpenGL window.
In addition to telescope simulations, ROBAST has a few dedicated geometry classes for light concentrators (also known as Winston cones). Multiple reflections on the surface of a light concentrator can be easily simulated by the non-sequential ray-tracing functionality of ROBAST.
Your ROBAST simulation programs can be written in C++ or Python, and so you can directly analyze the simulation results inside a ROOT or a Python script (via PyROOT). Figure 3 shows spot diagrams of a SC optical system directly analyzed in a ROOT session.