def FourierP(Signal, lum, lumDiv, T, k, M5, massList, mpnk): #Initialize variables Psq = 0 #Bins to scan over binMin = bisect_left(massList, max(k, 150)) binMax = bisect_left(massList, max((1 + mpnk) * k, binMin)) #Loop over signal for b in range(binMin, binMax - 1): if lumDiv: lumT = lum[b] else: lumT = 1 Psq += 1 / (2 * math.pi)**0.5 * Signal[b] / lumT * cmath.exp( 1j * 2 * math.pi * Basic.R(M5, k) * (massList[b]**2 - k**2)**0.5 / T) * (massList[b + 1] - massList[b]) #Return P(T) return (numpy.absolute(Psq))**2