function plotLive(psi, Params, Transf, Observ, SimulationMode, varargin)
    set(0,'defaulttextInterpreter','latex')
    set(groot, 'defaultAxesTickLabelInterpreter','latex'); set(groot, 'defaultLegendInterpreter','latex');
    
    format long

    % Check if AdditionalParams is provided
    if nargin >= 6
        AdditionalParams = varargin{1}; % Get AdditionalParams from varargin
    else
        AdditionalParams = struct(); % Default to an empty struct if not provided
    end

    % Axes scaling and coordinates in micrometers
    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);
    
    % Compute probability density |psi|^2
    n = abs(psi).^2;
    
    switch SimulationMode
	    case 'ImaginaryTimeEvolution'
            %Plotting    
            fig = figure(1); 
            fig.WindowState = 'maximized';
            clf
            % set(gcf,'Position', [100, 100, 1600, 900])
            t = tiledlayout(2, 3, 'TileSpacing', 'compact', 'Padding', 'compact'); % 2x3 grid
        
            nexttile;
            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');
            cbar1 = colorbar;
            cbar1.Label.Interpreter = 'latex';
            % cbar1.Ticks = []; % Disable the ticks
            colormap(gca, Helper.Colormaps.plasma())
            xlabel('$x$ ($\mu$m)', 'Interpreter', 'latex', 'FontSize', 14)
            ylabel('$z$ ($\mu$m)', 'Interpreter', 'latex', 'FontSize', 14)
            title('$|\Psi(x,z)|^2$', 'Interpreter', 'latex', 'FontSize', 14) 
        
            nexttile;
            plotyz = pcolor(y,z,nyz');
            set(plotyz, 'EdgeColor', 'none');
            cbar1 = colorbar;
            cbar1.Label.Interpreter = 'latex';
            % cbar1.Ticks = []; % Disable the ticks
            colormap(gca, Helper.Colormaps.plasma())
            xlabel('$y$ ($\mu$m)', 'Interpreter', 'latex', 'FontSize', 14)
            ylabel('$z$ ($\mu$m)', 'Interpreter', 'latex', 'FontSize', 14)
            title('$|\Psi(y,z)|^2$', 'Interpreter', 'latex', 'FontSize', 14) 
        
            nexttile;
            plotxy = pcolor(x,y,nxy');
            set(plotxy, 'EdgeColor', 'none');
            cbar1 = colorbar;
            cbar1.Label.Interpreter = 'latex';
            % cbar1.Ticks = []; % Disable the ticks
            colormap(gca, Helper.Colormaps.plasma())
            xlabel('$x$ ($\mu$m)', 'Interpreter', 'latex', 'FontSize', 14)
            ylabel('$y$ ($\mu$m)', 'Interpreter', 'latex', 'FontSize', 14)
            title('$|\Psi(x,y)|^2$', 'Interpreter', 'latex', 'FontSize', 14) 
        
            nexttile;
            plot(-log10(Observ.residual),'-b')
            ylabel('$-\mathrm{log}_{10}(r)$', 'FontSize', 14); xlabel('Time steps', 'FontSize', 14);
            title('Residual', 'FontSize', 14);
            grid on
            
            nexttile;
            plot(Observ.EVec,'-b')
            ylabel('$E_{tot}$', 'FontSize', 14); xlabel('Time steps', 'FontSize', 14);
            title('Total Energy', 'FontSize', 14);
            grid on
        
            nexttile;
            plot(Observ.mucVec,'-b')
            ylabel('$\mu$', 'FontSize', 14); xlabel('Time steps', 'FontSize', 14);
            title('Chemical Potential', 'FontSize', 14);
            grid on

        case 'EnergyMinimization'
            %Plotting    
            fig = figure(1); 
            fig.WindowState = 'maximized';
            clf
            % set(gcf,'Position', [100, 100, 1600, 900])
            t = tiledlayout(2, 3, 'TileSpacing', 'compact', 'Padding', 'compact'); % 2x3 grid
        
            nexttile;
            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');
            cbar1 = colorbar;
            cbar1.Label.Interpreter = 'latex';
            % cbar1.Ticks = []; % Disable the ticks
            colormap(gca, Helper.Colormaps.plasma())
            xlabel('$x$ ($\mu$m)', 'Interpreter', 'latex', 'FontSize', 14)
            ylabel('$z$ ($\mu$m)', 'Interpreter', 'latex', 'FontSize', 14)
            title('$|\Psi(x,z)|^2$', 'Interpreter', 'latex', 'FontSize', 14) 
        
            nexttile;
            plotyz = pcolor(y,z,nyz');
            set(plotyz, 'EdgeColor', 'none');
            cbar1 = colorbar;
            cbar1.Label.Interpreter = 'latex';
            % cbar1.Ticks = []; % Disable the ticks
            colormap(gca, Helper.Colormaps.plasma())
            xlabel('$y$ ($\mu$m)', 'Interpreter', 'latex', 'FontSize', 14)
            ylabel('$z$ ($\mu$m)', 'Interpreter', 'latex', 'FontSize', 14)
            title('$|\Psi(y,z)|^2$', 'Interpreter', 'latex', 'FontSize', 14) 
        
            nexttile;
            plotxy = pcolor(x,y,nxy');
            set(plotxy, 'EdgeColor', 'none');
            cbar1 = colorbar;
            cbar1.Label.Interpreter = 'latex';
            % cbar1.Ticks = []; % Disable the ticks
            colormap(gca, Helper.Colormaps.plasma())
            xlabel('$x$ ($\mu$m)', 'Interpreter', 'latex', 'FontSize', 14)
            ylabel('$y$ ($\mu$m)', 'Interpreter', 'latex', 'FontSize', 14)
            title('$|\Psi(x,y)|^2$', 'Interpreter', 'latex', 'FontSize', 14) 
        
            nexttile;
            switch AdditionalParams.GradientDescentMethod
                case 'HeavyBall'
                    plot(-log10(Observ.residual),'-b')
                    ylabel('$-\mathrm{log}_{10}(r)$', 'FontSize', 14); xlabel('Time steps', 'FontSize', 14);
                    title('Residual', 'FontSize', 14);
                case 'NonLinearCGD'
                    plot(Observ.theta,'-b')
                    ylabel('$\theta_{opt}$', 'FontSize', 14); xlabel('Steps', 'FontSize', 14);
                    title('Optimal angle', 'FontSize', 14);
                otherwise
                    warning('Energy minimization method not specified - cannot choose between plotting residuals or optimal angles.')
            end
            grid on
            
            nexttile;
            plot(Observ.EVec,'-b')
            ylabel('$E_{tot}$', 'FontSize', 14); xlabel('Steps', 'FontSize', 14);
            title('Total Energy', 'FontSize', 14);
            grid on
        
            nexttile;
            plot(Observ.mucVec,'-b')
            ylabel('$\mu$', 'FontSize', 14); xlabel('Steps', 'FontSize', 14);
            title('Chemical Potential', 'FontSize', 14);
            grid on
        
        case 'RealTimeEvolution'

            %Plotting    
            fig = figure(1); 
            fig.WindowState = 'maximized';
            clf
            % set(gcf,'Position', [100, 100, 1600, 900])
            t = tiledlayout(2, 3, 'TileSpacing', 'compact', 'Padding', 'compact'); % 2x3 grid
        
            nexttile;
            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');
            cbar1 = colorbar;
            cbar1.Label.Interpreter = 'latex';
            % cbar1.Ticks = []; % Disable the ticks
            colormap(gca, Helper.Colormaps.plasma())
            xlabel('$x$ ($\mu$m)', 'Interpreter', 'latex', 'FontSize', 14)
            ylabel('$z$ ($\mu$m)', 'Interpreter', 'latex', 'FontSize', 14)
            title('$|\Psi(x,z)|^2$', 'Interpreter', 'latex', 'FontSize', 14) 
        
            nexttile;
            plotyz = pcolor(y,z,nyz');
            set(plotyz, 'EdgeColor', 'none');
            cbar1 = colorbar;
            cbar1.Label.Interpreter = 'latex';
            % cbar1.Ticks = []; % Disable the ticks
            colormap(gca, Helper.Colormaps.plasma())
            xlabel('$y$ ($\mu$m)', 'Interpreter', 'latex', 'FontSize', 14)
            ylabel('$z$ ($\mu$m)', 'Interpreter', 'latex', 'FontSize', 14)
            title('$|\Psi(y,z)|^2$', 'Interpreter', 'latex', 'FontSize', 14) 
        
            nexttile;
            plotxy = pcolor(x,y,nxy');
            set(plotxy, 'EdgeColor', 'none');
            cbar1 = colorbar;
            cbar1.Label.Interpreter = 'latex';
            % cbar1.Ticks = []; % Disable the ticks
            colormap(gca, Helper.Colormaps.plasma())
            xlabel('$x$ ($\mu$m)', 'Interpreter', 'latex', 'FontSize', 14)
            ylabel('$y$ ($\mu$m)', 'Interpreter', 'latex', 'FontSize', 14)
            title('$|\Psi(x,y)|^2$', 'Interpreter', 'latex', 'FontSize', 14) 
        
            nexttile;
            plot(Observ.tVecPlot,Observ.NormVec,'-b')
            ylabel('$N$', 'FontSize', 14); xlabel('$t$ [$m$s]', 'FontSize', 14);
            title('Normalization', 'FontSize', 14);
            grid on
            
            nexttile;
            plot(Observ.tVecPlot,1-2*Observ.PCVec/pi,'-b')
            ylabel('$C$', 'FontSize', 14); xlabel('$t$ [$m$s]', 'FontSize', 14);
            title('Coherence', 'FontSize', 14);
            grid on
        
            nexttile;
            plot(Observ.tVecPlot,Observ.EVec,'-b')
            ylabel('$E_{tot}$', 'FontSize', 14); xlabel('$t$ [$m$s]', 'FontSize', 14);
            title('Energy', 'FontSize', 14);
            grid on
    end