Photon histories in water

Individual optical photons inside 49,684 twenty-inch PMTs. Line color follows each photon's polarization; the PMTs show their surface normals.

Connecting to WebGPU…
Particle direction · +z (up)

Azimuth runs from +x toward +y; elevation runs from −z (−90°) to +z (+90°). Release a slider to rotate the full recorded event about its first emitting point and simulate its photons in the new direction.

Loading geometry and HK particle steps…

Simulate an event to see PMT arrivals.Additive PMT pulses + accumulated hits · normal colors preserved

Prompt window: the first 180 ns. Time windows navigate the same simulated event.

Polarization RGB = (|Ex|, |Ey|, |Ez|)xyzPMT RGB = ½(n + 1)Fade follows age since emission, not event time.

Drag to orbit · middle-drag or Shift-drag to pan · scroll to zoom. Each polyline is one transported photon. The visible subset stays fixed as you scrub time.

Physics and rendering

The primary and secondary particle steps come from the HK sample: a 1.99975 GeV muon and a 1.99829 GeV electron. Recorded positions, directions, beta and emission times are preserved under a rigid rotation and translation into the Theia geometry. The direction controls apply a further rigid rotation to every step position and direction about the first emitting point, preserving recorded times, beta, relative trajectories and emission weights. The browser generates new Cherenkov photons from those steps using the Frank–Tamm spectrum over 360–700 nm, with wavelength-dependent cone angle and transverse polarization. This reconstructs optical emission from recorded Geant4 steps; it does not replay the original optical photons or detector hits. Beta is held constant within each recorded step, and source coordinate quantization can produce zero-length steps that emit no new light.

WebGPU propagates photons through illustrative dispersive water with wavelength-dependent absorption and polarized Rayleigh scattering. Paths terminate at the actual PMT/enclosure triangle meshes; PMTs are ideal absorbing surfaces here, without glass or quantum-efficiency calibration. The physical mean yield sets the simulated photon count (rounded to the nearest photon, without Poisson event fluctuations). A stable subset of photon IDs, or all IDs when selected, is retained for display. The optional fade changes drawn opacity with age since emission; it has no effect on transport or hit counts. Rendering reads those actual segments directly from GPU memory, clips them against the detector depth, and never draws synthetic cone lines. Colors encode vector components, not wavelength or optical brightness. The sign of the polarization vector has no observable effect, hence the absolute components.

Transport stops after 32 flights, with unfinished photons reported. Choose up to all photon histories when the adapter supports the required buffer size. The default retains up to 32,768 histories (64 MiB); the full muon event uses about 532 MiB of path storage. Increasing the retained limit reruns the same seed; reducing the displayed limit reuses the event. Every simulated photon contributes to PMT highlights regardless of the path limit. Each PMT signal sums a unit-height exponential pulse from every arrival: A(t) = Σ exp(−(t − tᵢ)/τ), including only tᵢ ≤ t. The pulse decay control sets τ in simulated nanoseconds. A cumulative count N(t) provides an adjustable persistent contribution, so brighter regions retain the integrated-hit pattern. Brightness above the base level is mapped smoothly as 1 − exp(−gain × [A(t) + weight × N(t)]). Set the accumulated-hit weight to zero for pulses alone. Complete histories show accumulated counts alone. Only brightness changes; surface-normal RGB colors are preserved. These unit-weight hits are a charge proxy and illustrative pulse response, without PMT gain fluctuations or calibrated electronics. These are ideal-surface photon intersections, without quantum efficiency. The First PMT arrivals window jumps to the first recorded arrivals in the current event. GPU work is batched, hidden tabs pause, and animation is capped at 30 frames per second. Camera movement and time scrubbing reuse the event. Playback speed is measured in simulated nanoseconds per real second, down to 0.01 ns/s. The first-nanosecond and first-10-ns windows give precise access to early emission; close-up presets center on the first emitting particle step. The late window navigates to the muon’s delayed secondary emission around 2.9 µs; the electron event has no corresponding late burst.

Reference: Geant4 Cherenkov model.