Metadata-Version: 2.1
Name: surfsci
Version: 0.1.7
Summary: A suite of tools for handling surface science related data
Home-page: https://gitlab.com/ddkn/surfsci
Author: David Kalliecharan
Author-email: david@david.science
License: ISC
Description: # surfsci
        
        A suite of tools for handling surface science related data. This project will
        contain tools for the following:
        
        * X-ray photoelectron spectroscopy (XPS)
        
        ## Future
        
        * Docmuentation (priority)
        
        ## X-ray Photonelectron Spectroscopy
        
        ### Example
        
        An example analyzing a Ge peak fit within CasaXPS.
        
        	from surfsci import xps
        
        	# Shortcut for the XPS machine at Dalhousie
        	# xps_mach = 'Dalhousie'
        	# mach = xps.mach_param[xps_mach]
        	mach = {
        		'coef' : [0.9033, -4.0724, 5.0677, 1.1066],
        		'scale'     : 0.01,
        		'work_func' : 4.6,
        	}
        	hv = xps.photon_energy['Al']
        
        	# Pass energy [eV], found from XPS operator
        	pe = 30
        
        	sfwagner_Ge = xps.sf.Ge['3d'].area
        
        	data = xps.parser.CasaXPS('Ge_example.csv')
        
        	# Labels defined by user in CasaXPS fits
        	pk_lbl = 'Ge 3d'
        	be = data.binding_energy(pk_lbl)
        	area = data.area(pk_lbl)
        
        	ke = xps.kinetic_energy(be, hv, mach['work_func'])
        
        	t_fn = xps.transmission(ke, pe, mach['coef'], mach['scale'])
        	t_fn_wagner = 1/ke # Proportional to 1/KE
        
        	sf_mach = xps.sf_machine(sfwagner_Ge, t_fn, t_fn_wagner)
        
        	pk_corr = xps.peak_correction(area, sf_mach)
        
        	# NOTE Use the surfsci.xps.XPSPeak(...) helper for convienence
        	# analyzed_Ge = xps.XPSPeak(pk_lbl, be, area, sfwagner_Ge, hv, pe, mach)
        
        	# NOTE Returns pandas.DataFrame with all parameters calculated.
        	# The user can also query parameters individually
        	# df = analyzed_Ge.df()
        
        ### Matrix Factor corrections
        
        If using multple elements within a matrix (e.g. an alloy), you can utilize the
        `surfsci.xps.matrix_factor` function. You require the inelastic mean free path
        of electron scattering (*imfp*) of both species in bulk and the density, as
        well as the *imfp* of the matrix at the measured kinetic energies of both
        elements. For example, if you have two corrected peaks: `pk_Mn_corr`, and
        `pk_Ge_corr`. The *imfp* can be calculated using the TPP-2M equation for
        inelastic mean free path, found in the following reference:
        
        S. Tanuma, C. J. Powel, D. R. Penn, *Surf. Interf. Anal.*, Vol 21, 165 (1994)
        
        
        	from surfsci import xps
        	# pk_Mn_corr and pk_Ge_corr calculated as in the example above
        
        	# a is the kinetic energy used to determine imfp of Ge in Bulk
        	imfp_matrix_a = 21.17
        	imfp_Ge_a = 29.84
        	rho_Ge_a = 5.32
        
        	# b is the kinetic energy used to determine imfp of Mn in Bulk
        	imfp_matrix_b = 14.17
        	imfp_Mn_b = 14.87
        	rho_Mn_b = 7.43
        
        	mat_fact = xps.matrix_factor(imfp_Ge_a, imfp_Mn_b,
        								 mfp_matrix_a, mfp_matrix_b,
        								 rho_Ge_a, rho_Mn_b)
        	relative_pk_Ge_corr = (pk_Ge_corr/pk_Mn_corr)*mat_fact
        
        	# NOTE because Mn is used as the normalizing component we can use its
        	# corrected peak value directly, all other elements require the matrix
        	# factor correction
        	print('Ratios of Mn and Ge in MnGe matrix')
        	print('Mn : {:0.4e}'.format(pk_Mn_corr))
        	print('Ge : {:0.4e}'.format(relative_pk_Ge_corr))
        
        ### sfwagner.{db,py}: Empirically derived set of atomic sensitivity factors for XPS
        
        The data in Appendix 5 is reproduced and provided here for non-profit use with
        permission of the publisher John Wiley & Sons Ltd.
        
        "Practical Surface Analysis by Auger and X-ray Photoelectron Spectroscopy",
        D. Briggs and M. P. Seah,
        Appendix 5, p511-514,
        Published by J. Wiley and Sons in 1983, ISBN 0-471-26279
        
        Copyright (c) 1983 by John Wiley & Sons Ltd.
        
        The original set of data first appeared in the following resource:
        C. D. Wagner, L. E. Davis, M. V. Zeller, J. A. Taylor, R. M. Raymond and L. H. Gale,
        Surf. Interface Anal., 3. 211 (1981)
        
        Any use of this data must include the citations above in any work.
        
        ## Electron Inelastic Mean Free Path (IMFP)
        Electron IMFP can be calculated from using the Tanuma, Powel, Penn modified
        (TPP-2M) equation derived from equations (3), (4b,c,d,e) and (8) in the
        following reference:
        
        S. Tanuma, C. J. Powel, D. R. Penn, *Surf. Interf. Anal.*, Vol 21, 165 (1994)
        
        For convienence the IMFP TPP-2M equation is located in `surfsci.scatter` and
        can be used as such:
        
        	from surfsci import scatter
        
        	# Mn example
        	kinetic_energy = 1000 # Can be calculated from surfsci.xps.kinetic_energy
        
        	rho = 7.43         # [g/cc]
        	Nv = 7             # valence electrons
        	M = 53.938         # atomic mass
        	bandgap_energy = 0 # [eV]
        
        	# Return SI units [m]
        	imfp_Mn = scatter.imfp_TPP2M(kinetic_energy, rho, M, Nv,
        								 bandgap_energy, 'SI')
        
        The value here can be used in the `surfsci.xps.matrix_factor` calculations
        outlined above.
        
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: ISC License (ISCL)
Classifier: Operating System :: OS Independent
Classifier: Topic :: Scientific/Engineering :: Chemistry
Classifier: Topic :: Scientific/Engineering :: Physics
Classifier: Natural Language :: English
Description-Content-Type: text/markdown
