Implemented Models
Medium
HomoEarth
-
template<typename Vector3 = Vector3d<double>, typename Value = double>
class HomoEarth : public darkprop::Earth<Vector3d<double>, double> A homogeneous Earth model composed of 8 components.
Public Functions
-
virtual Value propagate(Particle<Vector3, Value> &particle, RandomNumber<Value> &rn) override
Propagate a particle.
Sample a free path and propagate the particle and determine whether the particle is in the Medium or not. Set
Particle::in_medium
to false if the simulation should stop.
-
virtual Value propagate(Particle<Vector3, Value> &particle, RandomNumber<Value> &rn) override
PREMEarth
-
template<typename Vector3 = Vector3d<double>, typename Value = double>
class PREMEarth : public darkprop::Earth<Vector3d<double>, double> Preliminary reference Earth model (PREM).
Public Functions
-
virtual Value propagate(Particle<Vector3, Value> &particle, RandomNumber<Value> &rn) override
Propagate a particle.
Sample a free path and propagate the particle and determine whether the particle is in the Medium or not. Set
Particle::in_medium
to false if the simulation should stop.
-
virtual Value propagate(Particle<Vector3, Value> &particle, RandomNumber<Value> &rn) override
HomoElectronEarth
-
template<typename Vector3 = Vector3d<double>, typename Value = double>
class HomoElectronEarth : public darkprop::Earth<Vector3d<double>, double> Public Functions
-
inline virtual Value propagate(Particle<Vector3, Value> &p, RandomNumber<Value> &rn) override
Propagate a particle.
Sample a free path and propagate the particle and determine whether the particle is in the Medium or not. Set
Particle::in_medium
to false if the simulation should stop.
-
inline virtual Value propagate(Particle<Vector3, Value> &p, RandomNumber<Value> &rn) override
Sun
-
template<typename Vector3 = Vector3d<double>, typename Value = double>
class Sun : public darkprop::MediumBall<Vector3d<double>, double> A Sun model.
Currently, the Sun only works with SolarDM which has constant cross section.
Public Functions
-
void init(const std::string &filename)
Load the tabular normalized number density integral function.
-
Value densityIntegral(Value y)
For certain
y
, the maximal value of the integrated number density, i.e.the value of integrated number density at
. unit: cm^-3. Same as number density.y
ranges in [0,1].
-
inline Value densityIntegralInverseNormalized(Value y, Value z)
The inverse of the normalized density integral.
-
virtual Value propagate(Particle<Vector3, Value> &particle, RandomNumber<Value> &rn) override
Propagate a particle.
Sample a free path and propagate the particle and determine whether the particle is in the Medium or not. Set
Particle::in_medium
to false if the simulation should stop.
-
void init(const std::string &filename)
This Sun model is implemented only working with the SolarDM model which assumes
constant cross section and only couples to proton, and includes only proton and
where

Fig. 2 The coordinates
The direction of
Thus
where
Particle
SIDM
-
template<typename Vector3 = Vector3d<double>, typename Value = double>
class SIDM : public darkprop::ParticleElastic<Vector3d<double>, double> Spin independent elastic scattering DM model with constant cross section.
Subclassed by darkprop::SIFFCutDM< Vector3, Value >, darkprop::SIFFExpDM< Vector3, Value >, darkprop::SIHelmDM< Vector3, Value >, darkprop::SIHelmDiscreteDM< Vector3, Value >
Public Functions
-
inline virtual Value totalCrossSection(const Target &t) const override
Total cross section scattering with Target
t
.Use current
this->T
as initial kinetic energy. Return the statistical weight.
-
inline virtual Value scatteringSampleTr(const Target &t, RandomNumber<Value> &rn) override
Sample recoil kinetic energy of the target particle in laboratory frame.
-
inline virtual Value totalCrossSection(const Target &t) const override
SIHelmDM
-
template<typename Vector3 = Vector3d<double>, typename Value = double>
class SIHelmDM : public darkprop::SIDM<Vector3d<double>, double> Spin independent elastic scattering DM model with Helm form factor.
Public Functions
-
inline virtual Value scatteringSampleTr(const Target &t, RandomNumber<Value> &rn) override
Sample recoil kinetic energy of the target particle in laboratory frame.
-
inline virtual Value scatteringSampleTr(const Target &t, RandomNumber<Value> &rn) override
DMElectron
-
template<typename Vector3 = Vector3d<double>, typename Value = double>
class DMElectron : public darkprop::ParticleElastic<Vector3d<double>, double> A DM-electron vector coupling model.
Used to cross check for arXiv:2403.08361.
Public Functions
-
inline virtual Value totalCrossSection(const Target &t) const override
Total cross section scattering with Target
t
.Use current
this->T
as initial kinetic energy. Return the statistical weight.
-
inline virtual Value scatteringSampleTr(const Target &t, RandomNumber<Value> &rn) override
Sample recoil kinetic energy of the target particle in laboratory frame.
-
inline virtual Value totalCrossSection(const Target &t) const override
SolarDM
-
template<typename Vector3 = Vector3d<double>, typename Value = double>
class SolarDM : public darkprop::Particle<Vector3d<double>, double> The Solar DM model.
Public Functions
-
inline void setTempScale(Value t_temp_scale)
Set the temperature scaling factor multiplied to the real temperature.
This is used to adjust the temperature of the Sun.
-
inline virtual Value totalCrossSection(const Target &t) const override
Total cross section scattering with Target
t
.Use current
this->T
as initial kinetic energy. Return the statistical weight.
-
virtual Value scatter(const Target &t, RandomNumber<Value> &rn) override
Sample final state DM particle.
The changes are made directly. Return the statistical weight.
-
inline void setTempScale(Value t_temp_scale)