Garfield++ 5.0
A toolkit for the detailed simulation of particle detectors based on ionisation measurement in gases and semiconductors
Loading...
Searching...
No Matches
HeedDeltaElectron.h
Go to the documentation of this file.
1#ifndef HEEDDELTAELECTRON_H
2#define HEEDDELTAELECTRON_H
3
6
7namespace Heed {
8
9class PairProd;
10
11/// Definition of delta-electron which can be traced through the geometry.
12/// 2003, I. Smirnov
13
15 public:
16 /// Default constructor.
17 HeedDeltaElectron() = default;
18 /// Constructor.
19 HeedDeltaElectron(manip_absvol* primvol, const point& pt, const vec& vel,
20 vfloat ftime, long fparent_particle_number,
21 HeedFieldMap* fieldmap, bool fs_print_listing = false);
22 /// Destructor
23 virtual ~HeedDeltaElectron() {}
24
25 HeedDeltaElectron* copy() const override {
26 return new HeedDeltaElectron(*this);
27 }
28 void print(std::ostream& file, int l) const override;
29
30 std::vector<HeedCondElectron> conduction_electrons;
31 std::vector<HeedCondElectron> conduction_ions;
32
34
35 protected:
36 void physics_mrange(double& fmrange) override;
37 void physics_after_new_speed(std::vector<gparticle*>& secondaries) override;
38
39 private:
40 long m_particle_number;
41
42 /// Flag to print internal algorithms of a selected event.
43 bool m_print_listing = false;
44
45 /// Physics-based step length (in internal units).
46 /// Later mrange may be reduced by geometry.
47 double m_phys_mrange = 0.;
48
49 /// Flag that the range is restricted by the loss of all energy to ionization.
50 /// It is to avoid additional little step due to limited precision at
51 /// subtraction of energy loss at step from kinetic energy.
52 bool m_stop_eloss = false;
53
54 /// Flag that the step is restricted by the condition that the number of
55 /// elastic scatterings with low angles should be less or equal to
56 /// hdecs->eesls->get_qscat()
57 bool m_mult_low_path_length = false;
58
59 /// Number of low angle scatterings
60 double m_q_low_path_length = 0.;
61 /// Flag that the range is restricted by path length for large angle scattering
62 bool m_path_length = false;
63
64 /// Necessary energy (in internal units) at next step to produce a
65 /// conduction electron.
66 // It is not identical to the left energy because it is randomly generated.
67 // Attention: if 0.0, then the electron is already finished.
68 double m_necessary_energy = 0.;
69
70 double m_total_eloss = 0.;
71
72 static bool s_low_mult_scattering;
73 static bool s_high_mult_scattering;
74 static bool s_direct_low_if_little;
75
76 void ionisation(const double eloss, const double dedx, PairProd* pairprod);
77};
78}
79
80#endif
std::vector< HeedCondElectron > conduction_electrons
std::vector< HeedCondElectron > conduction_ions
HeedDeltaElectron * copy() const override
Clone the particle.
void physics_mrange(double &fmrange) override
void print(std::ostream &file, int l) const override
Print-out.
HeedDeltaElectron()=default
Default constructor.
virtual ~HeedDeltaElectron()
Destructor.
void physics_after_new_speed(std::vector< gparticle * > &secondaries) override
Apply any other processes (turn the trajectory, kill the particle, ...).
Retrieve electric and magnetic field from Sensor.
eparticle()=default
Default constructor.
Abstract base classs for volume "manipulators".
Definition volume.h:128
Point.
Definition vec.h:368
Definition BGMesh.cpp:6
double vfloat
Definition vfloat.h:16