VITESS
The Virtual Instrumentation Tool for the ESS (VITESS) is an open source software package for the simulation of neutron scattering experiments. The software is maintained and developed by the Helmholtz-Zentrum Berlin für Materialien und Energie (HZB), the former Hahn-Meitner-Institur HMI, and available for Windows, Linux and Macintosh on the VITESS homepage. It is widely used for simulation of existing neutron scattering instruments as well as for the development of new instruments. VITESS was initiated by F. Mezei in 1998, closely followed by the first release of VITESS in 1999 and version 2 in 2001. The current  version 3 including an X3D visualization interface has been released in November 2012. Although it was initially developed to aid the design of neutron scattering instruments for the European Spallation Source (ESS) as the name implies, VITESS serves as a generic simulation tool for a large variety of neutron scattering instruments at all major pulsed or continuous neutron sources. It comprises all established instrument hardware such as neutron optics (e.g. guides, apertures, lenses), wavelength selectors (e.g. disc choppers, velocity selectors) and a growing variety of samples, allowing to perform virtual experiments including sophisticated setups like polarized neutrons in magnetic fields . Parameters specifying the instrument components can be given by means of a graphical user interface, which makes VITESS comparably easy to use and quick to learn for new users, while advanced users can contribute their own modules. The validity of VITESS simulations is tested by comparison with other neutron simulation packages and with measurements at neutron scattering facilities. Other simulation packages for neutron scattering instruments include McStas, Restrax, NISP and IDEAS. Working principle. VITESS simulations are carried out by means of a Monte Carlo ray-tracing method. Neutron trajectories are created in a source module or loaded from a file  created in a previous simulation. Each neutron is assigned a count rate which is modified on each interaction with the instrument, like the reflection at or transmission through a (super)mirror plate. The trajectory is discarded if the neutron does not hit the subsequent component or gets absorbed. Some components (e.g. sample environment) can multiply neutron trajectories by splitting the neutrons into several possible final states and assigning the appropriate probability to each of them, thus keeping the total neutron intensity either constant or decreasing if neutrons are lost. Instrument parts are represented by modules which run independently in a pipe  structure during simulation. Neutrons are passed from one module to the next in packages of typically 10000 neutrons, meaning that for most simulations that require more statistics, all modules run in parallel. This modular structure allows to split the simulation into several parts, and e.g. save the neutrons in any part of the instrument to feed them as input to the subsequent part in a separate simulation.