Ullio & Valli J-factor geometry in JeansPy#
JeansPy exposes two related NumPy/SciPy J-factor methods:
DMModel.jfactor_cone(...): the full finite-ROI Ullio & Valli (2016) geometry.DMModel.jfactor_spherical_aperture(...): a spherical-aperture approximation.
The reference geometry is derived in Ullio & Valli (2016), Appendix B, Eqs. (B.8)–(B.10).
Let
be the projected aperture radius and let r_t be the halo truncation radius, with the observer outside the halo (D > r_t). These J-factor integrals use density zero for r > r_t, matching direct calls to the spherical NFW/Zhao mass_density_3d(r) methods.
Full finite-ROI method#
jfactor_cone(...) evaluates the Ullio & Valli finite-aperture geometry. When R_max < r_t, it includes the contribution from shells with
whose projected radius still lies inside the observed aperture. This is the recommended reference calculation for a general finite ROI.
Spherical-aperture approximation#
The generic jfactor_spherical_aperture(...) integrates
Its interpretation depends on the relative sizes of the aperture and the truncated halo:
If
R_max >= r_t, the aperture contains the whole truncated halo. Thenmin(R_max, r_t) = r_t, and the spherical-aperture expression coincides with the small-angle Ullio & Valli Eq. B.10 after identifying their halo radius\mathcal Rwithr_t.If
R_max < r_t, the method drops the projected contribution from shells withr > R_max. In this regime it is a spherical-aperture approximation and should not be identified with the full finite-ROI result.
Thus min(R_max, r_t) is intentional: it is exact for the radial support of a truncated halo once the aperture encloses the full halo, but it is only an approximation when the aperture cuts through the halo.
NFW override#
NFWModel.jfactor_spherical_aperture(...) has the same spherical truncation semantics, using min(R_max, r_t), but it additionally retains the existing analytic finite-distance correction term. Its leading small-angle term reduces to the Eq. B.10 expression when R_max >= r_t.
For analyses where the distinction matters, prefer jfactor_cone(...) and use jfactor_spherical_aperture(...) as a fast approximation or cross-check.