Skip to content
Snippets Groups Projects
Commit 9c5a4b41 authored by Blanka Detlefs's avatar Blanka Detlefs
Browse files

add bent crystal to defaults in energy_resolution

parent d6643756
No related branches found
No related tags found
1 merge request!16Add energy-related utils
Pipeline #125578 failed
exotic_CA_shortlisted_color_dots.png

90.6 KiB

......@@ -71,7 +71,17 @@ def test_energy_resolution_instrument():
# instrument.energy_keV = 7.105
# instrument.reflection = [6,2,0]
instrument.crystal_type = "bent" # this is not part of defaults
deltaE = instrument.calc_deltaE(detailed=True)
print(deltaE)
assert deltaE
# instrument.crystal_type = "bent" # this is not part of defaults
[
dE_tot,
dE_Darwin,
dE_sx,
dE_sy,
dE_sz,
dE_pixel,
dE_Johann,
dE_offRowland,
dE_stress,
] = instrument.calc_deltaE(detailed=True)
print(dE_tot)
assert dE_tot
......@@ -73,6 +73,7 @@ class Instrument:
"""
to have something that makes sense (only inputs)
"""
self.crystal_type = "bent"
self.energy_keV = 7.105
self.reflection = [6, 2, 0]
self.material = "Ge"
......@@ -425,8 +426,8 @@ def _calc_deltaE_diced(
energy_keV,
reflection,
Rowland_radius,
asymmetry,
mask,
asymmetry=0, # no asymmetry
mask=100, # no mask
material="Si",
debyeWaller=1.0,
det_pixel_size=55,
......@@ -523,7 +524,7 @@ def _calc_deltaE_bent(
asymmetry=0,
mask=100,
material="Si",
det_pixel_size=None,
det_pixel_size=55, # maxipix
z_offRowland=0,
source_size=[20, 10, 10],
debyeWaller=1,
......@@ -570,16 +571,25 @@ def _calc_deltaE_bent(
# calculate dE_stress
# TODO: also for compounds:
f2 = -xraylib.Fii(
xraylib.SymbolToAtomicNumber(material), energy_keV
) # it is negative
# print(f2)
mass_density = (
xraylib.ElementDensity(xraylib.SymbolToAtomicNumber(material)) * 1e6
) # g/m3
mass_number = 2 * xraylib.SymbolToAtomicNumber(material) # units. Works for Si, Ge
atomic_density = mass_density * cs.Avogadro / mass_number # units / m3
if material in ['Si', 'Ge']:
f2 = -xraylib.Fii(
xraylib.SymbolToAtomicNumber(material), energy_keV
) # it is negative
# print(f2)
mass_density = (
xraylib.ElementDensity(xraylib.SymbolToAtomicNumber(material)) * 1e6
) # g/m3
mass_number = 2 * xraylib.SymbolToAtomicNumber(material) # units. Works for Si, Ge
atomic_density = mass_density * cs.Avogadro / mass_number # units / m3
elif material in ['SiO2', 'AlphaQuartz', 'quartz']:
mass_density = 2.65 *1e6 #g/m3
mass_number = xraylib.SymbolToAtomicNumber('Si')+ 2* xraylib.SymbolToAtomicNumber('O')
atomic_density = mass_density * cs.Avogadro / mass_number # units / m3
f2 =
elif material in ['LiNbO3','NbLiO3']:
# print(atomic_density)
if material == "Si":
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment