BCV template bank.
Prototypes | |
void | LALInspiralCreateBCVBank (LALStatus *status, InspiralTemplateList **list, INT4 *nlist, InspiralCoarseBankIn coarseIn) |
Lay a flat grid of BCV templates in the user specified range of the parameters \((\psi_0, \psi_3)\) in coarseIn structure. More... | |
void | LALInspiralCreateFlatBank (LALStatus *status, REAL4VectorSequence *list, InspiralBankParams *bankParams) |
The code expects list->vectorLength=2 and allocates just the requisite amount of memory to list and returns the number of grid points in list->length . More... | |
void | LALInspiralBCVFcutBank (LALStatus *status, InspiralTemplateList **list, INT4 *NList, InspiralCoarseBankIn coarseIn) |
Given a grid of templates with distinct values of \((\psi_0, \psi_3)\) this routine returns a new grid in which every template has numFcutTemplates partners differing from one another in the ending frequency fendBCV . More... | |
void | LALPSItoMasses (LALStatus *status, InspiralTemplate *params, UINT4 *valid, REAL4 HighGM) |
UNDOCUMENTED. More... | |
void | LALInspiralBCVBankFcutS3S4 (LALStatus *status, InspiralTemplateList **list, INT4 *NList, InspiralCoarseBankIn coarseIn) |
UNDOCUMENTED. More... | |
void | LALInspiralBCVRegularFcutBank (LALStatus *status, InspiralTemplateList **list, INT4 *NList, InspiralCoarseBankIn coarseIn) |
UNDOCUMENTED. More... | |
void | LALEmpiricalPSItoMassesConversion (LALStatus *status, InspiralTemplate *params, UINT4 *valid, REAL4 lightring) |
UNDOCUMENTED. More... | |
void | LALInspiralCreateFlatBankS3S4 (LALStatus *status, REAL4VectorSequence *list, InspiralBankParams *bankParams, InspiralCoarseBankIn coarseIn) |
UNDOCUMENTED. More... | |
void | LALExcludeTemplate (LALStatus *status, INT4 *valid, InspiralBankParams UNUSED *bankParams, REAL4 x, REAL4 y) |
Thomas: 31 Aug 2006. More... | |
void LALInspiralCreateBCVBank | ( | LALStatus * | status, |
InspiralTemplateList ** | list, | ||
INT4 * | nlist, | ||
InspiralCoarseBankIn | coarseIn | ||
) |
Lay a flat grid of BCV templates in the user specified range of the parameters \((\psi_0, \psi_3)\) in coarseIn
structure.
Given the range of the parameters \((\psi_0, \psi_3),\) the number of templates in the fCut
direction, minimalMatch, noise spectral density, upper and lower frequency cutoffs (all in the input structure coarseIn
) this routine outputs the list of templates in the BCV bank for the parameters \((\psi_0, \psi_3, f_{\mathrm{cut}}).\)
A flat signal manifold is assumed and templates are laid uniform in the three dimensions. See below for an explanation of how templates are chosen in the fcut
direction.
status | LAL status pointer | |
[out] | list | an array containing the template bank parameters. |
[out] | nlist | the number of templates in bank |
coarseIn | UNDOCUMENTED |
Definition at line 61 of file LALInspiralBCVBank.c.
void LALInspiralCreateFlatBank | ( | LALStatus * | status, |
REAL4VectorSequence * | list, | ||
InspiralBankParams * | bankParams | ||
) |
The code expects list->vectorLength=2
and allocates just the requisite amount of memory to list
and returns the number of grid points in list->length
.
The data points list->data[2j]
, j=1,2, ... list->length
, contain the \(x_0\)-coordinates of the grid and data points list->data[2j+1]
, contain the \(x_1\)-coordinates of the grid.
Given the metric
and the minimalMatch
this routine calls bank/LALInspiralUpdateParams
to get the spacings in user coordinates (which are not necessarily the eigen-directions) and lays a uniform grid of templates in the range specified in (bankParams->x0Min
, bankParams->x0Max
) and (bankParams->x1Min
, bankParams->x1Max
).
The algorithm to lay templates is as follows: Given the increments \(Dx_0\) and \(Dx_1\) found from calling bank/LALInspiralUpdateParams
lay a rectangular grid in the space of \((x_0, x_1).\)
-
\(x_1 = x_1^{\mathrm{min}}\)
-
do while ( \(x_1 \le x_1^{\mathrm{max}}\))
-
\(x_0 = x_0^{\mathrm{min}}\)
-
do while ( \(x_0 \le x_0^{\mathrm{max}}\))
-
Add ( \(x_0, x_1\)) to list
-
numTemplates++
-
Increment \(x_0: \; x_0 = x_0 + Dx_0\)
-
Increment \(x_1: \; x_1 = x_1 + Dx_1\)
status | LAL status pointer | |
[out] | list | an array containing the template bank parameters |
[in] | bankParams | It is necessary and sufficient to input the eigenvalues of the metric and the angle between the \(x_0\) axis and the semi-major axis of the ambiguity ellipse, that is, bankParams.metric.g00, bankParams.metric.g11, bankParams.metric.theta , the minimal match, bankParams.minimalMatch and the range of the two coordinates over which templates must be chosen: (bankParams->x0Min , bankParams->x0Max ) and (bankParams->x1Min , bankParams->x1Max ) |
Definition at line 266 of file LALInspiralBCVBank.c.
void LALInspiralBCVFcutBank | ( | LALStatus * | status, |
InspiralTemplateList ** | list, | ||
INT4 * | NList, | ||
InspiralCoarseBankIn | coarseIn | ||
) |
Given a grid of templates with distinct values of \((\psi_0, \psi_3)\) this routine returns a new grid in which every template has numFcutTemplates
partners differing from one another in the ending frequency fendBCV
.
A call to this function should be preceeded by a call to LALInspiralCreateFlatBank() or a similar function, that gives a grid in \((\psi_0, \psi_3)\) space.
A lattice of templates for BCV models should include, in addition to the values of \((\psi_0, \psi_3)\) a range of \(f_{\mathrm{cut}}\) – the cutoff frequency. The right approach would be to compute the metric in the three-dimensional space of \((\psi_0, \psi_3, f_{\mathrm{cut}})\) and to choose templates as dictated by the metric. However, analytic computation of the metric has not been easy. Therefore, it has become necessary (at least for the time being) to make alternate choice of the cutoff frequencies.
In this routine we implement a simple choice based on physical grounds: The post-Newtonian models predict an ending frequency that is larger than, but close to, the Schwarzschild last-stable orbit frequency \(f_{\mathrm{lso}} = (6^{3/2} \pi M )^{-1}\) where \(M\) is the total mass, while the effective one-body model has an ending frequency close to the light-ring, whose Schwarzschild value is \(f_{\mathrm{lr}} = (3^{3/2} \pi M )^{-1}\). It is necessary to know the total mass of the system in both cases. However, not all pairs of \((\psi_0, \psi_3)\) can be inverted to get a positive \(M\) but only when \(\psi_0 > 0\) and \(\psi_3 < 0\). Even then it is not guaranteed that the symmetric mass ratio will be less than \(1/4,\) a necessary condition so that the component masses are found to be real. However, we do not demand that the symmetric mass ratio is less than a quarter. If the total mass is non-negative then we compute the \((f_{\mathrm{lso}}, f_{\mathrm{lr}})\) and choose a user specified numFcutTemplates
number of templates with their cutoff frequency list->fFinal
defined uniformly spaced in the range \([f_{\mathrm{lso}},\ f_{\mathrm{lr}}]\).
Furthermore, this routine discards all templates for which either the mass is not defined or, when defined, list->fFinal
is smaller than the user defined lower frequency cutoff or larger than the Nyquist frequency of templates. Thus, the number of templates returned by this routine could be larger or fewer than the input number of templates.
Given \((\psi_0, \psi_3)\) one can solve for \((M, \eta)\) using:
\begin{equation} M = \frac{-\psi_3}{16 \pi^2 \psi_0},\ \ \eta = \frac{3}{128 \psi_0 (\pi M)^{5/3}}. \end{equation}
Given the total mass compute the last stable orbit and light-ring frequencies using
\begin{equation} f_{\mathrm{lso}} = (6^{3/2} \pi M)^{-1},\ \ f_{\mathrm{lr}} = (3^{3/2} \pi M)^{-1}. \end{equation}
Divide the range \((f_{\mathrm{lso}}, f_{\mathrm{lr}})\) so as to have \(n_{\mathrm{cut}}= \mathtt{numFcutTemplates}\) templates over this range:
\begin{equation} df = f_{\mathrm{lr}} \frac {\left( 1 - 2^{-3/2} \right) }{ (n_{\mathrm{cut}} -1) }. \end{equation}
Next, choose templates at \(f_k = f_\mathrm{lr} - k \times df,\) where \(k=0, \ldots, n_\mathrm{cut}-1\). Note that by definition \(f_0 = f_\mathrm{lr}\) and \(f_{n_\mathrm{cut}-1} = f_\mathrm{lso}\); there are exatly \(n_\mathrm{cut}\) templates in the range \((f_\mathrm{lso}, f_\mathrm{lr})\). We discard a template if either \(M\) is not defined or if \(f_\mathrm{cut}\) is smaller than the lower frequency cutoff specified in list[j]->fLower
.
status | LAL status pointer | |
[in,out] | list | an array initially containing the template bank with the values of list[j]->psi0, list[j]->psi3, list[j]->fLower, specified, is replaced on return with a re-sized array specifying also list->fFinal. |
[in,out] | NList | the number of templates in the Input bank is replaced by the number of templates in the output bank. |
coarseIn | UNDOCUMENTED |
Definition at line 389 of file LALInspiralBCVBank.c.
void LALPSItoMasses | ( | LALStatus * | status, |
InspiralTemplate * | params, | ||
UINT4 * | valid, | ||
REAL4 | HighGM | ||
) |
UNDOCUMENTED.
Definition at line 489 of file LALInspiralBCVBank.c.
void LALInspiralBCVBankFcutS3S4 | ( | LALStatus * | status, |
InspiralTemplateList ** | list, | ||
INT4 * | NList, | ||
InspiralCoarseBankIn | coarseIn | ||
) |
UNDOCUMENTED.
Definition at line 541 of file LALInspiralBCVBank.c.
void LALInspiralBCVRegularFcutBank | ( | LALStatus * | status, |
InspiralTemplateList ** | list, | ||
INT4 * | NList, | ||
InspiralCoarseBankIn | coarseIn | ||
) |
UNDOCUMENTED.
Definition at line 648 of file LALInspiralBCVBank.c.
void LALEmpiricalPSItoMassesConversion | ( | LALStatus * | status, |
InspiralTemplate * | params, | ||
UINT4 * | valid, | ||
REAL4 | lightring | ||
) |
UNDOCUMENTED.
Definition at line 706 of file LALInspiralBCVBank.c.
void LALInspiralCreateFlatBankS3S4 | ( | LALStatus * | status, |
REAL4VectorSequence * | list, | ||
InspiralBankParams * | bankParams, | ||
InspiralCoarseBankIn | coarseIn | ||
) |
UNDOCUMENTED.
Definition at line 743 of file LALInspiralBCVBank.c.
void LALExcludeTemplate | ( | LALStatus * | status, |
INT4 * | valid, | ||
InspiralBankParams UNUSED * | bankParams, | ||
REAL4 | x, | ||
REAL4 | y | ||
) |
Thomas: 31 Aug 2006.
This function is redundant with the polygon fit. It was design for BBH and therefore had tight boundary. For a more general purpose, I extended the range to generous values
Definition at line 922 of file LALInspiralBCVBank.c.