Utility scans with calc_xcrystal

[1]:
%matplotlib inline
import matplotlib
matplotlib.rcParams['figure.dpi'] = 100

try:
    import srxraylib.plot.gol as _gol
    _gol.set_qt = lambda: None
except Exception:
    pass

[2]:
import numpy
from crystalpy.util.calc_xcrystal import calc_xcrystal_angular_scan, calc_xcrystal_energy_scan
from crystalpy.util.calc_xcrystal import calc_xcrystal_alphazachariasen_scan, calc_xcrystal_double_scan

if __name__ == "__main__":
    from srxraylib.plot.gol import set_qt
    set_qt()

    calculation_method = 1
    is_thick = 0
    use_transfer_matrix = 0
    calculation_method = 1  # 0=Zachariasen, 1=Guigay
    calculation_strategy_flag = 0  # 0=mpmath 1=numpy 2=numpy-truncated

    if True:
        calc_xcrystal_angular_scan(material_constants_library_flag=0,
                                   do_plot=True,
                                   calculation_method=calculation_method,
                                   is_thick=is_thick,
                                   use_transfer_matrix=use_transfer_matrix,
                                   calculation_strategy_flag=calculation_strategy_flag,
                                   )

    if True:
        calc_xcrystal_angular_scan(material_constants_library_flag=0,
                                   geometry_type_index=1,
                                   thickness=10e-6,
                                   asymmetry_angle=numpy.radians(90),
                                   do_plot=True,
                                   calculation_method=calculation_method,
                                   is_thick=is_thick,
                                   use_transfer_matrix=use_transfer_matrix,
                                   calculation_strategy_flag=calculation_strategy_flag,
                                   )

        calc_xcrystal_energy_scan(material_constants_library_flag=0,
                                  do_plot=True,
                                  calculation_method=calculation_method,
                                  is_thick=is_thick,
                                  use_transfer_matrix=use_transfer_matrix,
                                  calculation_strategy_flag=calculation_strategy_flag,
                                  )

        calc_xcrystal_alphazachariasen_scan(do_plot=1,
                                            calculation_method=calculation_method,
                                            is_thick=is_thick,
                                            use_transfer_matrix=use_transfer_matrix,
                                            calculation_strategy_flag=calculation_strategy_flag,
                                            )

    if True:
        calc_xcrystal_double_scan(
            material_constants_library_flag=0,
            crystal_name="Si",
            thickness=1e-2,
            miller_h=1,
            miller_k=1,
            miller_l=1,
            asymmetry_angle=0.0,
            energy_min=8000,
            energy_max=8010,
            energy_points=1,
            angle_deviation_min=-100e-6,
            angle_deviation_max=100e-6,
            angle_deviation_points=200,
            angle_center_flag=2, # 0=Absolute angle, 1=Theta Bragg Corrected, 2=Theta Bragg
            calculation_method=calculation_method,
            is_thick=is_thick,
            use_transfer_matrix=use_transfer_matrix,
            geometry_type_index=0,
            do_plot=1,
            calculation_strategy_flag=calculation_strategy_flag,
                                          )

        calc_xcrystal_double_scan(
            material_constants_library_flag=0,
            crystal_name="Si",
            thickness=1e-2,
            miller_h=1,
            miller_k=1,
            miller_l=1,
            asymmetry_angle=0.0,
            energy_min=7990,
            energy_max=8010,
            energy_points=100,
            angle_deviation_min=0,
            angle_deviation_max=100e-6,
            angle_deviation_points=1,
            angle_center_flag=2, # 0=Absolute angle, 1=Theta Bragg Corrected, 2=Theta Bragg
            calculation_method=calculation_method,
            is_thick=is_thick,
            use_transfer_matrix=use_transfer_matrix,
            geometry_type_index=0,
            do_plot=1,
            calculation_strategy_flag=calculation_strategy_flag,
                                          )

    if True:
        calc_xcrystal_double_scan(
            material_constants_library_flag=0,
            crystal_name="Si",
            thickness=0.010,
            miller_h=1,
            miller_k=1,
            miller_l=1,
            asymmetry_angle=0.0,
            energy_min=7990,
            energy_max=8010,
            energy_points=150,
            angle_deviation_min=-100e-6,
            angle_deviation_max=100e-6,
            angle_deviation_points=150,
            angle_center_flag=2, # 0=Absolute angle, 1=Theta Bragg Corrected, 2=Theta Bragg
            calculation_method=calculation_method,
            is_thick=is_thick,
            use_transfer_matrix=use_transfer_matrix,
            geometry_type_index=0,
            do_plot=1,
            calculation_strategy_flag=calculation_strategy_flag,
            )
material_constants_library_flag    =  0
crystal_name                       =  Si
thickness                          =  0.01
miller_h                           =  1
miller_k                           =  1
miller_l                           =  1
asymmetry_angle                    =  0.0
energy                             =  8000.0
angle_deviation_min                =  -0.0001
angle_deviation_max                =  0.0001
angle_deviation_points             =  200
angle_center_flag                  =  2
chi_deg                            =  0.0
flag_calculate_stokes              =  0
chi_deg                            =  0.0
jones_in                           =  [1, 1]
calculation_method                 =  1
is_thick                           =  0
use_transfer_matrix                =  0
geometry_type_index                =  0
dabax                              =  None

Creating a diffraction setup...
Bragg angle for E=8000.000000 eV is 14.308608 deg
Bragg angle corrected for E=8000.000000 eV is 14.310444 deg
_images/check_scans_xcrystal_2_1.png
material_constants_library_flag    =  0
crystal_name                       =  Si
thickness                          =  1e-05
miller_h                           =  1
miller_k                           =  1
miller_l                           =  1
asymmetry_angle                    =  1.5707963267948966
energy                             =  8000.0
angle_deviation_min                =  -0.0001
angle_deviation_max                =  0.0001
angle_deviation_points             =  200
angle_center_flag                  =  2
chi_deg                            =  0.0
flag_calculate_stokes              =  0
chi_deg                            =  0.0
jones_in                           =  [1, 1]
calculation_method                 =  1
is_thick                           =  0
use_transfer_matrix                =  0
geometry_type_index                =  1
dabax                              =  None

Creating a diffraction setup...
Bragg angle for E=8000.000000 eV is 14.308608 deg
Bragg angle corrected for E=8000.000000 eV is 14.308608 deg
_images/check_scans_xcrystal_2_3.png
material_constants_library_flag    =  0
crystal_name                       =  Si
thickness                          =  0.01
miller_h                           =  1
miller_k                           =  1
miller_l                           =  1
asymmetry_angle                    =  0.0
theta                              =  None
energy_min                         =  7990
energy_max                         =  8010
energy_points                      =  200
calculation_method                 =  1
is_thick                           =  0
use_transfer_matrix                =  0
geometry_type_index                =  0
dabax                              =  None

Creating a diffraction setup...
Using theta as the Bragg angle for mean E=8000.000000 eV, which is 14.308608 deg
_images/check_scans_xcrystal_2_5.png
material_constants_library_flag    =  0
crystal_name                       =  Si
thickness                          =  0.01
miller_h                           =  1
miller_k                           =  1
miller_l                           =  1
asymmetry_angle                    =  0.0
energy                             =  8000.0
angle_deviation_min                =  -2
angle_deviation_max                =  2
angle_deviation_points             =  200
calculation_method                 =  1
is_thick                           =  0
use_transfer_matrix                =  0
geometry_type_index                =  0
dabax                              =  None

Creating a diffraction setup...
Bragg angle for E=8000.000000 eV is 14.308608 deg
Bragg angle corrected for E=8000.000000 eV is 14.310444 deg
Darwin half width for E=8000.000000 eV is 0.000983 deg
_images/check_scans_xcrystal_2_7.png
material_constants_library_flag    =  0
crystal_name                       =  Si
thickness                          =  0.01
miller_h                           =  1
miller_k                           =  1
miller_l                           =  1
asymmetry_angle                    =  0.0
energy_min                         =  8000
energy_max                         =  8010
energy_points                      =  1
angle_deviation_min                =  -0.0001
angle_deviation_max                =  0.0001
angle_deviation_points             =  200
angle_center_flag                  =  2
calculation_method                 =  1
is_thick                           =  0
use_transfer_matrix                =  0
geometry_type_index                =  0
dabax                              =  None

Creating a diffraction setup...
Bragg angle for E=8000.000000 eV is 14.308608 deg
Bragg angle corrected for E=8000.000000 eV is 14.310444 deg
Creating bunch...
Done (9 ms).
Calculating diffraction...
Done (25 ms).
_images/check_scans_xcrystal_2_9.png
material_constants_library_flag    =  0
crystal_name                       =  Si
thickness                          =  0.01
miller_h                           =  1
miller_k                           =  1
miller_l                           =  1
asymmetry_angle                    =  0.0
energy_min                         =  7990
energy_max                         =  8010
energy_points                      =  100
angle_deviation_min                =  0
angle_deviation_max                =  0.0001
angle_deviation_points             =  1
angle_center_flag                  =  2
calculation_method                 =  1
is_thick                           =  0
use_transfer_matrix                =  0
geometry_type_index                =  0
dabax                              =  None

Creating a diffraction setup...
Bragg angle for E=8000.000000 eV is 14.308608 deg
Bragg angle corrected for E=8000.000000 eV is 14.310444 deg
Creating bunch...
Done (5 ms).
Calculating diffraction...
Done (13 ms).
_images/check_scans_xcrystal_2_11.png
material_constants_library_flag    =  0
crystal_name                       =  Si
thickness                          =  0.01
miller_h                           =  1
miller_k                           =  1
miller_l                           =  1
asymmetry_angle                    =  0.0
energy_min                         =  7990
energy_max                         =  8010
energy_points                      =  150
angle_deviation_min                =  -0.0001
angle_deviation_max                =  0.0001
angle_deviation_points             =  150
angle_center_flag                  =  2
calculation_method                 =  1
is_thick                           =  0
use_transfer_matrix                =  0
geometry_type_index                =  0
dabax                              =  None

Creating a diffraction setup...
Bragg angle for E=8000.000000 eV is 14.308608 deg
Bragg angle corrected for E=8000.000000 eV is 14.310444 deg
Creating bunch...
Done (2441 ms).
Calculating diffraction...
Done (2590 ms).
(150, 150)
_images/check_scans_xcrystal_2_13.png