Commit 103607ebd0a046536c80b11707225181d2ac1055
1 parent
a6ddecfd
Ensure only observations matching instrument are used (#2862)
Add tests to csbkgmodel for multi-instrument observations (#2862)
Showing
2 changed files
with
40 additions
and
0 deletions
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 | ... | ... |