Resolution kernel for direct-geometry single-crystal spectrometers (aims at a pixel and TOF window).
Author: Fahima Islam (McStas port of the MCViNE DGSSXResKernel; MCViNE by J. Y. Y. Lin et al.)
Origin: MCViNE, https://github.com/mcvine/mcvine (mccomponents/lib/kernels/sample/DGSSXResKernel.cc)
Date: 2026-09-29
Scatters towards a target disk (position target_x/y/z or target_index, radius focus_r) and picks the arrival time at the target uniformly in tof_at_target +/- dtof/2 (absolute neutron time, s). The final speed follows from the flight distance. Weight: solid_angle/4pi * dtof * dE/dt * vf/vi, as in MCViNE. Record ki/kf with monitors to build the resolution ellipsoid (similar in purpose to McStas’ TOFRes_sample, with MCViNE’s weighting).
Transport (same as MCViNE HomogeneousNeutronScatterer): on the first passage the neutron is forced to scatter at a uniformly chosen depth, weighted by path length, attenuation exp(-(mu+sigma)x) and the scattering coefficient; on exit it is attenuated by exp(-(mu+sigma)L_out). With order>1 further scatterings are sampled analogically (truncated exponential). With p_transmit>0 that fraction of events is kept as the attenuated direct beam. mu(v) = absorption_coefficient*2200/v. Events for which the kernel cannot scatter (kinematically forbidden) are absorbed.
Geometry: box (xwidth,yheight,zdepth), cylinder (radius,yheight), hollow cylinder (+thickness) or sphere (radius only). All vectors (Q, targets, reciprocal vectors, atom positions) are in the component’s local frame.
Uses the shared runtime share/mcvine-lib.h/.c.
Example: MCViNE_DGSSXRes(target_index=2, focus_r=0.0125, tof_at_target=0.0052, dtof=1e-5, scattering_coefficient=10, xwidth=0.01, yheight=0.01, zdepth=0.01)
Parameters in boldface are required; the others are optional.
|
Name |
Unit |
Description |
Default |
|
|
|||
|
target_x |
m |
Target position (component frame) x |
0 |
|
target_y |
m |
Target position y |
0 |
|
target_z |
m |
Target position z |
0 |
|
target_index |
1 |
Relative index of a component to aim at (overrides target_x/y/z when non-zero) |
0 |
|
focus_r |
m |
Radius of the target disk |
0.01 |
|
tof_at_target |
s |
Desired absolute time of arrival at the target |
0.001 |
|
dtof |
s |
Width of the time window |
1e-5 |
|
absorption_coefficient |
m\(^{-1}\) |
Absorption coefficient at 2200 m/s (MCViNE convention; scales as 1/v) |
0 |
|
scattering_coefficient |
m\(^{-1}\) |
Scattering coefficient |
0 |
|
sigma_abs |
barn |
Alternative: absorption cross section per unit cell at 2200 m/s (used when Vc>0) |
0 |
|
sigma_scat |
barn |
Alternative: scattering cross section per unit cell (used when Vc>0) |
0 |
|
Vc |
Å\(^{3}\) |
Unit cell volume; when >0, coefficients are computed from sigma_abs, sigma_scat |
0 |
|
radius |
m |
Outer radius of a cylinder (with yheight) or of a sphere (yheight=0) |
0 |
|
xwidth |
m |
Width of a box sample |
0 |
|
yheight |
m |
Height of a box or cylinder sample |
0 |
|
zdepth |
m |
Depth of a box sample |
0 |
|
thickness |
m |
Wall thickness of a hollow cylinder (0: filled) |
0 |
|
pack |
1 |
Packing factor (scales absorption and scattering coefficients) |
1 |
|
p_transmit |
1 |
Monte Carlo fraction of events kept as unscattered transmitted beam (0: always scatter) |
0 |
|
order |
1 |
Maximum number of scattering events per neutron (1: single scattering) |
1 |
|
|
|||
|
|
|||
|
|
|||
Component source code found in file MCViNE_DGSSXRes.comp.
MCViNE documentation: https://mcvine.github.io