57 bool ReadFile(
const std::string& file);
63 virtual bool NewTrack(
const double x0,
const double y0,
const double z0,
64 const double t0,
const double dx0,
const double dy0,
66 virtual bool GetCluster(
double& xcls,
double& ycls,
double& zcls,
67 double& tcls,
int& n,
double& e,
double& extra);
123 double DedxEM(
const double e)
const;
124 double DedxHD(
const double e)
const;
125 bool PreciseLoss(
const double step,
const double estart,
double& deem,
127 bool EstimateRange(
const double ekin,
const double step,
double& stpmax);
128 bool SmallestStep(
double ekin,
double de,
double step,
double& stpmin);
131 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
virtual bool NewTrack(const double x0, const double y0, const double z0, const double t0, const double dx0, const double dy0, const double dz0)
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/get the density [g/cm3] of the target medium.
void DisableTransverseStraggling()
std::vector< double > m_range
Projected range [cm].
double DedxHD(const double e) const
std::vector< cluster > m_clusters
void EnableLongitudinalStraggling()
double GetFanoFactor() const
std::vector< double > m_emloss
EM energy loss [MeV cm2/g].
void SetTargetClusterSize(const int n)
virtual bool GetCluster(double &xcls, double &ycls, double &zcls, double &tcls, int &n, double &e, double &extra)
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 SetClustersMaximum() const
double m_fano
Fano factor [-].
void SetModel(const int m)
bool PreciseLoss(const double step, const double estart, double &deem, double &dehd) const
bool m_precisevavilov
Use precise Vavilov generator.
double m_work
Work function [eV].
double m_density
Density [g/cm3].
void EnablePreciseVavilov()
bool m_useTransStraggle
Include transverse straggling.
int m_nsize
Targeted cluster size.
void SetAtomicMassNumbers(const double a, const double z)
Set/get 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
virtual ~TrackSrim()
Destructor.
void SetWorkFunction(const double w)
Set/get the W value [eV].
void DisableLongitudinalStraggling()
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 EnableTransverseStraggling()
int m_maxclusters
Maximum number of clusters allowed (infinite if 0)
double DedxEM(const double e) const
void SetFanoFactor(const double f)
Set/get the Fano factor.
double GetWorkFunction() const
void DisablePreciseVavilov()
int GetTargetClusterSize() const
bool ReadFile(const std::string &file)
Abstract base class for track generation.