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