About this document

Spectrum interpretation by simulation

written by W.Theiss

W. Theiss – Hard- and Software for Optical Spectroscopy

Dr.-Bernhard-Klein-Str. 110, D-52078 Aachen, Germany

Phone: + 49 241 5661390     Fax:     + 49 241 9529100

e-mail: theiss@mtheiss.com     web: www.mtheiss.com

January 2012

The goal of optical spectroscopy is - in most cases - the determination of microscopic quantities such as resonance frequencies of oscillating atoms, impurity concentrations or thin film thicknesses from macroscopic experiments. This is possible if the microscopic phenomena are coupled to the electric fields of the probing radiation. The key property of a material representing this connection is the dielectric function or its square root, the complex refractive index - both quantities are more generally called 'optical constants'.

In the case of layered systems a very powerful technique to interpret optical spectra is given by a simulation of the experiment (based on a physical model) and adjustment of the model parameters to fit the measured data. Fortunately, rather simple models of optical constants lead to realistic simulations of optical spectra. This enables fast parameter fits from which the wanted information can be obtained.

The interpretation of optical spectra is the central task of SCOUT - this manual gives technical information about the program features. Discussions of successful SCOUT applications are found on our homepage www.mtheiss.com and in the tutorials accompanying this document.

The next section gives an overview on this manual - from there you can jump to the individual parts of this documentation.

This text was written using the program Help&Manual (from EC Software, http://www.helpandmanual.com). With this software we produce the printed manual as well as the online help and HTML code for the internet verion of the document - with exactly the same text input! This is a very productive feature and makes the development of the documentation quite easy. However, for this reason the printed manual may sometimes contain some 'strange' text fragments which seem to have no relation to the rest of the text. These might be hypertext jumps in the online help system which - of course - lose there function in the printed version of the manual.

´

About SCOUT

SCOUT is a Windows NT/2000/XP/Vista software for the analysis of optical spectra by computer simulation. At program start the main window opens which may look like this:

The main window has 2 levels. When the program starts, you see the so-called 'main view level' which consists of the

•menu, from which all parts of the program can be reached

•the toolbar (below the menu), featuring selected commands for easy access

•the drawing area (the blue part in the example above) showing the main view (text, spectra, parameter values or illustrative graphs, see user-defined views)

•and the status bar at the bottom (including information and some control elements for the displayed graphs)

Pressing F7 the main window switches to the 'treeview level' which looks like this:

On the left side you see a treeview of all objects in the current SCOUT configuration. With a right click on an object in the tree you can open it - most objects will display their controls or graphs in the right gray section. Whereas some objects will display only a few items or even nothing, others will show a graph, buttons and an object menu. Here is the example of an opened spectrum window:

Pressing F7 again switches SCOUT back to the main view level. Alternatively, you can press the large 'Return to main view' button at the bottom of the window.

See the chapter 'Quick start: Getting around in SCOUT' for a deeper user interface description.

Working with pre-defined configurations, using the main window only

If you belong to the lucky people that can work with pre-defined SCOUT configurations, and you don't have to develop optical models of your own, it might be sufficient for you to only read the section about using the main window. However, if you are eager to know how the program works, you can read the other parts of this manual as well. This will certainly help to improve your SCOUT skills.

Required steps for developing optical models

Advanced spectrum simulation is not easy. Setting up realistic optical models, you have to define a large number of parameters which reflect the complexity of the problem. Concerning its structure, SCOUT tries to be as close to the physical problem as possible and groups the many parameters of spectrum simulation according to the scheme described below.

1. Define the optical constants of all relevant materials

All optical constant definitions are done in the so-called material list which you can access from the main window by pressing F7. Materials are managed in the first branch of the object tree called Materials. Here you can define objects representing fixed optical constants (imported from files) or optical constant models that give you flexibility if you want to adjust optical constants to fit experimental data.

Optical constant models are composed of susceptibility terms which are managed in susceptibility lists. At present you can use the following types:

         Drude model for free carriers

         Extended Drude model for free carriers with frequency dependent damping

         harmonic oscillator

         extended oscillator model suggested by Brendel

         extended oscillator model suggested by Kim

           oscillator model suggested by Gervais

         OJL interband transition model

         Campi-Coriasso interband transition model

         Tauc-Lorentz interband transition model

         user-defined expressions for optical constants

Both fixed optical constants and models can be imported easily from the built in database of optical constants.

For the description of heterogeneous materials (two-phase composites) you may want to mix optical constants. This can be done in SCOUT using various effective medium concepts for inhomogeneous materials. Besides the classical Maxwell Garnett and Bruggeman approaches we offer the Looyenga formula and the general Bergman representation which is certainly the most advanced concept.

2. Define the structure of the layer stacks

The tree branch Layer stacks shows the list of layer stacks. In most cases you will investigate one layer stack only, but SCOUT lets you work with several stacks if you want to (or have to).

Each layer stack may consist of an unlimited number of layers which are again managed in lists, called layer stack. For simple layers you can select coherent or incoherent superposition of partial waves. Several types reflect a certain choice: A 'Thin film'  is always handled with coherent superposition whereas a layer of type 'Thick layer' is treated with incoherent superposition. For cases in between full coherent or incoherent superposition we have implemented an efficient averaging algorithm for lateral layer thickness inhomogeneities. You can define optical superlattices, corrections for scattering losses at rough interfaces and gradually changing optical properties. Anisotropic layers (with heavy restrictions at the moment) may also occur in the stack.

3. Define which type of spectra are to be simulated and compared to experiments

After the definiton of all optical constants and layer stacks you have to tell SCOUT which spectra it should simulate and compare to experimental data. These spectra are collected in the spectra list which is the Simulated spectra branch in the treeview. The following types of spectra can be used at present:

•Reflectance

•Transmittance

•Absorbance

•ATR

•Layer Mix (computes the average spectrum of a patterned sample)

•Ellipsometry

•Ellipsometry stack average

•PL spectrum

•EL spectrum

•Layer absorption (computes the absorbed fraction of incident light intensity in a certain layer in a stack)

•Charge carrier generation (computes the number of photon-generated charge carriers in a layer)

4. Select the fit parameters

The treeview branch Fit parameters holds the list of fit parameters. These are the parameters of the model that are to be adjusted in order to reach optimal agreement between simulation and measurements. Besides fitting to experimental data, you can also select a model parameter as fit parameter if you want to compute its value by a user-defined function (which may contain master parameters, optical function values or the time).

5. Fit of the model (manual, visual, automatic)

SCOUT lets you fit model parameters manually (type in new values) or visually, i.e. by mouse-driven sliders. With the 'fit on a grid' feature you can automatically scan a certain parameter range for the best starting value for the final completely automatic optimization.

Using sequences of fit parameter sets (available in the treeview branch Fit parameter sets) you can develop efficient optimization strategies which enable SCOUT to adjust many fit parameters completely automatic.

In cases for which completely automatic parameter fitting is possible you can process a whole series of input spectra in a batch operation. SCOUT will import the spectra, do the fit, and store the obtained results in appropriate tables.

Enhancing your SCOUT work

Customizing SCOUT for routine spectroscopy using Views and the toolbar

Once you have developed a convincing optical model that reproduces your measurements in a high quality you may want to make that solution accessible to other people which are probably less experienced. In this case, you can hide all the complexity of the model and show in the main window only the information relevant to the final result. Using Views and the flexible toolbar you can achieve this goal and create nice and simple user interfaces.

Inspecting the influence of model parameters on optical spectra

Some automized actions help you to find out how model parameters affect optical spectra. You can vary one selected parameter on a set of equidistant values (in a user-defined range) using the Parameter variation action. SCOUT will compute all defined spectra for the set of values, and you can generate quite useful plots visualizing the parameter influence.

In order to check how production tolerances influence the optical properties of your multilayer stack, you can compute the spectral variations for the case that some model parameters fluctuate randomly in user-defined intervals (Parameter fluctuation action).

Working with databases

You can work with SCOUT very efficiently making use of databases. A SCOUT database contains materials with pre-defined optical constants and pre-defined layer stacks. If you save your favourite substrates and materials to your personal database these objects can be used to quickly build SCOUT configurations from scratch.

You can also benefit from the large collection of optical constants which is stored in the SCOUT database.

Programming SCOUT by OLE automation

You can control the actions of SCOUT from external programs by OLE automation. Create automated reports and batch operations with the Windows Scripting Host (WSH), MS Word, MS Excel, LabView or any other OLE automation controller. Using OLE automation you can even hide SCOUT completely, feed it with spectra and have it doing the analysis in the background while your data acquisition hardware collects already the next set of spectra .

To get a quick start into the details of spectrum simulation you should follow the introductory SCOUT tutorials (which are distributed with SCOUT and also available on our homepage www.mtheiss.com in the support section).

You can also have a look at the following documents which are distributed as PDF documents on the SCOUT CD (folder docs). You can also download these documents from our homepage using the link http://www.mtheiss.com/?Support:Downloads:Things_to_read:

•Analyzing optical spectra by computer simulation - from basics to batch mode (a PDF-document about spectrum simulation, summarizing the background and typical applications of this technique)

•Developing optical production control methods for SCOUT (a PDF-document about developing SCOUT methods. Good to read if you are looking for a thin film production control solution - even if you are not developing the method yourself but let us do the work)

About the author

Responsible for all good and bad program features:

 Wolfgang Theiss

           Consultant for Optical Material and Process Control

 Dr.-Bernhard-Klein-Str. 110

 D-52078  Aachen

 Germany

 Phone: + 49 241 5661390    

 Fax:     + 49 241 9529100

 e-mail: theiss@mtheiss.com    

 web: www.mtheiss.com

Key commands in the main view

Having started SCOUT, you see the main view:

The following key commands can be used to configure the main window:

•Pressing m you can switch on and off the menu

•The key b switches on and off the toolbar

•With s the statusbar at the bottom is shown or hidden

•Both the toolbar and the window frame and caption can be hidden or shown pressing p (presentation mode). If you switch off the menu and the statusbar as well and the SCOUT window is maximized, the whole screen is filled with the main view (presentations are discussed below):

•If you have a SCOUT configuration which is configured to perform a parameter fit, you can start and stop the fit pressing the f key.

•Pressing e opens the list of view elements of the view which is currently displayed.

•A time evolution of a model (this will be explained later) can be started and stopped with t.

•Pressing h jumps to a "home configuration" that you can set using the command File/Options/Default home configuration.

•In order to setup a new configuration or to modify an existing one, press F7 to switch from the main view level to the treeview level. The treeview level is discussed in the following section.

Working in the treeview level

Having pressed the F7 key in the main view you enter the treeview level which is used to make changes to the SCOUT configuration:

We will setup a simple SCOUT model now in order to show how to work in the treeview level. The goal is to compute the reflectance spectrum of a silver layer on a glass substrate, load experimental data and fit the silver thickness. The relevant items are to be placed in the main view in order to give a good overview.

Let's start to modify the main view: The current view items will be deleted and a new background picture will be loaded. In order to do so, open the item Views in the treeview (by clicking at the plus sign to the left) and right-click the item 'Start screen'. On the right side the list of view items appears:

Note that the view item list has a menu and controls of its own - in fact, it's a frameless window of its own, displayed inside the area of the main window. Use the menu item Delete all to delete all items. Then select in the dropdown box to the right of the + sign the new object type 'Metafile view'. Then press the + sign or use the menu command New. Click on the new object in the list which is called 'No picture yet' and use the menu item Edit to change the object. Alternatively you can right-click the list item in order to edit it.

Editing a metafile object means to load a metafile graphics from a datafile. Select the file 'silver.emf' in the subfolder pictures in the SCOUT program directory. Then press F7 which switches back to the main view level:

In order to get a background picture, the graph should fill the whole main view. The size and position of a view element (all view elements are rectangles) is given by the parameters Left, Top, Width and Height in the list of view elements. These numbers are percentages with respect to the full size of the view (current values are 1,1,40,40). Press F7 again and type in the numbers 0, 0, 100, 100 as shown below (having typed in a number, press Return to close the edit mode of this parameter):

Now press F7 again:

Now we will add some text. Press F7 and generate a new view item of type 'Text view': Select this type in the dropdown box and then use New to generate an object of this type. The new object is called 'Dummy name'. Select it and press Edit. You can now enter the text to be displayed. Type in 'Demo: Getting a layer thickness from a reflectance fit':

The next dialog lets you define a tilt angle. Keep the value of 0° for the moment - we do not want to rotate the text. Finally a color selection dialog is shown. Set the color to black which means we will have black text.

Make sure that the text view object in the list of view items is positioned underneath the metafile view object. The view elements in the list are painted from top to bottom. Hence background objects must be on top of the list so that they are painted first. You can change the position of an object in a list by using the red Up and Down arrows.

Pressing F7 should give something like this now:

In the next steps, we will define the optical model and show the reflectance spectrum and the layer stack in the main view.

Building a simple optical model

We will now setup the optical model the following way:

•Take the optical constants of glass and silver from the database

•Compose the layer stack

•Setup the reflectance spectrum

•Select the fit parameters

All required actions are done in the treeview level. Right-click the treeview branch 'Optical constant database' and select in the list of database materials the one called 'Ag model (TL)':

With the left mouse button, drag&drop it to the treeview branch called Materials. Repeat this step for the material called 'Glass (microscope slide), Vis'. Now right-click the treeview branch Materials in order to open the current list of materials. It should look like this now:

With these materials in our configuration, we are now ready to define the layer stack. Open the treeview branch Layer stacks. This list may contain several layer stacks. In this simple example, we need a single stack only. Right-click the treeview item 'Layer stack'  which should look like this at the moment:

Select the bottom halfspace in the layer stack and use the + button in order to create a layer of type 'Thin film'. This will be used to represent the silver layer. Afterwards, select the new layer type 'Thick layer' and generate an object of this type which we will use for the glass substrate. Using the red arrow buttons, bring the objects into the following order:

We will now assign materials to the individual layers. Open the Materials branch in the treeview. Drag the treeview item 'Ag model (TL)' to layer #2 in the stack and drop it there. Repeat this drag&drop for the glass material. The layer stack should look like this after these actions:

Having defined all required materials and the layer stack, we can now compute the reflectance spectrum of the layer stack. The experimental data that we are going to load have been measured in the spectral range 200 ... 1100 nm. Hence it makes sense to compute the optical model in this range. Since the loaded materials are models for optical constants (indicated by their type 'Dielectric function model') it is useful to compute the material models as well as the spectrum in the same wavelength range 200 ... 1100 nm. We can achieve this by using the global Range command in the main menu of SCOUT. A spectral range dialog appears and you should do the following settings:

The reflectance spectrum must be defined in the list of simulated spectra. Open the corresponding treeview branch which contains an object already (if not in your situation, please select the new object type 'R, T, ATR' in the dropdown box and generate an object of this type):

In order to have a closer look at the spectrum, open the tree branch 'Simulated spectra' by clicking at the + symbol and right-click the object 'R':

This shows already the wanted reflectance spectrum (the angle of 0° is a good approximation in the present case). We only have to adjust the axis settings for the graph which we can do using the local menu item 'Graphics|Edit plotparameters'. Please use the following settings in the graphics parameters dialog:

After pressing OK the graph is updated and looks like this now:

The optical model is ready now. The simulated reflectance can be compared to measured data. Use the local menu command Import|from file to load experimental spectra from data files. The spectra we are using here are distributed with SCOUT tutorial 1. Open the file ag_20.std from the SCOUT tutorial 1 subfolder using the file type 'SCOUT standard format' as indicated in the following screenshot:

Make sure that you select the spectral unit nm in the following dialog which shows the spectral range covered by the data found in the file:

After pressing OK the spectrum window looks like this now:

The red curve shows the loaded experimental data whereas the blue one represents the current model.

Obviously there is a significant disagreement between model and measurement which is a good reason to modify the model. The thickness of the silver layer is the parameter of the model which needs to be adapted in order to improve the agreement. We have to declare the silver thickness to be a fit parameter in order to do an automatic parameter adjustment (fit). Right-click the treeview branch Fit parameters:

Note that the list of fit parameters has no dropdown box in order to specify object types. There is only one type of objects in this list. Press the + button and you will get a dialog which displays all current model parameters. Select the silver thickness as shown below (while holding the ctrl-key down, you can select and de-select multiple items in this dialog by mouse-clicks):

With this selection, leave the dialog pressing OK. The list of fit parameters is now the following:

The current problem is quite simple, and we can hope that the automatic fit routine of SCOUT can find the best value for the thickness without further help. Press Start in the toolbar to launch the fit routine (this button becomes a red Stop button while the fit is running). After a very short time the fit finishes and the red Stop button becomes a black Start button again.

Right-click the spectrum object R in the treeview and see the following fit result:

We have now an optical model matching the experimental results. If we want to do parameter fits for several experimental input spectra it might be useful to build a simple user-interface which offers the required actions in the main view. This will be done in the next section.

Generating the user interface

We will now configure a simple user-interface in the main view of SCOUT which will show the reflectance spectrum, the layer stack, the value of the silver thickness and some information on the fit quality. There will also be a slider for manual thickness variation. For all these things we will generate view elements which are able to draw the wanted items in the main view.

Let's start with the display of the reflectance spectrum. Open the treeview branch Simulated spectra. In addition, open the treeview branch Views and there the subbranch Start screen. SCOUT should look like this now:

A view element that displays the reflectance spectrum can be generated by a drag&drop operation from the treeview to the list of view elements on the right. Start to drag the treeview item 'R' and drop it in the list to the right:

Press F7 to see the new view element in the main view:

View elements can be moved within the main view with the mouse while the Shift key is pressed down. Try to move the reflectance spectum to the center of the window. Holding both the Shift and the Alt key simultaneously down, you can move the left, top, bottom or right side of the rectangle individually by mouse drags. This is a very convenient re-size mechanism. Try to position the spectrum like in the following example:

The manipulation of view elements is explained more detailed in the introduction to views.

A view element to display the layer stack can be generated the same as shown for the spectrum. Simply drag the layer stack item from the treeview to the view element list:

The result is shown below:

Layer stack view elements can be moved with the mouse using the bottom halfspace as 'mouse sensitive area' (click here for details). Drag the layer stack item to the right as shown here:

Now a view element is created which shows the current value of a model parameter. In the list of view elements, select the new object type 'Parameter view' in the dropdown box:

Then press + in order to create a new object of this type. You will get the following dialog for parameter selection. Mark the silver thickness as indicated:

Then press OK. The new view element is created with the name 'No assignment yet'. Click on the name and overwrite it with 'Ag thickness [nm]' - then press Return:

Pressing F7 shows that 2 view elements are in conflict with each other:

Move the blue parameter view element from the upper left corner down as shown above. Note that text is moved with the mouse using the lower left corner. Pressing the Ctrl-key and clicking on a view element raises the Edit action of the element. In case of the parameter view element a color selection dialog is shown. Use this to assign yellow to the element. In the end the main view should look like this:

Now we will create a slider for manual parameter variation. In the list of view elements, select as new object type 'Vertical bar' and create an object of this type. The parameter selection dialog appears again and you should select again the silver thickness parameter. In the following color selection dialog, select yellow. Finally set the slider range.  The minimum is 0 and the maximum 50. Change the 'No assignment yet' text to 'Ag thickness [nm]'. Finally move the new bar to the left side of the main view and try to re-size it as shown here:

You can now use the mouse to move the parameter value by the slider position.

Use the Import button in the toolbar to load a new experimental spectrum. First you are asked for a sample name. Enter '10 s' (10 seconds sputtering time)

and select the spectrum ag_10.std:

Try to fit the thickness manually with slider motions. Then press Start for an automatic fit.

Now, as an exercise, we do several steps at a time. Generate the following view elements:

•An object of type 'Rectangle' (this should product a gray background for the following items)

•A 'text view' object called 'Sample:'

•An object of type 'Sample view' (this will display the name of the sample

•A text view object called 'Fit deviation:'

•An object of type 'Deviation view' (this shows the mean square deviation of model and measurement)

Try to get a main view appearance similar to the following:

In order to make the work with this method as simple as possible we will hide the menu when the configuration is loaded. This is done by de-activation of the menu option File|Options|Appearance|Menu visible at start.

We can also hide the toolbar items 'View' and the 'Autoscale button'. This is achieved by de-selection of the menu items File|Options|Toolbar|View button an File|Options|Toolbar|Autoscale button.

Once this is done, you should save the new configuration using the File|SaveAs command. When you load it again with File|Open the following main view should appear:

In the following chapter we will see how such a SCOUT configuration can be used by operators in order to analyze measured spectra.

Main window overview

This section explains how you work with the main window. It is assumed that a working optical model exists and the main window has been configured in a user-friendly way. Since there is a large variation of possible designs we cannot cover all variations of the main window appearance. The following example shows a typical case covering the most important features.

The example used here is a simple thickness determination. The task is to get the thickness of a sputtered silver layer on microscope slide glass from a measured reflectance spectrum in the spectral range 200 ... 1100 nm. This configuration has been made in the previous 'Quick start' section. The main window looks like this:

The task of this configuration is to provide a user-interface for importing spectra, do the analysis, and export the results. In the ideal case of a well-defined and tested configuration the user has to handle only a small number of commands in routine work.

Sometimes the graphical settings are not appropriate and the user may want to change it. How this is done is explained in a separate section.

A little more advanced is the combination of the main window and the batch control window. This is also explained separately.

Routine work

Here is the sequence of commands for a simple routine case with spectrum import, analysis and export of the results.

Spectrum import

Use the Import command to load new spectra. First the user is asked to enter a short text charcterizing the sample. This text will replace the text '10 s' which is shown in the upper right rectangle underneath 'Sample:'.

Type in '14 s' and then select the file ag_14.std (SCOUT standard format) that comes with tutorial 1. Make sure the spectral unit in the following range dialog is set to nm:

The SCOUT window should now have changed to this:

Doing the analysis

You can change the silver thickness value in the optical model by moving the height of the yellow bar on the left with the mouse. In this simple example it is very easy to find a good solution just be manually trying different values.

You can also press the Start button to tell SCOUT to do the analysis. The progress of the fit is indicated by the number given underneath the label 'Fit deviation'. This number describes the average difference between model spectrum and measurement - it should be as small as possible. While the fit is running, the Start button becomes a Stop button. Use this button to interrupt the fit, freezing the current best parameter values. When the fit stops the Stop button turns into a Start button again. The fit result for sample '14 s' is this:

Write the results to the Workbook

Apply the Export command to write the obtained parameter values for this sample to the workbook. The values of all defined optical functions are written to the workbook as well. If this is the first time you write to the workbook, SCOUT will erase the workbook page for the results and create a new one. It will ask you for the permission to do so:

Having answered 'Yes', you can now go back to the import step and analyze as many spectra as you like, exporting for each one the results to the workbook.

Saving the results

Once you have processed all samples, you have to save the results that are listed in the workbook. In order to do so, open the workbook with the Workbook command:

If you like you can use the Autosize cells command to adjust the size of the cells automatically:

The workbook has file commands to save its content in various formats, including text files and Excel 5 format. You can also select a range of cells or the whole sheet and use the Copy command to copy the cell content into the clipboard (for a subsequent paste action into Excel, for example).

Manipulation of the displayed graphs

Sometimes you may want to change the pre-defined graphics settings in a view in order to inspect details of a spectrum. The statusbar provides (on the  left side) some controls that you can use to do so. If the statusbar is not visible, press the key s on your keyboard to let it appear:

Graph selection

Before you use one of the controls you must make sure that the graph you want to change is selected. The name of the selected graph is indicated in the bottom left corner of the status bar. You can change the selection by a simple mouse click on the graph you want to modify.

Automatic scaling

Press the speed button labeled 'A' for automatic scaling. SCOUT will determine the required range of the x- and y-axis to display both the measurement and the simulation. If the measurement contains large fluctuations due to noise the automatic scaling may fail to give a good overview about the spectra. In this case, you have to do the settings manually or using the sliders described below.

Edit graphics parameters manually

If you want to set the displayed region manually, or change other parameters like the frame mode (to display grid lines, e.g.), apply the 'E' button which opens the graphics dialog of the graph:

See the section 'Graphics course' delivered with SCOUT for more details of graphics settings.

Changes by slider motions

The status bar has four sliders which can be used to change the displayed range of a graph conveniently. Here is how they work:

As soon as you move one of the sliders, automatic scaling is performed. The computed ranges for the x- and the y-axis are stored internally. With the two top sliders you can now set the size of the displayed range for the x- and y-axis, respectively. The left slider position means 0%, the right position 100% of the maximum range.

The two bottom sliders are used to set the position of the center of the graph (left slider: x-axis, right slider: y-axis): The left slider position sets the center of the graph to the minimum of the range found by auto-scaling, the right position corresponds to the maximum of the range.

You are encouraged to play for a while with the four sliders to get used to their function. After a short time of practise it should be clear how to move around.

Restore graphics settings

Once you have zoomed into the graph or auto-scaled the graph and you want to go back to the original display, press the 'R' button. This restores the  graphics parameters that were set in the last edit operation (button 'E'). If you did not edit the parameters manually, the initial settings of the loaded SCOUT configuration are restored.

Working with the batch control window

If a SCOUT analysis method works fine for almost all input spectra, you may want to process the spectra to be analyzed completely automatic. You can do so using the batch control window as explained below. The proper configuration of the batch control window should have been done by an experienced SCOUT user (the batch features of SCOUT are explained in a separate section). This section describes how to use such a solution.

In order to work in batch mode, you have to have access to the main menu of SCOUT. If the main menu is not visible you can make it appear pressing m on your keyboard. The menu command Actions|Batch control opens the batch control window. The batch window is a kind of workbook which will hold the names of the input spectra and - after having completed the batch fit - the results. It may look like this:

First you should inspect the 'Input options':

Check, if your input files are really available in the specified path, and if the input format matches (see the section about preparing batch files for more information). Then go back to the 'Results' page and place the cursor in the row of the spectrum for which you have measured spectra (row 6 in our case). Use the batch control menu command Add multiple files and select the last spectrum you want to load in the following dialog (note that the file ag_22.std is selected). Do not press the Open button yet:

Now hold the Shift key down and click on the first file to be loaded, in our case ag_1.std. This will select all spectra in between:

Now press Open and verify that all filenames have been entered as input spectra into the Results page of the batch control window:

Finally press Go! and wait until the batch fit finishes to process all input spectra. The results are written to the batch control window:

Save the batch control window with SaveAs (you could generate Excel files, for example) or paste the data to the clipboard for subsequent processing. More information about inspecting the results is given in a section below.

Overview

The optical model in SCOUT is composed of three types of objects:

•Materials (selected from the database or user-defined)

•Layer stacks (selected from the database or user-defined)

•Spectra (user-defined)

For each object type there is a list that manages the individual objects (create, delete, modifiy). Please read the section about lists if you are not used to work with SCOUT lists.

Defining materials: Introduction

In order to use a material in SCOUT you have to define its optical constants (see below). In addition, you can define several other quantities such as thermal conductivity, density or deposition rates which may be required by some SCOUT or CODE computations. These numbers are stored together with the material's optical constants. Each material window has a menu item called Properties which has submenu commands to edit the available material properties.

Optical constants

In  most cases it is the electric field of the probing light wave that interacts with the sample. Hence excitations can be observed in optical experiments that are going along with a polarization. The polarization P induced by an externally applied electric field E in a homogeneous material is given by the electric susceptibility χ:

.

The dielectric function ε which connects the dielectric displacement and the electric field vector is closely related to the susceptibility:

 .

The frequency dependence of the susceptibility is very characteristic for a material since it incorporates vibrations of the electronic system and the atomic cores as well as contributions from free charge carriers.

The complex refractive index n + i k is the square root (with positive imaginary part) of the dielectric function. Both the dielectric function and the refractive index are called optical constants. Internally SCOUT uses the dielectric function for all computations. In a material's window you can display both quantities, as described below.

The list of materials in SCOUT can exchange objects with a database of materials.

The SCOUT software offers several ways to define the frequency dependence of real and imaginary part of the dielectric function. You can import fixed data sets, i.e. tables of real and imaginary part for several spectral points, or you can setup models that give some mathematical expressions for the optical constants.

Optical constants can be displayed in various ways: As dielectric function or complex refractive index n + i k. In addition you can show the absorption coefficient α or the energy loss function.

The following sections give more details on the individual types of materials available in SCOUT:

•Imported dielectric function (fixed data sets)

•Dielectric function model

•KKR dielectric function models

•Master models

•Effective dielectric functions

Overview

Each material window can display different representations of the optical constants.

In the following the computed quantities are demonstrated using a dielectric function for quartz glass in the mid infrared. It looks like this:

Use the Properties submenu to select the property which is to be displayed in the material's window. At present, the following properties (besides the dielectric function) can be computed and displayed:

•Refractive index

•Absorption coefficient

•Energy loss function

If you change the selection of the displayed property the graphics parameters are automatically changed and auto-scaled.

Refractive index

If the display property is set to 'Refractive index' the refractive index n + i k will be computed from the dielectric function and displayed. The real part n is drawn in blue, the imaginary part k in red if the default graphics settings have not been changed.

For the glass example you get here the following graph:

Absorption coefficient

Here the absorption coefficient is computed from the corresponding dielectric function data. It is given in 1/cm. For the glass example one gets the following values:

Energy loss function

Here the energy loss function is shown. The glass example has these values:

Others

Besides optical constants, a material in SCOUT can have the following properties:

•Thermal conductivity

•Density

•Dynamic viscosity

•Specific heat

•Etching rate

•Depostion rate

The menu item Propterties offers submenu commands to set the numerical values of these quantities. Please not the indicated unit if you type in new values.

Imported dielectric function: Fixed data sets

Fixed data sets are tables of the real and imaginary part of the dielectric function given in a certain spectral range. Most of the data are obtained from literature somehow (by typing in or scanning published table values or digitizing published curves). Some may have been obtained from more or less direct evaluation of measured spectra (like KKR analysis of reflectivity data or spectroscopic ellipsometry).

Importing external optical constant data into SCOUT

If you want to work with fixed data sets for optical constants you have to create an object of type 'Imported dielectric function' in the list of materials. Objects of this type have an Import command that is used to import optical constant data from text files. In addition you can import data from the workbook.

The import of n and k data from textfiles is explained in a step-by-step example. Getting data from the workbook is also explained below.

Comments on spectral ranges of different objects

If you import fixed data sets from the database and you use them for a computation, the spectral range of the spectrum to be computed may differ from that of the fixed data set. Like in all SCOUT objects linear interpolation is applied to obtain dielectric function values in between two specified spectral positions of the dielectric functin object. In case of extrapolation the dielectric function values of the closest specified spectral point are used – this means that you should avoid extrapolation unless the dielectric function is almost constant.

Importing data from the workbook

If you have original optical constant data in a spreadsheet format (e.g. in Microsoft Excel) and you want to use them in SCOUT you can import the data via the built-in workbook. In the list of materials, create a new object of type 'Imported dielectric function' and open its window (Edit):

Use the Workbook|Open workbook command to open the workbook.

Now copy and paste the data to be imported into one of the sheets of the workbook. It should look like this:

Place the cursor in the upper left corner of data block that you want to read, in this case the cell C5 that contains the first energy value of 2.60 eV:

Now go back to the new 'Imported dielectric function' object. If the workbook data contain n and k values, use the command Workbook|Import x,n,k and press 'a' to autoscale the graph:

If the spreadsheet data block contains dielectric function data, use the command Workbook|Import x, real part, imaginary part.

Up to now you cannot change the spectral unit if you import data from the workbook. This will be improved soon. Use the possibility to import data from text files if your spectral unit does not match the unit of the 'Imported dielectric function' object.

Importing data from text files

In order to import optical constant data from text files you must create input files of a certain structure. You can import dielectric functions or refractive index data. In both cases, the files must consist of three columns. The first column contains the spectral position (wavelength, wavenumber, frequency, ...), the second and third columns the real and the imaginary part, respectively. The columns must be separated by spaces or tab stops. Floating point numbers must be stored using decimal points, independent of the regional settings in your Windows system.

No header line and no line after the last data point is allowed.

Here is an example for n and k data:

400        2.408627033        0.4156653583

410        2.411873579        0.3820514381

420        2.412563324        0.3499037027

430        2.41097641        0.3193621635

440        2.40746069        0.2905050516

450        2.402238846        0.2634026408

460        2.395607471        0.2380614579

470        2.387810707        0.2144837677

480        2.378987789        0.1926633567

490        2.369399548        0.1725632399

500        2.359213591        0.1541357189

510        2.348565817        0.1373167932

520        2.337641954        0.1220459864

530        2.326568365        0.10827066

540        2.315360069        0.09589903057

550        2.304250717        0.08483409137

560        2.293296814        0.07504497468

570        2.282603025        0.06639868021

580        2.272218227        0.0588131547

590        2.262247324        0.05217254534

600        2.252709866        0.04636290297

610        2.24363637        0.04127727076

620        2.234975576        0.036819987

630        2.226799965        0.03293710575

640        2.219054222        0.02952171676

650        2.211731434        0.02650727145

660        2.204816103        0.02387103066

670        2.198265076        0.02153578214

680        2.192091942        0.01947694644

690        2.18625164        0.01764915884

700        2.180743456        0.01603478752

Once you have created a new object of type 'Imported dielectric function' in your material list, open its window which should look like this initially:

In order to import optical constant data from a text file, use the Import command and select the file you want to read from. At the bottom of the file dialog you can select the file type. Choose 'Data table (x, real, imag)' if you want to import dielectric function data, and select 'n and k from data table (x,n,k)' if the file contains complex refractive index data.

SCOUT reads the file line by line and determines the spectral range covered by the data. The following dialog gives you a chance to set the proper spectral unit:

In this case the spectral range is given in nanometers, so the 'eV' should be changed to 'nm'.

In addition, you can change the number of spectral points in the dialog. SCOUT gives the number of points found in the file. SCOUT always works with equidistant spectral positions. If the data in the file are non-equidistant, SCOUT will create an equidistant grid of spectral positions covering the found spectral range. If you don't change the number of points, it will use as many points as found in the file. The optical constant data on this equidistant grid of spectral positions are obtained by linear interpolation of the original non-equidistant data points. If there are large differences in the spectral distances of the original points it might be useful to increase the number of points of the equidistant grid.

Having changed the spectral unit to 'nm' and the number of points to '100' the dialog looks like this:

Press OK and then 'a' to autoscale the graphics. Note that the new 'Imported dielectric function' object might not display the complex refractive index but the dielectric function:

If you want to see the complex refractive index, use the Property command and select 'Refractive index':

It is a good idea to permanently store the new object in your database.

Introduction

The dielectric function e which connects the dielectric displacement and the electric field vector is closely related to the susceptibility χ :

 .

The frequency dependence of the susceptibility is very characteristic for a material since it incorporates vibrations of the electronic system and the atomic cores as well as contributions from free charge carriers.

The following susceptibility types are supported by SCOUT:

•Constant

•Constant refractive index

•Harmonic oscillator

•Drude model for free carriers

•Extended Drude model

•Brendel oscillator

•Kim oscillator

•Gervais oscillator

•User-defined formula

•Imported data

•KKR susceptibility

•KKR susceptibility II

Appropriate models for interband transitions are discussed in the section on KKR dielectric function models.

Constant

The figure below shows a dielectric function typical for a semiconductor in the infrared, visible and ultraviolet spectral region. The very strong structures in the UV can be assigned to electronic interband transitions (critical points in the joint density of states). In the infrared region one is far away from the interband transitions which can be noticed only by an almost constant and real contribution to the dielectric function - the so-called dielectric background. Therefore the optical properties in the infrared can be described quite well by just the sum of a constant and real dielectric function (sometimes called ε∞ where ∞ stands for 'very high frequency' from the infrared viewpoint) and the contributions describing infrared excitations. Free carriers are responsible for the structure in the dielectric function below 1000 cm-1.

Typical dielectric function of a group IV semiconductor  (silicon) characterized by an almost constant dielectric function in the mid IR in between strong interband transitions in the UV and free carrier contributions in the far IR.

The dialog to edit a constant susceptibility in SCOUT is the following:

Although the imaginary part of realistic dielectric functions is close to zero in regions of a constant real part you can define a constant imaginary part different from zero for test purposes.

Constant refractive index

For those who prefer to think of refractive indices when dealing with optical constants here is a constant refractive index susceptibility. It has just a constant real value the square of which is the real part of the susceptibility. The imaginary part is zero.

Note the remark about the combination of a constant refractive index susceptibility with interband transition models given below in the section about KKR susceptibilities.

Harmonic oscillator

Microscopic vibrations involving the motion of the atomic nuclei (which are much heavier than the electrons) usually have their resonance frequencies in the infrared region. These characteristic frequencies depend on the oscillating masses and the strength of the bonding between them and hence can be used for material identification (which is the reason for the dominant role IR spectroscopy plays in analytical chemistry). In the case of silicon important impurities like carbon and oxygen are detected by their characteristic vibrational modes. Susceptibilities describing microscopic vibrations can be modeled by harmonic oscillator terms:   .                                                 ΩP gives the oscillator strength, Ωτ  the damping and ΩΤΟ the resonance position. The index TO is used here since with the same oscillator model transverse optical phonons (lattice vibrations, TO-modes) are described.

The corresponding SCOUT dialog is this:

Drude model

In the case of doped semiconductors the charge carriers set free by the donors or acceptors can be accelerated by very little energies and hence do respond to applied electric fields with frequencies in the infrared region. A simple expression for the susceptibility of free carriers (which is also applicable to metals, of course) is given by the so-called Drude model where the carrier concentration and a damping constant enters:

     .      

The parameters plasma frequency and damping constant can be set in the corresponding SCOUT dialog:

Extended Drude model

The classical Drude model works with a damping constant which does not depend on frequency. This is a good approximation in most cases. However, there are situations where the damping of the free carriers exhibits a characteristic dependence on frequency, for example in the case of scattering at charged impurities. A rather simple, but successful choice of the frequency dependence of the damping term is the following:

The function for the damping constant is chosen to change smoothly from a constant at low frequencies to another constant level at high frequency. The transition region is defined by the crossover frequency and the width parameter. A typical case of the frequency dependence of the damping constant is shown below:

The parameters of the extended Drude model are set in the following dialog:

Brendel oscillator

The simple harmonic oscillator model for vibrational modes can be refined by an improved version (suggested by Brendel) that accounts for local variations in disordered systems by a Gauss-distribution of resonance frequencies:

.                    

Depending on the values of the width s of the Gauss-distribution and the damping constant Ωτ  any line shape between a Gaussian  and a Lorentzian can be achieved. Due to this flexibility the 'Brendel' model has turned out to be very useful in many cases.

The four quantities of Brendel oscillators can be set in the following SCOUT dialog:

Kim oscillator

An extension of the simple harmonic oscillator model for vibrational modes suggested by Kim et al. [Kim 1992] allows a continuous shift of the line shape between a Gaussian and a Lorentzian profile. This is achieved by the following frequency dependence of the damping constant:

The constant s is called Gauss-Lorentz-switch. Like almost all fit parameters it may vary between 0 and infinity. For σ = 0 a Gaussian line shape is achieved. Large values of σ (larger than 5) lead to a Lorentzian.

The Kim model is similar to the Brendel oscillator which also gives lineshapes between a Gaussian and a Lorentzian. However, the computational effort is much less. Thus, if you have to work with many oscillators, the use of Kim oscillators instead of Brendel oscillators can save a lot of time.

The four quantities of Kim oscillators can be set in the following dialog:

Gervais oscillator

An extension of the harmonic oscillator model described in [Gervais 1974] has been included in the SCOUT software since it turned out to be useful for the description of infrared active phonons.

The original formula is

and it represents the dielectric function as a product of individual oscillator terms. For each term there are four parameters, the resonance frequencies ΩjTO of the TO modes (poles of the dielectric function), those of the LO modes (poles of the inverse dielectric function) ΩjLO and a damping constant for each of the modes (γjTO, γjLO).

Due to multiplicative form of the expression it is not recommended to mix this model with others. The parameters of all ten possible oscillators and the dielectric background are set in a dialog box like the following:

Note that only those parameters appear as fit parameters and are used for the computation which belong to an oscillator that was given a name. In the example above the four parameters of the 'Main phonon' (and the dielectric background) would appear as possible fit parameters. The others are completely ignored by the program.

Warning: Not all combinations of the four parameters are reasonable. Large differences of the damping constants for the TO and LO modes may lead to an unphysical negative imaginary part of the dielectric function. This may also happen if the resonance frequency of the LO mode is chosen to be smaller than that of the TO mode.

Formula

This susceptibility type gives most freedom to the user who can define arbitrary functions for real and imaginary part. The dialog looks like this:

In the formula you can refer to six constants labeled C1 ... C6 which appear in the list of possible fit parameters.

Frequency dependent expressions can be composed using the symbol X which represents the wavenumber. The dielectric function computed from the formulas of the sample dialog shown above is the following:

Imported data

This susceptibility type is used to superimpose fixed, imported data for dielectric functions and flexible, parameterized susceptibilities. The 'Imported data' susceptibility contributes the fixed data to the composed dielectric function. The Edit command opens a window that show the fixed data graphically. Here you can import dielectric function data sets.

There are no parameters and consequently no fit parameters available from this susceptibility type.

KKR susceptibility

Susceptibility objects of this type contain a complete KKR dielectric function model which is explained below. The reason to have KKR dielectric function models also to appear as susceptibilities is the following: Often KKR dielectric function models must be computed on a very large spectral range which prohibits a high spectral resolution if one has to keep the number of data points low. If you use, for example, 2048 data points between 0 and 200 000 1/cm the spectral resolution is approximately 100 1/cm. If you have to describe infrared vibrational modes with the same model you run into severe difficulties with this resolution.

In these cases you can use KKR susceptibilities to describe e.g. interband transitions in the UV as in this example (1024 data points covering the range between 0 and 100 000 1/cm):

You can then use this susceptibility in a dielectric function model describing the visible and infrared properties with higher spectral resolution (where linear interpolation is used to get the required intermediate values for the real and imaginary part):

The parameters (and possible fit parameters) of KKR susceptibilities are exactly the same as those of the underlying KKR dielectric function model.

KKR susceptibility II

This susceptibility type is derived from the KKR susceptibility type which is described above. The only difference is that after the computation of the real part (via the Kramers-Kronig transformation) the value of the real part for zero frequency is subtracted in the whole spectral range. This drags down the real part to zero for low wavenumbers.

Note that this behaviour of a susceptibility is quite unphysical. Usually any polarizability mechanism with some dynamics can instantly follow the slowly varying electric fields for low wavenumbers which is described by a positive real static dielectric constant. For high wavenumbers with time scales far below the response times of the mechanism no polarization is excited and the susceptibility should approach zero. In KKR susceptibility II objects the situation is - due to the subtraction of the static real part - reverse and  hence not very recommendable from a physical point of view. However, there might be situations where the introduction of this susceptibility type could be useful.

Susceptibilities of this type must be combined with other contributions that add to the real part of the dielectric functions. Good choices are the types 'Constant' and 'Constant refractive index'.

Introduction to KKR dielectric function models

Important note: It is strongly recommended not to use KKR dielectric function models in the list of materials directly. Please work with objects of type 'Dielectric function model' and use in their susceptibility list a KKR susceptibility. This kind of susceptibility makes use of a KKR dielectric function model internally.

In some cases one has only a formula for the imaginary part of the dielectric function. This is especially true for interband transitions where quantum mechanical expressions can be derived from the band structure of a material.

Fortunately, with a little luck the missing real part can be constructed from the imaginary part using the Kramers-Kronig-Relation (KKR) that connects real and imaginary part of susceptibilities.

Of course, there are some restrictions and requirements. The imaginary part of the dielectric function must be known in a wide spectral range. To be specific, from 0 to infinity. Using a finite maximum frequency instead of infinity is acceptable only if the imaginary part approaches smoothly zero as its high frequency limit.

In addition, the KKR relation can only be used with certain numbers of data points, namely powers of 2 (256, 512, 1024, 2048, 4096, 8192, 16384). This is due to the fact that the Hilbert transformation that brings you from the imaginary to the real part of the susceptibility is realized in SCOUT using two successive Fourier transforms. These are programmed as so-called Fast Fourier Transforms (FFT) which are limited to the restricted number of data points.

Using KKR dielectric function models you can mix susceptibility types that require a KKR construction of the real part with those that have explicit expressions for real and imaginary part. The algorithm used for the computation of the final dielectric function is the following:

•First the imaginary parts of all KKR susceptibilities are summed up

•Then the KKR step is done to construct the corresponding real part

•Then all the 'normal' susceptibility terms are added that do not require a KKR transformation

Although the computational effort is large the time to perform the KKR on modern computers is still in a range that you should definitely consider using KKR dielectric function models for 'fitting' work. This is especially true for UV spectroscopy.

Up to now the following KKR susceptibilities have been implemented:

•Free formula

•OJL model

•Campi_Coriasso

•Tauc-Lorentz

Free formula for imaginary part

This is the most flexible KKR susceptibility since you can define an arbitrary function for the imaginary part, specified by a user-defined formula.

The SCOUT dialog is this:

The formula string represents the formula, of course, in which you can use up to 6 constants (C1, ..., C6) which all appear as possible fit parameters. You will need to refer to the wavenumber in the formula which can be done by the symbol X.

The formula in the dialog above is taken from literature [Campi 1988] and leads to the following dielectric function:

Note that this model (Campi-Coriasso) is also available as a built-in susceptibility.

OJL2 model

This model replaces the OJL model of previous program versions which had a small bug in the computation of the optical constants. If you import old configurations containing OJL susceptibilities the old model is still used, however.

The so-called OJL model for interband transitions is due to [O'Leary 1997A] where expressions for the joint density of states are given for the optical transition from the valence band to the conduction band. Parabolic bands are assumed with tail states exponentially decaying into the band gap as sketched in the following graph:

The fit parameters of the OJL interband transition model are the gap energy E0, the tail state exponent of the valence band γ and the overall strength of the transition.

The imaginary part of the dielectric function is proportional to the combined density of states obtained from the above assumption on the density of states of the valence and conduction band. Without modification, the original expression for the imaginary part of the dielectric function would increase to inifinity with increasing energy. Due to this unrealistic behaviour the construction of the real part of the dielectric function by two Fourier transforms is not possible. Therefore, a so-called decay parameter has been added to the original expressions to drag down the imaginary part to zero for high frequencies. The OJL term is simply multiplied by the exponential exp(-sqr((wavenumber-E0)/decay))).

The SCOUT dialog to set these parameters is the following:

The gap energy, gamma and the decay constant are to be specified in wavenumbers (1/cm).

An OJL dielectric function example is shown below:

In this case the dielectric function had been adjusted to a transmission spectrum of a thin amorphous film on a microscope glass slide:

Campi-Coriasso model

The interband transition model suggested by Campi and Coriasso [Campi 1988A] leads to the following expression for the imaginary part of the susceptibility:

The 4 parameters of the model must be entered using wavenumber units in the following dialog:

Here the following assignments apply:

ωP

Oscillator strength

ωτ

Damping constant

ω0

Resonance frequency

ωGap

Gap energy

The following example shows the dielectric function obtained with this model (the parameters are those displayed in the dialog above) where a constant dielectric background of 1 has been added:

Note that the peak of the imaginary part occurs at the sum of the gap and the resonance frequency. Below the gap the imaginary part is exactly zero, i.e. there is  no absorption.For large resonance frequencies the Campi-Coriasso model approaches the harmonic oscillator model.

Tauc-Lorentz model

Another suggestion for an interband transition model was given by [Jellison 1998A].  This model is called the Tauc-Lorentz model and gives the following expression for the imaginary part of the susceptibility:

The 4 parameters of the model must be entered using wavenumber units (except for S which has the unit (1/cm)1/2) in the following dialog:

The following assignments apply:

S

Strength (in the Jellison paper a constant A was used which is the square of S)

ωτ

Damping constant

ω0

Resonance frequency

ωGap

Gap energy

The following example shows the dielectric function obtained with this model (the parameters are those displayed in the dialog above) where a constant dielectric background of 1 has been added:

Note that the peak of the imaginary part occurs at the resonance frequency. Below the gap the imaginary part is exactly zero, i.e. there is no absorption.

Master model introduction

Master model objects are dielectric function models with the additional feature that you can compute the values of selected susceptibility parameters from user-defined parameters by user-defined formulas. This provides a very high modelling flexibility.

There are two types of situations where master models are useful. In the first one the parameters that you want to obtain from the optical analysis are not those that appear in the susceptibility types that the program provides. A typical example is the determination of carrier concentrations by infrared spectroscopy: This quantity is proportional to the square of the Drude parameter plasma frequency which is the fit parameter to be used here. In master model objects you can define a fit parameter called 'Carrier concentration' and compute from its value the plasma frequency of the Drude model which is then used in the calculation of the optical spectra. The user-defined fit parameters are called master parameters whereas the model parameters computed from the master parameters are called slave parameters.

In the second case of problems you want to control many model parameters by only a few master parameters. A good example is the description of amorphous oxides for various oxygen contents. If you use the OJL model for the interband transition and you investigated already how the OJL parameters like gap energy, mass and gamma depend on the oxygen concentration in the oxide, you may want to describe the oxide by only one parameter, namely the oxygen content. Applying a master model object you can define the fit parameter 'Oxygen content' and specify for all model parameters that vary with the oxygen content how they depend on the master parameter by suitable expressions. This way a complex optical constant model can be completely controlled by only one parameter.

Master parameters

In the master model object window you can access the master parameters by Parameters|Masters which opens the following dialog:

You can define up to 6 master parameters each of which has a name, a value and the number of digits that is used to display the master parameter's value. In the formulas of the slave parameters you can refer to the master parameters by C1, C2, ... and C6, respectively. The master parameters appear as fit parameters of the master model objects.

Slave parameters

Master model objects have a list of slave parameters the values of which are computed from the master parameters by user-defined formulas or user-defined lookup tables. Slave parameters are parameters of the susceptibility contributions that make up the dielectric function model. The list of slave parameters may look like this:

This list is almost the same as the fit parameter list of SCOUT. With New (or pressing the corresponding speed button '+') you get a list of all susceptibility parameters from which you can select those that are to be slave parameters (remember that you can select many items at a time keeping the Ctrl-key pressed while clicking items). In the example above (the AlGaAs model in the database delivered with SCOUT) several slave parameters are chosen which are computed from the first master parameter (C1, this is the Al content ranging from 0 to 1) according to the specified formulas.

Instead of using a formula, you can also define the relation between the master parameter and a slave parameter by defining a lookup table (at the moment, this is only possible for the first master parameter C1). This feature is especially useful if you have analyzed a sample series with varying composition (= variation of the master parameter) in the batch control window: In this case you have already a table of slave values for certain master parameter values. Making use of the batch control results, create a table like the following in the workbook (don't mix up the workbook and the batch control window - these are different objects in SCOUT):

In order to use this relation for the parameter 'Tauc II: resonance frequency' select the cell B41 in the workbook as shown and select the parameter 'Tauc II: resonance frequency' in the list of slave parameters. Then use the command Lookup table|Read from workbook rows in order to import the C1 master parameter values (denoted as 'Al content' in the table) from the selected row (SCOUT will read to the right until the first empty cell is found) and the corresponding slave parameter values from the row below (denoted as 'Tauc II: resonance frequency'). The lookup table is used when there is no formula that defines the relation of master and slave parameter:

In order to check or modify the lookup table of a slave parameter, select it in the list of slave parameters and use the command Lookup table|Write to workbook columns or Lookup table|Write to workbook rows. The data will be written starting at the current cursor position in the workbook.

In addition to a lookup table import for every slave parameter separately, you can import lookup tables for all slave parameters in one step if you prepare a corresponding data block in the workbook. Here is an example:

Note that the sequence of parameters in the workbook and the slave parameter list must be exactly the same. In order to import the lookup tables, place the workbook cursor in the cell B2 (as shown above) and use the command Lookup table|Read all from workbook rows in the slave parameter list. Finally delete all formulas in the slave parameter list:

Now all slave parameters are computed using their lookup tables.

If the set of master parameter values for the lookup tables of all slave parameters are the same, you can write the current lookup tables to one block in the workbook. The command is Lookup table|Write all to workbook rows. You can then modify the relations in the workbook and re-import the modified lookup tables as shown above.

Fit parameters

The fit parameters of master models are the 6 master parameters and, in addition, all those susceptibility parameters which do not appear as slave parameters. Hence you can work with master models the same way as with dielectric function models fitting 'normal' susceptibility parameters to measured data. At any time you can introduce master and slave parameters and refine or simplify your choice of parameters.

Interpolate n and k tables

Motivation

A rather simple version of a master model is a linear interpolation of tabulated values of n and k values (real and imaginary part of the refractive index). Material objects of type 'Interpolate n and k tables' are made to do this job. This section shows how to use objects of this type. A step-by-step example will demonstrate how to get a ready-to-use object from scratch.

The example uses n and k data for different stats of WO3 found in literature (Rubin, Michael D., Klaus von Rottkay, Shi-Jie Wen, Nilgün Özer, and Jonathan L. Slack, Solar Energy Materials and Solar Cells 54, 1996, 49-57). The published pictures show graphs of the real part n and the imaginary part k for various densities of injected charge:

The goal is now to make these data available as a material object which delivers n and k values for any value of the injected charge in the range 0 ... 68.

Data preparation

If you just have got graphs you have to use a digitizer to obtain digital numbers. I have used the Digit tool that comes with our software packages. In order to import the data into the material object you have 2 options:

▪Generate separate data files for every charge value: In this case you have to produce files which contain n vs. wavelength data and k vs. wavelength data. The file format must be readable by our software - in the simplest case you create text files with a wavelength column and a column with n values (or k values, respectively). Such a file would look like this:

▪You generate a complete table with all n values and a second table with all k values. The table should have a wavelength column and for each charge value a column with n values. If you prepare the table in Excel format you can import it into the workbook so that it looks like this:

That was the hard part. We will now proceed and use these data to fill the new object.

Object preparation

Open the list of materials and generate a new object of type 'Interpolate n and k tables'. Open this object and

•execute the menu command 'Master parameter / change name' and set the name of the parameter to 'q' (for charge).

•execute the 'Range' command and set 200 points, covering the wavelength range 300 ... 2500 nm.

•Click on 'Tables / n' to open the following subwindow:

In this window we are going to collect the n data.

Importing data from single files

Use the command 'New and import' to read data from a file that has been generated as explained in the last section. For text files with 2 columns (wavelength, n) use the import filter 'xy-format (spreadsheet)'. After the file has been selected press 'a' on your keyboard for automatic scaling of the graph:

A click on 'Show list' opens the list of spectra:

Click on 'Actions/ Set filenames as spectrum names' - this replaces the noname name by the filename without path. Repeat the data import for all files that you have:

Now, finally, type in the parameter values that belong to the files into the first column (Parameter). Click on Sort and verify that your table looks like this:

Close the n table and return to the new material object. Pressing 'a' for automatic scaling should lead to a graph like this:

Repeat the steps described above for the k values which are collected in a similar object.Once you have done that the final object is this:

Now try if the object really interpolates values. Use the command 'Master parameter / set value' and type in the number 40. Then press Update. The new data should look like this:

We can now use this material object to deliver n and k values for the charge range 0 ... 68.

Importing data from workbook table

If you have a data table in Excel format already the import is much faster (because you did the tedious work before). Open the workbook and select the top left corner of the data block you want to import:

As described above, open the subwindow that will collect the n values:

Execute the command 'Workbook / Import _ p1 p2 ... x y1 y2 ... downwards' and press 'a' for automatic scaling:

Very important: Click on 'Range' and set 'nm' as spectral unit in the following dialog:

Then click on 'Show list' which opens the list of spectra. In this list, click on 'Set all spectral units' and choose 'nm'. This action sets 'nm' as spectral unit for all spectra (see last column):

You can now close all subwindows and import the k data in the same way.

How to use the new object

You can now use the object for your computations. In the list of fit parameters there will be one parameter named 'q' only for this object. Select q and set the parameter range to 0 ... 68. Click on 'Slider to generate a moving slider window which lets you easily change the optical constants of the object. You can fit the parameter q like any other model parameter.

Since you put a lot of effort in getting all the data into the new material object it is a good idea to save the configuration that you used to generate the object. In addition, you should save the new material to the database for future use.

Introduction

The optical properties of inhomogeneous materials can be described by so-called effective dielectric functions if the wavelength of the probing radiation is much larger than the typical sizes of the inhomogeneities of the system [Theiss 1994A, Theiss 1995B]. In this case retardation effects can be neglected and the response of the mixed material to an incoming electromagnetic wave can be calculated in a quasi-static approximation, i.e. one has to answer the question which volume averaged polarization will exist in the sample in response to an applied static electric field.

Macroscopically the inhomogeneities cannot be seen (there is no light scattering in the long wavelength limit) and the system can be treated then as being quasi-homogeneous. An effective dielectric function εeff can be introduced which is an non-trivial average of the dielectric functions of the individual components.

For the case of a two-phase composite the situation is shown below:

Obviously the microgeometry plays an important role for the effective dielectric function: if, for example, the embedded particles are metallic and the host material is an insulator the effective medium can show metallic or insulating behaviour, depending on wether there is a percolating network of the embedded particles or not. But also other properties of the topology may influence the effective dielectric function significantly.

Several very simple 'mixing formulas' have been established, the most prominent being the ones of Maxwell Garnett [Maxwell Garnett 1903A] and Bruggeman [Bruggeman 1935A], both being implemented in SCOUT. The model due to Looyenga [Looyenga] has been added also since it leads for some typical microstructures to good results. All these simple effective medium concepts use just one parameter to characterize the microgeometry, namely the volume fraction f of the embedded particles. Due to this simplication in many cases quite wrong results are the consequence. The most general concept due to Bergman [Bergman 1978A][Theiss 1994A] holds in any case (as long as the electrostatic approximation is valid) and is therefore included in SCOUT with best recommendations from the author.

All effective dielectric function objects need to point to two dielectric functions, namely those of the host material and the embedded particles. The assignments are usually done using drag&drop operations like in the assignment of dielectric functions to layers in layer stacks. To do so, you have to open both the dielectric function list and the parameter window of the effective dielectric function. In case of a 'Bruggeman object' this looks like the following:

Start the drag operation by pointing on the wanted material in the dielectric function list, press the left mouse button and keep it down while you move the mouse cursor to the effective medium parameter window. If the material is going to be the matrix material place the cursor in the white rectange below the text 'Matrix material' and release the mouse button. In the case shown above vacuum was selected as matrix material. In an analogous way, drag and drop the particle material to the white area under the text 'Particle material'.

Maxwell Garnett

The Maxwell Garnett formula [Maxwell Garnett 1903] is the following:

It is applicable to systems of low volume fractions of the embedded particles which must also be far away from each other.

Bruggeman

The Bruggeman theory (also known as 'EMA' for effective medium approximation) gives the relation

and is probably the most often used effective medium concept. For very low volume fractions it is equivalent to the Maxwell Garnett theory, but for increasing volume fraction its results are quite different. Below f=1/3 there is no percolation, above that threshold the embedded particles are assumed to be partially connected.

Looyenga

The Looyenga formula

which is quite unknown is included in SCOUT since it has some features being useful for certain cases. For any volume fraction the expression implies a percolation! This means one can try to use it for very loosely packed systems which have nevertheless a connected network of the particles, e.g. metal blacks.

Bergman representation

The so-called Bergman representation of effective dielectric functions is the most general form of effective medium approaches:

The function g(n,f) is called spectral density and holds all topological details of the microgeometry. It is a real, non-negative function, normalized in the interval [0,1] for n. In the case of isotropy there is also a condition for the first moment of the spectral density:

Any microgeometry is represented by a certain spectral density. However, in general it cannot be computed exactly for real systems since the topology is too complicated (and in most cases not even known).

To gain some insight into the relation of spectral density and microtopology some research projects in the past had the goal to fit theoretical optical spectra (of systems with known optical constants of the matrix and particle materials) to experimental ones by adjusting g(n,f). This way a lot of experience has been achieved being useful in the treatment of new two-phase composites.

In many cases an important property of the microgeometry is the 'degree of connectivity' of the embedded particles which usually is called percolation strength. Especially metal-insulator composites can switch from metallic to dielectric behaviour when the percolation strength is reduced. It can be shown that this feature shows up in the function g(n,f) as a δ-function at n=0. Therefore, a separation of this diverging term from the continuous part of the spectral density is useful:

The factor g0(f) is called percolation strength.

Implementation

The two parameters volume fraction f and percolation strength g0(f) are specified in the Parameters dialog of Bergman representation objects in SCOUT. Then, to adjust spectral densities to fit experimental data, one has to parameterize the shape of the spectral density in a suitable way. We have chosen to do that in SCOUT by a set of definition points. Each point is defined by a value of n and a corresponding g(n) value. You can use an arbitrary number of definition points. The position of the points can be set 'graphically', i.e. by the mouse.

The shape of the spectral density is then obtained by cubic spline interpolation through the definition points. Usually, any user-defined shape (drawn visually with the mouse) will violate the restrictions mentioned above (normalization, coupling of the first moment of the spectral density to the volume fraction). Therefore, SCOUT adds a smooth peak to the user-defined curve to ensure the proper value of the 1st moment. This is followed by an automatic rescaling which normalizes the spectral density.

The Points submenu contains some commands to control the definition points. Add points brings up a mode where a mouse click creates a new definition point at the mouse cursor position. After the Move points command  you can catch an already existing point with the cursor and drag it to a new position. If the Continuous update option is selected the spectral density shape is updated with each mouse move. If the option is switched off, the spectral density is updated when the mouse button is released at the final position of the definition point. Clicking at points after Delete points deletes the points. Delete all points deletes all points and starts with three new definition points at default positions.

A typical situation is this:

Here the user-defined curve had too much weight on the right side, hence SCOUT added the peak to the left. If you move down the point at n=0.72 you reduce the weight on the right side and the peak on the left side is not needed any more:

Note the re-scaling of the height of the definition points. If you reduce the height of that point further on, SCOUT has to add something on the right side to achieve the correct value of the 1st moment:

Database connection

The material list of SCOUT can exchange objects with the database. The Database menu command opens a window showing the records in the database. At program start SCOUT loads the default database that was created during setup (located in the chosen program directory). In the Options submenu of SCOUT you can connect to a database of your choice. The path to the active database is indicated in the upper right corner of the database window.

The exchange of material objects is done quite easy with drag and drop operations.

From the database to SCOUT

To export a material from the database to the SCOUT material list, select the corresponding record in the database table and start a drag&drop operation (i.e. press the left mouse button). Then move (while the left mouse button is pressed) the cursor to the material list and release the mouse button, i.e. drop the material object there.

From SCOUT to the database

Start the drag operation at the desired row of the SCOUT material list and move the cursor with pressed left mouse button to the record table of the database window. Release the mouse button (i.e. drop the material). If the database already contains a record with the name of your material you will get an error message. In this case, rename your material and try to move it to the databasa again.

If the material has been added to the database you are asked for your name (you will be the author of this database record) and a comment that describes the material. If you have specified a user in the Options submenu SCOUT will use this name and fill it into the appropriate database record automatically.

Layer stack introduction

The list of layer stacks is opened by a right-click of the corresponding treeview item (Layer stacks). In most cases you will investigate one layer stack only, but SCOUT lets you work with an unlimited number of stacks if you want to. In the list of layer stacks you can create, edit and delete layer stacks. To change a layer stack, select in the list of layer stacks and open its window by the Edit command or a right click with the mouse.

You can open the first layer stack in the list of layer stacks from the main window of SCOUT using the command Actions|Open first layer stack. This is the shortest way to the layer stack definition.

If a layer stack is displayed in a view you can open the layer stack definition window by holding the Ctrl key down while you click on the hotspot of the view element.

Layer stacks in SCOUT are defined in a list beginning with the top halfspace of the stack and ending with the bottom halfspace. In between an almost arbitrary sequence of thick layers or thin films can be defined. The light beam is incident on the layer stack from the top halfspace. Hence in most cases the top halfspace should be vacuum (or air) as is the case in almost all experiments (except ATR, see below). An example of a simple layer stack definition is this:

The current layer stack definition is shown in the center of the window. On the left side you have access to pre-defined layer stacks, on the right side the available materials to be used in the individual layers are given. The assignment of materials is discussed below.

In order to add new layers you can select the type of the new layer in the dropdown box given in the top of the window (where 'Thin film' is selected). Pressing the '+' button will insert a new layer of the indicated type above the currently selected layer. Use the '-' button to delete the selected layer.

An alternative way to add new layers to the stack is the following: Open in the treeview on the left side the node 'New single layers' by pressing the '+'-sign to the left of it. You will get a list of all available new layer types:

Just drag&drop the layer type to the wanted position in the stack and a new layer of this type is created.

The individual layer types that may occur in a layer stack are discussed below:

•Halfspace

•Simple layer

•Thin film

•Thick layer

•Variable thickness

•Rough interface

•Begin superlattice

•End superlattice

•Concentration gradient

•Anisotropic layer

•Included layer stack

Useful commands

Use the command Manipulate|Flip part of layer stack to reverse the order of layers. You are asked to type in the top and the bottom layer of the section to be reversed. Type in the number of the layers that is assigned on the left side, e.g. 2 for the top layer and 3 for the bottom layer if you want to switch 'oxide-air mix' and 'My oxide' in the example given above. The situation afterwards is this:

With File|Report you can write the current layer stack definition to the workbook:

In the workbook you can Copy text fractions and paste them into your word processor.

Check

Use this command to check the validity of the current layer stack definition. In a situation like the following

you will get the error message

which reminds you that something is wrong with the 'Begin superlattice' layer (The 'End superlattice' is missing).

Halfspace

As mentioned above the stack of layers is enclosed in between two semi-infinite 'halfspaces'. Every correctly defined layer stack must have exactly two halfspace layers, namely the top and the bottom halfspace. The only thing to be done with halfspace layers is to assign a material to it.

Simple layer

Simple layers are used in most cases to represent a thick or thin layer of a material in the stack. Simple layers have a thickness (always specified in microns) and you must assign a material to it. In addition, you can choose between two modes of handling the contributions from multiply reflected partial waves, as discussed below.

Some considerations about wave propagation through layer stacks are discussed in [Harbecke 1986A], in particular the superposition of partial waves. In the case of thin layers, the partial waves reflected at the top interface and those that travel through the layer and are reflected back at the bottom interface must be superimposed to the total reflected wave by summing up their amplitudes, taking into account the phase. This may lead to constructive or destructive interference, depending on the wavelength of light. This kind of superposition is called 'coherent'. The interference fringes observed in reflection or transmission spectra get very narrow if the thickness of the layer becomes larger and larger.

Eventually the narrow structures are not resolved experimentally due to the limited resolution of spectrometers, or due to thickness inhomogeneities over the investigated sample spot which may lead to a cancellation of the interference structures. In these cases the measured spectra are quite smooth as the red one shown below, whereas the simulated blue spectrum shows interference fringes. As can be seen the sharp structures are not resolved completely in the simulation, either.

Measured transmission spectrum (red) of an ITO layer (90 nm) on top of a glass substrate (990 micron thickness). The blue curve shows a computed spectrum with coherent superposition of partial waves for the glass layer.

Instead of doing the tedious task to compute a lot of spectra for various thicknesses and take the average to remove the interference fringes in the simulation one can follow a shortcut and drop the phase terms in the superposition of the partial waves, as suggested in [Harbecke 1986A]. This is called the incoherent superposition which leads to multiple reflection, but no multiple interference effects. As shown below the agreement between computed and measured spectra can be excellent if the layer thickness is really much larger than the wavelength of light:

Same as above, but now with incoherent superposition of partial waves for the glass layer.

To switch between coherent and incoherent superposition mode for a layer, select the cell labeled 'coherent' or 'incoherent' in the layer stack list and press the function key F4 or F5. This will change from coherent to incoherent treatment or the other way round.

Warning: if you choose incoherent superposition for thin layers your computed spectrum will be wrong!

Thin film

Layers of this type are very similar to simple layers. Their thickness is always specified in nanometers, and the treatment of partial waves is fixed to coherent.

Thick layer

Layers of this type are very similar to simple layers. Their thickness is always specified in millimeters, and the treatment of partial waves is fixed to incoherent.

Variable thickness

This layer type was introduced for cases where the thickness of one layer in the stack is not homogeneous over the investigated sample spot, but varies due to some lateral gradient.

The algorithm used to compute the spectra is described in [Theiss 1997A]. It involves the Fourier transform of the layer thickness distribution function.

In the layer stack list objects of this type appear as follows:

Three parameters are to be set to define a layer of variable thickness. The average thickness, the thickness 'variation' and a third one which is an integer specifying the type of thickness distribution function. Whereas the first two parameters (thickness and variation specified in microns) appear as adjustable fit parameters, the latter is just a user-defined constant. In the dialog shown above type 2 has been chosen.

The following distribution functions are defined at present:

Distribution function type 1:

For a single 10 μm thick layer of a material with refractive index 1.5 one gets the following reflectance spectra:

Variation 0.1 μm:

Variation 0.5 μm:

Variation 1.0 μm:

Distribution function type 2:

Variation 0.1 μm:

Variation 0.5 μm:

Variation 1.0 μm:

What can be observed here is the transition from the coherent superposition of the partially reflected waves (from the front and end interface of the layer) at low wavenumbers to the incoherent superposition (no interference fringes) at high wavenumbers.

Warning: Layers of this type should not be combined with layers of type thick layer or simple layers with incoherent superposition!

Thickness averaging

This type is almost identical to the layer type Variable thickness. The only difference: Thicknesses are specified in nm instead of microns.

Rough interface

Since many people asked for a convenient description of scattering losses due to interface roughness we have developed a special layer type which may help in many cases.

To demonstrate the application of this feature we consider a simple interface between vacuum and silicon in the Vis/UV region. The reflectance (10° angle of incidence) is the following:

To introduce roughness losses a layer of the new type 'Rough interface' is inserted between the vacuum and the silicon halfspace:

To get access to all the layer parameters you have to expand the window a little:

The most important parameter is given in the 8th column ('1.0' is the default). Here you can define a function which determines a frequency-dependent correction factor which multiplies both the amplitude reflection and transmission coefficient of the interface. Click on the '1.0' and type a 0.5 instead. Now you have (after a re-calculation) the following spectrum:

The amplitude reflection coefficients are multiplied by 0.5 which means that the intensity is now one fourth only.

Of course, you may want to define a frequency dependent correction since scattering losses typically are more pronounced for small wavelength than for large ones. You can do so. The wavenumber can be introduced into the formula as the variable 'X' as shown below:

Now for low frequencies the correction factor is close to one and for high frequencies it gets larger:

Here the blue curve is the new spectrum including scattering losses whereas the red one shows the original spectrum without interface roughness for comparison.

As you can see you can be quite creative and implement all kinds of scattering loss corrections specifying the corresponding 'loss function'.

In order to increase your flexibility even more the 6th and 7th column of an interface roughness layer specify two possible fit parameters that you can use in the formula. As shown in the following example you can refer to the two parameters as C1 and C2, respectively:

Of course, the given formula gives the same correction factor as before, but now you could fit the C1 and C2 values to experimental data.

Here is an example: setting C1=0.8 and C2=100000 and loading the previous spectrum (that was created using the explicit formula 1/(1+X/500000) ) as a 'measured spectrum' the following situation is created:

Declare the two roughness parameters as fit parameters and start the downhill method. After a short while the original values are recovered by the fit:

We hope that this explanation of the interface roughness layer type is clear enough and that two adjustable parameters in a scattering loss model turn out to be sufficient.

Current limitations

•interface roughness layers cannot be used in connection with anisotropic layers.

A 'real world' application example of a roughness correction is discussed in [Valk 1998A].

Superlattice

You can repeat parts of layer stacks by enclosing the layers between 'Begin superlattice' and 'End superlattice' lines. These lines are no real layers but indicate that the enclosed layers are repeated as often as stated in the 'Begin superlattice' line. Here is an example:

Concentration gradient

This type of layer has been introduced for the description of gradually changing composition in a part of the layer stack. A 'concentration gradient layer' must use an effective dielectric function for which the first fit parameter is the volume fraction. It is recommended that you use one of those effective medium theories that have as their only parameter the volume fraction, such as the Maxwell Garnett, Bruggeman or Looyenga formulas.

Like simple layers concentration gradient layers have a thickness and a dielectric function (once again: this must be an effective dielectric function). However, the layer will be divided into a set of sublayers (whose number can be specified by the user). All sublayers have the same thickness (the total layer thickness divided by the number of sublayers). Each sublayer can have its own value of the volume fraction which is defined by a user-defined formula.

The graph of the user-defined formula is displayed in a subwindow of the object. It can be displayed in the main view as well: Just drag&drop the concentration gradient layer from the treeview into the view element list.

The number of sublayers of a concentration gradient appears as fit parameter. This makes it easy to find out how many sublayers are sufficient for reasonable computations.

Simple example

The application of concentration gradient layers is demonstrated using the following example. We consider a reflectance spectrum in the visible spectra range. The layer stack is a concentration gradient layer on top of a silver halfspace. The light enters from vacuum. The concentration gradient uses a Bruggeman effective medium with Ag particles embedded in vacuum. The dielectric function of silver is taken from the dielectric function database (Ag(JC)).

The layer stack is this:

Note the number three in the 7th column of the concentration gradient layer: This is the number of sublayers to be used for dividing the total thickness which is 10 nm in this case. With a right mouse click or the menu command Edit you can open a window which shows the volume fraction profile:

In the example a linear profile is defined with the simple formula 'X'. At the top of the layer (the left side of the graph) the silver volume fraction is 0 and at the bottom solid silver (volume fraction 1.0) is reached.

The reflectance spectrum (normal incidence of light, blue curve) is not very different from that of a sharp vacuum-air interface (red curve):

Note that you should sample the total thickness into sublayers whose optical thickness is much less than the wavelength of light. Otherwise you will see features in the spectra caused by the steps in the profile. If we increase the total thickness to 100 nm 3 sublayers are not sufficient. The following picture compares the computed spectrum with 3 sublayers (red curve) to that with 10 (blue):

The difference between 10 (in red) and 20 sublayers (blue) is not very large:

Hence 20 sublayers seem to be sufficient for this case. Going from 20 (red) to 30 (blue) doesn't change the spectrum any more:

Of course, you can define more advanced profiles with the flexible choices of user-defined formulas. A smoother profile than the linear one is defined by the formula SQR(0.5-0.5*COS(PI*X)), for example:

This leads to the following spectrum (red: linear profile, blue: smooth profile):

This example is closed with an interesting spectrum of the smooth profile for a thickness of 500 nm (blue curve) which leads to a very low reflectivity (for comparison the 100 nm spectrum is repeated here in red):

Noble metal/air-composites with low volume fractions are called 'blacks' for obvious reasons!

Advanced example

Now we show some more features of concentration gradient layers using an example of silicon oxide layers of various oxygen concentration on a 1 mm thick glass plate. The example makes use of two database entries, namely those of SiO and SiO2. A concentration gradient layer on the glass substrate is used with a mixture of SiO particles embedded in an SiO2 matrix. The SiO volume fraction is modeled by the formula C2-C2*COS(2*PI*C1*X) which produces profiles like the following (for C1=10 and C2=0.25):

The periodical repetition leads to constructive superposition of partially reflected waves producing pronounced interference maxima:

You can use the six constants C1, ..., C6 in the formula. Together with the total layer thickness these constants appear as fit parameters. You can set these constants and their names in the dialog that you open with the Parameters command in the Gradient definition window:

Hence you can select each of the constants as fit parameters and use sliders to learn how profile changes influence your optical spectra. If you have a fast PC and a large screen SCOUT can be a very powerful tool for intuitive thin film design!

Anisotropic layer

Optically anisotropic layers may occur in the layer stack. They are handled using the wave propagation method described in [Parikh 1992A]. However, compared to simple layers, there are some severe limitations due to the more complex algorithm to be used in this case.

First of all, up to now SCOUT supports a special case of anisotropy only, namely uniaxial layers where the dielectric function in the direction of the layer stack normal  (called the z-direction in this section) may be different from the dielectric function in the plane of the layer stacks, called the x-y-plane. You can use as many of such layers in the stack as you like.

Another limitation in combination with anisotropic layers is the following: You can have only one thick layer in the stack for which you want to switch off the narrow interference patterns (e.g. a thick, but transparent substrate). As discussed above for simple layers, this can be done setting the incoherent option for the superposition of partial waves. If you use incoherent superposition for one of the layers in the stack, and there are anisotropic layers defined, SCOUT will do the following: Lacking an elegant and fast way of averaging out the narrow interference features SCOUT does it the tedious and stupid way, namely by computing several spectra (at present: 20) with slightly varying thickness of the thick layer. The average of these spectra is then taken as the result of the computation and displayed on the screen. Obviously, the computational times will be large since many spectra have to be computed, and it may occur that the averaging is not complete and there remain some 'interference artefacts' in the spectrum. To identify these artefacts it is recommended to repeat the computation for a slightly different thickness of the thick layer and compare the results.

Uniaxial anisotropic layers require the definition of two different dielectric functions for the z-direction and the x-y-plane, respectively. For this reason, there is no entry in the 'material' column of the layer stack definition. Instead, the text 'See parameters' reminds you that you have to do the assignment differently here. Use the Edit command (or a click with the right mouse button) to open the following dialog which is used to do the dielectric function assignment:

To replace the 'none' assignments you have to drag the wanted materials from the list of dielectric functions to the 'none' text and drop them there. Afterwards the dialog may look like this:

This example is taken from the second SCOUT tutorial where you can learn how to determine molecular orientation angles from infrared spectra using anisotropic layers.

Included layer stack

You can include in a layer stack definition another layer stack. This is useful if you investigate a thin film coating deposited on different substrates, for example. In this case, you should define the coating in a layer stack definition of its own and include it as a block into the layer stack definitions for the individual substrates.

Here is an example: Suppose you want to analyze spectra of a thin film system deposited on a microscope slide and a silicon wafer. You have to create three layer stacks in the layer stack list:

Open the object 'Test layer' and define the thin film system between two vacuum halfspaces. Do not use any substrate here:

You can use any kind of layers with the exception that the last layer above the bottom halfspace must not be a rough interface. As mentioned above, this layer stack will be included into the others (see below) without the top and bottom halfspaces - hence it does not matter which materials you assign to the halfspaces in this list.

Now open the layer stack 'Test layer on Si-wafer' and define the Si-wafer substrate (it's a single side polished wafer with a rough backside in this example) as follows:

The test layer is now inserted as an included layer stack by drag&drop. Keep the layer stack 'Test layer on Si-wafer' open and open the list of layer stacks as well. Take the object 'Test layer' in the layer stack list with the mouse and drag it above layer 2  in the Si-wafer layer stack (i.e. 2 nm SiO2 layer) as shown below:

Drop it there and watch the update of the layer stack definition:

Do the same for the layer stack with the microscope slide substrate:

You can now use the layer stacks with the two substrates to compute optical spectra. The following example shows the computation of R and T for the microscope slide substrate and R for the Si-wafer substrate. If you change the thickness of one of the layers in the 'Test layer' stack it is automatically changed in all layer stacks which contain the 'Test layer' stack as included layer stack:

Note that layer stacks can be conveniently displayed in views. This is explained in the section 'Layer stack view' (see below).

Assigning materials to layers

Each layer in the layer stack represents a slab of a certain material. There are several ways to 'fill' a layer with a material, either by  drag&drop operations or using function keys on the keyboard.

Drag&Drop within the layer stack definition window:

On the right side of the layer stack definition window you see in a tree view the available materials:

Clicking the + or - signs in the treeview you can open or close the individual nodes. The first node called Materials (this configuration) gives a list of all materials in the list of materials of your current SCOUT configuration. The second one called Materials in database shows all materials available in the database to which you are connected at present. In order to assign a material to a layer in the layer stack, just drag it from the lists to the right and drop it onto the layer.

In case you drop a material from the database SCOUT checks if a material of this name is already in its list of materials. If yes, this material is used and nothing is loaded from the database. If the wanted material is not yet in the list of materials, it is fetched from the database and entered into the list of materials. Note that the treeview of the available materials is not updated automatically, so the new material will not show up in the node 'Materials (this configuration)' unless you apply the menu command Update lists.

Drag&Drop from the material list:

For this method you have to open both the layer stack list and the material list. In the material list, point with the mouse cursor on the wanted material, press the left mouse button without releasing it and move the cursor to the appropriate layer in the layer stack list. Now release the mouse button and check if the correct material is entered in the layer. Each layer in the stack can be filled by such a drag-and-drop operation.

Keyboard commands:

If you have only a few entries in the list of materials this method is quicker and should be your favourite one. In the layer stack list, place the cursor in the cell that specifies the material of the layer of interest. Now press the F4 function key and observe that the material changes. By repeatly pressing F4 you iterate through all entries of the material list, and you can stop when the appropriate material appears. You can move backwards in the list of materials by pressing F5.

In the case of anisotropic layers, only the drag&drop assignment from the material list can be used.

Working with pre-defined layer stacks

Saving and loading layer stack definitions

Layer stack definitions can be saved to files and re-imported as components to build complex layer stacks. These operations are only possible if the assigned materials of all layers are stored in the database. If you save a layer stack definition, SCOUT will check if all used materials are found in the database. If a layer stack definition is imported SCOUT will load all required materials from the database if there are not yet in the material list.

You can save the layer stack definition to a file using the command File|Save layer stack definition. SCOUT will create a file with the extension *.ls which contains the layer structure and the names of the assigned materials. Note that only the layers between the halfspaces are saved, but not the assignments of the halfspaces.

You can re-import a layer stack definition with the command File|Import layer stack definition. First you are asked if you want to delete the current layer stack before you import the new one:

If the current layer stack is not cleared the new layers are added before the currently selected layer.

Then you have to specify if the imported layer stack should be imported in the original order or inversed:

Finally a dialog searching for a layer stack definition file (extension *.ls) is used to specify the layer stack definition to be imported.

Database access

The treeview on the left side of the layer stack window makes the pre-defined layer stacks of the database accessible:

The nodes Substrates and Coatings show pre-defined layer stacks in the subfolders 'Substrates' and 'Coatings' of the database (SCOUT looks for layer definitions in the subfolders 'Panes' and 'Gases' as well which are mainly used by users of the CODE software). Clicking the + or - signs you can open or close the nodes of the treeview:

Drag a pre-defined layer stack from the treeview and drop it into the layer stack definition. You will be asked, if the partial layer stack should be inverted before it is inserted in the stack definition:

If you drop it on a layer, the coating will be inserted above this layer.

Insertion of other stacks of your SCOUT configuration

If you work with several layer stacks in your configuration, the treeview node 'Stacks in this configuration' will show all the stacks (Use the menu command 'Update lists' to update the treeview). If you drag one of the layer stacks in your layer definition it will be entered as an 'Included layer stack' (see above).

Thickness fluctuations

Designing new layer stacks, you might be interested in the change of properties, e.g. color coordinates, due to thickness uncertainties in the production of the stack. Special objects like the ColorBox object compute property variations as the result of thickness fluctuations. Before you can do these kind of special computations you have to set the fluctuation properties of each layer that may have a thickness uncertainty. This is done by the menu command 'Fluctuation' which opens a dialog like this for the currently selected layer:

Select the type of distribution (equal distribution, Gaussian) and the 'amplitude' of the fluctuation in % or in absolute values:

If you check the option Apply these settings to all thin films the selected fluctuation parameters will be assigned to all thin films in the stack. Be sure that you really want to have the same fluctuation settings for all thin films if you activate this checkbox.

A summary of all fluctuation settings of the current configuration can be displayed using the menu command File|Report|Parameter fluctuation settings in the main window of SCOUT:

Overview

If you are in a hurry and you have no time for detailed optical modelling, one of the following wizards may help you.

•The Pane wizard determines optical constants of thick, transparent substrates such as glass panes or pieces of plastic.

•The Foil wizard helps to determine the optical constants of plastic foils enclosed between two glass panes (safety glass).

•The Glass coating wizard extracts intensity transmission and reflection coefficients for coatings on glass panes. You can use these numbers to compute spectra of the coating on different types of glass - since this wizard does not compute optical constants, there are severe limitations of the application of glass coating wizard results.

Pane wizard

This wizard determines the optical constants of transparent, thick substrates such as glass panes. You must provide a reflectance and a transmittance spectrum, both recorded at normal incidence of light. In the case of reflectance you can use a spectrum recorded at 8° angle of incidence if the measurement has been performed at random polarization. This is usually achieved by applying no polarizor in the measurement.

Before you apply the wizard by executing the layer stack command Wizards|Pane wizard you should check the following settings:

•Select the database (menu command in the main window: File|Options|Database) where the new pane should appear

•Clear the layer stack and create a new single layer of type Thick layer. The material assignment is not relevant at this time - it will be modified by the wizard. The thickness of the layer will also be set by the wizard.

•Be sure that you have data files with the reflectance and transmittance spectra which can be imported by SCOUT. Both the reflectance and transmittance must be larger than 0, and their sum should not exceed 1.

In the following starting situation

now execute the layer stack command Wizards|Pane wizard. The pane wizard window opens:

Now simply follow the instructions given by the wizard. First action is to import the reflectance spectrum (press the corresponding wizard button at the bottom). After you have selected the file make sure the spectral unit in the following dialog is set correctly:

If the data are scaled in % (as in the example below)

press the button 'Divide by 100':

Now click on the > button to go to the next step:

Import the transmittance spectrum and divide by 100 if necessary:

The method used by the wizard requires that the transmittance is larger than 0. Please check out in which wavelength range this condition is true.

When you are done with transmission, click on >:

Now click the button 'Set thickness and spectral range' and enter the thickness in the following dialog (be aware of the unit micrometer):

Finally set the spectral range for which you have valid reflectance and transmittance data (T>0, R>0, 1-R-T>=0):

We are now almost through. Click on > again to activate the final computation:

The wizard window now displays the computed complex refractive index. Click the 'Change graphics settings' button if you want to modify the graphics settings. Note that this graph is the one that will be displayed in the database of optical constants. After your modification the graph may look like this:

Now click Finish. The wizard asks you for a name which will be used for the material in the database:

In the next dialog you should enter your name since you are responsible for the new database item:

Next you can enter a comment for the new database material:

Finally a database item in the folder Panes is created using the new material and the thickness you have specified in the wizard dialog above. You can set the name of this pane item in the last dialog of the wizard:

The wizard now closes and you will find a new pane item (after execution of the menu item Update lists) in the panes subfolder of the database:

Foil wizard

The foil wizard computes optical constants of plastic foils embedded between 2 glass panes. Before you apply the wizard by executing the layer stack command Wizards|Foil wizard you should go through the following preparational steps:

•Select the database (menu command in the main window: File|Options|Database) where the new foil should appear

•Clear the layer stack and create a new single layer of type Thick layer. The material assignment is not relevant at this time - it will be modified by the wizard. The thickness of the layer will also be set by the wizard.

•Be sure that you have all required data files which can be imported by SCOUT. You will need 6 spectra: Both the reflectance and transmittance of the two panes that enclose the foil, and reflectance and transmittance of the laminated package pane top / foil / pane bottom.

The starting situation is the same as in the case of the pane wizard:

Start the wizard with the command Wizards|Foil wizard:

Click on > to start the work:

First click on Set thickness and spectral range. This will guide you through the following dialogs to enter the foil thickness

and to specify the spectral range of the analysis:

When you are done with these settings, press > to go on. You now have to import the 6 spectra, starting with the reflectance of the top pane:

When you are ready with the import of the current spectrum, check if you have to divide by 100 (click the corresponding button, if necessary). Then press > to go to the next step. The last spectrum is the transmittance of the laminate:

Finally press the Finish button to enter the result in the database. You have to set a name for the new material

,

enter your name

and a comment

After the material has been entered to the database, the wizard suggests a name for the new foil item in the foil subfolder. In the following dialog you get the chance to modify this identifier:

After the command Update lists you will find the new foil item in the Foils subfolder of the database:

Glass coating wizard

Coming soon ...

Overview

After having defined the materials of your project and the structure of the layer stacks you have to specify which spectra are to be computed. This is done in the spectra list which collects all spectra that you want to calculate. Each spectrum is defined in its own window where you can also import an experimental spectrum for visual comparison and automatic fitting of the model. The goal of the automatic fitting is to minimize the deviation (mean squared difference) between simulated and measured data.

If you fit several spectra (Reflectance and transmittance, transmittance and ellipsometry, reflectance spectra at various angles of incidence or polarization) the total deviation is computed as the sum of the deviations of the individual spectra. The latter are multiplied with a weight factor that you can set for each spectrum in the list of spectra.

At present the following types of spectra can be simulated with SCOUT:

•Reflectance

•Transmittance

•Absorbance

•ATR

•Layer Mix (computes the average spectrum of a patterned sample)

•Ellipsometry

•Ellipsometry stack average

•PL spectrum

•EL spectrum

•Layer absorption (computes the absorbed fraction of incident light intensity in a certain layer in a stack)

•Charge carrier generation (computes the number of photon-generated charge carriers in a layer)

In addition to 'real' optical spectra there are also objects that compute angular scans for a single spectral position:

•Angle scan

•XRR

Assigning layer stacks to spectra

When a new spectrum object is created the first layer stack of the list of layer stacks is assigned to the new spectrum. You can assign a different layer stack to a spectrum by the following drag&drop operation:

oEnter the tree view level (Press F7 if you are on the main view level right now)

oOpen the subbranches of the 'Layer stacks' branch

oRight-click the spectrum for which you want to change the layer stack assignment

oStart a drag&drop mouse action dragging the wanted layer stack from the tree view to the spectrum and drop it below the caption 'Layer stack' in the upper left corner of the spectrum window

oVerify the new assignment: The name of the assigned layer stack should appear underneath the 'Layer stack' label

Here is a screen shot showing the situation:

Introduction to spectrum simulations

Reflectance, transmittance, ATR and related spectra can be computed using objects of type 'R,T,ATR'. Opening these objects with a right mouse click in the treeview you get access to a window like this:

You have to set several items to uniquely define the spectrum to be simulated:

Layer stack

If you work with several layer stacks you have to assign the layer stack for this spectrum. Open the list of layer stacks with Objects|Layer stacks in the main window:

Start a drag&drop operation from the layer stack you want to use. Drop it onto the white field below the label 'Layer stack' in the spectrum window. Convince yourself that the right layer stack has been assigned after this action.

If you want to compute reflectance and transmittance spectra for laterally structured samples you can use spectra of type 'Layer mix' instead of the type 'R,T,ATR'.

Range

The Range command lets you define the spectral range of the simulated spectrum. As in previous SCOUT versions this range is not required to be the same as the one used for the dielectric function definitions.

Spectrum type

Here you can choose between different quantities that are computed. At present the following options are possible:

•Reflectance

•Transmittance

•ATR (attenuated total reflection)

•Absorbance ( = -log(transmittance) )

•Refl. absorbance ( = - log(reflectance) )

•1-R-T

Angle

This is the angle of incidence being zero at normal incidence of light and 90° at oblique incidence. As mentioned above the light is incident from the top halfspace of the layer stack.

You can also describe experiments where the illumination comes from the bottom of the the sample by setting the angle to a value between 90° and 180°. If you choose 172°, for example, the spectrometer beam comes from the sample's back with an angle of incidence of 180°-172°=8°.

Averaging over several angles of incidence

Sometimes it is important to average optical spectra for a distribution of angles of incidence. You can do this in SCOUT the following way. Open with Object|Angle of incidence distribution a list where you can define (by pushing the '+' button) as many angles of incidence as you like. Each angle gets a weight:

As soon as there is an entry in this list SCOUT ignores the angle setting in the spectrum window (see above) but computes for each angle in the list the spectrum. Each spectrum is multiplied by the weight of its angle of incidence. Then all spectra are added to the final spectrum which is displayed in the spectrum window. Note that the user, i.e. you, is responsible for the correct normalization of the weights (at least up to now). Of course, the sum of all the weight values should sum up to unity to represent a nice distribution function.

If you want to return to the normal setting of a single angle of incidence in the spectrum window you have to delete with the '-' button all entries in the list of angles of incdicence.

Polarization

For the polarization the following settings can be used:

•s-pol: S-polarization

•p-pol: P-polarization

•mixed: A user defined mixture of s- and p-polarization

Manipulation

After the computation of one of the spectrum types listed above you can apply a user-defined formula to finally modify the spectrum. By using a special keyword in the formula you can refer to the reference spectrum mentioned below. See the section on spectrum normalization for details.

Target spectrum

In addition to the simulated and the measured spectrum, you can display a target spectrum. This is useful if you use SCOUT for production control: In this case the target spectrum would represent the spectrum of the ideal spectrum, i.e. it represents what you wish to see for the production all the time. You can set the target spectrum in a separate object that you open with Objects|Target spectrum.

With File|Options|Target spectrum you can control how the target spectrum is displayed: Activate the checked menu item Show to show it, set the Pen to determine which pen is used to draw it, and select Line mode in order to set the line mode for drawing the spectrum.

ATR diel. const.

If you compute ATR spectra, the incident beam is incident from a material with an almost real refractive index which is higher than the  real part of the refractive index of the first material in the layer stack. You could replace the usual 'Vacuum' in the top halfspace of the layer stack definition by a suitable material and compute a regular reflectance spectrum. This is tedious and not very practical if you want to simultaneously analyze reflectance, transmittance and ATR spectra of one and the same sample. You would have to work with two different layer stacks in this case.

In order to avoid this complication, SCOUT lets you define the parameter ATR diel. const which is used only if you compute ATR spectra. In this case the top halfspace material assignment (usually Vacuum, as mentioned above) is ignored and a material with a constant and real dielectric function is used instead. The value of the constant real part of the dielectric function is given by the parameter ATR diel. const. The square root of this number is the refractive index of the ATR element.

Typical values are 11.7 for silicon and 16 for germanium in the infrared, or 2.25 for glass in the visible.

Import of experimental spectra

Experimental spectra can be imported using the Import command. After data import the experimental data are multiplied automatically by the spectrum defined in the Reference window.

Computing the deviation

The deviation of the simulated and measured spectrum is computed the following way: First for each data point of the simulated spectrum the value of the measured spectrum is computed by linear interpolation. The differences of the simulated and measured values are computed and stored in a data field which can be displayed together with the simulated and measured spectra. The display of the difference spectrum can be activated with the local file menu item File/Options/Difference/Show. The additional options Pen and Line mode regulate the style of the curve.

Without penalty shape function:

If no penalty shape function (see below) is defined, the difference value (simulated - measured) for each spectral point is squared. If a weight function (at the bottom of the window) is defined the value of the weight function at the spectral point is evaluated und used to multiply the squared difference. Finally the average of these numbers for all data points is computed. This is the deviation of this spectrum.

With penalty shape function:

In order to setup your own optimization strategies (especially for thin film design where you want to achieve certain spectral properties of a coating) you can define a so-called penalty shape function. This function is entered in a text field at the bottom of the spectrum window. In the user-defined formula you can use the symbol x to refer to the spectral position. The spectral unit is the same that is used for the computation of the spectrum, i.e. if you compute a wavelength spectrum in nm, x denotes the wavelength in nm. In addition, the symbol y represents the simulated spectral value, e.g. the computed reflectance or  transmittance value. Finally the symbol z refers to the difference of the simulated and measured value. You can use all the usual functions and expressions for penalty shape functions that are allowed for other user-defined functions as well.

The value of the penalty shape function is computed for each data point of the simulated spectrum and then multiplied with the weight function (if a weight function is defined). Finally the average value of the deviation for all spectral points is computed. This is the deviation of this spectrum.

If the term z^2 is entered as penalty shape function, the computed deviation values are the averaged mean squared difference values that one would get without defining a penalty shape function (see above). The graph below gives a comparison of this "normal" choice (red curve) and a penalty shape function which tolerates differences below 0.01 but heavily punishes larger difference values:

Total deviation in the case of several spectra:

If the optical model contains several spectra the total deviation is obtained by adding up the deviation values of all spectra, multiplying each number with the weight that has been assigned to the corresponding spectrum in the list of spectra.

Special actions

Objects of type 'R,T,ATR' can perform some special actions which may be useful in some situations:

•Direct determination of layer thicknesses by the Fourier transform technique

•Data smoothing to reduce the noise in measured spectra

Spectrum normalization

In general SCOUT computes absolute refletance or transmittance spectra with values between 0 and 1. If you want to compare simulated and measured spectra you must have also experimental data that are absolute. If you do not have absolute experimental spectra but only relative ones there are two ways to proceed in SCOUT.

One way is to normalize the relative experimental data using an appropriate correction spectrum to convert the data to absolute ones. The imported experimental data are multiplied automatically by the reference spectrum defined in the window that opens after the command Objects|Reference. You can apply a user-defined formula to  compute the reference spectrum or, alternatively, you can import the reference spectrum from a data file. If you have measured, for example, the reflectivitiy of a sample with respect to a reference mirror, you can import the absolute reflectivity of the reference mirror (which must be known from other experiments) into the reference window. Then, the imported relative data are multiplied with the reflectance of the reference mirror and converted to absolute reflectivities this way.

The second possibility is to compute relative spectra and compare them to relative experimental data. Of course, both quantities must be 'relative' in the same sense. An example is the following: In the experiment the transmission of a pure substrate is recorded as the reference, and then the transmission of a thin film deposited on that substrate is measured with the ratio of the two samples as experimental output. You might want to compare this ratio spectrum to the corresponding simulated ratio. To do this you have to proceed as follows: First, compute the absolute transmission spectrum of the blank substrate and store the spectrum to a data file, using the SpectraCalc format, for example. Then import this spectrum in the reference spectrum window. Set the content of the Manipulation edit box in the spectrum simulation window to 'Y(X,Y)=Y/REFERENCE' and activate Recalc. You should now obtain a simulated 1.0, since you are computing the ratio of the substrate transmission and the substrate transmission. Now modify the layer stack and compute relative transmission spectra which now can be compared to the measured ones.

If the Manipulation formula contains the keyword 'REFERENCE' it is assumed that you want to work with relative simulated spectra. In this case, the experimental data are not multiplied with the reference spectrum after import!

Polarization of the incident radiation

The mixture of s- and p-polarization is set by a user-defined function (giving the fraction of s-polarization) which is accessible in a separate window. This window is opened by the Objects|Polarization command. Here you can define the function using the elements given in the technical notes. The default value for the fraction of s-polarization is 0.5, i.e. ideally unpolarized radiation is assumed.

Alternatively you can import data determined otherwise applying the Import command or simply use Drag&Drop to enter data from other sources, e.g. the Data Factory.

Manipulation of the computed spectrum

After the computation of the spectrum (Reflectance, Transmittance, ATR, Absorbance, ...) you can apply a formula to finally manipulate the simulated data before they are displayed and compared to the experimental values. The formula is entered in the Manipulation edit box.

If you want, for example, to calculate the square root of the reflectance as the final quantity of the simulation you have to set the spectrum type to reflectance and the formula to Y(X,Y)=SQRT(Y).

The symbol  'X' in the formula represents the spectral quantity displayed on the x-axis, i.e. the wavenumber, wavelength or energy, for example.

In your user-defined formula you can also refer (with the keyword 'REFERENCE') to the reference spectrum. This can be used to normalize the simulated spectrum. See the section on normalization for details.

Thickness determination by Fourier transform

In the case of thickness determination by model fitting it is sometimes useful to obtain a good starting value for the thickness. This is in particular important in the case of thick layers.

If the spectrum exhibits pronounced interference patterns, and the refractive index of the deposited material is more or less constant, one can get a good approximation for the thickness from the Fourier transform of the spectrum. Here is an example:

If n is the refractive index of the layer, the peaks in the reflectance have a periodicity of 1/(2*n*d) where d is the layer thickness. The Fourier transform (power spectrum) of this spectrum shows a peak at the optical thickness 2*n*d:

Knowing the value of n one can compute from the peak position of the optical thickness the geometric thickness d.

The menu command Actions|FFT thickness analysis of the spectrum window performs the analysis explained above. You are asked for the spectral range to be used for the periodicity analysis (wavenumber minimum and maximum, number of data points) and the expected geometrical thickness range (minimum, maximum) as well as for the refractive index (constant, real): For the choices 1000 ... 6000 1/cm with 2048 data points and a thickness range 3 ... 50 microns with n=2.0 SCOUT computes the power spectrum and searches for the highest peak in the specified thickness range. The obtained thickness is 7.88 microns.

Once you have specified the parameters for the FFT thickness analysis, you can load new spectra and do the same analysis with the command Actions|Repeat FFT thickness analysis. In this case there are no questions about parameters but the previous ones are used once more.

Data smoothing

Noisy experimental data can be smoothed by the special action Actions|Smooth experimental data. You have to specify the spectral range for the operation and the number of times you want SCOUT to perform the smoothing action. A simple 3-point-smoothing is used (a point is replaced by the average of its value and those of the two neighbours in each iteration).

With the command Actions|Repeat data smoothing you can repeat the smoothing operation with the previous parameters.

Here is a short example. The original data

are smoothed in the range 5500 ... 6500 1/cm by applying the 3-point-averaging 10 times:

The spectrum type 'Layer mix'

If you want to compute reflectance and transmittance spectra for laterally structured samples you can use spectra of type 'Layer mix' instead of the type 'R,T,ATR'. With objects of this type you can average spectra of different layer stacks.

'Layer mix' spectra have a list of layer stacks rather than a single stack:

Press the Layer list button to open the list of the layer stacks used for this spectrum:

To add layers to this list drag&drop them from the list of layer stacks:

Each item in the list has a weight which should be proportional to the surface area that is covered by the corresponding layer stack. The sum of all weights should be 1.0 like in the following example:

For each layer stack in the list the spectrum is computed. The final spectrum is the sum of these 'sub-spectra' where each partial spectrum is multiplied by its weight factor.

Options

The menu item File/Options lets you set several options which are described below.

Submenus Difference, Weight, Target spectrum

Set the properties Show, Pen and Line mode for the subobjects Difference, Weight and target spectrum. The property Show can be checked or unchecked - if checked the data of the subobject are shown in the graphs, otherwise not. The data are shown with the selected Pen and Line mode.

Import measured data: This checked item can be used to control if this spectrum should import measured data when the global Import mechanism is used to import measurements.

Divide measued data by 100 after import: Check this menu item if you expect incoming measured data to be scaled in % while the spectrum object needs data in the range 0 ... 1. Dividing by 100 will then happen automatically after a  file import or reading data from a workbook range.

Experimental data smoothing: Submenu giving access to data smoothing parameters which can be used for noisy input data. Be aware that data smoothing modifies your original data.

Validation rules for measured data: Here you can define checks of incoming measured data in order to decide if it makes sense to do a parameter fit. If one of the validation rules is violated by the measured data, the fitting routine is not performed and a rating saying 'Invalid data' is set. This will happen even if you manually try to start a fit.

A rule is defined by calling an optical function for the current spectrum and comparing its value with a number using the > or < character. Each rule must be entered as one line as shown in the dialog below:

The object name must be omitted in the call of the optical function. Optical functions for spectra are described below.

The spectrum shown below obeys the rules shown in the dialog above - a fit of these data would be possible:

Resolution: You can set a spectral resolution in order to average sharp spectral features in your simulated spectra if you have to compare them to measured data obtained with low spectral resolution. Be careful applying this feature because the way the measured data are averaged by the used spectrometer hardware might be different from the averaging method used to manipulate the simulated spectrum.

Automation: Submenu to set parameters for automatic spectrum saving in automation methods. To be used in situations where you acquire spectra at regular timer events and you want these spectra to be saved without user interaction.

Parameters for U-value computation: To be used in CODE only. U- and g-value objects can be linked to one and the same spectrum in order to synchronize their parameters (emissivity settings, for example). If you change the U-value parameters here in the spectrum, all linked U- and g-value objects will use these settings in their computation.

Introduction

Besides reflectance, transmittance and ATR spectra (that are computed by 'R,T,ATR' objects in the spectrum list) you can also compute ellipsometry spectra. To do so, you have to create an object of type 'Ellipsometry' in the spectrum list.

The following items must be defined to uniquely set the spectrum to be simulated:

Range

The Range command lets you define the spectral range of the simulated spectrum. As in previous SCOUT versions this range is not required to be the same as the one used for the dielectric function definitions.

Spectrum type

Here you can choose between different quantities that are computed. At present the following options are possible:

•tan(Psi), cos(Delta)

•Psi, Delta (both in degrees)

•sin(2 Psi) cos(Delta), sin(2 Psi) sin(Delta

•-cos(2 Psi), sin(2 Psi) cos(Delta

•tan(Psi), sin(Delta)

•Pseudo n and k (optical constants of a virtual halfspace without any thin films)

Angle

This is the angle of incidence being zero at normal incidence of light and 90° at oblique incidence. As mentioned above the light is incident from the top halfspace of the layer stack.

You can also describe experiments where the illumination comes from the bottom of the the sample by setting the angle to a value between 90° and 180°. If you choose 172°, for example, the spectrometer beam comes from the sample's back with an angle of incidence of 180°-172°=8°.

Import of measured data

We have implemented import routines for several file formats. In many cases customers had sent us files and asked us to implement an import routine. In those cases for which we could guess the data format we wrote code to read the data. Unfortunately, that does not mean the import routine can be used for any version of the format. Please contact us if you encounter reading problems.

Woollam data import

The Woollam company has developed a text based file format to store all measurements for a sample into one (usually big) text file,using the extension *.dat. The file may contain measured data for several positions on the sample, and for several angles of incidence. In cases where you have several angles of incidence you must generate several ellipsometry objects in the list of spectra, each one computing ellipsometric angle data for a single angle of incidence. In order to import measured data for all ellipsometry objects at once you have to use the global menu command Actions/Spectra/Import/Import all spectra from a single Woollam *.dat file and select the file. SCOUT will read the file and extract all measurement positions on the sample - in case of many positions this may take a long time since the files have no clear information in their header. SCOUT has to read and analyze every single line, and there may be many thousands of lines in the file. Once the positions have been identified, SCOUT will display a dialog that lets you select the position you want to import data for:

If the 'wait cursor' changes back to the normal cursor in the SCOUT window and you do not see the dialog popping up, you should click the SCOUT icon in the taskbar. That should bring the dialog to the front of the screen.

Select a position in the dropdown box to the right. If you check the option 'Merge sample name and position' SCOUT will combine both the sample description and the position info to the new sample name.

Once you click Ok SCOUT will send the data lines for the selected position to all ellipsometry objects. Each one will first delete its measured data, and then analyze the lines and read Psi and Delta from those lines only for which round(angle of incidence in the file) = round(angle of incidence of the ellipsometry object holds. Be sure to have set matching angles of incidence in your ellipsometry objects - otherwise no measured data will be imported.

If you have defined a spectrum type different from pure Psi and Delta values (see list of available types above) then the imported Psi and Delta values are automatically converted to the right quantity. It is assumed here that the original Woollam files always contains Psi and Delta values in degrees.

Graphics

Since 'Ellipsometry' objects compute two quantities the graphics settings are more complicated as in the case of 'R,T,ATR' objects.

In principle, there are two independent graphs with corresponding graphics parameters, one for the quantity related to Ψ (Ψ itself, or tan(Ψ)) and one for Δ (or cos(Δ)). However, the easiest handling of the data display is achieved with the default settings. These couple the two sets of graphics parameters to be the same except for the frame mode. This is set to 0 for the Δ graphics. A typical display is the following:

The simulated spectrum of  tan(Ψ) is drawn in a blue solid line, the corresponding experimental data are in red (also using a solid line). The cos(Δ) curves are dashed (blue for the simulation, red for the measured data).

The check box 'Lock graphics' is checked in the default configuration. This means that zoom and stretching operations affect both spectra, tan(Ψ) and cos(Δ), the same way.

You can also edit the graphics parameters for Δ (command Graphics|Delta) and set the frame mode to a value larger than 0. This way you can generate two coordinate systems like in the following example:

If 'Lock graphics' is still checked the key and mouse commands to move through the graphics still apply to both graphs. For example, a pressing the left cursor key leads to this:

If you uncheck the 'Lock graphics' box all key and mouse commnds apply to the Ψ curve only. The key command mentioned above would lead to the following appearance:

In this case, there are no quick graphics commands for the Δ spectrum in the present SCOUT version.

Stack averaging

A special type of ellipsometry spectrum is called 'Ellipsometry stack average'. You can use this object if the measured data can be considered as average spectra of different layer stacks. A typical case is a micro-structured sample. Please read the section about 'Layer mix' objects (in the chapter 'Reflectance, Transmittance, ATR') to learn how to work with this kind of object.

Layer absorption

This spectrum type lets you compute how much light is absorbed in a specific layer in a layer stack. The user interface looks like this:

In the upper left corner you specify the angle of incidence and the polarization of the illuminating beam. Right to the label 'Layer stack' you can drop the wanted layer stack from the list of layer stacks. Underneath the layer of interest in the stack is selected using the two little buttons .

In order to compute the absorbed fraction in the layer, the layer is divided into sublayers for which the local absorption is computed. The number of sublayers is specified by 'Number of sources'. The total light absorption in the layer is finally computed by integrating over all sublayers. Note that the computation of layer absorption can be quite slow if you work with many sublayers. After a computation, you can inspect the distribution of the local absorption in the layer for the last spectral point clicking the Local absorption button.

Like in all spectrum objects, the spectral range of the computation is set with the Range command.

Charge carrier generation

Objects of this type are based on layer absorption objects. The absorbed fraction of the selected layer (which is computed like in layer absorption objects) is multiplied with a user-defined internal efficiency. The efficiency gives the conversion probability for an absorbed photon to generate a charge carrier contributing to an electrical current through the layer.

The CODE software (which is an extension of SCOUT) contains an object type 'Photocurrent' to compute the current density in a solar cell layer stack. In order to do so, the object must be connected to an spectrum object of the type 'Charge carrier generation' discussed here.

The internal conversion efficiency is specified in a subobject which can be opened by the menu command 'Objects|Internal efficiency':

Using the Range command you can set the spectral range for the efficiency. The curve is defined by a set of terms which are superimposed to the final curve. The terms are defined in another subwindow which opens using the Definition menu command:

The easiest way to generate a function is to use an object of type 'Free formula for imag. part' (Sorry, this name is a little misleading - we have 'borrowed' this object from another application). Using the Edit command the settings can be made in the following dialog:

Here you can specify a user-defined formula for the conversion efficiency - in the given example the efficiency is just the constant C1. Note that the constants C1, C2, ..., C6 will show up as possible fit parameters. This allows you to adjust the conversion efficiency to measured data.

Introduction

Experimentally observed photoluminescence (PL) or fluorescence spectra are often considered to give a direct view of microscopic electronic transition phenomena. The experimental setup of such kind of experiments is simple - at least in principle:

A schematic view of the photoluminescence process in the sample is this:

From this simple picture simple interpretation rules could be deduced. For example, the energy of the emitted radiation (or the energy of the peak of a PL spectrum) is the gap energy of the material (which can be identified this way). Or: If samples differ in intensity of the emitted radiation the non-radiative energy loss mechanisms are different.

However, usually life is more complicated, and before a microscopic interpretation of the observed luminescence spectrum is tried one should take into account all external phenomena which may influence the shape of the luminescence spectrum. In particular in thin film systems reflectance, interference and re-absorption phenomena can modify the shape of the PL spectrum significantly, and an intuitive interpretation can be quite misleading.

Knowing the optical constants of all materials in a layer stack, the SCOUT software can be used to compute the influence of all these external effects on PL spectra. This way a solid base for the correct interpretation of PL spectra is provided.

The following sections describe

•the algorithm to compute PL spectra

•the user interface

•simple simulated examples

Examples of the analysis of measured PL spectra are given in a separate step-by-step PL tutorial (Tutorial 2, example 3).

Overview

The computation of PL spectra is done in the following three steps:

•Calculation of the depth-profile of the absorbed radiation in the luminescent layer: This defines where the incident radiation is absorbed. It is assumed that the radiation is re-emitted at the same position. Hence the absorption depth-profile gives also the distribution of emitting light sources.

•Multiplication with the microscopic (internal) efficiency: The so-called internal efficiency is what one would like to get from PL experiments. It gives the spectral  distribution of the emission probability if a photon of the incident radiation is absorbed at a certain point in space. This is the wanted information about the microscopic process.

•Computation of the escape probability for the emitted light: Once a photon is re-emitted it has to find its way through and out of the layer stack in order to be detected. The escape probability depends on reflection coefficients and re-absorption probabilities. These are computed using standard techniques to compute wave propagation effects.

The final result of the computation is the expected PL spectrum. The calculation of the absorption profile and the escape probabilities (steps 1 and 3) is straightforward (more or less). The combination of these is called 'external efficiency' in the following. The internal efficiency (i.e. the microscopic process to convert high energy photons to low energy radiation, see step 2) is not known very precisely in most cases. The recommended strategy to proceed is as follows: Compute a guess for the internal efficiency spectrum by a user-defined function (which could be the superposition of several peaks, for example) and vary parameters of the formula (peak positions, widths, strengths) until the simulated PL spectrum matches the measured curve. Examples are discussed in a separate tutorial.

To demonstrate the algorithm a simple example of one luminescent layer (porous silicon, 500 nm thickness) on a silicon substrate is considered. The optical constants are taken from the SCOUT database without modification.

Absorption of the incident radiation

The first step of the PL spectrum computation is the determination of the light source distribution. To do this, the luminescent layer must be specified first. Then the incident radiation is characterized by its wavelength, angle of incidence and polarization. According to these settings, the depth profile of the absorption is calculated.

For the 500 nm porous silicon layer on silicon one gets for 400 nm wavelength (normal incidence of light) the following distribution (using 20 points):

The illumination is incident from the right in this picture. The silicon substrate is left to the point z=0. Note the narrow interference pattern.

With the SCOUT object 'Absorption distribution' (see the help on distributions) the absorption pattern for higher wavelengths are computed as well. These exhibit even more pronounced interference structures in the local absorption:

Sampling the luminescent layer using 20 points means to work with 20 light sources in the following. Each light source emits proportional to the corresponding absorbed fraction of the incoming beam.

Internal efficiency

It is assumed that absorbed 'high energy photons' are converted to 'low energy photons' without any displacement in space, i.e. a possible re-emission takes place at the same position as the absorption. Furthermore, a complete isotropic emission with random polarization is assumed.

The amount of created low energy photons is determined by the so-called 'internal efficiency' which gives the probability for emission at a certain wavelength. Internal efficiencies are defined by the superposition of oscillator terms, user-defined formulas or imported data sets.

Here is an example. In the range 500 to 1000 nm (with 101 spectral points, i.e. 5 nm resolution) the formula EXP(-SQR((X-800)/100)) defines the following broad peak (note that x refers to the wavelength, in this case):

This means that most of the emitted photons have a wavelength around 800 nm. Almost no radiation at 500 nm is produced internally.

Emission

Finally the amount of radiation escaping in the direction of observation is computed. To do so, the observation angle and the polarization must be specified. For each light source in the luminescent layer, the waves that end up in the finally observed direction are superimposed (with phase relations) taking into account Fresnels' equations and summing up all multiply reflected partial waves:

In the graph above, the multiply reflected partial waves within the top layer stack and the bottom layer stack are not drawn for simplicity. They are, however, included in the computation.

Squaring the electric field amplitudes the intensity for each point light source is computed. The contributions of all light sources are added up to the final value of the PL intensity. This is repeated for the whole spectral range (given by the settings of the internal efficiency). The result for the 500 nm porous silicon layer on silicon is this (400 nm excitation):

The comparison with the internal efficiency spectrum shows a shift of the emitted PL spectrum:

In contrast to an intuitive inspection of experimental spectra, in this case there is no doubt about the origin of the observed shift: Since the used internal efficiency is known and has a peak at 800 nm, any shift must be due to interference, reflection and re-absorption effects.

User interface

The main window of PL spectrum simulation objects looks like this:

The simulated PL spectrum depends on details of the excitation, the internal conversion and the emission (see the description of the algorithm above).

Excitation

The excitation parameters are set on the upper left side of the window. You have to specify the wavelength of the exciting light (usually a laser), the angle of incidence and the polarization. Based on these data and the current layer stack, SCOUT will compute where and how much of the incident radiation is absorbed in the photoluminescent layer. After the computation of the PL spectrum, you can view the absorption distribution pressing the button labeled Abs.:

Conversion

In the parameter section called 'Conversion' you can define the layer stack (drag&drop it from the list of layer stacks) and the photoluminescent layer within the stack. Only one layer can be photoluminescent. Setting the parameter called 'Number of sources' you can define how many internal light sources are used within the PL active layer.

Pressing the button Eff. the window that defines the internal efficiency is opened:

Use the command Transitions to open a list similar to the susceptibility list for optical constant definition:

Use this list to define the internal efficiency spectrum as the superposition of several oscillator terms, user-defined formulas or imported data. The spectrum is computed exactly the same way as the imaginary part of the dielectric function. All parameters of the superimposed susceptibility terms appear as fit parameters that can be adjusted in SCOUT's fitting procedure.

Emission

In the section 'Emission' you have to specify on which side of the layer stack you observe the PL radiation: 'Reflectance' means that the PL light is observed on the side from which the excitation is done (this is the usual case),  the selection 'Transmittance' should be made if you observe the emitted light on the other side of the layer stack. In addition, you have to set the angle of observation and the polarization.

Overview

In this section PL spectra of some simple systems are computed in order to develop a feeling for the effects that may occur.

The following examples are discussed:

•Thickness variations of luminescent layers (porous silicon on silicon)

•Additional layers above the luminescent layer

Thickness variations

Suppose you prepared two samples consisting of a luminescent layer on a silicon substrate. The thicknesses differ by a factor of 2. The observed PL spectra would be the following:

What would you conclude from this? Did you prepare two very different luminescent systems with two broad, overlapping emission peaks in one case (the blue curve) and a single emission mechanism in the other (red)?

You should be careful with interpretations unless you checked the influence of the layer thickness on the shape of the PL spectrum! In fact, the two curves are once more porous silicon spectra computed with the same internal efficiency (see above). The layer thickness is the only difference between the two cases.

Here are some more spectra of this kind, including the two presented above:

Interpretation problems arise more likely in the case of thin films where the external efficiency variations lead to spectral shifts and modifications which are not easily identified. In thicker layers the rich structure of the interference patterns clearly (more or less) show their origin.

Additional layers

If you have to compare PL spectra of luminescent layers embedded in different layer stacks you should also be careful interpreting the observed phenomena. The influence of additional layers on PL spectra is demonstrated in this section for two simple systems.

The first one is a SiO2 layer on top of the 500 nm luminescent porous silicon layer. The following plots show PL spectra computed for various SiO2 layer thicknesses:

Peak position shifts of 40 nm (0.05 eV) and heigth differences of up to 25% occur, with identical internal electronic transitions! It is stressed once more that these spectra do not exhibit the origin of these differences clearly. On the other hand, thick SiO2 layers show pronounced interference fringes:

Metallic top layers have a quite different influence on the PL output. Here the case of a silver layer is considered. Like most metals, Ag is highly reflective in the infrared and (again, more or less) transparent in the UV. Hence the exciting high energy photons are transmitted to the underlying luminescent layers but the re-emitted luminescent radiation is blocked efficiently in the infrared and red spectral range. This results in a significant blue shift of the PL spectrum (although in all cases the internal electronic transitions are the same):

EL overview

Electroluminescence spectra can be computed in SCOUT using objects of type 'EL spectrum' in the list of spectra. These objects are very similar to photoluminescence objects (please read the section above about photoluminescence). The main window is the following:

In contrast to photoluminescence objects there is no section about excitation, of course. The button Distribution opens a subwindow which defines the spatial distribution of the light emission within the electroluminescent layer:

The x-axis displays the relative position within the active layer: 0 is the bottom, 1 the top of the layer. In the edit box called 'Y(X,Y)' on the top of the window you can enter a formula for the distribution. Press Go to compute the data using the entered expression. Within the formula, you can refer to up to 6 constants (called C1 to C6). Using the Parameters command you can assign names to these constants:

The parameters C1 ... C6 will appear as fit parameters in the list of fit parameters.

Alternatively to the computation using a formula, you can import a fixed distribution of light emitters from the workbook or using the Import command.

EL example

Here is a simple EL example. The emitting layer is a porous silicon layer on a silicon wafer, covered with a thin gold film.

The internal emission spectrum is modeled by a single Kim oscillator with the following parameters:

This leads to the following spectrum:

In order to make clear how the EL computation in SCOUT works, we will build up the stack step by step. Let's start with a single light-emitting thin film in between two halfspaces. All materials are vacuum - this is not really realistic, of course, but we can see the pure emission without any reflectance effects at the interfaces between the layers.

The depth distribution of the light emission within the EL active layer is sampled with 50 points - i.e. there are 50 light sources in the emitting layer, placed at equidistant positions. The light sources can have a depth-dependent strength of emission which is taken from a user-defined depth distribution. Click on the Distribution button to see this function. Let's start with the simple assumption that the light emission is distributed equally within the active layer, i.e. all points contribute with weight 1:

The EL spectrum computation now takes all the 50 points, sums up the output for each one and divides by the number of points.In the present case the outcome on the reflectance side of the sample is the original internal emission spectrum:

We assume now that the EL emission is not homogeneously distributed within the layer stack but has the following depth profile:

The parameter C1 in the formula allows to move the peak from the top to the bottom of the layer. You can do that, for example, with a slider (horizontal or vertical bar object) in a view. The parameters C1 to C6 of the user-defined distribution formula will appear as possible fit parameters in SCOUT.

The emitted spectrum is now the following:

The average emission probability of the 50 points is now much less than 1 - hence the emission is much lower now.

Note that the EL emission into a certain observation direction is computed adding up two contributions: One is the internal emission that aims directly into the wanted external direction (taking into account the change of direction due to refraction at the interfaces). The second one is the emission into the direction which is reflected into the wanted direction by the backside of the emitting layer. This second contribution should contribute to the spectrum if we place a silicon wafer below the emitting layer. The next graph compares the previous spectrum (vacuum backside,red curve) with the one obtained with a silicon wafer substrate (blue):

Well, in some spectral regions the backside reflected contribution leads really to an increase in EL emission, but in the main peak there is less light observed with silicon substrate. Assuming that the light emission is coherent in all directions, SCOUT superimposese the two contributions discussed above fully coherent. This leads to interference patterns in the spectra which strongly depend on the thickness of the EL emitting layer. Here is the result for a thinner emitting layer:

We can now replace the material 'Vacuum' of the active layer by porous silicon. The emission spectrum changes to the following:

Finally we add the gold layer on top which reduces the emission significantly:

Placing some sliders in the main view gives you some freedom to manually change parameters:

Note that interference effects strongly modify the shape of the EL spectrum. The observed peaks cannot be directly interpreted as internal emission channels.

Angle scan

With objects of this type you can compute the angular dependence of spectral values (reflectance, transmittance, 1-R-T) for a single spectral point (like a certain wavelength, for example). If you have measured data obtained by a goniometer system, you can fit them like with spectral data as discussed above.

The example below shows the reflectance vs. angle for silicon in p-polarization, featuring vanishing reflectance at the Brewster angle:

XRR

XRR objects are made to compute and fit X-ray reflectivity curves. XRR 'spectra' sometimes provide very useful thin film information, in addition to optical spectra. Analyzing interference patterns in the X-ray regime is simple and safe because the real part of the refractive index is almost identical to 1.

In order to combine optical analysis and XRR analysis in SCOUT or CODE you need to work with at least 2 layer stacks: one for XRR and a second one for the optical spectra. Layer thickness values must be synchronized using master parameters.

Defining optical constants for XRR computations means to set the real part of the complex refractive index to a value a little below 1, and the imaginary part to a very small positive value. The easiest way to do this is to use a susceptibility of type 'Formula for n and k' and fill in expressions like the ones shown below:

Since these 'optical constants' are used for a single energy only, it does not matter which spectral range you select for their computation.

The Range command of XRR objects lets you define the energy of the X-ray experiment in eV.

As a first simple XRR example the screenshot below shows XRR data of a SCOUT model for silicon (in blue) compared to measured data in red:

Here is a thickness fit of a SiO2 layer on silicon:

A thicker layer on silicon shows a typical problem at larger angles - the simulation is too high:

Introducing a slight surface roughness helps to improve the agreement of model and measurement:

Parameter fit overview

After the definition of the optical model (i.e. materials, the layer stacks and the spectra including the import of the experimental data) the parameters that are going to be varied in order to optimize the agreement of model and measured data must be selected from all model parameters. These chosen parameters are called the fit parameters. The agreement of model and measured data is given by the so-called fit deviation. Based on the fit deviation you can classify the agreement between model and experiment. This rating is described below.

Fit parameters are managed in the list of fit parameters (opened by a right-click of the corresponding treeview item).

In order to inspect the influence of a parameter on the computed spectra the actions called Parameter variation and Parameter fluctuation are very useful. These are described in the section about the SCOUT workbook.

Fit parameters, sliders and 'fit on a grid'

In the main window of SCOUT, switch with F7 to the treeview level and right-click the branch Fit parameters to open the list of fit parameters. At program start the list is empty. New parameters can be added using a dialog or by drag&drop from other lists of SCOUT.

Selecting fit parameters using the Fit parameter selection dialog

The New command (or the button labeled '+') of the fit parameter list opens a dialog with a list of all possible fit parameters from which you have to select. Dielectric function parameters (like resonance frequencies of oscillators or volume fractions of effective medium models), layer parameters such as thicknesses, fit parameters of the computed optical spectra (angle of incidence or constants that appear in modification formula) and master parameters are listed as follows:

As indicated, you can select many parameters simultaneously by pressing the Ctrl-key while clicking on the various lines. Clicking an already selected line 'unselects' it. Only those lines beginning with '>' represent fit parameters. The other lines contain guiding information only.

Selecting fit parameters by drag&drop

Instead of using the fit parameter selection dialog, you can also select fit parameters by drag and drop operations. You have the following possibilities:

•Drag a dielectric function from the dielectric function to the fit parameter list: All the parameters of the dielectric function are added as fit parameters.

•Drag from a susceptibility of a dielectric function model to the fit parameter list: All the susceptibility parameters are added as fit parameters. If you start the drag operation in a column that represents a value of a parameter (these columns are labeled as 'value') only that particular fit parameter is added.

•Drag a layer from the layer stack to the fit parameter list: All the parameters of that layer are added.

•Drag a spectrum from the spectrum list to the fit parameter list: All the parameters of that spectrum are added.

The fit parameter list

The chosen parameters are added at the end of the fit parameter list. This may look like this:

The name column gives the fit parameter's name. Since the names of fit parameters assigned automatically by SCOUT are sometimes quite lengthy you can overwrite the current name with your own. Just type in the new name. However, be sure to remember which parameter it really is. At present, there is no way to get back to the automaticly assigned name. In case you forgot what the parameter means, you have to delete it and create it new.

The Value column displays the current value of the parameter. If you would like to set bounds for the fit parameter value you can set an interval of allowed values using the Low limit and High limit values. The default values for Low limit and High limit are both zero, i.e. there is no variation at all. You have to set reasonable values manually with one exception: Starting with object generation 4.77 you can set Low limit and High limit automatically for thickness values when you create new fit parameters. Use the menu command File/Options/Fit to open this dialog which lets you set various parameters that control parameter fits:

In the lower right corner you can set automatic limits for new thickness fit parameters. The value of the slider range is saved as a global default values in the default_values.ini file. It is not part of a specific configuration file but valid globally for all your work. The values is loaded when you start SCOUT, and saved when you shut down the program.

As Factor you can enter a number which is used to multiply the original value of the parameter: You can use this factor to scale up or down a parameter. If, for example, a thickness is given in micrometer you can multiply it by 1000 in order to see the value of the thickness in nm. If you change the factor, the current values of Low limit and High limit are multiplied by the factor as well.

Finally Digits specifies the number decimals used to display the current value of the parameter.

The Variation column allows to switch between different optimization options. In order to change the current option place the cursor on the cell and press the F5 key on your keyboard several times. By this action, you cycle through the available options. Stop where you want to stop. Pressing F4 you cycle backwards. At present, the following options are implemented in SCOUT:

Downhill simplex

The parameter is optimized in the automatic fit according to the downhill simplexscheme which is used at present as optimization technique in SCOUT.

Frozen

The parameter is not varied at all. This can be used, if you want to keep the parameter's value fixed for the moment but you may need it soon again. In this case, you don't delete the parameter but set is variation option to 'Frozen'.

Grid (100 points)

If the variation option of a parameter is set to 'Grid (x points)' SCOUT will try x values of the parameter equally distributed in the range between Low limit and High limit before the automatic fit applying the downhill method is performed. For each value the model is re-computed, and the parameter value with the lowest deviation (i.e. difference between model and measurement) is taken as starting value for the automatic fit.

If several fit parameters are to be varied on a grid of test values, the option 'Multidimensional grid fit' (please check or un-check this option using the menu command 'File|Options|Fit|Multidimensional grid fit' in the main window) determines how the computations are performed.

Multidimensional grid fit switched off:

SCOUT will do one-dimensional grid variations in the sequence given by the fit parameter list, starting at the top. Note, that the result for the parameters' starting values will depend on the sequence. Hence, the choice of the grid variation must be done carefully.

Multidimensional grid fit switched on:

SCOUT will collect all fit parameters for which a grid variation is set in the variation column, and do a multidimensional grid fit taking into account all possible combinations of parameter values. Note that the amount of computational work can be huge: If you select 4 parameters with 100 grid values for each of them, there are 100000000 re-computations of the optical model to be done.

With multidimensional grid fit switched on, you can systematically scan a parameter space in several dimensions and hope to find the absolute minimum of the fit deviation. Setting the option 'File|Options|Fit|Export multidimensional grid fit data' you can log the fit deviation. For each point which is tried in the grid fit procedure the parameter values and the corresponding fit deviation is written to a text file. The filename is specified when you start the fit. The content of the text file can later be used to visualize the 'parameter landscape' which might be helpful in finding promising parameter values.

Grid (50 points)

see above

Grid (20 points)

see above

Grid (10 points)

see above

Grid (n points)

This grid fit uses a number of grid points that can be set by the user. You can define the number executing the menu item File/Options/Fit. The dialog that appears lets you enter a value for n in the section 'Grid fit'. There is a single number only - you cannot define different values for different fit parameters.

Start at low limit

Takes the lower limit of the parameter interval as start value for this parameter. Then continues like 'Downhill simplex' as explained above.

Start at interval center

Takes the center value of the parameter interval as start value for this parameter. Then continues like 'Downhill simplex' as explained above.

Start at high limit

Takes the upper limit of the parameter interval as start value for this parameter. Then continues like 'Downhill simplex' as explained above.

Empty cell

Here you can enter a formula to compute the value of the fit parameter. In the formula, you can refer to the values of the master parameters (see below). This way you can  introduce relations between parameters, or control several parameters of the model by one master parameter. If you know, for example, how the parameters of your optical constant models depend on temperature, you could introduce the temperature as master parameter and update the optical constants while the temperature is fitted.

Honey mode

The purpose of this variation mode is to enable fitting with small variations around the current parameter values. It works like the downhill simplex mode with automatic limitation of the parameter range. When the fit is started the parameter automatically gets a low and high limit, based on the actual value p0 of the parameter. The range is controlled by a value called 'Honey mode mobility' - a value of 0.02 means that

the high limit is 1.02*p0 and the low limit is 0.98*p0. These limits are active as long as the fit runs. If you press 'Stop' and then 'Start' again, then new limits are computed.

You can set values for 'Honey mode mobility' for each fit parameter individually

(use the local menu command "Honey mode mobility" of the fit parameter list). Alternatively, you can also set a global value for all parameters in the main menu with "File/Options/Fit": Set the value and activate the checkbox for global use of this parameter.

The following example shows a frozen fit parameter and a factor different from 1.0:

Set fit parameters manually

You can do a 'manual fit' by typing new values for the fit parameters and selecting Update in the menu. This activates a new computation of the dielectric functions and all computed spectra as well as an update of all windows. This way you can immediately inspect how your changes influence the results.

Visual parameter variation: Sliders

A much more elegant way to visualize the parameter influence on the spectra is the use of sliders. Select a fit parameter in the list and click on the Slider menu item. This way a new window is created and displayed on the screen that allows you to 'move' a parameter value with the mouse and see instant updates of the model spectra:

In the top of the window there are three values: The left and the right define the interval of the slider, the center one (in blue) is the actual value of the fit parameter. When the slider window is created the first time the slider range is the fit parameter interval Low limit ... High limit if you defined one. If you did not set a fixed interval for a fit parameter the initial range of the slider is 80 ... 120% of the current parameter value.

At any time you can overwrite the slider range by typing in new values for the left and right limit. If the slider position reaches the left limit, for example, you can also press the arrow labeled '<' to the left. This centers the limits around the actual parameter value. This operation can be used to work in a large parameter space without switching between mouse and keyboard. It works in the analogous way on the right side of the parameter range.

Pressing the button labeled '<>' expands the current parameter range by a factor of 2 and centers around the current value. The '><' button reduces the range to 50% and centers around the current parameter value.

In the upper right corner you can set slider limits in other ways: Clicking the % button sets the left limit to 97% and the right value to 103% of the current value. A click on the Absolute button set the limits to (current value - 3) and (current value + 3) (nm in this case). If you activate the checkbox Apply action to all sliders and click the % or Absolute buttons then all sliders get the corresponding limits.

In addition to the Slider menu command you can also click on the fit parameter with the right mouse button to create the corresponding slider. You can open as many slider windows as you like if you want to investigate many parameters at a time. You can create regular blocks of slider windows by Drag&Drop: Create the first slider the regular way (as described above). To place a second slider window below the first one, 'drag' a fit parameter from the fit parameter list to the already existing slider and release the mouse cursor in the left half of the slider window. A new slider is created and placed directly below the first one:

If you release the mouse button in the right half of an existing slider the new slider window is created to the right of the existing one:

If you have several sliders scattered around on your desktop you can select one which should be the top slider of a new block and then click the F button: The other sliders will be positioned underneath the first 'master' slider.

Special slider features:

•You can create a slider by dragging a fit parameter from the fit parameter list to a spectrum simulation window. In this case the upper left corner of the new slider window is at the mouse cursor position.

•You can drag any susceptibility parameter that appears in a susceptibility list of a dielectric function window to a spectrum simulation window. The parameter is added as fit parameter to the fit parameter list and a new slider is created at the cursor position.

•You can transfer the fit parameter ranges that you specified in the sliders to the fit parameter list by the menu command 'Limits from sliders'.

Fit one parameter on a grid

The command Fit on grid can be used to optimize one of the fit parameters on a grid of test values. To do so, select the fit parameter that you want to optimize in the list. Specify a parameter range by setting the low limit and the high limit for this fit parameter appropriately. Then apply one of the commands Fit on grid|with 10 points, Fit on grid|with 20 points, Fit on grid|with 50 points or Fit on grid|with 100 points. Now SCOUT scans the parameter range using the given number of points and returns the best value of the fit parameter on that grid.

The command Fit on grid|Do all grid fits will start the grid optimization taking into account all fit parameters for which a grid fit has been selected in the variation column.

This 'fit on a grid' is good for a rough parameter pre-selection, for example for finding film thicknesses in the case of interference patterns. Afterwards you should use the automatic fit for further optimization of the model.

The submenu "Actions"

This selection of commands offers some shortcuts that turned out to be practical:

•Set all to 'Frozen': Sets all fit parameters to the state 'frozen'

•Set all to 'Downhill simplex': Sets all fit parameters to the state 'Downhill simplex'

•Set all to 'Honey mode': Sets all fit parameters to the state 'Honey mode'

•Set active material: Here the user can enter the name of a material which is then marked as 'active material' for the actions below

•Select all parameters: Take all possible fit parameters of the active material and select them as fit parameters

•Select oscillators: Selects all oscillator parameters of the active material as fit parameters. This is useful while adjusting models for organic materials in the infrared which may may have many oscillators. Manual parameter selection is tedious in such a case. Please note that for Kim oscillators (which are very much recommended) the parameter 'Gauss-Lorentz switch' is not selected since we found that in almost all cases absorption bands have a Gaussian line shape which is the default setting of Kim oscillators.

•Select oscillator strengths: Selects all oscillator strengths of the active material as fit parameters

Master parameters

With the command Objects|Master parameters (in the main window of SCOUT) you can open the list of so-called master parameters which collects parameters that can be used to control other parameters of the model. Master parameters have a name, a value and a number of decimals. The following restrictions apply to the name: It must not contain any spaces and its length must be below 30 characters. As all other parameters, master parameters can be fit parameters. Just drag them to the fit parameter list or select them in the 'Fit parameter selection' dialog.

Any fit parameter in the fit parameter list can be computed from the values of the master parameters. In this case such a parameter is called slave parameter. To turn a fit parameter into a slave parameter move the cursor to the column called 'Variation' which usually shows the 'Downhill simplex'entry. Now press F4 and see that the cell content changes between 'Downhill simplex', 'Frozen', various 'Grid' items and an empty content. Select the empty state and type in a formula which may contain the names of the master parameters. This way the parameter is computed from the master parameter values. It is not varied directly in the fit routine, and you cannot use a slider to change its value.

Applying master and slave parameters you can describe a coupling between model parameters. If, for example, the damping constant of a Drude model for free electrons in a thin metallic film depends on the film thickness, you can define a master parameter called 'Thickness'. This master parameter can control both the damping constant of the Drude model and the film thickness by appropriate expressions in the list of fit parameters.

Fit parameter sets

In the main window of SCOUT you can load and store so-called 'fit parameter sets' which can be very useful if you have to switch spectral ranges and selections of fit parameters quite often. Fit parameter sets store the following:

•spectral ranges and graphics parameters of all model dielectric functions

•spectral ranges and graphics parameters of all simulated spectra

•selection of fit parameters (including their variation options and ranges)

Note that actual values of fit parameters are not stored which means that their current values are preserved when you change fit parameter sets.

The situation for which the application of fit parameter sets is recommended is the following: You have to do the optical analysis for several samples. Some of the model parameters (e.g. oscillator parameters) have influence on the spectra only in limited spectral ranges. You can work with groups of parameters: Some are adjusted first in a certain spectral range, then others are optimized in a second step (probably in a different spectral range), and so on. Finally, you may want to optimize all relevant parameters in a large spectral range covering all the 'subranges'.

This procedure requires the execution of a lot of Range dialogs, fit parameter selections and deletions. If you use master and slave parameters, you would have to type in the required formulas for each sample again.

Here you can save a lot of typing work using fit parameter sets: As soon as you have set the spectral ranges and fit parameters for the first group of parameters and the first set of measurements, you should save the settings with the command Fit parameter set|Store in the main window. When you need the same fit parameter selection the next time (for the second sample), you just recall it by Fit parameter set|Load.

Fit parameter sets can be loaded and used in OLE automation applications. Examples will be discussed in one of the tutorials.

In combination with automatic parameter fitting you can automatically apply sequences of fit parameter sets. See the section about automatic fitting.

Automatic fitting

After you have found reasonable start values for the fit parameters by manual or visual variation you can activate the automatic fit by Start in the main window. The automatic parameter variation uses the methods described below to optimize the fit parameters, i.e. to minimize the deviation. Whenever the model improves you'll get an update of the status bar at the bottom of the main window. If you have defined a view in the main window it will be re-drawn based on the improved model. In addition, all open dielectric function and spectrum windows are updated to keep you informed about the progress of the model.

With Stop you stop the fit activity. It is also possible that the fit algorithm automatically decides to stop the fit. This occurs if there seems to be no progress any more.

Alternatively to the Start and Stop menu commands you can use the Start button in the toolbar. This must be used if the menu has been hidden. After the fit has been started the button turns into a Stop button which can be used for manually stopping the fit activity.

Pre-fit parameters

The mechanism of a quick pre-fit has been introduced with object generation 3.90. You can define several sets of parameters (called pre-fit sets) which are tried before the actual automatic fitting is started. The parameter values of the best fitting pre-fit set are then used as starting values for the automatic fit.

Pre-fit sets are created and selected using 4 buttons with red labels on the panel above the fit parameter grid:

'New' takes the current fit parameter values and stores them as additional pre-fit set.

'Delete' deletes the selected pre-fit set (which is indicated by the label 'Pre-fit set (2/6)')

'Previous' selects the previous set. If the current set is the first, the last set is selected.

'Next' selects the next set. If the current set is the last, the first set is loaded.

Pre-fit sets are stored in configuration files.

Pre-fit sets are also stored in fit parameter set files.

List of fit parameter sets

Quite advanced fitting algorithms are possible using a sequence of fit parameter sets. These can be defined in the list of fit parameters sets which is opened by right-clicking the wanted element in the treeview branch Fit parameters sets in the main window. A list may look like this:

Each fit parameter set has a user-defined Name to characterize it, a Time threshold (specified in seconds), a Deviation threshold, and a Tolerance threshold. The file containing the fit parameter set must be given by Filename. All fit parameter set files must be stored in the directory where the loaded SCOUT configuration file is located. Fit parameter set files are created using the Fit parameter set|Store commmand in the main window (see above).

SCOUT loads each set in the list and fits until the user-defined time threshold or the user-defined deviation threshold is reached. The third quantity that determines the termination of the automatic fitting is the tolerance which is an internal quantity of the downhill simplex method used to optimize the parameters (see below).

Then the next fit parameter set is loaded until the end of the list is reached.

Downhill simplex method

The automatic parameter fit for each fit parameter set is done by a routine that makes use of the so-called downhill simplex algorithm. This method is a simple, but stable algorithm to minimize a function (the fit deviation) that depends on many parameters. See [Press 1992] for a detailed description.

In almost all cases this method will find the next local minimum of the fit deviation. There is no guarantee, that this is the global minimum as well. It is the responsibility of the SCOUT user, i.e. you, to select good starting values close to the global minimum, or at least to inspect the final SCOUT solution carefully. In many cases you can   achieve a very good fit performance by finding the right sequence of fit parameter sets and making use of 'fit on a grid' steps.

Automatic processing of many samples: Batch fit

In cases where an automatic fitting scheme is found, you can apply it to a sequence of input spectra. This SCOUT feature is described below.

Rating

The quality of the agreement between the simulated and measured spectra is given by the fit deviation. If you want to work with a coarse classification of the fit quality you can compute and display rating information.

SCOUT has five rating levels with the following default settings:

For each level you can set the treshold and the descriptional text using the corresponding menu commands. In the options menu there is also a switch to turn rating on or off. If rating is switched on you can display the current result in a view using a view object of type 'Rating view'.

If you want to work with less than 5 rating levels you can set the threshold values for several levels to the same value. This way you can realize a simple 'good/bad' information, for example. However, you cannot have more than 5 rating levels at present.

Overview

If a fitting strategy has been developed that allows a completely automatic processing of input spectra you can make use of the batch fit feature of SCOUT. You have to enter the files to be processed into an appropriate table (which is created for you automatically), start the batch operation and wait. In the end you will receive a table with the results.

To do a batch fit, you have to prepare the tables, activate the automatic batch fit, and inspect and save the final results. These steps are explained in the following.

Preparation of the tables

The fastest way to get going is this:

1.

It is assumed that you have a well-tested SCOUT model that can automatically handle the input spectra you want to analyze. Start SCOUT and load the corresponding configuration. Here is a simple example used to determine the thickness of an epitaxial silicon layer:

2.

Use the Import button in the toolbar of the main window of SCOUT. You are asked to select measured data for all spectra in the list of spectra, one after the other. Our simple example has only one spectrum, so we have to import one spectrum only:

3. Open the batch control window by Actions|Show batch control in the main window of SCOUT. The batch control window is very similar to the workbook. It has three worksheets named Results, Input options and Pre-fit:

4. Execute the Prepare/New batch fit menu command. The tables are now filled as far as it is possible. The results page now looks like this:

5.

Before we enter items on the 'Results' page, we have to set some input options on the 'Input options' worksheet:

For each spectrum in the SCOUT spectrum list you can set the path where the measured spectra are located. In the column 'Input format' you identify the file format by an integer number. Use one of the following:

1:
SCOUT standard format

2:
xy-format

3:
JCAMP format

4:
SpectraCalc (GRAMS) format

5:
Perkin-Elmer format

6:
Zeiss format

7:
Opus format

14: HunterLab UltraScan

Some files (stored e.g. in the SCOUT standard format, the xy-format, the SpectraCalc and the HunterLab UltraScan format) may contain multiple spectra in one file. In this case the 'Input option' column gives the number of the spectrum in the file. The files are counted 1,2,3, ...

If the data files all have the same file extension it is convenient to place it into the 'Extension' column. If not, leave this column empty.

6.

Now go back to the 'Results' page:

Now it's time to enter the input data for the batch operation. You have to fill in items in the rows with black text. For each sample to be investigated you must specify a name. SCOUT will do batch fit from left to right and stop when it finds the first empty 'Name' cell.

For each sample you can specify a numerical parameter in the 'Parameter' row, but you don't have to. If you like to you can change the text 'Parameter' to something more specific. Here we take as an example the quantity 'Deposition time'.

Finally you have to enter a filename in the row labeled 'IR Reflectance'. If you have specified an input path and an extension in the 'Input options' worksheet, you can just put the pure filenames here. As an example, the table could now look like this:

If you have many filenames to enter, you can escape the typing work by using one of the following commands:

Place the cursor in the row of the spectrum for which you want to specify many input files, and select the menu command Actions/Add multiple files. You will get a file import dialog allowing you to select all files you want to process. Important for the right sequence of filenames in the batch control sheet is that you first select the last file and then, holding the Ctrl-key down, select the rest. If you have a continuous range of files in the dialog, select the last one first, hold the Shift-key down and then select the first file. This action will select all files between the last and the first. You can use wildcards like *R* in the filename editor in order to pre-select the files you see in the dialog. After you have selected the files, the path in the Input option page is adjusted if you have taken files from a different directory. It is a good idea anyway to check the setting on the input option sheet before you proceed: Selecting files with Add multiple files enters the full filenames including the file extension into the cells. In this case you should drop any entry for Extension on the Input option sheet.

You have to repeat this step for all spectra for which you have to specify input files.

Scan directory: This command will fill-in filenames completely automatic - you just have to specify a search directory. It can be used in situations where the filenames contain a text fragment that can be used to identify the corresponding spectrum in the SCOUT configuration. If, for example, there are reflectance and transmittance spectra in the search directory, and all reflectance spectra contain the text fragment 'RF' and all the transmittance spectra filenames contain 'T', you can call the reflectance spectrum in the optical model RF and the transmittance spectrum T. SCOUT will then collect all files that can be found with the wildcard '*RF*' as input files for the spectrum RF, and all files that can be found with '*T*' as input files for T.

7.

As a last preparational step you have to specify the so-called pre-fit sets which is done on the 'Pre-fit' worksheet:

In the first column you see the name of the fit parameters. SCOUT has already created a second column labeled 'Set 1'. If this worksheet has more than one column the following will happen: Before the actual fit for a sample is started, SCOUT tries all parameter sets defined on this 'Pre-fit' page and computes the fit deviation. The parameter set with the lowest deviation will be used to set the starting values of the parameters.

This means: If you have only one set like now, the fit will definitely start with these numbers. If you delete column B, the fit will start with its current fit parameters which may depend on the history of the batch operation, in particular on the last sample. This may be a wanted feature or not. It's your decision. If you specify more than one pre-fit set SCOUT will determine the best for each sample and use it as starting values.

In the present demonstration, three sets are defined as follows:

Be sure to have a name for each set. SCOUT iterates through all sets until the first empty name cell is found.

8.

That's it! Return to the 'Results' page and save the settings for safety reasons with File|SaveAs using the *.vts file format. It's now time to start the batch fit.

Go!

You are now ready for the batch fit operation - almost. It is a good idea to do a short test by placing the cursor into one of the sample columns on the Results sheet and execute the menu command Fit current sample. Instead of doing the batch fit for all entered samples, the analysis is done for the selected sample only. This way you can test if the loading of the spectra and the fit routine works as you think.

Execute the Go! command in the batch control window and watch the starting activity. SCOUT will load the input spectra, indicate the sample under investigation in the top of the batch control window, start the fit and enter the final result in the 'Results' page. If you have defined 'Optical functions' their values are written to the batch control window underneath the results of the fit parameters.

The selected pre-fit set and the achieved fit deviation is entered as well:

You should now inspect the results a little closer.

Inspecting the results

The batch control window including all results can be saved with the SCOUT configuration. You can select part of table with the mouse and use the Copy command to copy it to the clipboard. From there you can import the data in other programs like Excel, Word, ... . Using the File|SaveAs command you can also store the table directly in Excel 5.0 format.

Look at the values of the fit deviation and check if they are small enough.

You can have a quick look at the fit results using the command Actions|Loop through results. In this case, starting with the first sample, the spectra and the obtained fit parameters are restored in SCOUT which now shows the status after having processed this sample. A small dialog lets you choose to continue with the next sample or quite the cycle through all fit results.

If you place the cursor in a sample's column, you can

•Actions|Load fit parameters into SCOUT: This loads the fit parameter values of this sample into SCOUT. Alternatively you can execute this command by the speed button labeled as 'FP --> SC2'.

•Actions|Load spectra into SCOUT: This loads the input spectra of this sample into SCOUT (Speed button: 'SP --> SC2').

•Restore SCOUT (spectra and parameters): This loads both the fit parameter values and the spectra of this sample into SCOUT (Speed button: 'FP+SP --> SC2').

It may happen that one of the fits was bad and, after reloading the poor results, you can improve the fit by some manual actions. In this case you can 'repair' the table and enter the improved values using the command Actions|Enter fit parameters into table (or the speed button 'SC2 --> WB'). Of course, the cursor must be in the column of the sample that has been revisited.

Optical functions

Definition of optical functions

Starting with version 2.2 you can access information about objects using so-called 'Optical functions'. Typical values are the refractive index of a material or reflectance and transmittance values of spectra at certain spectral positions. 'Optical functions' are defined in the list of optical functions. You can open this list in the main window with 'Objects|Optical functions':

Using the '+' button you can create a new entry in this list:

In order to define a function enter an expression in the column 'Function'. If you press Update SCOUT tries to evaluate the function (see below) and displays the result in the column 'Value' using as many digits as you specify in the 'Decimals' column. If the function cannot be evaluated a zero is returned.

Valid expressions

The expressions to be used to define optical functions are very simple: object name(argument). The object name must be exactly the same as it appears in your SCOUT configuration.There must be no space between the object's name and the argument. The argument is passed to the object which returns the result - if possible. If you have to specify a spectral position in the argument you can use all units that SCOUT knows, e.g. nm, 1/cm or eV.

The search order for the object is the following

1.
material list

2.
layer stack list

3.
spectra list

The CODE software which is based on SCOUT will search in the list of integral quantities as well.

Creating optical functions by drag&drop

The easy way to generate optical functions is by drag&drop. Drag a material (here: Ag) from the list of materials and drop it on the list of optical functions. The following items are generated automatically:

You can drag other objects like spectra (and integral quantities in CODE) as well to generate items in the list of optical functions.

Where do optical functions appear?

•The values of all optical functions are written to the workbook after the Export command in the main window.

•They are also listed in the Batch control window when the results for a sample are reported.

•The values of optical functions can be displayed in views.

•You can use optical functions in user-defined expressions using terms like 'of(i)' where i is the index of the optical function to be addressed. The function call of(2) of the example above would return the value 3.13.

•Optical functions can be used to compute results of a parameter variation object in the list of special computations.

•Optical functions can be used to compute final numbers.

Materials

Materials can handle the following arguments:

Function

Meaning

(n at 540 nm)

Returns the real part of the refractive index of the object at 540 nm. You can use alternative spectral units like 1/cm or eV if you like.

(k at 540 nm)

This function returns the imaginary part of the refractive index of the object at 540 nm.

(alpha at 540 nm)

Returns the absorption coefficient (in 1/cm) of the object at 540 nm.

(alpha1E4)

Returns the wavenumber for which the absorption coefficient has the value 10000 1/cm. This position is sometimes used to quantify the electronic gap. This function will work properly only if the following rules are satisfied:

1. The absorption coefficient of the material is below 10000 1/cm for large wavelengths and above 10000 1/cm at small wavelengths.

2. There is only one position in the spectral range of the material where the absorption coefficient has the value 10000 1/cm.

If the position cannot be identified a value of 0 is returned.

(carrier concentration)

If there is a Drude model or an extended Drude model used in the material object, the carrier concentration is computed and returned using the unit 1020 cm-3.(

(conductivity)

If there is a Drude model or an extended Drude model used in the material object, the conductivity is computed and returned using the unit Ω-1 cm-1.

(resistivity)

If there is a Drude model or an extended Drude model used in the material object, the resistivity is computed and returned using the unit Ω cm.

(mobility)

If there is a Drude model or an extended Drude model used in the material object, the mobility is computed and returned using the unit cm2 V-1 s-1.

Layer stacks

Layer stacks respond to the following arguments:

Function

Meaning

(Reflectance at 540 nm)

This function returns the reflectance of the layer stack at 540 nm (normal incidence of light)

(Transmittance at 540 nm)

This function returns the transmittance of the layer stack at 540 nm (normal incidence of light)

(Absorption at 540 nm)

This function returns the absorption ( = 1-R-T) of the layer stack at 540 nm (normal incidence of light)

(sheet resistance)

Returns the sheet resistance of the layer stack: For each layer it is checked if a material with a Drude model (or extended Drude model) is assigned. If so, the sheet resistance for this layer is computed using the current values of the Drude model. In case of several conductive layers the total sheet resistance of the stack is calculated.

Spectra

Spectrum objects can compute the following quantities:

Function

Meaning

(simulated value at 540 nm)

This function returns the value of the simulated spectrum at 540 nm.

(measured value at 540 nm)

This function returns the value of the measured spectrum at 540 nm.

(measured average 2000 3000 50)

This function returns the average of the measured spectrum between the spectral positions 2000 and 3000 (nm, eV, 1/cm or whatever spectral unit the object has at the moment), computed using 50 points.

(simulated average 2000 3000 50)

This function returns the average of the simulated spectrum between the spectral positions 2000 and 3000 (nm, eV, 1/cm or whatever spectral unit the object has at the moment), computed using 50 points.

(measured integral 2000 3000 50)

This function returns the integral of the measured spectrum between the spectral positions 2000 and 3000 (nm, eV, 1/cm or whatever spectral unit the object has at the moment), computed using 50 points.

(simulated integral 2000 3000 50)

This function returns the integral of the simulated spectrum between the spectral positions 2000 and 3000 (nm, eV, 1/cm or whatever spectral unit the object has at the moment), computed using 50 points.

(FFT thickness 5000 10000 2048 5 20 1.7)

Computes and returns the FFT thickness using 2048 points between 5000 and 10000 1/cm (obtained by interpolation of the measured spectrum). The refractive index used in the method is 1.7, the thickness is searched between 5 and 20 microns.

(Thickness from fringes 1000 1600 0.05 20 3 2)

Analyzes the maxima of interference patterns in the spectral range 1000 to 1600 (spectral unit taken from the spectrum). The function returns the layer thickness of layer 3 in the layer stack which is assigned to the spectrum. Pairs of interference maxima are taken into account only if their height is larger than 0.05 and if the peaks are separated by at least 20 (spectral unit taken from the spectrum). The function averages over 2 pairs of peaks. This function should be applied only in the case of a single layer causing the interference pattern.

(L* D65 2°)

Returns the color coordinate L*, computed for the illumation spectrum D65 and an observation angle of 2°. Possible values for the color coordinates are L*, a*, b*, X, Y, Z, x, y, z, l, a and b. Illumination spectra can be A, D65 and C, and observation angles of 2° and 10° may be used in the expression.

Special computations

Color box objects:

Function

Meaning

delta_e

Returns the average distance of the color value from the average color (in L*, a*, b* space) after a fluctuation computation.

a* average

Computes the average of the x-values

b* average

Computes the average of the y-values

Parameter variation objects:

Function

Meaning

minimum_x

Returns the lowest x-value after a parameter variation

maximum_x

Returns the highest x-value after a parameter variation

minimum_y

Returns the lowest y-value after a parameter variation

maximum_y

Returns the highest y-value after a parameter variation

Spectrometers

Spectrometer objects know the following functions:

Function

Meaning

count maximum

Returns the highest value of all pixel values

count minimum

Returns the lowest value of all pixel values

count average

Returns the average value of all pixel values

Traverse objects return their current position, answering to the following function calls:

Function

Meaning

position

Returns the current position in internal units (either steps of the stepper motor or mm)

position_mm

Returns the current position in mm

WOSP color sensor objects deliver the following functions:

Function

Meaning

illuminance

Returns the last measured illuminance value

r

Returns the last measured value of the red sensor

g

Returns the last measured value of the green sensor

b

Returns the last measured value of the blue sensor

c

Returns the last measured value of the 'white' brightness sensor

r_relative

Returns the value of r/c

g_relative

Returns the value of g/c

b_relative

Returns the value of b/c

brightness_relative

Returns the value of c/65536

Special computations

Starting in the main window of SCOUT, the menu command Objects|Special computations opens the list of special computation objects. These objects perform (sometimes lengthy) computations that are not wanted with every update of the model.

The Edit command shows the current object's parameter dialog, Update forces a re-computation of the object's data. If an object of this type is displayed in a view, a click on the display also starts the re-computation of the data.

At present the following special computation objects are available:

ColorBox

ColorBox

This object computes the variation of the color coordinates a* and b* due to thickness fluctuations. The parameters of the computation (obtained with the Edit command) are the following:

Select the spectrum the color of which you want to investigate and enter the number of iterations that are to be used in the computations - in this case you will get 100 values for a* and b*. If you activate the checkbox Automatic re-computation all 100 values are computed whenever you change a model parameter (by a slider movement, for example). Since this means to re-compute the whole model 100 times the program may react slow with this option activated. If disabled the data are computed on demand only, i.e. by a click on the corresponding view object (see below).

If you check the option Compute average spectrum the average spectrum is computed during a re-computation. In order to visualize the average spectrum you have to generate a view element of type Field view in the list of view elements and then assign the colorbox object to the new field view object by drag and drop. The field view object will take the assigned colorbox object as source and display its average spectrum.

If you like you can define a rectangle in the a*-b* plane to visualize the tolerated area of color (target box). The rectangle is drawn in the color specified by the RGB values in the dialog.

Activating the option Display color background draws a colored background indicating the color impression for the various positions in color space. With the settings shown above this background is drawn using 2500 little rectangles (50 by 50).

The ColorBox graph of b* vs. a* can be shown in a view object. The graphics parameters are set in the following dialog:

If you have checked the option 'Compute average spectrum' a second graphics dialog will open up which sets the parameters for the visualization of the average spectrum in the field view object (see above).

Since the color box graph will show a cloud of points you should use a 'line mode' for individual points (11, 12, 13, 14 or 16, see graphics course) but no continuous lines connecting the points.

In order to really see the color box drag the object from the list of special computations either directly to the main window of SCOUT or the list of the current view objects. In a view, a color box looks like this:

A mouse click on the object in a view activates the re-computation of the object's data (unless you activated the option of automatic re-computation).

The example above shows a configuration which allows to regulate the strength of the thickness fluctuation of all layers by the slider on the left side. If automatic re-computation for the ColorBox object is selected, you can instantly watch the cloud of points while you change layer thicknesses and fluctuation strength. This way you can explore the relation of layer thicknesses and color stability.

Optical function fluctuation

Objects of this type work almost like ColorBox objects. Instead of being limited to the color coordinates a* and b*, you can use arbitratry optical functions for the x- and y-values of the cloud points. Here is an example:

The result in a view looks like this:

Function fluctuation

This object type is even more flexible than the Optical function fluctuation type described above. The x- and y-coordinates of the displayed points are computed according to user-defined functions. These may refer to values of objects in the list of optical functions (the term of(4) takes the 4th object in the list of optical functions) or objects in the list of integral quantities. The latter is available in the CODE software only (not in SCOUT!). You can refer to integral quantities by iq(xx) where xx denotes the position of the wanted object in the list. The term iq(23) takes the value of the 23rd integral quantity.

Since terms like of(5)-iq(12) refer to absolute positions of the wanted objects in their lists, you must not change the order of the optical function objects or integral quantities. If you did so, you should check if the expressions do still what you intend.

An example for a Function fluctuation object is given below:

Parameter variation

Objects of this type perform the variation of a single parameter of the optical model and compute a series of points with x- and y-coordinates which are computed according to user-defined expressions. The dialog for the object settings is this:

You can define an absolute range for the parameter variation, or a range relative to the current values (like +/- 5 nm for a thickness) or a variation in percent with respect to the current parameter value (like +/- 2%). If you use relative variations you should take an odd number of points and do the variation symmetric around the current value.

The functions for the x- and y-value computation are very general expressions: You can use the usual mathematical symbols and/or refer to the fit parameters (fp(4) returns the value of the 4th fitparameter), optical functions (of(2) gives the value of the 2nd optical function) and integral quantities (iq(6) delivers the value of integral quantity number 6).If you leave out the definition of "Function x" as shown in the screenshot above, the parameter values of the variation are taken as x-values. The given example shows how the first integral quantity depends on the SiN thickness.

In some cases it turned out to be advantageous to compute an offset for the x- and y-values, e.g. to perform a small color correction. You can do so by setting expressions for the functions "Offset x" and "Offset y" to the right.

In case you want to overlay several parameter variation results in one view you can synchronize the graphics settings (see below) to a given "master" object.

Once the settings dialog is closed a graphics dialog opens which is used to set 2D graphics for the presentation of results in a view. In order to show a special computation object you have to drag-and-drop it to a list of view elements.

The given example leads to this main view appearance:

Special computation objects compute the position of the minimum and maximum y-values. You can extract these numbers as optical functions, specifying the name of the object and using the arguments minimum_x, minimum_y, maximum_x and maximum_y. Optical functions can be viewed in views through drag-and-drop as well.

The example above uses the following optical functions:

•SiN variation(minimum_y)

•SiN variation(minimum_x)

•SiN variation(maximum_y)

•SiN variation(maximum_x)

Overview

SCOUT contains a list called 'Spectrometers' which manages controllers for spectrometers and other hardware objects. Each object in the list represents a hardware device. Spectrometer objects deliver - after data acquisition - one or more measured spectra. Measured spectra can be assigned to simulated spectra in the list of spectra. If a measured spectrum is assigned to a simulated spectrum, the new measured data are filled in the experiment object of the simulated spectrum whenever a data acquisition step has been processed. Each spectrometer object provides an Edit method for setting the relevant parameters for data acquisition. The spectrometer settings are saved as part of the SCOUT configuration.

The global Acquire command (use the SCOUT menu command Actions|Acquire or the acquire_button button in the toolbar) starts the data acquisition for each object in the spectrometer list. When all spectrometers have finished their measurements, the new experimental data are distributed to the simulated spectra according to the assignments (see below). New fit deviations are computed, and graphs are updated.

The spectrometer list looks like this:

Each spectrometer object should be given a unique descriptive name. The columns labeled 1, 2, ... show the names of the spectra offered by the individual spectrometer objects. Most object types deliver one spectrum only (as the spectrometers T-01 and R-01 in the example). Spectrometer MS-03 exports 3 spectra as indicated by the names in columns 1, 2 and 3.

Measured spectra are assigned to simulated spectra by Drag&Drop. A drag operation must start with the mouse pointer positioned in the row of the relevant spectrometer object, and in the column of the measured spectrum to be used. The target of the Drag&Drop operation can be either the row of the simulated spectrum in the list of spectra, or the window of the simulated spectrum itself. After a successful Drag&Drop assignment you are informed about the new connection:

In order to check the spectrometer assignment for a simulated spectrum, use the menu command Acquire|Show spectrometer assignment in the simulated spectrum object. You will receive an information like this:

Use the command Acquire|Reset spectrometer assignment to delete the current assignment. Alternatively, you can do a new assignment in order to replace the spectrometer connection of a simulated spectrum object.

Data acquisition at timer events

You can use the built-in automation timer to automatically trigger data acquisition of all spectrometer objects. This option is activated using the menu command File/Options/Data acquisition/Acquire spectra at automation steps.

In addition, at each timer events all trigger objects (see below) check if scripts need to be executed.

File import

This object type does not do measurements itself but imports a spectrum from a data file. This can be used if an external data acquisition program permanently writes its measured data to one and the same file. In order to connect this program to SCOUT you can use an object of the 'File import' type to import the measured data whenwever the Acquire command of SCOUT is executed.

The object window looks like this:

Use the Import command to initially specify the filename and the file format of the data file that is used for the spectrum transfer. The measured data are automatically updated when the Acquire command in SCOUT is used.

MiniScan

This object acquires spectra using a HunterLab MiniScan portable spectrometer (connected to the PC by a serial interface):

The current implementation assumes that you have calibrated the hardware manually and you just want to take reflectance spectra.

The object window is this:

There is only one parameter to be specified which is the serial port used for communication. Execute the menu command Connection parameters and select the serial port in the following dialog:

The serial port settings are stored in the SCOUT configuration.

When the global Acquire command in SCOUT is executed all MiniScan spectrometers in the spectrometer list will record new spectra.

Minolta CM-2600d

This portable spectrometer is controlled through commands sent via the serial port. The SCOUT interface lets you send commands to initialize the spectrometer and to record a reflectance spectrum.

The Minolta window looks like this:

Use the Communication button to set the communication parameters in the following dialog:

The Initializations button sends the initializing commands to the spectrometer. If there is a file called 'minolta_initializations.ser' in the SCOUT program directory, SCOUT will read this file and send each line to the spectrometer. Below each command line you should place a text line saying 'Check error'. If this line is found SCOUT reads the spectrometer's response from the serial port and gives a warning if an error code is returned. Here is an example of a command file:

CPS,1,1

Check error

If SCOUT does not find the file 'minolta_initializations.ser' it sends the command 'CPS,0,0' in order to configure the spectrometer hardware.

In order to acquire a spectrum use the R button (or the Acquire command in the main window). In this case SCOUT sends the commands found in the file 'minolta_acquire.ser'. In this file there may be additional configuration commands. The last command should execute the measurement. Do not use a 'Check error' line after the command to do the measurement.

Here is an example for a valid file:

ATD

Check error

MES

After all lines have been sent, SCOUT waits for the measured data to be returned by the spectrometer.

OceanOptics spectrometer

Support for several OceanOptics spectrometers has been integrated into SCOUT. Before you can use OceanOptics hardware in SCOUT, you have to install the original OceanOptics software (for example OOIBase32) and make sure that the hardware is running properly. The file ooidrv.ini (located in the Windows directory) should contain the correct spectrometer and ADC type.

Up to now we have integrated support for the following spectrometer types:

•ADC1000USB

•USB2000

•USB4000

•NIR512

In addition, the very flexible Omnidriver has been implemented which automatically scans for attached spectrometers and lets you select the one you want to work with.

If your spectrometer is not listed above please contact us in order to find out if support for your hardware can be integrated into SCOUT as well.

In some cases the wavelength calibration for the spectrometer pixels could not be read from the hardware. In these cases it turned out to be necessary to create a text file with wavelength information in order to get the required wavelength assignment into SCOUT - in such a case you should contact us as well.

Like any other spectrometer object in SCOUT OceanOptics hardware can be represented in the main view as shown below. The gray rectangle with in the lower right corner has buttons for doing the Dark measurement and the Background measurement. The dark measurement should be performed first - using a 'black' sample such that no light from the sample stage reaches the detector. Secondly the background spectrum must be taken using a calibrated mirror in the case of reflectance or an empty sample stage in the case of transmittance. Having done the dark and background spectrum, you can execute the sample measurement pressing the Acquire button in the view, i.e. the arrow button in the example below:

Holding the Ctrl-key down and clicking the name of the spectrometer (S2000 in this case) a window with access to all details of the spectrometer opens. The main graph shows the final sample spectrum (in this case: the absolute reflectance):

The menu command Show|Dark spectrum opens a subwindow displaying the recorded dark signal:

The background signal is shown in the subwindow that opens with the spectrometer window command Show|Background spectrum:

The absolute reflectance of a sample is computed as

R = Rcorrection * (SSample - SDark) / (SBackground - SDark)

Here SSample is the sample signal, SDark the dark signal and SBackground the background signal.

The absolute reflectance of the reference mirror  Rcorrection can be entered in the subwindow that opens with the menu command Show|Correction factor. A silicon wafer (polished on both sides), for example, has a reflectance like this:

The button 'Conf.' opens the spectrometer configuration dialog:

In most cases it is sufficient to enter the serial number of the spectrometer, the integration time in ms and some averaging parameters: You can average the signal of several neighboured pixels, several scans within the spectrometer hardware and several final spectra in SCOUT.

The integration time should be chosen such that the dynamic range of the spectrometer is used efficiently without reaching the upper limit. If the integration time is too large, an overexposure of one of the pixels may occur. In this case you might get a warning like the following

and the corresponding signal might look like this (in the case of a 12 bit detector which has a maximum number of counts of 4095):

Avantes spectrometer

Various Avantes Vis and NIR spectrometers can be used to acquire spectra, including the new USB2 spectrometers.

tec5 spectrometer

In January 2011 we implemented tec5 hardware support. Single spectrometers and systems with 2 spectrometers are supported.

The object controlling a double spectrometer system looks like this:

For each spectrometer (called Channel 1 and Channel 2) you can easily set the integration time and the number of scans to average. Using the buttons Dark, Reference and Sample you can perform the dark measurement (this should be done first), the reference measurement and finally the sample measurement. In order to check the performance of the system, you have displays of the dark signals (to the right), the signals of the reference measurement (in the center) and the final sample spectra (left side) for both channels.

The example shown above is a system recording reflectance and transmittance of a thin film sample simultaneously. In a case like this, you should assign the measured reflectance (channel 1) to a spectrum object that simulates reflectance, and channel 2 should feed a spectrum simulation object computing transmittance.

Tinkerforge hardware controllers

The company Tinkerforge produces small electronics boards which are used to control motors and manage various sensors. SCOUT contains modules to control servo motors, stepper motors and color sensors. Since it is very easy to implement software modules for Tinkerforge products we are going to integrate more sensors in the future.

A Tinkerforge system consists of at least one so-called brick. You can stack various bricks to add functions to get more powerful devices. Small sensors called 'bricklets' can be connected to bricks.

Tinkerforge provides software tools to manage and test their products. You can use the Windows software brickv.exe, for example, to scan your system for connected devices. Since devices can be on a network or local, you have to provide the name of the host computer (the local one is called localhost) and a communication port (default value is 4223). Pressing the 'Connect' button shows all connected devices.

Each device, brick or bricklet, shows a dialog to test its functions. The dialog also shows a UID which identifies the device. You will need the UID, host computer name and port to address the device in SCOUT.

WOSP shutter

Objects of this type are managed in the list of spectrometers. They address a servo motor which moves a mechanical shutter. In most applications you want to switch between 2 positions, one of which blocks a light path and the other one doesn't. WOSP shutter objects address a TinkerForge servo brick which is a controller for up to 7 servo motors. The board is this:

It has contacts for 7 server motors and an external power supply that provides power for the motors. In addition, there is a micro USB connection. The external power supply can be a battery pack as shown below or a DC power supply (5 V in most cases).

Most servo motors do a rotation of about 180° which is sufficient for the optical shutter function. Please note: The servo brick cannot be used for stronger servo motors that move robot arms or something similar.

Before you use a servo motor in SCOUT you should explore and verify its proper function using the Tinkerforge brickv.exe tool mentioned above. Once you know suitable parameters you can enter the values in the following SCOUT dialog and press OK - that will save the parameter values to the SCOUT object. You can then open the dialog again and check if the shutter works correctly by pressing the buttons 'Open shutter' and 'Close shutter':

Once you have set the operational parameters you can use the following script lines to execute shutter operations:

•object command, my_shutter, open

•object command, my_shutter, close

Here, obviously, my_shutter is the name of the WOSP shutter object as it appears in the list of spectrometers.

WOSP traverse

These objects (managed in the list of spectrometers) control the motion of a stepper motor that moves a payload on a linear traverse. The stepper motor must be controlled by a Tinkerforge stepper brick which is shown below:

The brick has an external power supply, connectors for the stepper motor and a micro USB connector.

Note that there is a maximum external voltage of 38 V and some other limitations on the stepper motors that may be operated with this board. If you need stronger motors you can use a Trinamic traverse object which provides the same function but for stronger motors.

Once you have tested the function of the stepper motor with the Tinkerforge brickv tool you can enter the obtained parameters in the SCOUT dialog for this type of object:

Besides setting speed and acceleration you can define 'Steps for upward movement' and 'Steps for downward movement'. These parameters define how many steps the motor will do when you press the buttons 'Move down' and 'Move up', respectively. You can use these commands to position your payload at 3 different locations, called 'Home', 'Dark position' and 'Reference position'. What we have in mind here is to move a reflectance probehead to a position where you can record the dark signal, to a reference mirror and then to a position where the probehead sees the sample (=home position). Once the payload is at the wanted position you can press the 'Set home', 'Set dark' and 'Set ref.' buttons to record this position. The parameter 'mm per step' can be set in order to convert the position of the payload given in steps to mm. If you are done setting the parameters you have to press OK to close the dialog and save the parameters.

When you open the dialog once more you should verify that the payload moves to the correct positions when you press the buttons 'Go home', 'Go to dark pos.' and 'Go to reference pos.'.

Objects of type 'WOSP traverse' listen to the following script commands:

•object command, my_traverse, move to home position

•object command, my_traverse, move to dark position

•object command, my_traverse, move to reference position

•object command, my_traverse, move to position xyz   //here xyz stands for an integer number defining the wanted position

•object command, my_traverse, move to mm xyz         //here xyz stands for an integer number defining the wanted position in mm

•object command, my_traverse, move up                     // moves up by the pre-defined number of steps for upward movements

•object command, my_traverse, move down                 // moves down by the pre-defined number of steps for downward movements

You can use the following optical functions to extract information from WOSP traverse objects:

•my_traverse (position)           //returns current position in steps

•my_traverse (position_mm)    //returns current position in mm

Warning:

Please note that WOSP traverse objects do not provide a mechanism to find a correct and well-defined starting position when the system is turned on. You have to make sure that the payload is a position 0 when the system is turned on. If you need a safe and automatic behavior at system start-up you can ask us to add this functionality.

WOSP color sensor

This object contols a TinkerForge color sensor bricklet. This device can be used for rapid (and rough) color and brightness measurements. It measures 4 numbers called R, G, B and C which are intensities for red, green and blue light and a gray value for the overall brightness. The sensor provides a white LED which can be switched on and off programmatically.

The sensor looks like this:

The color sensor must be connected to a so-called 'Tinkerforge brick' which is connected to a computer and can be controlled by SCOUT. Bricks supported by SCOUT are the master brick, the servo brick and the stepper brick.

Before you use the color sensor in SCOUT you should test it with the Tinkerforge brickv tool. You need to know the host computer, the port and UID of the device in order to use it in SCOUT.

The dialog to set the properties and test the sensor in SCOUT is this:

Color sensors listen to the following script commands:

•object command, my_sensor, acquire   // tells the sensor to acuire new color values

•object command, my_sensor, light on   // switch on the light

•object command, my_sensor, light off   // switch off the light

You can use these optical functions to retrieve information from color sensors:

•my_sensor (r)   // returns the red color intensity value R, range of values is 0 ...65535

•my_sensor (g)   // returns the green color intensity value G, range of values is 0 ...65535

•my_sensor (b)   // returns the blue color intensity value B, range of values is 0 ...65535

•my_sensor (c)   // returns the brightness value C, range of values is 0 ...65535

•my_sensor (r_relative)   // returns the red color intensity value R divided by the brightness C

•my_sensor (g_relative)   // returns the green color intensity value G divided by the brightness C

•my_sensor (b_relative)   // returns the blue color intensity value B divided by the brightness C

Trinamic traverse

SCOUT can control traverse systems that move optical equipment like spectrometers or light sources. Objects of type 'Trinamic traverse' handle Trinamic stepper motors by communication through TMCL commands. In most cases the stepper motor controller is connected to the computer using a USB or a RS485 connection. In both cases the serial port is addressed as a COM port.

Positioning

Traverse systems driven by stepper motors need to get a unique starting position before controlled absolute positioning is possible. This can be realized by mechanical or magnetic switches.

'Trinamic traverse' objects use an optical method. The usable position range of the traverse is divided into a red zone (negative position values) and a blue zone (positive position values). A Tinkerforge color sensor (connected to the payload of the traverse) gives a color signal called the 'position function'. This is the ratio of the blue value B and the red value R. This ratio is small in the red zone and large in the blue zone. At the transition between the red and the blue zone the position function rises steeply. The origin of the traverse is defined as the position where the position function has a certain value (called threshold) between the low values in the red zone and the high values in the blue zone.

When the traverse system is switch on after a period without power the absolute position of the payload is unknown. In this situation a search routine must be executed before the traverse can be used. The search routine finds the origin of the traverse and sets the position to zero. At the start of the search the position function is used to decide in which zone the payload is located. If the payload is in the red zone the traverse moves upwards in safe steps until the blue zone is reached. Then the motion is reversed and the step size decreased to move back to the red zone. In an iterative process the edge between the red and the blue zone is found. In a similar way the iterative search is done if the start position is in the blue zone.

The value of the position function is available in the list of optical functions using the term 'position function'. The call would be 'My traverse (position function)' if the name of the traverse object is 'My traverse'.

Configuration

The dialog discussed below is used to configure the traverse system. As usual, it is called by selecting the object in the list of spectrometers and then clicking on 'Edit'. Alternatively you can right-click the object in the list of spectrometers.

The parameters Speed and Acceleration are used to set the maximum speed and acceleration of the traverse motion. Position range defines the number of steps that the motor has to take from one end of the traverse to the other. This value is used in the routine that finds the origin to compute reasonable step widths for the iteration. Color sensor specifies the name of the color sensor that is used to find the origin. Position function at origin sets the value of the position function at the origin. In the red zone the position functions are smaller, in the blue zone larger compared to this value. At the beginning of the search procedure, the object checks if the color sensor is responding. It switches the light source off and verifies that the sensor intensity C is smaller than the sensor intensity threshold value. Then it switched on the light and checks if the intensity is above the threshold. Only in this case the search routine is started.

In addition to using steps of the stepper motor you can also work with positions specified in mm. You can set parameters Glass position factor and Glass position offset to compute a position on the sample in mm from the current position in motor steps.

Operation

When the SCOUT configuration is loaded traverse objects try to connect to the stepper motor controller. If that is successful the first action must be calling the 'Find origin' routine. Some actions are forbidden and the corresponding buttons are grayed out until the origin is found.

Once the origin is found all buttons to control the traverse are activated. Use the Move to button to let the traverse travel to a user-defined position, specified in steps. Use the Go home, Go to reference mirror and Go to dark position buttons to move the payload to 3 pre-defined positions.

The button Reset axis position sets the current position to zero, overwriting the rule that the origin of the traverse must be found using the search routine. If you press this button while the payload is not at the origin subsequent motions can cause a crash of the payload at one of the ends of the traverse at full speed. This can severely damage the system!

Warning: Do not use this button unless you are absolutely sure that the payload is at the origin!

Traverse actions can be executed by several script commands:

•object command, my_traverse, set speed, xyz      // sets the speed to xyz (integer number)

•object command, my_traverse, set acceleration, xyz      // sets the acceleration to xyz (integer number)

•object command, my_traverse, move to position expression      // moves to a position which is evaluated from the string expression (expression can be just a number, the name of a master parameter, the name of a fit parameter or an optical function)

•object command, my_traverse, move to glass position and wait expression      // moves to a glass position in mm which is evaluated from the string expression (expression can be just a number, the name of a master parameter, the name of a fit parameter or an optical function). The execution of the script is paused until the position has been reached.

•object command, my_traverse, move to glass position expression      // moves to a glass position in mm which is evaluated from the string expression (expression can be just a number, the name of a master parameter, the name of a fit parameter or an optical function).

•object command, my_traverse, move to dark position      // moves the payload to the dark position

•object command, my_traverse, move to home position      // moves the payload to the home position

•object command, my_traverse, move to reference position      // moves the payload to the reference position

•object command, my_traverse, find origin      // calls the search routine that finds the origin

•object command, my_traverse, wait for position reached      // pauses the script until the wanted position of the payload is reached

•object command, my_traverse, edit      // brings up the configuration dialog of the traverse object

Some status values of the traverse are accessible through optical functions:

•my_traverse (position_mm)    // returns the current position in mm

•my_traverse (position)    // returns the current position in steps

•my_traverse (position function)    // returns the position function at the current position

Trigger

These objects are checking a trigger condition at each timer event. The behavior is controlled in the following dialog:

Note that a trigger can be activated or de-activated using the checkbox on top.

The trigger condition is checked by a comparison of a value given by a user-defined formula and a threshold. If the value is below the threshold a script can be executed (in the example above there is no script defined for this situation). If the value is above the threshold a different script gets started - in this case the script 'scan_sample'.

Note that a configuration may contain several triggers. Note also that triggers can be activated or de-activated by script commands. This way you can generate rather complex sequences of actions.

OPC client

OPC is an international standard for the exchange of information between machines (what is OPC?). An OPC client object in the list of spectrometers is able to connect to an OPC server and read and write values. You can use OPC client objects to respond to an external signal, e.g. to trigger a measurement action, or to pass information about fit parameter values or the current position of a traverse system.

The OPC client window (select the client in the list of spectrometers and click on Edit to open it) looks like this:

The drop down box at the top of the window lets you select an OPC server. If the server runs on a separate computer you have to specify the computer in the edit box on the left. Once the server is selected you can connect by a click on the chain symbol. The connection will be announced in the text box on the left side.

Use the Add items button to select server items. Selected server items are watched by the client at an update rate that you can specify in the lower right corner of the window. Value changes are indicated in the text box to the right.

When you save the program configuration OPC client objects save the names of the selected items. After loading a configuration that contains selected OPC server items, SCOUT reconstructs the items when it re-connects to the server.

OPC items may have quite long names which are difficult to remember. You can define a nickname for the first selected item. The nickname can be used in optical functions (see below).

Optical functions

Using the names of selected OPC server items or the nickname for the first selected item you can retrieve the current values of the items as optical functions. The items must deliver a numerical value, of course. Here is an example of optical functions:

Script commands

OPC client objects execute the following script commands:

•object command, my opc client, connect                 (connect to the selected server, start listening)

•object command, my opc client, stop listening         (stop listening to the server)

•object command, my opc client, pause listening       (stop listening to the server)

•object command, my opc client, continue listening    (continue listening to the server after a pause)

•object command, my opc client, send integer, server item name, value    (sends the specified integer number to a server item)

Introduction

The main window of SCOUT can be used to give quick overviews on relevant parts of the SCOUT configuration without opening additional windows. Once the definition of the physical model is finished you can close all 'subwindows' and analyze series of spectra just using commands in the main window. The main window can be configured in a way such that also unskilled persons with little knowledge about spectroscopy can operate the SCOUT solution. Here is an example:

The display in the main window is defined in so-called 'Views' which can be configured automatically or user-defined. Views are managed in the list of views which is opened by the command Objects|Views in the main window.

Quick access to view elements

If you want to make changes to one of the elements of a view (e.g. to alter the graphics settings of a spectrum), you can click on it while holding the Ctrl-key pressed down. In this case the element's Edit function is called which gives you access to the element parameters. Doing this for the displayed reflectance spectrum you can open the spectrum definition window.

Moving view elements

View elements can be moved by mouse drags while the Caps key is pressed down.

Re-sizing view elements

You can re-size elements by starting mouse drags (with the right mouse button hold down) at the center of the element. Moving the mouse cursor down to the right increases the size, moving up to the left makes the element smaller. Move slowly in order to give SCOUT time enough to re-draw the view. Stop the drag operation when the wanted size is achieved.

A more powerful re-size mechanism is explained using the example of a spectrum view object:

Suppose you want to move the left side of the graph to the left without changing the other upper, lower and right boundary of the view element's rectangle. IN order to do this, imagine the objects rectangle being divided into four sections like the colored triangles sketched below:

In order to move the left boundary of the spectrum object's rectangle, hold down the Caps and the Alt key at the same time, place the mouse cursor in the blue triangle and drag it to the left (pressing the left mouse button down). While you move the mouse, the view is constantly updated. Stop when the a satisfying position is reached:

In a similar way you can re-position the upper, lower or right boundary of a view element's rectangle.

Password protection

Since you can make changes to the model by accessing the view elements from the main window these actions are password protected.

List of views

User-defined views are created, edited and deleted in the so-called 'List of views' which is opened in the main window of SCOUT using the menu item Objects|Views. Do not mix up this menu item with the toolbar button labeled 'View' which is used to switch from one view to the next. If a view object has been created in this list it is displayed in the main window of SCOUT replacing the picture that is loaded at program start. If the list of views contains more than one item the toolbar button called 'View' switches from one to the next. If the last view object has been reached a further click on the 'View' button returns to the first view in the list. This way you can easily cycle through all defined views.

Some commands in the Actions submenu activate automatic view generation.

Defining views

To define the appearance of a view select it in the list of views and use the Edit command. This will open another list which contains the items that are to be displayed in the main window:

Here you can create several types of objects some of which are explained in the following. If no objects are defined SCOUT will fill the main window with a white background.

If you define more than one object to be displayed in a view note that the objects are drawn in the sequence given by the list. The object on top of the list is drawn first, then the second one and so on. This will be important for the design of a view if objects overlap.

At present the following view elements are implemented:

Rectangle                        Displays a rectangle with user-defined color.

Text view                        Displays a user-defined short text.

Bitmap view                        Displays a bitmap picture.

Metafile view                        Displays vector graphics.

Field view                        Displays dielectric functions, spectra or distributions.

Parameter view                        Displays a parameter value as text.

Parameter slider                Displays and modifies a parameter value by a slider.

Horizontal bar                        Displays and modifies a parameter value by a horizontal bar graph.

Vertical bar                        Displays and modifies a parameter value by a vertical bar graph.

Workbook display (columns)        Displays workbook data with one x- and multiple y-columns.

Workbook display (rows)                Displays workbook data with one x- and multiple y-rows.

Sample view                        Displays the current sample identification.

Deviation view                        Displays the current fit deviation.

Rectangle

This object draws a rectangle in the view. Size and position of the rectangle are specified by the Left, Top, Width and Height entry in the list. All values have to be specified in percent of the total area of the main window. The entry

causes the following appearance of the main window:

You can change the color of the rectangle using the Edit command (or a right click of the rectangle's row). You will get two color picking dialogs: The first one for the filling of the rectangle, the second one for the boundary.

If you want to fill the whole main window with a colored background you can use a rectangle object with Left = 0, Top = 0, Width = 100 and Height = 100.

Text view

This object type is used to display a text string in the view. The entry

causes the view to display the text 'Example'. The text appears in a rectangle whose upper left corner is determined by the values given in Left and Top. The height of the font used to draw the text is taken from the Height value. The Width parameter has no meaning. The color of the text can be specified in the color picking dialog that you get with the Edit command.

The example values above lead to the following view:

Lines

This is a view object to be used to show text with several lines. You can work with an optional automatic line break and a background color.

Bitmap view

Bitmap view objects display bitmaps in a rectangle (defined by the Left, Top, Width and Height parameters). The Edit command gives you access to a dialog to specify a Windows bitmap file (*.bmp). The Source value shows the location of the imported bitmap file.

The main purpose of using bitmaps is to illustrate the SCOUT method, i.e. indicate what is does, show a logo, give short explanations to the user or simply to make the SCOUT appearance nicer.

The entry

leads to this view:

Warning: After you imported a graph in a bitmap view object it becomes part of the SCOUT configuration and SCOUT does not need the original file any more. However, be aware of the fact that the SCOUT configuration file can get very large if it contains large bitmap files.

Metafile view

Metafile view objects display vector graphics in a rectangle (defined by the Left, Top, Width and Height parameters). The Edit command gives you access to a dialog to specify an Extended Windows Metafile (*.emf). The Source value shows the location of the imported metafile.

The SCOUT installation copies some useful metafiles in the subfolder pictures. Some of them are sketches, others can be used as more or less colorful backgrounds. Here are some examples:

Creating metafile graphics

Extended metafiles are supported by only a few Windows graphics programs. The easiest way to create them is the following: Use Microsoft Word or other text processing programs which are able to create drawings as vector graphics. Create a picture and copy it to the clipboard. Then create a metafile object in a SCOUT view like the one in the last row below:

Then use the Paste menu command which will paste the clipboard picture into the metafile view object (if the clipboard contains a metafile format). Update the main window of SCOUT to inspect the imported picture. If you use a formula editor you can even paste formulas in metafile objects:

The graph is now part of the SCOUT configuration. If you want to re-use the graphics for other configurations you can store the picture as extended metafile by selecting the metafile view object and applying the Export command in the view list.

The easy way to add sketches to a view

The main window of SCOUT has a menu command called Actions|Add symbol to view. This does the following: A metafile view object is created in the center of the current view and the corresponding Edit command is executed automatically. This opens the pictures subfolder of SCOUT where you can select a picture. Afterwards you can move or re-size the metafile picture in the view.

Moving and re-sizing pictures

Like all view objects, metafile pictures can be moved in a view this way: Keep the Caps key pressed down, select the picture in the view with the left mouse button and drag it to the new position.

Re-size objects by the following action: Select the picture with the right mouse button in its upper left corner. Then drag the mouse cursor down to the right with the right mouse button kept down. Stop at the wanted new size.

Metafiles do not consume very much space in SCOUT configurations. You can use them freely to illustrate your SCOUT views.

Parameter view

Objects of this type display values of model parameters in the view. They are created by Drag&Drop exclusively. Do not create objects of this type using the  '+' button of the list.

To display a layer thickness in the view, open the layer stack definition and the view definition simultaneously and drag the layer entry to the view definition list. After dropping the item a new object of type parameter view is created and connected automatically to the thickness parameter as indicated in the Source column.

If you drag a dielectric function model from the list of dielectric functions to the view definition list SCOUT creates a parameter view entry for all parameters of the dielectric function model. Generally SCOUT creates as many parameter view entries as the dropped object has fit parameters.

You can define in the Name column a name for the parameter of your choice. Beginning at the position defined by Left and Top, the text entered as Name is displayed. The color as well as the Height of the font are defined as for text view objects. At a distance given by the value of Width to the right of the Top position the parameter view object starts to output the numerical value of the parameter. Here is an example:

causes SCOUT to display the following output in the main window:

Grid

Grid objects are used to provide a colored background for other objects, and to help to align view objects.

Please note: It turned out to be useful to de-activate the mouse-driven positioning and re-sizing of grid objects since they are mostly used to provide a background for the other objects and should not be moved accidentally.

The main rectangle spanned by a grid object is subdivided into a user-defined number of rectangles. Each rectangle may have its own user-defined color. Alternatively, the colors may be computed applying user-defined functions, or by using a pre-defined color scheme. Optionally, you can show dividing lines between the rectangles.

Here is an example of a simple grid object:

View objects in the list of view elements located underneath a grid object can be aligned on the grid. This is done by pressing the key 'g' while you are showing the main view. Each view object has a built-in function to align itself properly on a grid. This feature is usually used in the way that you only roughly position view elements on a grid (for example several field views showing various spectra) and then press 'g' to automatically align the objects on the regular grid pattern.

Here is an example. The graph below shows the situation with rough positioned elements (i.e. before you press 'g'):

Then, after pressing 'g' to force automatic alignment, the main view looks like this:

The grid dialog

The dialog to set a grid's properties is the following:

The parameters Sectors x and Sectors y are used to set the number of rectangles in the x- and y-directions, respectively.

The option Draw lines in different colors is used to activate or de-activate drawing of dividing lines. If activated, you can set the color for the lines by pressing the Set line color button. The assigned color is used unless you check the option to use user-defined functions for colors (see below).

Checking the option Apply color scheme you can select a pre-defined color scheme. This way you can easily select one of several pre-defined designs.

Finally, checking the option Use functions for line and fill colors gives you the opportunity to define your own functions for the line and filling colors. For the red, green and blue color component individual functions can be assigned which can make use of the symbols x and y for the x and y position of the individual rectangle. x ranges from 0 (left end of the grid area) to 1 (right end of the grid area). y ranges from 0 (top) to 1 (bottom). Take into account that the RGB color system uses integer values between 0 and 255 for each color component. The rounding to integers is done automatically for the user-defined functions.

Here is an example. The dialog settings

will generate this view:

Assigning individual color to grid rectangles

In order to assign individual colors to grid rectangles you have to de-activate using a color scheme or user-defined functions. Once this is done, you can click a rectangle while holding the Alt key down. This will bring up a color dialog to set the rectangle's color. The graph below shows an example of a color assignment done this way:

Using grid objects to generate a colored background

You can use grid objects to generate advanced color gradient backgrounds. In this case you have to use a large number of rectangles. Be aware, however, that the drawing time for the background should not get too large - the background is drawn again with every update of the view. Below some examples are shown where the functions for red, green and blue and the result are given.

Deep sea

red = 0

green = 0

blue = 200*(x-1)*(y-1)

Space

red = 155*exp(-((y-0.9)/0.2)^2)*exp(-((x-0.5)/0.4)^2)+155*exp(-((y-0.3)/0.1)^2)*exp(-((x-0.9)/0.06)^2

green = 155*exp(-((y-0.9)/0.2)^2)*exp(-((x-0.5)/0.4)^2)+155*exp(-((y-0.3)/0.1)^2)*exp(-((x-0.9)/0.06)^2)

blue = 255*exp(-((y-0.9)/0.2)^2)*exp(-((x-0.5)/0.4)^2)

Columns

red = 255*cos(((y/1.4)/1.8)^2*3*pi)

green = 255*cos(((x)/1)^10*2*pi)

blue = 0

German edge

red = 66*exp(y^4+x^2)

green = 66*exp(y^4+x^2)

blue = 66*exp(y^4+x^2)

Blue

red = 0

green = 0

blue = 250*exp(y^4+x^2)

Phantasy

As you can see in the last examples, you can develop very different color gradients if you are inventive enough to generate user-defined functions. If you get the fever you should try new functions with a moderate number of rectangles. Using many rectangles means to wait a long time for the image to appear. Once you have a promising candidate you can increase the number to avoid pixel effects. However, once you compute more than 10000 rectangles the images might be nice but tedious to draw. In this case you can proceed like this: Compute the image with a large number of rectangles and then use the command Actions/copy bitmap to copy the image a bitmap to the clipboard - or use Actions/Save bitmap to store the image as bitmap file.

Finally you can delete the grid component and use a Bitmap view object to display the image as background for your view.

Here are some phantasy grid images:

Space highway

red = 200*log(((x-px)^2+(y-py)^5)/(x-px))+(x-px)

green = 150*log(((x-px)^2+(y-py)^5)/(x-px))+(x-px)

blue = 100*log(((x-px)^2+(y-py)^5)/(x-px))+(x-px)

with px = -0.01 and py = 1 (defined as master parameters).

Blue yellow fountain

red = 250*x^2

green = 250*x^2

blue = 250*cos((x)*pi*4)*exp(y^2)

Flame3

red = 250*log(((x-px)^3.02+(y-py)^2)/(x-px))+(x-px)

green =  250*log(((x-px)^3+(y-py)^2)/(x-px))+(x-px)

blue = 250*log(((x-px)^2.98+(y-py)^2)/(x-px))+(x-px)

with px = 0.16 and px = 0.45 (master parameters).

Diagonal ...

red = 250*log(((x-1)^3.02+(y-1)^2)/(x-1))+(x-1)

green = 250*log(((x-1)^3+(y-1)^2)/(x-1))+(x-1)

blue = 250*log(((x-1)^2.98+(y-1)^2)/(x-1))+(x-1)

Field view

Field view objects display SCOUT spectra, dielectric functions or distributions as well as average spectra of colorbox objects. The graph is drawn within a rectangle defined by the Left, Top, Width and Height parameters. The data to be displayed have to be defined by Drag&Drop: To display a spectrum you have to open the list of spectra (from the main window: Objects|Spectra) and start in the row of the desired spectrum a drag operation. The dragging has to end with a drop above the row of the field view object in the view definition list. The example

creates the following view in the main window:

During a parameter fit SCOUT updates the view in the main window if an improvement has been achieved.

Besides spectra from the spectra list you can also drag dielectric function objects from the list of dielectric functions to a field view object if you want to display optical constants in a view.

Workbook display (columns)

This object displays workbook data in a view. It can be used in the case where you have a column of x-values and one or several columns of y-values and you want to display all y-values vs. the x-values.

In order to use an object of this type in a view, proceed like this: Open the workbook and select the appropriate worksheet containing your data. Then select the cells that contain the x-values. The first row may contain text which will then appear in the graph labeling the x-axis. Then, in a second step, select the y-values. If you included explaining text for the x-values in the first row, you have to include text for each y-column as well. All y-values must be in a contiguous selection as shown in the example below:

If the x- and y-columns can be marked in one contiguous selection, you can do so like in this example:

After the cells are selected, you have to open the list of views in the main window of SCOUT (Object|Views), select the view which shall contain the new graph and open its object list (Edit or right-click):

Now create in this list an object of type 'Workbook display (columns)' and Update the display in the main window of SCOUT:

Obviously, this graph needs some fine-tuning!

First of all, you can change the size of the object by dragging while the right mouse button is pressed down. You can drag the object to a new position within the view using the mouse and pressing the Caps key and the left mouse button simultaneously. Try to manage something like this:

Now, click the graph while the Ctrl-key is pressed down in order to get access to all the graphics parameters. You will go through three dialogs if you have selected multiple columns of y-data. If there is only one column of y-data the last two dialogs are skipped.

The first one gives you the chance to modify the graphics parameters like in many other SCOUT objects. See the SCOUT graphics course for the meaning of all the parameters. In this example, I have made the following settings:

When you have closed this dialog the next one opens which shows a list of all the columns of y-data:

In this dialog (borrowed from Collect objects) you can ignore most of the items. In this context you should use the dialog to change the color and line type of each set of y-data (see the graphics course for available colors and line-types). With a right-click you can toggle the status 'Active'. Only 'active' data sets are displayed in the graph. Try this assignment:

and then close the dialog.

Finally the dialog controlling the appearance of the legend is opened:

Here you can change the position and the width of the legend box. All numbers are to be given in mm, also the text height.

The mode parameter determines what is shown in the legend: A value of 0 suppresses the drawing of the legend, with 1 the legend will show the name of each data set, with 2 the numerical value assigned to the data sets are given, and with 3 both the names and the numerical values are shown.

Once you have closed this dialog the main window re-draws the view according to the new settings:

From now on the new 'Workbook display (columns)' object is tightly connected to the selected workbook cells. If the cell contents change due to recomputations an update in the main window will cause the display object to get and display the new data.

In the present version of this object type it is not possible to change the referenced workbook range afterwards. If you want to display the content of a different workbook range you have to create a new object as described in the top of this page.

Workbook display (rows)

Objects of this type work exactly the same way as Workbook display (columns)objects, with the only difference that workbook rows instead of columns must be selected to deliver the data for the data sets.

Here is an example. After the following cells have been selected in the workbook

a creation of an object of type 'Workbook display (rows)' and appropriate graphics settings lead to the following picture:

Deviation view

This object type is used to display the current fit deviation in a view. It works exactly like text view objects, with the difference that the displayed text is given by the value of the fit deviation.

Rating view

This object type is used to display the current rating. It works exactly like text view objects, with the difference that the displayed text is given by the current rating result.

Sample view

This object type is used to display the current sample identification in a view. It works exactly like text viewobjects, with the difference that the displayed text is given by the name of the current sample.

The sample identification is set when you execute the Import command in the speedbar of the main window, or in the File|Options|Sample description menu command.

Layer stack view

Starting with object generation 2.26, layer stacks can be drawn in views like in the following example:

In order to display a stack in a view, open both the list of view elements and the layer stack list. Then drag the wanted layer stack to the list of view elements and drop it there as indicated in the next graph:

The layer stack view will be added to the list of view elements and you can set its size properly. The definition of position and size of layer stack view objects is a little different from other view elements. Please read the following rules carefully before you try to use layer stack view objects.

Position

Most view objects are drawn in a rectangular box. The upper left corner of that box is usually defined by the 'Left' and 'Top' parameters. In order to properly position layer stack objects in a view, for this object type the position is defined differently: The 'Left' and 'Top' parameters define the upper left corner of the bottom halfspace of the layer stack as indicated below:

Size

The rectangle defined by 'Width' and 'Height' is not the rectangle including the whole view object as usual. Instead, for 'Layer stack view objects' it defines the size of a single layer in the layer stack. This is indicated by the black rectangle in the following graph:

Hotspot

The 'hotspot' to move, re-size, right- or double click a layer stack view object is indicated by the red rectangle in the area of the bottom halfspace shown below:

Please note that this is different from most other view objects. You can easily miss a layer stack view object working intuitively.

Multiple spectra view

In configurations like this

you might want to save some space. You can do so by using a view object of type 'Multiple spectra view' which displays many spectra in one graph.

You can display 2 sorts of data: Dynamic (i.e. eventually changing) spectra of the current optical model (all spectra in the list of spectra, but also optical constants of materials in the list of materials) and static spectra imported from data files.

Multiple spectra view objects show all spectra in a single graph. The settings are defined in a window like the following:

Using the Range command you define the spectral range of the displayed data. If the source data (see below) are defined in a different range (even with a different spectral unit) the data required for the display are generated by interpolation. Once the data are computed they are displayed using the current graphics settings (defined in the Graphics submenu). The graphics settings including the axis definitions can be done independently from the spectral range used to compute the data.

Importing external spectra

External spectra can be imported using the command 'New and import'. You can select multiple files to be imported. If you do so, it is recommended to click the last spectrum first in the file dialog and then move to the first spectrum, clicking it with the Shift key hold down. This way the order of the files is preserved which may be important for the following actions:

After data import and defining appropriate graphics settings the graph may look like this:

Since all spectra have the same label, we have to do some more work. Click on Show list to open the internal list of spectra of the object:

As a first action we can use the command Actions/Set filenames as spectrum names. This way the 'no name' labels are replaced by the filenames. Clicking on Autocolor (which assigns colors and line types automatically) and File/Options/Use control characters when drawing text (this option regulates the use of the underscore character) one gets the following graph:

In the main view this would look like this:

As you may have seen there are also symbols indicating that you can generate 3D graphs. In order to do so, the position of the spectra on the so-called parameter axis must be defined by a number called 'parameter'. This can be a temperature, a partial pressure of a reactive gas or, as in this case, the deposition time. Open the internal list of spectra to type in the parameter values in the first column. You can save a lot of typing work, if the spectra are already ordered in the list. Then apply the command Parameters/Set to 0, 1, 2, 3, ... or Parameters/Set to 1, 2, 3, ... to set parameter values automatically for the whole list. You can modify existing parameters using the commands Parameters/Multiply by constant factor and Parameters/Add offset. If, after your manipulations, the parameters are not ordered any more you have to apply the command Sort. Then you are ready to click on one of the 3D graph symbols to get a display like this:

of a false color plot like this:

False color plot use a color gradient starting with the color of the grid pen (yellow in this example) and ending with the color of the data pen (blue).

Displaying dynamic model spectra

Besides showing data from external data files, multiple spectra view objects can also display spectra that change as part of the optical model. In order to display  the data of an existing material or spectrum object you have to specify the name of the object in the name column. In addition you have to indicate the wanted spectrum.

Available spectra for reflectance and transmittance objects are

o(simulated): refers to the simulated spectrum

o(measured): refers to the measured data

o(target): stands for the target spectrum

o(reference): for the reference spectrum

Valid names are then RC (simulated) or T (measured) if objects in the list of spectra named 'RC' and 'T' exist. Here is an example

with 3 simulated spectra in one graph:

You can also display optical constants in multiple spectra views. In this case you have to refer to the name of the material and specify in addition which quantity you want to display:

o(n) : real part of the refractive index

o(k) : imaginary part of the refractive index

o(real part df) : real part of the dielectric function

o(imaginary part df) : imaginary part of the dielectric function

o(alpha) : intensity absorption coefficient

o(energy loss) : energy loss function

Here is an example:

Drag&Drop creation

You can drag spectra from the list of spectra and drop them on multiple spectra view objects. In this case the view object generates 2 new items in the internal list of spectra, displaying the simulated and measured spectra of the dropped object.

In a similar way you can drag&drop materials to multiple spectra view objects, which tells the object to generate displays of n and k of the dropped material.

List view

List view items display the content of a list in a view as a table. The display is generated in 2 steps:

•First you create an object of type List view in the list of view objects

•Then you drag the list that you want to show to the list view object and drop it there

The edit dialog of list view objects is as simple as this:

You can enter a title, select the display style and the font and background colors.

In general list view objects show all columns that the original list shows as well. In some cases, however, the number of columns is reduced in order to make the list easily readable. Here are some examples of list views:

Access to list items

In complex configurations with many materials, layer stacks and spectra it makes sense to work with list views as 'jump centers': A click on the title opens the original list, a click on a listed item opens its dialog (in most cases). Displaying the list of spectra as shown in the example above gives immediate access to all spectra without moving to the relevant treeview branch.

Parameter slider

This object is used to display and modify the value of a model parameter in a view. The current parameter value is displayed as position of a vertically moving slider. You can move the slider with the mouse and modify the parameter value this way.

Once have created an object of this type, you have to select the model parameter in a dialog like the following (similar to the one for fit parameter selection):

Please select one parameter only!

After you have closed this dialog, you have to select a color for the slider text (a dark color like black or blue is recommended) and the parameter variation range (minimum and maximum). Finally, you should enter an appropriate name for the slider object in the view list and adjust the size of the slider in the view to your needs. Here is an example (name of the object: 'Angle of incidence', parameter range: 0 ... 80 degrees, current value: 19 degrees):

Vertical bar

Objects of this type are very similar to horizontal bars but they display the parameter value using a vertial bar. The example below shows two vertical and two horizontal bars in a view:

Horizontal bar

Objects of this type are created and work exactly as Parameter slider objects. The only difference is the display style in a view which is (no surprise) a horizontal bar. The parameter value can be 'moved' with the mouse. Bar displays are more compact than parameter sliders, so you can use more of them in a view like in this example:

Fit parameters

This view object automatically shows all fit parameters as horizontal bars in a rectangular box like in the example below:

You can click the small rectangles at the left or right end of a bar in order to type in the value of the minimum or maximum of the parameter range.

Be careful changing parameter values with mouse movements: You can easily set unwanted values for parameters, and there is no undo-option!

Jump to configuration

Use objects of this type to load a new configuration, i.e. they work like a hyperlink on a web page. The current configuration is given up without warning - changes made to it are lost. Make sure that the user is aware of this and does not expect changes to be saved automatically.

Obviously 'jump' objects are meant to help to organize your work. Instead of searching configuration files in a folder structure you can place jumps to your favorite configurations on 'directory' pages. This way you can move to the wanted configuration with a few mouse clicks.

Here is an example of a 'directory page' with several 'jump to configuration' objects:

The colored rectangles on the right side are 'jump to configuration' objects. Pressing the ctrl-key and clicking on the text 'Wave at interface animation' opens the 'jump' object in edit mode:

The first dialog shown above is exactly the same as the one for 'Lines' objects. You can enter several lines of text to describe the jump. In contrast to 'Lines' objects the first line of a 'jump to configuration' object is drawn using bold characters. The idea is to have a kind of title of the jump in the first line and - eventually - some more descriptive text below.

When the text is ready you press OK to close the dialog and open the next one which lets you set the jump target:

Depending on the application there are different ways to define the location of the new configuration.

Absolute path

Clicking on the 'Select' button opens a file pick dialog which lets you select the wanted configuration file. The complete path to the file is entered in the edit field as shown in the example above. This way you get an absolute path definition which is good if you want to jump to configurations on a dedicated computer, scattered all over the file system.

Relative path

If you want to generate a sequence of configurations that you want to send to other users it is better to work with relative path definitions. In order to do so, you have to save all configurations of the series in a subfolder structure of the program directory. If you have done this using the folder name 'optics', for example, you can delete the leading part of the absolute path and keep the partial text 'optics\wave propagation\interface_animation.wcd' like shown below:

The program looks for the characters ':' and '\\' in the path definition. If one of them is found an absolute path is assumed, otherwise a relative path is used to locate the target file.

Path within the database

If you check the check box 'File located in database folder' the program takes the relative path specified in the edit box and adds it to the database folder named 'config_templates' to get the final location of the target file (which could be something like 'c:\code\database\config_templates\optics\wave propagation\interface_animation.wcd').

Use this way to address jump targets if you work with shared database folders in your company network.

Download from website

This option is used by W.Theiss Hard- and Software only to prepare configuration downloads from our website. Normal users do not have the rights to place configuration files on our web space.

Next view button

A click on this object will tell SCOUT to load the next view. The action is exactly the same as if the button 'View' in the tool bar is pressed.

Besides the click action, objects of type 'Next view button' are like Metafile view objects. When they are created the graph called 'next_view_button.emf' in the subfolder pictures of the SCOUT directory is loaded into the object. You can change the displayed graph by pasting vector graphics from the clipboard or loading a different metafile graph using the Edit command (see the description of metafile view objectsfor details).

Previous view button

This object type behaves like 'Next view button' objects, but switches to the previous instead of the next view. The default graph for the object is taken from the metafile 'previous_view_button.emf' in the subfolder pictures of the SCOUT directory.

Next configuration button

This object is a button which switches to the next configuration if SCOUT displays a presentation. The default graph for the display of the button is taken from the metafile 'next_configuration_button.emf' in the subfolder pictures of the SCOUT directory.

Previous configuration button

This object is a button which switches to the next configuration if SCOUT displays a presentation. The default graph for the display of the button is taken from the metafile 'next_configuration_button.emf' in the subfolder pictures of the SCOUT directory.

Acquire button

This object is a button which activates the acquiring of new spectra of all spectrometers, like the menu command Actions|Acquire. The default graph for the display of the button is taken from the metafile 'acquire_button.emf' in the subfolder pictures of the SCOUT directory.

Script

Script objects execute several lines of commands when the user clicks on the object. The Script object type is based on the object type 'Lines', i.e. it can display several lines of text with an optional background color filling the rectangle. Basically you can consider it to be a button that starts an action.

The edit command of a script object brings up the following dialog:

The text field on top lets you write the description to inform the user about the script. The first line of the description will be displayed using bold letters.

The bottom part contains the script lines that are executed. Each line must contain one command. Each command may have several parts, separated by commas. The commands available at present are described below.

If you want to avoid that the user can change the script object you can check the 'Check password when user tries to edit script' option and set a password in the password editor.

The tables below show the available script commands with and without additional parameters.

Script commands without parameters

Script command

Explanation

acquire

Tells all spectrometer objects to acquire spectra

automatic export of measured spectra

Exports all measured spectra to the folder specified for automatic spectrum export.

automatic export of measured spectra to csv files

Exports all measured spectra to the folder specified for automatic spectrum export, using *.csv file format

automatic export of measured spectra to excel files

Exports all measured spectra to the folder specified for automatic spectrum export, using Excel file format.

automatic import of measured spectra

Executes automatic spectrum import for the current sample description

automatic import of measured spectra from csv files

Imports all measured spectra from the folder specified for automatic spectrum export, using *.csv file format

automatic import of measured spectra from excel files

Imports all measured spectra from the folder specified for automatic spectrum export, using Excel file format

clear workbook

Clears the workbook

connect to ado database

Connects to the Microsoft SQL database using the access data defined in the SQL section

connect to first mysql database

Connects to the first MySQL database using the access data defined in the SQL section

connect to second mysql database

Connects to the second MySQL database using the access data defined in the SQL section

data acquisition: do it

Starts a series of data acquisition events.

data acquisition: edit delay

Lets the user set the delay between measurements in a series of data acquisition events.

data acquisition: edit number of measurements

Lets the user set the number of measurements taken in a series of data acquisition events.

do not search path containing optoplex csv files

Sets a flag to false, skipping explicit folder search for Optoplex csv files. Use this option after the user has selected the folder and you want to use this folder from now on for the following actions.

edit climate

Opens a dialog to set climate parameters for integral quantity computations (CODE only)

edit sample description

Lets the user modify the sample description in a dialog

edit sample description exit script after cancel

Lets the user modify the sample description in a dialog. If the user exits the dialog by pressing the Cancel button, the following script lines are ignored.

edit username

Lets the user change the username. You can use this command to have operators type in their name, for example.

edit window tilt angle

Opens a dialog to set the tilt angle of a window glazing. Used for some computations in CODE.

exit program

Quits the program

export data acquisition results to workbook

Writes the final numbers and the spectra to the workbook sheet 'Data acquisition results'. If the sheet does not exist it is generated.

export fit results to workbook

Exports the current fit results to the workbook. If the workbook has the correct structure, a new column is added. Otherwise the correct workbook structure is generated, erasing the current workbook.

export results to sql database

Exports current sample, spectra and analysis results to the selected database

extract single spectra from optoplex csv files

Lets the user select a folder which contains Optoplex 5.1 csv files with data acquisition results. Individual files are generated in the subfolder '\single files\'. The single files can be used as input for batch processing or BREIN.

flip target and measured spectra

Exchanges target and measured spectra of all objects in the list of spectra

generate new substrate reset correction range

This command resets the correction range for automatic substrate generation. After its execution no correction is done anymore, until a new correction range is defined.

generate SQL table for fit results

Generates a new table in the SQL database which can be used to store the fit results of the current configuration

import all spectra from an optoplex ngq exsitu file

Executes the menu command 'actions/spectra/import/import all spectra from an Optoplex NGQ exsitu file'

import all spectra from a zeiss thinprocess database

Opens the dialog to connect to a ThinProcess database and load spectra for a selected sample

increase automation step

increases the automation step counter by 1

increase sample index

Increases the sample index by 1

loop through batch results

Loops through all batch results, loading all spectra and the obtained fit parameters into the optical model

parameter variation

Starts the parameter variation routine, like the menu command "Actions/Parameter variation"

prepare batch fit using optoplex csv files

Lets the user select an Optoplex pane ID which is then used to prepare a batch fit for all positions found in the corresponding *.csv file.

prepare new batch fit

Prepares all required worksheets for a new batch fit

prepare optoplex ngq batch fit

Lets the user select an Optoplex NGQ exsitu file with spectra and prepares a new batch fit for all traverse positions found in the file

prepare von ardenne exsitu batch fit

Lets the user select a Von Ardenne exsitu file with spectra and prepares a new batch fit for all traverse positions found in the file

repeat parameter variation

Repeats the parameter variation routine, like the menu command "Actions/Repeat parameter variation"

reset automation step

Sets the counter for automation steps to zero

reset sample index

Sets the sample index to 0

save as

Executes the SaveAs dialog to save the program configuration

save simulated as measured spectra

Copies the simulated spectrum to the measured spectrum for all objects in the list of spectra

save simulated as target spectra

Copies the simulated spectrum to the target spectrum for all objects in the list of spectra

save workbook

Saves the workbook to a file

search path containing optoplex csv files

Sets a flag to true which forces explicit search of the input folder for Optoplex csv files.

select database

Shows a dialog to select the database

select material from database

Shows the optical constant database as a dialog so that the user can select a material (used in combination with the command 'assign selected database material to layer, stack index, layer index')

set automation log file

Shows a dialog to set the log file for automation results

set time marker

Sets the time marker. Use this option to control time critical actions.

show time since last time marker

Writes the number of milliseconds elapsed since the last time marker has been set to the message board.

start automaton timer

Starts the automation timer, i.e. a clock which generates periodic automation events

start batch fit

Starts the batch fit

start clock

Starts the internal clock

start fit

Starts the fit

stop automation timer

Stops the automation timer

stop batch fit

Stops the batch fit

stop clock

Stops the internal clock

stop fit

Stops the fit

toggle automation timer

Changes the state of the automation timer from on to off if it is on, or from off to on if it is off.

update data

Re-computes the whole configuration, used when the model needs an update after a parameter change

update database lists

Updates the lists of database objects

update plot

The main view is drawn, used when changes of the model should become visible to the user

update special computations

Tells all object in the list 'Special computations' to re-compute their data

write logging header

Writes the header for logging information to the workbook

write logging line

Writes a line of logging information to the workbook

Script commands with additional parameters

Script command

Explanation

Assign layer stack to spectrum simulation object, name of layer stack, name of spectrum simulation object

Assigns the layer stack with the given name to the specified spectrum simulation object

assign selected database material to layer, stack index, layer index

Assigns the selected database material (see the command 'select material from database') to the layer specified by layer_index in the layer stack given by stack_index. Both layer_index and stack_index are counted 1, 2, 3, ...

continue if fit stopped, max waiting time in seconds

Waits until a running fit is stopped or until the maximum number of seconds has elapsed. If the fit is still running a delay of 500 ms is executed. If the maximum number of seconds has been reached the script continues. Make sure that you call 'stop fit' with a short delay after this command to make sure that the fit is not running anymore before the next script commands are executed. Otherwise an inconsistent program status can occur.

create fit parameter,list index, object index, subobject index, subsubobject index, parameter index

Creates a new fit parameter for the specified list and the specified object in that list.

delay since last time marker, milliseconds

Pauses the script until the given milliseconds have passed since the last time marker has been set.

edit fit parameter, fit parameter name

Shows a dialog which lets the user change a fit parameter

edit master parameter, master parameter name

Shows a dialog which lets the user change a master parameter

generate new substrate, r, t, d_glass,spectral_min, spectral_max,number_of_points, spectral_unit

Generates a new substrate in the folder \database\automatic_subtrate_update\. The optical constants are computed using the measured data in the spectrum objects r (reflectance) and t (transmittance). The thickness is taken from d_glass (mm). The spectral range is taken from the given values of spectral_min, spectral_max, number_of_points and spectral_unit. If a 'correction range' (see below) has been defined it is used.

generate new substrate correction range, spectral_min, spectral_max

Defines a spectral range (based on the vales spectral_min and spectral_max) for a check of the condition R+T<=1. If R+T is >1 it is assumed that R is too high (caused by scratches or  surface contamination of the reference mirror). A correction factor for the reflectance spectrum is computed which ensures that R+T<=1 in the whole correction range.

go to view, name

selects the view with the given name as the current view

import pane wizard spectra from window text file, stack index, layer index

Loads pane wizard spectra for the layer given by layer index in the stack given by stack index from a Window text file

load configuration from sql database, configuration index

Loads the configuration with the specified index from the connected SQL database

move master parameter, name, start_value, final_value, steps

Used for animations: Moves the value of a master parameter from the initial value to the final value, taking the specified number of steps and a delay of 25 ms in between each step. For each step, the whole model is re-computed and the current view updated.

object command, argument 1, argument 2, ...

This is a general script command which may have several arguments, depending on the object to be called. Usually the first argument is the name of the object to be activated, followed by the name of an action and more parameters to be passed.

The section below lists the implemented commands of various object types.

rename material, index, new name

Gives the material list object specified by index a new name

rename material dialog, index

Gives the material list object specified by index a new name by showing a user dialog

rename worksheet, new name

Renames the currently selected worksheet of the workbook

save material to database, index

Saves the material list object specified by index to the database

set automation time interval, milliseconds

Sets the automation time interval to the given number of milliseconds

set emissivity, spectrum name, position, value

Sets an emissivity value which then can be used for the computation of a U- or g-values.

The U- or g-values to be computed must be linked to the spectrum. The name of this spectrum is passed as second item of the command. The third parameter identifies the position in the stack, counted as 1, 2, 3, 4 beginning on top of the stack (which means 'outside'). Finally, the fourth parameter is the value of the emissivity.

set label, label name, label caption

Changes the caption of the label (a view element) specified by the name 'label name'

set master parameter, master parameter name, new value

Assigns a new value to the specified master parameter

set number of spectral points,n

Sets the number of spectral points to n for all materials and spectra

set path for automatic spectrum export, path

Sets the path for automatic spectrum export. If the specified path is empty the default folder \database\spectra\automatic\ is used.

set sample description,sample 0815

Changes the sample description to the new text 'Sample 0815'

set sample position x, number

Sets the x-coordinate of the sample position to number

set sample position y, number

Sets the y-coordinate of the sample position to number

set sample position z, number

Sets the z-coordinate of the sample position to number

show message dialog,text

Shows a modal dialog with the given text on the screen. The dialog has an Ok button only - there is no Cancel option.

show pane wizard, stack index, layer index

Opens the pane wizard for the layer given by layer index in the stack given by stack index

show workbook as model dialog, explanation

Transfers the text given by 'explanation' to the workbook and then shows the workbook as modal dialog (which must be closed before the program continues to do other things)

simple object command, object name, command

Passes a command to the object with the given name

take sample position y from traverse, name

Asks the traverse with the given name for its current position and takes it as y-coordinate of the sample position

verify function value, the function, min, max, the_quantity

Evaluates the function value which is given by the user-defined function. A warning on the screen is raised if the function value is outside the interval [min, max]. The text given by 'the quantity' is used in the warning text. You can use this function to inform the user of a spectrometer saturation or a temperature which is too high.

verify function value exit script when false, the function, min, max, the_quantity

The same as 'verify function value' but in addition to a warning message on the screen the current script is not continued. Use this function to verify that your equipment is ready for the following actions of the script.

view object command, object name, height, new value

Sets the position parameter 'height' of the view object to the indicated value

view object command, object name, hide

Hides the specified view object

view object command, object name, left, new value

Sets the position parameter 'left' of the view object to the indicated value

view object command, object name, show

Show the specified view object

view object command, object name, slide height, initial value, final value, steps

Used for animation: Change the position parameter 'height' of the view object from the initial value to the final value, taking the indicated number of steps with a delay of 25 milliseconds in each step

view object command, object name, slide left, initial value, final value, steps

Used for animation: Change the position parameter 'left' of the view object from the initial value to the final value, taking the indicated number of steps with a delay of 25 milliseconds in each step

view object command, object name, slide top, initial value, final value, steps

Used for animation: Change the position parameter 'top' of the view object from the initial value to the final value, taking the indicated number of steps with a delay of 25 milliseconds in each step

view object command, object name, slide width, initial value, final value, steps

Used for animation: Change the position parameter 'width' of the view object from the initial value to the final value, taking the indicated number of steps with a delay of 25 milliseconds in each step

view object command, object name, top, new value

Sets the position parameter 'top' of the view object to the indicated value

view object command, object name, width, new value

Sets the position parameter 'width' of the view object to the indicated value

workbook command

Sends the whole script line to the workbook for further processing

Implemented object commands

Object commands are sent to objects specified by their name. It is important to use unique names within a configuration - if several objects have the same name the transfer of a command to the wanted object may fail. If an object command is sent by a script line, the following lists are checked in the given sequence:

1.list of materials

2.spectrometer list

3.list of spectra

4.list of layer stacks

5.view list

6.list of special computations

7.workbook

The commands which can be executed for the various types of objects are summarized in the following sections.

Materials

Objects in the list of materials can execute the following commands:

Command

Action

import from file

Lets the user select a file to import optical constants

import from workbook

Imports optical constants from the workbook. Columns must contain spectral position, n and k.

import df from workbook

Imports optical constants from the workbook. Columns must contain spectral position, real and imaginary part of the dielectric function.

In addition, objects of type 'dielectric function model' can execute the following methods:

Command

Action

add kim oscillator, new name, expression for resonance frequency, expression for oscillator strength, expression for damping constant, expression for Gauss-Lorentz switch

Adds a Kim oscillator to the list of susceptibilities named as specified. The values for resonance frequencies, oscillator strength, damping constant and Gauss-Lorentz switch are taken from expressions which may involve optical functions. This allows to generate a new oscillator at a frequency for which the difference between simulated and measured spectra is largest.

Spectrometer objects

Objects in the list of spectrometers may be controllers for spectrometers or other devices like shutters or traverse systems.

The following commands can be used to address spectrometer objects:

Command

Action

acquire

Executes the 'acquire' action. For spectrometers this means to record a sample spectrum.

acquire sample

Does the same as 'acquire'

acquire dark

Tells spectrometer objects to record their dark spectrum. Ignored by other objects.

acquire reference

Tells spectrometer objects to record their background (or reference) spectrum. Ignored by other objects.

acquire 1

Tells spectrometer objects to record their data field 1. Each spectrometer object has 9 internal data fields which are used for various measurements, e.g. to measure reflectance or transmittance spectra with integrating spheres. These measurements require the recording of several spectrometer signals which are stored in the internal data fields.

acquire 2

Records data field 2

acquire 3

Records data field 3

acquire 4

Records data field 4

acquire 5

Records data field 5

acquire 6

Records data field 6

acquire 7

Records data field 7

acquire 8

Records data field 8

acquire 9

Records data field 9

compute (1-9)/(2-9)

Computes the shown combination of spectrum buffer values and stores the value as measured spectrum of the spectrometer object

compute (3-9)/(4-9)

Computes the shown combination of spectrum buffer values and stores the value as measured spectrum of the spectrometer object

compute (5-9)/(6-9)

Computes the shown combination of spectrum buffer values and stores the value as measured spectrum of the spectrometer object

compute (7-9)/(8-9)

Computes the shown combination of spectrum buffer values and stores the value as measured spectrum of the spectrometer object

compute integrating sphere transmittance

Computes the transmittance spectrum for an integrating sphere system using the values stored in the internal data fields

compute integrating sphere reflectance

Computes the reflectance spectrum for an integrating sphere system using the values stored in the internal data fields

compute integrating sphere reflectance subtract straylight

Computes the reflectance spectrum for an integrating sphere system using the values stored in the internal data fields, subtracting buffer spectrum 9 from the signals which are directly reflected by the reference or sample surface. Spectrum buffer 9 should be recorded with no sample present on the sample stage and is considered to be straylight.

edit

Executes the 'Edit' command, i.e. shows the form with all details of the object

set spectrum buffer to zero, index

Sets the specified spectrum buffer to zero

Shutters know the commands

Command

Action

open

Open the shutter so that light gets through

close

Close the shutter so that light is blocked

Traverse systems listen to these messages:

Command

Action

move up

Do a small step to higher positions (step size must be set in the object settings)

move down

Do a small step to lower positions (step size must be set in the object settings)

move to position xxx

Move to the given position where xxx gives the position in internal units of the traverse. This may be steps of the stepper motor or mm.

move to mm xxx

Move to the given position, specified in mm

move to dark position

Move  to the dark position (which must have been defined beforehand)

move to reference position

Move  to the reference position (which must have been defined beforehand)

move to home position

Move  to the home position (which must have been defined beforehand)

OPC send position

Sends the current position to the OPC server. The OPC tag to be addressed must be specified in the command, separated by a comma like "OPC send position, my_opc_position_tag"

OPC send status

Sends the current status (active=true or not active = false) to the OPC server. The OPC tag to be addressed must be specified in the command, separated by a comma like "OPC send status, my_opc_status_tag"

OPC send error code

Sends the current error ID (=0 if no error occurs, error code>0 if an error happened) to the OPC server. The OPC tag to be addressed must be specified in the command, separated by a comma like "OPC send error code, my_opc_error_tag"

OPC send warning

Sends the current warning ID (=0 if no warning occurs, value>0 if a warning is active) to the OPC server. The OPC tag to be addressed must be specified in the command, separated by a comma like "OPC send warning, my_opc_warning_tag"

OPC send activity

Sends the current acitivity ID to the OPC server. The OPC tag to be addressed must be specified in the command, separated by a comma like "OPC send activity, my_opc_activity_tag"

The WOSP color sensor listens to the following commands:

Command

Action

light on

Switch on the onboard light source

light off

Switch off the onboard light source

These commands can be passed to trigger objects:

Command

Action

activate

activates the trigger

wake up

activates the trigger

sleep

de-activates the trigger

Spectrum simulation objects

Objects in the list of spectra can be controlled in scripts using the following messages:

Command

Action

acquire

If a spectrometer object has been assigned as a source for measured data, the last measured spectrum of the spectrometer object is imported

automatic export of measured spectrum to excel file

Saves the measured spectrum to an Excel file in the folder for automatic spectrum export. The filename is composed combining sample name, spectrum name and the position information on the sample (x, y and z). File extension is 'xlsx'.

compute global peak position average, global peak index, number of averaging pixels

Useful for thickness determination by FFT: Refines the position of the global peak with the given index, computing the weighted average position for the range 'center position +- number of pixels'. Before you call this routine, you should have called the routine to compute global peaks for the power spectrum after a FFT thickness determination.

data smoothing

Executes the data smoothing action, using the current values of the relevant parameters

divide by 100

The measured data are divided by 100

do range dialog after import

Activates the range dialog that pops up after an import action

export measured spectrum to workbook

Exports the measured spectrum to the workbook

export simulated spectrum

Lets the user export the simulated spectrum to a file

import from clipboard

Imports the measured spectrum from the clipboard. Another object must have filled the clipboard with appropriate data

import measured spectrum

Lets the user import a measured spectrum

import measured spectrum ignoring reference

Lets the user import a measured spectrum. Multiplying by the reference spectrum is skipped.

import from workbook

Imports a measured spectrum from the workbook

measurement series write measured average to workbook, sheet name,start row, start column, wavelength start, wavelength delta, wavelength number of points

Writes averaged measured values of a measurement series to the workbook. Use this function in combination with view elements of type 'Measurement series'.

The data are written to the specified worksheet, starting at the given row. The column is computed by taking the given value of 'start column' and adding the number of spectra in the series and 1. Values are computed starting at the given minimum wavelength and for the specified number of wavelength points, with a wavelength increment of delta.

measurement series write measured values to workbook,sheet name,start row, start column, wavelength start, wavelength delta, wavelength number of points

Writes measured values of a measurement series to the workbook. Use this function in combination with view elements of type 'Measurement series'.

The data are written to the specified worksheet, starting at the given row. The column is computed by taking the given value of 'start column' and adding the index of the last measurement of the series. Values are stored starting at the given minimum wavelength and for the specified number of wavelength points, with a wavelength increment of delta.

measurement series write simulated average to workbook, sheet name,start row, start column, wavelength start, wavelength delta, wavelength number of points

Writes averaged simulated values of a measurement series to the workbook. Use this function in combination with view elements of type 'Measurement series'.

The data are written to the specified worksheet, starting at the given row. The column is computed by taking the given value of 'start column' and adding the number of spectra in the series and 1. Values are computed starting at the given minimum wavelength and for the specified number of wavelength points, with a wavelength increment of delta.

measurement series write simulated values to workbook, sheet name,start row, start column, wavelength start, wavelength delta, wavelength number of points

Writes simulated values of a measurement series to the workbook. Use this function in combination with view elements of type 'Measurement series'.

The data are written to the specified worksheet, starting at the given row. The column is computed by taking the given value of 'start column' and adding the index of the last measurement of the series. Values are stored starting at the given minimum wavelength and for the specified number of wavelength points, with a wavelength increment of delta.

power spectrum get global peaks, search minimum,search maximum,minimum peak height, minimum peak separation, sort option

Computes position and height of peaks in the power spectrum subobject and stores the values in global data fields. Usually called after a FFT thickness determination routine. The peak search is done between the specified minimum and maximum values. Identified peaks must have a height larger than the given miminum peak height. The search determines the largest peak first, and then looks for further peaks which have a distance from the previously identified peaks larger than the given value of peak separation. Finally, the peaks are sorted according to the sort option: 1 means sorted from high to low, a value of 2 means from low to high.

skip range dialog after import

De-activates the range dialog that pops up after an import action

write measured values to workbook,start row, start column, wavelength start, wavelength delta, number of points

Writes the measured values of the spectrum object to the workbook.

The data are written to the specified worksheet, starting at the given row and column. Values are stored starting at the given minimum wavelength and for the specified number of wavelength points, with a wavelength increment of delta.

write simulated values to workbook,start row, start column, wavelength start, wavelength delta, number of points

Writes the simulated values of the spectrum object to the workbook.

The data are written to the specified worksheet, starting at the given row and column. Values are stored starting at the given minimum wavelength and for the specified number of wavelength points, with a wavelength increment of delta.

write spectral positions to workbook,start row, start column, wavelength start, wavelength delta, number of points

Writes spectral positions (wavelengths in most cases) to the workbook.

The data are written to the specified worksheet, starting at the given row and column. Values start at the given minimum wavelength and are incremented by the given value of delta.

Layer stacks

Up to now there are only a few commands that can be used to load spectra into layer objects of type 'Measured plate' :

Command

Action

import transmittance

executes the dialog to import the transmittance spectrum of this measured plate object

import reflectance top

executes the dialog to import the reflectance spectrum (radiation from the top

import reflectance bottom

(executes the dialog to import the reflectance spectrum (radiation from the bottom

Fit parameter list

The script command 'object command' can be directed to the fit parameter list by setting the name of the object to 'fit parameter list'. The following table summarizes the routines which may be called. An example of a script line is 'object command, fit parameter list, set active material, silicon'.

Script command

Explanation

active material remove weak oscillators, threshold for oscillator strength

Deletes all oscillators of the active material with oscillator strength smaller than the specified threshold

active material select all oscillator damping constants

Selects the damping constants of all oscillators of the active material as fit parameters

active material select all oscillator parameters

Select all oscillator parameters of the active material as fit parameters

active material select all oscillator strengths

Select all oscillator parameters of the active material as fit parameters

active material select all parameters

Selects all oscillator strengths of the active material as fit parameters

active material set default names

Renames all oscillators of the active material, using the resonance frequency as name.

active material sort

Sorts the susceptibilities of the active material with respect to the resonance frequency.

set active material, material name

Select the specified material as active material, i.e the material which is addressed by some of the following commands

delete all

Deletes all fit parameters

View elements

These commands can be used with objects of type 'Multiple spectra view':

Command

Action

autoscale

Executes automatic scaling of the graph

clear list

Clears the list of spectra

display filenames

Uses the original filenames as spectrum names

export to workbook

Writes the spectra to the workbook, using the parameters assigned to the spectra as header of the columns

export to workbook using spectrum names

Writes the spectra to the workbook, using the names of the spectra as header of the columns

import spectra

Lets the user import several spectra into the view object

range dialog

Execute the range dialog of the object

Within a script you can call other scripts by using the following command:

Command

Action

execute

Execute the script

Special computations

At present the following object commands are recognized:

Command

Action

update

Re-computes the addressed object's data

Workbook

The script command 'Workbook command' sends the whole script line to the workbook. This can execute the following actions:

Script command

Explanation

clear

Clears the workbook. After this action there is only one empty worksheet.

rename sheet, sheet index, new name

Renames the sheet with the specified index

append sheet

Appends an empty worksheet

save fit parameter names, worksheet name, row, column

Writes the names of the fit parameters downwards, starting at the given row and column in the specified worksheet

save fit parameter values,worksheet name, row, column

Writes the values of the fit parameters downwards, starting at the given row and column in the specified worksheet

measurement series save fit parameter values,worksheet name, row, column

Writes the values of the fit parameters downwards, starting at the given row in the specified worksheet. The start column  is given as the sum of the specified column value and the series index of the last measurement.

4 cells above the selected row are filled as well with date, product name, sample name and index of the last measurement.

measurement series average fit parameter values

Computes and writes the average of the fit parameters for all measurements to the given row in the specified worksheet. The values are written to the column which is computed as the sum of the specified value, the number of measurements of the series and 1.

4 cells above the selected row are filled as well with the date, the product name, the sample name and the index of the last measurement.

save final number names, worksheet name, row, column, first index, last index

Writes final number names to the given worksheet, starting in the specified row and column. This routine does not write all names but only those with indices between the given first and last index.

save final number values, worksheet name, row, column, first index, last index

Writes final number values to the given worksheet, starting in the specified row and column. This routine does not write all values but only those with indices between the given first and last index.

measurement series save final number values, worksheet name, row, column, first index, last index

Writes final number values to the given worksheet, starting in the specified row. The column is the sum of the specified column and the index of the last performed measurement of the series. This routine does not write all values but only those with indices between the given first and last index.

4 cells above the selected row are filled as well with the date, the product name, the sample name and the index of the last measurement.

measurement series average final number values, worksheet name, row, column, first index, last index

Writes the average of final number values for a measurement series to the given worksheet in the specified row. The column is the one to the right of the last performed measurement of the series. This routine does not write all values but only those with indices between the given first and last index.

4 cells above the selected row are filled as well with date, product name, sample name and index of the last measurement.

save optical function names, worksheet name, row, column

Writes the names of the fit parameters downwards, starting at the given row and column in the specified worksheet

save optical function values, worksheet name, row, column

Writes the values of the fit parameters downwards, starting at the given row and column in the specified worksheet

measurement series save optical function values

Writes the values of the optical functions downwards, starting at the given row in the specified worksheet. The start column  is given as the sum of the specified column value and the series index of the last measurement.

4 cells above the selected row are filled as well with date, product name, sample name and index of the last measurement.

measurement series average optical function values

Computes and writes the average of the fit parameters for all measurements to the given row in the specified worksheet. The values are written to the column which is computed as the sum of the specified value, the number of measurements of the series and 1.

4 cells above the selected row are filled as well with the date, the product name, the sample name and the index of the last measurement.

set column width, worksheet name, column, width

Sets the width (in pixels) of the specified column of the given worksheet

Measurement series

This action object provides the functionality that you need to acquire a series of measurements for a single sample. The user interface looks like this:

You can click the product name to change it, and do the same with the sample name. You can also edit the number of measurements to be performed.

A click on 'Acquire next' executes 2 scripts: If no measurement has been done up to now a script called 'measurement series prepare new series' is executed. Please note that you have to define a script with this name in one of the views and fill it with the wanted actions. An example is discussed below.

After the call of the 'preparation script' another script is called which has the task to do the actual measurements. It must be called 'measurement series measurement script'.The script should perform all steps to do the measurements and the subsequent data analysis and storage. Also here we discuss an example below.

If you are unhappy with the measurement you can repeat it by a click on 'Repeat measurement'. This will execute the measurement script once more without increasing the counting of the already performed measurements.

If the measurement is ok but you want to re-do the data analysis then click on 'Repeat fit'. A script called 'measurement series repeat fit' will be executed which should contain only those actions needed to do the analysis once more and to store the (hopefully) improved new results.

Script examples

Script to prepare the series 'measurement series prepare new series'

workbook command, clear

workbook command, rename sheet, 0, Fitted Data

workbook command, append sheet, Measured Data

This code clears the workbook and renames the only existing worksheet to 'fitted data'. Then it generates a second worksheet named 'measured data'.

Script to acquire and analyze spectra 'measurement series measurement script'

This example is taken from a method which controls a reflectance measurement system. It uses a label called 'status' to display information on the progress of the actions. The acquire command executes data acquisition, and then 'start fit' starts the fit. The settings for the fit make sure that after 5 seconds the fit is finished. Then, finally, various results from the list 'final numbers' and both the measured and simulated spectra are written to the workbook pages.

set label, status, ... busy ...

update data

update plot

acquire

start fit

delay, 5000

set label, status, ... writing data ...

update data

update plot

workbook command, save final number names, fitted data, 5,1,4,12

workbook command, measurement series save final number values, fitted data, 5,1,4,12

workbook command, measurement series average final number values, fitted data, 5,1,4,12

object command, R coated, write spectral positions to workbook,fitted data,25,1,176,2,463

object command, R coated, measurement series write simulated values to workbook,fitted data,25,1,176,2,463

object command, R coated, measurement series write simulated average to workbook,fitted data,25,1,176,2,463

workbook command, save final number names, measured data, 5,1,1,3

workbook command, measurement series save final number values, measured data, 5,1,1,3

workbook command, measurement series average final number values, measured data, 5,1,1,3

object command, R coated, write spectral positions to workbook,measured data,20,1,176,2,463

object command, R coated, measurement series write measured values to workbook,measured data,20,1,176,2,463

object command, R coated, measurement series write measured average to workbook,measured data,20,1,176,2,463

delay, 2000

set label, status, ... idle ...

update data

update plot

Please not that the content of the workbook can be saved in Excel format to permanently store the results.The script could also contain a command to store the results in a SQL database table.

Script to acquire and analyze spectra 'measurement repeat fit'

This is just a copy of the 'measurement script' above, without the acquire command:

set label, status, ... busy ...

update data

update plot

start fit

delay, 5000

set label, status, ... writing data ...

update data

update plot

workbook command, save final number names, fitted data, 5,1,4,12

workbook command, measurement series save final number values, fitted data, 5,1,4,12

workbook command, measurement series average final number values, fitted data, 5,1,4,12

object command, R coated, write spectral positions to workbook,fitted data,25,1,176,2,463

object command, R coated, measurement series write simulated values to workbook,fitted data,25,1,176,2,463

object command, R coated, measurement series write simulated average to workbook,fitted data,25,1,176,2,463

workbook command, save final number names, measured data, 5,1,1,3

workbook command, measurement series save final number values, measured data, 5,1,1,3

workbook command, measurement series average final number values, measured data, 5,1,1,3

object command, R coated, write spectral positions to workbook,measured data,20,1,176,2,463

object command, R coated, measurement series write measured values to workbook,measured data,20,1,176,2,463

object command, R coated, measurement series write measured average to workbook,measured data,20,1,176,2,463

delay, 2000

set label, status, ... idle ...

update data

update plot

Printing views, clipboard copy

You can print the current view displayed in the SCOUT main window with the command File|Print. With File|Printer setup you can select and configure the printer that is going to be used for the next print action.

You can copy the currently selected view to the Windows clipboard using the command Actions|Copy to clipboard in the main window of SCOUT. The clipboard will contain the graph in the metafile format which can be pasted by many Windows programs, in particular text processing software.

Be prepared for the case that the graph will look quite small when you paste it e.g. into a Word document. Just resize it to the dimensions you want it to have.

Automatic view generation

The easiest way to create views is to activate one of the following automatic procedures that compose standard views. In most cases you can just work with them without further modifications. On the other hand, the automatically generated views can be a convenient basis for user-defined views with additional elements like explaining text, parameters or pictures.

The commands for automatic view generation are found in the Actions submenu of the list of views. You can access this list by the command Objects|Views in the main window.

View of spectra

The command Create view of spectra does the following: First a bitmap view is created that contains a background image. SCOUT tries to find the file view_spectra_background.bmp and loads the image if the file exists. If we delivered a bitmap with this name and you don't like it, feel free to overwrite the picture with the one of your choice.

For each spectrum in the list of spectra SCOUT creates a Field view object and fills it with the right connection to the spectrum. The view objects are distributed in rows and columns. The numbers of rows and columns are computed from the number of spectra to be displayed.

Actual SCOUT versions create spectra views automatically when a configuration without any view is loaded.

View of optical constants

Very much like the view of spectra, you can create a view of the optical constants with the command Create view of optical constants. Again, first a bitmap viewis created that contains a background image. SCOUT tries to find the file view_opticalconstants_background.bmp and loads the image if the file exists. If we delivered a bitmap with this name and you don't like it, feel free to overwrite the picture with the one of your choice.

For each item in the list of dielectric functions (with the exception of vacuum which is not displayed) SCOUT creates a Field view object and fills it with the appropriate connection. The view objects are distributed in rows and columns. The numbers of rows and columns are computed from the number of objects to be displayed.

View example: Simple spectrum fit

The main window of SCOUT can be conveniently used to display a spectrum fit which is achieved by a single field view object. Note the difference of the graphics display if the data are updated: The main window update is much more smooth than the individual spectrum window which is due to a different graphics technique used in view objects.

View example: Fit and parameters

Here the main window of SCOUT shows the fit, i.e. the comparison of simulated and measured spectrum, through a field view object. The value of a model parameter (a layer thickness) is displayed using a parameter view object. The background is drawn using a bitmap view object.

With methods like the one sketched here you can solve routine problems without opening additional SCOUT windows: With the Method button you select the appropriate SCOUT configuration, the Import command lets you pick the experimental spectra (here you need just one), the Start button starts the parameter fit, and the Export button is finally used to save the results of the fit parameters in the SCOUT workbook.

View example: Display many spectra

Views are very important if your method requires the simultaneous analysis of several spectra. The following example shows how a view can display the simulation of 4 spectra and the values of some of the model parameters in one window:

Presentations

Views of several SCOUT configurations can be combined to presentations. A presentation is simply a sequence of SCOUT configurations. SCOUT will load one after the other and display the views in its main window.

Define the sequence of configurations

To prepare a presentation you have to copy all configurations to a folder. Then create a text file named the_show.txt which must contain - line by line - the names of the configurations to be loaded in the presentation. You can use the workbook to create this file. Type in the names of the configurations starting in cell A1 and then downwards like in the following example:

Use the SaveAs command and select the file format 'Tabbed text (*.txt)' to save the list to the text file the_show.txt.

Showing the presentation

To start the presentation use the menu command Actions|Show presentation. SCOUT will display a dialog which lets you select the folder that contains the presentation:

SCOUT will read the file the_show.txt in the folder and load the first configuration. In the speed button bar three additional items are displayed that let you navigate through the presentation:

The '>' command loads the next configuration, the '<' the previous one. You can switch to an arbitrary configuration using the dropdown box in the center. When SCOUT loads a presentation the dropdown box is filled with the content of the file the_show.txt.

You can use the view buttons 'Next configuration button' and 'Previous configuration button' as navigation elements in views.

Tips and tricks

In order to achieve a nice presentation with smooth transitions from one page to the next, it is recommended that all configurations of a presentation have the same size. Full screen size is certainly the best choice.

If you just want to display the content of the view, you can hide the menu and the status bar at the bottom of the SCOUT window setting appropriate options (uncheck the menu commands File|Options|Menu visible at start and File|Options|Status bar).

Configuring SCOUT for routine work

After you have established an optical model for a certain class of samples and you are going to use SCOUT to analyze large amounts of samples in a routine manner, you may want to make the application of SCOUT for unexperienced users as easy as possible. To do so, you should work with the main window exclusively, showing what should be seen designing appropriate views.

In addition, you should hide the menu in the main window and show only a few commands in the toolbar below the usual menu as shown in the following example:

The appearance of the toolbar commands can be controlled in the main menu using File|Options|Toolbar. Check those items that you want to appear in the toolbar.

At present you can activate and de-activate the following items:

Method button

This is the same as the File|Open command. Execute it to load an analysis method (configuration) that contains the complete model, the required views and the fit strategy to obtain the wanted parameters from the fit.

Acquire button

This command activates the recording of new spectra if spectrometers are defined in the list of spectrometers. Refer to the section about Data acquisition for further details.

Import button

This command is used to import new experimental spectra for the analysis from datafiles. First you are asked for the sample name, i.e. a short text identifying the current sample. This text is used in the report of results and may be displayed in a view by a sample view object. Then the import dialog for selecting the input spectrum is executed for each spectrum in the spectrum list. SCOUT follows the order of the spectrum list, of course.

Start/Stop button

This starts the fit. After the start of the fit the text of the button is changed to 'Stop' and the same button is used to stop the fit.

Export button

This command writes the values of the current fit parameters to the table named 'Fit results' in the SCOUT workbook. Before writing to the table SCOUT checks if the structure of the table matches the current configuration, in particular, the names of the fit parameters in the table and those in the current SCOUT configuration must agree. If not, SCOUT asks if it should erase the workbook content and start with a new page of results.

Workbook button

This command opens the workbook. After the analysis of some spectra the page 'Fit results' may look like this:

Menu button

This command is used to switch on and off the main menu of SCOUT. This button is always visible, it cannot be hidden. However, you can protect the action of this button by setting a password if you want to avoid users switching on the menu.

Menu on/off

After loading the configuration the main menu can be switched on and off, according to the setting of the menu item called File|Options|Menu visible at start. Check or uncheck this menu item to tell SCOUT what it should do.

Password protection

If the main menu is switched off you can switch it on again pushing the Menu toolbar button (see above). Using File|Options|Password in the main window you can define a password that is required to display the menu. This may be used to avoid unauthorized configuration changes by unexperienced users.

Automatic spectrum display after loading

Starting with object generation 1.9 (January 2001) SCOUT automatically opens all spectra in the spectrum list after loading a new configuration if the menu item File|Options|Show spectra after loading is checked.

Automatic slider display after loading

Starting with object generation 1.9 (January 2001) SCOUT automatically opens all fit parameter sliders after loading a new configuration if the menu item File|Options|Show sliders after loading is checked.

Overview

SCOUT allows the computation of various space and time distributions, e.g. of the electric field amplitudes or the local absorption in layer stacks. Objects performing such kind of computations are collected in the list called 'Distributions'. You can open this list by a right-click in the treeview of SCOUT.

The list of distributions also provides objects for computing optical monitoring charts. This feature is not contained in the standard SCOUT program but must be purchased separately.

At present the following quantities are implemented:

Spatial distribution of the electric field amplitude

Spatial distribution of the absorption of light

Optical deposition control of layer growth: R vs. total thickness

Optical deposition control of layer growth: R vs. time

COME: Charts for optical monitoring of etching processes

Electric field

Objects of type 'Electric field distribution' compute the spatial variation of the electric field amplitude in a layer stack. The main window of such an object looks like this:

The graph means the following: The horizontal (x-) axis displays the position in the layer stack. The last interface to the bottom halfspace is at zero. Starting at zero and going to the right, you move through all layers until you reach the top halfspace. Each interface is indicated by a vertical black line. The light is incident from the top, i.e. the incoming wave approaches from the right with an amplitude of 1.

The example picture given above shows the situation for a 1 micron film (SiO2) and 400 nm wavelength: Above the layer (in the range 1 ... 4 microns) you see the superposition of the incoming and the reflected wave. In the layer (0 ... 1 micron) there is a superposition of all partial waves going from the right to the left with those moving from the left to the right. Below z = 0 there is only the transmitted radiation with a total amplitude that is constant in space.

________________________________________________

The following parameters determine the result of the electric field computation:

Layer stack:

The white text field to the right of the label 'Layer stack' shows the name of the layer stack for which the computation is done. You can change the selection of the layer stack by a drag&drop operation: Make sure the list of layer stacks and its subranches in the treeview are open. Open the electric field object with a right-mouse click (if  it is not visible at the moment) and drag the wanted layer stack to the white text field where it is to be dropped.

Angle:

This is the angle of incidence of the incoming beam.

Pol.:

This is the polarization of the incident beam which can be s- or p-polarized.

z-range:

Here you specify the spatial range for the electric field computation by entering the minium and maximum z-values, and the number of points you want to use to sample the interval.

In the case of a 2D plot (like the one shown above) the z-range displayed may differ from the range in which values are computed. In all 3D plots the full computed range is shown always.

Range:

Using the menu command Range you can specify the spectral range for the computation. The usual dialog for spectral ranges is shown:

If the number of spectral points is set to 1 the electric field distribution is computed only for that spectral point. You can also use several spectral points to compute the field distribution for a whole sequence of spectral points.

The following example shows the result for a 1 micron glass plate in the infrared (800 ... 1800 1/cm) using 11 spectral points:

The individual lines are listed in a separate window which you can open using the Show list command:

For each graph you can set the color and the line type that are used for the plot. You can type in new values or cycle through all values by right mouse clicks.

If the distribution is computed for several spectral points you can display the results also in 3D pressing the appropriate buttons. You can use a line plot with lines along the x-axis

or a grid plot:

Automatic re-computation

If the menu item File|Options|Automatic update is checked SCOUT re-computes the electric field distributions if the model is changed. This can be used to elegantly inspect the influence of a model parameter like a layer thickness or an optical constant parameter on the field distribution: Just move a fit parameter slider and instantly see what changes in the fields occur.

On the other hand, electric field computations and in particular 3D plots can consume quite a bit of time, and automatic re-computation should definitely be switched off during parameter fitting.

Export of numerical values

The computed distributions can be exported to convenient tables using the File|Report menu command. The numbers are written to the workbook which you can open by the command Workbook|Open workbook. You'll find the table in the worksheet called 'Last distribution'.

Important restrictions:

The present version of this object type requires that the transmission is slightly above zero. Otherwise you will get an error message and the computation is stopped. We are working on this problem.

Only coherent and isotropic layers are allowed at present.

No concentration gradient layers are allowed at present.

Absorption

This object computes the local absorption in the layer stack. It works exactly the same way as the objects that compute electric field distributions.

The following picture shows the result for the infrared absorption of the 1 micron glass plate that was already used and shown in the electric field distribution.

The same data in 2D:

Important restrictions:

The present version of this object type does not work properly for p-polarization. We are working on this problem.

R vs. total thickness during deposition

Optical monitoring charts displaying the reflectance of a layer stack vs. total layer stack thickness are computed by objects of type 'Optical growth monitor' that are created in the list of distributions. These objects are handled almost exactly like Electric field distributions.

The difference is, of course, that the reflectance instead of the electric field is computed. In addition, the meaning of the x-axis differs. Here x represents the total thickness of the layer stack. If x is negative, SCOUT computes the reflectance of the blank substrate. Starting at x=0 SCOUT computes how the reflectance of the layer stack changes while the layers are growing. Like in the deposition, SCOUT starts a new layer if the present one has reached its final thickness.

As an example, an anti-reflection coating with 4 layers (note that this is just a demo to demonstrate the optical monitoring and not a professional filter design) and the following structure is used:

 Type        Material        Thickness

 1        Halfspace        Vacuum        

 2        Thin film        SiO2                87.6 nm

 3        Thin film        ZrO2               121.2 nm

 4        Thin film        SiO2                35.1 nm

 5        Thin film        TiO2                 4.7 nm

 6        Halfspace        Glass Type BK7        

The optical constants are all taken from the SCOUT database.

The reflectance spectra of the blank substrate (red curve) and the final coating are shown in the next graph:

The optical growth monitor shows the development from the blank substrate to the final reflectance. You can choose a 2D picture

or 3D representations:

A more advanced example is a dichroic mirror (design published in [Park 1997]) of this structure:

 1        Halfspace        Vacuum                        

 2        Thin film        ZrO2                29.2 nm                

 3        _Begin superlattice                Repeat            27        times

 4        Thin film        SiO2                88.9 nm                

 5        Thin film        ZrO2                58.5 nm                

 6        _End superlattice                                

 7        Thin film        SiO2                88.9 nm                

 8        Thin film        ZrO2                29.2 nm                

 9        Halfspace        Glass Type BK7                        

The final transmittance spectrum at 45 deg angle of incidence and s-polarisation is this:

Optical monitoring data for reflectance at normal incidence of light are shown in the next graph:

Based on data like this, the monitoring strategy is to be developed in order to find the right moment to stop the growth of a layer and to start with the next material. In addition to knowledge of the reflectance vs. total thickness, one may be interested also in the time dependent reflectance signal which is computed by a similar SCOUT object discussed below.

R vs. time during deposition

Objects of type 'Opt. growth mon. (time)' (managed in the SCOUT list of distributions) compute the reflectance of a layer stack vs. time while the complete stack builds up the substrate. These objects are very similar to the previously discussed objects of type 'Optical growth monitor'.

Deposition rates

To compute charts displaying the reflectivity of a stack vs. time during the layer deposition the depositon rate for each material in the stack must be known. SCOUT stores deposition rates of materials in a text file that must be in the same directory as the  program file (scout_98.exe). At program start SCOUT reads the file deposition_rates.txt and enters the data decoded there into an internal table. If you try to compute monitoring data for a material with unknown deposition rate, SCOUT will ask you to type in that missing number in a dialog like this:

As you see in the dialog, depostion rates must be specified in nm/s. SCOUT will enter the new value into its table. Materials are identified by their name in the list of dielectric functions (which is also the caption of the dielectric function window). When you shut down the SCOUT program the current table values of deposition rates are stored in the file deposition_rates.txt for future use. Usually you do not have to inspect this file at any time. However, if you want to look or modify the current values of the depositon rates you can open the SCOUT table with the menu command 'Rates'. It looks like this:

Here you can enter new values in the column labeled 'Depositon rate'. It is not recommended to enter new names in the 'Material' column because SCOUT identifies a material by its name which works reliably only in the case of perfectly correct spelling. So wait until SCOUT asks you to enter a deposition rate for a new material.

With the (fictitious) values given in the table above the reflectance vs. time curve for the deposition of the dichroic mirror example (see above) is shown below:

Note that SCOUT neglects any time for switching between the growth of the individual materials. Hence the SCOUT time for growing a stack is the minimum that you can have.

R vs. time during etching

Objects of type 'COME etching monitor' (managed in the SCOUT list of distributions) compute the reflectance of a layer stack vs. time while the complete stack is reduced by an etching process. COME stands for Charts for Optical Monitoring of Etching. These objects are very similar to the previously discussed objects of type 'Opt. growth mon. (time)'. In fact, COME objects just do the reverse, starting the computation for the complete stack and finishing at the blank substrate.

Etching rates

To compute charts displaying the reflectivity of a stack vs. time during etching the etching rate for each material in the stack must be known. Like in the case of deposition rates SCOUT stores etching rates of materials in a text file that must be in the same directory as the  program file (scout_98.exe). The file holding etching rate information is called etch_rates.txt. As before, you do not have to look at this file but you can wait until SCOUT asks you to provide etching rate information for a certain material.

Example

The COME result for the anti-reflection coating discussed above is this:

The following etch rates (based on pure imagination) have been used:

Material        Etch rate [nm/s]

SiO2        0.5

ZrO2        1.2

TiO2        0.1

The SCOUT workbook

SCOUT is equipped with an internal spreadsheet called the workbook. The workbook may contain several worksheets (or workbook pages) each of which is a grid of cells that may contain text, numbers, or formulas that compute the cell content (using the content of other cells, in most cases).

The workbook serves as temporary storage for many SCOUT operations, and it is a very convenient tool to exchange data with other applications, like e.g. Microsoft Excel. The workbook is saved as part of a SCOUT configuration, i.e. its content is stored if you save your SCOUT configuration in the main window with File|SaveAs.

If you want to keep the content of only the workbook for later use you can store it explicitly using the file commands of the workbook itself.

Handling the workbook

The normal appearance of the workbook is the following:

You can modify cell colors and formats, add, delete and print worksheets by right mouse button double clicks somewhere in the workbook. The following window opens:

Using the commands Format|Cells and Formats|Pattern the following modifications where achieved:

Generating graphs with the workbook

In many cases it is convenient to visualize workbook data in graphs in order to inspect relations intuitively. This section shows how you can do that with the built-in Collect object.

The Collect object is able to display spectra (or other data which are series of x-y-data pairs) in 2D and 3D graphs. In the following I refer to the individual items as 'spectrum'. The spectra to be displayed are collected in a list where parameters like pen color or line style can be set for each spectrum. Working with Collect as a stand-alone program, you can transfer spectra from SCOUT or CODE to Collect by drag&drop. Of course, you can also import spectra from data files.

Copying data from the workbook to Collect

In order to display workbook data with the Collect object they must be copied into its list of spectra. This copy process can be initiated using several workbook commands, following always the same scheme:

•Select the workbook sheet from which you want to copy

•Select the cell where the copy process should start

•If you want to generate a new graph clear the Collect spectra list with the command Graph|Clear graphics window. If you do not clear the data the following copy action will add the new data to the ones that are already present in Collect.

•Activate the appropriate copy command in the Graph submenu

•Switch to the Collect object to set the graphics parameters that control the graph

To explain the different copy commands the data created in the parameter variation example are used:

These copy commands can be used:

Graph|x,y downwards

This command is used to copy just a single spectrum starting at the selected cell. Placing the cursor in the cell A2 SCOUT will start reading the first x-value in that cell (400), then go to the cell B2 to the right of it and read the first y-value (-0.996312). Then it will inspect the cell A3. If it isn't empty the next pair of x- and y-values is taken from the cells A3 and B3. Afterwards cell A4 is tested for being empty, and so on. The reading process finishes when the first empty cell in column A occurs.

The collection of the found x-y-pairs is then treated as if it had been imported from a data file: SCOUT generates an equidistant set of x-values covering the same range of x as the input data. The corresponding set of y-values is obtained by linear interpolation from the original x-y-pairs. If, like in this example, the x-values are equidistant already, no changes to the spectrum occur. Finally the equidistant set of data is sent to the Collect spectrum list.

With appropriate graphics settings one would get from the sample data a graph like this:

Graph|x,y1, y2, ... downwards

After this command SCOUT starts at the cursor position and reads x-values downwards until an empty cell is found. Starting at the initial cursor position, it reads y-values moving to the right until an empty cell is found. If there are n rows of x-values and m columns of y-values the program expects the array of n*m cells to be filled with numerical data. It will pass to the Collect window m spectra being all defined on a grid of n spectral points.

Starting the copy process at cell A2 one could arrive here:

Obviously, the names of the individual spectra are not set automatically. You would have to do this manually which can be tedious if you have many spectra. If each spectrum is characterized by a number you can use the next command to achieve a reasonable automatic assignment.

Graph|_, p1, p2, ..., x,y1, y2, ... downwards

After this command SCOUT starts at the cursor position and inspects the cells to the right until an empty cell is found. If there are m non-empty cells the entries of these cells are expected to be numerical values which are used as parameter value for the spectra. Starting in the cell directly below the selected cell SCOUT proceeds as described above, i.e. it reads n x-values downwards and m spectra to the right. The spectra and the corresponding parameter values are passed to the Collect window where the display can now be more complete since each spectrum has its own 'name' given by the parameter value.

Starting at cell A1 in the example data shown above, one can achieve the following chart:

If, like in this case, each spectrum has a different parameter, and the list of spectra in the Collector window is sorted (which is done automatically for you if you apply the command Graph|_, p1, p2, ..., x,y1, y2, ... downwards) you can click on the buttons promising 3D plots. You get (after some plot parameter adjustments):

or

Graph|x,y from left to right

This command works like Graph|x,y downwards. The difference is that now the x-values are read from left to right, starting at the selected workbook cell. Below each x-value SCOUT expects a valid y-value.

Selecting cell B1 in the sample data, and applying this command one gets a plot of cos(delta) at 400 nm vs. SiOx layer thickness:

Graph|x,y1, y2, ... from left to right

This command is used to read many spectra from left to right, like the 'downwards version' discussed above. Note, however, that you should avoid to import too many data sets. A number larger than 40 is not supported by SCOUT.

Graph|_, p1, p2, ..., x,y1, y2, ... from left to right

This is the 'left to right' version of the similar downwards command described above. Once more, make sure that there are not too many rows to process. SCOUT will not work properly for more than 40 rows.

For sample data restricted to 21 spectral points in the range 400 ... 800 nm as shown here

one gets the following picture (starting with cell A1 selected initially):

Plots with well-defined and different parameters for each data set can also be done in 3D:

Displaying the data in the Collect window

Once the data are copied by one of the commands above the Collect window is opened:

The indiviual spectra are collected in a list which is opened by the Show List command:

Each spectrum has a parameter, a color, a line type, a name and a spectral unit.

Display graphs of workbook data in a view

Workbook data can be displayed in the main window of SCOUT using objects of type Workbook display (columns) or Workbook display (rows) in a view. The description of these objects contain detailed examples demonstrating the required steps.

Workbook file formats

You can save the workbook to a file using the File|SaveAs command. You can chose between different file formats:

Formula One (*.vts)

This is a binary format which should be used if the saved workbook content will only be read by SCOUT workbooks again. Hence this format is not very useful if you want to exchange data with other programs by file tranfer. However, since this is the native format of the workbook component, it is the most complete storage method with no loss of information.

Excel 5.0 format (*.xls)

This file type can be used to store the workbook in Excel binary format. Obviously, this can be used to transfer data to Excel or other programs that can import Excel data.

Text file

Alternatively, you can save the workbook content using this text file format which can also be an attractive way to make data accessible to other programs.

Parameter variation

This very powerful action shows the influence of one of the model parameters on optical spectra. It works like this: In the main window of SCOUT, the command Actions|Parameter variation is executed. In a dialog you can pick one of the model parameters and set the range of the variation by specifying the minimun and the maximum value and the number of parameter values that you want to consider. For each particular value of the parameter range, SCOUT computes all spectra and stores them appropriately in worksheets in the workbook.

In most cases you want to inspect the results graphically. This can be done by copying the workbook data to the clipboard and from there to Excel or any other software of your choice, or you can do the visualization using the Collect object that is built in SCOUT.

Here is a step by step example. The goal is to investigate the dependence of a reflectance and an ellipsometry spectrum on a layer thickness. In order to concentrate on the demonstration of the parameter variation technique, a very simple example of a silicon oxide layer (layer type: thin film. This type of layer is automatically treated with coherent superposition of partial waves and the unit for the thickness is nm) on a silicon substrate (halfspace) is used. A reflectance spectrum (normal incidence of light) and ellipsometry data (70 degrees angle of incidence) are computed in the spectral range 400 ... 800 nm (100 spectral data points).

The individual steps are these:

Activate - in the main window of SCOUT - the command Actions|Parameter variation and observe that you enter this dialog:

Select the layer thickness and a parameter range from 0 to 200 nm using 21 points (this means you will have 10 nm steps in the variation) according to the following settings:

If a parameter has a unit (like thicknesses) you have to specify the parameter range using exactly the same units. In the present example the unit of the layer thickness is nm.

After pressing OK SCOUT computes all the required spectra and automatically opens the workbook:

SCOUT has created a new worksheet for the reflectance data, and two new worksheets for the cos(delta) and tan(psi) values. Each worksheet has in its first row the name of the varied parameter and the parameter values. The first column downwards contains the spectral position (here the wavelength in nm). Below each parameter value there is a column with the corresponding spectrum.

Clicking in the gray field to the left of 'A' and above '1' selects the whole worksheet. The Copy command transfers the selected cells into the clipboard. From the clipboard you can get the data with Paste in Excel (or what ever program you prefer for data juggling).

If you like you can also generate 2D or 3D graphs with SCOUT which provides a built-in Collect object for doing this. The operation of this part of SCOUT is described in a separate section.

After you have done a parameter variation, you can apply the SCOUT command Actions|Repeat parameter variation to do it once more. SCOUT will empty all relevant worksheets and fill them with new data. You do not have to select the variation parameter and the range any more. This way to work is very useful in optimizing a model where you manually make frequent changes and you have to inspect the parameter variation after each modification of the model.

Parameter fluctuation

Similar to Parameter variations this action visualizes the consequence of fluctuations of model parameters to optical spectra. It is activated by the main window command Actions|Parameter fluctuation.

Preparation

Before you use this SCOUT action you should have a working model that computes optical spectra. The list of fit parameters should contain only those parameters for which you want to study the influence on the spectra. For each parameter you have specified the range of fluctuation by setting appropriate values for its minimum and maximum.

An example could be the following: For a layer stack you have optimized the film thicknesses. Now you want to know what spectral variations you can expect when the thicknesses are realized in a production with some tolerances, i.e. random fluctuations around their design values. In that case, all relevant thicknesses should be selected as fit parameters, and the range of fluctuation must be entered in the list fo fit parameters.

In order to demonstrate the application of the 'Parameter fluctuation' action, start SCOUT and load the final configuration of SCOUT tutorial 1, example 3. This has been saved in the file tu1_ex3_step3.s98 (you need to select the SCOUT 98 file filter in the file dialog). After loading it with SCOUT 2 you should see the following main window:

The configuration computes a reflectance spectrum for a single Ag layer on glass. The Ag layer thickness is the only fit parameter in the list of fit parameters. Set its range to 0.015 ... 0.025 (thickness in microns):

Activation

Execute the command Actions|Parameter fluctuation in the main window of SCOUT. You are asked for the number of repetitions, i.e. the number of realizations of a random parameter value and subsequent spectrum computations:

At present, values between 1 and 250 are allowed here. Leave the suggested value of 20 and press OK. That's all you have to do!

What happens

For each spectrum in the list of spectra (in the current example there is only one, the reflectance spectrum) a new worksheet in the workbook is created. The worksheet gets the name of the spectrum with the extension 'fluctuation', in the example the name is 'Reflectance fluctuation'.

SCOUT will then draw 20 times a random number between 0.015 and 0.025, assign the value to the Ag layer thickness and re-compute the reflectance spectrum. The reflectance data are stored in workbook columns, and SCOUT will compute the minimum and maximum (and their difference) of the reflectance for each spectral point. The worksheet looks like this:

In addition, SCOUT creates a new view called 'Reflectance fluctuation' and displays the minimum, maximum and difference of the fluctuating reflectance data. In the case of several spectra in the list of spectra, SCOUT will create several views with corresponding names. Click the View button in the main window's speedbar to cycle through all views.

The data display in the view is done by an object of type 'Workbook display (columns)'.  In the example, the view is the following:

After the creation of the view object, you can modify (Click on the object while the Ctrl-key is pressed) its appearance (change the graphics parameters, line types, colors and names of the individual curves, legend settings) as described above. However, if you do a parameter fluctuation computation again the graphics parameters are copied from the original spectrum object and some of your changes may be lost.

Doing it again

If you have changed the model (e.g. the range of fluctuations of some of the parameters) you can re-do the fluctuation computation by Actions|Repeat parameter fluctuation. After this command, you are not asked for the number of repetitions but the value set previously is used again.

Exporting the fluctuation data

Since the spectral data of the computation are stored in the workbook you can use the workbook mechanisms for data export to save the data to files or copy&paste to other programs like Excel.

File based database

Geben Sie hier den Text ein.

The SCOUT database

With SCOUT 2.1 a new structure of the database has been introduced. SCOUT does not require the Borland Database Engine any more. Instead, all database records are realized as files in a well-defined folder structure. Initially, we have made these changes in order to prepare SCOUT for the Linux operating system (for which the Borland Database Engine is not available). While the step to Linux is still far away, the new database concept turned out to be quite useful already.

The structure of the database is this: The main database folder (default: 'Database' in the SCOUT program directory) contains several subfolders. The subfolders contain files with the data of the various database objects. At present the following subfolders are implemented:

Materials        This folder contains material definitions

Coatings        Here you find layer stack definitions        

Substrates        Layer stack definitions of typical substrates

Creating a new database

You can create a new database anywhere in your file system. The full setup of SCOUT 2.1 will create a small database named 'My_database' in the SCOUT program directory. Just copy this folder (including its subfolders) to the desired new location and rename it appropriately.

Connecting SCOUT to a new database

In order to connect to a database different from the default database you have to use the File|Options|Database command in the main window. Specify the new database folder in the subsequent dialog and you are connected to the new database.

The database path is stored in a SCOUT configuration if you use the version 2.1 file format.

Handling database objects

SCOUT itself does not provide mechanisms to delete or move database entries. Since all database objects are simple files you can delete and move them with Windows Explorer. Note, however, that SCOUT reads the content of the database at program start or during re-connection only. Hence after a database modification you have to re-connect SCOUT to the database in order to update the lists.

If you want to delete, copy or move materials you have to keep in mind that the properties of each material are stored in two files. These files have the same filename, but different extensions. In the case of copying stored effective dielectric functions, you as the database manager are responsible for copying the relevant host and particle materials as well to the new location.

Converting your old optical constant database to the new format

You can convert your old optical constant database to the new format using the DF_DB tool which is delivered with the SCOUT 2.1 setup files. This program is described in the section about tools below.

Materials

Materials are stored in the subfolder 'Materials' (no surprise!). The properties of each material are stored in two files. The name of the material is used as filename. The two files have the extensions *.oc and *.b . Since a material's name is used to create filenames you cannot use symbols like '\', '/', '<', '>' or '%' in the name.

If a material is a composite (described as effective medium) the database contains links to the related host and particle materials which must be in the database as well. If you drag such an item from the database to the material list in SCOUT the entries for the host and the particle material are automatically copied as well.

The materials available in the database are accessible in the material list.

Layer stacks

Layer stacks are stored in the 'Coatings' and 'Substrate' subfolders. Use the save mechanism of a layer stack to create new entries in these database folders. You must use the recommended extension *.ls for a valid database object. At program start (or after a database connection) SCOUT will read all entries with the *.ls extension from the database folders. The found names are used to to fill the dropdown boxes for coatings and substrates in layer stack definition objects.

In order to illustrate layer stacks graphically you can generate bitmap graphs and store them in the database folders as well. For each entry with *.ls extension SCOUT will look for a bitmap file with the same name and the extension *.bmp. If such a file is found it will be displayed for the selected coating or substrate in layer stack definition objects.

Working with SQL databases

With object generation 4.60 we introduced connectivity to external SQL databases. You can connect to MySQL databases or Microsoft SQL server. For both systems basic versions are available which can be installed free of costs - at least this is the situation in 2018. This documentation does not cover the installation of the database server itself. It covers the SCOUT and CODE side of the connection only.

The treeview contains a branch called 'SQL database connection' which looks like this:

The window gives access to several tabs which provide various database functions. Some of these functions are available as script commands as well - in that case you do not need to access the SQL database connection window.

Making the connection

Select the tab 'Settings' to establish a connection to an external database:

There are 3 connections to MySQL databases and a single connection to a Microsoft SQL server. Two of the MySQL connections can be user-defined. You have to specify the server computer, the user, the password and the name of the database. The third one is pre-configured and gives access to a demo database hosted on our webserver. This database is write-protected which means you cannot make changes to it. Depending on our location and speed of internet connection the access to the demo database can be rather slow - please be patient.

The connection to a Microsoft SQL server is defined by a so-called 'connection string' which contains all access data like name of server and user as well as password. Finding the correct connection string that connects you to the Microsoft database can be tedious - we recommend to consult the administrator of the database server to find the right string.

Once you have entered correct access information for a server you can click 'Connect'. SCOUT (or CODE) will build up the connection. If the specified user has the right to make changes to the database, in particular to create new tables, a set of tables for SCOUT database work is created automatically. If these tables exist already in the database the existing tables are used, of course.

Tables

The following tables are created in the database when you connect.

code

This table is used to store complete SCOUT or CODE configurations. Instead of writing a configuration to a file with File/Save or File/SaveAs you can write to the database table. Storing configurations to an SQL database has the advantage that you can not only provide a name for the configuration but in addition you can enter a descriptive text, tags and a list of materials. If you provide useful information about the content of each configuration you store in the database, you can later on execute a convenient search and quickly find all configurations relevant for your current problem.

The table contains the following columns:

The content of the table 'code' is shown on the tab 'Configuration':

If you select a row of the table and click the button 'Read configuration from selected database record' the selected configuration will be loaded. Be aware that your current configuration is lost if you did not save changes. Once the new configuration is loaded its first main view is shown:

If you discover now that your previous configuration was valuable but you forgot to save it you can rescue its content by clicking the button Last snapshot in the button panel below the menu.

Easy search: In order to search configurations you can type in a keyword next to the Search for button and then click the Search for button. Here is an example:

code_blob

The table 'code' discussed above does not store the configurations by itself. The binary data are stored in the table 'code_blob'. Users of the software don't have to deal with this separation of storage.

Columns:

code_png

This table holds screenshots of the configurations that are stored in the table 'code'. At the moment this table is not used - will be activated in the future ...

Columns:

materials

This table stores materials in a way similar to the 'optical constant database'. You can drag&drop materials from the list of materials here. In the opposite direction, you can insert a material from the table into the list of materials.

The column structure is the following:

The user interface for this table looks like this:

As discussed for the configuration table 'code' you can filter out materials searching for keywords. In addition, there are a number of pre-defined keywords collected in a list of categories - this allows quick search for semiconductors, oxides, and other groups of materials.

Once you have selected a material and you want to use it in your computations just click on Take this and it will be inserted into the list of materials.

materials_blob

For performance reasons material objects are not stored in the table materials but in a separate table called 'materials_blob'.

Colums:

materials_png

This table holds screenshots of the materials which are stored in the table 'materials'.

Columns:

parameter_name

When you store fit results to the database (see below) a corresponding table is automatically generated. Since names of  fit parameters or final numbers may violate rules for names of database columns SCOUT uses safe names like fp1 for the first fit parameter or fn3 for the third final number. This makes reading the results table difficult. The table parameter_name provides a translation of the database names to the original names used in SCOUT.

In order to retrieve the original names you have to filter out all rows which belong to the configuration of interest.You can do this by searching for the corresponding index of the configuration (column configuration_idx).

Columns:

With version 4.67 we have introduced 2 more columns in this table (display_format,display_width) which can be used to generate a user-friendly look of results tables. When SCOUT connects to a SQL database it adds these columns automatically. The new table structure is this:

Columns:

The column 'display_width' specifies the width of the column in pixels. If the value is 0 the column is invisible - in order to see the column you have to set a finite value. You can set a value for display_width for any column of the table.

With 'display_format' you can specify a format to show a floating point number. Make sure that you set a format for floats only - violating this may cause an access violation error. Examples of display_format values are given in the table below:

Floating point number

Content of display_format

Column output

3.1415287362

#0.000

3.142

3456.23245

#

3456

0.92651

#.00

.93

sample

This table collects your samples. A sample has a name, a description and 3 floating point numbers that you can freely use to characterize the sample (like deposition temperature or density).

Columns:

sample_position

Rows in this table are used to connect measured spectra to a specific position on a sample. A measurement position is given by 3 floating point numbers which represent coordinates like x, y and z in most cases. A measured spectrum is assigned to a sample_position by specifying its index. The corresponding sample and the position on the sample can then be looked up.

Columns:

sample_state

When you have done a measurement and save the spectra to the database you can select an item from the table sample_state. A sample state is an integer number connected to a text string. Sample states can be 'fresh', 'aged', 'tempered' or any other phrase that you enter to characterize the state of your sample.

Columns:

spectrum

Measured optical spectra are stored in this table. Each spectrum is connected to a sample position, a sample state and several  other quantities. Please note the important role of the column probehead which connects a spectrum to an object in the list of spectra in SCOUT. If a spectrum object named 'R' saves a spectrum the probehead name will be entered as 'R' in the database. When you later try to load spectra from the database into a SCOUT configuration it must contain a spectrum object with name 'R' as well. It is recommended to develop a consistent use of spectrum names in your work.

A spectrum may be characterized by up to 3 floating point numbers which may represent the sample temperature at the time of data acquisition or similar quantities.

Note that the column 'data' is not used. The spectral data are stored in the separate table spectrum_blob (see below).

Columns:

spectrum_blob

This table is used to store spectral data. For performance reasons these are de-coupled from the other information of stored spectra.

The field 'data' contains the spectrum in binary notation, using the SpectraCalc file format.

Columns:

Fit results

You can store fit results to a SQL database. In order to do so SCOUT generates a table with columns that hold the values of fit parameters, optical functions and final numbers. Such a table is specific for the configuration which means that every configuration will have its own table of results.

The table of results is connected to the corresponding configuration by its index in the table 'code'. You can store results only for configurations that were loaded from the database. If the configuration is not yet stored in the table 'code' you have to store it and re-load it from the database before you can save fit results.

Here is an example: Suppose you have loaded the following configuration from the database table 'code':

In the treeview, visit the SQL database connection branch and open the tab 'Fit results'. Click on Generate/Open results table. The page should look like this now:

Now since the table exists you can click on Write to results table:

Note the value 63 of code_idx: This is the index of the configuration in the table 'code'. The program has generated a table called 'results_63' in the database which will be used to collect fit results for this configuration. Please note that the column names of result tables are quite general names like fp1, fp2, ..., of1, of2, ... and fn1, fn2, ... These columns represent fit parameters (fp*), optical functions (of*) and final numbers (fn*). You can retrieve the original names of these quantities using the table 'parameter_name'. This table can also be used to fine-tune the appearance of the results table.

Not only the fit results have been stored but also the sample, the sample position and all spectra. You can find the sample 'ZnO (thick)' on the tab sample. After a double click on the sample row 'ZnO (thick)' all acquired spectra for all sample positions are loaded:

You can now load new measured spectra (or measure new ones), do the fit and conveniently store the new results together with the sample information and all spectra.

Clicking Read results from table re-loads measured spectra and fit results from the database into SCOUT.

Retrieving results from the database

Reading results back from the database should start by selecting a configuration in the table 'code'. The index of the selected method (column idx) must be combined with the text fragment 'results_' to get the name of the table that holds the fit results. If the configuration has index 1015 the results are collected in the table 'results_1015'.

Before you work with table 'results_1015' you should select the rows of the table 'parameter_name' that are related to the selected configuration. Filter out all rows for which configuration_idx = 1015. You can use the following SQL statement:

select * from dbo.parameter_name

where configuration_idx = 1015

The result may look like this:

SCOUT and CODE will do this selection automatically when you generate or open a results table on the tab 'Fit results'. Before the table is displayed the column names are replaced by the corresponding parameter names which are taken from the table 'parameter_name' as shown above. Floating point numbers are formatted using the given display formats. The widths of the columns are set according to the values given in the column 'display_width'.

In CODE the results table is then shown like this:

Importing measured spectra from a Zeiss ThinProcess database

You can connect to a Zeiss ThinProcess database, select a sample and measurement position and load all measured spectra for analysis. All settings and actions are done in a dialog which is explained below. You can open this dialog in 2 ways:

1.Execute the global menu command Actions / Spectra / Import / Import all spectra from a Zeiss ThinProcess database.

2.Execute the script line 'import all spectra from a zeiss thinprocess database' in a script object, placed in one of the views.

A suitable database driver must be installed on your computer in order to get a connection to the database. We recommend to install the Microsoft native SQL client SQLNCLI11. A setup routine is available at the Microsoft website. In addition, the Zeiss database must be configured in such a way that it allows remote access from your computer. If this is not the case you should contact your network administrator and/or Zeiss directly.

The ThinProcess dialog looks like this:

The line at the top contains the so-called 'connection string' - this defines details of the connection to the ThinProcess database. Finding a working connection string might be difficult - you can consult the Zeiss ThinProcess documentation or contact us for help. Before you try a connection string you should verify that a network connection to the database server exists - you could open a Windows command line (cmd.exe) and execute the command ping followed by the IP address of the server, like 'ping 192.168.2.13' (the IP address of this example must be adapted to your situation, of course). You should receive a server reaction within a few ms.

The connection string is saved in the file default_values.ini in the user directory (where the license file sits) when you exit the program and loaded again when you start.

Once the database connection is established you will see the last 100 spectra that have been stored in the database. The SQL command 'select top 100 * from spectra order by timestamp desc' has been executed. You can send some pre-defined SQL selection commands by clicking the buttons Show all records, Show top 100 records, Show all LoadIds and Show top 100 LoadIds. If you want to see spectra of a certain sample only, you can enter the LoadId of that sample in the edit box right to the button Search LoadId and then click this button. Finally, you can define your own SQL selection statement in the upper right corner and click the Execute button.

Inspect the selected records and find the sample and measurement position that you are interested in. Place the cursor in one the rows that shows the wanted LoadId and the wanted position (identified by MeasPointIndex or the values LateralPositionMm and LongitudinalPositionMm. Then click the button Load all spectra for selected LoadId and position. The program will now select, one after the other, all records that belong to the same measurement point. In the example shown below there are 3 matching records, with ResultName = Reflection Film, Transmission and Reflection Glass. For each value of ResultName a spectrum object with matching name is searched for in the list of spectra. If a match is found the measured data are sent to the corresponding spectrum object. For the example shown here you must have at least 3 spectra in the list of spectra with names 'Reflection Film', 'Transmission' and 'Reflection Glass'. A successful data import is shown in the 'activity box' at the bottom of the dialog:

When the last spectrum has been loaded the dialog is closed automatically.

Automation

You can automate actions using the built-in automation timer. The timer generates timer events after equidistant time intervals. At each timer event

othe automation timer is stopped until the actions below are done.

ospectrometers record spectra if the option 'Acquire spectra at automation steps' is activated. This option is available through the command File/Options/Data acquisition/Acquire spectra at aumation steps.

otrigger objects in the list of spectrometers check if their conditions is true or false. Depending on the outcome scripts may be executed.

oa fit is started after data acquisition if the option 'Start fit after acquiring new spectra' is set. You can do this through File/Options/Data acquisition/Start fit after acquiring new spectra.

othe global parameter 'timer' is updated. This parameter counts milliseconds since the start of the automation timer. In most user-defined expressions you can refer to the time elapsed using the key word 'time'. You can, for example, compute values of any fit parameter (which may be a master parameter) as function of time. This way you can generate time dependent spectra for demonstrations, e.g. to show how the reflectance of a layer stack changes when a layer grows.

oview objects may change their position or other properties based on time. This way you can generate dynamic visualizations.

othe optical model is re-computed.

othe visible main view is updated.

othe automation timer is activated again.

The automation settings can be changed in the following dialog which shows up through the menu command File/Options/Automation:

The timer interval is set in ms, also the maximum time of the automation period.

If the checkbox Autostart is activated the timer starts to run as soon as the configuration is loaded.

If Cycle is active, the automation is repeated once the maximum time has been reached.

The option Logging controls if values like optical functions or integral quantities in CODE are stored in the workbook for each timer event.

Keyboard action

In the main view you can start the automation by pressing the key 't' on your keyboard. Pressing 't' again stops the automation.

View element

The view element 'Automation button' can be inserted into any view and serves as a button to start or stop the automation. The view element can display a metafile graph overlayed by the current automation time.

General features of SCOUT objects

SCOUT objects have some general features which are documented in this section.

There are some common menu commands and also some symbols on the 'speed bar' (called speed buttons) below the menu which are shared by many objects. Most of the speed buttons cause the same action than menu commands which is indicated in the following.

File

The file menu with New, Open ( ), Save and Save As ( ) commands for loading and storing the object to files (binary). Also a print and printer setup command as well as an option item is provided generally. The report command writes the object report to a small text editor from where it can be saved to a text file or copied as text into the clipboard. Usually an Exit ( ) action is also provided.

Update

This commands is used to update the object. Most objects will respond by re-drawing the object's graphics, some will also do some re-computation if necessary.

Help

Show this help.

List properties

Many SCOUT objects use lists to manage a collection of objects. In some cases the objects are all of the same type, in others one list manages various types of objects. A typical list window looks like this:

On top are the menu items of the list. Besides the File submenu which is a feature of almost all SCOUT objects the above example shows the items that are common to most list objects:

New ( )

This command creates a new list object. If the list supports only one type of objects a new one is created and appears in the list. Usually you have to choose one of several possible object types. This is done by a selection box like the following

which shows the object types that may be created in this particular list. An object of the selected type is created when the New command is activated the next time.

If there are already objects in the list and one is selected (simply place the cursor on the object's line to select it) most lists insert the new object before (i.e. above) the selected one. Some lists simply append new objects at the end of the list.

Edit ( )

This activates some mechanism to edit the currently selected object. For objects which are represented by a window this window will be opened giving access to all the objects settings. Objects which are not represented by a window may show a dialog to edit their properties. Some object may not respond at all to the edit command if their properties can be set directly in the list (see below).

An alternative way to activate the 'edit action' is to select an object's line in the list and click on it with the right mouse button.

Delete ( )

This deletes the currently selected item, usually without any warning.

Delete all

Use this command to delete all objects in the list.

Move up ( ) and move down ( )

For cases where the order of the list entries is important you can move up and down the selected object using the shown speed buttons. These actions cannot be activated by menu items.

Color

This menu command is available in almost all lists. It opens the standard windows dialog to select a color (depending on your windows version you may get this dialog in your language, of course) for the selected object in the list:

The selected color is used to draw the background of the object in the list. Since the text is displayed in black you should avoid dark colors in order to maintain readability. Here is an example of a list with colored objects:

A double click on an object in a list activates the color dialog as well.

Direct editing

Most text entries in a list can be edited directly by simply placing the cursor on the text and typing in something new. In this case the selected 'text cell' is turned into edit mode which can be seen by the white background color of the cell. Instead of simply starting to type you can switch to edit mode by hitting the return key on your keyboard. A second return key hit shuts off edit mode again.

Cell selected, no editing:  

Cell selected and in edit mode:

Most objects offer some of their basic parameters (like their name, e.g.) for direct editing which is very convenient if you have to modify many objects in a list. When you finish editing by moving to another cell or by hitting the return key the object decides if it accepts the text entered by you. If not the cell content is restored that was there before you started editing.

Spectral range selection

Most objects where a spectral range must be defined use the following dialog to set the required values specifying the range:

The example defines 20 points (with equal spacing in between the points) covering the range from 0 to 1 eV. The spectral units supported by SCOUT are

 Quantity         Unit

 Wavenumber        1/cm

 Energy                eV

 Frequency        THz

 Wavelength        nm

 Wavelength        micron

User defined functions

Some SCOUT objects use a formula interpreter to create data. To do this the user usually specifies in a dialog the formula by editing a string. Also the range over which the data will be calculated can be set. When you leave the dialog a formula interpreter checks the formula string and fills the data of the object with new values calculated according to the formula.

In a formula string you can use the following functions:

Function        Explanation        

abs(...)                the absolute value of the argument        

sin(...)

cos(...)

tan(...)                trigonometric functions (argument in rad)

cot(...)                                

asin(...)

acos(...)        inverse trigonometric functions

atan(...)                

sinh(...)

cosh(...)        hyperbolic functions

tanh(...)                

exp(...)                the exponential        

ln(...)                the natural logarithm        

log(...)                the logarithm with base 10        

sqr(...)                the square of the argument        

sqrt(...)                the square root of the argument        

frac(...)                returns the fractional part of the argument        

int(...)                  returns the integer part of the argument        

step(...)        the step or 'heavyside' function        

rect(...)                the rect function        

rnd(...)                returns random numbers centered around 0 with amplitude

         given by the argument        

si(...)                sin(...)/(...)        

pi                3.14159        

Expressions of the form number1^number2 are allowed and return the number2'th power of number1. Of course the usual operators +,-,*,/ and () can be used to combine expressions.

The variables that can be used in a formula string vary from object to object and are given in the individual formula dialogs.

Overview

The formats for data import supported at present are the following:

•SCOUT standard format

•xy-format

•JCAMP format

•SpectraCalc format

•Perkin-Elmer format

•Perkin-Elmer ASCII format

•Zeiss format

•Opus format

•HunterLab UltraScan

•Hitachi ASCII format

•Woollam WVASE32 ASCII format

If your favourite format is not supported please ask us to implement it.

Data from Excel tables can be imported using the SCOUT workbook. A description of this procedure is given below.

SCOUT standard format

For easy data exchange between SCOUT objects and other programs SCOUT objects can read and write data in ASCII files using a simple, column based data format. This is explained at best in an example. A file containing data columns (y-values) defined on equidistant  x-values would look like this:

Standard data file        Comment

_______________________________________________________

0        First row: minimum of the x-range

100        Second row: maximum of the x-range

7    3        Third row: Number of rows of data

 points  and separated with a blank

 the number of data colums.

 Here: 7 rows in 3 columns.

Data created by M.D.        Fourth row: one line to comment the data

1.00   232.4   4343.97        

1.30   242.3   4545.23        

0.34   234.4   4546.45        

4.56   232.6   4543.40                         Data rows and columns

1.45   232.4   4545.56        

1.43   232.8   4545.63        

1.40   232.9   4545.99        

Hello user! In this section        Anything else in the file is not read usually.

anything can be added

but it is useless since it

is not read by SCOUT objects.        

The format for non-equidistant x-values (i.e. for each y-value there is an x-value) is the following:

Standard data file        Comment

_________________________________________________________

0        First row: 0

0        Second row: 0  

 To indicate the format for

 nonequidistant data  the first

 and second row must contain

 the same number, usually a 0

7    3        Third row: Number of rows of

 data points  and separated

 with a blank the number of

 colums of y-data.

 Here: 7 rows in 3 columns.

Data created by M.D.        Fourth row: one line to comment the data

0.01  1.00   232.4   4343.97        

0.02  1.30   242.3   4545.23                            Data rows and columns

0.05  0.34   234.4   4546.45        

0.04  4.56   232.6   4543.40                   one row of x-data  

0.03  1.45   232.4   4545.56                   three rows of y-data

0.09  1.43   232.8   4545.63        

0.12  1.40   232.9   4545.99        

Hello user! In this section        Anything else in the file is not read usually.

anything can be added

but it is useless since it

is not read by SCOUT objects.        

xy-format

Some SCOUT objects can read or write data in a very simple format without any header, namely by just using pairs of x- and y-values stored in ASCII files.

An example is the following:

______________________________________________________

1.2        0.234

1.5        0.302

1.9        0.452

0.7        0.332

_______________________________________________________

Since the x-values must not necessarily have equal spacings (as in the example above) a problem arises when an object tries to import such data which requires equidistant x-values (such as object of type 'single data column field'). In this case the following is done:

The pairs of x-y-data are read from the file, then they are sorted by the x-values (starting with the smallest). A 'grid' of equally spaced x-values is created covering the same x-range as the original data and using the same number of data points. Finally the corresponding y-values are calculated by interpolating between the original data.

JCAMP format

The JCAMP-format is a text file (ASCII files) format which has been established as a standard for data transfer between spectroscopic software packages. Unfortunately there exist by now many different JCAMP-formats with different data compression techniques (there are even binary JCAMP-formats). SCOUT supports only a very few of the simple ASCII-versions.

SpectraCalc format (GRAMS)

Many optical spectra are stored using the very compact binary SpectraCalc-format (usually identified by the extension *.SPC). SCOUT can import such files as long they contain just one spectrum - multiple spectra files are not supported up to now.

Perkin-Elmer format

Binary format used by Perkin-Elmer spectrometers (usual file extension: *.sp).

If the import using this routine does not work, please try the import routine for Perkin-Elmer ASCII format.

Perkin-Elmer ASCII format

ASCII format created by Perkin-Elmer spectrometers. Unfortunately the default file extension is the same (*.sp) as for the binary format above. So be sure which format you have before you try to import data using this import routine.

Zeiss format

Format used by Zeiss spectrometers for spectrum export. Typical file extensions are *.000, *.001, ... or *.dat.

The import routine has been extended with object generation 3.90: If a *.dat file contains more than 1 spectrum the user is informed about the number of spectra and can input the number of the wanted spectrum.

This is in particular useful if spectra generated by old versions of the Optoplex P software have to be analyzed. In this software you have the option to export all spectra  measured by a probehead to a single *.dat file.

Opus format

Used by the Bruker Opus software to export data in binary files. Typical file extension: *.0, *.1, ...

HunterLab UltraScan

This format is text file based (default extension: *.CSV). A file may contain several spectra, each one in a separate row with its spectral values separated by commas. A header line contains the description of the items in each row.

SCOUT will display the first four values found for the individual spectra in a dropdown list and give the user the opportunity to select a spectrum from the list. It is assumed that the first four items contain a description of the spectrum, giving enough information for identification.

Hitachi ASCII format

This is a simple ASCII format created by Hitachi spectrometers. SCOUT will only import data from the file if line 4 in the file contains a '3' - this indicates a spectral scan in nanometers.

SCOUT will not check if the spectral type denoted in line 5 (Reflectance, Transmittance, ...) agrees with the settings in the importing object. This is your responsibility.

WVASE32 ASCII format

Output format of the Woollam WAVSE32 software.

This format is for multiple files. SCOUT will handle the data according to the following rules (please read the section below about overwriting these rules as well):

Ellipsometry:

•If the importing object is an ellipsometry spectrum it will accept data only from lines starting with a number in the first column (This indicates ellipsometry data). Secondly, the ellipsometry object will check if the angle of incidence given in the second file column agrees with its own angle. Only in the case of positive identification of spectrum type (ellipsometry) and angle of incidence it will read psi and delta.

•Ellipsometry objects will not do any automatic correction of the type of computed quantities - please check yourself if the model computes Psi and Delta when you import Psi and Delta values. If the imported data are trigonometric functions of Psi and Delta you have to do appropriate settings in the ellipsometry object to compute the same quantities in the model.

Reflectance and transmittance:

•In the case of reflectance or transmittance spectra, SCOUT will scan the WVASE32 file for lines starting with identifiers like 'uT' or 'sRr'.

•In the case of non-normal incidence of light, SCOUT will only accept data lines with a polarization state matching the polarization settings of the model: The first letter of the data line indicates the polarization: 's' denotes s-polarization, 'p' stands for p-polarization and 'u' is for unpolarized radiation.

•In the case of normal incidence (exactly 0 degree or 180 degree), SCOUT will scan for data lines starting with 'u' independent of the polarization settings of the model (If you would set the polarization in the model to 'mixed' SCOUT would compute both s- and p-polarized spectra and do the averaging. This would take twice as long as the computation of a single spectrum).

•In the case of a computed reflectance spectrum, SCOUT will only accept lines for which the 2nd letter is 'R'.

•In the case of a computed transmittance spectrum, SCOUT will only accept lines for which the 2nd letter is 'T'.

•If the angle of incidence in the model is larger than 90 degree, only data lines with the 3rd letter equal to 'r' are considered.

•If the angle of incidence is below 90 degrees, the third letter must be 'b' for reflectance (i.e. including backside reflection).

•In the case of transmittance and angles below 90 degrees, the 3rd letter must be blank. The Woollam software does not create different notations for transmittance spectra with or without multiple backside reflections.

If your WVASE32 files contain all the spectra you need for your SCOUT configuration, you can use the following shortcut for data import: Use the command Actions|Import all spectra from a single WVASE32 ASCII file, select the file and SCOUT will try to import measured spectra for all objects in your list of spectra that import measured spectra.

Overwriting the import rules

You can customize the import of WVASE32 data setting your own choices for the search string and the angle of incidence.

Setting a search string:

Starting with object generation 3.90, the rules to import WVASE32 data which are explained above can be overwritten. In objects that compute reflectance or transmittance spectra you can explicitly set the search string using the local menu command File/Options/WVASE32 import/Search string. For example, you could set the search string to 'uR' - in this case all lines in the data file starting with 'uR' will be considered as input for this spectrum, independent of the rules stated above. After you set the search string empty the rules will apply again.

Setting a search angle:

If you specify a negative search angle (like -1) SCOUT will take the first angle found in the file and set the angle of incidence for the simulation to this value. Lines with angles different from the first one are ignored. The command to be used is the local menu command File/Options/WVASE32 import/Angle of incidence.

Both settings are stored in configuration files.

Import from Excel

Spectra from Excel can be imported if they are available in the following structure: There must be a column with the spectral positions, followed by a column with the reflectance or transmittance data. An example is shown below:

Column A contains the wavelength in nm, column B the transmittance data in %.

To import this spectrum to SCOUT the following steps are to be taken:

•Select column A and B or the whole worksheet and copy the selection to the clipboard.

•Open the SCOUT spectrum window where you want to import the spectrum.

•Use the Workbook|Open workbook command to open the workbook.

•Select cell A1 and activate the Paste command to paste the clipboard data to the SCOUT workbook. Use the Autosize cells command to resize the cell widths if necessary.

•Now place the cursor in the workbook cell A1 (which contains the number 200)

•Go back to the spectrum window (you can close the workbook if you like) and import the data with the command Workbook|Import xy.

•In the following range dialog, check the unit and change it if it's wrong.

•That's it. The data are imported.

Overview

Some SCOUT objects can export computed numbers to data files. Depending on the type of format the user has to specify some parameters such as the size of a data column or the number of decimals used in text file export.

The following formats are used:

SCOUT standard format

SpectraCalc format

Perkin-Elmer format

Options

You can set several program options to influence the behaviour of SCOUT. These are accessible using the File|Options submenu.

Here is a list of implemented options:

Password

You can protect a SCOUT configuration by setting a password. However, this protection only works with the main menu switched off. To turn the main menu on or to modify view elements, the user needs to know the password.

If the password is empty (this is the default setting at program start) SCOUT will not ask for a password verification.

Username

If you specify a username SCOUT will enter it automatically if you add a material to the database.

Database

In order to connect to a database different from the default database you have to use the File|Options|Database command in the main window. Specify the new database folder in the subsequent dialog and you are connected to the new database.

Sample description

Use this command to enter the description of the sample. The sample description can be displayed in a view using the corresponding view object.

Sample descriptions are usually used in combination with batch control.

Toolbar

This is a submenu with switches that control the visibility of the various toolbar buttons.

See the section about configuring SCOUT for routine work.

Rating

This submenu gives access to the rating settings. The following submenu commands are available:

•Show: check or uncheck this option to show (or not show) rating information

•Change level threshold: Use this command to modify the threshold of a quality level

•Change level description: Use this command to modify the description of a quality level

•Show settings: This command opens a short dialog like the following which displays the current settings:

•

Batch control

Submenu related to the batch control window with the following commands:

•Synchronize batch control window: Right side: If you check this option the batch control window will appear to the right side of the main window and fill the rest of the screen whenever you re-size the main window

•Synchronize batch control window: Bottom: If you check this option the batch control window will appear at the bottom of the main window and fill the rest of the screen whenever you re-size the main window

•Batch control always on top: When this option is checked the batch control window will always be on top of other windows

Appearance

Submenu with the following items

•Main window dimensions: Use this command to set the size of the main window in 4 short dialogs. You are asked for the position of the upper left corner on the screen and the window width and height.

•Laptop dimensions: Use this command to fill the typical screen of a laptop computer with the main window (1024 by 768 pixels). This command is convenient if you prepare presentations for beamers with this resolution.

•Statusbar: This menu item can be switched on and off. The statusbar at the bottom of the main window is displayed or not depending on the setting.

•Menu visible at start: Uncheck this option if you want to hide the menu after loading the configuration. This is useful for presentations

•Presentation style: If you check this option the main window is shown without title bar, surrounding frame and Windows control elements:

With switched-off statusbar and menu it looks like this:

•Laptop presentation style: The same as the 'Presentation style' command above, but with simultaneous re-scaling to the 1024*768 resolution

•Show sliders after loading: This is a switch that controls if sliders are automatically displayed at program start. See the section about configuring SCOUT for routine work.

•Show spectra after loading: This is a switch that controls if the spectra windows are automatically displayed at program start. See the section about configuring SCOUT for routine work.

Data acquisition

Submenu with items related to spectrum recording:

•Save acquired spectra: Check this item if you want to save the measured spectra to data files after data acquisition

•Start fit after acquiring new spectra: If checked, a parameter fit is automatically started when the data acquisition has finished

Animation

Submenu to control parameter animation:

•Parameter animation interval: Use this command to set the delay between two subsequent states of the animation

Overview

SCOUT communicates with some tools by easy drag&drop exchange of optical spectra. The programs are explained shortly in the following. All tools mentioned below are contained in your SCOUT licence.

Data Factory

Data factory is a utility to create and manipulate data.

With Data factory you can

•Compute new data or manipulate existing ones by applying user-defined formulas

•Use up to three input spectra in your formula

•Create data by drawing using spline interpolation

•Reduce the number of data points by averaging

•Smooth curves

•Fourier transform data

Collect

Collect is used to display many spectra in one graph. The present version of Collect supports 2D  and 3D plots.

DirectDF

The functionality of DirectDF has been integrated into SCOUT when the Pane wizard has been developed. If you have SCOUT or CODE you do not need DirectDF anz more - just use the pane wizard!

This is a small tool for the direct determination of dielectric functions. It can be applied if you have recorded a transmittance as well as a reflectance spectrum on the same sample spot, and if, in addition, the sample is just a thick layer of the material under investigation. No interference fringes must appear in the spectra, although multiply reflected partial waves are allowed. Both spectra have to be recorded at almost normal incidence of light. From the two input spectra and the sample thickness (which must also be known before) the dielectric function is computed. The transmission must be significantly different from zero.

This method applies to thick substrates with both sides polished such as microscope slides, silicon wafers polished on both sides or KBr plates.

Digit

This tool is used to digitize curves manually or semi-automatic from literature sources. You must have a Windows-bitmap (*.bmp) obtained from a scanner or a video frame grabber.

DF_DB

This tool converts a database of optical constants from previous SCOUT versions (up to version 2) to version 2.1 which is necessary because we have changed the structure of the database completely. In order to convert your dielectric function database to the new database system start the program df_db which is contained in the complete setup of SCOUT 2.1. The program looks like the old database window:

Use the Connect button in the upper left corner to connect to the database you want to convert. Then press the Export button in the upper center and select the folder where you want the new database entries be created. Select the subfolder 'Materials' in the new database folder structure.

Once you have selected the target folder you are asked if you want to overwrite existing entries automatically:

Having received the answer to this question, DF_DB starts to convert the data. The material names of the old database are used to create the required datafiles of the new database. If one of these names contains an illegal character such as >,<,%,\ or / you will get an error message and the conversion is stopped. In the example above the name 'Ag /model' is not allowed as filename and the following error message pops up:

In this case you have to rename the material and start the export again.

Introductory remarks

The SCOUT software developed for optical analysis by spectrum simulation is a Windows based stand-alone solution. The typical SCOUT user works in a research environment, has some background in optical spectroscopy and is able to setup new models for optical constants and layer stacks.

Communication with other programs is possible by file import and export and some clipboard transactions.

For routine spectroscopy (product and process control) simplified user interfaces have been developed. While there is an almost complete SCOUT program doing its work in the background the 'front end window' has only a few buttons being operated by users without spectroscopic background.

A typical sequence is the following: First a so-called 'method' is loaded (i.e. a complete configuration containing all necessary models for a given problem) which is then used to analyze many spectra of a certain type of samples. A spectrum is loaded (or recorded with direct spectrometer control from within the front end application), the parameter fitting is started and stopped after a certain level of quality has been reached, and finally the obtained parameters are stored in a proper way.

Following increasing demands for external control we have turned SCOUT into an OLE automation server accessible by all Windows programs supporting OLE automation. The SCOUT OLE automation server is described in this user guide.

After a description of the installation procedure the public properties and methods of SCOUT OLE automation objects are discussed. Then we show how you can automate your SCOUT work  using Visual Basic for Applications (VBA) macros in Excel. Programs providing easy access to tables of data like spreadsheet applications are certainly best suited for SCOUT work. This will be clear from the shown examples. Nevertheless, you can use any application that can act as an OLE automation client (or controller) to work with the SCOUT server.

Installation

Automatic installation

The installation of the OLE server is done by the SCOUT setup routine. It registers the application as OLE automation server named 'scout.scoutole' which is from now on available to all OLE automation clients like LabView, Excel, C++, ... .

Manual registration

You can unregister and register OLE servers manually, using the Windows command line with administrator rights. In order to unregister SCOUT as OLE server, use the command

c:\program files\scout\scout.exe /unregserver

where the path to the executable file has to be adjusted, of course.

To manually register SCOUT please use the command

c:\program files\scout\scout.exe /regserver

Using OLE automation

During your work with the automation server you will have to use configuration files and – eventually – files that contain sets of fit parameters. It is recommended that you collect those and the experimental data files that are going to be analyzed in appropriate directories.

After the automation server is registered in the Windows registry (see the installation section) OLE automation clients can create automation objects and control these by their properties and methods. To give an example, the following two lines of Visual Basic code generate the new automation object 'scout' whose methods and properties can be used afterwards:

Public scout As Object

Set scout = CreateObject("scout.scoutole")

While methods are called to induce some server activity object properties are used to set or recall some object variables. This section describes the SCOUT OLE automation object properties and their use.

a_filename      (string)

Executes the standard dialog to select a filename. Returns the selected name. VBA example:

Range("results").Offset(4 + i, 1) = scout.a_filename;

Writing this property has no effect.

absorption_coefficient(n : integer; wavenumber : real number)        (real number)

Returns the absorption coefficient of the n-th dielectric function in the dielectric function list at the wavenumber specified by the 'wavenumber' property. The unit of the absorption coefficient is 1/cm.

Writing this property has no effect.

average_time     (real number)

Reading this number you obtain the average time (in seconds) used for one iteration of the fitting procedure.

VBA example:

Range("results").Offset(4 + i, 1) = scout.average_time;

Writing this property has no effect.

batch_configuration_file (string)

Setting the batch_configuration_file  property you can load the content of the batch operation worksheets. You have to pass the name of an existing file (including the extension *.xls) as shown in the following VBA example:

scout.batch_configuration_file = "f:\examples\batch_parameters.xls"

This statement causes the loading of the specified batch configuration file.

batch_fit_deviation (sample:string)       (float)

After the performance of a batch fit you can use this command to get the obtained fit deviation for the specified sample.

VBA example:

quality = scout.batch_fit_deviation("s413 #3")

batch_fitparameter_name (index: integer)       (string)

Returns as a string the name of the batch fit parameter specified by the index parameter.

VBA example:

this_name = scout.batch_fitparameter_name(5)

batch_fitparameter_value (sample: string, index: integer)       (float)

Returns as floating point number the value of the batch fit parameter specified by index, obtained in the batch fit for the sample specified by the sample parameter.

VBA example:

this_value = scout.batch_fitparameter_value("s413 #3", 5)

batch_fp_set_stop_reason (samplename : string, fp_set_index: integer) (string)

Returns the reason why the batch fit of sample samplename has been finished for the fit parameter set given by fp_set_index.

batch_input_path(index : integer)         (string)

This property is the network path to the input spectra of the spectrum specified by the index parameter. The filenames of the input files are composed from the batch_input_path, the batch_spectrum_filename and the extension defined in the 'Input options' worksheet of the batch control workbook.

You can read or write the batch_input_path.

VBA example:

scout.batch_input_path(1) = "C:\test\data\trans\"

scout.batch_input_path(2) = "C:\test\data\refl\"

batch_name_of_spectrum (i : integer)    (string)

Returns (as string) the name of the i-th spectrum in the batch control workbook. The spectra are labeled 1,2,..., n if there are n spectra for each sample.

VBA example:

my_spectrum_name = scout.batch_name_of_spectrum(2)

Writing this property has no effect.

batch_number_of_spectra   (integer)

Returns the number of spectra defined in the current batch control workbook. Use this number to iterate through all spectra in a loop.

VBA example:

nbs = scout.batch_number_of_spectra

Writing this property has no effect.

batch_prefit_result(sample : string)         (string)

Returns the pre-fit set found for the specified sample during the batch fit.

VBA example:

start_set = scout.batch_prefit_result("s413 #3")

batch_sample_parameter(sample : string)     (float)

Use this property to set or read the numeric parameter of a sample in batch control workbooks. Specify the sample by its name, and pass the numerical parameter as float.

VBA example:

scout.batch_sample_parameter("s413 #3") = 13.56

batch_spectrum_filename (sample : string, index : integer)     (string)

Specifies the input spectrum for the spectrum specified by the index parameter and the sample specified by the sample parameter. You can read or write this item. The input spectra are labeled 1, 2, ... n if there are n spectra for each sample.

VBA example:

scout.batch_spectrum_filename("s413 #3",1) = "c:\test\s413_3_r"

batch_status    (integer)

Inspect this value to find out if SCOUT is busy with a batch fit operation.

If the value of batch_status is 1 the batch fit is still active.

If the value is 0 the batch fit is finished and you can pick up the results.

VBA example:

This example starts the batch fit and then waits in a loop until the batch fit is done. Every 3 seconds the batch status is checked. Finally a message box indicates the termination of the batch fit.

  scout.batch_go

  While scout.batch_status <> 0

        Application.Wait Now + TimeSerial(0, 0, 3)

  Wend

  msgbox "Batch finished"

color_coordinate(spectrum_index,simulated,color_type,illuminant,observation_angle)  (float)

Computes the color coordinate of a spectrum.

The index of the spectrum in the list of spectra is given by the parameter 'spectrum_index'. The spectra are counted 1, 2, 3, ...

Depending on the parameter 'simulated' the color coordinate of the simulated or the measured spectrum is computed:

simulated = 0:  The color coordinate of the measured spectrum is computed

simulated = 1:  The color coordinate of the simulated spectrum is computed

The 'color_type' parameter selects the color coordinate to be computed. The following choices are possible:

0:        L*

1:        a*

2:        b*

3:        X

4:        Y

5:        Z

6:        x

7:        y

8:        z

9:        L

10:        a

11:        b

'Illuminant' selects one of the following illumination spectra:

0:        A

1:        D65

2:        C

With 'observation angle' you can set the observation angle for which the color coordinate is computed:

0:        2°

1:        10°

Example:

Calling scout.color_coordinate(1, 1, 1, 0, 1) returns a* of the first simulated spectrum in the list of spectra. It is computed for illuminant A and 10° observation angle.

configuration_file    (string)

Setting the configuration_file  property you specify the optical analysis method that is stored in a complete configuration file. You have to pass the name of an existing file as shown in the following VBA example:

scout.configuration_file = "f:\examples\s-pol.sio"

This statement causes the loading of the specified configuration file.

Reading this property returns the name of the configuration file that was loaded by SCOUT in the last 'load configuration' action.

dielectric_function_name(i:integer)      (string)

Returns the name of the i th dielectric function. The following VBA command fills a certain cell with the name of the 5th dielectric function:

Range("results").Offset(5, 1) = scout.dielectric_function_name(5)

Setting this property has no effect.

df_real_part(n : integer; wavenumber : real number) (real number)

Returns the value of the real part of the n-th dielectric function in the dielectric function list at the wavenumber specified by the 'wavenumber' property.

Writing this property has no effect.

df_imag_part(n : integer; wavenumber : real number) (real number)

Returns the value of the imaginary part of the n-th dielectric function in the dielectric function list at the wavenumber specified by the 'wavenumber' property.

Writing this property has no effect.

experimental_spectrum_comment(n:integer):   string

Returns the comment of the n-th measured spectrum in the spectrum list.

Writing this property has no effect.

experimental_spectrum_value(n:integer;wavenumber:real number):real numbernumber

Returns the value of the n-th measured spectrum in the spectrum list at the wavenumber specified by the 'wavenumber' property.

Writing this property has no effect.

fft_thickness(n_spec : integer; wn_min, wn_max : real number, fft_np:integer, d_min, d_max, n : real number) (real number)

Performs the FFT thickness analysis and returns the obtained thickness.

Parameters:

n_spec:                number of the spectrum in the spectrum list

wn_min:        wavenumber minimum of the used spectral range

wn_max:        wavenumber maximum of the used spectral range

fft_np:                number of data points used to sample the spectral range

d_min:                expected thickness minimum

d_max:                expected thickness maximum

n:                refractive index of the layer

VisualBasic example: scout.fft_thickness(1,650,7000,2048,5,50,2.0)

fft_strength(n_spec : integer):real number

Returns the height of the peak determined in the last fft_thickness routine for spectrum n_spec. This number can be used to get information on the qualitiy of the analysis.

file_format   (integer)

Sets the file format for subsequent import actions.

The following values are implemented up to now:

 format        File format        

    1        Standard        

    2        xy-format        

    3        JCAMP        

    4        SpectraCalc        

    5        Perkin-Elmer        

    6        Zeiss        

    7        Opus        

file_object_generation  (real  number)

Returns the object generation of the last configuration file that has been loaded into SCOUT.

fit_deviation      (real number)

Returns the current fit deviation.

Dim this_deviation as single

this_deviation = scout.fit_deviation

Setting this property has no effect.

fit_parameter_mode(i:integer)  (integer)

Sets (or reads) the variation mode of the n-the fit parameter. The following values are implemented at present:

 mode        meaning

 -1        Frozen

 0        Downhill simplex

 1        Computed from master parameters by formula

 2        Fit on a grid with 10 points

 3        Fit on a grid with 20 points

 4        Fit on a grid with 50 points

 5        Fit on a grid with 100 points

 6        Start at low limit

 7        Start at interval center

 8        Start at high limit

 9        Fit on a grid with n points (n is set in user options)

 10        Honey mode

fit_parameter_name(i:integer)    (string)

Returns the name of the fit parameter. The following VBA command fills a certain cell with the name of the selected fit parameter:

Range("results").Offset(4 + i, 1) = scout.fit_parameter_name(i)

Setting this property has no effect.

fit_parameter_set      (string)

Setting the fit_parameter_set  property you specify the file from which a fit parameter set is to be loaded. Reading this property has no effect.

Reading this property returns the name of the currently loaded fit parameter set.

VBA example:

scout.fit_parameter_set = "c:\buffer\test.fps"

fit_parameter_value(i:integer)    (real number)

Returns the present value of the fit parameter i. The n fit parameters are labeled from 1 to n.

Dim my_value as single

my_value = scout.fit_parameter_value(12)

Set this property to pass a value to a fit parameter in SCOUT:

Dim my_value as single

my_value=3.4

scout.fit_parameter_value(12)=my_value

fit_parameter_value_min(i:integer)  (real number)

Sets the lower boundary (minimum) of the range of variation of the n-th fit parameter. Reading this quantity returns the current value of the lower boundary.

fit_parameter_value_max(i:integer)  (real number)

Sets the upper boundary (maximum) of the range of variation of the n-th fit parameter. Reading this quantity returns the current value of the upper boundary.

fitting      (integer)

Returns information on the fit activity of SCOUT.

The value of fitting is 0 if there is no fit running, fitting is equal to 1 during the fit.

VBA example:

if scout.fitting=1 then ...

Writing this property has not effect.

foundfiles    (integer)

Returns the number of files that were selected in the last 'searchfiles' action.

This number can be used to iterate through all the found filenames. The latter can be obtained by the found_filename function.

found_filename(i:integer)    (string)

This function returns the complete filename of the i-th selected file in the last searchfile action.

fp_set_name (index : integer) (string)

Returns the name of the fit parameter set with index 'index'.

get_sim_val1(n : integer; wavenumber : real number) (real number)

Returns the 1st simulated value of the n-th simulated spectrum in the spectrum list at the wavenumber specified by the 'wavenumber' property. If the spectrum is an ellipsometry spectrum, there are two simulated quantities: Psi and delta, or cos(psi) and tan(delta). In that case the 1st value is the psi-related quantity. The second quantity, related to delta, can be obtained using the function get_sim_val2.

Writing this property has no effect.

get_sim_val2(n : integer; wavenumber : real number) (real number)

Returns the 2nd simulated value of the n-th simulated spectrum in the spectrum list at the wavenumber specified by the 'wavenumber' property. This is used in cases like ellipsometry where there are two simulated quantitiesi: Psi and delta, or cos(psi) and tan(delta). In that case the 1st value (obtained by the function get_sim_val1) is the psi-related quantity. The second quantity is the one related to delta.

Writing this property has no effect.

grid_test_max  (single)

This property sets or gets the minimum value of a parameter variation on a fixed grid.

grid_test_min   (single)

This property sets or gets the minimum value of a parameter variation on a fixed grid.

grid_test_no_points  (integer)

This property sets the number of points used in the parameter variation on a fixed grid.

grid_test_para  (integer)

This property sets the fit parameter varied in a parameter variation on a fixed grid.

incidence_angle(i:integer)   (real number)

Returns the angle of incidence of the i th spectrum. The following VBA command fills a certain cell with the angle of incidence of the 2nd spectrum:

Range("results").Offset(2, 1) = scout.incidence_angle(2)

Setting this property sets the value of the incidence angle of the i th spectrum in the SCOUT spectrum list.

kappa(n : integer; wavenumber : real number) (real number)

Returns the imaginary part of the refractive index of the n-th dielectric function in the dielectric function list at the wavenumber specified by the 'wavenumber' property.

Writing this property has no effect.

layer_material(n,m: integer): string (read)

This function returns the name of the material assigned to layer m in the layer stack n (stacks and layers are counted 1,2,3, ...).

layer_thickness(n,m : integer): float (read/write)

Sets or reads the thickness of the m-th layer in the n-th layer stack to the value passed to the property. Both the layer stacks and the layers in a layer stack are counted starting at 1. Reading this property returns the current value of the layer thickness.

layer_type(n,m : integer) (string)

This function returns the type of layer m in the layer stack n (stacks and layers are counted 1,2,3, ...).

load_experiment(n: Integer; const filename: String; format: Integer);

Loads for the n-th spectrum in the spectrum list experimental data from the file specified by 'filename'. The format used is given by the 'format' parameter:

 format        File format        

    1        Standard        

    2        xy-format        

    3        JCAMP        

    4        SpectraCalc        

    5        Perkin-Elmer        

    6        Zeiss        

    7        Opus        

VBA example:

scout.load_experiment(5,"c:\buffer\test.spc",4);

main_window_height

Height of the main window.

main_window_left

Screen coordinate (x) of the main window's upper left corner.

main_window_top

Screen coordinate (y) of the main window's upper left corner.

main_window_width

Width of the main window.

material_is_in_material_list (material_name : string) (integer)

Returns 1 if a material named material_name is in the list of materials, 0 otherwise.

material_is_in_database (material_name : string) (integer)

Returns 1 if a material named material_name is in the database, 0 if not.

measurement(i:integer)    (string)

Setting this string to an appropriate filename will cause SCOUT to import the experimental spectrum of the i-th spectrum in the spectrum list from the specified file. The expected format of the measured data must be set before using the file_format property.

mutlidimensional_gridfit (integer)

Returns or sets the option 'multidimensional gridfit'.

A value of 0 means 'multidimensional gridfit' is switched off, a value of 1 stands for 'multidimensional gridfit' is switched on.

VBA examples:

scout.multidimensional_gridfit=1

.

.

.

check = scout.multidimensional_gridfit

number_of_dielectric_functions     (integer)

Returns the number of dielectric functions in the present SCOUT configuration. The dielectric functions are counted from 1 to number_of_dielectric_functions.

Dim np as integer

np = scout.number_of_dielectric_functions

Setting this property has no effect.

number_of_fit_parameters     (integer)

Returns the number of fit parameters used at present. This can be used to write loops with some action executed for all fit parameters. For example, you could create a table with the fit parameter names and current values.

Dim np as integer

np = scout.number_of_fit_parameters

Setting this property has no effect.

number_of_fp_sets (integer)

Returns the number of fit parameter sets.

number_of_layer_stacks: integer (read)

Returns the number of layer stacks.

number_of_layers_in_stack(n : integer): integer (read)

Returns the number of layers in the n-th layer stack (stacks are counted 1,2,3, ...).

number_of_spectra    (integer)

Returns the number of spectra in the present SCOUT configuration. The spectra are counted from 1 to number_of_spectra.

Dim np as integer

np = scout.number_of_spectra

Setting this property has no effect.

object_generation (real number)

Returns the object generation of the SCOUT program.

optical_function(a_string : string)    (real number)

Returns the value of the optical function defined by the text passed in the string a_string. If the optical function cannot be evaluated a value of 0 is returned.

Example:

x1 = scout.optical_function("SiN(n at 400 nm)")

Setting this property has no effect.

optical_function_by_index(i : integer)   (real number)

Returns the value of the i-th optical function in the current list of optical functions in SCOUT.

Example:

x1 = scout.optical_function_by_index(3)

Setting this property has no effect.

parameter (i:integer)    (real value)

Sets or reads the value of the i th parameter.

Defined for future use. Until now no parameters are used in SCOUT.

rating   (string)

Returns the current rating.

rating_theshold (level_index:integer) (float)

Returns or sets the rating threshold for the rating level specified by level_index.

rating_description (level_index:integer) (string)

Returns or sets the string for the rating level specified by level_index.

reference_spectrum(n:integer;formal:integer):string

Setting this string to an appropriate filename will cause SCOUT to import the reference spectrum of the i-th spectrum in the spectrum list from the specified file. The format of the measured data must be set by the format parameter.

The following values for the format are implemented up to now:

 format        File format        

    1        Standard        

    2        xy-format        

    3        JCAMP        

    4        SpectraCalc        

    5        Perkin-Elmer        

    6        Zeiss        

    7        Opus

VisualBasic example:

  scout.reference_spectrum(1, 4) = "c:/temp/dummy2.spc"

refractive_index(n : integer; wavenumber : real number) (real number)

Returns the refractive index of the n-th dielectric function in the dielectric function list at the wavenumber specified by the 'wavenumber' property.

Writing this property has no effect.

sample_description: string

Read and write the sample description which is used in some views.

simulated_spectrum_value(n:integer;wavenumber:real number):real number

Returns the value of the n-th simulated spectrum in the spectrum list at the wavenumber specified by the 'wavenumber' property.

Writing this property has no effect.

simulation_exportfile(n:integer;formal:integer):string

Assigning a filename to simulation_exportfile will cause SCOUT to save the simulated data of the n'th spectrum in the spectrum list to the specified file. The format used for the datafile is given by the 'format' parameter.

The following values for the format are implemented up to now:

 format        File format        

    1        Standard        

    2        xy-format        

    4        SpectraCalc        

VisualBasic example:

  scout.simulation_exportfile(1, 4) = "c:/temp/dummy2.spc"

spectrum_graphics_xmax(n : integer)   (real  number)

Returns the maximum of the displayed x-range in the graphics of the n-th spectrum in the list of specta.

spectrum_graphics_xmin(n : integer)   (real  number)

Returns the minimum of the displayed x-range in the graphics of the n-th spectrum in the list of specta.

spectrum_graphics_xticks(n : integer)   (real  number)

Returns the distance between tick marks on the x-axis in the graphics of the n-th spectrum in the list of specta.

spectrum_graphics_xtitle(n : integer)   (real  number)

Returns the title of the x-axis in the graph of the n-th spectrum in the list of specta.

spectrum_graphics_xunit(n : integer)   (real  number)

Returns the unit of the x-axis in the graph of the n-th spectrum in the list of specta.

spectrum_graphics_ymax(n : integer)   (real  number)

Returns the maximum of the displayed y-range in the graphics of the n-th spectrum in the list of specta.

spectrum_graphics_ymin(n : integer)   (real  number)

Returns the minimum of the displayed y-range in the graphics of the n-th spectrum in the list of specta.

spectrum_graphics_yticks(n : integer)   (real  number)

Returns the distance between tick marks on the y-axis in the graphics of the n-th spectrum in the list of specta.

spectrum_graphics_ytitle(n : integer)   (real  number)

Returns the title of the y-axis in the graph of the n-th spectrum in the list of specta.

spectrum_name(i:integer)     (string)

Returns the name of the i th spectrum.

The following VBA command fills a certain cell with the name of the 2nd spectrum:

Range("results").Offset(2, 1) = scout.spectrum_name(2)

Setting this property has no effect.

spectrum_range_max(n : integer)   (real  number)

Returns the maximum of the spectral range of the n-th spectrum in the list of specta.

spectrum_range_min(n : integer)   (real  number)

Returns the minimum of the spectral range of the n-th spectrum in the list of specta.

spectrum_range_points(n : integer)   (integer)

Returns the number of points of the n-th spectrum in the list of specta.

spectrum_range_unit(n : integer)   (string)

Returns the spectral unit of the n-th spectrum in the list of specta.

tolerance      (real number)

Use this property to read and to set the tolerance which is used for terminating the downhill simplex fitting method.

weight_formula (spectrum_index, subindex : integer) (string)

Returns or sets the weight formula of the spectrum given by spectrum_index. If the spectrum object is an ellipsometry object you have to set subindex to 1 to refer to the weight_formula for psi. Using a value of 2 for subindex selects the weight formula for delta.

acquire

This command executes  the global acquire command in SCOUT: All spectrometers are told to record new spectra.

acquire_dark

Use this command to tell all spectrometers to record their dark spectrum.

acquire_reference

Use this command to tell all spectrometers to record their reference spectrum.

add_layer_definition_on_top(stack_index : integer;definition : string)

A new layer is added on top of the current layer stack with index 'stack_index' in the list of layer stacks (stacks are counted 1, 2, 3, ...).

The new layer is specified by the string 'Definition'. The string may be composed by several terms, separated by tab characters. A tab character has the ASCII code 9 (In VisualBasic, for example, this is obtained by Chr(9)).

Possible layer definitions are

•"Simple layer" + tab + string specifiying the material + tab + string specifying the thickness in cm(!) + tab + string specifying the partial wave superposition ("coherent" or "incoherent")

•"Thin film" + tab + string specifiying the material + tab + string specifying the thickness in cm(!)

•"Thick layer" + tab + string specifiying the material + tab + string specifying the thickness in cm(!)

•"Variable thickness" + tab + string specifiying the material + tab + string specifying the thickness in cm(!) + tab + string specifying the thickness variation in cm (!) + tab + string specifying the thickness profile ("1" rectangular, "2" Gaussian)

•"Rough interface" + tab + string specifying the roughness formula + tab + string specifying the value of the c1 parameter + tab + string specifying the value of the c2 parameter

•'End superlattice' (no parameter)

•'Begin superlattice'+tab+'10' (the last partial string specifies the number of repetitions of the superlattice)

•Starting with object generation 3.81: "Anisotropic layer" + tab + string specifiying the material to be used for the x-y-plane + tab + string specifiying the material to be used for the z-plane + tab + string specifying the thickness in cm(!) + tab + string specifying the partial wave superposition ("coherent" or "incoherent")

VisualBasic examples:

The VisualBasic code

  scout.clear_fit_parameters

  scout.clear_layer_stack (1)

  scout.clear_material_list

  Call scout.add_layer_definition_on_top(1, "End superlattice")

  Call scout.add_layer_definition_on_top(1, "Simple layer" + Chr(9) + "Si3N4" + Chr(9) + "0.0002" + Chr(9) + "coherent")

  Call scout.add_layer_definition_on_top(1, "Thin film" + Chr(9) + "Ag (JC)" + Chr(9) + "0.000001")

  Call scout.add_layer_definition_on_top(1, "Begin superlattice" + Chr(9) + "10")

  Call scout.add_layer_definition_on_top(1, "Thick layer" + Chr(9) + "Si3N4" + Chr(9) + "0.2")

  Call scout.add_layer_definition_on_top(1, "Rough interface" + Chr(9) + "c1*EXP(-X*X/C2/C2)" + Chr(9) + "0.93" + Chr(9) + "45000.0")

  scout.update_data

  scout.update_plot

creates the following layer stack:

Here is an VB example for the 'Variable thickness' layer type:

  Call scout.add_layer_definition_on_top(1, "Variable thickness" + Chr(9) + "Si3N4" + Chr(9) + "0.0006" + Chr(9) + "0.00004" + Chr(9) + "2")

The following is an example for adding an anisotropic layer to the stack:

  Call scout.add_layer_definition_on_top(1, "Anisotropic layer" + Chr(9) + "material_x_y" + Chr(9) + "material_z" + Chr(9) + "0.000003" + Chr(9) + "coherent")

add_layer_on_top (stack_index : integer; layer_type,material:string;thickness:real number; thickness_unit : string)

A new layer is added on top of the current layer stack with index 'stack_index' in the list of layer stacks (stacks are counted 1, 2, 3, ...).

The type of the layer is specified by the string 'layer_type'. Possible types are

•'Thin film' (coherent superposition of partial waves)

•'Thick layer' (incoherent superposition of partial waves)

The material assignment is given by the 'material' parameter. If the wanted material is found in the list of materials, it is taken from there. If not, the database is searched for the requested material. In the case of success, the material is transferred from the database to the list of materials and used for the layer stack assignment.

The thickness of the new layer is specified by the paramters 'thickness' (a real number) and 'thickness_unit' (a string). Possible values for the thickness unit are

•'nm'

•'micron'

•'mm'

•'m'

VisualBasic examples:

  Call scout.add_layer_on_top(1, "Thin film", "Si3N4", 0.45, "micron")

  Call scout.add_layer_on_top(1, "Thin film", "Ag (JC)", 19.4, "nm")

add_to_report(text : string)

Adds the submitted string to the SCOUT report window.

apply_factor_in_fit_parameter_transfers

Execute this command if you want to apply the fit parameter factor if you export or import fit parameter values. Since the default setting is that factors are not used, you have to apply this command before you start to transfer fit parameters and you want the factor to be taken into account.

automatic_spectrum_scaling(i : index)

Executes automatic scaling of the graphics of the i-th spectrum.

batch_add_sample (name: string)

A new sample column is added to the 'Results' worksheet of the batch control workbook. In subsequent calls you have to specify the input spectra for this sample.

VBA example:

scout.add_sample("S413 #1")

batch_clear_samples

Use this command to clear the 'Results' page of the batch control workbook, with the exception of the first column. All input spectra and results are deleted. This is used to prepare a new batch run. Using the batch_add_sample command you can add new samples afterwards.

VBA example:

scout.batch_clear_samples

batch_restore_fit_results (sample : string)

Reloads the obtained batch fit parameters and the spectra for the specified sample.

batch_go

Starts the batch fit based on the current batch control workbook settings. SCOUT will be busy with the batch fit activity for a while, but still respond to OLE commands. You can inspect the value of the property batch_status to find out if the batch fit operation is still active.

VBA example:

scout.batch_go

clear_fit_parameters

This command deletes all items from the list of fit parameters.

VisualBasic example:

  scout.clear_fit_parameters

clear_layer_stack (index : integer)

Deletes all layers of a layer stack and assigns 'Vacuum' to the top and bottom halfspaces.

The position of the layer stack in the list of layer stacks is given by index (stacks are numbered 1, 2, 3, ...).

VisualBasic example:

  scout.clear_layer_stack (1)

clear_material_list

Clears the list of materials: All items are deleted, with the exception of 'Vacuum'.

VisualBasic example:

  scout.clear_material_list

clear_report

Clears the SCOUT report window to prepare it for subsequent entries.

create_fit_parameter (list, object, subobject, subsubobject, parameter : integer)

Creates a new fit parameter in the list of fit parameters. The parameters passed to this procedure have the following meaning:

list: the SCOUT list with the object the fit parameter of which is to be created

1        Materials

2
       Layer stacks

3
       Spectra list

4        Master parameter list

object: the index of the object in the list. The objects are counted 1, 2, 3, ...

subobject: if the object has subobjects this parameter specifies the index of the wanted subobject. This can be, for example, a susceptibility in the list of susceptibilities of a dielectric function model.

subsubobject: if the subobject has again subobjects of its own, this is the index of the wanted subobject.

parameter: the index of the parameter to be selected as fit parameter. If you are not sure about the index of a parameter you can drag the object to the fit parameter list and see which parameters are created in which order. The 'create_fit_parameter' OLE command uses exactly the same number and sequence of parameters.

Here is a simple example making use of the create_fit_parameter command:

'Excel VisualBasic demo of a remote fitting procedure using OLE automation

'This object is the SCOUT automation object

Public scout As Object

Public Sub fit()

  'Create the OLE server

  Set scout = CreateObject("scout_98.scoutole")

  'Load a pre-configured configuration with a suitable reflectance spectrum and spectral range

  scout.configuration_file = "c:\test\ole_test.sc2"

  'Show SCOUT on the screen

  scout.Show

  'Clear the layer stack - we will build up a new one in a moment

  scout.clear_layer_stack (1)

  'Clear the list of materials - materials will be taken from the database

  scout.clear_material_list

 'Create a thick layer with 2 mm thickness and fill it with BK7 glass, a material named "Glass Type BK7" must be in the database

  Call scout.add_layer_definition_on_top(1, "Thick layer" + Chr(9) + "Glass Type BK7" + Chr(9) + "0.2")

 'Create a thin silver filme on top of the glass substrate, take the material "Ag model" from the database

  Call scout.add_layer_definition_on_top(1, "Thin film" + Chr(9) + "Ag model" + Chr(9) + "0.000001")

 'Load a measured spectrum into the first spectrum object, using standard format

  Call scout.load_experiment(1, "C:\test\ag_10.std", 1)

 'Clear the list of fitparameters

  scout.clear_fit_parameters

 'From the list of layer stacks, take the first object

  'and then the second subobject. This is the silver layer.

  'Select parameter 1 as fit parameter (this is the thickness)

  Call scout.create_fit_parameter(2, 1, 2, 0, 1)

 'From the list of materials, take the 3rd object which is the silver model

  '(initially there was vacuum, then glass has been taken from the database,

  'and finally, as 3rd object, the Ag model was loaded).

  'Take the first susceptibility which is the Drude model.

  'Take the 2nd parameter of the Drude model which is the damping constant and select

  'it as fit parameter.

  Call scout.create_fit_parameter(1, 3, 1, 0, 2)

  'Set boundaries for the damping constant which is fit parameter 2 now (after the layer thickness).

  scout.fit_parameter_value_min(2) = 100

  scout.fit_parameter_value_max(2) = 10000

 'The silver model contains several Brendel oscillators in the list of susceptibilities.

  'Take the 2nd, 3rd, 4th and 5th susceptibility and select for each one parameter

  '2 as fit parameter, i.e. the oscillator strength.

  'This is just for demonstration - it is not really reasonable to vary these parameters in the fit.

  Call scout.create_fit_parameter(1, 3, 2, 0, 2)

  Call scout.create_fit_parameter(1, 3, 3, 0, 2)

  Call scout.create_fit_parameter(1, 3, 4, 0, 2)

  Call scout.create_fit_parameter(1, 3, 5, 0, 2)

  'Select - just for demonstration - parameter #1 of the first spectrum in the list of spectra.

  'This is the angle of incidence of the reflectance spectrum.

  Call scout.create_fit_parameter(3, 1, 0, 0, 1)

 'Select - also for demonstration only - the first master parameter as fitparameter.

  Call scout.create_fit_parameter(4, 1, 0, 0, 1)

 'Re-compute the model and update the main view

  scout.update_data

  scout.update_plot

  'Start the fit

  scout.start

  'Start a waiting loop which will finish when SCOUT stops its fit (or you as a user

  'press the STOP button in SCOUT.

  While scout.fitting = True

     'Wait for 1 second

     Application.Wait Now + TimeSerial(0, 0, 1)

     Wend

  'Write results to a worksheet range

 'fit parameter #1 is the thickness

  Range("results").Offset(1, 1) = scout.fit_parameter_value(1)

  'export the real part of the refractive index of the Ag model at 1000 nm wavelength

  Range("results").Offset(1, 2) = scout.refractive_index(3, 10000000 / 1000)

 'export the imaginary part of the refractive index of the Ag model at 1000 nm wavelength

  Range("results").Offset(1, 3) = scout.kappa(3, 10000000 / 1000)

End Sub

delete_fit_parameter (index : integer)

Deletes the fit parameter with the given index. Fit parameters are counted 1, 2, 3, ...

df_load_from_file(n: Integer; const filename:String);

Using this command the n-th dielectric function is told to import data from a standard file specified by the 'filename' parameter.

The n-th dielectric function should be of type 'imported dielectric function' (which is not checked at present).

df_load_from_file_2 (n: Integer; const filename, unit_string:String);

Using this command the n-th dielectric function is told to import data from a standard file specified by the 'filename' parameter.

The n-th dielectric function should be of type 'imported dielectric function' (which is not checked at present).

You can specify the spectral unit of the file data by setting the unit_string parameter to one of the following:

 String transmitted                Spectral unit used

 'cm^-1^' or '1/cm'        >        wavenumbers

 'nm'                        >        nanometers

 '|m|m' or 'micron'                >        microns

 'eV'                        >        electron volts

 'THz'                        >        THz

df_load_from_x_n_k_table(n:integer; const filename : string);

Using this command the n-th dielectric function is told to import data from a testfile specified by the 'filename' parameter. The file must contain a table with three columns. The first column has to contain the spectral position, followed by n and k.

The n-th dielectric function should be of type 'imported dielectric function' (which is not checked at present).

df_load_from_x_n_k_table(n:integer; const filename : string);

Using this command the n-th dielectric function is told to import data from a testfile specified by the 'filename' parameter. The file must contain a table with three columns. The first column has to contain the spectral position, followed by n and k.

The n-th dielectric function should be of type 'imported dielectric function' (which is not checked at present).

You can specify the spectral unit of the file data by setting the unit_string parameter to one of the following:

 String transmitted                Spectral unit used

 'cm^-1^' or '1/cm'        >        wavenumbers

 'nm'                        >        nanometers

 '|m|m' or 'micron'                >        microns

 'eV'                        >        electron volts

 'THz'                        >        THz

do_no_apply_factor_in_fit_parameter_transfers

Execute this command if you do not want to apply the fit parameter factor if you export or import fit parameter values. This is the default setting.

export_simulated_spectrum(n:integer; filename:string; format : integer)

Use this command to save the simulated data of the n'th spectrum in the spectrum list to the file specified by filename. The format used for the datafile is given by the 'format' parameter.

The following values for the format are implemented up to now:

 format        File format        

    1        Standard        

    2        xy-format        

    4        SpectraCalc        

VisualBasic example:

  scout.export_simulated_spectrum(1,"c:/temp/dummy2.spc",4)

df_to_clipboard (n : integer)

Tells the n-th material in the list of materials to copy its graphics to the clipboard.

export_measured_spectrum(n:integer; filename:string; format : integer)

Use this command to save the measured data of the n'th spectrum in the spectrum list to the file specified by filename. The format used for the datafile is given by the 'format' parameter.

The following values for the format are implemented up to now:

 format        File format        

    1        Standard        

    2        xy-format        

    4        SpectraCalc        

VisualBasic example:

  scout.export_measured_spectrum(1,"c:/temp/dummy2.spc",4)

export_simulated_spectrum(n:integer; filename:string; format : integer)

Use this command to save the simulated data of the n'th spectrum in the spectrum list to the file specified by filename. The format used for the datafile is given by the 'format' parameter.

The following values for the format are implemented up to now:

 format        File format        

    1        Standard        

    2        xy-format        

    4        SpectraCalc        

VisualBasic example:

  scout.export_measured_spectrum(1,"c:/temp/dummy2.spc",4)

grid_test

This procedure does the following: The fit parameter specified by the integer grid_test_para is varied from the value grid_test_min to the value given by grid_test_max. Grid_test_no_points are used to cover this parameter range. For each value the fit deviation is computed. After the procedure the fit parameter is set to the best value found on this grid of tried values. This feature can be used before an automatic fit to find good starting values for some of the fit parameters.

hide

Hides the SCOUT window.

hide_statusbar

Hides the status bar.

import_measured_data_via_variants(index : string; spectral_positions, spectral_data : variant; unit_string : string)

Use this command to pass experimental spectra to a SCOUT reflectance or transmittance spectrum.

The 'Index' parameter gives the index of the spectrum in the list of spectra (counted like 1, 2, 3, ...). The spectral positions (wavelengths, frequencies, wavenumbers, energies) and data (reflectance or transmittance) are passed through variant arrays - they must be 1-dimensional and of the same length. The parameter 'unit_string' sets the spectral unit (eV, 1/cm, THz, nanometer, wavenumber).

load_df(n : integer, filename : string)

Loads the n-th dielectric function from the specified file. The entries in the list of dielectric functions are numbered starting with 1.

Warnings:

•Be sure that the reading object and the file format are compatible.

•The content of the dielectric function object will be replaced by the data in the file.

VisualBasic example:

Call scout.load_df(1, "c:/temp/df2.dfm")

load_material_from_database (name : string)

This command loads a material from the database into the list of materials. The material is specified by the name parameter which must exactly match an item in the database.

VisualBasic example:

  scout.load_material_from_database ("Si3N4")

load_experiment (n:integer, filename: string, format:integer)

Loads the file specified by filename into the n-th spectrum object, using the file format given by 'format'.

prepare_shutdown

In some cases it is not sufficient just to delete SCOUT as OLE server when you have finished your work. You might get access violation errors and corresponding message dialogs which prevent SCOUT from proper closing. In order to avoid this you should call the method prepare_shutdown as last OLE command before you shutdown the server.

print_fit(i : integer)

Tells SCOUT to print the graphics of spectrum i in the list of spectra. The purpose, of course, is to get information on the fit quality.

VBA example:

scout.print_fit(2)

rename_material (old_name, new_name : string)

Renames the material called old_name to new_name.

report_to_clipboard

Copies the content of the SCOUT report window to the clipboard.

report_to_file(filename:string)

Saves the content of the SCOUT report window to a text file the name of which is the string passed to the method.

save_configuration(filename : string)

Saves the complete SCOUT configuration to the specified file.

Warning: An already existing file it will be overwritten without warning.

VisualBasic example:

scout.save_configuration ("c:/temp/fit_sample1.sc2")

save_df(n : integer; filename : string)

Saves the n-th dielectric function to the specified file. The entries in the list of dielectric functions are numbered starting with 1.

Warning: An already existing file it will be overwritten without warning.

VisualBasic example:

Call scout.save_df(2, "c:/temp/df2.dfm")

scout_normal

Show the program window like a normal window which can be hidden by other windows.

scout_on_top

Show the program window on top of other windows on the screen.

searchfiles(dir,pattern : string)

Executes a dialog to select multiple files that can be used afterwards for SCOUT actions.

In 'dir' you can provide the intial path for the search, 'pattern' specifies a filename search pattern.

The selected filenames can be used afterwards using the functions 'foundfiles' and 'found_filename'.

send_message(the_text : string)

Use this command to send a message to SCOUT. SCOUT will respond to the message with an action corresponding to the message.

Up to now this feature is not used.

set_bottom_halfspace_material (i : integer; name : string)

Assigns the material called name to the bottom halfspace of the i-th layer stack.

Stacks are counted 1, 2, 3, ...

A material called name must be in the list of materials. If it is not you can use the command load_material_from_database(name) in order to load the material from the database into the list of materials.

set_global_range(min, max : real number, no_points : integer, spectral_unit : string) )

Use this command to change the range of all spectral objects such as dielectric functions and computed spectra in one step. SCOUT reacts as if you had executed the Range command in the main window.

The new spectral range is defined by the mininum value min, the maximum value max, the number of data points no_points and the spectral unit. The spectral unit must be specified as one of the following strings:

 String transmitted                Spectral unit used by SCOUT

 'cm^-1^' or '1/cm'        >        wavenumbers

 'nm'                        >        nanometers

 '|m|m' or 'micron'                >        microns

 'eV'                        >        electron volts

 'THz'                        >        THz

set_spectrum_simulation_range(n : integer; min, mix : real number; no_points : integer; spectral_unit : string)

Use this command to change the range of one of the simulated spectra. SCOUT reacts as if you had executed the Range command in the window of the n-th spectrum. Spectra are counted starting with 1, i.e. 1, 2, 3 , ...

The new spectral range is defined by the mininum value min, the maximum value max, the number of data points no_points and the spectral unit. The spectral unit must be specified as one of the following strings:

 String transmitted                Spectral unit used by SCOUT

 'cm^-1^' or '1/cm'        >        wavenumbers

 'nm'                        >        nanometers

 '|m|m' or 'micron'                >        microns

 'eV'                        >        electron volts

 'THz'                        >        THz

set_spectrum_x_axis(i : integer; min, max, tick_spacing : float)

Use this command to set the range of the x-axis of the i-th spectrum (counted 1,2,3,...): min will be the minimum, max the maximum, and tick_spacing will be used as interval between the 'ticks'.

set_spectrum_y_axis(i : integer; min, max, tick_spacing : float)

Use this command to set the range of the y-axis of the i-th spectrum (counted 1,2,3,...): min will be the minimum, max the maximum, and tick_spacing will be used as interval between the 'ticks'.

set_top_halfspace_material (i : integer; name : string)

Assigns the material called name to the top halfspace of the i-th layer stack.  Stacks are counted 1, 2, 3, ...

A material called name must be in the list of materials. If it is not you can use the command load_material_from_database(name) in order to load the material from the database into the list of materials.

show

Displays the SCOUT window.

show_statusbar

Shows the status bar.

show_maximized

Shows the main window maximized on the screen.

show_minimized

Minimizes the main window on the screen.

show_normal

Shows the window in its normal position and size, i.e. not maximized and not minimized.

smooth_data(n_spec : integer; wn_min, wn_max : real number, nt:integer)

Smoothing of the experimental data using 3-point-averaging.

Parameters:

n_spec:                number of the spectrum in the spectrum list

wn_min:        wavenumber minimum of the spectral range

wn_max:        wavenumber maximum of the spectral range

nt:                number of smoothing iterations

smooth_data_like_batch_control

Smooth the experimental data using the settings of the batch control window for each spectrum.

spectrum_to_clipboard (n:integer)

Tells the n-th spectrum object to copy its spectrum to the clipboard.

start

Starts the parameter fit using the current configuration.

stop

Stops any fitting activity.

update_data

Forces the re-computation of the SCOUT_98 configuration. This command should be used after parameter changes to calculate updated spectra and fit deviation.

update_plot

Forces the re-drawing of the SCOUT_98 configuration.

view_to_clipboard_wmf

Sends the current view as metafile (vector graphics) to the clipboard.

view_to_clipboard_wmp

Sends the current view as bitmap to the clipboard.

Introduction

This example shows how SCOUT work can be done using Visual Basic for Applications (VBA) and Excel tables. The required tables, VBA programs and menu entries are stored in the Excel file Scout.xls .

The following ingredients are needed and described:

•A set of pre-defined tables

•A set of VBA procedures (also called 'macros' in this document)

•Excel menu items to execute the VBA routines

Table structure

The Excel files prepared for SCOUT control contain the following sheets:

Fit strategy

This table stores information on the SCOUT_98 configuration file which contains the optical modelling for the particular problem. The SCOUT configuration covers the optical constants of all materials, the layer structure, the spectra that are computed and fitted and the list of fit parameters. A convenient way to enter the configuration filename is to select the cell and the activate the menu item 'Get arbitrary filename' from the SCOUT menu in Excel.

In addition a list of fit parameter sets is specified which defines the 'fit strategy' followed during the automatic batch processing of many input spectra (see below). The names of the fit parameter set files can be entered the same way as the configuration file.

A simple example of a 'Fit strategy' table (only one fit parameter set is used in the batch fit process) is given below:

Pre-fit parameters

The success and the speed of an automatic fit depends strongly on the starting values of the parameters. In cases where there are large differences between successive spectra it may be helpful to do a comparison to a limited set of typical parameter sets before the actual fitting work starts. The most successful set of parameters can then be used as the starting set for the automatic fit.

On the 'Pre-fit parameter' sheet you can define an arbitrary number of parameter sets. The corresponding batch fit macro looks up the entries in the row labeled as 'description' starting in the column named 'Set 1'. The parameters specified below 'Set 1' are tried first. The fit deviation is entered in the row named 'deviation'. If there is an entry to the right of the cell 'Set 1' (as is the case here since we have the 'Set 2' label) the next set is tested. This is continued until the first empty description cell is found. Of course, the best fit parameter set is loaded as starting set in the subsequent optimization procedure.

For the pre-fit a certain fit parameter set is used which must be specified in the second row of the sheet. This fit parameter set must match the selection of fit parameters in the starting SCOUT configuration. Usually this set contains all possible fit parameters. When the SCOUT configuration is loaded the fit parameter names are entered into the 'pre-fit parameters' sheet.

Results

This sheet is used for the batch processing of a series of input spectra. An example is given below:

When the SCOUT configuration is loaded several entries are made in the 'Results' sheet which help you to fill in the spectrum filenames. The names of the simulated spectra are put to the right of the cell 'Files'. In addition the fit parameter names are listed below the spectrum names. During the batch process the resulting fit parameter values for the individual samples will be filled into the table.

In the given example two spectra (transmittance and reflectance) are computed in SCOUT. Hence you must specify the corresponding number of spectrum filenames for the batch mode. All spectra must be in one and the same directory which is given in the cell to the right of 'Pathname'. To enter a pathname you can select the cell and activate the menu item 'Get spectrum path'. In the following file import dialog you have to select any file in the desired directory and leave the dialog by 'Ok'. You will observe that the filename is skipped and only the pathname is filled in the cell.

In addition you must also specify the file format to be used by SCOUT for import actions. The cell to the right of 'Format' contains a number which specifies the format according to the following assignments:

    Format        File format        

    1        Standard        

    2        xy-format        

    3        JCAMP        

    4        SpectraCalc        

    5        Perkin-Elmer        

    6        Zeiss        

    7        Opus        

Finally you have to specify all the filenames that are to be 'fitted'. In the shown example the first set of spectra is the transmission spectrum sso1142.sp in combination with the reflectance file sso1156.sp. Both are in the directory g:\theiss\solutions\am4_file\ and are stored in Perkin-Elmer format. To enter files conveniently you can use the 'Get spectrum filename' menu command and select the wanted file in the subsequent dialog. The path is subtracted and only the pure filename is entered in the cell that is presently selected.

SCOUT status

The SCOUT status sheet is used to check the present SCOUT configuration. Activating the menu command 'Show status' fills in the present list of dielectric functions and the list of the computed spectra:

VBA macros

This sheet contains the VBA macros which are explained in detail below.

Of course you are invited to program your own VBA macros to customize Excel to your needs. The SCOUT OLE automation commands and properties that you can use are explained in a separate document.

SCOUT menu items in Exel

The Excel files add to Excel a menu called 'SCOUT' which has the following subitems:

Creeate SCOUT

Use this command to start SCOUT as OLE automation server running invisibly in the back. Immediately after startup SCOUT loads the configuration specified on the 'fit strategy' page.

Start fit

Starts the SCOUT fit activity as if you had pressed the Start button in SCOUT.

Stop fit

Stops the current fit activity of SCOUT as if you had pressed the Stop button in SCOUT.

Delete SCOUT

This removes SCOUT from memory. SCOUT is automatically shut down if you quit Excel.

Start batch fit

Starts the batch fit macro which processes all spectra in the input list (located on the 'Results' page).

No pre-fit is done which is recommendable if the input spectra do not differ from each other very much.

Start batch fit using pre-fit

This command starts the batch fit macro with pre-fit activity. This is recommended if the input spectra may differ significantly from each other.

Show status

With this command you can create entries on the SCOUT status page giving information on the SCOUT model. A list with the names of the used dielectric functions is given. The names of the computed spectra are also shown. This information is useful if you want to write macros which have to refer to certain dielectric functions (for example, to extract refractive indices or absorption coefficients).

Enter fit parameters at cursor

A (vertical) list of the current values of the SCOUT fit parameters is created starting at the current cursor position in Excel. This command can be used to manually create collections of fit results. This command can also be useful for the creation of new pre-fit parameter sets.

Restore fit results from cursor column

After a batch fit you may want to inspect visually the fitting result for a certain sample. To do this, simply place the cursor on the 'Results' page in the column that contains the fit parameters obtained for that sample and activiate the 'Restore ...' command. ...

Get arbitrary filename

This command is used to enter a filename in the active cell. It activates a standard file import dialog. If the dialog does not appear on the screen it might be hidden by some other windows. You can use the Alt-Tab key combination to bring it to the front. The filename selected in the dialog is entered in the cell after the dialog is closed.

Get spectrum filename

This command is used to select a file that holds a spectrum for the batch process. It is useful only on the 'Results' sheet. After you selected a filename Excel  subtracts the path specified in the cell 'Pathname' and returns the pure filename only. During the batch mode this filename is composed with the path given set in the 'Pathname' cell to result in the complete filename for data import.

Get spectrum path

This command is used to fill in a pathname in the cell 'Pathname'. Select this cell and activate the 'Get spectrum path' menu item. In the following file import dialog pick any file in the directory that holds your batch process input spectra. After the dialog Excel subtracts the pure filename and returns to the 'Pathname' cell only the path. During the batch mode this path is used to find the experimental spectra.

Overview

The following macros are explained in this section:

... Coming sooner or later ...

Application example

...coming sooner or later ...

Using SCOUT in LabView

You must have object generation 3.60 for the mechanism described below!

If you develop automation solutions with LabView you can access SCOUT in your LabView projects. A typical application would be a scanning spectrometer system, used to obtain one- or two-dimensional thickness profiles. If LabView is used to control the mechanical motion and the data acquisition of the spectrometer hardware, it would be advantageous to control SCOUT by LabView as well. After a measurement, LabView could pass the recorded spectra to SCOUT, start the thickness determination, and pick-up the results in order to generate appropriate operator displays.

Here is how you get access to SCOUT within LabView:

oGenerate a control of type 'Automation refnum'

oRight-click on the control and select the command 'Select ActiveX class/Browse'

oA dialog for the selection of a type library opens

oSearch for the type library 'SCOUT library' in the dropdown list

oIf you do not find it click on the 'Browse' button to the right and select the SCOUT program file scout.exe (in order to see the program file you may have to set the file type to 'All files (*.*)' in the file dialog)

oThe dialog should now look like this:

oCheck the ckeckbox 'Show Creatable Objects Only' and select the only remaining line 'scoutole (scout.scoutole)':

oThen press OK to leave this dialog.

oIn the LabView Block diagram, right-click the new object and select the command 'ActiveX palette' to generate a new object of type 'Automation open'. Connect the 2 objects like shown below:

oFrom now on you can use all OLE properties and procedures of SCOUT. In order to check if you can really access SCOUT commands generate a small test sequence: Show SCOUT on the screen ('show' command), execute a file selection dialog (by calling the property 'a_filename') and finally call the routine 'prepare_shutdown' to prepare the death of the SCOUT server.

Before you do any real work in LabView, please test if you can get this sequence to execute properly.

Articles related to optical spectroscopy

[Brendel 1990A]

R.Brendel, Appl. Phys. A50, 587 (1990)

[Bergman 1978 A]

D.Bergman, Phys. Rep. C 43 (1978), 377

[Bruggeman 1935A]

D.A.G. Bruggeman, Ann. Phys. 24 (1935), 636

[Campi 1988A]

D.Campi, C. Coriasso: 'Prediction of optical properties of amorphous tetrahedrally bonded materials', J. Appl. Phys. 64 (8) (1988), 4128-4134

[Eickhoff 1992A]        

T.Eickhoff, P.Grosse, S.Henkel, W.Theiß: 'Determination of the effective dielectric function of silver powders produced by inert gas evaporation', Z.Phys.B. - Condensed Matter 88 (1992), 17-23

[Evenschor 1990A]        

M.Evenschor, P.Grosse, W.Theiß, 'Optics of two-phase composites', Vibrational Spectroscopy 1 (1990), 173-177

[Gervais 1974]

F.Gervais, B.Piriou, J.Phys.C: Solid State Phys., Vol. 7 (1974), 2374

[Grosse 1991A]

P.Grosse, 'Characterization of Thin Solid Films and Surfaces by Infrared Spectroscopy', in Festkörperprobleme 31, ed. by R. Helbig (Vieweg, Braunschweig, Wiesbaden 1991), 77-97

[Harbecke 1986A]        

B.Harbecke, 'Coherent and Incoherent Reflection and Transmission of Multilayer Structures', Appl. Phys. B 39 (1986), 165-170

[Jellison 1998A]

G.E.Jellison, Jr., 'Spectroscopic ellipsometry data analysis: measured versus calculated quantities', Thin Solid Films 313-314 (1998), 33-39

[Kim 1992]

C.C. Kim, J.W. Garland, H. Abad, P.M. Raccah, Phys. Rev. B 45 (20) 1992, 11749-11767

[Looyenga]

H.Looyenga, Physica 31 (1965), 401

[Maxwell Garnett 1904A]

J.C.Maxwell Garnett, Philos. Trans. R. Soc. London 203 (1904), 385

[O'Leary 1997A]

S.K.O'Leary, S.R.Johnson, P.K.Lim, J.Appl. Phys. Vol. 82, No. 7 (1997), 3334-3340

[Park 1997]

J.H.Park, Y.J.Park, Y.M.Hwang ,'Design and fabrication of dichroic mirrors for color separation and recombination of Kr-Ar laser (white laser)' ,  SPIE Vol. 3133 (1997), 288

[Parikh 1992A]        

A.N.Parikh, D.L.Allara: 'Quantitative determination of molecular structure in multilayered thin films of biaxial and lower symmetry from photon spectroscopies. I.Reflection infrared vibrational spectroscopy', J.Chem.Phys 96 (2) (1992), 927-945

[Press 1992]        

W.H.Press, S.A.Teukolsky, W.T.Vettering, B.P.Flannery, 'Numerical recipes in C', Cambridge University Press, New York, 1992; 408-412

[Sturm 1991A]        

J.Sturm, P.Grosse, W.Theiß: 'Effective dielectric functions of samples obtained by evaporation of alkali halides', Z.Phys.D. - Atoms, Molecules and Clusters 20 (1991), 341-343

[Sturm 1991B]        

J.Sturm, P.Grosse, W.Theiß: 'Effective dielectric functions of alkali halide composites and their spectral representation', Z.Phys.B. - Condensed Matter 83 (1991), 361-365

[Theiss 1994A]

W.Theiß, 'The Use of Effective Medium Theories in Optical Spectroscopy', in Festkörperprobleme 33, ed. by R. Helbig (Vieweg, Braunschweig, Wiesbaden 1994), 149-176

[Theiss 1994B]

W.Theiß, S.Henkel, M.Arntzen, "Connecting microscopic and macroscopic properties of porous media: choosing appropriate effective medium concepts", Thin Solid Films 255 (1995), 177-180

[Theiss 1995A]

W.Theiß, M.Wernke, V.Offermann, "Depth profiling of porous silicon layers by ATR spectroscopy", Thin Solid Films 255 (1995), 181-184

[Theiss 1995B]

W.Theiß, S.Henkel, M.Arntzen, "Connecting microscopic and macroscopic properties of porous media: choosing appropriate effective medium concepts", Thin Solid Films 255 (1995), 177-180

[Theiss 1997A]

W.Theiß, "Optical properties of porous silicon", Surface Science Reports 29, No. 3/4 (1997), 91-192

[Valk 1998A]

J.Valk, S.van Enckevort, W.Theiß, "Infrared analysis of thin films deposited on rough and curved substrates", AIP conference proceedings 430 (1998), 647