[ Light ] section ================================================== This section defines the generation, transport, and boundary conditions of light (scintillation light, Cherenkov light). Only one [ Light ] section can be defined per input file. Multiple ``set-region`` and ``set-boundary`` blocks can be used to assign different optical properties to different regions and boundaries. .. note:: Light is specified by the particle name ``light`` or the kf code ``-22``. Overall Structure -------------------------------------------------- .. code-block:: text [ Light ] yield-factor = 1e-4 set-region reg = 101 102 n = 1.5 light-yield = 10000 table-scintillation-spectrum unit1 = nm 300 0 400 0.1 500 0.2 600 0.3 700 0.1 800 0 end-table set-boundary reg-from = 101 reg-to = 98 fraction-absorption = 0.3 Global Parameters -------------------------------------------------- Parameters specified at the beginning of the section (before ``set-region`` / ``set-boundary``). .. list-table:: :header-rows: 1 :widths: 30 15 55 * - Parameter - Default - Description * - yield-factor - 1.0 - | Scaling factor for light yield. The number of generated photons is multiplied by yield-factor, and each photon's weight is set to 1/yield-factor to preserve statistics. | For example, yield-factor = 0.001 reduces the number of generated photons to 1/1000, lowering computational cost. * - lmin-light - 250 - Lower limit of light wavelength [nm]. * - lmax-light - 800 - Upper limit of light wavelength [nm]. * - emin-light - Corresponds to lmax-light (1.55e-6 MeV) - Lower limit of light energy [MeV]. Can be used instead of lmax-light. * - emax-light - Corresponds to lmin-light (4.96e-6 MeV) - Upper limit of light energy [MeV]. Can be used instead of lmin-light. * - transport - 1 - | Whether to transport light. | = 0: No transport (useful for scoring emission only) | = 1: Transport * - stock-max - 100000 - Maximum number of light generation steps stocked per history. Increase if overflow warnings appear. Table Units -------------------------------------------------- Available units for tables are listed below. **unit1 (wavelength/energy axis)** .. list-table:: :header-rows: 1 :widths: 20 40 * - Value - Description * - nm - Nanometer * - um - Micrometer * - mm - Millimeter * - cm - Centimeter * - eV - Electron volt * - keV - Kilo electron volt * - MeV - Mega electron volt **unit2 (absorption/scattering coefficient or length)** For coefficient tables (-coeff): .. list-table:: :header-rows: 1 :widths: 20 40 * - Value - Description * - 1/km - 1/kilometer * - 1/m - 1/meter * - 1/cm - 1/centimeter * - 1/mm - 1/millimeter For length tables (-length): .. list-table:: :header-rows: 1 :widths: 20 40 * - Value - Description * - km - Kilometer * - m - Meter * - cm - Centimeter * - mm - Millimeter .. note:: An error will be displayed if a length unit is specified for a ``*-coeff`` parameter (or vice versa). set-region Block -------------------------------------------------- ``set-region`` starts a new region block to define optical properties. Multiple ``set-region`` blocks can be used to assign different properties to different regions. Region Specification ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. list-table:: :header-rows: 1 :widths: 30 70 * - Parameter - Description * - reg - Region number(s) to assign optical properties. Multiple regions can be specified separated by spaces. Refractive Index ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Cherenkov light is generated in regions where a refractive index is set. .. list-table:: :header-rows: 1 :widths: 30 15 55 * - Parameter - Default - Description * - n - 1 - Refractive index (scalar). Used when there is no wavelength dependence. * - table-n - (none) - Wavelength-dependent refractive index table. Table format example: .. code-block:: text table-n unit1 = nm 300 1.52 500 1.50 800 1.49 end-table Scintillation ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Parameters related to scintillation light generation. Both ``light-yield`` and an emission spectrum (``table-scintillation-spectrum`` or ``scintillation-energy`` / ``scintillation-lambda``) are required for emission. .. list-table:: :header-rows: 1 :widths: 30 15 55 * - Parameter - Default - Description * - light-yield - 0 - Light yield [light/MeV]. * - table-scintillation-spectrum - (none) - | Scintillation emission spectrum (wavelength-dependent relative emission probability). | The table defines only the spectral shape; it does not affect the number of emitted photons (determined by light-yield). | Only relative ratios of the values are meaningful, as they are internally normalized. * - scintillation-energy - (none) - Scintillation light energy [MeV]. Used for single-energy emission. Alternative to table-scintillation-spectrum. * - scintillation-lambda - (none) - Scintillation light wavelength [nm]. Used for single-wavelength emission. Alternative to table-scintillation-spectrum. Table format example: .. code-block:: text table-scintillation-spectrum unit1 = nm 300 0 400 0.1 500 0.2 600 0.3 700 0.1 800 0 end-table **Birks' Law** Accounts for the non-linearity (quenching) of light yield with respect to energy loss of charged particles. In Birks' law, the light output per unit path length is expressed as: .. math:: \frac{dL}{dx} = S \frac{dE/dx}{1 + k_B \cdot dE/dx} where :math:`S` is the scintillation efficiency (light-yield), :math:`dE/dx` is the stopping power, and :math:`k_B` is the Birks constant. Quenching becomes stronger (and scintillation efficiency decreases) as :math:`dE/dx` increases (heavier particles or lower energies). .. list-table:: :header-rows: 1 :widths: 30 15 55 * - Parameter - Default - Description * - Birks-kB-cm/MeV - 0 (disabled) - Birks constant kB [cm/MeV] * - Birks-kB-mm/MeV - 0 (disabled) - Birks constant kB [mm/MeV] * - Birks-kB-g/cm2/MeV - 0 (disabled) - Birks constant kB [g/cm\ :sup:`2`/MeV]. Internally converted to cm/MeV using the cell density. **Time Structure** Specifies the time distribution of scintillation light. .. list-table:: :header-rows: 1 :widths: 30 15 55 * - Parameter - Default - Description * - decay-time - 0 (instant emission) - Decay time constant [ns]. * - decay-time2 - 0 - Decay time constant of the 2nd component [ns]. Used for two-component decay. * - rise-time - 0 - Rise time constant [ns]. Must be smaller than decay-time. * - decay-fraction - (none) - Fraction of the 1st component. Required when using decay-time2. * - decay-fraction2 - (none) - Fraction of the 2nd component. Required when using decay-time2. .. note:: When decay-time2 is set, both decay-fraction and decay-fraction2 must also be set. When rise-time is set, decay-time must also be set. Absorption Coefficient ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Defines light absorption in the medium. Either the absorption coefficient (unit: 1/cm) or absorption length (unit: cm) can be specified. Internally converted to absorption coefficient (``coefficient = 1 / length``). **Scalar (no wavelength dependence)** .. list-table:: :header-rows: 1 :widths: 35 65 * - Parameter - Description * - absorption-coeff - Absorption coefficient [1/cm] * - absorption-length - Absorption length [cm]. Must be greater than 0. **Table (wavelength-dependent)** .. list-table:: :header-rows: 1 :widths: 40 60 * - Parameter - Description * - table-absorption-coeff - | Wavelength-dependent absorption coefficient table. | unit1: wavelength or energy unit (nm, etc.) | unit2: coefficient unit (1/cm, etc.) * - table-absorption-length - | Wavelength-dependent absorption length table. | unit1: wavelength or energy unit (nm, etc.) | unit2: length unit (cm, etc.) **Conversion from Internal Transmittance** Absorption coefficients can be automatically calculated from internal transmittance values found in optical glass catalogs. Based on the Beer-Lambert law: :math:`\alpha = -\ln(\tau) / d`. .. list-table:: :header-rows: 1 :widths: 20 80 * - Parameter - Description * - table-tau1 - Internal transmittance table for 1 mm (0.1 cm) thick sample * - table-tau10 - Internal transmittance table for 10 mm (1.0 cm) thick sample * - table-tau25 - Internal transmittance table for 25 mm (2.5 cm) thick sample Table format example (absorption coefficient): .. code-block:: text table-absorption-coeff unit1 = nm unit2 = 1/cm 300 0.5 500 0.1 800 0.05 end-table Table format example (internal transmittance): .. code-block:: text table-tau25 unit1 = nm 300 0.01 500 0.90 800 0.95 end-table Scattering Coefficient ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Defines light scattering in the medium. Rayleigh and Mie scattering can be set independently. As with absorption, either coefficient or length can be specified. **Rayleigh Scattering** .. list-table:: :header-rows: 1 :widths: 40 60 * - Parameter - Description * - table-scattering-coeff-rayleigh - | Wavelength-dependent Rayleigh scattering coefficient table. | unit1: wavelength or energy unit | unit2: coefficient unit (1/cm, etc.) * - table-scattering-length-rayleigh - | Wavelength-dependent Rayleigh scattering length table. | unit1: wavelength or energy unit | unit2: length unit (cm, etc.) Table format example: .. code-block:: text table-scattering-length-rayleigh unit1 = nm unit2 = cm 300 5 500 50 800 200 end-table **Mie Scattering** .. list-table:: :header-rows: 1 :widths: 40 60 * - Parameter - Description * - table-scattering-coeff-mie - | Wavelength-dependent Mie scattering coefficient table. | unit1: wavelength or energy unit | unit2: coefficient unit (1/cm, etc.) * - table-scattering-length-mie - | Wavelength-dependent Mie scattering length table. | unit1: wavelength or energy unit | unit2: length unit (cm, etc.) **Mie Scattering Anisotropy** .. list-table:: :header-rows: 1 :widths: 30 10 55 * - Parameter - Default - Description * - anisotropy - 0 - | Mie scattering anisotropy parameter g (scalar). The g parameter in the Henyey-Greenstein phase function. | g = 0: isotropic, g > 0: forward scattering dominant, g < 0: backward scattering dominant. | Range: -1 ≤ g ≤ 1. * - table-anisotropy - (none) - Wavelength-dependent anisotropy parameter table. Only unit1 is needed. Re-emission: Fluorescence, Phosphorescence, and Wavelength Shifting ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Defines re-emission (fluorescence, phosphorescence, wavelength shifting) of optical photons in the medium. When an optical photon is absorbed via the re-emission absorption process, a new photon may be emitted with a probability given by the quantum yield, using the re-emission spectrum and a random isotropic direction. This process is independent of the normal (non-radiative) absorption defined by ``absorption-coeff`` / ``table-absorption-coeff``. Both processes contribute additively to the total absorption: the total absorption coefficient is the sum of the non-radiative absorption coefficient and the re-emission absorption coefficient. Boundary absorption (``fraction-absorption``) does not trigger re-emission. **Re-emission absorption (wavelength-dependent)** .. list-table:: :header-rows: 1 :widths: 40 60 * - Parameter - Description * - table-reemission-coeff - | Wavelength-dependent re-emission absorption coefficient table. | unit1: wavelength or energy unit (nm, etc.) | unit2: coefficient unit (1/cm, etc.) * - table-reemission-length - | Wavelength-dependent re-emission absorption length table. | unit1: wavelength or energy unit (nm, etc.) | unit2: length unit (cm, etc.) **Re-emission spectrum** .. list-table:: :header-rows: 1 :widths: 40 60 * - Parameter - Description * - table-reemission-spectrum - | Emission spectrum of re-emitted photons. Same format as ``table-scintillation-spectrum``. | Only unit1 is needed. The y-values represent relative emission probability as a function of wavelength. **Scalar parameters** .. list-table:: :header-rows: 1 :widths: 30 15 55 * - Parameter - Default - Description * - reemission-yield - 0 - | Quantum yield for re-emission (0 to 1). Probability that an absorbed photon produces a re-emitted photon. | = 0: No re-emission (default). Even if ``table-reemission-coeff`` is set, re-emission does not occur without this parameter. * - reemission-time - (none) - | Decay time constant [ns] for re-emission. The delay time is sampled from an exponential distribution. | If not set, re-emitted photons are generated with no time delay. Table format example: .. code-block:: text set-region reg = 101 n = 1.5 reemission-yield = 0.85 reemission-time = 12 $ ns table-reemission-coeff unit1 = nm unit2 = 1/cm 350 1.0 400 0.5 450 0.1 500 0.01 end-table table-reemission-spectrum unit1 = nm 400 0.0 420 0.3 450 1.0 500 0.8 550 0.3 600 0.0 end-table set-boundary Block -------------------------------------------------- ``set-boundary`` starts a new boundary block to define the behavior of light at boundaries between regions. .. note:: Light is fully absorbed at boundaries not defined by ``set-boundary``. Also, since the default value of ``fraction-absorption`` is 1 (100% absorption), light is fully absorbed even at defined boundaries unless transmission or reflection fractions are explicitly set. Boundary Specification ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Boundaries can be specified as directional (one-way) or bidirectional. **One-way specification (reg-from / reg-to)** .. list-table:: :header-rows: 1 :widths: 20 80 * - Parameter - Description * - reg-from - Origin region of light. Multiple regions can be specified separated by spaces. * - reg-to - Destination region of light. Multiple regions can be specified separated by spaces. **Bidirectional specification (reg1 / reg2)** .. list-table:: :header-rows: 1 :widths: 20 80 * - Parameter - Description * - reg1 - One side of the boundary. Multiple regions can be specified separated by spaces. * - reg2 - The other side of the boundary. Multiple regions can be specified separated by spaces. When using ``reg1`` / ``reg2``, the same boundary conditions apply regardless of which direction the light passes through. Boundary Conditions ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ When light reaches a boundary, absorption is first evaluated with probability ``fraction-absorption``, then transmission is evaluated with probability ``fraction-pass``. If neither occurs, the light is reflected. .. list-table:: :header-rows: 1 :widths: 35 15 50 * - Parameter - Default - Description * - boundary-type - reflection - | Physical model for the boundary. | = fresnel: Fresnel reflection | = reflection: Directly specify reflection type and fractions * - fraction-absorption - 1 - Absorption fraction at the boundary (0 to 1). * - fraction-pass - 0 - Transmission fraction at the boundary (0 to 1). Scalar value. * - table-pass - (none) - Wavelength-dependent transmission fraction table. Only unit1 is needed. * - absorb-if-not-pass - 0 - | = 1: Absorb light that is not transmitted (instead of reflecting). | = 0: Reflect light that is not transmitted (default). .. note:: When boundary-type = fresnel, the refractive index (n) must be set for both adjacent regions. **Reflection Types** Specifies the reflection model when light is not transmitted. .. list-table:: :header-rows: 1 :widths: 35 15 50 * - Parameter - Default - Description * - fraction-perfect-specular - 1.0 - Relative fraction of perfect specular reflection. * - fraction-specular-lobe - 0 - Relative fraction of specular lobe reflection. Spread controlled by roughness parameter. * - fraction-diffuse - 0 - Relative fraction of Lambertian diffuse reflection. * - fraction-backscatter-lobe - 0 - Relative fraction of backscatter lobe reflection. * - roughness - 0.1 - | Roughness parameter for reflection lobes (0 to 1). Applied to fraction-specular-lobe and fraction-backscatter-lobe. | = 0: perfect specular reflection, = 1: completely diffuse. | Internally converted to Blinn-Phong exponent s = 2/roughness² - 2. .. note:: The four values fraction-perfect-specular, fraction-specular-lobe, fraction-diffuse, and fraction-backscatter-lobe are relative fractions and are automatically normalized to sum to 1. For example, the following two settings are equivalent: .. code-block:: text fraction-perfect-specular = 0.6 fraction-diffuse = 0.4 .. code-block:: text fraction-perfect-specular = 3 fraction-diffuse = 2 Loading External Data -------------------------------------------------- .. list-table:: :header-rows: 1 :widths: 20 80 * - Parameter - Description * - load - | Load optical properties from an external file. | Place the file in the ``$PHITSPATH/data/light/`` directory and specify the filename without the ``.inp`` extension. | Example: ``load = CsI`` loads ``$PHITSPATH/data/light/CsI.inp``. Others -------------------------------------------------- .. list-table:: :header-rows: 1 :widths: 20 80 * - Parameter - Description * - print-comment - | Display in the log output during calculation. Examples -------------------------------------------------- Scintillation Light Generation ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: text [ Light ] yield-factor = 1e-3 set-region reg = 101 light-yield = 10000 table-scintillation-spectrum unit1 = nm 300 0 400 0.1 500 0.2 600 0.3 700 0.0 end-table .. video:: light-scintillation.mp4 :width: 300 :loop: Cherenkov Light Generation ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: text [ Light ] yield-factor = 0.1 set-region reg = 101 n = 1.3 .. video:: light-cherenkov.mp4 :width: 300 :loop: Fresnel Boundary ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: text [ Light ] set-region reg = 101 n = 3.0 set-region reg = 900 n = 1.0 set-boundary reg1 = 101 reg2 = 900 boundary-type = fresnel fraction-absorption = 0.1 .. video:: light-boundary-fresnel.mp4 :width: 300 :loop: Perfect Specular Reflection ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: text [ Light ] set-region reg = 101 n = 1.3 set-boundary reg-from = 101 reg-to = 900 fraction-absorption = 0.5 fraction-perfect-specular = 1 .. video:: light-boundary-reflection1.mp4 :width: 300 :loop: Perfect Specular + Specular Lobe + Diffuse Reflection (1:1:1) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: text [ Light ] set-region reg = 101 n = 1.3 set-boundary reg-from = 101 reg-to = 900 fraction-absorption = 0.5 $ --------------------------- fraction-perfect-specular = 1 fraction-specular-lobe = 1 fraction-diffuse = 1 roughness = 0.1 $ --------------------------- .. video:: light-boundary-reflection2.mp4 :width: 300 :loop: Absorption ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: text [ Light ] set-region reg = 101 light-yield = 100 scintillation-lambda = 400 $ nm absorption-length = 1 $ cm set-boundary reg-from = 101 reg-to = 900 fraction-absorption = 0 .. video:: light-absorption.mp4 :width: 300 :loop: Scattering (Rayleigh Scattering) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: text [ Light ] set-region reg = 101 table-scattering-length-rayleigh unit1 = nm unit2 = cm 200 5 800 5 end-table set-boundary reg-from = 101 reg-to = 900 .. video:: light-scattering-rayleigh.mp4 :width: 300 :loop: