@title: IR/Vis/UV transmission curve fit for multilayers @author: Ugo Lo Cicero @email: ugo.locicero@inaf.it @version: 3.2 @date: 31/01/2023 @coding: Python 3.9.2 @summary: This software was developed to fit many-parameters IR/Vis/UV transmission curve models of multilayers to measured data. It implements a modified Forouhi2019 model for the complex refractive index of materials, with revised fitting parameters that improve the stability of the fitting and the manual search of initial values. A matrix calculation of the transmission takes in account the interference effects beteween the layers. The implemented GUI allows to easily explore the initial parameters and to fine-tune them, as well as adding model terms. @features: - Implement modified Forouhi2019 model for complex refractive index (revised fitting parameters that improve the stability of the fitting and the manual search of initial values). - It is possible to load external data describing the refractive index of a material. - The GUI allows to view a plot with the measured transmission curve, the model calculated with the initial parameters, and the one obtained with the fit. A subplot shows the residuals. An optional plot shows the real and imaginary parts of the refractive index of a specific material. - A button allows to swich between a view with abscissa in energy (eV) or wavelenght (nm). - The GUI interface implements, for each fit parameter, input text boxes to specify minimum, maximum and the value, and a slidebar to explore (with realtime updates of the plots) the effects of the parameter. - A checkbox allows to set a parameter as free during the fitting, or to fix it. - Clicking on a parameter label shows a vertical line on the plot indicating the peak energy of the corresponding model term. - The software is generalized so that it is possible to easily add an arbitrary number of model terms. - It is possible to save to disk and load parameter sets. - It is possible to add additional model terms from the GUI. - Optimized with numba module to compile the calculation functions for better performances. @dependencies: numpy, lmfit, math, traceback, winsound, matplotlib, PyQt5, numba