Next: Function: template_area()
Up: GRASP Routines: Template Bank
Previous: Function: tau_of_mass()
Contents
Function: m_and_eta()
0
int m_and_eta(double tau0, double tau1, double *M, double *eta, double Mmin, double Mmax, double pf)
This function takes as inputs the coordinates
. If
these correspond to individual masses and each lying in the
range from to then the function sets the total
mass and sets
and returns the
value 1. Otherwise, the function returns 0 and does not change the
values of mass or .
The arguments are:
 tau0 Input. The value of (positive, sec).
 tau1 Input. The value of (positive, sec).
 M Output. The total mass (solar masses). Unaltered if
no physical mass values are found in the desired range.
 eta Output. The value of (dimensionless). Unaltered
if no physical mass values are found in the desired range.
 Mmin Input. Minimum mass of one object in the binary pair,
in solar masses (positive).
 Mmax Input. Maximum mass of one object in the binary pair,
in solar masses (positive).
 pf: Input. The value . Here is the frequency at which
the chirp first enters the bandpass of the gravitational wave detector.
The algorithm followed by m_and_eta() is as follows. Eliminate
from the equations defining () and
() to obtain the following relation:

(9.4.196) 
with the constants given by:
Given
our goal is to find the roots of equation
(). It is easy to see that the function on the lhs of
() has at most two roots. The function is positive at
but decreasing for small positive . However it is positive and
increasing again as
. Hence the function on the
lhs of () has at most a single minimum for .
Setting the derivative equal to zero and solving, this minimum lies at
a value of the total mass which satisfies

(9.4.198) 
Hence the lhs of () has no roots if its value is
positive at
or it has two roots if that value is
negative. (The ``set of measure zero" possibility is a single root at
.)
If
then m_and_eta() searches for roots
and
separately, else it looks for a
root in the range
. If
the lhs of () changes sign at the upper and lower
boundaries of the interval, then a doubleprecision routine, similar to
the Numerical Recipes routine rtsafe(), is used to obtain
the root with a combination of ``safe" bisection and ``rapid"
NewtonRaphson.
If a root is found in the desired range, then is
determined by () to be

(9.4.199) 
If then the smaller and larger masses are calculated from

(9.4.200) 
(If both roots for correspond to then an error
message is generated and the routine aborts.) If both and
are in the desired range
then
m_and_eta() returns 1 and sets and appropriately,
else it returns 0, leaving and unaffected.
 Author:
Bruce Allen, ballen@dirac.phys.uwm.edu
 Comments:
Although the arguments to this function are double precision floats,
the values of and that may be inferred from them can
generally only be determined to single precision, particulary in the
neighborhood of . The reason is that in the vicinity of , a fractional error is the value of
produces a fractional error in the masses.
Next: Function: template_area()
Up: GRASP Routines: Template Bank
Previous: Function: tau_of_mass()
Contents
Bruce Allen
20001119