fourcv — Eulerian Four-Circle (Synchrotron)#
Busing & Levy (1967) four-circle Eulerian diffractometer, vertical scattering plane. ω and 2θ rotate about the transverse axis. Standard synchrotron convention.
Walko (2016) designation: S3D1
Coordinate basis: Busing & Levy (BASIS_BL): transverse=+x, longitudinal=+y, vertical=+z.
Quick start#
import ad_hoc_diffractometer as ahd
g = ahd.presets.fourcv()
g.wavelength = 1.0 # Å
print(g.summary())
Pre-built geometry definition#
This geometry is defined by the fourcv() factory
function — see the source for the complete stage
and mode configuration.
Stage layout#
Static fallback (click to expand if the interactive figure above is blank)
Sample stages (base first):
Stage |
Axis |
Handedness |
Parent |
|---|---|---|---|
|
−transverse (−x BL) |
left-handed |
base |
|
+longitudinal (+y BL) |
right-handed |
|
|
−transverse (−x BL) |
left-handed |
|
Detector stages (base first):
Stage |
Axis |
Handedness |
Parent |
|---|---|---|---|
|
−transverse (−x BL) |
left-handed |
base |
Diffraction modes#
Set the active mode with g.mode_name = "<mode>".
Each mode is a ConstraintSet of 1 constraint
(N − 3 = 1 for N = 4 DOF).
See Switch Diffraction Modes for usage and Work with Constraints and Diffraction Modes for
changing constraint values at run time.
bisecting (default)#
BisectConstraint:
omega = ttheta / 2.
Places the sample symmetrically between the incident and diffracted beams.
Stages |
|
|---|---|
Computed |
omega, chi, phi, ttheta |
Constant during |
— |
fixed_chi#
SampleConstraint:
chi is held at the value declared in the constraint (factory default: 90°).
The caller chooses the value by constructing a ConstraintSet; the constraint
persists until replaced — see Work with Constraints and Diffraction Modes.
Computed |
omega, phi, ttheta |
Constant during |
chi |
fixed_phi#
SampleConstraint:
phi is held at the value declared in the constraint (factory default: 0°).
The caller chooses the value by constructing a ConstraintSet.
Computed |
omega, chi, ttheta |
Constant during |
phi |
fixed_omega#
SampleConstraint:
omega is held at the value declared in the constraint (factory default: 0°).
The caller chooses the value by constructing a ConstraintSet.
Computed |
chi, phi, ttheta |
Constant during |
omega |
fixed_psi#
ReferenceConstraint:
azimuthal angle ψ validation filter.
Set g.azimuthal_reference = (h, k, l) before calling forward().
Returns bisecting solutions only when the natural ψ for (h,k,l) matches
the stored target. See Surface Geometry and the Reference Vector.
Extras (input) |
n̂ (reference vector), ψ (target, degrees) |
Extras (output) |
psi (computed azimuth) |
double_diffraction#
Full 4D simultaneous solver: finds motor angles where both the primary
(h₁,k₁,l₁) and secondary (h₂,k₂,l₂) reflections satisfy the Ewald
sphere condition. Set mode.extras['h2'], ['k2'], ['l2']
before calling forward().
Computed |
omega, chi, phi, ttheta |
Extras (input) |
h₂, k₂, l₂ (secondary reflection Miller indices) |
API reference#
References#
Busing & Levy, Acta Cryst. 22, 457–464 (1967). DOI: 10.1107/S0365110X67000970
Walko, Ref. Module Mater. Sci. Mater. Eng. (2016).