function plotPhaseSpaceWithAccelerationField(OvenObj, MOTObj, MinimumVelocity, MaximumVelocity, NumberOfBins, IncidentAtomDirection, IncidentAtomPosition)
    f_h = Helper.getFigureByTag('Phase Space Plot');
    set(groot,'CurrentFigure',f_h);
    a_h = get(f_h, 'CurrentAxes');
    if ~isempty(get(a_h, 'Children')) 
        clf(f_h);
    end
    f_h.Name  = 'Phase Space Plot';
    f_h.Units = 'pixels';
    
    set(0,'units','pixels');
    screensize = get(0,'ScreenSize');
    f_h.Position = [[screensize(3)/3.5 screensize(4)/3.5] 750 600];
    
    N     = MOTObj.NumberOfAtoms;
    L     = OvenObj.OvenDistance * 2;
    Theta = IncidentAtomDirection;
    z     = IncidentAtomPosition;
    T     = MOTObj.SimulationTime;
    tau   = MOTObj.TimeStep;
    
    [X,Y] = meshgrid(-L/2:L/NumberOfBins:L/2,-MaximumVelocity:2*MaximumVelocity/NumberOfBins:MaximumVelocity);

    a=zeros(NumberOfBins+1,NumberOfBins+1,3);
    
%     MOTObj.restoreDefaults();

    for i=1:length(X)
        for j=1:length(Y)
            a(i,j,:) = MOTObj.calculateTotalAcceleration([X(1,i), 0, z], [Y(j,1)*cos(Theta),0,Y(j,1)*sin(Theta)]);
        end
    end
    for i=1:length(X)
        for j=1:length(Y)
            if isnan(a(i,j,1)) || isnan(a(i,j,2)) || isnan(a(i,j,3))
                a(i,j,1)=0;
                a(i,j,2)=0;
                a(i,j,3)=0;
            end
        end
    end

    pcolor(X',Y',a(:,:,1))
    hold on
    col=colorbar;
    col.Label.String='Aceleration (m/s^2)';
    shading flat

    %-------------------------------------------------------------------------
    
    Y                    = linspace(MinimumVelocity, MaximumVelocity,N);
    DynamicalQuantities  = zeros(length(Y),int64(T/tau),6);
    for i=1:length(Y)
        x =-L/2;
        vx = Y(i)*cos(Theta);
        vz = Y(i)*sin(Theta);
        r  = [x,0,z];
        v  = [vx,0,vz];
        DynamicalQuantities(i,:,:) = MOTObj.solver(r, v);
    end

    hold on
    
    count = 0;
    for i=1:length(Y)
        if DynamicalQuantities(i,end,2) > 0
            plot(DynamicalQuantities(i,:,1),DynamicalQuantities(i,:,4),'w','linewidth',1.3)
            count = count + 1; 
        end
    end

    hold off

    hXLabel = xlabel('Position: Along the x-axis (m)');
    hYLabel = ylabel('Velocity (m/s)');
    hTitle = sgtitle(sprintf("Magnetic gradient = %.3f T/m", MOTObj.MagneticGradient));
    set([hXLabel, hYLabel]  , ...
        'FontSize'   , 14          );
    set( hTitle                    , ...
        'FontSize'   , 18          );

    Helper.bringFiguresWithTagInForeground();
end

