On this page... (hide)
A lot of bias functions can be designed that can be used on observations. Similarly, a lot of voxel-based likelihood can also be built. Given that we do not yet know the best model (and that other observables may have different constraint), we have developped a framework that allows for an optimised and efficient way of extensing biases. This framework relies heavily on the Fused Array framework Δ. Hereafter, we give a description of the concepts, the organization and finally the implementation of a new bias and likelihood pairs in BORG3.
The generic bias framework is used in conjunction with the generic likelihood class template. This one is defined in
libLSS/samplers/generic/generic_hmc_likelihood.hpp
as:
The generic HMC likelihood implements the following abstract model:
AbstractBiasType
,
VoxelLikelihoodType
).
The abstract bias allows the use of lazy expressions if needed to further optimize the code. The entirety of the chain is also differentiable to allow for the computation of the force in the HMC.
The source codes are stored in libLSS/physics/bias (for the bias model) and libLSS/physics for the statistical model (to be update later). The currently available module for bias are the following:
libLSS/physics/bias/noop.hpp
: a noop bias, with name LibLSS::Noop
. It does not do anything and just provide an adequate selection operator.
libLSS/physics/bias/power_law.hpp
: This implements a pure power law bias of the form {$ N_g = \bar{N} (1+\delta)^\alpha $}.
libLSS/physics/bias/double_power_law.hpp
: A double power law as given in Mo, van den Bosch & White. The form is as follow
libLSS/physics/bias/broken_power_law.hpp
: {$ N_g = \bar{N} ((1+\delta)/L0)^\alpha / (1 + ((1+\delta)/L0)^{(\beta-\gamma)} $}
libLSS/physics/bias/2nd_order_bias.hpp
: This is a second order bias model as described in Desjacques & Schmidt.
libLSS/physics/bias/many_power.hpp
: A bias model guaranteed for positivity and some flexibility. It is based on the positivity properties of the quadratic form.