Files
sics/site_ansto/instrument/reflectometer/extraconfig.tcl
Douglas Clowes 34d8abac97 convert radians to degrees
r2182 | dcl | 2007-10-11 17:58:54 +1000 (Thu, 11 Oct 2007) | 2 lines
2012-11-15 13:26:02 +11:00

40 lines
1.2 KiB
Tcl

VarMake detector_distance Float User
VarMake detector_base Float User
VarMake slit4_distance Float User
VarMake slit4_base Float User
VarMake sample_distance Float User
VarMake sample_base Float User
VarMake slit3_distance Float User
VarMake slit3_base Float User
detector_distance 10000
detector_base 300
slit4_distance 6000
slit4_base 20
sample_distance 5800
sample_base 50
slit3_distance 5600
slit3_base 20
proc set_two_theta { arg } {
set rad [expr ($arg/180.0)*3.1415926535897932384626433832795]
set d1 [expr [SplitReply [detector_distance]] - [SplitReply [sample_distance]]]
set d2 [expr [SplitReply [slit4_distance]] - [SplitReply [sample_distance]]]
set h1 [expr [SplitReply [detector_base]] + $d1 * tan($rad)]
set h2 [expr [SplitReply [slit4_base]] + $d2 * tan($rad)]
return "dz=$h1,st4vt=$h2"
}
publish set_two_theta user
proc get_two_theta {} {
set d1 [expr [SplitReply [detector_distance]] - [SplitReply [sample_distance]]]
set h1 [expr [SplitReply [dz]] - [SplitReply [detector_base]]]
return [expr (180.0*atan2($h1, $d1))/3.1415926535897932384626433832795]
}
publish get_two_theta user
MakeConfigurableMotor two_theta
two_theta readscript get_two_theta
two_theta drivescript set_two_theta