source $cfPath(hmm)/hmm_configuration_common_1.tcl source $cfPath(hmm)/hmm_cylindrical_detector_configuration.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 128 OAT_TABLE Y -setdata MAX_CHAN 512 OAT_TABLE X -setdata BMIN -0.5 OAT_TABLE X -setdata BMAX 127.5 OAT_TABLE Y -setdata BMIN -0.5 OAT_TABLE Y -setdata BMAX 511.5 OAT_TABLE -set X { 127.5 126.5 } NXC 128 Y { -0.5 3.5 } NYC 128 T { 0 20000 } NTC 1 } message ] { if {$::errorCode=="NONE"} {return $message} return -code error $message } } proc ::histogram_memory::init_SAT_TABLE {} { if [ catch { SAT_TABLE -set APPLY ENABLE MIDPOINT 480 DIRECTION X SWAP ENABLE WRAP ENABLE } message ] { if {$::errorCode=="NONE"} {return $message} return -code error $message } } ## # @brief Return the detector position proc ::histogram_memory::detector_posn_degrees {} { return [SplitReply [stth]] } proc ::histogram_memory::pre_count {} {} proc ::histogram_memory::post_count {} {} proc ::histogram_memory::isc_initialize {} { if [ catch { ::histogram_memory::init_hmm_objs if {$::sim_mode == "true"} { hmm configure oat_ntc_eff 1 hmm configure oat_nyc_eff 1024 hmm configure oat_nxc_eff 64 } BAT_TABLE -init CAT_TABLE -init SAT_TABLE -init OAT_TABLE -init FAT_TABLE -init ::histogram_memory::ic_initialize ::histogram_memory::two_theta -boundaries detector_active_height_mm 335 detector_active_width_mm 3463.4 detector_radius_mm 1250.0 # 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::init_SAT_TABLE ::histogram_memory::upload_config Filler_defaults ::nexus::data alias ::histogram_memory::vertical_axis ::histogram_memory::y_pixel_offset ::nexus::data alias ::histogram_memory::horizontal_axis ::histogram_memory::two_theta } message ] { if {$::errorCode=="NONE"} {return $message} return -code error $message } } proc histmem {cmd args} { eval "_histmem $cmd $args" } publish histmem user