function [LoadingRateArray, StandardErrorArray, ConfidenceIntervalArray] = scanForSidebandEnhancement(ovenObj, MOTobj, CBBeamName, SBBeamName, SBDetuningArray, SBPowerArray)
    
    Beams                         = MOTobj.Beams;
    CoolingBeam                   = Beams{cellfun(@(x) strcmpi(x.Alias, CBBeamName), Beams)};                                       
    SidebandBeam                  = Beams{cellfun(@(x) strcmpi(x.Alias, SBBeamName), Beams)};                                       
    NumberOfPointsForFirstParam   = length(SBDetuningArray);
    NumberOfPointsForSecondParam  = length(SBPowerArray);
    LoadingRateArray              = zeros(NumberOfPointsForFirstParam, NumberOfPointsForSecondParam);
    StandardErrorArray            = zeros(NumberOfPointsForFirstParam, NumberOfPointsForSecondParam);
    ConfidenceIntervalArray       = zeros(NumberOfPointsForFirstParam, NumberOfPointsForSecondParam, 2);
    
    for i=1:NumberOfPointsForFirstParam
        eval(sprintf('SidebandBeam.%s = %d;', 'Detuning', SBDetuningArray(i)));
        for j=1:NumberOfPointsForSecondParam
            eval(sprintf('SidebandBeam.%s = %d;', 'Power', SBPowerArray(j)));
            eval(sprintf('CoolingBeam.%s = %d;',  'Power', MOTobj.TotalPower - SBPowerArray(j)));
            [LoadingRateArray(i,j), StandardErrorArray(i,j), ConfidenceIntervalArray(i,j,:)] = MOTobj.runSimulation(ovenObj);
        end
    end
    
    if MOTobj.DoSave
        LoadingRate  = struct;
        LoadingRate.Values = LoadingRateArray;
        LoadingRate.Errors = StandardErrorArray;
        LoadingRate.CI     = ConfidenceIntervalArray;
        MOTobj.Results = LoadingRate;
        SaveFolder   = [MOTobj.SaveDirectory filesep 'Results'];
        Filename     = ['TwoParameterScan_' datestr(now,'yyyymmdd_HHMM')];
        eval([sprintf('%s_Object', Filename) ' = MOTobj;']);
        mkdir(SaveFolder);
        save([SaveFolder filesep Filename], sprintf('%s_Object', Filename));
    end
end