24class ElElasticScatLowSigma;
26class HeedDeltaElectronCS;
45 virtual bool NewTrack(
const double x0,
const double y0,
const double z0,
46 const double t0,
const double dx0,
const double dy0,
48 virtual bool GetCluster(
double& xcls,
double& ycls,
double& zcls,
double& tcls,
49 int& n,
double& e,
double& extra);
50 bool GetCluster(
double& xcls,
double& ycls,
double& zcls,
double& tcls,
51 int& ne,
int& ni,
double& e,
double& extra);
61 double& x,
double& y,
double& z,
double& t,
62 double& e,
double& dx,
double& dy,
double& dz);
68 bool GetIon(
const unsigned int i,
69 double& x,
double& y,
double& z,
double& t)
const;
77 const double t0,
const double e0,
78 const double dx0,
const double dy0,
79 const double dz0,
int& nel,
int& ni);
81 const double t0,
const double e0,
82 const double dx0,
const double dy0,
83 const double dz0,
int& nel);
86 const double t0,
const double e0,
const double dx0,
87 const double dy0,
const double dz0,
int& nel,
int& ni);
89 const double t0,
const double e0,
const double dx0,
90 const double dy0,
const double dz0,
int& nel);
107 void SetEnergyMesh(
const double e0,
const double e1,
const int nsteps);
119 bool m_hasActiveTrack;
121 double m_mediumDensity;
122 std::string m_mediumName;
124 bool m_usePhotonReabsorption;
125 bool m_usePacsOutput;
127 bool m_doDeltaTransport;
128 struct deltaElectron {
133 std::vector<deltaElectron> m_deltaElectrons;
134 std::vector<Heed::HeedCondElectron> m_conductionElectrons;
135 std::vector<Heed::HeedCondElectron> m_conductionIons;
150 double m_emin, m_emax;
151 int m_nEnergyIntervals;
162 HeedChamber* m_chamber;
166 double m_lX, m_lY, m_lZ;
167 double m_cX, m_cY, m_cZ;
170 std::vector<Heed::gparticle*> m_particleBank;
171 std::vector<Heed::gparticle*>::iterator m_bankIterator;
173 bool Setup(Medium* medium);
174 bool SetupGas(Medium* medium);
175 bool SetupMaterial(Medium* medium);
176 bool SetupDelta(
const std::string& databasePath);
177 std::string FindUnusedMaterialName(
const std::string& namein);
178 void ClearParticleBank();
179 bool IsInside(
const double x,
const double y,
const double z);
Generate tracks using Heed++.
void EnableMagneticField()
void SetEnergyMesh(const double e0, const double e1, const int nsteps)
virtual bool GetCluster(double &xcls, double &ycls, double &zcls, double &tcls, int &n, double &e, double &extra)
void EnablePhotoAbsorptionCrossSectionOutput()
void EnableElectricField()
void DisableMagneticField()
void TransportPhoton(const double x0, const double y0, const double z0, const double t0, const double e0, const double dx0, const double dy0, const double dz0, int &nel, int &ni)
void DisableDeltaElectronTransport()
double GetFanoFactor() const
void TransportDeltaElectron(const double x0, const double y0, const double z0, const double t0, const double e0, const double dx0, const double dy0, const double dz0, int &nel, int &ni)
virtual double GetClusterDensity()
void EnableDeltaElectronTransport()
bool GetElectron(const unsigned int i, double &x, double &y, double &z, double &t, double &e, double &dx, double &dy, double &dz)
void DisablePhotonReabsorption()
bool GetIon(const unsigned int i, double &x, double &y, double &z, double &t) const
virtual ~TrackHeed()
Destructor.
void EnablePhotonReabsorption()
void DisablePhotoAbsorptionCrossSectionOutput()
virtual bool NewTrack(const double x0, const double y0, const double z0, const double t0, const double dx0, const double dy0, const double dz0)
void SetParticleUser(const double m, const double z)
void DisableElectricField()
virtual double GetStoppingPower()
Get the stopping power (mean energy loss [eV] per cm).
Abstract base class for track generation.
Atomic photoabsorption cross-section abstract base class.
Retrieve electric and magnetic field from Sensor.