.. _physics-mergerTreeBranchingProbabilityModifier: Modifiers for merger tree branching probabilities ================================================= Class providing multiplicative modifiers to the merger tree branching probability rate, applied at each potential branching event during tree construction. Modifiers allow the branching probability to be re-weighted based on halo properties (mass, overdensity, redshift) beyond what the base branching probability class provides. This enables fitting to N-body simulation merger rates or implementing environmental or assembly-bias corrections. **Default implementation:** ``mergerTreeBranchingProbabilityModifierIdentity`` Methods ------- ``rateModifier`` → ``double precision`` Return the multiplicative modifier to the tree branch probability rate. * ``type (treeNode), intent(inout) :: nodeParent`` * ``double precision , intent(in ) :: massParent, sigmaParent, sigmaChild, timeParent`` .. _physics-mergerTreeBranchingProbabilityModifierIdentity: ``mergerTreeBranchingProbabilityModifierIdentity`` -------------------------------------------------- A merger tree branching probability modifier class which always applies the identity modifier. **(Default implementation)** **Parameters** * ``[redshift]`` (default ``0.0d0``) — The redshift at which the transfer function is defined. .. _physics-mergerTreeBranchingProbabilityModifierMulti: ``mergerTreeBranchingProbabilityModifierMulti`` ----------------------------------------------- Chains multiple other merger tree branch probability modifiers by taking their product. **Methods** * ``columnDescriptions`` — Return a description of the columns. * ``elementCount`` — Return the number of properties in the tuple. * ``extractDouble`` — Extract the double properties from the given ``node``. * ``extractInteger`` — Extract the integer properties from the given ``node``. * ``names`` — Return the names of the properties extracted. * ``descriptions`` — Return descriptions of the properties extracted. * ``unitsInSI`` — Return the units of the properties extracted in the SI system. * ``units`` — Return an object containing units metadata for the properties. * ``ranks`` — Return the ranks of the properties extracted. * ``metaData`` — Populate a hash with meta-data for the property. .. _physics-mergerTreeBranchingProbabilityModifierParkinson2008: ``mergerTreeBranchingProbabilityModifierParkinson2008`` ------------------------------------------------------- A merger tree branching probability modifier class which uses the model of :cite:t:`parkinson_generating_2008`. Specifically, the branching probability is multiplied by: .. math:: G(\delta_\mathrm{p},\sigma_\mathrm{c},\sigma_\mathrm{p}) = G_0 \left({\sigma_\mathrm{c}\over\sigma_\mathrm{p}}\right)^{\gamma_1} \left({\delta_\mathrm{p}\over\sigma_\mathrm{p}}\right)^{\gamma_2} where :math:`\delta_\mathrm{p}` is the current critical overdensity for collapse for the parent halo, and :math:`\sigma_\mathrm{c}` and :math:`\sigma_\mathrm{p}` are the root-variance of the smooth mass-density field on scales corresponding to the masses of child and parent halos respectively. The parameters of the fit can be adjusted via input parameters: :math:`G_0=`\ ``[G0]``, :math:`\gamma_1=`\ ``[gamma1]``, and :math:`\gamma_2=`\ ``[gamma2]``. **Parameters** * ``[G0]`` (default ``0.57d0``) — The parameter :math:`G_0` appearing in the modified merger rate expression of :cite:t:`parkinson_generating_2008`. * ``[gamma1]`` (default ``0.38d0``) — The parameter :math:`\gamma_1` appearing in the modified merger rate expression of :cite:t:`parkinson_generating_2008`. * ``[gamma2]`` (default ``-0.01d0``) — The parameter :math:`\gamma_2` appearing in the modified merger rate expression of :cite:t:`parkinson_generating_2008`. .. _physics-mergerTreeBranchingProbabilityModifierPCHPlus: ``mergerTreeBranchingProbabilityModifierPCHPlus`` ------------------------------------------------- Provides a merger tree branching probability rate modifier which uses the model of :cite:t:`parkinson_generating_2008` plus an additional term. Specifically, the modifier becomes .. math:: G\left( {\sigma_1 \over \sigma_2} , {\delta_2 \over \sigma_2} \right) = G_0 \left({\sigma_1\over\sigma_2}\right)^{\gamma_1} \left({\delta_2\over\sigma_2}\right)^{\gamma_2} \left(1 - {\sigma_2^2 \over \sigma_1^2}\right)^{\gamma_3}, where :math:`\sigma_i=\sigma(M_i)`, :math:`\sigma(M)` is the usual present-day, linear-theory mass-variance in spheres enclosing an average mass :math:`M`, :math:`M_2` is the mass of the parent halo, :math:`M_1` is the mass of the child halo, and :math:`\delta_2` is the critical overdensity for collapse at the epoch of the parent. **Parameters** * ``[G0]`` (default ``0.57d0``) — The parameter :math:`G_0` appearing in the modified merger rate expression of :cite:t:`parkinson_generating_2008`. * ``[gamma1]`` (default ``0.38d0``) — The parameter :math:`\gamma_1` appearing in the modified merger rate expression of :cite:t:`parkinson_generating_2008`. * ``[gamma2]`` (default ``-0.01d0``) — The parameter :math:`\gamma_2` appearing in the modified merger rate expression of :cite:t:`parkinson_generating_2008`. * ``[gamma3]`` (default ``0.0d0``) — The parameter :math:`\gamma_3` appearing in the modified merger rate expression of :cite:t:`parkinson_generating_2008`. * ``[gamma4]`` (default ``0.0d0``) — The parameter :math:`\gamma_4` appearing in the modified merger rate expression of :cite:t:`parkinson_generating_2008`. * ``[gamma5]`` (default ``0.0d0``) — The parameter :math:`\gamma_5` appearing in the modified merger rate expression of :cite:t:`parkinson_generating_2008`. * ``[accuracyFirstOrder]`` (default ``0.1d0``) — Limits the step in :math:`\delta_\mathrm{crit}` when constructing merger trees using the :cite:t:`parkinson_generating_2008` algorithm, so that it never exceeds ``accuracyFirstOrder``\ :math:`\sqrt{2[\sigma^2(M_2/2)-\sigma^2(M_2)]}`. * ``[precisionHypergeometric]`` (default ``1.0d-6``) — The fractional precision required in evaluates of hypergeometric functions in the modified Press-Schechter tree branching calculations. * ``[hypergeometricTabulate]`` (default ``.true.``) — Specifies whether hypergeometric factors should be precomputed and tabulated in modified Press-Schechter tree branching functions. * ``[cdmAssumptions]`` (default ``.false.``) — If true, assume that :math:`\alpha(=-\mathrm{d}\log \sigma/\mathrm{d}\log M)>0` and :math:`\mathrm{d}\alpha/\mathrm{d}M>0` (as is true in the case of :term:`CDM`) when constructing merger trees using the :cite:t:`parkinson_generating_2008`. * ``[tolerateRoundOffErrors]`` (default ``.false.``) — If true, round-off errors in integrations of branching probability will be tolerated. This may degrade the accuracy of solutions, but can be unavoidable in models with cut-offs in their power spectra. * ``[G0]`` (default ``0.57d0``) — The parameter :math:`G_0` appearing in the modified merger rate expression of :cite:t:`parkinson_generating_2008`. * ``[gamma1]`` (default ``0.38d0``) — The parameter :math:`\gamma_1` appearing in the modified merger rate expression of :cite:t:`parkinson_generating_2008`. * ``[gamma2]`` (default ``-0.01d0``) — The parameter :math:`\gamma_2` appearing in the modified merger rate expression of :cite:t:`parkinson_generating_2008`. * ``[gamma3]`` (default ``0.0d0``) — The parameter :math:`\gamma_3` appearing in the extension of the modified merger rate expression of :cite:t:`parkinson_generating_2008` as defined in this class. .. _physics-mergerTreeBranchingProbabilityModifierZhang2014: ``mergerTreeBranchingProbabilityModifierZhang2014`` --------------------------------------------------- Provides a merger tree branching probability rate modifier which uses the model of :cite:t:`zhang_dark-matter_2014` to account for environmental-dependence of the merger rate. Specifically, the modifier is: .. math:: 1 + \kappa \beta \alpha - \sqrt{2\pi} \kappa \nu (1-\alpha)^{3/2} + \pi \kappa \left(\nu^2\frac{\delta_\mathrm{d}}{\delta_\mathrm{c}}-1\right) (1-\alpha)^{3/2} \exp\left[\frac{\nu^2}{2}\right] \hbox{erfc}\left[\frac{\nu}{\sqrt{2}}\right] where :math:`\kappa` characterizes the non-Markovian behavior in the excursion set random walks, and whose value depends on the shape of the window function :cite:p:`zhang_dark-matter_2014`, :math:`\alpha = S_\mathrm{d}/S_\mathrm{p}` with :math:`S_\mathrm{d}` being the variance on the scale of the descendant (i.e., parent) halo, and :math:`S_\mathrm{p}` being the variance on the scale of the progenitor (i.e., child) halo, .. math:: \beta = -2 + \frac{(1-\alpha)^{3/2}}{2\alpha}\ln\left(\frac{1+\sqrt{1-\alpha}}{1-\sqrt{1-\alpha}}\right)+\frac{1}{\alpha}+2\alpha, :math:`\nu = \delta_\mathrm{c}/\sqrt{S_\mathrm{d}}`, :math:`\delta_\mathrm{e}` is the overdensity on the scale of the environment (evaluated at :math:`z=0`), and :math:`\delta_\mathrm{c}` is the critical overdensity at the time of the descendant halo. Note that this implementation uses the solutions for the limit of large environment scale (:math:`S_\mathrm{e} \rightarrow 0`; equation 30 of :cite:author:`zhang_dark-matter_2014` :cite:year:`zhang_dark-matter_2014`). A warning is emitted if :math:`S_\mathrm{e}` is sufficiently large to break this assumption. **Parameters** * ``[kappa]`` (default ``0.44d0``) — The parameter characterizing non-Markovian behavior in excursion set random walks :cite:p:`zhang_dark-matter_2014`.