Skip to main content

MTF50 through-focus


There is a 'Through-focus MTF feature'. Is there a way to extract MTF50 through focus instead of modulation at a certain frequency through focus?

Did this topic help you find an answer to your question?

4 replies

Allie
Zemax Staff
Forum|alt.badge.img+2
  • Zemax Staff
  • 338 replies
  • June 29, 2020

Hi Anton,

The Through-Focus MTF plots do not provide a way to search for the spatial frequency which provides MTF50. Although, you could write a ZPL to do that search for you. For example, you could ask a ZPL to perform the following actions:

  1. Set the field and wavelength of interest
  2. Create a loop to cycle through multiple spatial frequencies
  3. Store the tangential and sagittal response to an array
  4. Use an IF statement to check for MTF50. If found, store the spatial frequency and focus shift data to a different array

I have set up a ZPL macro that will perform actions 1-3 for you. This macro will cycle through spatial frequency 0 to 70 and output the tangential and sagittal response for fiel = 1, wavelength = 1. You can add an IF statement before line 47 to run a check for MTF50. Here is what I have so far:

 

! Set up the location of the configuration file
lensFile$ = $FILEPATH()
fileNameLength = SLEN(lensFile$)
fileName$ = $LEFTSTRING(lensFile$, fileNameLength - 3)
cfgfile$ = fileName$ + 'CFG'

! Set up the Through Focus Analysis

field = 1        # Declare the field of interest
wave = 1        # Declare the wavelength of interest

MODIFYSETTINGS cfgfile$, TFM_FIELD, field        # Change the settings to use the field of interest
MODIFYSETTINGS cfgfile$, TFM_WAVE, wave            # Change the settings to use the wavelength of interest

numDataPoints = 201            # Each field will have 201 data points in the output
DECLARE tangent, double, 1, numDataPoints    # Setup array to hold Tangential data
DECLARE sagit, double, 1, numDataPoints        # Setup array to hold Sagittal data

! Extract data and write it to the arrays
! Cycle through multiple spatial frequency values

FOR freq, 0, 70, 5

    PRINT 'Spatial Frequency: ', freq
    MODIFYSETTINGS cfgfile$, TFM_FREQ, freq        # Set new spatial frequency

    A$ = $TEMPFILENAME()
    GETTEXTFILE A$, Tfm            # Extract Through Focus data
    OPEN A$                        # Open Through Focus data file and skip to numeric data
    FOR i, 1, 14, 1
        READSTRING B$
    NEXT
    
    FOR i, 1, numDataPoints, 1                # Write the data to the arrays
        READNEXT shift, tanVal, sagVal
        tangent(i) = tanVal
        sagit(i) = sagVal
        FORMAT 1.6
        PRINT tangent(i), ' ', sagit(i)        # Print the data for comparison
    NEXT
    
    DELETEFILE A$
    CLOSE
    
    PRINT
    
NEXT

 

Each of the keywords I used are described in the Help System file 'The Programming Tab > About the ZPL > KEYWORDS (about the zpl).' Will this work for you? Let me know if you have any questions!

Best,

Allie


Hi Allie,

 

Thank you for the prompt response!

I think this is all I need. I will give it a try and post here if I have more questions. 

Thank you

Anton


Hi Allie,

I am trying to run your code without modifications ans I am getting this error:

'ERROR in MODIFYSETTINGS: Cannot open settings file.
MODIFYSETTINGS CFGFILE$ , HFT_FIELD , FIELD'

Any chance you know how to fix this?

Thank you 

Anton


Allie
Zemax Staff
Forum|alt.badge.img+2
  • Zemax Staff
  • 338 replies
  • July 2, 2020

Hi Anton,

This usually crops up when the wrong configuration file is provided. In the code I attached, the configuration file I used was .cfg where  will match the title of your ZMX file. This file may not exist for you. In that case, you should use this line instead:

data$ = $DATAPATH()
cfgfile$ = data$ + '\Configs\TFM.CFG'

I have provided some guidance on identifying and using configuration files here:

Let me know if you have any other questions!

Best,

Allie


Reply


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings