diff --git a/matlab/TCV_IMAS/tcv_get_ids_core_sources.m b/matlab/TCV_IMAS/tcv_get_ids_core_sources.m
index 3504b3ac1ef11bf9dfe5ab97cad4d86587c95901..7e3f5331eb5e52182ce320169d28831bc543a441 100644
--- a/matlab/TCV_IMAS/tcv_get_ids_core_sources.m
+++ b/matlab/TCV_IMAS/tcv_get_ids_core_sources.m
@@ -133,97 +133,74 @@ cd_dens       = ec_data.cd_dens.data;
 cd_integrated = ec_data.cd_integrated.data;
 
 p_ec_injected = powers_gdat.ec.data;
-it = iround_os(ec_powers_tgrid,ec_data_tgrid);
-sparse_p_ec_injected = p_ec_injected(it,:); % injected ec power vals corresponding to ec_data_tgrid
+ij = iround_os(ec_powers_tgrid,ec_data_tgrid);
+sparse_p_ec_injected = p_ec_injected(ij,:); % injected ec power vals corresponding to ec_data_tgrid
 n_rho = size(p_dens, 1);
 
 % calculate normalised profiles on ec_data_tgrid grid
-norm_p_dens        = zeros(n_rho,n_active_launchers,nt_ec_data);
-norm_p_integrated  = zeros(n_rho,n_active_launchers,nt_ec_data);
-norm_cd_dens       = zeros(n_rho,n_active_launchers,nt_ec_data);
-norm_cd_integrated = zeros(n_rho,n_active_launchers,nt_ec_data);
-for it = 1:nt_ec_data
-  norm_p_dens_temp        = zeros(n_rho,n_active_launchers);
-  norm_p_integrated_temp  = zeros(n_rho,n_active_launchers);
-  norm_cd_dens_temp       = zeros(n_rho,n_active_launchers);
-  norm_cd_integrated_temp = zeros(n_rho,n_active_launchers);
-  for i_lau = n_active_launchers
-    norm_p_dens_temp(:,i_lau)        = p_dens(:,active_launchers(i_lau),it) ./ sparse_p_ec_injected(it, active_launchers(i_lau));
-    norm_p_integrated_temp(:,i_lau)  = p_integrated(:,active_launchers(i_lau)) ./ sparse_p_ec_injected(it, active_launchers(i_lau));
-    norm_cd_dens_temp(:,i_lau)       = cd_dens(:,active_launchers(i_lau),it) ./ sparse_p_ec_injected(it, i_lau);
-    norm_cd_integrated_temp(:,i_lau) = cd_integrated(:,active_launchers(i_lau),it) ./ sparse_p_ec_injected(it, active_launchers(i_lau));
-  end
-  norm_p_dens(:,:,it)        = norm_p_dens_temp;
-  norm_p_integrated(:,:,it)  = norm_p_integrated_temp;
-  norm_cd_dens(:,:,it)       = norm_cd_dens_temp;
-  norm_cd_integrated(:,:,it) = norm_cd_integrated_temp;
+norm_p_dens        = zeros(n_rho,nb_launchers+1,nt_ec_data);
+norm_p_integrated  = zeros(n_rho,nb_launchers+1,nt_ec_data);
+norm_cd_dens       = zeros(n_rho,nb_launchers+1,nt_ec_data);
+norm_cd_integrated = zeros(n_rho,nb_launchers+1,nt_ec_data);
+for it = 1:nt_ec_data 
+  norm_p_dens(:,:,it)        = p_dens(:,:,it)./sparse_p_ec_injected(it,:);
+  norm_p_integrated(:,:,it)  = p_integrated(:,:,it)./sparse_p_ec_injected(it,:);
+  norm_cd_dens(:,:,it)       = cd_dens(:,:,it)./sparse_p_ec_injected(it,:);
+  norm_cd_integrated(:,:,it) = cd_integrated(:,:,it)./sparse_p_ec_injected(it,:); 
 end
 
 % interpolate normalised p_dens profiles on ec_powers_tgrid 
-interp_norm_p_dens        = zeros(n_rho,n_active_launchers,nt_ec_powers);
-interp_norm_p_integrated  = zeros(n_rho,n_active_launchers,nt_ec_powers);
-interp_norm_cd_dens       = zeros(n_rho,n_active_launchers,nt_ec_powers);
-interp_norm_cd_integrated = zeros(n_rho,n_active_launchers,nt_ec_powers);
-for irho = 1:n_rho
-  for i_lau = 1:n_active_launchers
-    profile_p_dens        = squeeze(norm_p_dens(irho,i_lau,:));
-    profile_p_integrated  = squeeze(norm_p_integrated(irho,i_lau,:));
-    profile_cd_dens       = squeeze(norm_cd_dens(irho,i_lau,:));
-    profile_cd_integrated = squeeze(norm_cd_integrated(irho,i_lau,:));
-    
-    interp_profile_p_dens        = interp1(ec_data_tgrid, profile_p_dens, ec_powers_tgrid);
-    interp_profile_p_integrated  = interp1(ec_data_tgrid, profile_p_integrated, ec_powers_tgrid);
-    interp_profile_cd_dens       = interp1(ec_data_tgrid, profile_cd_dens, ec_powers_tgrid);
-    interp_profile_cd_integrated = interp1(ec_data_tgrid, profile_cd_integrated, ec_powers_tgrid);
-    
-    interp_norm_p_dens(irho,i_lau,:)        = interp_profile_p_dens;
-    interp_norm_p_integrated(irho,i_lau,:)  = interp_profile_p_integrated;
-    interp_norm_cd_dens(irho,i_lau,:)       = interp_profile_cd_dens;
-    interp_norm_cd_integrated(irho,i_lau,:) = interp_profile_cd_integrated;
+interp_norm_p_dens        = zeros(n_rho,nb_launchers+1,nt_ec_powers);
+interp_norm_p_integrated  = zeros(n_rho,nb_launchers+1,nt_ec_powers);
+interp_norm_cd_dens       = zeros(n_rho,nb_launchers+1,nt_ec_powers);
+interp_norm_cd_integrated = zeros(n_rho,nb_launchers+1,nt_ec_powers);
+for i_lau = active_launchers
+  for irho = 1:n_rho  
+    % get power and current density at each rho
+    trace_p_dens        = squeeze(norm_p_dens(irho,i_lau,:));
+    trace_p_integrated  = squeeze(norm_p_integrated(irho,i_lau,:));
+    trace_cd_dens       = squeeze(norm_cd_dens(irho,i_lau,:));
+    trace_cd_integrated = squeeze(norm_cd_integrated(irho,i_lau,:));
+    % interpolate on gdat powers tgrid
+    interp_norm_p_dens(irho,i_lau,:)        = interp1(ec_data_tgrid,trace_p_dens,ec_powers_tgrid);
+    interp_norm_p_integrated(irho,i_lau,:)  = interp1(ec_data_tgrid,trace_p_integrated,ec_powers_tgrid);
+    interp_norm_cd_dens(irho,i_lau,:)       = interp1(ec_data_tgrid,trace_cd_dens,ec_powers_tgrid);
+    interp_norm_cd_integrated(irho,i_lau,:) = interp1(ec_data_tgrid,trace_cd_integrated,ec_powers_tgrid);
   end
 end
 
 % normalised & interpolated profiles * p_ec_injected on ec_powers_tgrid
-interp_p_dens        = zeros(n_rho,n_active_launchers,nt_ec_powers);
-interp_p_integrated  = zeros(n_rho,n_active_launchers,nt_ec_powers);
-interp_cd_dens       = zeros(n_rho,n_active_launchers,nt_ec_powers);
-interp_cd_integrated = zeros(n_rho,n_active_launchers,nt_ec_powers);
-for it = 1:numel(ec_powers_tgrid)
-  unnormalised_p_dens        = zeros(n_rho,n_active_launchers);
-  unnormalised_p_integrated  = zeros(n_rho,n_active_launchers);
-  unnormalised_cd_dens       = zeros(n_rho,n_active_launchers);
-  unnormalised_cd_integrated = zeros(n_rho,n_active_launchers);
-  for i_lau = 1:n_active_launchers
-    unnormalised_p_dens(:,i_lau)        = interp_norm_p_dens(:,i_lau,it).* p_ec_injected(it, active_launchers(i_lau));
-    unnormalised_p_integrated(:,i_lau)  = interp_norm_p_integrated(:,i_lau,it).* p_ec_injected(it, active_launchers(i_lau));
-    unnormalised_cd_dens(:,i_lau)       = interp_norm_cd_dens(:,i_lau,it).* p_ec_injected(it, active_launchers(i_lau));
-    unnormalised_cd_integrated(:,i_lau) = interp_norm_cd_integrated(:,i_lau,it).* p_ec_injected(it, active_launchers(i_lau));
-  end
-  interp_p_dens(:,:,it)        = unnormalised_p_dens;
-  interp_p_integrated(:,:,it)  = unnormalised_p_integrated;
-  interp_cd_dens(:,:,it)       = unnormalised_cd_dens;
-  interp_cd_integrated(:,:,it) = unnormalised_cd_integrated;
+interp_p_dens        = zeros(n_rho,nb_launchers+1,nt_ec_powers);
+interp_p_integrated  = zeros(n_rho,nb_launchers+1,nt_ec_powers);
+interp_cd_dens       = zeros(n_rho,nb_launchers+1,nt_ec_powers);
+interp_cd_integrated = zeros(n_rho,nb_launchers+1,nt_ec_powers);
+for it = 1:nt_ec_powers
+  interp_p_dens(:,:,it)        = interp_norm_p_dens(:,:,it).*p_ec_injected(it,:);
+  interp_p_integrated(:,:,it)  = interp_norm_p_integrated(:,:,it).*p_ec_injected(it,:);
+  interp_cd_dens(:,:,it)       = interp_norm_cd_dens(:,:,it).*p_ec_injected(it,:);
+  interp_cd_integrated(:,:,it) = interp_norm_cd_integrated(:,:,it).*p_ec_injected(it,:);
 end
 
 % fill profiles_1d with interpolated profiles
-for ii = 1:nt_ec_powers
-  
-  for i_lau = active_launchers
-    ids_core_sources.source{last_index+i_lau}.profiles_1d{ii}.time = ec_powers_tgrid(ii); % profiles time 
-    
-    launcher_index = find(active_launchers == i_lau);
+for i_lau = active_launchers
+  for ii = 1:nt_ec_powers  
+    % time
+    ids_core_sources.source{last_index+i_lau}.profiles_1d{ii}.time = ec_powers_tgrid(ii); 
+    % rhotor grid
     ids_core_sources.source{last_index+i_lau}.profiles_1d{ii}.grid.rho_tor_norm = ...
-      ec_data.p_dens.rhotor_norm(1,:);
+      ec_data.p_dens.rhotor_norm(1,:); % constant in time
+    % power density
     ids_core_sources.source{last_index+i_lau}.profiles_1d{ii}.electrons.energy = ...
-      interp_p_dens(:,launcher_index,ii);
+      interp_p_dens(:,i_lau,ii);
+    % integrated power density
     ids_core_sources.source{last_index+i_lau}.profiles_1d{ii}.electrons.power_inside = ...
-      interp_p_integrated(:,launcher_index,ii);
+      interp_p_integrated(:,i_lau,ii);
     % current density (to adapt to <J.B>/B0)
     ids_core_sources.source{last_index+i_lau}.profiles_1d{ii}.j_parallel = ...
-      interp_cd_dens(:,launcher_index,ii);
+      interp_cd_dens(:,i_lau,ii);
     % integrated current density (to adapt to INTEGRAL(<J.B>/B0)*ds_phi)
     ids_core_sources.source{last_index+i_lau}.profiles_1d{ii}.current_parallel_inside = ...
-      interp_cd_integrated(:,launcher_index,ii); 
+      interp_cd_integrated(:,i_lau,ii); 
   end
 end