function ret = accelerationDueToPushBeam(this, PositionVector, VelocityVector) % is the distance between the chamber center and the cross point of push beam and z-axis (along the gravity) WaveVectorEndPoint = [0, 1, this.DistanceBetweenPushBeamAnd3DMOTCenter/this.PushBeamDistance]; WaveVectorEndPoint = WaveVectorEndPoint./norm(WaveVectorEndPoint); Origin=[0,0,0]; SaturationIntensity = this.calculateLocalSaturationIntensity(this.PushBeamSaturationIntensity, PositionVector, Origin, WaveVectorEndPoint, this.PushBeamRadius, this.PushBeamWaist); DopplerShift = (VelocityVector * WaveVectorEndPoint(1:3)') * this.PushBeamWaveVector; Detuning = this.PushBeamDetuning - DopplerShift; a_push = (Helper.PhysicsConstants.PlanckConstantReduced * this.PushBeamWaveVector * WaveVectorEndPoint(1:3)/Helper.PhysicsConstants.Dy164Mass).*(this.PushBeamLinewidth * 0.5) .* ... (SaturationIntensity/(1 + SaturationIntensity + (4 * (Detuning./this.PushBeamLinewidth).^2))); if this.SpontaneousEmission a_scatter = this.accelerationDueToSpontaneousEmissionProcess(SaturationIntensity, SaturationIntensity, Detuning, this.PushBeamLinewidth, this.PushBeamWaveVector); else a_scatter = [0,0,0]; end a_total = a_push + a_scatter; ret = a_total(1:3); end