Range is a stopping power and range library written in C. It creates and stores in memory range tables based on the Northcliffe-Schilling[1] and Hubert-Bimbot-Gauvin[2] correlations that are used to calculate the energy loss of an ion after passage through a foil, or the incoming energy prior to passage based on the outgoing energy.
Since the Northcliffe-Schilling and Hubert-Bimbot-Gauvin correlations are valid for E/A < 12 MeV/A and 2.5 < E/A < 500 MeV/A, respectively, this library is mostly useful in analyzes of nuclear physics experiments in the low (E/A < 10 A MeV) and intermediate (10 < E/A < 150 A MeV) energy regimes, where usually a projectile, or reaction product, loose energy in the target material, dead layers in a detector, or in transmission detectors where only a fraction of the energy is deposited.
The library consists of four functions, passage(), egassap(), rangen() and thickn(), and the program range which is a front-end useful for quick estimations. The function passage() returns the ion energy after passage through an absorber, whereas egassap() returns the ingoing ion energy, given the energy after passage. If you know the energy of a beam, passage() can be used to calculate the energy deposited in a detector. Similarly, if you know the energy deposited by a reaction product in a detector, egassap() can be used to calculate its initial energy. The function rangen() returns the range of a projectile in a given material, and the function thickn() returns the foil thickness needed to produce a given energy loss. Manual pages and examples are available.
range is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version.
This is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License for more details.
File: range-0.1.3.tar.gz
Size: 359468 bytes
MD5 checksum: cc0d7ac71894bb00b4092c2de2ab3e87
Untar the source,
$ tar -zxvf range-0.1.3.tar.gz
For a basic installation do shell commands,
$ cd range-0.1.3 $ ./configure $ make $ sudo make install $ sudo ldconfig
Do
$ ./configure --help
On Debian systems, install packages devscripts, debhelper and fakeroot, then
$ cd range-0.1.3 $ debuild binary $ cd .. $ dpkg -i range_0.1.3-1_i386.deb range-dev_0.1.3-1_i386.deb
Do 'man range' to see the synopsis and description of the range program.
Do 'man 3 passage' to see the synopsis and description of the range functions.
In /usr/local/share/doc/range/examples/ you can find an example. Compile the code with,
$ gcc -O -Wall passage-example.c -o passage -lrange -lm [-I/usr/local/include] [-L/usr/local/lib]
and run,
$ ./passage Calculating the energy of an alpha particle in air Initial mm of air final energy energy (MeV) [1] [2] ------- --------- ------ 25.0 0.500 23.60 23.57 25.0 1.000 22.14 22.08 25.0 1.500 20.60 20.50 25.0 2.000 18.96 18.82 25.0 2.500 17.21 17.01 25.0 3.000 15.30 15.05 25.0 3.500 13.19 12.87 25.0 4.000 10.78 10.38 25.0 4.500 7.88 7.37 25.0 5.000 3.74 2.72 [1] Northcliffe-Schilling correlations [2] Hubert-Bimbot-Gauvin correlations
To use the range functions in ROOT load the library with,
gSystem->Load("/usr/local/lib/librange")
then compile the code as usual. For example, testRange.C,
root [0] gSystem->Load("/usr/local/lib/librange")
root [1] .L testRange.C++
root [2] testRange()
98.9758
119.114
139.215
157.807
263.747
The method of constructing range tables to interpolate to desired range values is due to Prof. Jan-Olov Liljenzin, Chalmers Institute of Technology, Sweden. The original program written in FORTRAN was inherited to me during my time as a Ph.D. student at Uppsala University. Since the source code was not intended for the general public it was never copyrighted in any sense. I have taken the liberty to take parts of the original code, at least the spirit, port it to C and license it under GPL in the interest of a broader scientific community.
[1] - C. Northcliffe, R.F. Schilling, Nucl. Data Tables A7, 233 (1970).
[2] - F. Hubert, R. Rimbot and H. Gauvin, Atomic Data and Nuclear Data Tables 46, pp. 1-213 (1990).
This document was generated using AFT v5.096