Class
NumCosmoGalaxyShapeFactorFixedQuad
Description [src]
final class NumCosmo.GalaxyShapeFactorFixedQuad : NumCosmo.GalaxyShapeFactor
{
/* No available fields */
}
Fixed-node lens-domain quadrature evaluation of the intrinsic-ellipticity marginal.
Like NcGalaxyShapeFactorQuad, evaluates
$$P(\epsilon_\mathrm{obs} \mid g) = \int_{|\chi_L|<1} \mathrm{d}^2\chi_L\,
P_\mathrm{pop}\big(f_g^{-1}(\chi_L)\big)\,
\left|\det J_{f_g^{-1}}(\chi_L)\right|\,
N_2\big(\epsilon_\mathrm{obs} - \chi_L; \sigma_\mathrm{noise}^2\big)
$$
exactly (no series truncation in $g$), with a FIXED node count over the
INTERSECTION of two discs instead of Quad’s adaptive Divonne cubature over
a generic box: the noise kernel is supported near $\epsilon_\mathrm{obs}$
(radius $\sim n_\sigma\sigma_\mathrm{noise}$), $P_\mathrm{pop}\circ f_g^{-1}$
only over the unit disc, and their overlap is a two-circle “lens” in
general, a plain disc when one contains the other.
The noise kernel lives in $\chi_L$-space and does not depend on $g$, so
the whole quadrature domain (node positions, weights, and the
noise-kernel value at each node) is $g$-INDEPENDENT: it depends only on
$(R,\phi,\sigma_\mathrm{noise})=(\lvert\epsilon_\mathrm{obs}\rvert,
\arg\epsilon_\mathrm{obs},\sigma_\mathrm{noise})$, cached per galaxy and
reused across every $g$ a fit tries. Validated end to end against an
independent scipy oracle and against NcGalaxyShapeFactorQuad itself (see
the test suite and
Fixed-Node
Lens-Domain Quadrature).
Every term summed is manifestly non-negative (quadrature weights,
population density, $\lvert\det J\rvert$, and the two-arc domain’s
Jacobian are all non-negative), so unlike NcGalaxyShapeFactorSeriesLensed
there is no truncated polynomial that can cross zero: this class stays
accurate at any physical $g$, real or complex, through $\lvert g\rvert=0.99$.
Works for ANY population (not just Gaussian): each node evaluates
nc_galaxy_shape_pop_eval_p() directly at $x_i=\lvert\chi_I\rvert^2$, the
same convention NcGalaxyShapeFactorQuad uses (not eval_p_rho2(), whose
$\rho^2$ argument is the pre-compactification radius of the $(u,v)$-plane
substitution this class does not use), so unlike
NcGalaxyShapeFactorSeriesLensed there is no Gaussian-only guard.
Limitation: a fixed grid cannot resolve a population much narrower than
its node spacing ($\sigma_\mathrm{pop}\lesssim0.05$, or a sharply
concentrated Beta population); use NcGalaxyShapeFactorQuad for narrower
or more exotic populations. Production only uses Gaussian populations
with $\sigma_\mathrm{pop}\in(0.2,0.4)$, comfortably inside this class’s
validated regime. See docs/theory/wl_shape_factor_history.md for why an
adaptive alternative was tried and rejected for the narrow-population
case, and for the design history of this class more generally.
Cost cliff: at $\sigma_\mathrm{noise}$ where the noise disk is comparable
in size to the unit disc (roughly $\sigma_\mathrm{noise}\in(0.05,0.2)$,
see docs/theory/wl_shape_marginalization_fixed_quad.qmd’s own “cost
cliff” section), nearly every galaxy lands in the genuine-lens branch
($\mathtt{n_lens}^2$ nodes, 1681 at the default 41) rather than the
cheaper contained branches — expensive, though this project’s actual
production regime ($\sigma_\mathrm{noise}\sim0.3$) is unaffected either
side of it. NcGalaxyShapeFactorFixedQuad:auto-lens-nodes (default
FALSE, opt-in) calibrates a per-galaxy lens-branch node count instead
of always using the configured NcGalaxyShapeFactorFixedQuad:n-lens,
cutting cost in that regime (~2x fewer nodes typical, more in the
expensive middle) with no change to shipped behavior unless explicitly
enabled — see _calibrate_n_lens()’s own docs for the calibration strategy.
Functions
nc_galaxy_shape_factor_fixed_quad_clear
Decreases the reference count of gsffq by one, and sets the pointer
gsffq to NULL.
Instance methods
Methods inherited from NcGalaxyShapeFactor (27)
Please see NcGalaxyShapeFactor for a full list of methods.
Properties
NumCosmo.GalaxyShapeFactorFixedQuad:auto-lens-nodes
When TRUE, calibrates a per-galaxy lens-branch node count (capped at
NcGalaxyShapeFactorFixedQuad:n-lens) instead of always using
NcGalaxyShapeFactorFixedQuad:n-lens for every galaxy — see
_calibrate_n_lens()’s docs. Default FALSE (zero behavior change unless
explicitly enabled).
NumCosmo.GalaxyShapeFactorFixedQuad:lens-node-reltol
Target relative tolerance for NcGalaxyShapeFactorFixedQuad:auto-lens-nodes‘s
calibration. Default 1e-4.
NumCosmo.GalaxyShapeFactorFixedQuad:n-angular
Number of angular nodes (equally-spaced when the noise disk is contained in the unit disc, Gauss-Legendre otherwise). Default 15.
NumCosmo.GalaxyShapeFactorFixedQuad:n-lens
Number of fixed Gauss-Legendre nodes per axis in the genuine two-circle “lens” (partial-overlap) branch; always rounded up to the next odd number (see the class docs for why). Default 41.
NumCosmo.GalaxyShapeFactorFixedQuad:n-radial
Number of fixed Gauss-Legendre nodes in the radial direction (branches where one disc is contained in the other). Default 15.
Properties inherited from NcGalaxyShapeFactor (1)
NumCosmo.GalaxyShapeFactor:ellip-conv
Weak lensing observables ellipticity convention NcGalaxyWLObsEllipConv.
Signals
Signals inherited from GObject (1)
GObject::notify
The notify signal is emitted on an object when one of its properties has its value set through g_object_set_property(), g_object_set(), et al.