Garfield++ v2r0
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 DEBUG_EnTransfCS // allows to print additional information
9// and keeps it in class, which makes it bigger
10
11#define EXCLUDE_A_VALUES // exclude absorption values
12#define EXCLUDE_VAL_FADDA // exclude values not necessary for MC
13
14/// The PAI cross section of energy transfers from charged particle to media.
15/// The particle has fixed parameters (energy, speed, etc.), which
16/// are not affected by energy transfers, since they are considered
17/// too small compared with the particle energy.
18///
19/// 2003, I. Smirnov
20
21class EnTransfCS : public RegPassivePtr {
22 public:
23 /// Default constructor
25 /// Constructor
26 EnTransfCS(double fparticle_mass, double fgamma_1, int fs_primary_electron,
27 HeedMatterDef* fhmd, long fparticle_charge = 1);
28 virtual void print(std::ostream& file, int l) const;
29 virtual EnTransfCS* copy() const { return new EnTransfCS(*this); }
30
31 /// Particle mass [MeV]
33 /// Total energy [MeV]
35 /// Charge in units of electron charge (used square, sign does not matter).
37
38 /// Lorentz factor - 1 (the best dimensionless measurement of speed).
39 double gamma_1;
40
41 /// Max. energy transfer [MeV]
43 /// Flag controlling the form of Rutherford scattering.
44 /// For our purposes it is good to have simple form,
45 /// so this variable is initialized to 1.
46 /// Simple form means that there are two terms.
47 /// The third term is assumed zero.
49 /// Flag that the primary particle is the electron
51
53
54 /// In the following arrays there is the only index: the energy.
55 /// The meaning: the average value on the energy interval.
56 std::vector<double> log1C; ///< common first log without cs
57 std::vector<double> log2C; ///< common second log without cs
58 std::vector<double> chereC; ///< Cherenkov's radiation
59 std::vector<double> chereCangle; ///< angle of Cherenkov's radiation
60 std::vector<double> Rruth; ///< term called R in my paper
61#ifdef DEBUG_EnTransfCS
62 // Total Rutherford, sum of fruth by atoms and shells, per one electron
63 // (in the paper it is per atom).
64 std::vector<double> truth;
65#endif
66
67 /// Sum of (ionization) differential cross-section terms
68 std::vector<double> addaC;
69 /// Integrated (ionization) cross-section
70 double quanC;
71
72#ifndef EXCLUDE_A_VALUES
73 /// Sum of (absorption) differential cross-section terms
74 std::vector<double> addaC_a;
75 /// Integrated (absorption) cross-section
76 double quanC_a;
77#endif
78
79 // First moment (mean restricted energy loss) [MeV]
80 double meanC;
81 // First moment with additional tail to max. kinematically allowed transfer,
82 // calculated only for heavy particles (integral for electrons non-trivial).
83 double meanC1;
84#ifndef EXCLUDE_A_VALUES
85 double meanC1_a;
86 double meanC_a;
87#endif
88 // Secondary ionization
89 double meaneleC;
90 double meaneleC1;
91
92 /// In the following arrays there are three indices:
93 /// atom number in the matter, shell number in atom, energy
94 /// Fraction of Cherenkov term.
95 std::vector<std::vector<std::vector<double> > > cher;
96 /// Rutherford term
97 std::vector<std::vector<std::vector<double> > > fruth;
98 /// Sum
99 std::vector<std::vector<std::vector<double> > > adda;
100 /// Integral, normalised to unity
101 std::vector<std::vector<std::vector<double> > > fadda;
102#ifndef EXCLUDE_A_VALUES
103 std::vector<std::vector<std::vector<double> > > cher_a;
104 std::vector<std::vector<std::vector<double> > > adda_a;
105 std::vector<std::vector<std::vector<double> > > fadda_a;
106#endif
107
108#ifndef EXCLUDE_VAL_FADDA
109 /// The true values of the integral (should be equal to quan)
110 std::vector<std::vector<double> > val_fadda; // integral * hmd->xeldens;
111#ifndef EXCLUDE_A_VALUES
112 std::vector<std::vector<double> > val_fadda_a; // integral * hmd->xeldens;
113#endif
114#endif
115
116 /// In the following arrays there are two indices:
117 /// atom number in the matter, shell number in atom.
118 std::vector<std::vector<double> > quan; // per 1 cm, used for path length
119 std::vector<std::vector<double> > mean;
120#ifndef EXCLUDE_A_VALUES
121 std::vector<std::vector<double> > quan_a;
122 std::vector<std::vector<double> > mean_a;
123#endif
124
125 std::vector<double> length_y0;
126};
127}
128
129#endif
std::vector< std::vector< double > > quan
Definition: EnTransfCS.h:118
long particle_charge
Charge in units of electron charge (used square, sign does not matter).
Definition: EnTransfCS.h:36
std::vector< double > Rruth
term called R in my paper
Definition: EnTransfCS.h:60
std::vector< double > log2C
common second log without cs
Definition: EnTransfCS.h:57
double gamma_1
Lorentz factor - 1 (the best dimensionless measurement of speed).
Definition: EnTransfCS.h:39
std::vector< double > chereCangle
angle of Cherenkov's radiation
Definition: EnTransfCS.h:59
double particle_ener
Total energy [MeV].
Definition: EnTransfCS.h:34
virtual EnTransfCS * copy() const
Definition: EnTransfCS.h:29
std::vector< std::vector< double > > mean
Definition: EnTransfCS.h:119
std::vector< std::vector< std::vector< double > > > fadda
Integral, normalised to unity.
Definition: EnTransfCS.h:101
std::vector< double > log1C
common first log without cs
Definition: EnTransfCS.h:56
double particle_mass
Particle mass [MeV].
Definition: EnTransfCS.h:32
std::vector< std::vector< std::vector< double > > > fruth
Rutherford term.
Definition: EnTransfCS.h:97
int s_primary_electron
Flag that the primary particle is the electron.
Definition: EnTransfCS.h:50
PassivePtr< HeedMatterDef > hmd
Definition: EnTransfCS.h:52
std::vector< std::vector< std::vector< double > > > adda
Sum.
Definition: EnTransfCS.h:99
std::vector< double > chereC
Cherenkov's radiation.
Definition: EnTransfCS.h:58
double meaneleC1
Definition: EnTransfCS.h:90
std::vector< double > length_y0
Definition: EnTransfCS.h:125
std::vector< double > addaC
Sum of (ionization) differential cross-section terms.
Definition: EnTransfCS.h:68
std::vector< std::vector< std::vector< double > > > cher
Definition: EnTransfCS.h:95
double quanC
Integrated (ionization) cross-section.
Definition: EnTransfCS.h:70
virtual void print(std::ostream &file, int l) const
Definition: EnTransfCS.cpp:464
double max_etransf
Max. energy transfer [MeV].
Definition: EnTransfCS.h:42
EnTransfCS()
Default constructor.
Definition: EnTransfCS.h:24
Definition: BGMesh.cpp:5