Garfield++ v1r0
A toolkit for the detailed simulation of particle detectors based on ionisation measurement in gases and semiconductors
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
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