server_init now calls ::counter::isc_initialize, ::histogram_memory::isc_initialize and ::scan::isc_initialize scan.c SICS-158 Restrict bmonscan and hmscan to only one scan variable count_common.tcl Create a mulicounter which uses the available monitors as channels. The multicounter is used in bmonscans hipadaba_configuration_common.tcl Use _link as the suffix for the nxvgroup name when making nexus file links. hmm_configuration_common.tcl SICS-190 Create hdb entries for bm_counts, bm_event_rate, bm_status SICS-164 Allow running histmem in simulated mode. hmm_cylindrical_detector_configuration.tcl Only refer to detector SICSVariables when necessary, otherwise we get dependency problems. nxscripts_common_1.tcl Separate histmem_filtype_spec from bmon_filetype_spec so that we can use the histem_filetyp_spec names to restrict the histmem scan filetypes. Close the data file on error in proc ::nexus::save Allow int and text types when saving macro data scan_common_1.tcl SICS-173 Allow users to force a scan when the instrument isn't ready Added ic_initialize proc so we can make dependencies explicit in the init_server proc SICS-186 Allow monitor modes for histmem scans Allow selection of histmem file policies from runscan command echidna, wombat, kowari, quokka and platypus component and server configurations Added instrument specific configuration initialisation functions in the component configuration files. Add a catch block to the top-level instrument server configuration file and printout the errorContext and callStack r2641 | ffr | 2008-07-01 17:02:26 +1000 (Tue, 01 Jul 2008) | 34 lines
126 lines
3.9 KiB
Tcl
126 lines
3.9 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::isc_initialize {} {
|
|
|
|
if [ catch {
|
|
::histogram_memory::init_hmm_objs
|
|
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::ic_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
|