EF, 29th Feb 2000 : added more options, monitor shape, theta, phi
EF, 01st Feb 2001 : PreMonitor for correlation studies (0.13.6)
EF, 5th Apr 2001 : use global functions (0.14) compile faster
EF, 23th Jul 2001 : log of signal, init arrays to 0, box (0.15)
EF, 04th Sep 2001 : log/abs of variables (0.16)
EF, 24th Oct 2001 : capture flux [p*lambda/1.7985] (0.16.3)
EF, 27th Aug 2002 : monitor a variable in place of I (0.16.5)
EF, 25th Oct 2002 : banana, and auto for each variable (0.16.5)
Description
This component is a general Monitor that can output 0/1/2D signals
It can produce many 1D signals (one for any variable specified in
option list), or a single 2D output (two variables correlation).
Also, an additional 'list' of neutron events can be produced.
By default, monitor is square (in x/y plane). A disk shape is also possible
The 'cylinder' and 'banana' option will change that for a banana shape
The 'sphere' option simulates spherical detector. The 'box' is a box.
The cylinder, sphere and banana should be centered on the scattering point.
The monitored flux may be per monitor unit area, and weighted by
a lambda/lambda(2200m/s) factor to obtain standard integrated capture flux.
In normal configuration, the Monitor_nD measures the current parameters
of the neutron that is beeing detected. But a PreMonitor_nD component can
be used in order to study correlations between a neutron being detected in
a Monitor_nD place, and given parameters that are monitored elsewhere
(at PreMonitor_nD).
The monitor can also act as a 3He gas detector, taking into account the
detection efficiency.
The 'bins' and 'limits' modifiers are to be used after each variable,
and 'auto','log' and 'abs' come before it. (eg: auto abs log hdiv bins=10
limits=[-5 5]) When placed after all variables, these two latter modifiers
apply to the signal (e.g. intensity). Unknown keywords are ignored.
In the case of multiple components at the same position, the 'parallel'
keyword must be used in each instance instead of defining a GROUP.
Possible options are
Variables to record:
kx ky kz k wavevector [Angs-1] ( usually axis are
vx vy vz v [m/s] x=horz., y=vert., z=on axis)
x y z [m] Distance, Position
kxy vxy xy radius [m] Radial wavevector, velocity and position
t time [s] Time of Flight
energy omega [meV]
lambda wavelength [Angs]
p intensity flux [n/s] or [n/cm^2/s]
ncounts [1]
sx sy sz [1] Spin
vdiv ydiv dy [deg] vertical divergence (y)
hdiv divergence xdiv [deg] horizontal divergence (x)
angle [deg] divergence from direction
theta longitude [deg] longitude (x/z) [for sphere and cylinder]
phi lattitude [deg] lattitude (y/z) [for sphere and cylinder]
user user1 will monitor the [Mon_Name]_Vars.UserVariable{1|2|3}
user2 user3 to be assigned in an other component (see below)
Other options keywords are:
abs Will monitor the abs of the following variable
or of the signal (if used after all variables)
auto Automatically set detector limits for one/all
all {limits|bins|auto} To set all limits or bins values or auto mode
binary {float|double} with 'source' option, saves in compact files
bins=[bins=20] Number of bins in the detector along dimension
borders To also count off-limits neutrons
(X < min or X > max)
capture weight by lambda/lambda(2200m/s) capture flux
exclusive absorb neutrons out of monitor limits
file=string Detector image file name. default is component
name, plus date and variable extension.
incoming Monitor incoming beam in non flat det
limits=[min max] Lower/Upper limits for axes
(see up for the variable unit)
list=[counts=1000] or all For a long file of neutron characteristics
with [counts] or all events
log Will monitor the log of the following variable
or of the signal (if used after all variables)
min=[min_value] Same as limits, but only sets the min or max
max=[max_value]
multiple Create multiple independant 1D monitors files
no or not Revert next option
outgoing Monitor outgoing beam (default)
parallel Use this option when the next component is at
the same position (parallel components)
per cm2 Intensity will be per cm^2
per steradian Intensity will be per steradian (requires auto)
premonitor Will monitor neutron parameters stored
previously with PreMonitor_nD.
signal=[var] Will monitor [var] instead of usual intensity
slit or absorb Absorb neutrons that are out detector
source The monitor will save neutron states
unactivate To unactivate detector (0D detector)
verbose To display additional informations
3He_pressure=[3 in bars] The 3He gas pressure in detector.
3He_pressure=0 is perfect detector (default)
Detector shape options (specified as xwidth,yheight,zthick or x/y/z/min/max)
box Box of size xwidth, yheight, zthick.
cylinder To get a cylindrical monitor
(diameter is xwidth, height is yheight).
banana Same as cylinder, without top/bottom,
on restricted angular area; use theta
variable with limits to define arc.
(diameter is xwidth, height is yheight).
disk Disk flat xy monitor. diameter is xwidth.
sphere To get a spherical monitor (e.g. a 4PI)
(diameter is xwidth).
square Square flat xy monitor (xwidth, yheight).
previous The monitor uses PREVIOUS component as detector
surface.
EXAMPLES:
MyMon = Monitor_nD(
xwidth = 0.1, yheight = 0.1, zthick = 0,
options = "intensity per cm2 angle,limits=[-5 5] bins=10,with
borders, file = mon1");
will monitor neutron angle from [z] axis, between -5
and 5 degrees, in 10 bins, into "mon1.A" output 1D file
options = "sphere theta phi outgoing" for a sphere PSD detector (out
beam) and saves into file "MyMon_[Date_ID].th_ph"
options = "banana, theta limits=[10,130], bins=120, y" a theta/height
banana detector
options = "angle radius all auto" is a 2D monitor with automatic limits
options = "list=1000 kx ky kz energy" records 1000 neutron event in a file
options = "multiple kx ky kz, auto abs log t, and list all neutrons"
makes 4 output 1D files and produces a complete list for all neutrons
and monitor log(abs(tof)) within automatic limits (for t)
How to monitor any instrument/component variable into a Monitor_nD
Suppose you want to monitor a variable 'age' which you assign somwhere in
the instrument:
COMPONENT MyMonitor = Monitor_nD(
xwidth = 0.1, yheight = 0.1,
user1=age, username1="Age of the Captain [years]",
options="user1, auto")
AT ...
See also the example in PreMonitor_nD to
monitor neutron parameters cross-correlations.
%BUGS
The 'auto' option for guessing optimal variable bounds should NOT be used with MPI
as each process may use different limits.
Input parameters
Parameters in boldface are required;
the others are optional.
Name
Unit
Description
Default
options
str
String that specifies the configuration of the monitor
The general syntax is "variables options..." (see Descr.).
0
filename
str
Output file name (overrides file=XX option).
0
user1
variable
Variable assigned to User1
FLT_MAX
user2
variable
Variable assigned to User2
FLT_MAX
user3
variable
Variable assigned to User3
FLT_MAX
username1
str
Name assigned to User1
0
username2
str
Name assigned to User2
0
username3
str
Name assigned to User3
0
xwidth
m
Width of detector (x).
0
yheight
m
Height of detector (y).
0
zthick
m
Thichness of detector (z).
0
xmin
m
Lower x bound of opening
0
xmax
m
Upper x bound of opening
0
ymin
m
Lower y bound of opening
0
ymax
m
Upper y bound of opening
0
zmin
m
Lower z bound of opening
0
zmax
m
Upper z bound of opening
0
bins
1
Number of bins to force for all variables.
Use 'bins' keyword in 'options' for heterogeneous bins
0
min
u
Minimum range value to force for all variables
Use 'min' or 'limits' keyword in 'options' for other limits
-1e40
max
u
Maximum range value to force for all variables
Use 'max' or 'limits' keyword in 'options' for other limits
1e40
restore_neutron
0|1
If set, the monitor does not influence the neutron state.
Equivalent to setting the 'parallel' option.