Garfield++ 5.0
A toolkit for the detailed simulation of particle detectors based on ionisation measurement in gases and semiconductors
Loading...
Searching...
No Matches
TrackElectron.hh
Go to the documentation of this file.
1#ifndef G_TRACK_ELECTRON
2#define G_TRACK_ELECTRON
3
4#include <string>
5#include <vector>
6
7#include "Track.hh"
8
9namespace Garfield {
10
11/// [WIP] Ionization calculation based on MIP program (S. Biagi).
12
13class TrackElectron : public Track {
14 public:
15 struct Cluster {
16 double x, y, z, t;
17 double esec;
18 };
19
20 /// Constructor
22 /// Destructor
23 virtual ~TrackElectron() {}
24
25 void SetParticle(const std::string& particle) override;
26
27 bool NewTrack(const double x0, const double y0, const double z0,
28 const double t0, const double dx0, const double dy0,
29 const double dz0) override;
30
31 bool GetCluster(double& xc, double& yc, double& zc, double& tc, int& nc,
32 double& ec, double& extra) override;
33 const std::vector<Cluster>& GetClusters() const { return m_clusters; }
34
35 double GetClusterDensity() override;
36 double GetStoppingPower() override;
37
38 private:
39
40 struct Parameters {
41 // Dipole moment
42 double m2;
43 // Constant in ionisation cross-section
44 double cIon;
45 // Density correction term
46 double x0;
47 double x1;
48 double cDens;
49 double aDens;
50 double mDens;
51 // Opal-Beaty-Peterson splitting factor
52 double wSplit;
53 // Ionisation threshold
54 double ethr;
55 };
56
57 std::vector<Cluster> m_clusters;
58 size_t m_cluster = 0;
59
60 // Mean free path
61 double m_mfp = 0.;
62 // Stopping power
63 double m_dedx = 0.;
64
65 static bool Setup(Medium* gas, std::vector<Parameters>& par,
66 std::vector<double>& frac);
67 static bool Update(const double density, const double beta2,
68 const std::vector<Parameters>& par,
69 const std::vector<double>& frac,
70 std::vector<double>& prob, double& mfp, double& dedx);
71 static double Delta(const double x, const Parameters& par);
72 static double Esec(const double e0, const Parameters& par);
73};
74}
75
76#endif
void SetParticle(const std::string &particle) override
bool GetCluster(double &xc, double &yc, double &zc, double &tc, int &nc, double &ec, double &extra) override
const std::vector< Cluster > & GetClusters() const
bool NewTrack(const double x0, const double y0, const double z0, const double t0, const double dx0, const double dy0, const double dz0) override
double GetClusterDensity() override
double GetStoppingPower() override
Get the stopping power (mean energy loss [eV] per cm).
virtual ~TrackElectron()
Destructor.
TrackElectron()
Constructor.
Track()=delete
Default constructor.