diff --git a/tofu/geom/_GG.pyx b/tofu/geom/_GG.pyx index 7143e078f..e2ce85d88 100644 --- a/tofu/geom/_GG.pyx +++ b/tofu/geom/_GG.pyx @@ -2985,16 +2985,16 @@ def LOS_calc_signal(func, double[:,::1] ray_orig, double[:,::1] ray_vdir, res, val_2d = func(pts, t=t, vect=-usbis, **fkwdargs) else: val_2d = func(pts, t=t, **fkwdargs) + # Integrate if n_imode == 0: # "sum" integration mode # .. integrating function .......................................... - for ii in range(nlos): - if ii > 0: - sig[:,ii] = np.sum(val_2d[:, ind_arr[ii-1]:ind_arr[ii]], - axis=-1) * reseff_arr[ii] - else: - sig[:,0] = np.sum(val_2d[:, 0:ind_arr[0]], - axis=-1) * reseff_arr[0] + reseffs = np.copy(np.asarray(reseff_arr)) + indices = np.copy(np.asarray(ind_arr).astype(int)) + sig = np.asfortranarray(np.add.reduceat(val_2d, + np.r_[0, indices], + axis=-1) + * reseffs[None, :]) # Cleaning up... free(coeff_ptr[0]) free(coeff_ptr)