From c7667a4f12791a1f8ef3ce2f6573fd35e384f06e Mon Sep 17 00:00:00 2001
From: Chad Hanna <chad.hanna@comp-hd-002.gwave.ics.psu.edu>
Date: Mon, 10 Jun 2019 15:42:19 -0400
Subject: [PATCH] gstlal_inspiral_add_dt_dphi_snr_ratio_pdfs: normalize the
 pdfs after adding

---
 ...gstlal_inspiral_add_dt_dphi_snr_ratio_pdfs | 32 +++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gstlal-inspiral/bin/gstlal_inspiral_add_dt_dphi_snr_ratio_pdfs b/gstlal-inspiral/bin/gstlal_inspiral_add_dt_dphi_snr_ratio_pdfs
index 66dc508f17..e8e0a85446 100755
--- a/gstlal-inspiral/bin/gstlal_inspiral_add_dt_dphi_snr_ratio_pdfs
+++ b/gstlal-inspiral/bin/gstlal_inspiral_add_dt_dphi_snr_ratio_pdfs
@@ -1,6 +1,38 @@
 #!/usr/bin/python
 import sys
+import numpy
 from gstlal.stats.inspiral_extrinsics import TimePhaseSNR
+
+# Read in and combine all of the input files
 files = sys.argv[1:]
 TPS = TimePhaseSNR.from_hdf5(files[0], files[1:])
+
+# compute the normalization
+time, phase, deff = TimePhaseSNR.tile(NSIDE = 8, NANGLE = 17)
+# This actually doesn't matter it is just needed to map from eff distance to
+# snr, but the TimePhaseSNR code actually undoes this...
+h = {"H1":1., "L1":1., "V1":1.}
+
+combos = TPS.combos + (("H1",),("L1",),("V1",))
+
+norm = dict((frozenset(k), 0.) for k in combos)
+
+def extract_dict(DICT, keys):
+	return dict((k,v) for k,v in DICT.items() if k in keys)
+
+for i in range(len(time["H1"])):
+	t = dict((k, v[i]) for k, v in time.items())
+	p = dict((k, v[i]) for k, v in phase.items())
+	s = dict((k, h[k] / v[i]) for k, v in deff.items())
+
+	for ifos in combos:
+		t2 = extract_dict(t, ifos)
+		p2 = extract_dict(p, ifos)
+		s2 = extract_dict(s, ifos)
+		h2 = extract_dict(h, ifos)
+		norm[frozenset(ifos)] += TPS(t2,p2,s2,h2) * (sum(x**2 for x in s2.values())**.5)**4 / len(time["H1"]) * 1. / (16. * numpy.pi**2)
+
+TPS.norm = norm
+
+# write the result to disk
 TPS.to_hdf5("inspiral_dtdphi_pdf.h5")
-- 
GitLab