Commit 3d26c9cef82c94d366e31af090a6a59661eceece
1 parent
333841e5
Accept models with Galactic coordinates in comlixmap
Showing
1 changed file
with
30 additions
and
8 deletions
modules/comscripts/comlixmap.py
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | # ========================================================================== | 2 | # ========================================================================== |
| 3 | # Create SRCLIX TS map | 3 | # Create SRCLIX TS map |
| 4 | # | 4 | # |
| 5 | -# Copyright (C) 2021 Juergen Knoedlseder | 5 | +# Copyright (C) 2021-2022 Juergen Knoedlseder |
| 6 | # | 6 | # |
| 7 | # This program is free software: you can redistribute it and/or modify | 7 | # This program is free software: you can redistribute it and/or modify |
| 8 | # it under the terms of the GNU General Public License as published by | 8 | # it under the terms of the GNU General Public License as published by |
| @@ -176,11 +176,13 @@ class comlixmap(ctools.cslikelihood): | @@ -176,11 +176,13 @@ class comlixmap(ctools.cslikelihood): | ||
| 176 | nfree = 0 | 176 | nfree = 0 |
| 177 | 177 | ||
| 178 | # Compute number of free model parameters for all test sources, | 178 | # Compute number of free model parameters for all test sources, |
| 179 | - # exclusing 'RA' and 'DEC' | 179 | + # excluding 'RA', 'DEC', 'GLON' and 'GLAT' |
| 180 | for srcname in self._srcnames: | 180 | for srcname in self._srcnames: |
| 181 | source = self.obs().models()[srcname] | 181 | source = self.obs().models()[srcname] |
| 182 | for par in source: | 182 | for par in source: |
| 183 | - if par.name() != 'RA' and par.name() != 'DEC' and par.is_free(): | 183 | + if par.name() != 'RA' and par.name() != 'DEC' and \ |
| 184 | + par.name() != 'GLON' and par.name() != 'GLAT' and \ | ||
| 185 | + par.is_free(): | ||
| 184 | self._map_names.append(par.name()) | 186 | self._map_names.append(par.name()) |
| 185 | nfree += 1 | 187 | nfree += 1 |
| 186 | 188 | ||
| @@ -213,10 +215,21 @@ class comlixmap(ctools.cslikelihood): | @@ -213,10 +215,21 @@ class comlixmap(ctools.cslikelihood): | ||
| 213 | 215 | ||
| 214 | # Set and fix position of test source | 216 | # Set and fix position of test source |
| 215 | source = self.obs().models()[srcname] | 217 | source = self.obs().models()[srcname] |
| 216 | - source['RA'].value(dir.ra_deg()) | ||
| 217 | - source['DEC'].value(dir.dec_deg()) | ||
| 218 | - source['RA'].fix() | ||
| 219 | - source['DEC'].fix() | 218 | + if source.has_par('RA') and source.has_par('DEC'): |
| 219 | + source['RA'].value(dir.ra_deg()) | ||
| 220 | + source['DEC'].value(dir.dec_deg()) | ||
| 221 | + source['RA'].fix() | ||
| 222 | + source['DEC'].fix() | ||
| 223 | + elif source.has_par('GLON') and source.has_par('GLAT'): | ||
| 224 | + source['GLON'].value(dir.l_deg()) | ||
| 225 | + source['GLAT'].value(dir.b_deg()) | ||
| 226 | + source['GLON'].fix() | ||
| 227 | + source['GLAT'].fix() | ||
| 228 | + else: | ||
| 229 | + msg = ('Source "'+srcname+'" has neither RA/DEC nor GLON/GLAT ' | ||
| 230 | + 'parameters. Please specify a source than can be ' | ||
| 231 | + 'positioned.') | ||
| 232 | + raise RuntimeError(msg) | ||
| 220 | 233 | ||
| 221 | # Remove response cache for test source | 234 | # Remove response cache for test source |
| 222 | self.obs().remove_response_cache(srcname) | 235 | self.obs().remove_response_cache(srcname) |
| @@ -341,9 +354,16 @@ class comlixmap(ctools.cslikelihood): | @@ -341,9 +354,16 @@ class comlixmap(ctools.cslikelihood): | ||
| 341 | # Log header | 354 | # Log header |
| 342 | self._log_header1(gammalib.NORMAL, 'Generate TS map') | 355 | self._log_header1(gammalib.NORMAL, 'Generate TS map') |
| 343 | 356 | ||
| 357 | + # Get a copy of the initial models | ||
| 358 | + models = self.obs().models().copy() | ||
| 359 | + | ||
| 344 | # Loop over grid positions | 360 | # Loop over grid positions |
| 345 | for ipix in range(self._maps[0].npix()): | 361 | for ipix in range(self._maps[0].npix()): |
| 346 | 362 | ||
| 363 | + # Set initial models so that each pixel starts from the same | ||
| 364 | + # initial model | ||
| 365 | + self.obs().models(models) | ||
| 366 | + | ||
| 347 | # Get sky direction of sky map pixel | 367 | # Get sky direction of sky map pixel |
| 348 | dir = self._maps[0].inx2dir(ipix) | 368 | dir = self._maps[0].inx2dir(ipix) |
| 349 | 369 | ||
| @@ -364,7 +384,9 @@ class comlixmap(ctools.cslikelihood): | @@ -364,7 +384,9 @@ class comlixmap(ctools.cslikelihood): | ||
| 364 | for srcname in self._srcnames: | 384 | for srcname in self._srcnames: |
| 365 | source = self.obs().models()[srcname] | 385 | source = self.obs().models()[srcname] |
| 366 | for par in source: | 386 | for par in source: |
| 367 | - if par.name() != 'RA' and par.name() != 'DEC' and par.is_free(): | 387 | + if par.name() != 'RA' and par.name() != 'DEC' and \ |
| 388 | + par.name() != 'GLON' and par.name() != 'GLAT' and \ | ||
| 389 | + par.is_free(): | ||
| 368 | self._maps[ipar][ipix] = par.value() | 390 | self._maps[ipar][ipix] = par.value() |
| 369 | ipar += 1 | 391 | ipar += 1 |
| 370 | 392 |