Garfield++ 3.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;
10extern long last_particle_number;
11
12/// Definition of delta-electron which can be traced through the geometry.
13/// 2003, I. Smirnov
14
16 public:
17 /// Default constructor.
18 HeedDeltaElectron() = default;
19 /// Constructor.
20 HeedDeltaElectron(manip_absvol* primvol, const point& pt, const vec& vel,
21 vfloat ftime, long fparent_particle_number,
22 HeedFieldMap* fieldmap, bool fs_print_listing = false);
23 /// Destructor
24 virtual ~HeedDeltaElectron() {}
25
26 HeedDeltaElectron* copy() const override {
27 return new HeedDeltaElectron(*this);
28 }
29 void print(std::ostream& file, int l) const override;
30
31 std::vector<HeedCondElectron> conduction_electrons;
32 std::vector<HeedCondElectron> conduction_ions;
33
35
36 protected:
37 void physics_mrange(double& fmrange) override;
38 void physics_after_new_speed(std::vector<gparticle*>& secondaries) override;
39
40 private:
41 long m_particle_number;
42
43 /// Flag to print internal algorithms of a selected event.
44 bool m_print_listing = false;
45
46 /// Physics-based step length (in internal units).
47 /// Later mrange may be reduced by geometry.
48 double m_phys_mrange = 0.;
49
50 /// Flag that the range is restricted by the loss of all energy to ionization.
51 /// It is to avoid additional little step due to limited precision at
52 /// subtraction of energy loss at step from kinetic energy.
53 bool m_stop_eloss = false;
54
55 /// Flag that the step is restricted by the condition that the number of
56 /// elastic scatterings with low angles should be less or equal to
57 /// hdecs->eesls->get_qscat()
58 bool m_mult_low_path_length = false;
59
60 /// Number of low angle scatterings
61 double m_q_low_path_length = 0.;
62 /// Flag that the range is restricted by path length for large angle scattering
63 bool m_path_length = false;
64
65 /// Necessary energy (in internal units) at next step to produce a
66 /// conduction electron.
67 // It is not identical to the left energy because it is randomly generated.
68 // Attention: if 0.0, then the electron is already finished.
69 double m_necessary_energy = 0.;
70
71 double m_total_eloss = 0.;
72
73 static bool s_low_mult_scattering;
74 static bool s_high_mult_scattering;
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.
Definition: HeedFieldMap.h:15
Abstract base classs for volume "manipulators".
Definition: volume.h:128
Point.
Definition: vec.h:366
Definition: vec.h:177
Definition: BGMesh.cpp:6
long last_particle_number
Definition: HeedParticle.h:9
double vfloat
Definition: vfloat.h:16