to_surf = TheSystem.LDE.NumberOfSurfaces-1;
Ex=0;Ey=1;phaX=0;phaY=90;waveNumber=2;Hx=0;Hy=0;Px=0;Py=1;
raytrace = TheSystem.Tools.OpenBatchRayTrace();
[success,errCode,exro,exio,eyro,eyio,ezro,ezio,intensity]=raytrace.SingleRayNormPol(ZOSAPI.Tools.RayTrace.RaysType.Real,Ex,Ey,phaX,phaY, to_surf, waveNumber,Hx,Hy,Px,Py,0,0,0,0,0,0);
- Open the batch ray trace tool
- Create polarized real raytracing in which a single ray with normalized pupil coordinates will be added
waveNumber=2;Hx=0;Hy=0.5;Px=0;Py=0.5;
raytrace = TheSystem.Tools.OpenBatchRayTrace();
[success,X,Y,Z,L,M,N]=raytrace.GetDirectFieldCoordinates(2,ZOSAPI.Tools.RayTrace.RaysType.Real,Hx,Hy,Px,Py)
- Open the batch ray trace tool
- Get direct field coordinates with input normalized field and pupil coordinates
raytrace = TheSystem.Tools.OpenBatchRayTrace();
max_rays = 4;
pwav = 0;
for a = 1:TheSystem.SystemData.Wavelengths.NumberOfWavelengths
if TheSystem.SystemData.Wavelengths.GetWavelength(a).IsPrimary == 1; pwav = a; end;
end
to_surf = TheSystem.LDE.NumberOfSurfaces;
normUnPolData = raytrace.CreateNormUnpol(11,ZOSAPI.Tools.RayTrace.RaysType.Real, (to_surf)-1);
hx=0;
px=0;
hy_ary = [0, 0.707, 1];
fprintf('%6s %8s %8s %8s %8s %12s %12s%12s %12s%12s %12s\n','ray#','hx','hy','px','py','X','Y','L','M','l2','m2')
for i=1: length(hy_ary)
normUnPolData.ClearData();
for j=0:max_rays
py(j+1)=-1+j/2;
normUnPolData.AddRay(pwav, hx, hy_ary(i), px, py(j+1), ZOSAPI. Tools.RayTrace.OPDMode.None);
end
raytrace.RunAndWaitForCompletion();
normUnPolData.StartReadingResults();
[success, rayNumber, errCode, vigCode, x, y, ~, L, M, ~, l2, m2, ~, ~, ~] = normUnPolData.ReadNextResult();
while success
if ((errCode == 0 ) && (vigCode == 0)) fprintf('%6d %8.2f %8.2f %8.2f %8.2f %12.6f %12.6f%12.6f %12.6f%12.6f %12.6f\n',rayNumber,hx, hy_ary(i), px,py(rayNumber),x,y,L,M,l2,m2)
end
[success, rayNumber, errCode, vigCode, x, y, ~, L, M, ~,l2, m2, ~, ~, ~] = normUnPolData.ReadNextResult();
end
end
In the above code:
- Open the batch ray trace tool
- Get primary wave number and number of surfaces
- Create unpolarized real raytracing in which rays with normalized pupil coordinates will be added
- Use for loop to add a batch of rays from different fields
- Run the tool until it finished
- Read results ray by ray if data is valid
- Print data in command window