The arguments are:
It is easy to cover the parameter space shown in Figure with ellipses. However each ellipse represents a filter, and filtering takes computer time and memory, so the real problem is to cover the parameter space completely, using the smallest possible number of templates. This is a non-trivial packing problem; while our solution is certainly not optimal, it is quite close.
The algorithm used to place the templates works in coordinates which are rotated versions of , aligned along the minor and major (or major and minor) axes of the template ellipses. The input angle Grid.theta,in the range , is the counterclockwise angle through which the axes need to be rotated to bring them into alignment with the principal axis of the template ellipses.
Although each template is an ellipse, the problem of packing templates onto the parameter space can be more easily described in terms of a more familiar packing problem: packing pennies on the plane. One can always transform an ellipse into a circle by merely scaling one coordinate uniformly while leaving the other coordinate unchanged. So we introduce coordinates along the major diameter and along the minor diameter of the ellipse, and then ``shrinking" the coordinate by the ratio of major to minor diameters. In this way the ellipses are transformed into circles.
First, a template is laid down at the point where the equal mass line intersects the maximum mass line. Then additional templates are placed along the equal mass line, at increasing values of . These templates are staggered up and down in the direction. After laying down this set of templates, the remaining part of parameter space is covered with additional templates, in columns starting at each of the previously determined template locations. These columns have the same value of as the previously determined templates but increasing values of . The columns are continued until the ``leading edge" of the final template lies outside the parameter space.
We can describe the packing (and the ``efficiency") of the packing in terms of the penny-packing problem. Suppose we start by setting pennies of radius on all points in the plane with integer coordinates, as shown in Figure . It is easy to show that the fraction of the plane (i.e., parameter space!) which is not covered by any pennies is or about 21%.
Now suppose that we ``stagger" the pennies as shown in Figure . In this case, the fraction of area not covered is or about 9.3%. If we wish to completely cover the missing bits of the plane, then we can do so by increasing the radius of each penny by (or, equivalently, by moving the points at which the pennies lie closer together by that same factor). The resulting diagram is shown in Figure . By increasing the number-density of pennies on the plane by 25% we have successfully covered up the remaining 9.3% of the area.
Now it is not possible to implement this algorithm exactly, because we are not attempting to cover the entire plane, but rather only a finite region of it. You might think that we could just start laying down templates in the same was as for Figure and stick in a few extra ones for any parts of the parameter space which were not covered, but unfortunately this would then lead us to place templates centered at points in space that do not correspond to , and for which the very meaning of a ``chirp" is ill-defined.
The code in template_grid() thus uses a heuristic method to place templates, trying whenever possible to stagger them in the same way as Figure but then shifting the center locations when necessary to ensure that the template corresponds to physical values of the mass parameters and . This is often referred to as ``hexagonal packing". In practice, to see if this placement has been successful or not, the function plot_template() can be used to visually examine the template map.