Short history

The development of EFFI [1] started more than 20 years ago from the Mossbauer program called MOSFUN developed by Müller [2] which already used ideas realized in the Mossbauer program SIRIUS [3]. The structure was changed step by step in order to get the different parts of code and routines more and more independent. To that time memory and frequency of the computers (even main frames) imposed many restrictions on the code. Used to the programming technique, developed to that time, even later on, when memory and computing time allowed for a lot of 'freedom' in writing code, the programmers background cannot be concealed. So the language is almost everywhere Fortran77, later fortran90 etc. C-language was unavoidable for X-window programming. Those subroutines were originally written by A. Vef for MOSFUN and other useful programs in the laboratory of P. Gütlich [4].
The program EFFI was used in all stages of development mainly for fitting Mossbauer spectra (in the Mainz group [4]) and later synchrotron nuclear scattering (in the Budapest group [5]). On one hand the usage of the program provided continuous testing on the other hand radical changes were not well accepted. This way the structure has developed as a compromise between technical requirements and those of users persisting on structures and patterns of data and parameter files. A substantial change of the code, the present EFFI, which can be considered as a dead-end street of an evolutional process, would be a task beyond the authors cababilities, especially the time put at his disposal. Therefore it was decided to build a new and 'modern' EFFI from scratch in the frame of the DYNASYNC project(2005) at the research institute KFKI in Budapest. Modern also means an up-to-date user interface avoiding typed commands but clicking the mouse. The new EFFI is named FitSuite . The theories implemented in EFFI that time were taken over to FitSuite. Several features of EFFI are not compatible with the user interface of FitSuite.
FitSuite follows a more general concept without restrictions into which EFFI developed by its history. However, these restrictions are not of any concern for theories so far implemented.
The two programmers have always been involved in different physical problems. So the Neutron scattering theory have been futher developed in FitSuite and Mossbauer and Synchrotron scattering in EFFI. There is a manual for FitSuite. The concept of a help command accessible for information at any situation in the command window has been extended in EFFI.

'Philosophy' and Structure of EFFI
The structure of EFFI was originally designed for Mössbauer experiments. A standard Mössbauer experiment of source, absorber and detector may need theories for several sites of the radioctive nuclei (say 57Co) in the source, of 57Fe sites in the absorber and also in the detector window (in earlier times iron content in Be-windows lead to resonance effects of the order of 0.1%). The absorber itself may consist of a set of absorbers, the first one working as a polarizer and the last one as an analyser of the polarisation of the radiation. If the relative velocity between source and detector is zero (moving absorber), the detector cannot be treated as a last absorber, since only absortion at zero velocity is effective. This scenario determined the structure of EFFI.
EFFI can handle 3 devices (here source,absorber,detector), each device may have several modules (here layers) and each module several components (here nuclear sites). The requirements of scattering experiments on multilayer samples (synchrotron radiation, neutrons) meets EFFI with 48 layers and in total 224 sites. The number of layers and sites depends on array dimensions (fixed in Fortran77), the number of maximum 3 devices is fixed and determines in many parts the code.
The essential feature of EFFI is the possibility to select theories on each level in order to model experimental setups and the physics of the sample. The following decision tree offered by EFFI shall give an idea:

Mossbauer synchrotron stroboscopy
Synchrotron source
[Mossbauer radioactive source]
Neutron source

[Mossbauer transmission_vA]
Mossbauer transmission_vB
Mossbauer transmission_vC
Mossbauer transmission_vD
Mossbauer reemission_vA
Mossbauer reemission_vB

After this decission for a theory of a Mossbauer transmission experiment Effi may ask on 4 levels for theories (or even trees of theories): Level 0 (global theory), level 1 (device), 2 (module),and 3 (component).

The geometry of the Mossbauer transmission experiment belongs to the global theory, which handels the results of the devices. For this example EFFI asks for:

[source-absorber distance=large]
cosine smearing & aperture effect
extended source
misalignment: point source-absorber-detector

This example has no theories on level 1 and 2. The source device is restricted (by the programmer - not by EFFI) to one module/layer. Each layer is oriented in space and exposed to an external field. Such parameters are offered and if they are not taken EFFI put them to zero. At the component level for each site a theory tree is presented.

[scalar refraction index (static,sad)]
scalar refraction index (dynamic,sad-interpol.)
scalar refraction index (dynamic,sad)
2x2 refraction index (static,sad)
2x2 refraction index (static,f_anisotrop,sad).

In the case of a scalar refraction index of the sample (a powder sample without polarisation) 6 simple theories are offered:.

[singlet: width, position and intensity]
doublet: width, position and intensity
sextet : width, position and intensity
Hi,DEQ,powder average
Hi,DEQ, width(1-8)
Hi,DEQ, intensity(1-8),width(1-8)

(this choice corresponds to a single line source or absorber).
Each of these 'theories' could have an own decission tree (not the case here). Effi allows up to 8 recursive branches. It should also be mentioned that the decission for each device, module, component can be a different one. The tree structure guarantees that all theories arriving at a special branch have available the full structure of this branch down to all its levels.

Simultaneous fit

Simultaneous fit of several data sets is achieved by correlation of parameters of theories defined somewhere in the decission tree. EFFI provides a group of commands to correlate parameters with no restriction to the meaning/type of parameters. Principally the user can produce a lot of nonsense. The correlation is obtained by transformation matrices which were introduced by L. Pócs in the late sixties. The use and handling is described in the help files of EFFI.


The program runs under LINUX and is not portable to WINDOWS. Till version 5.n.n the distribution of EFFI follows an unusual procedure which leaves to the user to compile the source code of the theories. The theories are written mainly in Fortran and the plot routines for X-Window in C-language. The EFFI part was hidden by the binary code and collected in an archive (static library named areffi.a). The last version which can be translated with the GNU compiler g77 is effi_3.3.0. The fortran files have the extension .f. The modern GNU compiler gfortran translates the syntax of fortran90 and higher which have the extension .f90.
There are several README files, the one for detailed instructions for the compilation procedure and linking are found in README.1 which follows the syntax of the command man: man ./README.1 (see README). There is also an install script which does the job.
Since version 6.0.0 the complete source code is compiled by the install script which in turn calls the script compile for areffi.a.
This procedure should give the user a closer contact to the theories (something may be changed in order to look for the effect or printouts are put in). The use of the debugger makes visible what theories do in different steps. This way the routines may be improved, such that there is a chance for the whole program to survive.


After translation of the program several examples can be inspected. They are found in subdirectories of effi/project. effi/project/Mossbauer_source containes some examples of Mossbauer measurements. The directories Au197/, Eu151/, Eu153/, Ni61/, Gd155/, Gd156/, Sb121/, hsls_tr/, calibration/, mtz/, collins/, mohrsalt/, relaxation/, spinham/ contain README files and measurements (partly taken from the literature) simultaneously fitted, which demonstrate features of effi. A simultaneous fit of 19 spectra of different orientations of a single crystal can be found in the almandine and mohrsalt directories. The spectra of almandine have been fitted with 2 inequivalent sites in a crystal of cubic symmetry split by quadrupole interaction. The 2x19 second rank tensors are correlated by the transformation matrices, a good example to see how the transformation matrices work.

[1] H. Spiering, L. Deak and L. Bottyan, Hyperfine Interactions 125, 197--204 (2000).
[2] E.W. Müller, MOSFUN, Internal report, Anorganische Chemie und Analytische Chemie, Johannes Gutenberg-Universität, Mainz, 1982.
[3] K.Kulcsár, D.L. Nagy and L. Pócs, A complete package of programs for the evaluation of Mössbauer and gamma spectra, in Proc. Conf. Mössbauer Spectrometry, Dresden, p. 594, 1971.
[4] Emeritus Prof. P. Gütlich , Institute für Anorganische Chemie und Analytische Chemie, Johannes Gutenberg-Universität, Mainz
[5] Prof. D.L. Nagy , KFKI Research Institute for Particle and Nuclear Physics Department of Nuclear Physics
(contact L. Deak)