Jpp 19.3.0-rc.2
the software that should make you happy
Loading...
Searching...
No Matches
JIonization.hh
Go to the documentation of this file.
1#ifndef __JPHYSICS_JIONIZATION__
2#define __JPHYSICS_JIONIZATION__
3
4#include <map>
5
6#include "JLang/JException.hh"
7
8/**
9 * \author vcarretero
10 */
11
12namespace JPHYSICS {}
13namespace JPP { using namespace JPHYSICS; }
14
15namespace JPHYSICS {
16
18
19 /**
20 * Struct for the Sternheimer coefficients.\n
21 * Reference: R.M. Sternheimer, M.J. Berger, S.M. Seltzer. Density effect for the ionization loss of charged particles in various substances, Atomic Data and Nuclear Data Tables, Volume 30, Issue 2, 1984, Pages 261-271,ISSN 0092-640X, https://doi.org/10.1016/0092-640X(84)90002-0.
22 */
23 struct JSter {
24 double I; //!< Ionization potentian [GeV]
25 double X0; //!< Correction density parameter
26 double X1; //!< Correction density parameter
27 double a; //!< Correction density parameter
28 double m; //!< Correction density parameter
29 double C; //!< Correction density parameter
30 };
31
32
33 /**
34 * Auxiliary data structure Ster coefficients as a function of proton number.
35 */
37 public std::map<int, JSter>
38 {
39 /**
40 * Default constructor.
41 */
43 {
44 (*this)[ 1] = { 21.8e-9, 0.4400, 1.8856, 0.1348, 5.6249, -3.0977}; // H
45 (*this)[ 8] = { 95.0e-9, 0.2868, 2.0000, 0.5223, 3.0000, -3.9471}; // O
46 (*this)[11] = { 149.0e-9, 0.2880, 3.1962, 0.0777, 3.6452, -5.0526}; // Na
47 (*this)[17] = { 174.0e-9, 0.2000, 3.0000, 0.1802, 3.0000, -4.8776}; // Cl
48 (*this)[ 6] = { 78.0e-9,-0.0090, 2.4817, 0.2076, 2.9532, -2.8926}; // C
49 (*this)[12] = { 156.0e-9, 0.1499, 3.0668, 0.0816, 3.6166, -4.5297}; // Mg
50 (*this)[19] = { 190.0e-9, 0.3851, 3.1724, 0.1983, 2.9233, -5.6423}; // K
51 (*this)[16] = { 180.0e-9, 0.1580, 2.7159, 0.3399, 2.6456, -4.6659}; // S
52 (*this)[14] = { 173.0e-9, 0.2015, 2.8716, 0.1492, 3.2546, -4.4355}; // Si
53 (*this)[13] = { 166.0e-9, 0.1708, 3.0127, 0.0802, 3.6345, -4.2395}; // Al
54 (*this)[26] = { 286.0e-9,-0.0012, 3.1531, 0.1468, 2.9632, -4.2911}; // Fe
55 (*this)[22] = { 233.0e-9, 0.0957, 3.0386, 0.1566, 3.0302, -4.4450}; // Ti
56 (*this)[20] = { 191.0e-9, 0.3228, 3.1191, 0.1564, 3.0745, -5.0396}; // Ca
57 (*this)[35] = { 357.0e-9, 0.3669, 3.0000, 0.2211, 3.0000, -5.7268}; // Br
58 }
59
60
61 /**
62 * Get Ster coefficients for given proton number.
63 *
64 * \param Z proton number
65 * \return Ster coefficients
66 */
67 const JSter& operator()(const int Z) const
68 {
69 const_iterator i = this->find(Z);
70
71 if (i != this->end())
72 return i->second;
73 else
74 THROW(JValueOutOfRange, "Invalid proton number " << Z);
75 }
76 };
77
78
79 /**
80 * Function object for Ster coefficients.
81 */
83}
84
85#endif
Exceptions.
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Exception for accessing a value in a collection that is outside of its range.
Auxiliary methods for light properties of deep-sea water.
static JSterCoefficient getSterCoefficient
Function object for Ster coefficients.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Auxiliary data structure Ster coefficients as a function of proton number.
JSterCoefficient()
Default constructor.
const JSter & operator()(const int Z) const
Get Ster coefficients for given proton number.
Struct for the Sternheimer coefficients.
double C
Correction density parameter
double m
Correction density parameter.
double I
Ionization potentian [GeV].
double X1
Correction density parameter.
double a
Correction density parameter.
double X0
Correction density parameter.