Thanks to @astrosnapper's comment I've looked at section 3.2.1. of Murphy et al. 2007 APOLLO: the Apache Point Observatory Lunar Laser-ranging Operation: Instrument Description and First Detections.
APOLLO uses the Apache Point 3.5 meter telescope for both transmit and receive, a rotating transparent disk with a mirrored spot on it rotates 20 times per second for T/R switching.
- Primary is 3.5 m diameter, f/10 at the Nasmyth ports ref
- 1.1 arcsecond median image quality near zenith
- 90 ps FWHM Nd:YAG laser operating at 20 Hz and 115 mJ/pulse
- photon return rates approaching one photon per pulse
- requisite number of photons for one-millimeter normal (ranging) points collected on few-minute timescales.
- best performance to date approx. 2500 return photons from the Apollo 15 array in a period of 8 minutes. Avg. return rate then about 0.25 photons per shot, peak of 0.6, Approx, half photons arrived in multi-photon bundles, largest containing eight photons.
- APOLLO brings LLR solidly into the multi-photon regime for the first time.
From Things to know about the ARC 3.5m telescope
Uncorrected optical design
GENERAL LENS DATA:
Surfaces : 5
Stop : 1
System Aperture :Entrance Pupil Diameter
Ray aiming : Off
Apodization :Uniform, factor = 0.000000
Eff. Focal Len. : 35238.7
Total Track : 7497.78
Image Space F/# : 10.3534
Working F/# : 10.3519
Obj. Space N.A. : 1.7018e-007
Stop Radius : 1701.8
Parax. Ima. Hgt.: 153.759
Parax. Mag. : 0
Entr. Pup. Dia. : 3403.6
Entr. Pup. Pos. : 0
Exit Pupil Dia. : 839.339
Exit Pupil Pos. : -8689.72
Maximum Field : 0.25
Primary Wave : 0.500000
Lens Units : Millimeters
Angular Mag. : 4.05509
From this I'll round to $f=$ 35,200 mm, f/no. = 10.35 which gives D=3.400 meters confirmed by the stop radius of 1702 mm and entrance pupil diameter of 3404 mm, and a central occlusion of about 1120 mm diameter as estimated from this technical drawing.
Gaussian beam optics
From Wikipedia we can see how to evolve a Gaussian beam from a waist or any other point to any other point forward or backward.
However in this case it's overkill because Section 3.2.1 informs us that the $1/e^2$ diameter at 198 mm in front of the primary focus is 16mm and this is so much larger than the diameter at the spatial filter will be only a half-dozen microns or so (0.5 micron wavelength, f/10 telescope).
Thus we are in the far field and the angular shape of the beam is fixed.
If the 1/e^2 intensity (i.e. 1/e amplitude) radius $\omega$ is 8 mm at 198 mm, then it is 1422 mm at f=35,200 mm, somewhat smaller than the 1702 mm radius of the primary stop.
A diameter scan would look like this when all stops are considered:
and if you were looking at it with another telescope from a few kilometers away:
Now the far field pattern of this is going to be a little messy, and it will change a lot if focus is moved even slightly (location of the gaussian waist relative to the Nasmyth focal point). But we can integrate over the aperture assuming flat phase (in-focus) and see what happens.
It's sort-of like a narrow and a wide Airy pattern (from the primary aperture and secondary occlusion, respectively) interfering with each other, as expected.
We can see that without considering atmospheric effects the beam is a small fraction of an arcsecond wide, so the pattern that reaches the Moon will be dominated by astronomical seeing effects rather than diffraction effects until the day that adaptive optics is used to boost efficiency even further, though it seems that with all these upgrades (I haven't even mentioned the multiphoton-capable focal plane array yet) that may not be necessary.
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-2, 2, 801)
X, Y = np.meshgrid(x, x)
R = np.sqrt(X**2 + Y**2)
Z = np.exp(-(R/1.422)**2)
Z[R<0.56] = 0 # secondary occlusion
Z[R>1.702] = 0 # primary aperture
extent = [X.min(), X.max(), Y.min(), Y.max()]
plt.imshow(Z, vmin=0, vmax=1, cmap='gray', extent=extent)
thetas = 1E-06 * np.linspace(-1.9, 1.9, 201)
lam = 0.532E-06 # doubled Nd:YAG
twopi = 2 * np.pi
imgs = 
for theta in thetas:
phase = twopi * X * theta / lam # avoid complex by symmetry (X=0 in center)
img = np.sqrt(Z) * np.cos(phase) # sqrt for amplitude
arcsecs = (180/np.pi) * thetas * 3600
intensity = np.array([img.sum()**2 for img in imgs]) # sum then square for intensity
intensity /= intensity.max()
plt.subplot(2, 1, 1)
plt.subplot(2, 1, 2)