66 bool ReadFile(
const std::string& file);
77 bool NewTrack(
const double x0,
const double y0,
const double z0,
78 const double t0,
const double dx0,
const double dy0,
79 const double dz0)
override;
80 bool GetCluster(
double& xcls,
double& ycls,
double& zcls,
81 double& tcls,
int& n,
double& e,
double& extra)
override;
135 double Xi(
const double x,
const double beta2)
const;
136 double DedxEM(
const double e)
const;
137 double DedxHD(
const double e)
const;
138 bool PreciseLoss(
const double step,
const double estart,
double& deem,
140 bool EstimateRange(
const double ekin,
const double step,
double& stpmax);
141 bool SmallestStep(
double ekin,
double de,
double step,
double& stpmin);
144 const double step)
const;
std::vector< double > m_longstraggle
Longitudinal straggling [cm].
double RndmEnergyLoss(const double ekin, const double de, const double step) const
void SetClustersMaximum(const int n)
void GetAtomicMassMumbers(double &a, double &z) const
Get A and Z of the target medium.
unsigned int m_currcluster
Index of the next cluster to be returned.
std::vector< double > m_hdloss
Hadronic energy loss [MeV cm2/g].
void SetDensity(const double density)
Set the density [g/cm3] of the target medium.
bool GetCluster(double &xcls, double &ycls, double &zcls, double &tcls, int &n, double &e, double &extra) override
std::vector< double > m_range
Projected range [cm].
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 DedxHD(const double e) const
std::vector< Cluster > m_clusters
double GetFanoFactor() const
Get the Fano factor.
void EnableTransverseStraggling(const bool on=true)
Simulate transverse straggling (default: on).
std::vector< double > m_emloss
EM energy loss [MeV cm2/g].
void SetTargetClusterSize(const int n)
Specify how many electrons should be grouped to a cluster.
double m_mass
Mass of ion [MeV].
bool m_chargeset
Charge gas been defined.
bool SmallestStep(double ekin, double de, double step, double &stpmin)
int GetModel() const
Get the fluctuation model.
double m_fano
Fano factor [-].
void SetModel(const int m)
void EnableLongitudinalStraggling(const bool on=true)
Simulate longitudinal straggling (default: off).
bool PreciseLoss(const double step, const double estart, double &deem, double &dehd) const
double m_work
Work function [eV].
double m_density
Density [g/cm3].
bool m_useTransStraggle
Include transverse straggling.
int m_nsize
Targeted cluster size.
void SetAtomicMassNumbers(const double a, const double z)
Set A and Z of the target medium.
std::vector< double > m_ekin
Energy in energy loss table [MeV].
std::vector< double > m_transstraggle
Transverse straggling [cm].
double GetDensity() const
Get the density [g/cm3] of the target medium.
int GetClustersMaximum() const
virtual ~TrackSrim()
Destructor.
void SetWorkFunction(const double w)
Set the W value [eV].
bool EstimateRange(const double ekin, const double step, double &stpmax)
bool m_useLongStraggle
Include longitudinal straggling.
double m_a
A and Z of the gas.
void PlotRange()
Make a plot of the projected range as function of the projectile energy.
int m_maxclusters
Maximum number of clusters allowed (infinite if 0)
double DedxEM(const double e) const
void SetFanoFactor(const double f)
Set the Fano factor.
double GetWorkFunction() const
Get the W value [eV].
int GetTargetClusterSize() const
Retrieve the target cluster size.
bool ReadFile(const std::string &file)
Load data from a SRIM file.
double Xi(const double x, const double beta2) const
Abstract base class for track generation.
int electrons
Number of electrons in this cluster.
double kinetic
Ion energy when cluster was created.
double ec
Energy spent to make the cluster.
double t
Cluster location and time.