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

\[ R_{\max}=D\sin\theta_{\max} \]

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

\[ R_{\max} < r < r_t \]

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

\[ J_{\rm sphere}=\frac{4\pi}{D^2} \int_0^{\min(R_{\max},r_t)} r^2\rho^2(r)\,dr. \]

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. Then min(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 R with r_t.

  • If R_max < r_t, the method drops the projected contribution from shells with r > 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.