From 597df20c009bf91e40d9762e7891908ea2d245d3 Mon Sep 17 00:00:00 2001
From: Aaron Viets <aaron.viets@ligo.org>
Date: Tue, 10 Aug 2021 09:42:11 -0700
Subject: [PATCH] FIRtools.py:  added option for faster ASDs

---
 gstlal-calibration/python/FIRtools.py | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/gstlal-calibration/python/FIRtools.py b/gstlal-calibration/python/FIRtools.py
index 8a462861b1..346f1276df 100644
--- a/gstlal-calibration/python/FIRtools.py
+++ b/gstlal-calibration/python/FIRtools.py
@@ -1379,7 +1379,7 @@ def freqresp(filt, delay_samples = 0, samples_per_lobe = 8, return_double = Fals
 #
 
 
-def asd(data, sr, fft_samples, fft_spacing, window = 'blackman', freq_res = 1.0):
+def asd(data, sr, fft_samples, fft_spacing, window = 'blackman', freq_res = 1.0, fast = True):
 
 	# How many FFTs will we take?
 	if len(data) < fft_samples:
@@ -1405,9 +1405,14 @@ def asd(data, sr, fft_samples, fft_spacing, window = 'blackman', freq_res = 1.0)
 		win = Blackman(fft_samples)
 
 	# Compute the ASD
-	asd = abs(rfft(win * data[:fft_samples]))
-	for i in range(1, num_ffts):
-		asd += abs(rfft(win * data[i * fft_spacing : i * fft_spacing + fft_samples]))
+	if fast:
+		asd = abs(np.fft.rfft(win * data[:fft_samples]))
+		for i in range(1, num_ffts):
+			asd += abs(np.fft.rfft(win * data[i * fft_spacing : i * fft_spacing + fft_samples]))
+	else:
+		asd = abs(rfft(win * data[:fft_samples]))
+		for i in range(1, num_ffts):
+			asd += abs(rfft(win * data[i * fft_spacing : i * fft_spacing + fft_samples]))
 	asd /= num_ffts * sr * np.sqrt((float(fft_samples) / sr))
 
 	return np.float64(asd)
-- 
GitLab