Garfield++ v1r0
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
4
5/*
6The PAI cross section of energy transfers from charged particle
7to media.
8The particle has fixed parameters: energy, speed, etc., which
9are not affected to energy transfers, since they are considered
10too little if compared with the particle energy.
11
122003, I. Smirnov
13*/
14
15namespace Heed {
16
17//#define DEBUG_EnTransfCS // allows to print additional information
18// and keeps it in class, which makes it bigger
19
20#define EXCLUDE_A_VALUES // exclude absorption values
21#define EXCLUDE_VAL_FADDA // exclude values not necessary for MC
22// #define EXCLUDE_MEAN // exclude calculation of means
23
24#define CLEAR_ARRAYS
25
26class EnTransfCS : public RegPassivePtr {
27 public:
28 /// Constructors
29 EnTransfCS(void) {}
30 ;
31 EnTransfCS(double fparticle_mass, double fgamma_1, int fs_primary_electron,
32 HeedMatterDef* fhmd, long fparticle_charge = 1);
33 virtual void print(std::ostream& file, int l) const;
35
36 /// Particle mass [MeV]
38 /// Kinetic energy [MeV]
40 /// Total energy [MeV]
42 /// Charge in units of electron charge (used square, sign does not matter).
44
45 double beta;
46 double beta2; // beta^2
47 double beta12; // 1 - beta^2
48 double gamma;
49 double gamma_1; // gamma - 1 (the best dimensionless measurement of speed)
50
51 /// Max. energy transfer [MeV]
53 /// Flag controlling the form of Rutherford scattering.
54 /// For our purposes it is good to have simple form,
55 /// so this variable is initialized to 1.
56 /// Simple form means that there are two terms.
57 /// The third term is assumed zero.
59 // Flag that the primary particle is the electron
61
63
64 /// In the following arrays there is the only index: the energy.
65 /// The meaning: the average value on the energy interval.
66 DynLinArr<double> log1C; // common first log without cs
67 DynLinArr<double> log2C; // common second log without cs
68 DynLinArr<double> chereC; // Cherenkov's radiation
69 DynLinArr<double> chereCangle; // angle of Cherenkov's radiation
70 DynLinArr<double> Rreser; // term called R in my paper
71#ifdef DEBUG_EnTransfCS
72 DynLinArr<double> treser; // total rezer, sum of frezer
73// by atoms and shells, per one electron ( in the paper it is per atom)
74#endif
75
76 /// Sum of (ionization) differential cross-section terms
78 /// Integrated (ionization) cross-section
79 double quanC;
80
81#ifndef EXCLUDE_A_VALUES
82 /// Sum of (absorption) differential cross-section terms
83 DynLinArr<double> addaC_a;
84 /// Integrated (absorption) cross-section
85 double quanC_a;
86#endif
87
88#ifndef EXCLUDE_MEAN
89 // First moment (mean restricted energy loss) [MeV]
90 double meanC;
91 // First moment, calculated using left side of energy interval.
92 // The value should be less than above.
93 // The difference shows the uncertainty of the value above
94 // arising from the finite number of intervals
95 double meanCleft;
96 // First moment with additional tail to max. kinematically allowed transfer,
97 // calculated only for heavy particles (integral for electrons non-trivial).
98 double meanC1;
99#ifndef EXCLUDE_A_VALUES
100 double meanC1_a;
101 double meanC_a;
102#endif
103 // Secondary ionization
104 double meaneleC;
105 double meaneleC1;
106#endif // EXCLUDE_MEAN
107
108 /// In the following arrays there are three indices:
109 /// atom number in the matter, shell number in atom, energy
110 /// Fraction of Cherenkov term.
112 /// Rutherford term
114 /// Sum
116 /// Integral, normalised to unity
118#ifndef EXCLUDE_A_VALUES
122#endif
123
124#ifndef EXCLUDE_VAL_FADDA
125 // The true values of the integral (should be equal to quan)
126 DynLinArr<DynLinArr<double> > val_fadda; // integral * hmd->xeldens;
127#ifndef EXCLUDE_A_VALUES
128 DynLinArr<DynLinArr<double> > val_fadda_a; // integral * hmd->xeldens;
129#endif
130#endif
131
132 /// In the following arrays there are two indices:
133 /// atom number in the matter, shell number in atom.
134 DynLinArr<DynLinArr<double> > quan; // per 1 cm, used for path length
135#ifndef EXCLUDE_A_VALUES
137#endif
138#ifndef EXCLUDE_MEAN
140#ifndef EXCLUDE_A_VALUES
142#endif
143#endif
144
146
147};
148
150 public:
152 EnTransfCSType(void) : etcs() { ; }
154};
155std::ostream& operator<<(std::ostream& file, const EnTransfCSType& f);
156
157}
158
159#endif
PassivePtr< EnTransfCS > etcs
Definition: EnTransfCS.h:151
EnTransfCSType(EnTransfCS *md)
Definition: EnTransfCS.h:153
long particle_charge
Charge in units of electron charge (used square, sign does not matter).
Definition: EnTransfCS.h:43
DynLinArr< DynLinArr< double > > quan
Definition: EnTransfCS.h:134
macro_copy_total(EnTransfCS)
DynLinArr< double > Rreser
Definition: EnTransfCS.h:70
double particle_ener
Total energy [MeV].
Definition: EnTransfCS.h:41
EnTransfCS(void)
Constructors.
Definition: EnTransfCS.h:29
DynLinArr< DynLinArr< double > > mean
Definition: EnTransfCS.h:139
DynLinArr< DynLinArr< DynLinArr< double > > > cher
Definition: EnTransfCS.h:111
double particle_mass
Particle mass [MeV].
Definition: EnTransfCS.h:37
DynLinArr< double > chereCangle
Definition: EnTransfCS.h:69
int s_primary_electron
Definition: EnTransfCS.h:60
double maximal_energy_trans
Max. energy transfer [MeV].
Definition: EnTransfCS.h:52
DynLinArr< DynLinArr< DynLinArr< double > > > adda
Sum.
Definition: EnTransfCS.h:115
PassivePtr< HeedMatterDef > hmd
Definition: EnTransfCS.h:62
DynLinArr< double > log2C
Definition: EnTransfCS.h:67
DynLinArr< double > length_y0
Definition: EnTransfCS.h:145
double particle_tkin
Kinetic energy [MeV].
Definition: EnTransfCS.h:39
double quanC
Integrated (ionization) cross-section.
Definition: EnTransfCS.h:79
DynLinArr< DynLinArr< DynLinArr< double > > > fadda
Integral, normalised to unity.
Definition: EnTransfCS.h:117
DynLinArr< double > addaC
Sum of (ionization) differential cross-section terms.
Definition: EnTransfCS.h:77
virtual void print(std::ostream &file, int l) const
Definition: EnTransfCS.cpp:523
double meanCleft
Definition: EnTransfCS.h:95
DynLinArr< double > chereC
Definition: EnTransfCS.h:68
DynLinArr< DynLinArr< DynLinArr< double > > > frezer
Rutherford term.
Definition: EnTransfCS.h:113
DynLinArr< double > log1C
Definition: EnTransfCS.h:66
Definition: BGMesh.cpp:3
std::ostream & operator<<(std::ostream &file, const BGMesh &bgm)
Definition: BGMesh.cpp:22