Skip to content
Snippets Groups Projects
Commit 738dde03 authored by Gregory Ashton's avatar Gregory Ashton
Browse files

Merge branch 'add-more-conversions' into 'master'

Add a chirp_mass and mass_1 conversion method

See merge request !656
parents a08c7275 7ad1b446
No related branches found
No related tags found
1 merge request!656Add a chirp_mass and mass_1 conversion method
Pipeline #91821 passed
......@@ -169,6 +169,9 @@ def convert_to_lal_binary_black_hole_parameters(parameters):
1 + converted_parameters['redshift'])
if 'chirp_mass' in converted_parameters.keys():
if "mass_1" in converted_parameters.keys():
converted_parameters["mass_ratio"] = chirp_mass_and_primary_mass_to_mass_ratio(
converted_parameters["chirp_mass"], converted_parameters["mass_1"])
if 'total_mass' in converted_parameters.keys():
converted_parameters['symmetric_mass_ratio'] =\
chirp_mass_and_total_mass_to_symmetric_mass_ratio(
......@@ -378,6 +381,36 @@ def chirp_mass_and_total_mass_to_symmetric_mass_ratio(chirp_mass, total_mass):
return (chirp_mass / total_mass) ** (5 / 3)
def chirp_mass_and_primary_mass_to_mass_ratio(chirp_mass, mass_1):
"""
Convert chirp mass and mass ratio of a binary to its total mass.
Rearranging the relation for chirp mass (as a function of mass_1 and
mass_2) and q = mass_2 / mass_1, it can be shown that
(chirp_mass/mass_1)^5 = q^3 / (1 + q)
Solving for q, we find the releation expressed in python below for q.
Parameters
----------
chirp_mass: float
Chirp mass of the binary
mass_1: float
The primary mass
Return
------
mass_ratio: float
Mass ratio (mass_2/mass_1) of the binary
"""
a = (chirp_mass / mass_1) ** 5
t0 = np.cbrt(9 * a + np.sqrt(3) * np.sqrt(27 * a ** 2 - 4 * a ** 3))
t1 = np.cbrt(2) * 3 ** (2 / 3)
t2 = np.cbrt(2 / 3) * a
return t2 / t0 + t0 / t1
def chirp_mass_and_mass_ratio_to_total_mass(chirp_mass, mass_ratio):
"""
Convert chirp mass and mass ratio of a binary to its total mass.
......
......@@ -54,6 +54,11 @@ class TestBasicConversions(unittest.TestCase):
self.assertTrue(all([abs(mass_1 - self.mass_1) < 1e-5,
abs(mass_2 - self.mass_2) < 1e-5]))
def test_chirp_mass_and_primary_mass_to_mass_ratio(self):
mass_ratio = conversion.chirp_mass_and_primary_mass_to_mass_ratio(
self.chirp_mass, self.mass_1)
self.assertAlmostEqual(self.mass_ratio, mass_ratio)
def test_symmetric_mass_ratio_to_mass_ratio(self):
mass_ratio = conversion.symmetric_mass_ratio_to_mass_ratio(self.symmetric_mass_ratio)
self.assertAlmostEqual(self.mass_ratio, mass_ratio)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment