# HREELS data handling and simulation

Set of data analysis routines for surface vibrational spectroscopy based on a Delta05 spectrometer with software from VSI or SPECS. 

Simple data reading and plotting routines are provided, but also advanced routines for in depth analysis.
A fast data browser as graphical user interface is included as **ViewHREELS.py**. It can also take command line arguments.

Additional a python interface to a Fortran-based calculation of full HREEL spectra is provided in **class lambin** (in **calcHREELS20.py**). Note that this part requires a local compilation (via "f2py3 -c -m myEels20 myEels20.f90") from the Fortran90 files. Only for the Linux-based python version 3.8, there are complied files provided. For details see below.

Most of the routines are within the **class HREELS** (HREELS.py). A simple command line program is "showHREELS.py", which reads one data file and plots the spectrum with a second amplified trace.

    Usage:  >python showHREELS.py filename [factor wavenumber]

        E.g.: python showHREELS.py H9H03 100 53 

More general usage:

Read dataset by calling the HREELS class:
    **data1 = HREELS('filename', datapath='datapath')**        # Here you can omit the extension '.gph'
                                                    # The second argument is optional
                                                    
    This will assign/calculate the following properties:
    
    data1.filename
    data1.datapath
    data1.startTime
    data1.stopTime
    data1.totalTime
    data1.timePerChannel
    data1.numberOfSegments
    data1.energy    # Electron kinetic energy
    data1.filament  # Filament current in Ampere
    data1.segments  # list of segment info
    data1.data      # [(-100.1021616, 259.5), (-98.5374352, 264.5), ...]
    data1.xdata
    data1.ydata
    data1.maxIntensity  # Count rate of elastic peak
    data1.resolution    # width of elastic peak

The following methods are defined within the class:

    info()      :   Print information about the spectrum
    plot()      :   Draws the spectrum. Optional arguments are:
                    (xmin=None, xmax=None, factor=1, label='x', normalized=False, color="b-",marker=True)

    plotInfoAmp()   Draws spectrum together with amplified trace.
    pickPeak()  :   Select peak by mouse cursor. The call of figure() is required before.
    selectData():   Returns the data between wavenumbers x1 and x2
    findIndex(lossenergy): Returns the data array index for a given energy loss
    setMarker(x, y, ymin=0, size=None): Sets vertical marker with text label 
    plotWaterFall(...):
        

# calcHREELS20

These routines are based on the publication "Computation of the surface electron-energy-loss spectrum in specular geometry for an arbitrary plane-stratified medium" by P. Lambin, J.-P. Vigneron, and A. A. Lucas, in the Journal "Computer Physics Communications 60, 351-64(1990)".

It allows to handle a heterostructure of different materials in a easy way. The code is modified to comply with Fortran90 and wraped to python functions. See the example in Examples/calcHREELS1.py for NiO(001).

Complex calculations for perovskite oxides are provided in the examples calcHREELS2.py and calcHREELS3.py.


# dielectrics20

These routines allow to model the dielectric properties of materials described by different oscillators and Drude responses. Quantities as real and imaginary part of the dielectric function, optical conductivity, IR reflectivity, and surface loss are calculated. The sum rules of optical conductivity can be analyzed.