From 103607ebd0a046536c80b11707225181d2ac1055 Mon Sep 17 00:00:00 2001 From: Jürgen Knödlseder Date: Mon, 15 Jul 2019 17:08:30 +0200 Subject: [PATCH] Ensure only observations matching instrument are used (#2862) Add tests to csbkgmodel for multi-instrument observations (#2862) --- cscripts/csbkgmodel.py | 9 +++++++++ test/test_csbkgmodel.py | 31 +++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 0 deletions(-) diff --git a/cscripts/csbkgmodel.py b/cscripts/csbkgmodel.py index 4b8637e..026b1be 100755 --- a/cscripts/csbkgmodel.py +++ b/cscripts/csbkgmodel.py @@ -470,6 +470,15 @@ class csbkgmodel(ctools.csobservation): # Write observation into logger self._log_observations(gammalib.NORMAL, self.obs(), 'Input observation') + # Remove observations from wrong instruments + obs = self.obs() + for i in range(obs.size()-1, -1, -1): + if obs[i].instrument() != self._instrument: + obs.remove(i) + + # Log observations to be used + self._log_value(gammalib.NORMAL, 'Obs matching instrument', self.obs().size()) + # Write header self._log_header1(gammalib.TERSE, 'Generate background models') diff --git a/test/test_csbkgmodel.py b/test/test_csbkgmodel.py index d5d96bb..1238baf 100755 --- a/test/test_csbkgmodel.py +++ b/test/test_csbkgmodel.py @@ -359,6 +359,37 @@ class Test(test): # Check background model self._check_bkg_model('csbkgmodel_py9.xml') + # Check with data from multiple instruments + new_inst = 'INST2' + obs_multi_inst = gammalib.GObservations(obs) + for run in obs_multi_inst: + run.instrument(new_inst) + obs_multi_inst.extend(obs) + + # Set-up csbkgmodel + bkgmodel = cscripts.csbkgmodel(obs_multi_inst) + bkgmodel['instrument'] = new_inst + bkgmodel['spatial'] = 'GAUSS' + bkgmodel['gradient'] = True + bkgmodel['spectral'] = 'NODES' + bkgmodel['ebinalg'] = 'POW' + bkgmodel['emin'] = 1.0 + bkgmodel['emax'] = 100.0 + bkgmodel['enumbins'] = 8 + bkgmodel['ebingamma'] = 1.1 + bkgmodel['runwise'] = True + bkgmodel['rad'] = 2.0 + bkgmodel['chatter'] = 2 + bkgmodel['outmodel'] = 'csbkgmodel_py10.xml' + bkgmodel['logfile'] = 'csbkgmodel_py10.log' + + # Execute csbkgmodel script + bkgmodel.logFileOpen() # Make sure we get a log file + bkgmodel.execute() + + # Check background model + self._check_bkg_model('csbkgmodel_py10.xml', nmodels=obs.size()) + # Return return -- libgit2 0.21.4