code: def ray_shooting(self, theta_x, theta_y, kwargs_lens, k=None):
          
          x = np.zeros_like(theta_x)
          y = np.zeros_like(theta_y)
          alpha_x = theta_x
          alpha_y = theta_y
          i = -1
          for i, idex in enumerate(self._sorted_redshift_index):
              delta_T = self._T_ij_list[i]
              x, y = self._ray_step(x, y, alpha_x, alpha_y, delta_T)
              alpha_x, alpha_y = self._add_deflection(x, y, alpha_x, alpha_y, kwargs_lens, i)
          delta_T = self._T_ij_list[i+1]
          x, y = self._ray_step(x, y, alpha_x, alpha_y, delta_T)
          beta_x, beta_y = self._co_moving2angle_source(x, y)
          return beta_x, beta_y
docs: ray-tracing (backwards light cone)
  
          :param theta_x: angle in x-direction on the image
          :param theta_y: angle in y-direction on the image
          :param kwargs_lens:
          :return: angles in the source plane