OpticStudio narcissus analysis macro

This article 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.

Tthe 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.

Authored By Serhat Hasan, shaslan@aselsan.com.tr


Article Attachments


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 causes residual cold to return from each lens surface. Some part of the hot housing irradiance also reaches the detector. This results in a disernable 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 causes 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 Narcissus Induced Temperature Difference (NITD) performance of an infrared lens with cooled detectors. The macro is based on 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 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 detector to 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 single configuration.
  • Coatings are assigned to lens surfaces properly.
  • Single bounce ghost files are generated starting from Surface 2 to last surface with OpticStudio's ghost generator tool and saved into the design file folder. This tool is found under Analyze...Stray Light...Ghost Focust Generator.

The “Narcissus.zpl” macro needs the detector temperature, housing temperature, ambient temperature, and single-bounce ghost files generated with 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.

In order to dimension the NITD arrays, the macro counts the number of ghost files in the design folder. Coatings are checked afterwards. 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 in order 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, 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 in order to make a sample run. It is attached to this article as a ZAR file.

MWIR objective

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

User Input Value
Housing Temperature 300 K
Detector Temperature 77 K
Ambient Temperature 300 K
Vignetting Diagram Ray Density 50
Vignetting Diagram Field Density 100

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 Value
Bounces Single Bounce
First Surface 2
Last Surface 14
Ghost Reflector Coating I.99
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:

settings 1

settings 2

settings 3

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

Analyzing the results

Surface NITD contributions vs Field (off-axis reference)

Analyzing the results

Surface by surface NITD contributions without dc offset is plotted in the diagram over Focal Plane Array (FPA) diagonal size and labeled on the right side of the plot.

Surface NITD contributions vs Field(on-axis reference)

more analysis

Surface by surface NITD contributions with dc offset is plotted in the diagram over FPA diagonal size and labeled on the right side of the plot. This plot highlights the NITD distributions of each surface over FPA diagonal. In designs with many surfaces, it will be hard to determine which surface corresponds to which curve in this plot since colours are close to each other. So it is better to use this plot with Surface NITD contributions vs Field (Plot2D false colour option) plot given below in order to determine surface number which contributes NITD the most.

Surface NITD contributions vs Field(Plot2D surface option)

surface NITD contribution

Surface by surface NITD contributions with dc offset is plotted in the diagram over FPA diagonal size with Plot2D surface option. This plot highlights the NITD distributions of each surface over FPA diagonal in 3D. Surface number increases as moved into the page direction.

Surface NITD contributions vs Field (Plot2D false colour option)

Surface Contribution 2nd picture

Surface by surface NITD contributions with dc offset is plotted in the diagram over FPA diagonal size with Plot2D false color option. Horizontal direction is FPA diagonal and vertical direction is surface number. Surface number increases upwards direction. Numeric values of scale is not the calculated values but default values.

Total NITD vs Field

Total NITD vs Field

Total NITD distribution over FPA diagonal is given in this plot.

Total NITD over FPA


NITD distribution over FPA is given in this plot. This is the visual representation of NITD in the image taken with lens.

”NarcAnalysis Results.txt” file

As a final output, results are written into the text file “NarcAnalysis Results.txt”  in design folder. The text file contains design file path, operating wavelength, temperature data (housing, detector, ambient), number of cold return surfaces, optical transmission, NITD contributions of each surface over field, total NITD, cold return vignetting data, transmission data of ghost files, yni data, and i/ibar data.



(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.)


Was this article helpful?
12 out of 12 found this helpful



Please sign in to leave a comment.