26 bool NewTrack(
const double x0,
const double y0,
const double z0,
27 const double t0,
const double dx0,
const double dy0,
28 const double dz0)
override;
54 std::array<double, m_nSteps>
m_cdf;
81 const double eps = eps1 * eps1 + eps2 * eps2;
82 return eps > 0. ? eps2 / eps : 0.;
bool NewTrack(const double x0, const double y0, const double z0, const double t0, const double dx0, const double dy0, const double dz0) override
Calculate a new track starting from (x0, y0, z0) at time t0 in direction (dx0, dy0,...
double SampleAsymptoticCsPositron(const double emin, double u) const
std::array< double, m_nSteps > m_cdf
double ComputeCsTail(const double emin, const double emax)
static constexpr size_t m_nSteps
double GetClusterDensity() override
Get the cluster density (number of ionizing collisions per cm or inverse mean free path for ionizatio...
bool SetupMedium(Medium *medium)
std::array< double, m_nSteps > m_epsInt
std::array< double, m_nSteps > m_eps2
std::array< double, m_nSteps > m_energies
std::vector< Cluster > m_clusters
std::pair< double, double > SampleEnergyDeposit(const double u) const
double GetStoppingPower() override
Get the stopping power (mean energy loss [eV] per cm).
std::array< double, m_nSteps > m_eps1
double ComputeDeDxTail(const double emin, const double emax)
double SampleAsymptoticCs(double u) const
double SampleAsymptoticCsSpinHalf(const double emin, double u) const
bool SetupCrossSectionTable()
double SampleAsymptoticCsElectron(const double emin, double u) const
double SampleAsymptoticCsSpinZero(const double emin, double u) const
std::array< double, m_nSteps > m_rutherford
const std::vector< Cluster > & GetClusters() const
double SampleAsymptoticCsSpinOne(const double emin, double u) const
double ComputeMaxTransfer() const
double LossFunction(const double eps1, const double eps2) const
Track()=delete
Default constructor.