gw.waveform_generator.waveform_generator.NewInterfaceWaveformGenerator

gw.waveform_generator.waveform_generator.NewInterfaceWaveformGenerator(**kwargs)

Generate polarizations using GWSignal routines in the specified domain for a single GW coalescence given a set of waveform parameters.

Attributes

Name Description
domain
extra_wf_kwargs
mode_list

Methods

Name Description
generate_FD_modes_LO Generate FD modes in the L0 frame.
generate_FD_waveform Generate Fourier domain GW polarizations (h_plus, h_cross).
generate_TD_modes_L0 Generate TD modes in the L0 frame.
generate_TD_modes_L0_conditioned_extra_time Generate TD modes in the L0 frame applying a conditioning routine which mimics the behaviour of the standard
generate_TD_waveform Generate time domain GW polarizations (h_plus, h_cross)
generate_hplus_hcross_m Generate GW polarizations (h_plus, h_cross), separated into contributions from

generate_FD_modes_LO

gw.waveform_generator.waveform_generator.NewInterfaceWaveformGenerator.generate_FD_modes_LO(
    parameters,
)

Generate FD modes in the L0 frame.

Parameters

Name Type Description Default
parameters Dictionary of parameters for the waveform. For details see see self.generate_hplus_hcross. required

Returns

Name Type Description
hlm_fd dict Dictionary with (l,m) as keys and the corresponding FD modes in lal format as values.
iota float

generate_FD_waveform

gw.waveform_generator.waveform_generator.NewInterfaceWaveformGenerator.generate_FD_waveform(
    parameters_gwsignal,
)

Generate Fourier domain GW polarizations (h_plus, h_cross).

Parameters

Name Type Description Default
parameters_lal A tuple of parameters for the lalsimulation waveform generator required

Returns

Name Type Description
pol_dict Dict[str, np.ndarray] A dictionary of generated waveform polarizations

generate_TD_modes_L0

gw.waveform_generator.waveform_generator.NewInterfaceWaveformGenerator.generate_TD_modes_L0(
    parameters,
)

Generate TD modes in the L0 frame.

Parameters

Name Type Description Default
parameters Dictionary of parameters for the waveform. For details see see self.generate_hplus_hcross. required

Returns

Name Type Description
hlm_td dict Dictionary with (l,m) as keys and the corresponding TD modes in lal format as values.
iota float

generate_TD_modes_L0_conditioned_extra_time

gw.waveform_generator.waveform_generator.NewInterfaceWaveformGenerator.generate_TD_modes_L0_conditioned_extra_time(
    parameters,
)

Generate TD modes in the L0 frame applying a conditioning routine which mimics the behaviour of the standard LALSimulation conditioning (https://lscsoft.docs.ligo.org/lalsuite/lalsimulation/_l_a_l_sim_inspiral_generator_conditioning_8c.html#ac78b5fcdabf8922a3ac479da20185c85)

Essentially, a new starting frequency is computed to have some extra cycles that will be tapered. Some extra buffer time is also added to ensure that the waveform at the requested starting frequency is not modified, while still having a tapered timeseries suited for clean FFT.

Parameters

Name Type Description Default
parameters Dictionary of parameters for the waveform. For details see self.generate_hplus_hcross. required

Returns

Name Type Description
hlm_td dict Dictionary with (l,m) as keys and the corresponding TD modes in lal format as values.
iota float

generate_TD_waveform

gw.waveform_generator.waveform_generator.NewInterfaceWaveformGenerator.generate_TD_waveform(
    parameters_gwsignal,
)

Generate time domain GW polarizations (h_plus, h_cross)

Parameters

Name Type Description Default
parameters_gwsignal Dict A dict of parameters for the gwsignal waveform generator required

Returns

Name Type Description
pol_dict Dict[str, np.ndarray] A dictionary of generated waveform polarizations

generate_hplus_hcross_m

gw.waveform_generator.waveform_generator.NewInterfaceWaveformGenerator.generate_hplus_hcross_m(
    parameters,
)

Generate GW polarizations (h_plus, h_cross), separated into contributions from the different modes. This method is identical to self.generate_hplus_hcross, except that it generates the individual contributions of the modes to the polarizations and sorts these according to their transformation behavior (see below), instead of returning the overall sum.

This is useful in order to treat the phase as an extrinsic parameter. Instead of {“h_plus”: hp, “h_cross”: hc}, this method returns a dict in the form of {m: {“h_plus”: hp_m, “h_cross”: hc_m} for m in [-l_max,…,0,…,l_max]}. Each key m contains the contribution to the polarization that transforms according to exp(-1j * m * phase) under phase transformations (due to the spherical harmonics).

Note: - pol_m[m] contains contributions of the m modes and and the -m modes. This is because the frequency domain (FD) modes have a positive frequency part which transforms as exp(-1j * m * phase), while the negative frequency part transforms as exp(+1j * m * phase). Typically, one of these dominates [e.g., the (2,2) mode is dominated by the negative frequency part and the (-2,2) mode is dominated by the positive frequency part] such that the sum of (l,|m|) and (l,-|m|) modes transforms approximately as exp(1j * |m| * phase), which is e.g. used for phase marginalization in bilby/lalinference. However, this is not exact. In this method we account for this effect, such that each contribution pol_m[m] transforms exactly as exp(-1j * m * phase). - Phase shifts contribute in two ways: Firstly via the spherical harmonics, which we account for with the exp(-1j * m * phase) transformation. Secondly, the phase determines how the PE spins transform to cartesian spins, by rotating (sx,sy) by phase. This is not accounted for in this function. Instead, the phase for computing the cartesian spins is fixed to self.spin_conversion_phase (if not None). This effectively changes the PE parameters {phi_jl, phi_12} to parameters {phi_jl_prime, phi_12_prime}. For parameter estimation, a postprocessing operation can be applied to account for this, {phi_jl_prime, phi_12_prime} -> {phi_jl, phi_12}. See also documentation of init method for more information on self.spin_conversion_phase.

Differences to self.generate_hplus_hcross: - We don’t catch errors yet TODO - We don’t apply transforms yet TODO

Parameters

Name Type Description Default
parameters Dict[str, float] Dictionary of parameters for the waveform. For details see see self.generate_hplus_hcross. required

Returns

Name Type Description
pol_m dict Dictionary with contributions to h_plus and h_cross, sorted by their transformation behaviour under phase shifts: {m: {“h_plus”: hp_m, “h_cross”: hc_m} for m in [-l_max,…,0,…,l_max]} Each contribution h_m transforms as exp(-1j * m * phase) under phase shifts (for fixed self.spin_conversion_phase, see above).