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;
79 static inline double getTmax(
const double E,
84 const double gamma = E / M;
85 const double beta =
getBeta(gamma);
88 (1.0 + 2.0*gamma*ratio + ratio*ratio) );
121 return c + T*(
b + T*
a);
148 template<
class JFormFactor_t>
155 const JFormFactor_t& F,
156 const int N = 1000000)
160 const double gamma = E / M;
161 const double beta =
getBeta(gamma);
163 const double W = 0.5 *
K * (Z/A) * (1.0/(beta*beta)) * 1.0e-3;
165 const double xmin = 1.0/Tmax;
166 const double xmax = 1.0/Tmin;
167 const double dx = (xmax - xmin) / ((
double) N);
171 for (
double x = xmin; x <= xmax; x += dx) {
173 const double T = 1.0/x;
174 const double y = W * F(T) * dx;
205 template<
class JFormFactor_t>
212 const JFormFactor_t& F,
213 const int N = 1000000)
217 const double gamma = E / M;
218 const double beta =
getBeta(gamma);
220 const double W = 0.5 *
K * (Z/A) * (1.0/(beta*beta));
222 const double xmin = log(Tmin);
223 const double xmax = log(Tmax);
224 const double dx = (xmax - xmin) / ((
double) N);
228 for (
double x = xmin; x <= xmax; x += dx) {
230 const double T = exp(x);
231 const double y = W * F(T) * dx;
236 return weight * 1.0e-3;
271 const double gamma = E / M;
272 const double beta =
getBeta(gamma);
274 const double a = 0.5/(E*E);
275 const double b = beta*beta/Tmax;
276 const double c = 1.0;
278 const double W = 0.5 *
K * (Z/A) * (1.0/(beta*beta));
280 const double dT = Tmax - Tmin;
281 const double rT = Tmax / Tmin;
282 const double mT = Tmax * Tmin;
284 return W * (a*dT - b*log(rT) + c*dT/mT) * 1.0e-3;
320 const double gamma = E / M;
321 const double beta =
getBeta(gamma);
323 const double a = 0.25/(E*E);
324 const double b = beta*beta/Tmax;
325 const double c = 1.0;
327 const double W = 0.5 *
K * (Z/A) * (1.0/(beta*beta));
329 const double sT = Tmax + Tmin;
330 const double dT = Tmax - Tmin;
331 const double rT = Tmax / Tmin;
333 return W * (a*sT*dT - b*dT + c*log(rT)) * 1.0e-3;
389 const double Tmin = T_GeV.constrain(
getTmin());
406 const double Tmin = T_GeV.constrain(
getTmin());
407 const double Tmax = T_GeV.constrain(
getTmax(E, MASS_MUON));
423 const double Tmin = T_GeV.constrain(
getTmin());
443 static const double a = 3.195e-01;
444 static const double b = 3.373e-01;
445 static const double c = -2.731e-02;
446 static const double d = 1.610e-03;
447 static const double Emin = 0.13078;
451 const double x = log10(E);
452 const double y = a + x*(b + x*(c + x*(d)));
471 static const double a = -2.178e-01;
472 static const double b = 4.995e-01;
473 static const double c = -3.906e-02;
474 static const double d = 1.615e-03;
475 static const double Emin = 2.19500;
479 const double x = log10(E);
480 const double y = a + x*(b + x*(c + x*(d)));
503 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