Files
sics/site_ansto/instrument/hipd/config/hmm/hmm_configuration.tcl
Ferdi Franceschini 3a40ea5693 Merged release 2.0 patch-set 1 (RELEASE-2_0P1 )
r2624 | ffr | 2008-06-12 09:05:36 +1000 (Thu, 12 Jun 2008) | 2 lines
2012-11-15 13:39:10 +11:00

124 lines
3.8 KiB
Tcl

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 3872
OAT_TABLE X -setdata MAX_CHAN_PERSEG 992
OAT_TABLE Y -setdata MAX_CHAN 512
OAT_TABLE X -setdata ALLOWED_RESOLUTIONS {1 2 4 8 16 32}
OAT_TABLE X -setdata BMIN -0.5
OAT_TABLE X -setdata BMAX 991.5
OAT_TABLE Y -setdata BMIN -0.5
OAT_TABLE Y -setdata BMAX 511.5
# x bin range 0, 3871
# y bin range 0, 511
FAT_TABLE -set MULTI_HOST_HISTO_STITCH_OVERLAP 32
OAT_TABLE -set X { 991.5 990.5 } NXC 992 Y { 511.5 510.5 } NYC 512 T { 0 20000 } NTC 1
} message ] {
if {$::errorCode=="NONE"} {return $message}
return -code error $message
}
}
##
# @brief Returns the oat table bin boundaries.
proc ::histogram_memory::oat_bins {axis} {
array set channID {X NXC Y NYC T NTC}
if [ catch {
if {$axis == "X"} {
foreach {bb0 bb1} [OAT_TABLE -get $axis] {}
set bstep [expr $bb1 - $bb0]
if {$bstep < 0} {
set nch_perseg [OAT_TABLE -get $channID($axis)]
set overlap [FAT_TABLE -get MULTI_HOST_HISTO_STITCH_OVERLAP]
set bb0 [expr 4*$nch_perseg - 3*$overlap + $bstep/2.0]
set bb1 [expr $bb0+$bstep]
###########
# set overlap [FAT_TABLE -get MULTI_HOST_HISTO_STITCH_OVERLAP]
# set bb0 [expr 4*$bb0 - 3*($overlap-1)]
# set bb1 [expr $bb0+$bstep]
}
return [list $bb0 $bb1]
} else {
return [OAT_TABLE -get $axis]
}
} message ] {
if {$::errorCode=="NONE"} {return $message}
return -code error $message
}
}
##
# @brief Returns the current number of channels for a given axis.
proc ::histogram_memory::number_of_channels {axis} {
array set channID {X NXC Y NYC T NTC}
if [ catch {
if {$axis == "X"} {
set nch_perseg [OAT_TABLE -get $channID($axis)]
set overlap [FAT_TABLE -get MULTI_HOST_HISTO_STITCH_OVERLAP]
set nch [expr 4*$nch_perseg - 3*$overlap]
return $nch
} else {
return [OAT_TABLE -get $channID($axis)]
}
} message ] {
if {$::errorCode=="NONE"} {return $message}
return -code error $message
}
}
##
# @brief Return the detector position
proc ::histogram_memory::detector_posn_degrees {} {
if [ catch {
return [SplitReply [stth]]
} message ] {
if {$::errorCode=="NONE"} {return $message}
return -code error $message
}
}
proc ::histogram_memory::pre_count {} {}
proc ::histogram_memory::post_count {} {}
proc ::histogram_memory::initialize {} {
if [ catch {
if {$::sim_mode == "true"} {
hmm configure oat_ntc_eff 1
hmm configure stitch_nyc 512
hmm configure stitch_nxc [expr 480*8 - 1]
}
BAT_TABLE -init
CAT_TABLE -init
SAT_TABLE -init
OAT_TABLE -init
FAT_TABLE -init MULTI_HOST_HISTO_STITCH_OVERLAP
::histogram_memory::_initialize
::histogram_memory::two_theta -boundaries
detector_active_height_mm 203.2
detector_active_width_mm 1524
detector_radius_mm 728.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::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