Source code for lsst_inaf_agile.lusso2010

import numpy as np


[docs] def get_log_luminosity_2500(log_L_2_keV, alpha=0.952, beta=2.138, scatter=0.40): """ Return the 2500 ang° monochromatic luminosity (in erg/s). It uses Lusso+10 eq. 5 (inverted) Lx = alpha L_opt - beta """ log_L_2_keV = np.atleast_1d(log_L_2_keV) log_L_2500 = (log_L_2_keV + beta) / alpha assert np.allclose(alpha * log_L_2500 - beta, log_L_2_keV) # TODO: implement realistic scatter log_L_2500 += np.random.normal(loc=0, scale=scatter, size=log_L_2_keV.size) return log_L_2500
[docs] def get_log_luminosity_2500_bisector(log_L_2_keV, dispersion=0.37): """Return Lusso+2010 log_L_2500 using the bisector.""" # NOTE: Lusso+2010 eq. (6) log_L_2500 = (log_L_2_keV - 3.508) / 0.760 # Assuming # x = log_L_2500 # y = log_L_2_keV # dy/dx = 0.760 # dx/dy = 1 / 0.760 # Gives # sigma_xy = (sigma_x ** 2 + sigma_y ** 2) ** .5 # sigma_x = sigma_xy / (1 + (dy/dx) ** 2) ** .5 # sigma_y = sigma_xy / (1 + (dx/dy) ** 2) ** .5 sigma = dispersion / (1 + 0.760**2) ** 0.5 scatter = np.random.normal(scale=sigma, size=log_L_2500.size) return log_L_2500 + scatter