From 367568e0d31a69b3f6183e612be5a33acd958871 Mon Sep 17 00:00:00 2001 From: LukasK13 Date: Tue, 14 Jul 2020 12:01:08 +0200 Subject: [PATCH] Allow mag and mag / sr for sensitivity --- esbo_etc/classes/sensor/ASensor.py | 13 +++++++------ esbo_etc/classes/sensor/Imager.py | 8 ++++---- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/esbo_etc/classes/sensor/ASensor.py b/esbo_etc/classes/sensor/ASensor.py index 28ccf33..bfcab0e 100644 --- a/esbo_etc/classes/sensor/ASensor.py +++ b/esbo_etc/classes/sensor/ASensor.py @@ -11,6 +11,7 @@ class ASensor: """ Abstract super class for sensor models """ + @abstractmethod def __init__(self, parent: IRadiant): """ @@ -127,8 +128,8 @@ class ASensor: """ pass - @u.quantity_input(exp_time="time", snr=u.dimensionless_unscaled, target_brightness=u.mag) - def getSensitivity(self, exp_time: u.Quantity, snr: u.Quantity, target_brightness: u.Quantity) -> u.mag: + # @u.quantity_input(exp_time="time", snr=u.dimensionless_unscaled, target_brightness=[u.mag, u.mag / u.sr]) + def getSensitivity(self, exp_time: u.Quantity, snr: u.Quantity, target_brightness: u.Quantity) -> [u.mag, u.mag / u.sr]: """ Calculate the sensitivity of the telescope detector combination. @@ -144,15 +145,15 @@ class ASensor: Returns ------- sensitivity: Quantity - The sensitivity as limiting apparent star magnitude in mag. + The sensitivity as limiting apparent star magnitude in mag or mag / sr. """ background, signal, obstruction = self.__calcIncomingRadiation() return self.calcSensitivity(background, signal, obstruction, exp_time, snr, target_brightness) @abstractmethod - @u.quantity_input(exp_time="time", snr=u.dimensionless_unscaled, target_brightness=u.mag) + # @u.quantity_input(exp_time="time", snr=u.dimensionless_unscaled, target_brightness=[u.mag, u.mag / u.sr]) def calcSensitivity(self, background: SpectralQty, signal: SpectralQty, obstruction: float, exp_time: u.Quantity, - snr: u.Quantity, target_brightness: u.Quantity) -> u.mag: + snr: u.Quantity, target_brightness: u.Quantity) -> [u.mag, u.mag / u.sr]: """ Calculate the sensitivity of the telescope detector combination. @@ -174,7 +175,7 @@ class ASensor: Returns ------- sensitivity: Quantity - The sensitivity as limiting apparent star magnitude in mag. + The sensitivity as limiting apparent star magnitude in mag or mag / sr. """ pass diff --git a/esbo_etc/classes/sensor/Imager.py b/esbo_etc/classes/sensor/Imager.py index 48e40fe..1e93edf 100644 --- a/esbo_etc/classes/sensor/Imager.py +++ b/esbo_etc/classes/sensor/Imager.py @@ -174,9 +174,9 @@ class Imager(ASensor): dark_current * exp_time_, "snr_%.2f" % snr_.value) return exp_time - @u.quantity_input(exp_time="time", snr=u.dimensionless_unscaled, target_brightness=u.mag) + # @u.quantity_input(exp_time="time", snr=u.dimensionless_unscaled, target_brightness=[u.mag, u.mag / u.sr]) def calcSensitivity(self, background: SpectralQty, signal: SpectralQty, obstruction: float, exp_time: u.Quantity, - snr: u.Quantity, target_brightness: u.Quantity) -> u.mag: + snr: u.Quantity, target_brightness: u.Quantity) -> [u.mag, u.mag / u.sr]: """ Calculate the sensitivity of the telescope detector combination. @@ -193,7 +193,7 @@ class Imager(ASensor): snr : Quantity The SNR for which the sensitivity time shall be calculated. target_brightness : Quantity - The target brightness in magnitudes. + The target brightness in mag or mag / sr. Returns ------- @@ -217,7 +217,7 @@ class Imager(ASensor): self.__output(signal_current * signal_current_lim_ / signal_current.sum() * exp_time_, background_current * exp_time_, read_noise, dark_current * exp_time_, "snr_%.2f_texp_%.2f" % (snr_.value, exp_time_.value)) - return target_brightness - 2.5 * np.log10(signal_current_lim / signal_current.sum()) * u.mag + return target_brightness - 2.5 * np.log10(signal_current_lim / signal_current.sum()) * target_brightness.unit @u.quantity_input(signal=u.electron, background=u.electron, read_noise=u.electron ** 0.5, dark=u.electron) def __printDetails(self, signal: u.Quantity, background: u.Quantity, read_noise: u.Quantity,