Add Si vs scattering order
This commit is contained in:
		
							parent
							
								
									7f33daf856
								
							
						
					
					
						commit
						d00c537f30
					
				|  | @ -0,0 +1,70 @@ | |||
| # coding: utf8 | ||||
| 
 | ||||
| import numpy as np | ||||
| from ase.build import bulk | ||||
| 
 | ||||
| from msspec.calculator import MSSPEC, XRaySource | ||||
| from msspec.iodata import Data | ||||
| from msspec.utils import hemispherical_cluster, get_atom_index | ||||
| 
 | ||||
| 
 | ||||
| # Create the cluster | ||||
| a = 5.43 | ||||
| Si = bulk('Si', a=a, cubic=True) | ||||
| cluster = hemispherical_cluster(Si, | ||||
|                                 diameter=30, planes=4, | ||||
|                                 emitter_plane=3, | ||||
|                                 shape = 'cylindrical', | ||||
|                                 ) | ||||
| for atom in cluster: | ||||
|     atom.set('mean_square_vibration', 0.006) | ||||
|     atom.set('mt_radius', 1.1) | ||||
| cluster.emitter = get_atom_index(cluster, 0, 0, 0) | ||||
| 
 | ||||
| # Create a calculator and set parameters | ||||
| calc = MSSPEC(spectroscopy='PED', algorithm='expansion') | ||||
| 
 | ||||
| calc.source_parameters.energy = XRaySource.AL_KALPHA | ||||
| calc.source_parameters.theta  = -54.7 | ||||
| calc.source_parameters.phi    = 90 | ||||
| calc.spectroscopy_parameters.final_state = 1 | ||||
| 
 | ||||
| calc.tmatrix_parameters.tl_threshold = 1e-4 | ||||
| calc.calculation_parameters.vibrational_damping = 'averaged_tl' | ||||
| calc.calculation_parameters.RA_cutoff = 2 | ||||
| 
 | ||||
| my_filters = ('forward_scattering', 'distance_cutoff') | ||||
| calc.calculation_parameters.path_filtering = my_filters | ||||
| calc.calculation_parameters.distance = 30 | ||||
| calc.calculation_parameters.off_cone_events = 0 | ||||
| [a.set('forward_angle', 40) for a in cluster] | ||||
| 
 | ||||
| calc.set_atoms(cluster) | ||||
| 
 | ||||
| # Compute and add previous data for comparison | ||||
| data = None | ||||
| for i in range(1,4): | ||||
|     calc.calculation_parameters.scattering_order = i | ||||
|     data = calc.get_theta_scan(level='2p', | ||||
|                                 theta=np.arange(-30., 80., 0.5), | ||||
|                                 phi=0, | ||||
|                                 kinetic_energy=1382.28, data=data) | ||||
| 
 | ||||
| # Put all orders on the same view | ||||
| dset = data[0] | ||||
| dset.add_columns(cs2=data[1].cross_section) | ||||
| dset.add_columns(cs3=data[2].cross_section) | ||||
| view1 = dset.views[0] | ||||
| view1.select('theta', 'cross_section', index=0, legend="Scattering order 1") | ||||
| view1.select('theta', 'cs2', legend="Scattering order 2") | ||||
| view1.select('theta', 'cs3', legend="Scattering order 3") | ||||
| 
 | ||||
| 
 | ||||
| no_filters = Data.load('path_filtering.hdf5') | ||||
| dset.add_columns(no_filters=no_filters[0].cross_section) | ||||
| view2 = dset.add_view('comparison', **view1._plotopts) | ||||
| view2._plotopts['legend'] = [] | ||||
| view2.select('theta', 'cs3', legend="With path filtering") | ||||
| view2.select('theta', 'no_filters', legend="Without path filtering") | ||||
| 
 | ||||
| data.view() | ||||
		Loading…
	
		Reference in New Issue