1
0
Fork 0
mirror of https://github.com/gwm17/catima.git synced 2024-11-26 12:08:52 -05:00
This commit is contained in:
hrocho 2019-10-22 20:59:21 +02:00
parent 345495af29
commit a473cd2947
7 changed files with 211 additions and 180 deletions

View File

@ -1,13 +1,3 @@
CATima
=======
C++ library for caclulalaton of energy loss, range, angular scattering and time of flight of the particle passing through matter.
The library is based on physics used in the ATIMA code,however its not 100% copy of ATIMA physics.
see CREDITS for more details.
The WebAtima UI to this library can be found here:
* https://web-docs.gsi.de/~aprochaz/webatima (only inside GSI)
* https://isotopea.com/webatima
Installation Installation
------------ ------------
CMake is used to build the library. For default build use: CMake is used to build the library. For default build use:

21
docs/api.rst Normal file
View File

@ -0,0 +1,21 @@
API Reference
#############
.. doxygenstruct:: catima::Projectile
:members:
.. doxygenclass:: catima::Material
:members:
.. doxygenclass:: catima::Layers
:members:
.. doxygenstruct:: catima::Result
:members:
:undoc-members:
.. doxygenstruct:: catima::MultiResult
:members:
:undoc-members:

View File

@ -130,151 +130,3 @@ Example Files
} }
} }
``` ```
#### Compound material
The predefined compound material can be used using the __Z__ field as an ID of the compound.
The following are supported:
```
Plastics = 201,
Air = 202,
CH2 = 203,
LH2 = 204,
LD2 = 205,
Water = 206,
Diamond = 207,
Glass = 208,
ALMG3 = 209,
ArCO2_30 = 210,
CF4 = 211,
Isobutane = 212,
Kapton = 213,
Mylar = 214,
NaF = 215,
P10 = 216,
Polyolefin = 217,
CmO2 = 218,
Suprasil = 219,
HAVAR = 220,
Steel = 221,
CO2 = 222,
CH4 = 223,
Methanol = 224,
Acetone = 225,
Acetylene = 226,
Adenine = 227,
Adipose_Tissue = 228,
Alanine = 229,
Bakelite = 230,
AgBr = 231,
AgCl = 232,
AgI = 233,
Al2O3 = 234,
Amber = 235,
Ammonia = 236,
Aniline = 237,
Anthracene = 238,
A_150 = 239,
B_100 = 240,
BaF2 = 241,
BaSO4 = 242,
Benzene = 243,
BeO = 244,
BGO = 245,
Blood = 246,
Bone_Compact = 247,
Bone_Cortical = 248,
Brain_ICRP = 249,
B4C = 250,
BC400 = 251,
nButanol = 252,
C_552 = 253,
CdTe = 254,
CdWO4 = 255,
CaCO3 = 256,
CaF2 = 257,
CaO = 258,
CaWO4 = 259,
CsF = 260,
CsI = 261,
CCl4 = 262,
C2Cl4 = 263,
Cellophane = 264,
Chlorobenzene = 265,
Chloroform = 266,
Cyclohexane = 267,
Concrete = 268,
Diethyl_Ether = 269,
Ethane = 270,
Ethanol = 271,
Ethylene = 272,
Eye_lens = 273,
Fe2O3 = 274,
FeO = 275,
Freon12 = 276,
Freon12B2 = 277,
Freon13 = 278,
Freon13B1 = 279,
Freon13I1 = 280,
Gd2O2S = 281,
GaAs = 282,
Gel_Photo_Emulsion = 283,
Glass_Pyrex = 284,
Glass_Lead = 285,
Glucose = 286,
Glutamine = 287,
Glycerol = 288,
Guanine = 289,
Gypsum = 290,
nHeptane = 291,
nHexane = 292,
KI = 293,
K2O = 294,
LaBr3 = 295,
LaOBr = 296,
La2O2S = 297,
Lung = 298,
MgCO3 = 299,
MgF2 = 300,
MgO = 301,
MS20_Tissue = 302,
Muscle_skeletal = 303,
Muscle_strained = 304,
Muscle_sucrose = 305,
Muscle_no_sucrose = 306,
Na2CO3 = 307,
NaI = 308,
NaCl = 309,
Na2O = 310,
NaNO3 = 311,
Naphthalene = 312,
Nitrobenzene = 313,
N2O = 314,
Octane = 315,
Paraffin = 316,
nPentane = 317,
PhotoEmulsion = 318,
PuO2 = 319,
Polyacrylonitrile = 320,
Polycarbonate = 321,
PMMA = 322,
POM = 323,
Polypropylene = 324,
Polystyrene = 325,
Propane = 326,
nPropanol = 327,
PVC = 328,
Pyridine = 329,
SiO2 = 330,
Skin = 331,
Sucrose = 332,
Teflon = 333,
TlCl = 334,
Toluene = 335,
Trichloroethylene = 336,
WF6 = 337,
UC2 = 338,
UC = 339,
UO2 = 340,
Urea = 341,
Valine = 342
```

View File

@ -1,10 +1,6 @@
CATima library manual CATima library manual
===================== =====================
Compiling and Instalation
-------------------------
See [README.md](README.md) for details.
[link2](catima_calculator.md)
Units Units
------ ------
The following units are used for input and outputs: The following units are used for input and outputs:
@ -21,10 +17,10 @@ Projectile
The __Projectile__ class is used to store projectile data. The __Projectile__ class is used to store projectile data.
Each projectile must provide A,Z combination, additionally charge state can be set as well. Each projectile must provide A,Z combination, additionally charge state can be set as well.
The example of projectile definition: The example of projectile definition:
~~~~~~~~~~~~~~~~~~~{.cpp} ```cpp
catima::Projectile p1(12,6); //12C projectile catima::Projectile p1(12,6); //12C projectile
catima::Projectile p2(12,6,5); //12C(5+) projectile catima::Projectile p2(12,6,5); //12C(5+) projectile
~~~~~~~~~~~~~~~~~~~ ```
to set the energy of the projectile in MeV/u units: to set the energy of the projectile in MeV/u units:
```cpp ```cpp
@ -224,3 +220,151 @@ It provides only basic interface.
Compound Pre-defined Materials
==============================
The predefined compound material can be used using the __Z__ field as an ID of the compound.
The following are supported:
```
Plastics = 201,
Air = 202,
CH2 = 203,
LH2 = 204,
LD2 = 205,
Water = 206,
Diamond = 207,
Glass = 208,
ALMG3 = 209,
ArCO2_30 = 210,
CF4 = 211,
Isobutane = 212,
Kapton = 213,
Mylar = 214,
NaF = 215,
P10 = 216,
Polyolefin = 217,
CmO2 = 218,
Suprasil = 219,
HAVAR = 220,
Steel = 221,
CO2 = 222,
CH4 = 223,
Methanol = 224,
Acetone = 225,
Acetylene = 226,
Adenine = 227,
Adipose_Tissue = 228,
Alanine = 229,
Bakelite = 230,
AgBr = 231,
AgCl = 232,
AgI = 233,
Al2O3 = 234,
Amber = 235,
Ammonia = 236,
Aniline = 237,
Anthracene = 238,
A_150 = 239,
B_100 = 240,
BaF2 = 241,
BaSO4 = 242,
Benzene = 243,
BeO = 244,
BGO = 245,
Blood = 246,
Bone_Compact = 247,
Bone_Cortical = 248,
Brain_ICRP = 249,
B4C = 250,
BC400 = 251,
nButanol = 252,
C_552 = 253,
CdTe = 254,
CdWO4 = 255,
CaCO3 = 256,
CaF2 = 257,
CaO = 258,
CaWO4 = 259,
CsF = 260,
CsI = 261,
CCl4 = 262,
C2Cl4 = 263,
Cellophane = 264,
Chlorobenzene = 265,
Chloroform = 266,
Cyclohexane = 267,
Concrete = 268,
Diethyl_Ether = 269,
Ethane = 270,
Ethanol = 271,
Ethylene = 272,
Eye_lens = 273,
Fe2O3 = 274,
FeO = 275,
Freon12 = 276,
Freon12B2 = 277,
Freon13 = 278,
Freon13B1 = 279,
Freon13I1 = 280,
Gd2O2S = 281,
GaAs = 282,
Gel_Photo_Emulsion = 283,
Glass_Pyrex = 284,
Glass_Lead = 285,
Glucose = 286,
Glutamine = 287,
Glycerol = 288,
Guanine = 289,
Gypsum = 290,
nHeptane = 291,
nHexane = 292,
KI = 293,
K2O = 294,
LaBr3 = 295,
LaOBr = 296,
La2O2S = 297,
Lung = 298,
MgCO3 = 299,
MgF2 = 300,
MgO = 301,
MS20_Tissue = 302,
Muscle_skeletal = 303,
Muscle_strained = 304,
Muscle_sucrose = 305,
Muscle_no_sucrose = 306,
Na2CO3 = 307,
NaI = 308,
NaCl = 309,
Na2O = 310,
NaNO3 = 311,
Naphthalene = 312,
Nitrobenzene = 313,
N2O = 314,
Octane = 315,
Paraffin = 316,
nPentane = 317,
PhotoEmulsion = 318,
PuO2 = 319,
Polyacrylonitrile = 320,
Polycarbonate = 321,
PMMA = 322,
POM = 323,
Polypropylene = 324,
Polystyrene = 325,
Propane = 326,
nPropanol = 327,
PVC = 328,
Pyridine = 329,
SiO2 = 330,
Skin = 331,
Sucrose = 332,
Teflon = 333,
TlCl = 334,
Toluene = 335,
Trichloroethylene = 336,
WF6 = 337,
UC2 = 338,
UC = 339,
UO2 = 340,
Urea = 341,
Valine = 342
```

View File

@ -29,13 +29,13 @@ extensions = [
'breathe' 'breathe'
] ]
breathe_projects = {'nurex':'build/doxygenxml/'} breathe_projects = {'catima':'build/doxygenxml/'}
breathe_default_project = 'catima' breathe_default_project = 'catima'
breathe_domain_by_extenstion = {'h':'cpp'} breathe_domain_by_extenstion = {'h':'cpp'}
primary_domain = 'cpp' primary_domain = 'cpp'
highlight_language = 'cpp' highlight_language = 'cpp'
# Add any paths that contain templates here, relative to this directory. # Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates'] #templates_path = ['_templates']
# List of patterns, relative to source directory, that match files and # List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files. # directories to ignore when looking for source files.
@ -53,4 +53,4 @@ html_theme = 'sphinx_rtd_theme'
# Add any paths that contain custom static files (such as style sheets) here, # Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files, # relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css". # so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static'] #html_static_path = ['_static']

View File

@ -17,6 +17,24 @@ Content
README README
.. toctree::
:maxdepth: 1
:caption: Manual
catima_manual
.. toctree::
:maxdepth: 1
:caption: Console App
catima_calculator
.. toctree::
:maxdepth: 1
:caption: API Reference
api
Indices and tables Indices and tables
================== ==================

View File

@ -38,9 +38,15 @@ namespace catima{
double Z=0; double Z=0;
double Q=0; double Q=0;
double T=0; double T=0;
Projectile& operator()(double e){T=e;return *this;}
Projectile(){} /// constructor
/// @param a - mass
/// @param z - proton number
/// @param q - charge state
/// @param t - energy in MeV/u
Projectile(double a, double z, double q=0, double t=0):A(a),Z(z),Q(q),T(t){if(q==0)Q=Z;} Projectile(double a, double z, double q=0, double t=0):A(a),Z(z),Q(q),T(t){if(q==0)Q=Z;}
Projectile& operator()(double e){T=e;return *this;}
Projectile() = default;
}; };
bool operator==(const Projectile &a, const Projectile&b); bool operator==(const Projectile &a, const Projectile&b);
@ -85,10 +91,10 @@ namespace catima{
* constructor to add 1 or multiple element into the Material * constructor to add 1 or multiple element into the Material
* \code{.cpp} * \code{.cpp}
* Maetrial water({ * Maetrial water({
{1,1,2}, * {1,1,2},
{16,8,1}, * {16,8,1},
1.0, // optional density * 1.0, // optional density
}); * });
* \endcode * \endcode
*/ */
Material(std::initializer_list<std::array<double,3>>list,double _density=0.0, double ipot = 0.0, double mass=0.0); Material(std::initializer_list<std::array<double,3>>list,double _density=0.0, double ipot = 0.0, double mass=0.0);