Source code for pesummary.gw.conversions.mass

# Licensed under an MIT style license -- see LICENSE.md

from pesummary.utils.decorators import array_input

__author__ = ["Charlie Hoy <charlie.hoy@ligo.org>"]


[docs] @array_input() def mass2_from_m1_q(mass1, q): """Return the secondary mass given samples for mass1 and mass ratio """ return mass1 * q
[docs] @array_input() def m_total_from_m1_m2(mass1, mass2): """Return the total mass given the samples for mass1 and mass2 """ return mass1 + mass2
[docs] @array_input() def component_mass_product(mass1, mass2): """Return the product of mass1 and mass2 """ return mass1 * mass2
[docs] @array_input() def mchirp_from_m1_m2(mass1, mass2): """Return the chirp mass given the samples for mass1 and mass2 Parameters ---------- """ total_mass = m_total_from_m1_m2(mass1, mass2) return component_mass_product(mass1, mass2)**0.6 / total_mass**0.2
[docs] @array_input() def component_masses_from_mtotal_q(mtotal, q): """Return the primary and secondary masses given samples for the total mass and mass ratio """ m1 = mtotal / (1. + q) return m1, mass2_from_m1_q(m1, q)
[docs] @array_input() def component_masses_from_mchirp_q(mchirp, q): """Return the primary and secondary masses given samples for the chirp mass and mass ratio """ m1 = ((1. / q)**(2. / 5.)) * ((1.0 + (1. / q))**(1. / 5.)) * mchirp return m1, mass2_from_m1_q(m1, q)
[docs] @array_input() def m1_from_mchirp_q(mchirp, q): """Return the mass of the larger component given the chirp mass and mass ratio """ return component_masses_from_mchirp_q(mchirp, q)[0]
[docs] @array_input() def m2_from_mchirp_q(mchirp, q): """Return the mass of the smaller component given the chirp mass and mass ratio """ return component_masses_from_mchirp_q(mchirp, q)[1]
[docs] @array_input() def m1_from_mtotal_q(mtotal, q): """Return the mass of the larger component given the total mass and mass ratio """ return component_masses_from_mtotal_q(mtotal, q)[0]
[docs] @array_input() def m2_from_mtotal_q(mtotal, q): """Return the mass of the smaller component given the total mass and mass ratio """ return component_masses_from_mtotal_q(mtotal, q)[1]
[docs] @array_input() def eta_from_m1_m2(mass1, mass2): """Return the symmetric mass ratio given the samples for mass1 and mass2 """ total_mass = m_total_from_m1_m2(mass1, mass2) return component_mass_product(mass1, mass2) / total_mass**2
[docs] @array_input() def eta_from_mtotal_q(total_mass, mass_ratio): """Return the symmetric mass ratio given samples for the total mass and mass ratio """ mass1, mass2 = component_masses_from_mtotal_q(total_mass, mass_ratio) return eta_from_m1_m2(mass1, mass2)
[docs] @array_input() def q_from_m1_m2(mass1, mass2): """Return the mass ratio given the samples for mass1 and mass2 """ return mass2 / mass1
[docs] @array_input() def invq_from_m1_m2(mass1, mass2): """Return the inverted mass ratio (mass1/mass2 for mass1 > mass2) given the samples for mass1 and mass2 """ return 1. / q_from_m1_m2(mass1, mass2)
[docs] @array_input() def invq_from_q(mass_ratio): """Return the inverted mass ratio (mass1/mass2 for mass1 > mass2) given the samples for mass ratio (mass2/mass1) """ return 1. / mass_ratio
[docs] @array_input() def q_from_eta(symmetric_mass_ratio): """Return the mass ratio given samples for symmetric mass ratio """ temp = (1 / symmetric_mass_ratio / 2 - 1) return (temp - (temp ** 2 - 1) ** 0.5)
[docs] @array_input() def mchirp_from_mtotal_q(total_mass, mass_ratio): """Return the chirp mass given samples for total mass and mass ratio """ return eta_from_mtotal_q(total_mass, mass_ratio)**(3. / 5) * total_mass