fileeval $cfPath(hmm)/hmm_configuration_common_1.tcl set sim_mode [SplitReply [hmm_simulation]] proc ::histogram_memory::init_OAT_TABLE {} { if [ catch { # We don't need a MAX_CHAN parameter for time because the time channel # is scaled by calling the ::histogram_memory::clock_scale function OAT_TABLE X -setdata MAX_CHAN 421 OAT_TABLE Y -setdata MAX_CHAN 221 OAT_TABLE X -setdata BMIN -210.5 OAT_TABLE X -setdata BMAX 210.5 OAT_TABLE Y -setdata BMIN -110.5 OAT_TABLE Y -setdata BMAX 110.5 set clock_scale 1000 set freq 24 hmm configure fat_clock_scale $clock_scale hmm configure fat_frame_frequency $freq hmm configure fat_frame_source EXTERNAL # OAT_TABLE -set X { -210.5 -209.5 } NXC 421 Y { -110.5 -109.5 } NYC 221 T { 0 40 } NTC 1000 # OAT_TABLE -set X { 56.5 -56.5 } NXC 1 Y { 110.5 109.5 } NYC 221 T { 0 40 } NTC 1000 OAT_TABLE -set X { 60.5 -60.5 } NXC 1 Y { 110.5 109.5 } NYC 221 T { 0 40 } NTC 1000 } message ] { if {$::errorCode=="NONE"} {return $message} return -code error $message } } proc ::histogram_memory::pre_count {} {} proc ::histogram_memory::post_count {} {} proc ::histogram_memory::isc_initialize {} { # Instrument specific X and Y dimension names variable INST_NXC "oat_nxc_eff" variable INST_NYC "oat_nyc_eff" if [ catch { ::histogram_memory::init_hmm_objs if {$::sim_mode == "true"} { hmm configure oat_ntc_eff 1 hmm configure $INST_NYC 210 hmm configure $INST_NXC 210 } BAT_TABLE -init CAT_TABLE -init SAT_TABLE -init OAT_TABLE -init FAT_TABLE -init ::histogram_memory::ic_initialize detector_active_height_mm 230 detector_active_height_mm lock detector_active_width_mm 480 detector_active_width_mm lock # hmm configure FAT_SIMULATED_EVENT_Y0 $y_bb0 # hmm configure FAT_SIMULATED_EVENT_Y1 $ybbmax # hmm configure FAT_SIMULATED_EVENT_X0 $x_bb0 # hmm configure FAT_SIMULATED_EVENT_X1 $xbbmax ::histogram_memory::init_OAT_TABLE ::histogram_memory::upload_config Filler_defaults set ::histogram_memory::histmem_axes(HOR) /instrument/detector/x_bin set ::histogram_memory::histmem_axes(VER) /instrument/detector/y_bin set ::histogram_memory::histmem_axes(TOF) /instrument/detector/time_of_flight } message ] { if {$::errorCode=="NONE"} {return $message} return -code error $message } } ## # @brief Set histogram memory frame frequency to match the current chopper frequency proc ::histogram_memory::tochfreq {} { if [ catch { ::chopper::ready? set chfreq [::chopper::get_frequency] ::histogram_memory::set_frame_freq $chfreq EXTERNAL } message ] { if {$::errorCode=="NONE"} {return $message} return -code error $message } } ## # @brief Extends the core _histmem command with platypus specific subcommands # # @param tochfreq updates chopper status and then sets histmem frame frequency to match # the chopper frequency. # # NOTE: If the chopper is stopped (ie freq=0) then the histogram frequency will be set to # 50Hz with an internal frame_source.\n # @see ::histogram_memory::set_frame_freq proc histmem {cmd args} { if [ catch { switch $cmd { "tochfreq" { ::histogram_memory::tochfreq } default { set reply [eval "_histmem $cmd $args"] } } return $reply } message ] { if {$::errorCode=="NONE"} {return $message} return -code error $message } } publish histmem user