diff --git a/site_ansto/instrument/reflectometer/config/hmm/hmm_configuration.tcl b/site_ansto/instrument/reflectometer/config/hmm/hmm_configuration.tcl index b6e39128..2ffb0bcb 100644 --- a/site_ansto/instrument/reflectometer/config/hmm/hmm_configuration.tcl +++ b/site_ansto/instrument/reflectometer/config/hmm/hmm_configuration.tcl @@ -28,6 +28,14 @@ if {$sim_mode == "true"} { MakeHMControl_ANSTO hmc bm hmm; } +hmm configure rank 3 +hmm_xy configure rank 2 +hmm_xt configure rank 2 +hmm_yt configure rank 2 +hmm_x configure rank 1 +hmm_y configure rank 1 +hmm_t configure rank 1 + source $cfPath(hmm)/hmm_configuration_common_1.tcl if {$sim_mode == "true"} { proc ::histogram_memory::initialize {} { @@ -37,91 +45,47 @@ if {$sim_mode == "true"} { hmm configure hmDataPath ../HMData; } } -# Configure to upload a complete configuration to the histogram server. -# In this case it's the main config file plus the FAT, BAT and OAT files -# in the same direcory as the SICS executable (for this example). -# Alternatives: -# - A partial config could be uploaded instead - e.g. just the main config file, -# in that case the main config file points to a set of FAT, BAT OAT files -# located on the server. -# - The histogram server could configure itself from a config file set -# kept on the local file system (not automated presently, manual control only) -# - Or, no configuration at all could be uploaded, the -# histogram server can configure itself using its default config files. -proc ::histogram_memory::setmode {mode} { - hmm_mode $mode; - set sim_mode [SplitReply [hmm_simulation]]; - switch $mode { - pulser { - if {$sim_mode == "true"} { - hmm configure oat_nyc_eff 1024; - hmm configure oat_nxc_eff 64; - hmm configure oat_ntc_eff 1; - } - _hmm_hor_channel_name tube_pair_number - _hmm_hor_axis tube_pair_number - _hmm_hor_axis_alias dcolindex - _hmm_vert_axis vertical_channel_number - _hmm_vert_axis_alias drowindex - hmm configure hmconfigscript "returnconfigfile [SplitReply [hmm_user_configpath]]/anstohm_full_MESYTEC_PULSER.xml" - } - calibration { - if {$sim_mode == "true"} { - hmm configure oat_nyc_eff 1024; - hmm configure oat_nxc_eff 64; - hmm configure oat_ntc_eff 1; - } - _hmm_hor_channel_name tube_pair_number - _hmm_hor_axis tube_pair_number - _hmm_hor_axis_alias dcolindex - _hmm_vert_axis vertical_channel_number - _hmm_vert_axis_alias drowindex - hmm configure hmconfigscript "returnconfigfile [SplitReply [hmm_user_configpath]]/anstohm_full_nofolding.xml" - } - normal - - default { - if {$sim_mode == "true"} { - hmm configure oat_nyc_eff 512; - hmm configure oat_nxc_eff 128; - hmm configure oat_ntc_eff 1; - } - _hmm_hor_channel_name horizontal_channel_number - _hmm_hor_axis polar_angle - _hmm_hor_axis_alias dtheta - _hmm_vert_axis vertical_channel_number - _hmm_vert_axis_alias drowindex - #OAT_TABLE X {-210.5 -208.5} Y {-110.5 -109.5} T {0 20000} NTC 2 - ::histogram_memory::configure_server Filler_defaults - } - } +proc ::histogram_memory::pre_count {} { + set freq [::chopper::get_frequency] + #TODO Add tolerance parameters to choppercontroller + if {abs($freq - 0) <= [expr 2.0/60.0]} { + hmm configure fat_frame_source INTERNAL + hmm configure fat_frame_frequency 50 + } else { + hmm configure fat_frame_source EXTERNAL + hmm configure fat_frame_frequency $freq + } + hmm stop + hmm init 0 + hmm init } - +proc ::histogram_memory::post_count {} {} proc ::histogram_memory::initialize {} { ::histogram_memory::_initialize detector_active_height_mm 257.5 detector_active_width_mm 500 - set x_bin0 -210.5; set x_binmax 210.5 - set y_bin0 -110.5; set y_binmax 110.5 + set x_bb0 -210.5; set xbbmax 210.5 + set y_bb0 -110.5; set ybbmax 110.5 set x_binwidth 1 - if {[expr {$x_binmax - $x_bin0}] > 0} { - set x_bin1 [expr {$x_bin0+$x_binwidth}] + if {[expr {$xbbmax - $x_bb0}] > 0} { + set x_bb1 [expr {$x_bb0+$x_binwidth}] } else { - set x_bin1 [expr {$x_bin0-$x_binwidth}] + set x_bb1 [expr {$x_bb0-$x_binwidth}] } set y_binwidth 1 - if {[expr {$y_binmax - $y_bin0}] > 0} { - set y_bin1 [expr {$y_bin0+$y_binwidth}] + if {[expr {$ybbmax - $y_bb0}] > 0} { + set y_bb1 [expr {$y_bb0+$y_binwidth}] } else { - set y_bin1 [expr {$y_bin0-$y_binwidth}] + set y_bb1 [expr {$y_bb0-$y_binwidth}] } - OAT_TABLE -init X_MIN $x_bin0 X_MAX $x_binmax Y_MIN $y_bin0 Y_MAX $y_binmax + OAT_TABLE -init X_MIN $x_bb0 X_MAX $xbbmax Y_MIN $y_bb0 Y_MAX $ybbmax # We default to one big bin for time - set t_bin0 [OAT_TABLE -get T_MIN] - set t_bin1 [OAT_TABLE -get T_MAX] - OAT_TABLE X "$x_bin0 $x_bin1" Y "$y_bin0 $y_bin1" T "$t_bin0 $t_bin1" + set t_bb0 [OAT_TABLE -get T_MIN] + set t_bb1 [OAT_TABLE -get T_MAX] + OAT_TABLE X "$x_bb0 $x_bb1" Y "$y_bb0 $y_bb1" T "$t_bb0 $t_bb1" ::histogram_memory::configure_server Filler_defaults ::nexus::data alias ::histogram_memory::vertical_axis ::histogram_memory::y_pixel_offset