from diffcalc.util import x_rotation, y_rotation, z_rotation, TORAD, TODEG from startup._common_imports import * if not GDA: import startup._demo if '_fivec' in globals() and 'en' in globals(): # Assume we are running in a live GDA deployment with a _fivec ScannableGroup # with axes named: delta, gam, eta, chi, phi. # Ensure that these five Scannables exist. # There must also be Scannable en for moving and reading the energy print "Diffcalc using predefined _fivec and en Scannables" else: ### Create dummy scannables ### print "Diffcalc creating dummy Scannables as _fivec and en were not found" delta = Dummy('delta') gam = Dummy('gam') eta = Dummy('eta') chi = Dummy('chi') phi = Dummy('phi') _fivec = ScannableGroup('_fivec', (delta, gam, eta, chi, phi)) en = Dummy('en') en.level = 3 ### Configure and import diffcalc objects ### ESMTGKeV = 1 settings.hardware = ScannableHardwareAdapter(_fivec, en, ESMTGKeV) settings.geometry = diffcalc.hkl.you.geometry.FiveCircle() settings.energy_scannable = en settings.axes_scannable_group = _fivec settings.energy_scannable_multiplier_to_get_KeV = ESMTGKeV from diffcalc.gdasupport.you import * # @UnusedWildImport if GDA: print "Running in GDA --- aliasing commands" alias_commands(globals()) # Load the last ub calculation used lastub() # # setmax(delta, 28) # setmin(delta, -1) # setmin(gam, 0) # setmax(gam, 16) # setmin(eta, -10) # setmax(eta, 10) # setmin(chi, 90 - 12) # setmax(chi, 90 + 12) # setmin(phi, -88) # setmax(phi, 88) # setcut(phi, -90) # hardware() setmax(delta, 90) setmin(delta, -1) setmin(gam, 0) setmax(gam, 90) setmin(eta, -90) setmax(eta, 90) setmin(chi, -10) setmax(chi, 100) setmin(phi, -88) setmax(phi, 88) setcut(phi, -90) hardware() def X(th_deg): return x_rotation(th_deg * TORAD) def Y(th_deg): return y_rotation(th_deg * TORAD) def Z(th_deg): return z_rotation(th_deg * TORAD) WEDGE = X(15) if not GDA: demo = startup._demo.Demo(globals(), 'fivec') """ Fivec, no real limits, working out U matrix =========================================== U = xyz_rotation([-0.70711, 0.70711, 0.00000], 54.73561 * TORAD) setu U pos en 20 con qaz 90 con a_eq_b UBCALC name: 2017-03-07-i13 n_phi: -0.00000 -0.00000 1.00000 n_hkl: 0.57735 0.57735 0.57735 <- set miscut: angle: 0.00003 axis: 0.70711 -0.70711 0.00000 CRYSTAL name: Si111 a, b, c: 5.43000 5.43000 5.43000 90.00000 90.00000 90.00000 B matrix: 1.15712 0.00000 0.00000 0.00000 1.15712 0.00000 0.00000 0.00000 1.15712 UB MATRIX U matrix: 0.78868 -0.21133 -0.57735 -0.21132 0.78867 -0.57735 0.57735 0.57735 0.57735 angle: 54.73564 axis: 0.70711 -0.70711 0.00000 UB matrix: 0.91260 -0.24453 -0.66807 -0.24453 0.91259 -0.66807 0.66807 0.66807 0.66807 REFLECTIONS ENERGY H K L DELTA GAM ETA CHI PHI TAG 1 20.000 1.00 1.00 1.00 11.3483 0.0000 5.6741 90.0000 45.0000 2 20.000 4.00 0.00 0.00 26.3978 0.0000 13.1989 35.2644 -15.0000 In [80]: listub UB calculations in: /Users/zrb13439/.diffcalc/i13 0) 2017-03-07-i13 14 Mar 2017 (14:35) 1) test 07 Mar 2017 (11:38) In [81]: hardware -1.0 <= delta <= 90.0 (cut: -180.0) 0.0 <= gam <= 90.0 (cut: -180.0) -90.0 <= eta <= 90.0 (cut: -180.0) -10.0 <= chi <= 100.0 (cut: -180.0) -180.0 <= phi <= 180.0 (cut: -90.0) Note: When auto sector/transforms are used, cuts are applied before checking limits. Add in delta and gamma constraintss: In [85]: atan(28/16)*TODEG Out[85]: 45.0 In [86]: atan(28/16.)*TODEG Out[86]: 60.25511870305777 In [87]: con qaz 60 qaz : 60.0000 a_eq_b mu : 0.0000 In [88]: sim hkl [4 0 0] _fivec would move to: delta : 22.6459 gam : 13.9379 eta : 59.2132 chi : 8.8270 phi : -63.0717 alpha : 7.5752 beta : 7.5752 naz : 4.5446 psi : 90.0000 qaz : 60.0000 tau : 54.7356 theta : 13.1989 """"