Source code for sicor.Tools.rsf_functions

import numpy as np

__author__ = "Niklas Bohn, Andre Hollstein"


[docs] def gauss_rspf(wvl_center, wvl_sol_irr, sigma=None, fwhm=None): """ Returns normalized Gaussian response function with respect to given wavelenght grid. You should either give FWHM or sigma, an ValueError is raised if not """ if sigma is None and fwhm is not None: # convert FWHM to sigma sigma = fwhm / (2.0 * np.sqrt(2.0 * np.log(2.0))) elif sigma is not None and fwhm is None: pass # sigma given else: raise ValueError("Give either sigma or FWHM, not both or none!") rspf = np.exp(-0.5 * ((wvl_center - wvl_sol_irr) / sigma) ** 2) / (sigma * np.sqrt(2.0 * np.pi)) rspf /= np.trapz(x=wvl_sol_irr, y=rspf) # assure normalization (numeric errors) return rspf
[docs] def box_rspf(wvl_center, wvl_sol_irr, width): """ Returns normalized box response function with respect to given wavelenght grid. """ rspf = np.zeros(len(wvl_sol_irr)) rspf[np.logical_and(wvl_sol_irr < (wvl_center + width), wvl_sol_irr > (wvl_center - width))] = 1.0 rspf /= np.trapz(x=wvl_sol_irr, y=rspf) return rspf