From b0d7bcf16044248fd9bbb4e404b395161ae8f2f3 Mon Sep 17 00:00:00 2001
From: Gregory Ashton <gregory.ashton@ligo.org>
Date: Sat, 13 May 2017 13:22:22 +0200
Subject: [PATCH] Exposes SSBprec option for ComputeFstat and grid searches

---
 pyfstat/core.py                | 16 ++++++++++++----
 pyfstat/grid_based_searches.py |  9 +++++----
 2 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/pyfstat/core.py b/pyfstat/core.py
index 6ec7eb7..d2ff3c7 100755
--- a/pyfstat/core.py
+++ b/pyfstat/core.py
@@ -198,7 +198,7 @@ class ComputeFstat(object):
                  maxStartTime=None, binary=False, transient=True, BSGL=False,
                  detectors=None, minCoverFreq=None, maxCoverFreq=None,
                  earth_ephem=None, sun_ephem=None, injectSources=None,
-                 injectSqrtSX=None, assumeSqrtSX=None):
+                 injectSqrtSX=None, assumeSqrtSX=None, SSBprec=None):
         """
         Parameters
         ----------
@@ -235,6 +235,9 @@ class ComputeFstat(object):
             Don't estimate noise-floors but assume (stationary) per-IFO
             sqrt{SX} (if single value: use for all IFOs). If signal only,
             set sqrtSX=1
+        SSBprec: int
+            Flag to set the SSB calculation: 0=Newtonian, 1=relativistic,
+            2=relativisitic optimised, 3=DMoff, 4=NO_SPIN
 
         """
 
@@ -325,7 +328,11 @@ class ComputeFstat(object):
 
         FstatOAs = lalpulsar.FstatOptionalArgs()
         FstatOAs.randSeed = lalpulsar.FstatOptionalArgsDefaults.randSeed
-        FstatOAs.SSBprec = lalpulsar.FstatOptionalArgsDefaults.SSBprec
+        if self.SSBprec:
+            logging.info('Using SSBprec={}'.format(self.SSBprec))
+            FstatOAs.SSBprec = self.SSBprec
+        else:
+            FstatOAs.SSBprec = lalpulsar.FstatOptionalArgsDefaults.SSBprec
         FstatOAs.Dterms = lalpulsar.FstatOptionalArgsDefaults.Dterms
         FstatOAs.runningMedianWindow = lalpulsar.FstatOptionalArgsDefaults.runningMedianWindow
         FstatOAs.FstatMethod = lalpulsar.FstatOptionalArgsDefaults.FstatMethod
@@ -629,7 +636,7 @@ class SemiCoherentSearch(BaseSearchClass, ComputeFstat):
                  binary=False, BSGL=False, minStartTime=None,
                  maxStartTime=None, minCoverFreq=None, maxCoverFreq=None,
                  detectors=None, earth_ephem=None, sun_ephem=None,
-                 injectSources=None, assumeSqrtSX=None):
+                 injectSources=None, assumeSqrtSX=None, SSBprec=None):
         """
         Parameters
         ----------
@@ -756,7 +763,8 @@ class SemiCoherentGlitchSearch(BaseSearchClass, ComputeFstat):
     def __init__(self, label, outdir, tref, minStartTime, maxStartTime,
                  nglitch=0, sftfilepath=None, theta0_idx=0, BSGL=False,
                  minCoverFreq=None, maxCoverFreq=None, assumeSqrtSX=None,
-                 detectors=None, earth_ephem=None, sun_ephem=None):
+                 detectors=None, earth_ephem=None, sun_ephem=None,
+                 SSBprec=None):
         """
         Parameters
         ----------
diff --git a/pyfstat/grid_based_searches.py b/pyfstat/grid_based_searches.py
index cced059..91ee79e 100644
--- a/pyfstat/grid_based_searches.py
+++ b/pyfstat/grid_based_searches.py
@@ -21,7 +21,7 @@ class GridSearch(BaseSearchClass):
                  Alphas=[0], Deltas=[0], tref=None, minStartTime=None,
                  maxStartTime=None, nsegs=1, BSGL=False, minCoverFreq=None,
                  maxCoverFreq=None, earth_ephem=None, sun_ephem=None,
-                 detectors=None):
+                 detectors=None, SSBprec=None):
         """
         Parameters
         ----------
@@ -57,7 +57,7 @@ class GridSearch(BaseSearchClass):
                 earth_ephem=self.earth_ephem, sun_ephem=self.sun_ephem,
                 detectors=self.detectors, transient=False,
                 minStartTime=self.minStartTime, maxStartTime=self.maxStartTime,
-                BSGL=self.BSGL)
+                BSGL=self.BSGL, SSBprec=self.SSBprec)
             self.search.get_det_stat = self.search.run_computefstatistic_single_point
         else:
             self.search = SemiCoherentSearch(
@@ -336,7 +336,8 @@ class FrequencySlidingWindow(GridSearch):
                  Alpha, Delta, tref, minStartTime=None,
                  maxStartTime=None, window_size=10*86400, window_delta=86400,
                  BSGL=False, minCoverFreq=None, maxCoverFreq=None,
-                 earth_ephem=None, sun_ephem=None, detectors=None):
+                 earth_ephem=None, sun_ephem=None, detectors=None,
+                 SSBprec=None):
         """
         Parameters
         ----------
@@ -376,7 +377,7 @@ class FrequencySlidingWindow(GridSearch):
             earth_ephem=self.earth_ephem, sun_ephem=self.sun_ephem,
             detectors=self.detectors, transient=True,
             minStartTime=self.minStartTime, maxStartTime=self.maxStartTime,
-            BSGL=self.BSGL)
+            BSGL=self.BSGL, SSBprec=self.SSBprec)
         self.search.get_det_stat = (
             self.search.run_computefstatistic_single_point)
 
-- 
GitLab