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:
Mode |
\(h/k_B\) |
Precision |
|---|---|---|
|
\(4.799\,243\,073\,366 \times 10^{-11}\) K/Hz |
f64 throughout |
|
\(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()