How to tolerance for tilts and decenters of a double pass system

This article explains how to do the tolerance analysis for a double pass system. It gives step by step instructions to do it for a singlet.

The system is first setup as double pass system for the purposes of tolerancing the tilts/decenters of elements.

The Tolerance Data Editor is then populated with the user-defined operands (TU**) required for accurately modeling lens tilts and decenters in double pass.

Finally, the system is checked to insure that the double pass system has been adequately modeled to reflect reality.

Authored By Dan Hill


Article Attachments


Due to rays being traced from one surface to the next in a specific order in Sequential mode, modeling a double pass system requires that the optical system be modeled twice; once for each pass. Great care should be taken to ensure the model has been setup correctly, especially for tolerancing.

In a double pass system, the tolerance events are not totally independent. That is, the ray trace results will only be accurate if an element has the exact same physical characteristic in both passes.

To model and tolerance such a configuration, careful placement of coordinate breaks, pickups, and user-defined tolerances are required. This tutorial is designed to cover all the fundamental aspects of this process, using a single lens relay sample.

Double pass design

To begin, open the OpticStudio lens file attached to this article:


Insert a surface before the IMA surface, and change its Material to MIRROR. As is, this file consists of a singlet stock lens (32981) from Edmund Optics. The lens is used at finite conjugates, and the “image” plane is placed 50mm from the vertex of the rear surface of the lens. 

Make a second copy of the lens by highlighting surfaces 1 and 2, and pasting them right before the IMA plane.

Pickup the radii and glass for the return path of the lens. In addition, apply position solves on the thicknesses, so that the return path of the lens overlaps that of the first, and ensuring that the IMA plane is co-located with the OBJ point.

Radii Pickups

\Curvative_solve_on_surface_4    Curvative_solve_on_surface_5

Note that although surface 4 precedes surface 5, it is actually a representation of the back of the lens as we propagate in the return path. Therefore, the curvature pickup solve on surface 4 should point to surface 2. Surface 5 represents the front of the lens in the second pass. Therefore its curvature should be picked up from that of surface 1. The comment column may be useful to distinguish what each surface represents.

Thickness Position Solves

The thickness position solves for surfaces 3, 4, and 5 should be set as follows:

Thickness_solve_on_surface_3    Thickness_solve_on_surface_4


Glass pickup

The glass type of the lens should remain the same in both passes, thus a pickup on the glass type is required.


After the solves have been added, the Lens Data Editor should appear as below:


And, if the system has been setup correctly, the 3D Layout should appear to have only one lens; both lenses should perfectly overlap:


Setting up the design for tolerancing

For tolerancing, we will consider the effects of tilting and decentering the lens. Normally, the built-in element tolerances, such as TEDX, TEDY, TETX, TETY, could be used to automate the perturbations of an element. However, in a double pass system, tolerancing of these effects requires some additional modification to the LDE. The reason for this is OpticStudio has no way of knowing that the lens defined in the second pass is supposed to be the same physical component as the lens defined in the first pass. As a result, coordinate breaks describing the tilts/decenters need to be manually entered into the Lens Data Editor, and the tolerances on the parameters of the coordinate breaks may be performed via user-defined tolerance operands: TUDX, TUDY, TUTX, TUTY, and TUTZ. These operands will be discussed and used in more detail later in the article.

So why is this necessary? Well, given the fact that OpticStudio has no way of knowing that the lenses in each pass define the same physical lens, each element would be treated individually with the built-in element decenter/tilt operands. So, for the purposes of a Sensitivity Analysis, the lens in the first pass may be perturbed, but not mirrored in the return path. Therefore, the rays traced in the return will refract with an un-tilted lens. 

In the Monte Carlo simulation, both lens elements may be tilted by different amounts, or even by different signs. Consequently, the criteria value reported for each Monte Carlo simulation will not be representative of the true, physical perturbation of that element.

To begin, each occurrence of the lens will need to be wrapped with coordinate breaks. The front vertex of the lens will be assumed to be the pivot axis. As such, any tilt must be restored at this location. On the second pass, the pivot should be initialized in the same location. 

To setup the double pass system for tolerancing, we must first insert and arrange the coordinate breaks. These may be setup manually, or the Tilt/Decenter tool may be utilized. For the details in how to tilt and decenter elements, as well as a complete discussion of how coordinate breaks work, please refer to the article, “How to tilt and decenter a Sequential optical component.

Highlight surfaces 1 & 2 and choose the Tilt/Decenter Element Tool in the Toolbar of the Lens Data Editor. The tilt values will remain zero for the time being since we are just using the tool to setup the coordinate breaks for us.


At this point, the Lens Data Editor should look as follows:



and the layout looks the same as before:


Setting up the return path

The coordinate breaks for the first pass have been defined, but now we have to introduce the coordinate breaks to model the tilt/decenter of the lens in the return path. 

The concept is the same, but in the return path, the same exact tilts must be maintained, so some extra pickups are required. The return path may be modeled by performing the following:

  • Add a dummy surface after the mirror. Add a Position solve on the new dummy surface (surface 7) thickness to locate the following surface (which will eventually be a coordinate break) at the location of the very first coordinate break (change the “From Surf:” to 1 and the “Length” to 0).


  • Under the Draw tab of the Surface Properties dialog for surface 7 (the new dummy surface), check the box “Do Not Draw This Surface.”


  • Highlight surfaces 8 and 9 and use the Tilt/Decenter tool with the following settings:


  • Set pickups for the parameters of the first coordinate break (surface 8) to pickup from that of surface 1. 

Parameters_surface_8_1    Parameters_surface_8_2

Parameters_surface_8_3    Parameters_surface_8_4

  • Add a Position solve on the new coordinate break surface 8 so that the following surface is located at the physical back of the lens.


  • Delete surface 12 (the dummy surface) and change the Position solve on surface 11 to locate the IMA surface at the OBJ.


At this point, the Lens Data Editor should look like the one below. Note all of the pickup and position solves required to model a simple double pass system!


The layout, although we have added several surfaces, should appear to be identical to the initial layout. 


How do we know whether or not we have made a mistake in the setup? One quick test is a qualitative measure of how the layout looks as we tilt/decenter the lens by modifying the parameters on the very first coordinate break.

First make sure that the OBJ surface is set as the Global Coordinate Reference:


Now, adjust some of the parameters on the first coordinate break surface. No matter what combination of values is entered, there should only appear to be 1 physical lens in the 3D Layout. If not, then the return path is not properly mapping the initial beam path, and you need to double check your setup!


Note that in addition to the Layout, the Global Vertex option in the Prescription Data Report can also accurately confirm if the global positions of the front and back faces of the lens in both paths are identical.


Using the TU** operands

The five tolerance operands, TUDX, TUDY, TUTX, TUTY, and TUTZ, are used for more general user defined tilts and decenters than that of TEDX, TEDY; etc. The primary difference is that OpticStudio does not automatically insert the required coordinate break surfaces to achieve the specified decenters and tilts in the tolerances. These user defined tolerances will only work on Coordinate Break surfaces.  So, as we have done over the last couple pages, the coordinate breaks must be entered into the Lens Data Editor by the designer.

Just like any other tolerance operand, the TU** operands may be inserted by typing the appropriate name in the Type column of the Tolerance Data Editor. For the purposes of demonstrating the user defined tolerances simply type each of the TU** operands in the TDE. Since we have confirmed that the coordinate breaks have already been properly constructed, we only have to perturb the parameters of the very first coordinate break; all of our pickups and position solves will adjust the rest of the system. So, for each operand, change the “Surf” parameter to 1, the first coordinate break surface. In addition, modify the Min and Max tolerances for each operand to -0.2 and 0.2 respectively.


For the purposes of keeping the current demonstration as simple as possible, and to focus on the operation of the user defined tolerance operands, no additional operands or compensators will be defined. An RMS Spot Size tolerance analysis will be performed, and several Monte Carlo files will be saved so that we can insure the toleranced lens is positioned as we expected.

Run the tolerance analysis (Tolerance...Tolerancing) using the following settings:





Click OK.

Upon doing so, OpticStudio will issue a warning:


This error message is issued to warn you that OpticStudio has detected one or more solves present in the Lens Data Editor. Many solves, such as some curvature solves or ray height solves, are generally not appropriate for tolerancing. For example, if an F Number solve was placed on the Radius of a particular surface, it would act as a compensator during the tolerance analysis, and adjust the radius of curvature for each perturbation so that a particular F Number constraint is met.

Solve like the pickup and position solves are sometimes valid, and in fact necessary for certain systems. The designer should always carefully examine the solves in place and determine the consequence of having a particular solve in place. 

We may ignore this error message, as the solves that we have constructed are critical to an accurate tolerance analysis of the double pass system.

Take a moment to review some of the saved Monte Carlo files, and observe the values OpticStudio has chosen for the tilts and decenters of the lens. No matter what combination of values has been chosen, the lens should not differ between passes:




Was this article helpful?
10 out of 11 found this helpful



Please sign in to leave a comment.