function visualizeWavefunction(psi,Params,Transf)
    
    set(0,'defaulttextInterpreter','latex')
    set(groot, 'defaultAxesTickLabelInterpreter','latex'); set(groot, 'defaultLegendInterpreter','latex');
    
    format long
    x = Transf.x*Params.l0*1e6; 
    y = Transf.y*Params.l0*1e6; 
    z = Transf.z*Params.l0*1e6; 
       
    dx = x(2)-x(1); dy = y(2)-y(1); dz = z(2)-z(1);
    
    if isgpuarray(psi)
        psi    = gather(psi);
    end

    %Plotting    
    height = 10;
    width = 45;
    figure(1)
    clf
    set(gcf, 'Units', 'centimeters')
    set(gcf, 'Position', [2 8 width height])
    set(gcf, 'PaperPositionMode', 'auto')

    subplot(1,3,1)
    n = abs(psi).^2;
    nxz = squeeze(trapz(n*dy,2));
    nyz = squeeze(trapz(n*dx,1));
    nxy = squeeze(trapz(n*dz,3));
    
    plotxz = pcolor(x,z,nxz');
    set(plotxz, 'EdgeColor', 'none');
    xlabel(gca, {'$x$ ($\mu$m)'}, ...
            'Interpreter', 'latex', ...
            'FontName', 'Times New Roman', ...
            'FontSize', 14, ...
            'FontWeight', 'normal', ...
            'FontAngle', 'normal')
    ylabel(gca, {'$z$ ($\mu$m)'}, ...
            'Interpreter', 'latex', ...
            'FontName', 'Times New Roman', ...
            'FontSize', 14, ...
            'FontWeight', 'normal', ...
            'FontAngle', 'normal')
    title(gca, {'$|\Psi_{xz}|^2$'}, ...
            'Interpreter', 'latex', ...
            'FontName', 'Times New Roman', ...
            'FontSize', 14, ...
            'FontWeight', 'normal', ...
            'FontAngle', 'normal')
       
    subplot(1,3,2)
    plotyz = pcolor(y,z,nyz');
    set(plotyz, 'EdgeColor', 'none');
    xlabel(gca, {'$y$ ($\mu$m)'}, ...
            'Interpreter', 'latex', ...
            'FontName', 'Times New Roman', ...
            'FontSize', 14, ...
            'FontWeight', 'normal', ...
            'FontAngle', 'normal')
    ylabel(gca, {'$z$ ($\mu$m)'}, ...
            'Interpreter', 'latex', ...
            'FontName', 'Times New Roman', ...
            'FontSize', 14, ...
            'FontWeight', 'normal', ...
            'FontAngle', 'normal')
    title(gca, {'$|\Psi_{yz}|^2$'}, ...
            'Interpreter', 'latex', ...
            'FontName', 'Times New Roman', ...
            'FontSize', 14, ...
            'FontWeight', 'normal', ...
            'FontAngle', 'normal')

    subplot(1,3,3)
    plotxy = pcolor(x,y,nxy');
    set(plotxy, 'EdgeColor', 'none');
    xlabel(gca, {'$x$ ($\mu$m)'}, ...
            'Interpreter', 'latex', ...
            'FontName', 'Times New Roman', ...
            'FontSize', 14, ...
            'FontWeight', 'normal', ...
            'FontAngle', 'normal')
    ylabel(gca, {'$y$ ($\mu$m)'}, ...
            'Interpreter', 'latex', ...
            'FontName', 'Times New Roman', ...
            'FontSize', 14, ...
            'FontWeight', 'normal', ...
            'FontAngle', 'normal')
    title(gca, {'$|\Psi_{xy}|^2$'}, ...
            'Interpreter', 'latex', ...
            'FontName', 'Times New Roman', ...
            'FontSize', 14, ...
            'FontWeight', 'normal', ...
            'FontAngle', 'normal')
end