Garfield++ v2r0
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() : eparticle(), s_print_listing(false) {}
19 /// Constructor.
20 HeedDeltaElectron(manip_absvol* primvol, const point& pt, const vec& vel,
21 vfloat time, long fparent_particle_number,
22 HeedFieldMap* fieldmap, bool fs_print_listing = false);
23 /// Destructor
24 virtual ~HeedDeltaElectron() {}
25
26 std::vector<HeedCondElectron> conduction_electrons;
27 std::vector<HeedCondElectron> conduction_ions;
28
30
31 virtual void physics_mrange(double& fmrange);
32 virtual void physics_after_new_speed(std::vector<gparticle*>& secondaries);
33 virtual HeedDeltaElectron* copy() const {
34 return new HeedDeltaElectron(*this);
35 }
36 virtual void print(std::ostream& file, int l) const;
37
38 private:
39 long particle_number;
40
41 /// Flag to print internal algorithms of a selected event.
42 bool s_print_listing;
43
44 // The following things are done in physics_mrange.
45 // Later mrange may be reduced by geometry.
46 // the signature of this is prange < phys_mrange
47 double phys_mrange; // in internal units
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 s_stop_eloss;
53
54 // Flag that the step is restricted
55 // by the condition that number of elastic scatterings with low angles
56 // should be less or equal to hdecs->eesls->get_qscat()
57 int s_mult_low_path_length;
58
59 // Number of low angle scatterings
60 double q_low_path_length;
61 // Sign that the range is restricted by path length for large angle scattering
62 bool s_path_length;
63
64 // Necessary energy (in internal units) at next step to
65 // produce a conduction electron. It is necessary energy, not the left energy
66 // because it is randomly generated.
67 // Attention: if 0.0, then the electron is already left.
68 double necessary_energy;
69
70 double total_Eloss;
71
72 static bool s_low_mult_scattering;
73 static bool s_high_mult_scattering;
74
75 void ionisation(const double eloss, const double dedx, PairProd* pairprod);
76};
77}
78
79#endif
std::vector< HeedCondElectron > conduction_electrons
std::vector< HeedCondElectron > conduction_ions
virtual void physics_mrange(double &fmrange)
virtual void print(std::ostream &file, int l) const
virtual ~HeedDeltaElectron()
Destructor.
HeedDeltaElectron()
Default constructor.
virtual HeedDeltaElectron * copy() const
virtual void physics_after_new_speed(std::vector< gparticle * > &secondaries)
Retrieve electric and magnetic field from Sensor.
Definition: HeedFieldMap.h:15
Abstract base classs for volume "manipulators".
Definition: volume.h:178
Point.
Definition: vec.h:374
Definition: vec.h:186
Definition: BGMesh.cpp:5
long last_particle_number
Definition: HeedParticle.h:9
double vfloat
Definition: vfloat.h:16