33.3. Material Optical Properties
Table of Contents
Refractive index
In Geant4, optical properties are attached to materials through a G4MaterialPropertiesTable. The most basic and essential property is the refractive index, usually given by the key "RINDEX". This quantity tells Geant4 how optical photons change direction and speed when they enter the material.
The refractive index is defined as
$$
n(E) = \frac{c}{v(E)}
$$
where $c$ is the speed of light in vacuum and $v(E)$ is the phase velocity of light of energy $E$ in the material. In Geant4, you specify $n$ as a function of photon energy, not wavelength. Geant4 will then use this table during tracking to compute refraction and reflection at boundaries, and to determine the group velocity of photons inside the material.
Geant4 expects all optical properties to be given as arrays of pairs
$$
(E_i, P_i)
$$
where $E_i$ is the photon energy and $P_i$ is the value of the property at that energy. For the refractive index, you provide arrays of photon energies and corresponding $n$ values. The arrays must be strictly increasing in energy, and all optical properties for a given material must use the same energy array if they are defined together.
For each material:
- Photon energies must be sorted in strictly increasing order.
- All optical properties in the
G4MaterialPropertiesTablemust use the same photon energy range and ordering. - The refractive index
"RINDEX"must be defined for any material that should interact with optical photons.
A typical workflow to assign a refractive index is:
- Decide the energy range of your optical photons. For scintillators, this usually covers the emission spectrum. For Cherenkov detectors, it can be broader.
- Convert tabulated data from wavelength to energy using
$$
E = \frac{hc}{\lambda}
$$
with $h$ the Planck constant, $c$ the speed of light, and $\lambda$ the wavelength. Use Geant4 constants (for exampleh_Planck*c_light) to stay consistent with internal units. - Create C++ arrays or
std::vectors of energies and refractive indices, then attach them to the material throughAddProperty("RINDEX", energies, rindex, nEntries).
Even if your refractive index is almost constant with wavelength, you still need at least two points in the table to define it over a finite energy range. You can then use the same value of $n$ at both energies. Outside the defined range, Geant4 does not extrapolate, so photons with energies outside your table will not have well defined optical behavior. You therefore need to ensure that the source spectra and any other optical processes produce photons only inside the defined energy window.
A smooth and physically reasonable refractive index curve is important. Artificial jumps or unphysical values can create unexpected total internal reflection or incorrect photon timing. When you use tabulated data from literature, double check unit conversions, especially when going from wavelength in nanometers to energy in GeV or eV.
Absorption length
The second key optical property is the absorption length, which describes how far an optical photon travels in a material before it is absorbed. In Geant4, this is usually provided through the key "ABSLENGTH" in the same G4MaterialPropertiesTable.
Physically, the absorption length $\lambda_{\text{abs}}(E)$ is related to the probability that a photon survives traveling a distance $x$ without being absorbed:
$$
P_{\text{survive}}(x) = \exp\!\left(-\frac{x}{\lambda_{\text{abs}}(E)}\right).
$$
A shorter absorption length means stronger absorption. In Geant4 you provide, for each photon energy, the corresponding absorption length in units of length, for example millimeters or meters using the Geant4 unit system.
For absorption:
- The property name is
"ABSLENGTH"and values must be positive lengths in Geant4 units. - The energy array for
"ABSLENGTH"must match the energy array used for"RINDEX"for the same material. - A very large absorption length (for example
1e6*m) effectively means the material is transparent at that energy.
When you define absorption lengths, you normally proceed as follows:
- Obtain or assume an absorption or attenuation coefficient as a function of wavelength or energy from measurements or literature. Often this is given as an attenuation length or a transmission curve.
- Convert any wavelength dependent data to energy, and transform transmission or attenuation coefficients into an effective absorption length. For a simple exponential attenuation, if the intensity decreases as $I(x) = I_0 e^{-\mu x}$, then the absorption length is $\lambda_{\text{abs}} = 1/\mu$.
- Build the energy and absorption length arrays, then add them to the
G4MaterialPropertiesTablewithAddProperty("ABSLENGTH", energies, abslength, nEntries).
Make sure that the defined absorption length is consistent with your intended detector behavior. For example, if you simulate a long light guide and want most photons to reach the photodetector, the absorption length must be significantly larger than the length of the guide. On the other hand, if you are modeling a strongly absorbing coating, the absorption length should be much shorter than the coating thickness.
In optical simulations that also include scattering, there can be an important distinction between true absorption and scattering out of the original direction. Geant4 provides additional properties for scattering, such as "RAYLEIGH". The "ABSLENGTH" property should correspond to processes where the photon disappears, not just changes direction. Keeping this distinction clear helps you build realistic models of light transport in scintillators, optical fibers, and biological tissues.
By combining realistic refractive index and absorption length data over the relevant photon energy range, you give Geant4 the information it needs to simulate optical photon transport with physically meaningful probabilities for refraction, reflection, and absorption.
Views: 8
KAHIBARO