Remnants
Aligned-spin kick (Islam & Wadekar 2025)
- gwModels.remnants.IW_final_kick_aligned.gwModel_kick_q200(q, s1z, s2z, return_std=False)[source]
Kick velocity for aligned-spin binaries. From Islam & Wadekar (2025), https://arxiv.org/abs/2511.11536
Trained on NR (SXS + RIT, q <= 32) and BHPT data (q <= 200). Valid for 1 <= q <= 1000.
- Parameters:
q – Mass ratio m1/m2 >= 1
s1z – Dimensionless spin of primary along z, in [-1, 1]
s2z – Dimensionless spin of secondary along z, in [-1, 1]
return_std – If True, also return parameter uncertainty estimate
- Returns:
Kick velocity in km/s V_kick_std (optional): Estimated uncertainty in km/s
- Return type:
V_kick
GPR kick (Islam & Wadekar 2025)
- class gwModels.remnants.IW_final_kick_GPR.gwModel_kick_q200_GPR(model_path)[source]
Bases:
objectGPR-based aligned-spin kick velocity model. From Islam & Wadekar (2025), https://arxiv.org/abs/2511.11536
The model has two components: 1. Analytical model: refitted RIT formula with 20 coefficients 2. GPR model: Gaussian Process trained on kick data with features
[log2(q), chi_hat, chi_a]
- Parameters:
model_path (str) – Path to the .pkl model file.
- predict_analytical(q, s1z, s2z, return_std=False)[source]
Analytical aligned-spin kick (refitted RIT formula).
- Parameters:
q – Mass ratio m1/m2 >= 1
s1z – Dimensionless spin of primary along z, in [-1, 1]
s2z – Dimensionless spin of secondary along z, in [-1, 1]
return_std – If True, also return parameter uncertainty estimate
- Returns:
Kick velocity in km/s V_kick_std (optional): Uncertainty in km/s
- Return type:
V_kick
Precessing kick flow (Islam & Wadekar 2025)
- class gwModels.remnants.IW_final_kick_precessing.gwModel_kick_prec_flow(datadir)[source]
Bases:
objectNormalizing-flow model for precessing-spin kick velocity distributions.
Samples kick velocities for given (q, a1, a2), marginalizing over spin orientation angles.
- Parameters:
datadir (str) – Directory containing gwModel_kick_prec_flow.pt and gwModel_kick_prec_flow_config.npy
- sample(q, a1, a2, num_samples=5000)[source]
Sample kick velocities from the flow model.
For non-spinning systems (a1==0 and a2==0), falls back to the aligned-spin model gwModel_kick_q200.
- Parameters:
q – Mass ratio (m1/m2 >= 1)
a1 – Spin magnitude of primary BH
a2 – Spin magnitude of secondary BH
num_samples – Number of samples to draw
- Returns:
1-D array of kick velocities in km/s
- Return type:
samples
HLZ kick
- gwModels.remnants.HLZ_final_kick.spin_difference_vector(theta1, theta2, deltaphi, q, chi1, chi2)[source]
Calculate the antisymmetric spin combination Delta = (S2/m2 - S1/m1)/(1+q).
- Parameters:
theta1 – angles between L and spin vectors (radians)
theta2 – angles between L and spin vectors (radians)
deltaphi – azimuthal angle difference between spins (radians)
q – mass ratio (q <= 1)
chi1 – spin magnitudes
chi2 – spin magnitudes
- Returns:
Delta_parallel, Delta_perp
- gwModels.remnants.HLZ_final_kick.total_spin_vector(theta1, theta2, deltaphi, q, chi1, chi2)[source]
Calculate the symmetric spin combination chi = (S1 + S2)/M^2.
- Parameters:
theta1 – angles between L and spin vectors (radians)
theta2 – angles between L and spin vectors (radians)
deltaphi – azimuthal angle difference between spins (radians)
q – mass ratio (q <= 1)
chi1 – spin magnitudes
chi2 – spin magnitudes
- Returns:
chi_tilde_parallel, chi_tilde_perp
- gwModels.remnants.HLZ_final_kick.calculate_kick_components(q, chi1, chi2, theta1, theta2, deltaphi, Theta=None)[source]
Calculate the three kick velocity components.
- Parameters:
q – mass ratio (q <= 1)
chi1 – spin magnitudes
chi2 – spin magnitudes
theta1 – angles between L and spin vectors (radians)
theta2 – angles between L and spin vectors (radians)
deltaphi – azimuthal angle difference between spins (radians)
Theta – angle between Delta x L and fiducial infall direction (radians). If None, a random value between 0 and 2pi is used.
- Returns:
Vm, Vs_perp, Vs_parallel, Theta_used
- gwModels.remnants.HLZ_final_kick.bbh_final_kick_precessing_CLZM2007(q, chi1, chi2, theta1, theta2, deltaphi, Theta=None, debug=False)[source]
Calculate total kick velocity magnitude.
- Parameters:
q – mass ratio (q <= 1)
chi1 – spin magnitudes
chi2 – spin magnitudes
theta1 – angles between L and spin vectors (radians)
theta2 – angles between L and spin vectors (radians)
deltaphi – azimuthal angle difference between spins (radians)
Theta – angle between Delta x L and fiducial infall direction (radians). If None, a random value between 0 and 2pi is used.
debug – if True, return all components
- Returns:
total kick velocity in km/s If debug=True: V_kick, Vm, Vs_perp, Vs_parallel, Theta_used
- Return type:
V_kick (float)
- gwModels.remnants.HLZ_final_kick.HLZ_2014_aligned_spin(q, s1z, s2z)[source]
RIT aligned-spin recoil (kick) for binaries with spins along +/-z. Coefficients from arXiv:1406.7295.
- Parameters:
q – mass ratio m1/m2 >= 1 (primary is m1)
s1z – dimensionless spin of primary along z in [-1, 1]
s2z – dimensionless spin of secondary along z in [-1, 1]
- Returns:
kick velocity in km/s
- Return type:
V_kick
HBR final mass and spin
- gwModels.remnants.HBR_final_mass_final_spin.energy_at_isco(a)[source]
Dimensionless specific energy at the ISCO: E_ISCO(a).
- gwModels.remnants.HBR_final_mass_final_spin.angular_momentum_at_isco(a)[source]
Dimensionless specific angular momentum at ISCO: L_ISCO(a).
- gwModels.remnants.HBR_final_mass_final_spin.angle_between_spins(theta1, theta2, deltaphi)[source]
Angle alpha between the two spin vectors using spherical law of cosines.
- gwModels.remnants.HBR_final_mass_final_spin.angle_correction(theta, eps)[source]
Angle remapping from Eq. (18): tan(theta’/2) = (1+eps) tan(theta/2).
- gwModels.remnants.HBR_final_mass_final_spin.bbh_final_mass_precessing_BMR2012(theta1, theta2, q, chi1, chi2, verbose=False)[source]
Final remnant mass using Barausse-Morozova-Rezzolla (2012) fit.
- Parameters:
theta1 – Angles (radians) between orbital momentum and spins
theta2 – Angles (radians) between orbital momentum and spins
q – Mass ratio m2/m1 with 0 <= q <= 1 (m1 >= m2)
chi1 – Dimensionless spin magnitudes (0 <= chi <= 1)
chi2 – Dimensionless spin magnitudes (0 <= chi <= 1)
verbose – Print intermediate calculations (default: False)
- Returns:
Remnant mass as fraction of initial total mass M_f/M
- Return type:
Mfin
Reference: Barausse, Morozova & Rezzolla (2012), ApJ 758, 63
- gwModels.remnants.HBR_final_mass_final_spin.bbh_final_spin_precessing_HBR2016(theta1, theta2, deltaphi, q, chi1, chi2, model='HBR16_34corr', verbose=False)[source]
Final spin magnitude using Hofmann, Barausse & Rezzolla (2016) fit.
- Parameters:
theta1 – Angles (radians) between orbital momentum and spins
theta2 – Angles (radians) between orbital momentum and spins
deltaphi – Angle between spin projections on orbital plane
q – Mass ratio m2/m1 with 0 <= q <= 1 (m1 >= m2)
chi1 – Dimensionless spin magnitudes (0 <= chi <= 1)
chi2 – Dimensionless spin magnitudes (0 <= chi <= 1)
model – Fit model selection (default: “HBR16_34corr”)
verbose – Print intermediate calculations
- Returns:
Final spin magnitude |a_final| <= 1
- Return type:
chi_final
Reference: Hofmann, Barausse & Rezzolla (2016), ApJL 825, L19
UIB2016 final mass and spin
- gwModels.remnants.UIB2016_final_mass_final_spin.bbh_UIBfits_setup(m1, m2, chi1, chi2)[source]
Common setup function for UIB final-state fit functions.
- gwModels.remnants.UIB2016_final_mass_final_spin.bbh_final_mass_non_precessing_UIB2016(m1, m2, chi1, chi2, version='v2')[source]
Final mass with the aligned-spin NR fit by Jimenez Forteza, Keitel, Husa et al. [LIGO-P1600270] [https://arxiv.org/abs/1611.00332]
- Parameters:
m1 – component masses (m1 > m2)
m2 – component masses (m1 > m2)
chi1 – dimensionless spins of two BHs
chi2 – dimensionless spins of two BHs
version – “v1” or “v2” (default “v2”)
- Returns:
final mass
- Return type:
Mf
- gwModels.remnants.UIB2016_final_mass_final_spin.bbh_final_spin_non_precessing_UIB2016(m1, m2, chi1, chi2, version='v2')[source]
Final spin with the aligned-spin NR fit by Jimenez Forteza, Keitel, Husa et al. [LIGO-P1600270] [https://arxiv.org/abs/1611.00332]
- Parameters:
m1 – component masses (m1 > m2)
m2 – component masses (m1 > m2)
chi1 – dimensionless spins of two BHs
chi2 – dimensionless spins of two BHs
version – “v1” or “v2” (default “v2”)
- Returns:
final spin
- Return type:
chif
Utilities
- gwModels.remnants.remnant_utils.symmetric_mass_ratio(q)[source]
Calculate symmetric mass ratio eta(q) with q = m2/m1 <= 1.
eta = 0.25 for equal masses (q = 1), eta -> 0 for q -> 0.
- Parameters:
q – Mass ratio (q <= 1).
- Returns:
Symmetric mass ratio.
- Return type:
float or array