Files
sics/site_ansto/instrument/rsd/config/hmm/hmm_configuration.tcl

110 lines
3.4 KiB
Tcl

fileeval $cfPath(hmm)/hmm_configuration_common_1.tcl
set sim_mode [SplitReply [hmm_simulation]]
::utility::mkVar sample_to_detector_distance float manager sample_to_detector_distance true detector true true
sicslist setatt sample_to_detector_distance units mm
proc ::histogram_memory::init_OAT_TABLE {} {
# 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 421
OAT_TABLE X -setdata BMIN -210.5
OAT_TABLE X -setdata BMAX 210.5
OAT_TABLE Y -setdata BMIN -210.5
OAT_TABLE Y -setdata BMAX 210.5
set clock_scale 1000
set freq 50
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 { -210.5 -209.5 } NYC 421 T { 0 20000 } NTC 1
}
proc ::histogram_memory::pre_count {} {}
proc ::histogram_memory::post_count {} {}
##
# @brief Adds Kowari specific hmm data types
proc ::histogram_memory::is_select_read_type {type} {
variable HMOBJ
# Instrument specific X and Y dimension names
variable INST_NXC
variable INST_NYC
if [catch {
$HMOBJ configure read_data_period_number 0
switch [string toupper $type] {
"TOTAL_HISTOGRAM_X_CORRECTED" {
$HMOBJ configure rank 1
$HMOBJ configure dim0 [SplitReply [$HMOBJ configure $INST_NXC]]
$HMOBJ configure READ_DATA_UNCAL_CAL CALIBRATED
$HMOBJ configure READ_DATA_TYPE TOTAL_HISTOGRAM_X
set hmm_ext "_total_x"
}
"TOTAL_HISTOGRAM_XY_CORRECTED" {
$HMOBJ configure rank 2
$HMOBJ configure dim0 [SplitReply [$HMOBJ configure $INST_NXC]]
$HMOBJ configure dim1 [SplitReply [$HMOBJ configure $INST_NYC]]
$HMOBJ configure READ_DATA_UNCAL_CAL CALIBRATED
$HMOBJ configure READ_DATA_TYPE TOTAL_HISTOGRAM_XY
set hmm_ext "_total_xy"
}
default {
$HMOBJ configure READ_DATA_UNCAL_CAL UNCALIBRATED
set hmm_ext "notfound"
}
}
} msg ] {
return -code error "([info level 0]) $msg"
}
return $hmm_ext
}
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 421
hmm configure $INST_NXC 421
}
BAT_TABLE -init
CAT_TABLE -init
SAT_TABLE -init
OAT_TABLE -init
FAT_TABLE -init
detector_active_height_mm 280
detector_active_height_mm lock
detector_active_width_mm 280
detector_active_width_mm lock
::histogram_memory::ic_initialize
# 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_pixel_offset
set ::histogram_memory::histmem_axes(VER) /instrument/detector/y_pixel_offset
} message ] {
if {$::errorCode=="NONE"} {return $message}
return -code error $message
}
}
proc histmem {cmd args} {
eval "_histmem $cmd $args"
}
publish histmem user