Commit 103607ebd0a046536c80b11707225181d2ac1055

Authored by Jürgen Knödlseder
1 parent a6ddecfd

Ensure only observations matching instrument are used (#2862)

Add tests to csbkgmodel for multi-instrument observations (#2862)
cscripts/csbkgmodel.py
... ... @@ -470,6 +470,15 @@ class csbkgmodel(ctools.csobservation):
470 470 # Write observation into logger
471 471 self._log_observations(gammalib.NORMAL, self.obs(), 'Input observation')
472 472  
  473 + # Remove observations from wrong instruments
  474 + obs = self.obs()
  475 + for i in range(obs.size()-1, -1, -1):
  476 + if obs[i].instrument() != self._instrument:
  477 + obs.remove(i)
  478 +
  479 + # Log observations to be used
  480 + self._log_value(gammalib.NORMAL, 'Obs matching instrument', self.obs().size())
  481 +
473 482 # Write header
474 483 self._log_header1(gammalib.TERSE, 'Generate background models')
475 484  
... ...
test/test_csbkgmodel.py
... ... @@ -359,6 +359,37 @@ class Test(test):
359 359 # Check background model
360 360 self._check_bkg_model('csbkgmodel_py9.xml')
361 361  
  362 + # Check with data from multiple instruments
  363 + new_inst = 'INST2'
  364 + obs_multi_inst = gammalib.GObservations(obs)
  365 + for run in obs_multi_inst:
  366 + run.instrument(new_inst)
  367 + obs_multi_inst.extend(obs)
  368 +
  369 + # Set-up csbkgmodel
  370 + bkgmodel = cscripts.csbkgmodel(obs_multi_inst)
  371 + bkgmodel['instrument'] = new_inst
  372 + bkgmodel['spatial'] = 'GAUSS'
  373 + bkgmodel['gradient'] = True
  374 + bkgmodel['spectral'] = 'NODES'
  375 + bkgmodel['ebinalg'] = 'POW'
  376 + bkgmodel['emin'] = 1.0
  377 + bkgmodel['emax'] = 100.0
  378 + bkgmodel['enumbins'] = 8
  379 + bkgmodel['ebingamma'] = 1.1
  380 + bkgmodel['runwise'] = True
  381 + bkgmodel['rad'] = 2.0
  382 + bkgmodel['chatter'] = 2
  383 + bkgmodel['outmodel'] = 'csbkgmodel_py10.xml'
  384 + bkgmodel['logfile'] = 'csbkgmodel_py10.log'
  385 +
  386 + # Execute csbkgmodel script
  387 + bkgmodel.logFileOpen() # Make sure we get a log file
  388 + bkgmodel.execute()
  389 +
  390 + # Check background model
  391 + self._check_bkg_model('csbkgmodel_py10.xml', nmodels=obs.size())
  392 +
362 393 # Return
363 394 return
364 395  
... ...