Skip to content

Commit

Permalink
Added tracking of where range check came from, made check failure opt…
Browse files Browse the repository at this point in the history
…ionally emit warning
  • Loading branch information
Tobychev committed May 14, 2024
1 parent 57f8c72 commit 28db948
Showing 1 changed file with 31 additions and 5 deletions.
36 changes: 31 additions & 5 deletions src/ctapipe/tools/make_irf.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
"""Tool to generate IRFs"""

import operator

import astropy.units as u
Expand Down Expand Up @@ -42,6 +43,11 @@ class IrfTool(Tool):
help="Produce IRF related benchmarks",
).tag(config=True)

range_check_error = Bool(
True,
help="Raise error if asking for IRFs outside range where cut optimisation is valid",
).tag(config=True)

cuts_file = traits.Path(
default_value=None, directory_ok=False, help="Path to optimized cuts input file"
).tag(config=True)
Expand Down Expand Up @@ -184,7 +190,11 @@ def setup(self):

self.reco_energy_bins = self.e_bins.reco_energy_bins()
self.true_energy_bins = self.e_bins.true_energy_bins()
check_bins_in_range(self.reco_energy_bins, self.opt_result.valid_energy)
check_bins_in_range(
self.reco_energy_bins,
self.opt_result.valid_energy,
raise_error=self.range_check_error,
)

if not self.full_enclosure and self.opt_result.theta_cuts is None:
raise ToolConfigurationError(
Expand Down Expand Up @@ -230,11 +240,13 @@ def setup(self):
self.bkg.reco_energy_bins,
self.opt_result.valid_energy,
"background energy reco",
raise_error=self.range_check_error,
)
check_bins_in_range(
self.bkg.fov_offset_bins,
self.opt_result.valid_offset,
"background fov offset",
raise_error=self.range_check_error,
)

self.edisp = EnergyMigrationMakerBase.from_name(
Expand All @@ -244,28 +256,42 @@ def setup(self):
self.edisp.true_energy_bins,
self.opt_result.valid_energy,
"Edisp energy true",
raise_error=self.range_check_error,
)
check_bins_in_range(
self.edisp.fov_offset_bins, self.opt_result.valid_offset, "Edisp fov offset"
self.edisp.fov_offset_bins,
self.opt_result.valid_offset,
"Edisp fov offset",
raise_error=self.range_check_error,
)
self.aeff = EffectiveAreaMakerBase.from_name(
self.aeff_parameterization, parent=self
)
check_bins_in_range(
self.aeff.true_energy_bins, self.opt_result.valid_energy, "Aeff energy true"
self.aeff.true_energy_bins,
self.opt_result.valid_energy,
"Aeff energy true",
raise_error=self.range_check_error,
)
check_bins_in_range(
self.aeff.fov_offset_bins, self.opt_result.valid_offset, "Aeff fov offset"
self.aeff.fov_offset_bins,
self.opt_result.valid_offset,
"Aeff fov offset",
raise_error=self.range_check_error,
)
if self.full_enclosure:
self.psf = PsfMakerBase.from_name(self.psf_parameterization, parent=self)
check_bins_in_range(
self.psf.true_energy_bins,
self.opt_result.valid_energy,
"PSF energy true",
raise_error=self.range_check_error,
)
check_bins_in_range(
self.psf.fov_offset_bins, self.opt_result.valid_offset, "PSF fov offset"
self.psf.fov_offset_bins,
self.opt_result.valid_offset,
"PSF fov offset",
raise_error=self.range_check_error,
)

if self.do_benchmarks:
Expand Down

0 comments on commit 28db948

Please sign in to comment.