From 870b192fffd73ab1d3e34ef3aa03e24761564d05 Mon Sep 17 00:00:00 2001
From: Tanner Prestegard <tanner.prestegard@ligo.org>
Date: Wed, 3 Apr 2019 10:28:28 -0500
Subject: [PATCH] Use physical constants from scipy instead of hard-coding

---
 gracedb/events/buildVOEvent.py      | 8 +-------
 gracedb/superevents/buildVOEvent.py | 8 +-------
 requirements.txt                    | 1 +
 3 files changed, 3 insertions(+), 14 deletions(-)

diff --git a/gracedb/events/buildVOEvent.py b/gracedb/events/buildVOEvent.py
index f6dd0c7a9..33511684e 100644
--- a/gracedb/events/buildVOEvent.py
+++ b/gracedb/events/buildVOEvent.py
@@ -7,7 +7,7 @@ buildVOEvent: Creates a complex VOEvent with tables
 See the VOEvent specification for details
 http://www.ivoa.net/Documents/latest/VOEvent.html
 """
-import math
+from scipy.constants import c, G, pi
 
 from VOEventLib.VOEvent import VOEvent, Who, Author, Param, How, What, Group
 from VOEventLib.VOEvent import Citations, EventIVORN
@@ -376,9 +376,6 @@ def buildVOEvent(event, serial_number, voevent_type, request=None, skymap_filena
                 max_hrss = max(hrss_values)
                 # From Min-A Cho: fluence = pi*(c**3)*(freq**2)*(hrss_max**2)*(10**3)/(4*G)
                 # Note that hrss here actually has units of s^(-1/2)
-                pi = math.pi
-                c = 2.99792E10
-                G = 6.674E-8
                 fluence = pi * pow(c,3) * pow(event.central_freq,2) 
                 fluence = fluence * pow(max_hrss,2)
                 fluence = fluence / (4.0*G)
@@ -404,9 +401,6 @@ def buildVOEvent(event, serial_number, voevent_type, request=None, skymap_filena
             # Note that hrss here actually has units of s^(-1/2)
             # XXX obviously need to refactor here.
             try:
-                pi = math.pi
-                c = 2.99792E10
-                G = 6.674E-8
                 fluence = pi * pow(c,3) * pow(event.frequency,2) 
                 fluence = fluence * pow(event.hrss,2)
                 fluence = fluence / (4.0*G)
diff --git a/gracedb/superevents/buildVOEvent.py b/gracedb/superevents/buildVOEvent.py
index 0e794c3be..cd195fe42 100644
--- a/gracedb/superevents/buildVOEvent.py
+++ b/gracedb/superevents/buildVOEvent.py
@@ -7,7 +7,7 @@ buildVOEvent: Creates a complex VOEvent with tables
 See the VOEvent specification for details
 http://www.ivoa.net/Documents/latest/VOEvent.html
 """
-import math
+from scipy.constants import c, G, pi
 
 
 from VOEventLib.VOEvent import VOEvent, Who, Author, Param, How, What, Group
@@ -359,9 +359,6 @@ def construct_voevent_file(superevent, voevent, request=None,
                 max_hrss = max(hrss_values)
                 # From Min-A Cho: fluence = pi*(c**3)*(freq**2)*(hrss_max**2)*(10**3)/(4*G)
                 # Note that hrss here actually has units of s^(-1/2)
-                pi = math.pi
-                c = 2.99792E10
-                G = 6.674E-8
                 fluence = pi * pow(c,3) * pow(event.central_freq,2) 
                 fluence = fluence * pow(max_hrss,2)
                 fluence = fluence / (4.0*G)
@@ -388,9 +385,6 @@ def construct_voevent_file(superevent, voevent, request=None,
             # Note that hrss here actually has units of s^(-1/2)
             # XXX obviously need to refactor here.
             try:
-                pi = math.pi
-                c = 2.99792E10
-                G = 6.674E-8
                 fluence = pi * pow(c,3) * pow(event.frequency,2) 
                 fluence = fluence * pow(event.hrss,2)
                 fluence = fluence / (4.0*G)
diff --git a/requirements.txt b/requirements.txt
index fc1f3f7fb..4ff3f1021 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -27,6 +27,7 @@ packaging==17.1
 phonenumbers==8.8.11
 python-ldap==3.1.0
 python-memcached==1.59
+scipy==1.2.1
 service_identity==17.0.0
 simplejson==3.15.0
 Sphinx==1.7.0
-- 
GitLab