def _reflectance( power_in, power_out, theta_in, theta_out, index_in, index_out): """Return reflectence corrected for refraction into and out off the mirror substrate. """ trans_in = fresnel_coefficients(theta_in, index_out, index_in)['T'] trans_out = fresnel_coefficients(theta_out, index_in, index_out)['T'] return power_out / (power_in * trans_in * trans_out)
def _fresnel_correction(theta_in, index_lab, index_optic, **kwargs): """Return the Fresnel loss correction factor T_in * T_out for a beam passing through a plate optic with refractive index index_optic from an environment with index index_lab at an incidence angle theta_in radians.""" theta_in_error = kwargs.pop('theta_error', 0.003) fresnel_in = fresnel_coefficients( theta_in, index_lab, index_optic)['T'] fresnel_out = fresnel_coefficients( snells_law(index_lab, index_optic, theta_in), index_optic, index_lab)['T'] fresnel_correction = fresnel_in * fresnel_out fresnel_correction_error = fresnel_correction - ( fresnel_coefficients( theta_in + theta_in_error, index_lab, index_optic)['T'] * fresnel_coefficients( snells_law(index_lab, index_optic, theta_in + theta_in_error), index_lab, index_optic)['T']) return (fresnel_correction, fresnel_correction_error)