Garfield++ 5.0
A toolkit for the detailed simulation of particle detectors based on ionisation measurement in gases and semiconductors
Loading...
Searching...
No Matches
TrackSimple.hh
Go to the documentation of this file.
1#ifndef G_TRACK_SIMPLE_H
2#define G_TRACK_SIMPLE_H
3
4#include "Track.hh"
5
6namespace Garfield {
7
8/// Generate tracks based on a cluster density given by the user.
9
10class TrackSimple : public Track {
11 public:
12 struct Cluster {
13 double x, y, z, t;
14 double energy;
15 };
16
17 /// Default constructor
18 TrackSimple() : TrackSimple(nullptr) {}
19 /// Constructor
20 TrackSimple(Sensor* sensor);
21 /// Destructor
22 virtual ~TrackSimple() {}
23
24 /// Constant distance between clusters.
26 /// Exponentially distributed distance between clusters.
28
29 /// Set the cluster density (inverse mean free path).
30 void SetClusterDensity(const double d);
31 virtual double GetClusterDensity();
32 /// Set the stopping power (dE/dx).
33 void SetStoppingPower(const double dedx);
34 virtual double GetStoppingPower();
35
36 virtual bool NewTrack(const double x0, const double y0, const double z0,
37 const double t0, const double dx0, const double dy0,
38 const double dz0);
39 virtual bool GetCluster(double& xc, double& yc, double& zc,
40 double& tc, int& ne, double& ec, double& extra);
41 const std::vector<Cluster>& GetClusters() const { return m_clusters; }
42
43 protected:
44 // Mean free path (mean spacing between adjacent clusters)
45 double m_mfp = 0.04;
46 // Average energy per cluster
47 double m_eloss = 2530.;
48
49 bool m_useEqualSpacing = false;
50
51 std::vector<Cluster> m_clusters;
52 size_t m_cluster = 0;
53};
54}
55
56#endif
void SetEqualSpacing()
Constant distance between clusters.
const std::vector< Cluster > & GetClusters() const
void SetStoppingPower(const double dedx)
Set the stopping power (dE/dx).
virtual ~TrackSimple()
Destructor.
virtual double GetClusterDensity()
void SetExponentialSpacing()
Exponentially distributed distance between clusters.
virtual double GetStoppingPower()
Get the stopping power (mean energy loss [eV] per cm).
void SetClusterDensity(const double d)
Set the cluster density (inverse mean free path).
virtual bool GetCluster(double &xc, double &yc, double &zc, double &tc, int &ne, double &ec, double &extra)
TrackSimple()
Default constructor.
std::vector< Cluster > m_clusters
virtual bool NewTrack(const double x0, const double y0, const double z0, const double t0, const double dx0, const double dy0, const double dz0)
Track()=delete
Default constructor.