1#ifndef __JPHYSICS__JDELTARAYS__
2#define __JPHYSICS__JDELTARAYS__
23 static constexpr double TMIN_GEV = 0.000915499;
25 static constexpr double K = 0.307075;
36 return parameters() * parameters.
Z / parameters.
A;
87 static inline double getTmax(
const double E,
92 const double gamma = E / M;
93 const double beta =
getBeta(gamma);
96 (1.0 + 2.0*gamma*ratio + ratio*ratio) );
129 return c + T*(
b + T*
a);
156 template<
class JFormFactor_t>
163 const JFormFactor_t& F,
164 const int N = 1000000)
168 const double gamma = E / M;
169 const double beta =
getBeta(gamma);
171 const double W = 0.5 *
K * (Z/A) * (1.0/(beta*beta)) * 1.0e-3;
173 const double xmin = 1.0/Tmax;
174 const double xmax = 1.0/Tmin;
175 const double dx = (xmax - xmin) / ((
double) N);
179 for (
double x = xmin; x <= xmax; x += dx) {
181 const double T = 1.0/x;
182 const double y = W * F(T) * dx;
213 template<
class JFormFactor_t>
220 const JFormFactor_t& F,
221 const int N = 1000000)
225 const double gamma = E / M;
226 const double beta =
getBeta(gamma);
228 const double W = 0.5 *
K * (Z/A) * (1.0/(beta*beta));
230 const double xmin = log(Tmin);
231 const double xmax = log(Tmax);
232 const double dx = (xmax - xmin) / ((
double) N);
236 for (
double x = xmin; x <= xmax; x += dx) {
238 const double T = exp(x);
239 const double y = W * F(T) * dx;
244 return weight * 1.0e-3;
279 const double gamma = E / M;
280 const double beta =
getBeta(gamma);
282 const double a = 0.5/(E*E);
283 const double b = beta*beta/Tmax;
284 const double c = 1.0;
286 const double W = 0.5 *
K * (Z/A) * (1.0/(beta*beta));
288 const double dT = Tmax - Tmin;
289 const double rT = Tmax / Tmin;
290 const double mT = Tmax * Tmin;
292 return W * (a*dT - b*log(rT) + c*dT/mT) * 1.0e-3;
328 const double gamma = E / M;
329 const double beta =
getBeta(gamma);
331 const double a = 0.25/(E*E);
332 const double b = beta*beta/Tmax;
333 const double c = 1.0;
335 const double W = 0.5 *
K * (Z/A) * (1.0/(beta*beta));
337 const double sT = Tmax + Tmin;
338 const double dT = Tmax - Tmin;
339 const double rT = Tmax / Tmin;
341 return W * (a*sT*dT - b*dT + c*log(rT)) * 1.0e-3;
397 const double Tmin = T_GeV.constrain(
getTmin());
414 const double Tmin = T_GeV.constrain(
getTmin());
415 const double Tmax = T_GeV.constrain(
getTmax(E, MASS_MUON));
431 const double Tmin = T_GeV.constrain(
getTmin());
451 static const double a = 3.195e-01;
452 static const double b = 3.373e-01;
453 static const double c = -2.731e-02;
454 static const double d = 1.610e-03;
455 static const double Emin = 0.13078;
459 const double x = log10(E);
460 const double y = a + x*(b + x*(c + x*(d)));
479 static const double a = -2.178e-01;
480 static const double b = 4.995e-01;
481 static const double c = -3.906e-02;
482 static const double d = 1.615e-03;
483 static const double Emin = 2.19500;
487 const double x = log10(E);
488 const double y = a + x*(b + x*(c + x*(d)));
511 return 0.188 * exp(-1.25 * pow(fabs(x - 0.90), 1.30));
Auxiliary methods for light properties of deep-sea water.
static const double DENSITY_SEA_WATER
Fixed environment values.
static const double MASS_ELECTRON
electron mass [GeV]
static const double MASS_TAU
tau mass [GeV]
JTOOLS::JRange< double > JEnergyRange
Type definition for energy range (unit [GeV]).
double getSinThetaC()
Get average sine of Cherenkov angle of water corresponding to group velocity.
double getKineticEnergy(const double E, const double m)
Get kinetic energy of particle with given energy and mass.
double getBeta(const double gamma)
Get relative velocity given Lorentz boost.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Auxiliary data structure to encapsulate energy loss methods based on fit.
static double getEnergyLossFromTau(const double E)
Equivalent EM-shower energy loss due to delta-rays per unit tau track length.
static double getEnergyLossFromMuon(const double E)
Equivalent EM-shower energy loss due to delta-rays per unit muon track length.
Auxiliary data structure for delta-rays.
static double getEnergyLoss(const double E, const double M, const double Tmin, const double Tmax)
Get equivalent EM-shower energy loss due to delta-rays per unit track length for an ionising particle...
static double getEnergyLossFromMuon(const double E, const JEnergyRange T_GeV=JEnergyRange(TMIN_GEV, TMAX_GEV))
Equivalent EM-shower energy loss due to delta-rays per unit muon track length in sea water.
static double getCount(const double E, const double M, const double Tmin, const double Tmax, const double Z, const double A)
Get number of delta-rays per unit track length for an ionising particle with given energy and given m...
static constexpr double getZoverA()
Get average ratio charge to mass number for sea water.
static double getCount(const double E, const double M, const double Tmin, const double Tmax, const double Z, const double A, const JFormFactor_t &F, const int N=1000000)
Get number of delta-rays per unit track length for an ionising particle with given energy and given m...
static double getProbability(const double x)
Emission profile of photons from delta-rays.
static constexpr double K
internal constant [MeV mol^-1 cm^2]
static double getEnergylossFromElectron(const double E, const JEnergyRange T_GeV=JEnergyRange(TMIN_GEV, TMAX_GEV))
Equivalent EM-shower energy loss due to delta-rays per unit electron track length in sea water.
static double getEnergyLoss(const double E, const double M, const double Tmin, const double Tmax, const double Z, const double A, const JFormFactor_t &F, const int N=1000000)
Get equivalent EM-shower energy loss due to delta-rays per unit track length for an ionising particle...
static double getTmax(const double E, const double M)
Get maximum delta-ray kinetic energy for given lepton energy and mass.
static constexpr double getZoverA(const JSeaWater::atom_type ¶meters)
Get ratio charge to mass number for given atomic parameters.
static double getTmin()
Get minimum delta-ray kinetic energy.
static constexpr double TMIN_GEV
Minimum allowed delta-ray kinetic energy [GeV].
static double getEnergyLoss(const double E, const double M, const double Tmin, const double Tmax, const double Z, const double A)
Get equivalent EM-shower energy loss due to delta-rays per unit track length for an ionising particle...
static constexpr double TMAX_GEV
Maximum allowed delta-ray kinetic energy [GeV].
static double getCount(const double E, const double M, const double Tmin, const double Tmax)
Get number of delta-rays per unit track length for an ionising particle with given energy and given m...
static double getEnergyLossFromTau(const double E, const JEnergyRange T_GeV=JEnergyRange(TMIN_GEV, TMAX_GEV))
Equivalent EM-shower energy loss due to delta-rays per unit tau track length in sea water.
static constexpr atom_type Cl
static constexpr atom_type H
static constexpr atom_type O
static constexpr atom_type Na