Garfield++ 4.0
A toolkit for the detailed simulation of particle detectors based on ionisation measurement in gases and semiconductors
Loading...
Searching...
No Matches
EnTransfCS.h
Go to the documentation of this file.
1#ifndef ENTRANFCS_H
2#define ENTRANFCS_H
3
5
6namespace Heed {
7
8#define EXCLUDE_A_VALUES // exclude absorption values
9
10/// The PAI cross section of energy transfers from charged particle to media.
11/// The particle has fixed parameters (energy, speed, etc.), which
12/// are not affected by energy transfers, since they are considered
13/// too small compared with the particle energy.
14///
15/// 2003, I. Smirnov
16
18 public:
19 /// Default constructor
20 EnTransfCS() = default;
21 /// Constructor
22 EnTransfCS(double fparticle_mass, double fgamma_1, bool fs_primary_electron,
23 HeedMatterDef* fhmd, long fparticle_charge = 1);
24
25 void print(std::ostream& file, int l) const;
26 EnTransfCS* copy() const { return new EnTransfCS(*this); }
27
28 /// Particle mass [MeV]
29 double particle_mass = 0.;
30 /// Charge in units of electron charge (used square, sign does not matter).
32
33 /// Lorentz factor - 1 (the best dimensionless measurement of speed).
34 double gamma_1 = 0.;
35
36 /// Max. energy transfer [MeV]
37 double max_etransf = 0.;
38 /// Flag controlling the form of Rutherford scattering.
39 /// For our purposes it is good to have simple form,
40 /// so this variable is initialized to 1.
41 /// Simple form means that there are two terms.
42 /// The third term is assumed zero.
43 bool s_simple_form = true;
44 /// Flag indicating whether the primary particle is an electron.
45 bool s_primary_electron = false;
46
47 HeedMatterDef* hmd = nullptr;
48
49 /// In the following arrays there is the only index: the energy.
50 /// The meaning: the average value on the energy interval.
51 std::vector<double> log1C; ///< common first log without cs
52 std::vector<double> log2C; ///< common second log without cs
53 std::vector<double> chereC; ///< Cherenkov's radiation
54 std::vector<double> chereCangle; ///< angle of Cherenkov's radiation
55 std::vector<double> Rruth; ///< term called R in my paper
56
57 /// Sum of (ionization) differential cross-section terms
58 std::vector<double> addaC;
59 /// Integrated (ionization) cross-section
60 double quanC = 0.;
61
62#ifndef EXCLUDE_A_VALUES
63 /// Sum of (absorption) differential cross-section terms
64 std::vector<double> addaC_a;
65 /// Integrated (absorption) cross-section
66 double quanC_a = 0.;
67#endif
68
69 // First moment (mean restricted energy loss) [MeV]
70 double meanC = 0.;
71 // First moment with additional tail to max. kinematically allowed transfer,
72 // calculated only for heavy particles (integral for electrons non-trivial).
73 double meanC1 = 0.;
74#ifndef EXCLUDE_A_VALUES
75 double meanC1_a = 0.;
76 double meanC_a = 0.;
77#endif
78
79 /// In the following arrays there are three indices:
80 /// atom number in the matter, shell number in atom, energy
81 /// Fraction of Cherenkov term.
82 std::vector<std::vector<std::vector<double> > > cher;
83 /// Rutherford term
84 std::vector<std::vector<std::vector<double> > > fruth;
85 /// Sum
86 std::vector<std::vector<std::vector<double> > > adda;
87 /// Integral, normalised to unity
88 std::vector<std::vector<std::vector<double> > > fadda;
89#ifndef EXCLUDE_A_VALUES
90 /// Cherenkov term (total absorption)
91 std::vector<std::vector<std::vector<double> > > cher_a;
92 /// Sum (total absorption)
93 std::vector<std::vector<std::vector<double> > > adda_a;
94 /// Integral (total absorption), normalised to unity
95 std::vector<std::vector<std::vector<double> > > fadda_a;
96#endif
97
98 /// Number of collisions / cm, for each atom and shell.
99 std::vector<std::vector<double> > quan;
100 /// First moment, for each atom and shell.
101 std::vector<std::vector<double> > mean;
102#ifndef EXCLUDE_A_VALUES
103 /// Number of collisions / cm (total absorption), for each atom and shell.
104 std::vector<std::vector<double> > quan_a;
105 /// First moment (total absorption), for each atom and shell.
106 std::vector<std::vector<double> > mean_a;
107#endif
108
109 std::vector<double> length_y0;
110};
111}
112
113#endif
std::vector< std::vector< double > > quan
Number of collisions / cm, for each atom and shell.
Definition: EnTransfCS.h:99
long particle_charge
Charge in units of electron charge (used square, sign does not matter).
Definition: EnTransfCS.h:31
std::vector< double > Rruth
term called R in my paper
Definition: EnTransfCS.h:55
std::vector< double > log2C
common second log without cs
Definition: EnTransfCS.h:52
double gamma_1
Lorentz factor - 1 (the best dimensionless measurement of speed).
Definition: EnTransfCS.h:34
std::vector< double > chereCangle
angle of Cherenkov's radiation
Definition: EnTransfCS.h:54
std::vector< std::vector< double > > mean
First moment, for each atom and shell.
Definition: EnTransfCS.h:101
std::vector< std::vector< std::vector< double > > > fadda
Integral, normalised to unity.
Definition: EnTransfCS.h:88
std::vector< double > log1C
common first log without cs
Definition: EnTransfCS.h:51
double particle_mass
Particle mass [MeV].
Definition: EnTransfCS.h:29
std::vector< std::vector< std::vector< double > > > fruth
Rutherford term.
Definition: EnTransfCS.h:84
EnTransfCS * copy() const
Definition: EnTransfCS.h:26
HeedMatterDef * hmd
Definition: EnTransfCS.h:47
bool s_primary_electron
Flag indicating whether the primary particle is an electron.
Definition: EnTransfCS.h:45
EnTransfCS()=default
Default constructor.
std::vector< std::vector< std::vector< double > > > adda
Sum.
Definition: EnTransfCS.h:86
std::vector< double > chereC
Cherenkov's radiation.
Definition: EnTransfCS.h:53
std::vector< double > length_y0
Definition: EnTransfCS.h:109
std::vector< double > addaC
Sum of (ionization) differential cross-section terms.
Definition: EnTransfCS.h:58
std::vector< std::vector< std::vector< double > > > cher
Definition: EnTransfCS.h:82
double quanC
Integrated (ionization) cross-section.
Definition: EnTransfCS.h:60
void print(std::ostream &file, int l) const
Definition: EnTransfCS.cpp:477
double max_etransf
Max. energy transfer [MeV].
Definition: EnTransfCS.h:37
Definition: BGMesh.cpp:6