![]() |
OMSim
Geant4 for IceCube optical module studies
|
In the folder simulations/effective_area
you find the files pertinent to the effective area studies.
Note: In the following, a short introduction of an effective area study is made with the mDOM as an example. For further details see Chapter 10 of Lew Classen's thesis or Section 9.3.5 of Martin Unland's thesis.
During the design of a module, its sensitivity is optimised by considering the optical properties of various materials and altering the geometry and positioning of the mechanical components in the Geant4 simulation.
The metric to optimise the module's sensitivity is the effective area A_eff(θ, φ). This represents the area that is detected from a plane wave of incidence angle of θ (zenith) and φ (azimuth) with respect to the module. This parameter is calculated with OMSim by simulating a disk emitting mono-energetic photons perpendicular to its surface with a uniform density profile.
The photon generation is made with the module AngularScan
, running the method AngularScan::runSingleAngularScan
once for each direction to be investigated.
After simulating N photons from a plane of area A_rad (which has to be larger than the projected area of the mDOM), the effective area is calculated as
$$ A_{\mathrm{eff}}(\theta, \phi) = \frac{N_{\mathrm{det}}(\theta, \phi)}{N}\cdot A_{\mathrm{rad}}, $$
where N_det is the number of photons detected by the module. To optimise the sensitivity over multiple directions, A_eff(θ, φ) is calculated for various angle pairs, and the mean effective area, A_eff_mean, is determined. The n angle pairs are chosen using healpix, which separates a sphere into n pixels of equal area. Thus,
$$ \overline{A}_{\mathrm{eff}} = \frac{1}{n}\sum_{i=1}^n A_{\mathrm{eff}}(\theta_i, \phi_i). $$
Since the effective area is wavelength dependent, the calculation must be repeated for different wavelengths. Wavelengths shorter than 300nm are absorbed by the pressure vessel, whereas the QE of the PMT approaches zero at wavelengths longer than 700nm.
In the following, an example of the usage of the effective area module is given. Although there are C++ healpix libraries, in my opinion, the easiest way of getting the angle pair coordinates is using Healpy in Python.
In principle, for short simulations, you could run the program directly from Python using the angles from healpy as input parameters:
However, this is quite inefficient. The best is to save the angle pairs into a file and pass it as an argument. If you give a file as an argument, the arg theta and phi are ignored.
In my PC, the first code block needs 51 seconds (tested with NSIDE=2), the second block only 14 seconds (as simulation has to be initialised only once).