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). |