def run(self, dataset): """Run ring background maker Parameters ---------- dataset : `~gammapy.datasets.MapDataset` Input map dataset. Returns ------- dataset_on_off : `~gammapy.datasets.MapDatasetOnOff` On off dataset. """ from gammapy.datasets import MapDatasetOnOff maps_off = self.make_maps_off(dataset) maps_off["acceptance"] = dataset.npred_background() mask_safe = dataset.mask_safe.copy() not_has_off_acceptance = maps_off["acceptance_off"].data <= 0 mask_safe.data[not_has_off_acceptance] = 0 dataset_on_off = MapDatasetOnOff.from_map_dataset(dataset=dataset, name=dataset.name, **maps_off) dataset_on_off.mask_safe = mask_safe return dataset_on_off
def run(self, dataset): """Run adaptive ring background maker Parameters ---------- dataset : `~gammapy.datasets.MapDataset` Input map dataset. Returns ------- dataset_on_off : `~gammapy.datasets.MapDatasetOnOff` On off dataset. """ from gammapy.datasets import MapDatasetOnOff cubes = self.make_cubes(dataset) acceptance, acceptance_off, counts_off = self._reduce_cubes( cubes, dataset) mask_safe = dataset.mask_safe.copy() not_has_off_acceptance = acceptance_off.data <= 0 mask_safe.data[not_has_off_acceptance] = 0 dataset_on_off = MapDatasetOnOff.from_map_dataset( dataset=dataset, counts_off=counts_off, acceptance=acceptance, acceptance_off=acceptance_off, name=dataset.name, ) dataset_on_off.mask_safe = mask_safe return dataset_on_off
def test_map_dataset_on_off_fake(geom): rad_axis = MapAxis(nodes=np.linspace(0.0, 1.0, 51), unit="deg", name="rad") energy_true_axis = geom.axes["energy"].copy(name="energy_true") empty_dataset = MapDataset.create(geom, energy_true_axis, rad_axis=rad_axis) empty_dataset = MapDatasetOnOff.from_map_dataset( empty_dataset, acceptance=1, acceptance_off=10.0 ) empty_dataset.acceptance_off.data[0, 50, 50] = 0 background_map = Map.from_geom(geom, data=1) empty_dataset.fake(background_map, random_state=42) assert_allclose(empty_dataset.counts.data[0, 50, 50], 0) assert_allclose(empty_dataset.counts.data.mean(), 0.99445, rtol=1e-3) assert_allclose(empty_dataset.counts_off.data.mean(), 10.00055, rtol=1e-3)