Next: cw-optimal-search-setup, Previous: cw-line-veto, Up: Directory Index [Contents][Index]
Analyse a segment list and print/return various properties.
2-column segment list: [start_times, end_times]
4-column segment list: [start_times, end_times, unused, num_SFTs]
number of detectors
SFT time-span in seconds
props = AnalyseSegmentList([0:2:10; 1:2:11]' * 86400); sert(props.num_segments, 6) sert(props.coh_mean_Tspan, 86400) sert(props.inc_Tobs, 6 * 86400) sert(props.inc_Tspan, 11 * 86400) sert(props.inc_duty, 6 / 11, 1e-3)
Return true if the segment list ’seglist’ equals any of the segment lists seglist_1, seglist_2, etc., and false otherwise.
seglists = CreateSegmentList(123, [2, 3, 5, 9, 17], [1.2, 4.5, 9.7], [], [0.7, 0.9]);
for n = 1:numel(seglists)
  assert(find(CompareSegmentLists(seglists{n}, seglists)) == n);
endfor
Create various Doppler phase- and Fstat metrics.
Doppler metric, with struct-elements (depending on metric_type):
phase metric
full F-stat metric
averaged F-stat metric
coordinate IDs of the chosen coordinates
coordscomma-separated list of coordinates:
alpha_deltaphysical sky coordinates
ssky_equsuper-sky in equatorial coordinates
ssky_eclsuper-sky in ecliptic coordinates
spin_equspin sky in x-y equatorial coordinates
orbit_eclorbit sky in x-y-z ecliptic coordinates
freqfrequency in SI units
fdotsfrequency spindowns in SI units
gct_nuGCT frequency/spindowns in SI units
gct_nx_ny_equGCT constrained equatorial sky coordinates
spindownsnumber of spindown coordinates: 0=none, 1=1st spindown, 2=1st+2nd spindown, etc.
segment_listlist of segments [start_time, end_time; start_time, end_time; …] in GPS seconds
ref_timereference time in GPS seconds [default: mean of segment list start/end times]
detectorscomma-separated list of detector names
ephemeridesEarth/Sun ephemerides from loadEphemerides()
fiducial_freqfiducial frequency for sky-position coordinates
det_motionwhich detector motion to use (default: spin+orbit)
alphafor physical sky coordinates, right ascension to compute metric at
deltafor physical sky coordinates, declination to compute metric at
metric_typecompute either phase metric (phase), F-stat metric (Fstat), or both (all)
cosicos(iota) signal parameter for full F-stat metric (gF_ij)
psipolarization angle signal parameter for full F-stat metric (gF_ij)
See the tutorial on ComputeDopplerMetric().
Create the supersky parameter-space metrics.
a struct containing the following fields:
coh_rssky_metriccoherent reduced supersky metric for each segment
coh_rssky_transfcoherent reduced supersky metric coordinate transform data for each segment
semi_rssky_metricsemicoherent reduced supersky metric
semi_rssky_transfsemicoherent reduced supersky metric coordinate transform data
spindownsnumber of spindown coordinates: 0=none, 1=1st spindown, 2=1st+2nd spindown, etc.
segment_listlist of segments [start_time, end_time; start_time, end_time; ...] in GPS seconds
ref_timereference time in GPS seconds [default: mean of segment list start/end times]
fiducial_freqfiducial frequency for sky-position coordinates [required]
detectorscomma-separated list of detector names [required]
detector_weightsvector of weights used to combine single-detector metrics [default: unit weights]
detector_motionwhich detector motion to use [default: spin+orbit]
ephemeridesEarth/Sun ephemerides [default: load from loadEphemerides()]
cache_sizesize of cache of previously-computed metrics to use [default: 100; 0=no cache]
try
  lal; lalpulsar;
catch
  disp("skipping test: LALSuite bindings not available"); return;
end_try_catch
metrics = ComputeSuperskyMetrics( ...
                                 "spindowns", 1, ...
                                 "segment_list", CreateSegmentList(1e9, 5, 86400, [], 0.75), ...
                                 "fiducial_freq", 123.4, ...
                                 "detectors", "H1,L1", ...
                                 "cache_size", 0 ...
                               );
metrics = ComputeSuperskyMetrics( ...
                                 "spindowns", 1, ...
                                 "segment_list", CreateSegmentList(1e9, 5, 86400, [], 0.75), ...
                                 "fiducial_freq", 123.4, ...
                                 "detectors", "H1,L1", ...
                                 "cache_size", 100 ...
                               );
Create segment list(s) with the given mean timestamp mean_time, and exactly 3 of the following 4 input parameters:
Aside from mean_time, each parameter may be vectorised to return multiple segment lists with all possible parameter combinations.
assert( iscell(CreateSegmentList(123, 10, [3, 4], [], 1.0)) )
assert( numel(CreateSegmentList(123, 10, [3, 4], [], 1.0)) == 2 )
assert( !iscell(CreateSegmentList(123, 10, 3, [], 1.0)) )
assert( iscell(CreateSegmentList(123, 10, 3, [], 1.0, true)) )
assert( AnalyseSegmentList(CreateSegmentList(456, [], 7.3, 140.9, 0.87)).mean_time, 456, 1e-5 )
assert( AnalyseSegmentList(CreateSegmentList(456, [], 7.3, 140.9, 0.87)).num_segments, 16, 1e-5 )
assert( mean(AnalyseSegmentList(CreateSegmentList(456, [], 7.3, 140.9, 0.87)).coh_Tspan), 7.375, 1e-5 )
assert( AnalyseSegmentList(CreateSegmentList(456, [], 7.3, 140.9, 0.87)).inc_Tspan, 140, 1e-5 )
assert( AnalyseSegmentList(CreateSegmentList(456, [], 7.3, 140.9, 0.87)).inc_duty, 0.84286, 1e-5 )
assert( AnalyseSegmentList(CreateSegmentList(345, 50, [], 256.7, 0.77)).mean_time, 345, 1e-5 )
assert( AnalyseSegmentList(CreateSegmentList(345, 50, [], 256.7, 0.77)).num_segments, 50, 1e-5 )
assert( mean(AnalyseSegmentList(CreateSegmentList(345, 50, [], 256.7, 0.77)).coh_Tspan), 4, 1e-5 )
assert( AnalyseSegmentList(CreateSegmentList(345, 50, [], 256.7, 0.77)).inc_Tspan, 256, 1e-5 )
assert( AnalyseSegmentList(CreateSegmentList(345, 50, [], 256.7, 0.77)).inc_duty, 0.78125, 1e-5 )
assert( AnalyseSegmentList(CreateSegmentList(234, 200, 3.7, [], 0.77)).mean_time, 234, 1e-5 )
assert( AnalyseSegmentList(CreateSegmentList(234, 200, 3.7, [], 0.77)).num_segments, 200, 1e-5 )
assert( mean(AnalyseSegmentList(CreateSegmentList(234, 200, 3.7, [], 0.77)).coh_Tspan), 3.7, 1e-5 )
assert( AnalyseSegmentList(CreateSegmentList(234, 200, 3.7, [], 0.77)).inc_Tspan, 962, 1e-5 )
assert( AnalyseSegmentList(CreateSegmentList(234, 200, 3.7, [], 0.77)).inc_duty, 0.76923, 1e-5 )
assert( AnalyseSegmentList(CreateSegmentList(123, 100, 2.3, 365.25, [])).mean_time, 123, 1e-5 )
assert( AnalyseSegmentList(CreateSegmentList(123, 100, 2.3, 365.25, [])).num_segments, 100, 1e-5 )
assert( mean(AnalyseSegmentList(CreateSegmentList(123, 100, 2.3, 365.25, [])).coh_Tspan), 2.34, 1e-5 )
assert( AnalyseSegmentList(CreateSegmentList(123, 100, 2.3, 365.25, [])).inc_Tspan, 366, 1e-5 )
assert( AnalyseSegmentList(CreateSegmentList(123, 100, 2.3, 365.25, [])).inc_duty, 0.63934, 1e-5 )
assert( AnalyseSegmentList(CreateSegmentList(123, 1, 2.3, 365.25, [])).inc_duty, 1.0, 1e-5 )
tolerant ] )Diagonally normalise a metric.
metric
diagonal normalisation coefficients
inverse of diagonal normalisation coefficients
If tolerant option is given, tolerate zero or negative diagonal elements.
g = [7,3,5; 3,6,2; 5,2,5]; sert(DiagonalNormaliseMetric(g), g ./ sqrt(diag(g) * diag(g)'), 1e-3)
Compute an empirical fit, derived from numerical simulations, to the F-statistic mismatch as a function of the coherent and semicoherent time-spans and metric mismatches.
mean F-statistic mismatch
standard deviation of F-statistic mismatch
coherent segment time-span, in seconds
semicoherent search time-span, in seconds
mean coherent metric mismatch
mean semicoherent metric mismatch
standard deviation of coherent metric mismatch
standard deviation of semicoherent metric mismatch
Input variables may also be vectors. Note that a non-interpolating search implies mcoh = 0.
assert(EmpiricalFstatMismatch(0, 0, 0, 0) == 0)
assert(EmpiricalFstatMismatch(86400, 10*86400, 0, 0) == 0)
assert(EmpiricalFstatMismatch(86400, 10*86400, 0, 0.5) > 0)
assert(EmpiricalFstatMismatch(86400, 10*86400, 0, 0.5) < 1)
assert(EmpiricalFstatMismatch(86400, 10*86400, 0.1, 0.5) > 0)
assert(EmpiricalFstatMismatch(86400, 10*86400, 0.1, 0.5) < 1)
assert(EmpiricalFstatMismatch(86400, 10*86400, 0.1, 50) > 0)
assert(EmpiricalFstatMismatch(86400, 10*86400, 0.1, 50) < 1)
assert(EmpiricalFstatMismatch(86400, 10*86400, 50, inf) == 1)
assert(EmpiricalFstatMismatch(86400, 10*86400, inf, inf) == 1)
Given a set of points, find the closest template to each in a ’virtual’ lattice template bank, constructed using a given metric and maximum mismatch.
set of points (in columns) to find closest template
parameter-space metric associated with points’
maximum mismatch of lattice template bank
type of lattice to use; see LatticeFindClosestPoint()
closest template to each point
x = octforge_unifrnd(-10, 10, [3,100]); metric = [7,3,5; 3,6,2; 5,2,5]; max_mismatch = 0.4; dx = x - FindClosestTemplate(x, metric, max_mismatch, "Zn"); assert(dot(dx, metric * dx) <= max_mismatch);
Computes the coherent global correlation transform metric, as given in Pletsch, PRD 82 042002 (2010), which Taylor-expands the Earth’s orbital motion.
coherent GCT metric using Taylor-expanded phase model
smaxnumber of spindowns (up to second spindown)
tjvalue of tj, the mid-point of the coherent time span
t0value of t0, an overall reference time
Tvalue of T, the coherent time span
Omegavalue of Omega, the Earth’s angular rotation frequency (default: 2*pi / (sidereal day in seconds)
[ ... 0.33333333333333,-0.66666666666666,1.2,0,-0.31830988618379; ... -0.66666666666666,1.422222222222222,-2.666666666666666,0.20264236728467,0.63661977236758; ... 1.2,-2.666666666666666,5.142857142857143,-0.60792710185402,-1.079730338135965; ... 0,0.20264236728467,-0.60792710185402,0.5,0; ... -0.31830988618379,0.63661977236758,-1.079730338135965,0,0.5; ... ]);
[ ... 0.33333333333333,0,0.2,0,0.31830988618379; ... 0,0.088888888888888,0,-0.20264236728467,0; ... 0.2,0,0.14285714285714,0,0.12480067958459; ... 0,-0.20264236728467,0,0.5,0; ... 0.31830988618379,0,0.12480067958459,0,0.5; ... ]);
[ ... 0.33333333333333,-0.088888888888888,0.21777777777777,-0.014039475036123,-0.0081056946913869; ... -0.088888888888888,0.11259259259259,-0.093629629629629,-0.036633359944481,0.072096915013279; ... 0.21777777777777,-0.093629629629629,0.17936084656084,-0.025350712749409,-0.051935118925438; ... -0.014039475036123,-0.036633359944481,-0.025350712749409,0.4959471526543,0.0070197375180618; ... -0.0081056946913869,0.072096915013279,-0.051935118925438,0.0070197375180618,0.48784145796291; ... ]);
T = 1:10;
GCT_det = arrayfun(@(T) det(GCTCoherentTaylorMetric("smax", 1, "tj", 0, "t0", 0, "T", T, "Omega", 2*pi)), T);
GCT_det_ref = arrayfun(@(T) detg1(2*pi*T/2), T);
assert(all(abs(GCT_det - GCT_det_ref) < 1e-10));
T = 1:10;
GCT_det = arrayfun(@(T) det(GCTCoherentTaylorMetric("smax", 2, "tj", 0, "t0", 0, "T", T, "Omega", 2*pi)), T);
GCT_det_ref = arrayfun(@(T) detg2(2*pi*T/2), T);
assert(all(abs(GCT_det - GCT_det_ref) < 1e-10));
togct, phyco, opt, val, … )tophy, gctco, opt, val, … )Computes the coherent global correlation coordinates, as given in Pletsch, PRD 82 042002 (2010)
matrix of physical coordinates: [alpha; delta; freq; f1dot; ...]
matrix of GCT coordinates; order matches that of GCTCoherentMetric()
t0value of t0, an overall reference time
Tvalue of T, the coherent time span
detectordetector name, e.g. H1
fmaxmaximum frequency to assume when converting sky coordinates
sgndeltasign of declination when converting to physical coordinates [default: 1]
ephemeridesEarth/Sun ephemerides from loadEphemerides()
ptolemaicuse Ptolemaic orbital motion
alpha_ref = [1.1604229, 3.4494408, 0.3384569, 3.2528905, 4.2220307, 4.0216501, 4.4586725, 2.6643348, 4.5368049, 4.1968573, 1.0090024, 2.3518049, 6.1686511, 2.7418963, 5.7136839, 4.8999429, 3.5196677, 3.5462285];
delta_ref = [0.1932254, 0.1094716,-0.9947154, 0.0326421, 0.8608284,-0.5364847,-0.7566707, 0.3503306,-0.5262539,-0.7215617,-0.2617862,-0.4193604,-1.0175479, 0.4204785,-0.2233229,-0.2677687,-0.1032384, 1.4105888];
fndot_ref = [6.2948e-3, 1.3900e-3, 7.4630e-3, 3.4649e-3, 8.1318e-3, 4.6111e-3, 9.9765e-3, 2.4069e-3, 8.0775e-3, 6.0784e-3, 1.2569e-3, 8.3437e-3, 8.1557e-3, 4.2130e-3, 7.0748e-4, 4.0846e-3, 3.1204e-3, 3.8858e-3;
             0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000,-1.859e-10,-1.7734e-9,-6.7179e-9,-7.6231e-9,-5.9919e-9,-4.7396e-9,-8.0516e-9,-4.0123e-9,-9.1149e-9,-5.3355e-9,-2.0422e-9,-7.7313e-9;
             0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 2.596e-17, 9.455e-17, 1.913e-17, 6.869e-17, 2.286e-17, 1.743e-17];
gctco_ref = [1.7085e+3, 3.7728e+2, 2.0258e+3, 9.4045e+2, 2.2072e+3, 1.2517e+3, 2.7081e+3, 6.5316e+2, 2.1921e+3, 1.6492e+3, 3.4180e+2, 2.2644e+3, 2.2141e+3, 1.1432e+3, 1.9251e+2, 1.1085e+3, 8.4669e+2, 1.0548e+3;
             5.9246e-4,-1.4654e-4, 2.8904e-4,-3.4929e-4,-3.5437e-4,-4.7675e-4,-1.0908e+0,-1.0396e+1,-3.9393e+1,-4.4699e+1,-3.5128e+1,-2.7784e+1,-4.7212e+1,-2.3520e+1,-5.3450e+1,-3.1288e+1,-1.1973e+1,-4.5325e+1;
             1.1578e-6, 1.3190e-7,-1.0014e-6, 4.9297e-7,-7.7033e-8,-6.1422e-7,-1.6373e-6, 4.2624e-6, 2.0069e-5, 2.8420e-5,-2.3158e-5, 8.9556e-6, 2.1817e-3, 7.9903e-3, 1.5984e-3, 5.8097e-3, 1.9400e-3, 1.4695e-3;
            -1.1593e-3, 2.2515e-3,-1.2265e-3, 2.3005e-3, 8.7039e-4, 1.4456e-3, 6.2425e-4, 1.7776e-3, 5.9593e-4, 1.0377e-3,-1.4158e-3, 1.2768e-3,-1.1741e-3, 1.8152e-3,-1.7200e-3,-1.3115e-4, 2.2189e-3, 3.5332e-4;
            -1.9392e-3, 4.0833e-4,-2.6143e-4,-3.9448e-5, 1.2223e-3, 1.3511e-3, 1.5531e-3,-1.2310e-3, 1.8993e-3, 1.3822e-3,-1.7147e-3,-1.6706e-3, 2.9104e-4,-1.0591e-3, 1.4427e-3, 2.2162e-3, 5.6570e-4, 1.0014e-4];
try
  lal; lalpulsar;
catch
  disp("skipping test: LALSuite bindings not available"); return;
end_try_catch
gctco = GCTCoordinates("togct", [alpha_ref; delta_ref; fndot_ref], "t0", 987654321, "T", 86400, "detector", "L1", "fmax", 0.02, "ptolemaic", false);
assert(all(abs(gctco - gctco_ref) < 1e-4 * abs(gctco_ref)));
try
  lal; lalpulsar;
catch
  disp("skipping test: LALSuite bindings not available"); return;
end_try_catch
gctco = GCTCoordinates("togct", [alpha_ref(1:16); delta_ref(1:16); fndot_ref(1:2, 1:16)], "t0", 987654321, "T", 86400, "detector", "L1", "fmax", 0.02, "ptolemaic", false);
assert(all(abs(gctco - gctco_ref([1,2,4,5], 1:16)) < 1e-4 * abs(gctco_ref([1,2,4,5], 1:16))));
try
  lal; lalpulsar;
catch
  disp("skipping test: LALSuite bindings not available"); return;
end_try_catch
gctco = GCTCoordinates("togct", [alpha_ref(1:8); delta_ref(1:8); fndot_ref(1:1, 1:8)], "t0", 987654321, "T", 86400, "detector", "L1", "fmax", 0.02, "ptolemaic", false);
assert(all(abs(gctco - gctco_ref([1,4,5], 1:8)) < 1e-3 * abs(gctco_ref([1,4,5], 1:8))));
try
  lal; lalpulsar;
catch
  disp("skipping test: LALSuite bindings not available"); return;
end_try_catch
phyco = GCTCoordinates("tophy", gctco_ref, "t0", 987654321, "T", 86400, "detector", "L1", "fmax", 0.02, "sgndelta", delta_ref, "ptolemaic", false);
assert(all(abs(phyco(1, :) - alpha_ref) < 1e-4 * abs(alpha_ref)));
assert(all(abs(phyco(2, :) - delta_ref) < 2e-2 * abs(delta_ref)));
for i = 1:3
  assert(all(abs(phyco(2+i, :) - fndot_ref(i, :)) < max(1e-10, 1e-4 * abs(fndot_ref(i, :)))));
endfor
try
  lal; lalpulsar;
catch
  disp("skipping test: LALSuite bindings not available"); return;
end_try_catch
phyco = GCTCoordinates("tophy", gctco_ref(:, 1:16), "t0", 987654321, "T", 86400, "detector", "L1", "fmax", 0.02, "sgndelta", delta_ref(1:16), "ptolemaic", false);
assert(all(abs(phyco(1, 1:16) - alpha_ref(1:16)) < 1e-4 * abs(alpha_ref(1:16))));
assert(all(abs(phyco(2, 1:16) - delta_ref(1:16)) < 2e-2 * abs(delta_ref(1:16))));
for i = 1:2
  assert(all(abs(phyco(2+i, 1:16) - fndot_ref(i, 1:16)) < max(1e-10, 1e-4 * abs(fndot_ref(i, 1:16)))));
endfor
try
  lal; lalpulsar;
catch
  disp("skipping test: LALSuite bindings not available"); return;
end_try_catch
phyco = GCTCoordinates("tophy", gctco_ref(:, 1:8), "t0", 987654321, "T", 86400, "detector", "L1", "fmax", 0.02, "sgndelta", delta_ref(1:8), "ptolemaic", false);
assert(all(abs(phyco(1, 1:8) - alpha_ref(1:8)) < 1e-4 * abs(alpha_ref(1:8))));
assert(all(abs(phyco(2, 1:8) - delta_ref(1:8)) < 2e-2 * abs(delta_ref(1:8))));
for i = 1:1
  assert(all(abs(phyco(2+i, 1:8) - fndot_ref(i, 1:8)) < max(1e-10, 1e-4 * abs(fndot_ref(i, 1:8)))));
endfor
Computes the semicoherent global correlation transform metric, as given in Pletsch, PRD 82 042002 (2010), which Taylor-expands the Earth’s orbital motion.
semicoherent GCT metric using Taylor-expanded phase model
smaxnumber of spindowns (up to second spindown)
tj_listlist of values of tj, the mid-point of the coherent time span of each segment
t0value of t0, an overall reference time
Tvalue of T, the coherent time span
Omegavalue of Omega, the Earth’s angular rotation frequency [default: 2*pi / (sidereal day in seconds)]
[ ... 0.33333333333333,0,8.2,0,0.31830988618379; ... 0,10.75555555555555,0,-0.20264236728467,0.0; ... 8.2,0,342.5428571428571,0.0,7.76423794799557; ... 0,-0.20264236728467,0.0,0.5,0; ... 0.31830988618379,0.0,7.76423794799557,0,0.5; ... ]);
[ ... 0.33333333333333,0,32.2,0,0.31830988618379; ... 0,42.75555555555555,0,-0.20264236728467,0.0; ... 32.2,0,5286.542857142857,0.0,30.6825497532285; ... 0,-0.20264236728467,0.0,0.5,0; ... 0.31830988618379,0.0,30.6825497532285,0,0.5; ... ]);
[ ... 0.33333333333333,0.53333333333334,32.32800000000034,8.881784197001253e-17,0.016211389382774; ... 0.53333333333334,42.92622222222272,80.2005333333349,0.080754439908228,0.025938223012437; ... 32.32800000000034,80.2005333333349,4626.441737142834,0.19381065577974,1.609575867543293; ... 8.881784197001253e-17,0.080754439908228,0.19381065577974,0.48378861061722,8.639163721880971e-18; ... 0.016211389382774,0.025938223012437,1.609575867543293,8.639163721880971e-18,0.5; ... ]);
T = 5;
N = 10;
t_j = ((1:N) - (N+1)/2)*T;
for s = 1:2
  GCT_semi = GCTSemicoherentTaylorMetric("smax", 1, "tj_list", t_j, "t0", mean(t_j), "T", T, "Omega", 2*pi);
  GCT_coh = GCTCoherentTaylorMetric("smax", 1, "tj", mean(t_j), "t0", mean(t_j), "T", T, "Omega", 2*pi);
  GCT_refine = sqrt(det(GCT_semi) / det(GCT_coh));
  GCT_refine_ref = refinement(1, N);
  assert(abs(GCT_refine - GCT_refine_ref) < 0.005*GCT_refine_ref);
endfor
Compute the metric ellipse bounding box, given a metric and max_mismatch.
assert(metricBoundingBox([6,3;3,2], 0.77), [1.4329;2.4819], 1e-3)
Return the ellipse centers and mismatches for a template bank cross section.
Centers of metric ellipses in the cross section.
Mismatches of metric ellipses in the cross section.
Template bank to find cross section of.
Maximum mismatch of templates.
Parameter-space metric.
NAs indicate dimensions to cross section (only 2 allowed), otherwise give values of cross section in other dimensions
[xcross,mucross] = metricEllipseCrossSections([1;2;3], 0.5, [6,4,4;4,4,2;4,2,1], [NA;2;NA]); assert(xcross, [1;3], 1e-3); assert(mucross, 0.5, 1e-3);
return a metric iso-mismatch ellipsoid for given metric gij and mismatch, using ’Nsteps points per surface direction. The function can generate both 2D or 3D ellipses, depending on the input dimension of gij. using either method=1: Cholesky, or method=2: Eigenvectors
The output in the 3D case is a meshgrid, which can be plotted using mesh(), surface(), ...
The output in the 2D case lies in the x-y plane, zz is returned as zeros
this function agrees with and supercedes the older calcMetric2DEllipse() and plotMetricEllipse()
[xx, yy, zz] = metricEllipsoid([4,1;1,1], 0.25, 4); assert(xx, [0.25, -0.25, 0, 0.25], 1e-3); assert(yy, [0.0, 0.5, -0.5, 0.0], 1e-3); assert(zz, [0.0, 0.0, 0.0, 0.0], 1e-3);
Estimate the number of templates in a lattice template bank.
Number of templates
latticeType of lattice; see LatticeNormalizedThickness()
metricParameter-space metric
max_mismatchMaximum metric mismatch
param_volParameter space volume
assert(round(NumberOfLatticeBankTemplates("lattice", "Ans", "metric", [5,1;1,1], "max_mismatch", 0.2, "param_vol", 100)), 385, 1e-3)
project out metric dimension c from the input n x n metric g_ij, by projecting onto the subspace orthogonal to the coordinate-axis of c, namely gOut_ij = g_ij - ( g_ic * g_jc / g_cc )
Returns a ’projected’ n x n metric, where the projected-out dimension c is replaced
by zeros, consistent with the behavior of XLALProjectMetric()
assert(projectMetric(hadamard(4)), -[0,0,0,0;0,2,0,2;0,0,2,2;0,2,2,0], 1e-3)
function to compute the ’projection’ of a given symmetric metric g_ij’ onto the s-subspace defined by coordinates sSpace = [s1,s2,...], which is a vector of coordinate-indices
If we denotes the indices of the projection-subspace as s and the remaining coordinates as k, such that for an n-dimensional space, writing vn = {1,2,...n}, we have k = vn \ sSpace, then the projection operation is defined as
gProj_{ss’} = g_{ss’} - gkInv^{kk’} g_{ks} g_{k’s’}
where gkInv is the inverse matrix of g_{kk’}, ie the inverse of g restricted to the k-subspace excluding coordinates ’s’
projectMetric(), we only return the projected metric of the subspace, ie gProj_{ss’}
rand("seed", 2); tmp = rand(4,4); gij = (tmp + tmp'); ## 4x4 pos-definite matrix, det~3.6, cond~9
tol = 10*eps;
sSpace1 = [2,3,4]; g1_old = projectMetric ( gij, 1 )(sSpace1,sSpace1); g1_new = projectMetric2Subspace(gij, sSpace1); assert ( g1_old, g1_new, tol );
sSpace2 = [1,3,4]; g2_old = projectMetric ( gij, 2 )(sSpace2,sSpace2); g2_new = projectMetric2Subspace(gij, sSpace2); assert ( g2_old, g2_new, tol );
sSpace12 = [3,4]; g12_old = projectMetric( projectMetric ( gij, 2 ), 1)(sSpace12,sSpace12); g12_new = projectMetric2Subspace(gij, sSpace12); assert ( g12_old, g12_new, tol );
returns metric in coordinates [a, ...] = [alpha, delta, ... ] at a given sky-position alpha0,delta0, for the given input ’supersky’ metric in coordinates [n, ...] = [ nx,ny,nz, ...].
the supersky-coordinates n = [nx,ny,nz] must be the first 3 coordinates of theinput metric g_nn and the output metric has a = [alpha,delta] as the first 2 coordinates
## lalapps_FstatMetric_v2 -o gnn.dat --Alpha=1 --Delta=1 --coords="n3x_equ,n3y_equ,n3z_equ,freq,f1dot,f2dot" ## lalapps_FstatMetric_v2 -o gaa.dat --Alpha=1 --Delta=1 --coords="alpha,delta,freq,f1dot,f2dot" gnn = [ 9.7162064407348633e+04, 1.6162401439666748e+05, 6.9920271533966064e+04, 2.0355045456878051e+07, -1.4588751710937500e+09, 6.5922495973127800e+14; 1.6162401439666748e+05, 2.6886818181991577e+05, 1.1631187004089355e+05, 3.3860346089623548e+07, -1.2671848879843750e+09, 1.0971813972709620e+15; 6.9920271533966064e+04, 1.1631187004089355e+05, 5.0317088542461395e+04, 1.4648181998421121e+07, -8.1788653728125000e+08, 4.7469871192193475e+14; 2.0355045456878051e+07, 3.3860346089623548e+07, 1.4648181998421121e+07, 4.2643423299322696e+09, -2.4811145795203839e+11, 1.3819371887744971e+17; -1.4588751710937500e+09, -1.2671848879843750e+09, -8.1788653728125000e+08, -2.4811145795203839e+11, 9.2138764319991376e+16, -1.3400518435962927e+19; 6.5922495973127800e+14, 1.0971813972709620e+15, 4.7469871192193475e+14, 1.3819371887744971e+17, -1.3400518435962927e+19, 5.3316716910947309e+24; ]; gaa = [ 9.4392684805173118e+01, -3.7432745970430642e+03, 6.3033986158817098e+05, 2.9335076680322605e+08, 2.0580635047683145e+13; -3.7432745970430642e+03, 1.5028899244227595e+05, -2.5315559717512231e+07, 1.1186296727757726e+09, -8.2011995357922125e+14; 6.3033986158817098e+05, -2.5315559717512231e+07, 4.2643423299322696e+09, -2.4811145795203839e+11, 1.3819371887744971e+17; 2.9335076680322605e+08, 1.1186296727757726e+09, -2.4811145795203839e+11, 9.2138764319991376e+16, -1.3400518435962927e+19; 2.0580635047683145e+13, -8.2011995357922125e+14, 1.3819371887744971e+17, -1.3400518435962927e+19, 5.3316716910947309e+24; ]; alpha=1; delta=1; gaa2 = projectSuperskyMetric2Sky ( gnn, alpha, delta ); tol = -1e-8; ## relative tolerance passes as <0 ! assert ( gaa, gaa2, tol );
Return the mismatch probability density of "relative effective mismatch" mt = m/meff of a random-template bank with given false-dismissal probability
can handle vector input in ’mis’
assert(RandMismatchPDF(0.5, 3, 0.01), 0.95877, 1e-3)
Return the normalized thickness of an ’dim’-dimensional random-template grid with given falseDismissal probability
can handle vector input in dim
assert(RandNormalizedThickness(1, 0.05) > 0)
assert(RandNormalizedThickness(2, 0.05) > 0)
assert(RandNormalizedThickness(3, 0.05) > 0)
assert(RandNormalizedThickness(4, 0.05) > 0)
assert(RandNormalizedThickness(5, 0.05) > 0)
Return the thickness of an dim-dimensional random-template grid with given falseDismissal probability
can handle vector input in dim
assert(RandThickness(1, 0.05) > 0)
assert(RandThickness(2, 0.05) > 0)
assert(RandThickness(3, 0.05) > 0)
assert(RandThickness(4, 0.05) > 0)
assert(RandThickness(5, 0.05) > 0)
Manage cache of computed supersky metrics
location of cache directory
one of
installInstall the precomputed cache from the OctApps repository
clearClear the cache
copytorepoCopy the current cache to the OctApps repository
cache_dir = SuperskyMetricsCache();
Next: cw-optimal-search-setup, Previous: cw-line-veto, Up: Directory Index [Contents][Index]