The convolution fitter finds the best least-squares fit of one or several free parameters in an S(q,E) model using a Monte-Carlo convolution approach. The S(q,E) model is fitted to one or more given measurement data files.
The convolution fitter can be used either directly form the GUI or alternatively from the command line.
If a simulation has already been set up in the "Convolution" dialog, a resolution convolution fit can simply be performed by designating S(q,E) model variables as open fit parameters:
(1) Click on the "Parameters..." button next to the "Model Source" selection and tick the "Fit" checkbox for each parameter you want to use in the fit.
(2) The value of the parameter will be used as initial guess, additionally a non-zero error has to be assigned to each fit parameter to serve as fitting uncertainty. Optionally, the range of the fitting region can be limited in the "Limits" column.
(3) Once the parameters are set up, click on "Start Fit".
The fitter is called on the command line by: "takin --convofit my_fit.job". The input job file "my_fit.job" in this example has the following structure:
Calling "convofit" without command-line arguments shows its global options.
; convofit sample job file
; input files
input
{
; file with the TAS scan
scan_file "my_measurement.dat"
; temperature column in the scan file
temp_col "Ts"
; field column in the scan file
field_col "Bs"
; counter column in the scan file
counts_col "ctr1"
; monitor counter column in the scan file
monitor_col "mon2"
; normalise detector counts to monitor counts
norm_to_monitor 1
; manually set scan variable
;scan_axis "E"
; overrides
;temp_override "25"
;field_override "0.5"
; the instrument definition created by
; the Takin resolution parameter dialog
instrument_file "my_instrument.taz"
; which S(q,E) model to use?
sqw_model "py"
; S(q,E) input file. Here, a Python script
sqw_file "my_sqw.py"
; how is the temperature/field variable named
; the S(q,E) model? Here, "g_T" and "g_H" are
; global variables in the "my_sqw.py" script.
sqw_temp_var "g_T"
sqw_field_var "g_H"
; fix some variables in the S(q,E) model
sqw_set_params "g_my_param = 12.3"
; flip the sense of the coordinate system
flip_lhs_rhs 0
}
; output files
output
{
; a simplified copy of the original scan file for easier reading
; in an external plot program
scan_file "my_scan.dat"
; a file describing the fit results
model_file "my_model.dat"
; logs
log_file "my_log.dat"
; show a plot at the end of the fit
plot 1
; show live plots during fitting (very useful for debugging)
; gnuplot has to be installed for this to work
; (see "Set-up" section of this manual)
plot_intermediate 1
; specify an available gnuplot terminal
; list all available terminals using: gnuplot -e "set term"
; typically use: "x11", "qt", or "wxt"
; if no plot window appears, this is set to the wrong value!
plot_term "x11 noraise"
}
; includes a fit settings file (see below)
#include "my_settings.job"
; convofit sample fit settings file
; Monte-Carlo settings
montecarlo
{
; number of Monte-Carlo neutrons
neutrons 10000
; perform a secondary convolution of the sample shape (still beta)
sample_positions 1
; keep the same random seed for more stability
recycle_neutrons 1
}
; Resolution algo settings
resolution
{
; which algorithm to use?
algorithm "eck" ; "cn", "pop", "eck", or "viol"
; include the "resolution volume" prefactor?
use_r0 1
; use optimum vertical/horizontal monochromator/analyser focusing?
focus_mono_v 1
focus_mono_h 0
focus_ana_v 0
focus_ana_h 1
}
; Fitter settings
fitter
{
; do a convolution fit or just a plain convolution
; using the initial values?
do_fit 1
; which minimiser to use?
minimiser "simplex" ; "simplex" or "migrad"
; which Minuit strategy?
strategy 1 ; 0 (low), 1 (medium) or 2 (high)
; number of maximum function calls
max_funccalls 500
; Minuit's targeted "estimated distance to minimum"
tolerance 10.
sigma 1.
}
; which S(q,E) model parameters should be fitted?
; don't remove "scale", "slope" or "offs"!
fit_parameters
{
; the fit parameters: "scale", "slope" and "offs" are internal variables,
; "g_linewidth" is a parameter in the S(q,E) model. In this example,
; it is a global name in the "my_sqw.py" script.
params "scale " \
"slope " \
"offs " \
"g_linewidth "
; initial values of the three parameters
values "1e9 " \
"0 " \
"1e-6 " \
"0.02 "
; errors of the three parameters
errors "0.5e9 " \
"0 " \
"0.5e-6 " \
"0.01 "
; which parameters should be fitted?
; here, the fourth parameter, i.e. g_linewidth, is the only
; fit parameter
fixed "1 1 1 0 "
}