IMRPhenomXHM positive-frequency mode projection
Scope and status
This is a paper-equation gate for the complete five-mode projection of
aligned-spin XHM's positive-frequency carriers. It specifies the angular
coefficients and the common time/orbital phase factor, treating each intrinsic
complex carrier as an input. It does not qualify those carriers, their
calibration fits, the precessing XPHM rotation, or a full LAL waveform.
Component ID: xhm.positive-frequency.mode-pair-projection.v1.
Inputs, conventions, and options
García-Quirós et al., arXiv:2001.10914v2,
Sec. II, Eqs. (2), (4)–(9), defines the Fourier transform with
exp(-2πift), the equatorial-reflection symmetry
h_{ℓm}(t)=(-1)^ℓ h*_{ℓ,-m}(t), and the positive-frequency carrier
H_{ℓm}(f)=\tilde h_{ℓ,-m}(f) for m>0.
The native H_{ℓm} also carries exp[-i(2πft_c-mφ_c)]; the observer
azimuth enters the harmonics as exp(±imφ_0). The supported mode set is
(2,2), (2,1), (3,3), (3,2), (4,4). The scalar reference constructs the
spin-−2 harmonics from Wigner d matrices, normalized by
{}_{-2}Y_{22}=sqrt(5/(64π))(1+cos ι)^2 exp(2iφ_0).
Mathematics and components
The paper's two polarization contributions are
Implementation mapping
imrphenomxhm_projection.py
implements the two source coefficients without importing either frontend.
The shared HM spin-weighted-harmonic helper instead returns coefficients for
the positive-m carrier. XHM evaluates that helper at −φ_0; the
source's negative-m carrier requires the additional factor (-1)^ℓ in
both plus and cross. Thus the existing even-ℓ coefficients stay unchanged,
while the (3,3) and (3,2) coefficients change sign in
Torch
and JAX.
The shared HM helpers are unchanged, so HM projections are unaffected.
XPHM's scalar aligned-spin fast path delegates to XHM and inherits this
correction; its precessing twist-up requests unprojected XHM carriers, which
this change leaves untouched.
Evidence and limitations
test_xhm_projection_math_reference.py
checks each complex plus/cross contribution and their sum at three viewing
angles and three positive frequencies using each frontend's unprojected
carrier as the independent projection input. It also checks the source's
quadrupole normalization and the common time and mode-dependent orbital phase
factor in Torch and JAX FP64. The test does not compare carrier amplitudes or
phases to LAL, and it cannot certify the XHM full waveform or XPHM rotation.
The frozen XHM/XPHM release gates
retain their strict tolerances and failing status pending separate work.
Reproduce the checks
With SymPy, Torch, JAX, and pytest installed, run
PYTHONPATH=src JAX_ENABLE_X64=1 python -m pytest -q tests/test_xhm_projection_math_reference.py.