import numpy def integrand_parityamu_mpvinverse(redshift): """ The integrand: (1.0 + z)^parity_beta / sqrt(Omega_m (1+z)^3 + Omega_Lambda) """ omega_m = 0.3075 #pycbc.cosmology.get_cosmology().Om0 # matter density omega_l = 0.6910098821161554 #pycbc.cosmology.get_cosmology().Ode0 # dark energy density return (1.0+redshift)/ numpy.sqrt(omega_m*(1.0+redshift)**3.0 + omega_l) def gen(**kwds): from pycbc.waveform import get_fd_waveform from pycbc import cosmology import lal from scipy import integrate #print(kwds) if 'approximant' in kwds: kwds.pop("approximant") if kwds['baseapprox'] is None: raise ValueError("A base waveform approximant is required.") hp, hc = get_fd_waveform(approximant=kwds['baseapprox'], **kwds) zz = cosmology.redshift(kwds['distance']) intz = integrate.quad(integrand_parityamu_mpv, 0, zz)[0] temp = kwds['parity_mpvinverse'] * intz / 1e9 / lal.QE_SI * lal.H_SI * lal.PI * lal.PI / lal.H0_SI hp_parity = hp + hc * temp * hp.sample_frequencies **2 hc_parity = hc - hp * temp * hp.sample_frequencies **2 return hp_parity, hc_parity