# Rayleigh-Jeans Correction At submillimeter wavelengths the Rayleigh-Jeans approximation breaks down, and the full Planck function must be used to relate physical temperature to brightness temperature. ## Physical Motivation The Rayleigh-Jeans temperature is the equivalent brightness temperature that would produce the same spectral radiance as a blackbody at physical temperature $T$: $$ T_{RJ}(\nu, T) = \frac{h\nu / k_B}{\exp\!\left(\frac{h\nu}{k_B T}\right) - 1} $$ At radio frequencies ($h\nu \ll k_B T$) this reduces to $T$, but at 4.7 THz (upGREAT) the correction is significant — a 300 K load has an effective RJ temperature of only ~290 K. Low-frequency limit (used when $h\nu / k_B T < 10^{-10}$): $$ T_{RJ} \approx T - \frac{h\nu}{2 k_B} $$ **Implementation:** `cal-core/src/math/rayleigh_jeans.rs` → `antenna_temperature_rj()` ## Physics Constants Two modes are supported for backward compatibility: ```{eval-rst} .. list-table:: :header-rows: 1 :widths: 25 35 40 * - Mode - :math:`h/k_B` - Precision * - ``Exact`` (SI 2019) - :math:`4.799\,243\,073\,366 \times 10^{-11}` K/Hz - f64 throughout * - ``KalibrateCompat`` - :math:`0.047995 \times 10^{-9}` K/Hz - f32 truncation to match legacy code ``` `KalibrateCompat` is the **default** (`PhysicsConstants::default()`). It reproduces the exact numerical behaviour of the legacy kalibrate C++/Fortran code, enabling parity validation. **Implementation:** `cal-core/src/config.rs` → `PhysicsConstants` enum ## Sideband-Weighted (Primed) Temperatures Heterodyne receivers are sensitive to both sidebands. The effective ("primed") load temperatures weight each sideband by its gain: $$ T'_{hot} = \frac{g_s x_s \cdot T_{RJ}(\nu_{sig}, T_{hot}) + g_i x_i \cdot T_{RJ}(\nu_{img}, T_{hot})} {g_s x_s + g_i x_i} $$ $$ T'_{cold} = \frac{g_s x_s \cdot T_{RJ}(\nu_{sig}, T_{cold}) + g_i x_i \cdot T_{RJ}(\nu_{img}, T_{cold})} {g_s x_s + g_i x_i} $$ where $g_s x_s$ and $g_i x_i$ are the signal and image sideband gain-suppression products (typically both 0.5 for DSB receivers). **Implementation:** `cal-io/src/resolve.rs` → `resolve_calibration_load()`