Jan 17, 2022

OpticStudio narcissus analysis macro

Category: Product News
Zemax Blog Article: OpticStudio narcissus analysis macro

This blog post will demonstrate how to analyze the narcissus effect in infrared systems with cooled detectors. A narcissus image is the image of a cold detector formed by reflection from a surface of the optical system, which when (nearly) in focus produces a dark central spot in the image.

The analysis will start by generating Ghost files with OpticStudio's Ghost Focus Generator and collecting data about vignetting and transmission for each file.

The narcissus integral coefficient is calculated based on user input temperature data (housing, detector, and ambient). Surface NITD contributions and total NITD results are then displayed in plots and numeric NITD data are written to a text file.

The narcissus effect is a well-known phenomenon in infrared systems with cooled detectors due to the large temperature difference between the detector and the housing.

Imperfections in lens coating anti-reflection performance cause the residual cold to return from each lens surface. Some part of the hot housing irradiance also reaches the detector. This results in a discernable contrast difference on the image if the lens is not designed properly.

For fixed lens positions and housing temperature, this contrast difference can be removed by non-uniformity correction algorithms electronically. But changes to these parameters cause the narcissus pattern to return. Hence, narcissus analysis is a very important part of the infrared design procedure with cooled detectors.

Defining the Narcissus Induced Temperature Difference

The attached macro, “Narcissus. zpl” calculates the Narcissus Induced Temperature Difference (NITD) performance of an infrared lens with cooled detectors. The macro is based on the following narcissus formula1,2:

σij = ratio of solid angle of the radiation retroreflected from the surface j falling on the cooled detector surface to the detector cold shield solid angle for the detector pixel i.

t0(λ) = average optical transmission from the first lens surface up to the detector.

ti(λ) = average optical transmission starting from the detector surface up to the lens surface under consideration.

The above equation makes the following assumptions:

  • The normalized detector spectral response is assumed to be constant over operating wavelengths, so this parameter is not needed in calculations.

  • Atmospheric transmittance is assumed to be 1 which means that NITD is referenced to the ambiance temperature just in front of the lens.

  • Performance of all coating applied on lens surfaces is assumed to be constant over operating wavelengths. So t0(λ), tj(λ), and Rj(λ) are assumed to be independent of wavelength.

  • The housing and detector are assumed to be at a constant temperature which means that there is no temperature gradient in instrument housing and detector.

Using the macro

Understanding the macro assumptions

The macro was written with particular system parameters in place. Before running the macro, you will need to make sure that that your system matches the following specifications. If it doesn't, the macro will fail. 

  • Lens is designed from the detector to the ambient.

  • STOP surface is surface 1.

  • Lens design does not have any Coordinate Breaks or dummy surfaces.

  • Lens design is rotationally symmetric.

  • Lens design is a single configuration.

  • Coatings are assigned to lens surfaces properly.

  • Single bounce ghost files are generated starting from Surface 2 to the last surface with OpticStudio's ghost generator tool and saved into the design file folder. This tool is found under ..Stray Light...Ghost Focus Generator.

The “Narcissus. zpl” macro needs the detector temperature, housing temperature, ambient temperature, and single-bounce ghost files generated with the Ghost Focus Generator. The ghost files should be saved in the current design folder. The user should also save the settings from the Vignetting Diagram by clicking Save in the analysis window's settings dialog.

Before doing calculations, the macro checks whether the STOP surface is Surface 1 or not and whether there are dummy surfaces. If the STOP surface is not Surface 1 or a dummy surface is found, the macro exits.

To dimension the NITD arrays, the macro counts the number of ghost files in the design folder. Coatings are checked afterward. If any surface is not assigned a coating, a warning is displayed. If all the conditions are met, the user is asked to input the temperature data.

After the user inputs are entered, the macro looks for generated ghost files in the design file folder and loads them one by one to get necessary vignetting data (σij) and transmission data (t0, tj) for NITD calculations. Remaining terms in the narcissus formula - such as the integral of housing and detector blackbody radiance, the difference over operating wavelengths, and integral of temperature derivative of ambient blackbody radiance over operating wavelengths - are calculated with the following approximation3:

Finally, NITD contributions of each surface and total NITD are calculated and plotted.

Running the macro with the sample file

A simple MWIR objective with 4 singlets shown below is designed to make a sample run. It is attached to this article as a ZAR file.

Surface by surface NITD contributions and total NITD values are calculated and plotted for the following parameters as follows:

User Input


Housing Temperature

300 K

Detector Temperature

77 K

Ambient Temperature

300 K

Vignetting Diagram Ray Density


Vignetting Diagram Field Density


Open the sample file. The Vignetting Diagram should already be open. Update the settings and click Save. 

Next, run the Ghost Focus Generator tool. For this example, the correct settings are:

Ghost Focus Generator Option



Single Bounce

First Surface


Last Surface


Ghost Reflector Coating


Save Files

Yes (checked)

Image Plane Only

No (Un-checked)

Once the Ghost files are saved, we may run the macro. To run it, place the attached "Narcissus. zpl" file in the "{Zemax}\Macros" folder. Then it should be available within OpticStudio.

As soon as the macro begins, you will be asked to enter the following temperature information:

The macro will then perform the calculations with the inputs and will generate six plots and one text file.

To learn more on how to use OpticStudio narcissus analysis macro check out the additional resources below:

Knowledgebase Article: OpticStudio narcissus analysis macro

To try out Zemax capabilities please download a free trial here.

Serhat Hasan


(1) James W. HOWARD, Irving R. ABEL, “Narcissus: reflections on retroreflections in thermal imaging systems,” APPLIED OPTICS /Vol.21. No.18 / (15 September 1982)

(2) M. Nadeem AKRAM,  “Simulation and control of narcissus phenomenon using nonsequential ray tracing. I. Staring camera in 3–5 μm waveband,“ APPLIED OPTICS / Vol. 49, No. 6 / (20 February 2010)

(3) E. L. DERENIAK, G.D. BOREMAN, Infrared Detectors and Systems (John Wiley & Sons, Inc.)