Multibanding
- seglen_from_freq(f_0: float, m_tot: float = 2.8, maximum_mass_ratio: float = 4.0, power_of_two=True, margin_percent=5.0) float[source]
The seglen has a closed-form expression in the Newtonian limit, see e.g. Maggiore (2007), eq. 4.21:
\(t = 5/256 (\pi f)^{-8/3} (G M \eta ^{3/5} / c^3)^{-5/3}\)
for which we compute the highest possible value, with the smallest possible \(\eta\); since \(t \propto \eta^{-1}\) this gives us a upper bound on the seglen.
- Parameters
f_0 (float) – Initial frequency from which the waveform starts, in Hz.
m_tot (float, optional) – Total mass of the binary, in solar masses. Defaults to 2.8.
Default:2.8maximum_mass_ratio (float, optional) – Maximum allowed mass ratio in the dataset; this is used to give an upper bound on the seglen. Defaults to 2.
Default:4.0power_of_two (bool, optional) – whether to return a frequency spacing which is a round power of two. Defaults to True.
Default:Truemargin_percent (float, optional) –
percent of margin to be added to the seglen, so that \(\Delta f < 1 / (T + \delta T)\) holds for \(\delta T \leq T (\text{margin} / 100)\).
Default:5.0This should not be too low, since varying the waveform parameters can perturb the seglen and make it a bit higher than the Newtonian approximation used in this formula.
- Returns
seglen – Approximate duration of the CBC waveform, in seconds.
- Return type
- reduced_frequency_array(f_min: float, f_max: float, f_pivot: float) numpy.ndarray[source]
Compute an array of frequencies which are a good guess to represent a gravitational waveform starting at a given minimum frequency.
Above
f_pivota uniform spacing is used; below it a non-uniform spacing is used, which follows the rule \(dN / df \sim T(f)\), where \(T(f)\) is the seglen (time-domain length) of a waveform which would start at that point, and which can be computed by
- high_frequency_grid(f_min: float, f_max: float)[source]
Uniform grid for the high-frequency regime.
- low_frequency_grid(f_min: float, f_max: float)[source]
Non-uniform grid for the low-frequency regime.
This is achieved by generating points uniformly in \(f^{-8/3+1}\)-space, and then transforming back. The normalization is computed by integrating \(dN/df = t(f)\) in the frequency range of interest, where \(t(f) = t_0 (f/f_0)^{-8/3}\) (as implemented in
seglen_from_freq()): this yields \(N(f_1, f_2) = f_0^{8/3} t_0 (f_1^{-5/3} - f_2^{-5/3})\).Since we are already working in \(f^{-5/3}\) space, to achieve this it is sufficient to use a step of \(1/(f_0^{8/3} t_0)\); this is easily computed by looking at \(t(1)\) (since the function \(t(f)\) is already implemented).