From 39bed653ea2f6f5b69be9264b6df8690c77e634e Mon Sep 17 00:00:00 2001
From: Chad Hanna <chad.hanna@comp-hd-002.gwave.ics.psu.edu>
Date: Sat, 17 Aug 2019 20:47:18 -0400
Subject: [PATCH] inspiral_extrinsics.py, inspiral_lr.py: snr / chisq numerator
 tuning

---
 gstlal-inspiral/python/stats/inspiral_extrinsics.py | 6 ++++--
 gstlal-inspiral/python/stats/inspiral_lr.py         | 2 +-
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/gstlal-inspiral/python/stats/inspiral_extrinsics.py b/gstlal-inspiral/python/stats/inspiral_extrinsics.py
index 50e734336a..0e341ce4db 100644
--- a/gstlal-inspiral/python/stats/inspiral_extrinsics.py
+++ b/gstlal-inspiral/python/stats/inspiral_extrinsics.py
@@ -943,13 +943,15 @@ class NumeratorSNRCHIPDF(rate.BinnedLnPDF):
 		rcoss, drcoss = lnpdf.bins[1].centres()[rcossindices], lnpdf.bins[1].upper()[rcossindices] - lnpdf.bins[1].lower()[rcossindices]
 
 		snr2 = snr**2.
-		snrchi2 = numpy.outer(snr2, rcoss) * df
+		ncparam_per_pf = snr2
+		# takes into account the mean depending on noncentrality parameter
+		snrchi2 = numpy.outer(snr2 * df * (1.0 + numpy.mean(pfs)), rcoss)
 
 		arr = numpy.zeros_like(lnpdf.array)
 		for pf in pfs:
 			if progressbar is not None:
 				progressbar.increment()
-			arr[snrindices, rcossindices] += gstlalstats.ncx2pdf(snrchi2, df, numpy.array([pf * snr2]).T)
+			arr[snrindices, rcossindices] += gstlalstats.ncx2pdf(snrchi2, df, numpy.array([pf * ncparam_per_pf]).T)
 
 		# convert to counts by multiplying by bin volume, and also
 		# multiply by an SNR powr law
diff --git a/gstlal-inspiral/python/stats/inspiral_lr.py b/gstlal-inspiral/python/stats/inspiral_lr.py
index a6ceaa00c7..bcae21ccfc 100644
--- a/gstlal-inspiral/python/stats/inspiral_lr.py
+++ b/gstlal-inspiral/python/stats/inspiral_lr.py
@@ -423,7 +423,7 @@ class LnSignalDensity(LnLRDensity):
 		vtdict = self.horizon_history.functional_integral_dict(window.shift(float(gps)), lambda D: D**3.)
 		return dict((instrument, (vt / t)**(1./3.)) for instrument, vt in vtdict.items())
 
-	def add_signal_model(self, prefactors_range = (0.001, 0.30), df = 200, inv_snr_pow = 4.):
+	def add_signal_model(self, prefactors_range = (0.001, 0.30), df = 150, inv_snr_pow = 4.):
 		# normalize to 10 *mi*llion signals.  this count makes the
 		# density estimation code choose a suitable kernel size
 		inspiral_extrinsics.NumeratorSNRCHIPDF.add_signal_model(self.densities["snr_chi"], 1e12, prefactors_range, df, inv_snr_pow = inv_snr_pow, snr_min = self.snr_min)
-- 
GitLab