Core Operations#
A diffractometer’s .core provides most of its functionality.
The core conducts transactions with the Solver on behalf of the
diffractometer. These transactions include the forward() and inverse()
coordinate transformations, at the core of scientific measurements using
a diffractometer.
Python class |
Purpose |
|---|---|
ophyd PseudoPositioner |
|
|
The class for a diffractometer’s |
Code for diffractometer geometries and capabilities. |
In addition to Solver transactions, the .core manages all
details involving the set of samples and their lattices & reflections.
Here, we use the creator() to create a simulated 4-circle
diffractometer with the E4CV geometry.
EXAMPLE:
>>> from hklpy2 import creator
>>> e4cv = creator(name="e4cv")
>>> e4cv.sample
Sample(name='cubic', lattice=Lattice(a=1, b=1, c=1, alpha=90.0, beta=90.0, gamma=90.0))
>>> e4cv.core.solver
HklSolver(name='hkl_soleil', version='v5.0.0.3434', geometry='E4CV', engine='hkl', mode='bissector')
>>> e4cv.sample.reflections
{}
>>> e4cv.add_reflection((1, 0, 0), (10, 0, 0, 20), name="r1")
Reflection(name='r1', geometry='E4CV', pseudos={'h': 1, 'k': 0, 'l': 0}, reals={'omega': 10, 'chi': 0, 'phi': 0, 'tth': 20}, wavelength=1.0)
>>> e4cv.add_reflection((0, 1, 0), (10, -90, 0, 20), name="r2")
Reflection(name='r2', geometry='E4CV', pseudos={'h': 0, 'k': 1, 'l': 0}, reals={'omega': 10, 'chi': -90, 'phi': 0, 'tth': 20}, wavelength=1.0)
>>> e4cv.sample.reflections
{'r1': {'name': 'r1', 'geometry': 'E4CV', 'pseudos': {'h': 1, 'k': 0, 'l': 0}, 'reals': {'omega': 10, 'chi': 0, 'phi': 0, 'tth': 20}, 'wavelength': 1.0, 'order': 0}, 'r2': {'name': 'r2', 'geometry': 'E4CV', 'pseudos': {'h': 0, 'k': 1, 'l': 0}, 'reals': {'omega': 10, 'chi': -90, 'phi': 0, 'tth': 20}, 'wavelength': 1.0, 'order': 1}}
Using the ``e4cv`` simulator, the property is::
>>> e4cv.core.solver_signature
"HklSolver(name='hkl_soleil', version='5.1.2', geometry='E4CV', engine_name='hkl', mode='bissector')"