From eaed5d9711d59a426cb647bb2229ec86a6640d40 Mon Sep 17 00:00:00 2001 From: Jürgen Knödlseder Date: Thu, 1 Jul 2021 12:04:30 +0200 Subject: [PATCH] Add optional Phibar normalisation to comobsback and change default BGDLIX parameters --- doc/source/users/reference_manual/comlixfit.rst | 16 ++++++++++------ doc/source/users/reference_manual/comlixmap.rst | 16 ++++++++++------ doc/source/users/reference_manual/comobsback.rst | 34 +++++++++++++++++++++++++++------- modules/comscripts/comlixfit.par | 6 +++--- modules/comscripts/comlixmap.par | 6 +++--- modules/comscripts/comobsback.par | 7 ++++--- modules/comscripts/comobsback.py | 35 +++++++++++++++++++++++++++++++++++ test/test_comobsback.py | 4 ++-- 8 files changed, 94 insertions(+), 30 deletions(-) diff --git a/doc/source/users/reference_manual/comlixfit.rst b/doc/source/users/reference_manual/comlixfit.rst index 2bfce54..98b13a2 100755 --- a/doc/source/users/reference_manual/comlixfit.rst +++ b/doc/source/users/reference_manual/comlixfit.rst @@ -44,16 +44,20 @@ General parameters Fix spatial parameters for TS computation? ``(nrunav = 3) [integer]`` - Number of bins used for running average. + Number of Chi/Psi bins used for running average (relevant for ``BGDLIXA`` + method). -``(navgr = 3) [integer]`` - Number of bins used for averaging. +``(navgr = 9) [integer]`` + Number of Chi/Psi bins used for averaging (relevant for ``BGDLIXA`` and + ``BGDLIXE`` methods). -``(nincl = 13) [integer]`` - Number of Phibar layers to include. +``(nincl = 5) [integer]`` + Number of Phibar layers to include (relevant for ``BGDLIXA`` and ``BGDLIXE`` + methods). ``(nexcl = 0) [integer]`` - Number of Phibar layers to exclude. + Number of Phibar layers to exclude (relevant for ``BGDLIXA`` and ``BGDLIXE`` + methods). Standard parameters diff --git a/doc/source/users/reference_manual/comlixmap.rst b/doc/source/users/reference_manual/comlixmap.rst index 7d2c5bc..25c380d 100755 --- a/doc/source/users/reference_manual/comlixmap.rst +++ b/doc/source/users/reference_manual/comlixmap.rst @@ -58,16 +58,20 @@ General parameters Second coordinate of image center in degrees (DEC or galactic b). ``(nrunav = 3) [integer]`` - Number of bins used for running average. + Number of Chi/Psi bins used for running average (relevant for ``BGDLIXA`` + method). -``(navgr = 3) [integer]`` - Number of bins used for averaging. +``(navgr = 9) [integer]`` + Number of Chi/Psi bins used for averaging (relevant for ``BGDLIXA`` and + ``BGDLIXE`` methods). -``(nincl = 13) [integer]`` - Number of Phibar layers to include. +``(nincl = 5) [integer]`` + Number of Phibar layers to include (relevant for ``BGDLIXA`` and ``BGDLIXE`` + methods). ``(nexcl = 0) [integer]`` - Number of Phibar layers to exclude. + Number of Phibar layers to exclude (relevant for ``BGDLIXA`` and ``BGDLIXE`` + methods). Standard parameters diff --git a/doc/source/users/reference_manual/comobsback.rst b/doc/source/users/reference_manual/comobsback.rst index d430016..1f12fa6 100755 --- a/doc/source/users/reference_manual/comobsback.rst +++ b/doc/source/users/reference_manual/comobsback.rst @@ -9,7 +9,18 @@ Generate background model for COMPTEL observations. Synopsis -------- -This script generates a background model for COMPTEL observations. +This script generates a background model for COMPTEL observations using either +the PHINOR, the BGDLIXA or the BGDLIXE algorithm. The resulting background +model will be written into a DRB FITS file that will be stored in the folder +defined by the ``outfolder`` parameter. The DRB FITS file name will be derived +from the DRE filename with the background modelling method and parameters +attached. An additional suffix, specified by the ``suffix`` parameter, may be +added to the DRB filename. + +The script also generates an output observation definition XML file, specified +by the ``outobs`` parameter, that contains a link to the generated background +model. This output observation definition XML file should be used for further +data analysis. General parameters @@ -36,16 +47,25 @@ General parameters Method for background computation. ``(nrunav = 3) [integer]`` - Number of bins used for running average. + Number of Chi/Psi bins used for running average (relevant for ``BGDLIXA`` + method). -``(navgr = 3) [integer]`` - Number of bins used for averaging. +``(navgr = 9) [integer]`` + Number of Chi/Psi bins used for averaging (relevant for ``BGDLIXA`` and + ``BGDLIXE`` methods). -``(nincl = 13) [integer]`` - Number of Phibar layers to include. +``(nincl = 5) [integer]`` + Number of Phibar layers to include (relevant for ``BGDLIXA`` and ``BGDLIXE`` + methods). ``(nexcl = 0) [integer]`` - Number of Phibar layers to exclude. + Number of Phibar layers to exclude (relevant for ``BGDLIXA`` and ``BGDLIXE`` + methods). + +``(phinor = yes) [boolean]`` + Specifies whether the Phibar distribution of the resulting background model + should be normalised to the number of observed events minus the number of + source events. Standard parameters diff --git a/modules/comscripts/comlixfit.par b/modules/comscripts/comlixfit.par index b8a63ea..3b183a7 100644 --- a/modules/comscripts/comlixfit.par +++ b/modules/comscripts/comlixfit.par @@ -30,9 +30,9 @@ max_iter, i, h, 50,1,1000, "Maximum number of SRCLIX iterations" like_accuracy, r, h, 0.05,1.0e-30,1.0, "Absolute accuracy of maximum likelihood value" fix_spat_for_ts, b, h, no,,, "Fix spatial parameters for TS computation?" bkgmethod, s, a, BGDLIXE,PHINOR|BGDLIXA|BGDLIXE,, "Method for background computation" -nrunav, i, h, 3,,, "Number of bins used for running average" -navgr, i, h, 3,,, "Number of bins used for averaging" -nincl, i, h, 13,,, "Number of Phibar layers to include" +nrunav, i, h, 3,,, "Number of Chi/Psi bins used for running average" +navgr, i, h, 9,,, "Number of Chi/Psi bins used for averaging" +nincl, i, h, 5,,, "Number of Phibar layers to include" nexcl, i, h, 0,,, "Number of Phibar layers to exclude" # diff --git a/modules/comscripts/comlixmap.par b/modules/comscripts/comlixmap.par index a649d2e..9a70261 100644 --- a/modules/comscripts/comlixmap.par +++ b/modules/comscripts/comlixmap.par @@ -39,9 +39,9 @@ max_iter, i, h, 50,1,1000, "Maximum number of SRCLIX iterations" like_accuracy, r, h, 0.05,1.0e-30,1.0, "Absolute accuracy of maximum likelihood value" fix_spat, b, h, yes,,, "Fix spatial parameters for TS map computation?" bkgmethod, s, a, BGDLIXE,PHINOR|BGDLIXA|BGDLIXE,, "Method for background computation" -nrunav, i, h, 3,,, "Number of bins used for running average" -navgr, i, h, 3,,, "Number of bins used for averaging" -nincl, i, h, 13,,, "Number of Phibar layers to include" +nrunav, i, h, 3,,, "Number of Chi/Psi bins used for running average" +navgr, i, h, 9,,, "Number of Chi/Psi bins used for averaging" +nincl, i, h, 5,,, "Number of Phibar layers to include" nexcl, i, h, 0,,, "Number of Phibar layers to exclude" # diff --git a/modules/comscripts/comobsback.par b/modules/comscripts/comobsback.par index e3b3786..e701b39 100644 --- a/modules/comscripts/comobsback.par +++ b/modules/comscripts/comobsback.par @@ -26,10 +26,11 @@ outobs, f, a, obs_back.xml,,, "Output observation definition file" # Script parameters #================== bkgmethod, s, a, BGDLIXE,PHINOR|BGDLIXA|BGDLIXE,, "Method for background computation" -nrunav, i, h, 3,,, "Number of bins used for running average" -navgr, i, h, 3,,, "Number of bins used for averaging" -nincl, i, h, 13,,, "Number of Phibar layers to include" +nrunav, i, h, 3,,, "Number of Chi/Psi bins used for running average" +navgr, i, h, 9,,, "Number of Chi/Psi bins used for averaging" +nincl, i, h, 5,,, "Number of Phibar layers to include" nexcl, i, h, 0,,, "Number of Phibar layers to exclude" +phinor, b, h, yes,,, "Normalise Phibar distribution?" # # Standard parameters diff --git a/modules/comscripts/comobsback.py b/modules/comscripts/comobsback.py index f9974cb..db9a7bd 100755 --- a/modules/comscripts/comobsback.py +++ b/modules/comscripts/comobsback.py @@ -60,6 +60,7 @@ class comobsback(ctools.csobservation): self['suffix'].string() self['outfolder'].string() self['bkgmethod'].string() + self['phinor'].boolean() # Check parameters for BGDLIXA if self['bkgmethod'].string() == 'BGDLIXA': @@ -481,6 +482,23 @@ class comobsback(ctools.csobservation): sum_num += scrat[ipix] drb[ipixu] *= sum_num + # Optionally Phibar normalise DRB + if self['phinor'].boolean(): + for i3 in range(nphibar): + sum_dre = 0.0 + sum_drb = 0.0 + sum_drm = 0.0 + for i in range(npix): + ipix = i3*npix + i + sum_dre += dre[ipix] + sum_drb += drb[ipix] + sum_drm += drm[ipix] + if sum_drb > 0.0: + norm = (sum_dre-sum_drm) / sum_drb + for i in range(npix): + ipix = i3*npix + i + drb[ipix] *= norm + # Get statistics sum_dre = 0.0 sum_drm = 0.0 @@ -660,6 +678,23 @@ class comobsback(ctools.csobservation): else: drb[ipix] = 0.0 + # Optionally Phibar normalise DRB + if self['phinor'].boolean(): + for i3 in range(nphibar): + sum_dre = 0.0 + sum_drb = 0.0 + sum_drm = 0.0 + for i in range(npix): + ipix = i3*npix + i + sum_dre += dre[ipix] + sum_drb += drb[ipix] + sum_drm += drm[ipix] + if sum_drb > 0.0: + norm = (sum_dre-sum_drm) / sum_drb + for i in range(npix): + ipix = i3*npix + i + drb[ipix] *= norm + # Get statistics sum_dre = 0.0 sum_drm = 0.0 diff --git a/test/test_comobsback.py b/test/test_comobsback.py index 9a00298..b959b76 100755 --- a/test/test_comobsback.py +++ b/test/test_comobsback.py @@ -150,7 +150,7 @@ class Test(test): bgd.execute() # Check result - self._check_result('comobsback_py2.xml', 'comobsback_py2', 'bgdlixA-nr3-na3-ni13-ne0') + self._check_result('comobsback_py2.xml', 'comobsback_py2', 'bgdlixA-nr3-na9-ni5-ne0') # Test BGDLIXE bgd = comscripts.comobsback() @@ -167,7 +167,7 @@ class Test(test): bgd.execute() # Check result - self._check_result('comobsback_py3.xml', 'comobsback_py3', 'bgdlixE-na3-ni13-ne0') + self._check_result('comobsback_py3.xml', 'comobsback_py3', 'bgdlixE-na9-ni5-ne0') # Return return -- libgit2 0.21.4