diff --git a/site_ansto/instrument/reflectometer/extraconfig.tcl b/site_ansto/instrument/reflectometer/extraconfig.tcl index e69de29b..ec38a3a2 100644 --- a/site_ansto/instrument/reflectometer/extraconfig.tcl +++ b/site_ansto/instrument/reflectometer/extraconfig.tcl @@ -0,0 +1,38 @@ +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 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($arg)] + set h2 [expr [SplitReply [slit4_base]] + $d2 * tan($arg)] + 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 atan2($h1, $d1)] +} +publish get_two_theta user + +MakeConfigurableMotor two_theta +two_theta readscript get_two_theta +two_theta drivescript set_two_theta +