# ESBO-ETC A modular exposure time calculator for the ESBO telescope. ## Introduction This repository contains the source code of the ESBO-ETC, a highly modular exposure time calculator. ESBO-ETC aims on modelling the physical aspect of light coming from a target through optical components (e.g. atmosphere, mirrors, lenses, ...) on the detector. The set up of this so called optical pipeline can be individually defined using a configuration file. Additionally, the thermal emission of optical components, the obstruction of components as well as different PSFs including pointing jitter can be considered. Finally, ESBO-ETC allows the computation of either the necessary exposure time for a desired SNR, the SNR for a given exposure time or, in case of a BlackBodyTarget, the sensitivity as the minimum apparent magnitude for a given exposure time and SNR. All computations support a batch-mode, allowing to compute multiple scenarios at once. ### Features ESBO-ETC offers many different optical components and features which will be explained in the following. #### Targets `` Currently ESBO-ETC supports the following two different types of targets. A configuration can contain only one target which has to be contained in the container ``. Each target consists of the basic tag `` and possible other target-type specific attributes. * **`type`:** The type of the target. Currently, only `BlackBodyTarget` and `FileTarget` are supported. * **`size`:** The size of the target which can be either `point` or `extended`. In case of a point-source, a PSF will be used to determine the irradiance of each pixel. In case of a extended source, a uniform PSF is assumed, ignoring the tags ``, ``, and some instrument specific tags. ##### BlackBodyTarget `` Model a target as a black body of a given temperature and magnitude. * **`temp`:** The temperature of the black body. * **`temp_unit` _optional_:** The unit of the black body's temperature. This has to be one of [`K`, `Celsius`]. The default is `K`. * **`mag`:** The apparent magnitude of the black body in magnitudes. * **`mag_unit` _optional_:** The unit of the black body's magnitude. This has to be `mag`. The default is `mag`. * **`band`:** The band used for fitting the black body's flux density to Vega's flux density. This has to be one of [`U`, `B`, `V`, `R`, `I`, `J`, `H`, `K`, `L`, `M`, `N`]. ##### FileTarget `` Create a target from a file containing the spectral flux densities of the target. * **`val`:** The path to the file containing the spectral flux densities. For details on the required structure see section _Reading spectral quantities from files_. #### Optical Components `` Each optical component consists of the basic tag `` and the attribute `type` and possible other component-specific attributes. * **`type`:** The type of the optical component. This can be one of the following types. ##### Atmosphere ` This components models the behaviour of an atmosphere which has a spectral transmittance and a spectral emission. * **`transmittance`:** The path to the file containing the spectral transmittance coefficients. For details on the required structure see section _Reading spectral quantities from files_. * **`emission` _optional_:** The path to the file containing the spectral radiance of the emission. For details on the required structure see section _Reading spectral quantities from files_. #### Detectors #### Other Features ##### Reading spectral quantities from files The format of a file has to be either structured text (e.g. CSV) or astropy ECSV and will be automatically detected. In case of structured text, the units of the columns have to be defined in the column header within square brackets (e.g. "wavelength [nm]"). The file must contain two columns with units: wavelength and the spectral quantity. ## Running ESBO-ETC ## Configuration File ## Extending ESBO-ETC