example_01

Download a Jupyter notebook with this example: example_01.ipynb.

Please follow the source comments for description and instructions.

Source Code

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# -*- coding: utf-8 -*-
"""
..  Authors:
    Novimir Antoniuk Pablant <npablant@pppl.gov>


A slightly more complicated example with an x-ray Bragg reflection from a
spherical crystal.

This configuration has a point source, a spherical crystal, and a detector.
"""

import numpy as np
import xicsrt
xicsrt.warn_version('0.8')

# 1.
config = dict()

# 2.
config['general'] = {}
config['general']['number_of_iter'] = 5
config['general']['save_images'] = False

# 3.
config['sources'] = {}
config['sources']['source'] = {}
config['sources']['source']['class_name'] = 'XicsrtSourceDirected'
config['sources']['source']['intensity'] = 1e4
config['sources']['source']['wavelength'] = 3.9492
config['sources']['source']['spread'] = np.radians(10.0)
config['sources']['source']['xsize'] = 0.00
config['sources']['source']['ysize'] = 0.00
config['sources']['source']['zsize'] = 0.00

# 4.
config['optics'] = {}
config['optics']['crystal'] = {}
config['optics']['crystal']['class_name'] = 'XicsrtOpticCrystalSpherical'
config['optics']['crystal']['check_size'] = True
config['optics']['crystal']['origin'] = [0.0, 0.0,         0.80374151]
config['optics']['crystal']['zaxis']  = [0.0, 0.59497864, -0.80374151]
config['optics']['crystal']['xsize']  = 0.2
config['optics']['crystal']['ysize']  = 0.2
config['optics']['crystal']['radius'] = 1.0

# Rocking curve FWHM in radians.
# This is taken from x0h for quartz 1,1,-2,0
# Darwin Curve, sigma: 48.070 urad
# Darwin Curve, pi:    14.043 urad
config['optics']['crystal']['crystal_spacing'] = 2.45676
config['optics']['crystal']['rocking_type'] = 'gaussian'
config['optics']['crystal']['rocking_fwhm'] = 48.070e-6

# 5.
config['optics']['detector'] = {}
config['optics']['detector']['class_name'] = 'XicsrtOpticDetector'
config['optics']['detector']['origin'] = [0.0,  0.76871290, 0.56904832]
config['optics']['detector']['zaxis']  = [0.0, -0.95641806, 0.29200084]
config['optics']['detector']['xsize']  = 0.4
config['optics']['detector']['ysize']  = 0.2

# 6.
results = xicsrt.raytrace(config)