1 #ifndef __JPHYSICS__JGEANE__
2 #define __JPHYSICS__JGEANE__
46 virtual double getA()
const = 0;
54 virtual double getB()
const = 0;
64 virtual double getE(
const double E,
const double dx)
const = 0;
74 virtual double getX(
const double E0,
75 const double E1)
const = 0;
87 return this->
getE(E, dx);
99 return this->
getX(E, 0.0);
145 virtual double getA()
const override
156 virtual double getB()
const override
169 virtual double getE(
const double E,
const double dx)
const override
171 const double y = (
a/
b + E) * exp(-
b*dx) -
a/
b;
187 virtual double getX(
const double E0,
188 const double E1)
const override
190 return -log((
a +
b*E1) / (
a+
b*E0)) /
b;
208 protected std::map<double, JGeane_t>
231 virtual double getA()
const override
244 virtual double getB()
const override
257 virtual double getE(
const double E,
const double dx)
const override
264 const_iterator p = this->lower_bound(E1);
270 const double x2 = p->second.getX(E1, p->first);
273 return p->second.getE(E1, x1);
279 }
while (p != this->begin());
295 double getEa(
const double E,
const double dx)
const
313 const double x2 = p->second.getX(E1, p->first);
315 Ea += (x2 > x1 ? x1 : x2) * p->second.getA();
320 }
while (p != this->cbegin() && x1 > 0.0);
334 double getEb(
const double E,
const double dx)
const
336 const double dE = E -
getE(E, dx);
338 return dE -
getEa(E, dx);
349 virtual double getX(
const double E0,
350 const double E1)
const override
357 const_iterator p = this->lower_bound(E);
364 return dx + p->second.getX(E, E1);
367 dx += p->second.getX(E, p->first);
370 }
while (p != this->begin());
Function object for energy dependent energy loss of the muon.
virtual double getE(const double E, const double dx) const override
Get energy of muon after specified distance.
double getEb(const double E, const double dx) const
Get energy loss due to pair production and bremsstrahlung.
JGeaneWater()
Default constructor.
virtual double getA() const override
Get energy loss constant.
virtual double getB() const override
Get energy loss constant.
virtual double getX(const double E0, const double E1) const override
Get distance traveled by muon.
double getEa(const double E, const double dx) const
Get energy loss due to ionisation.
Function object for the energy loss of the muon.
virtual double getA() const override
Get energy loss constant.
virtual double getE(const double E, const double dx) const override
Get energy of muon after specified distance.
JGeane_t(const double __a, const double __b)
constructor
virtual double getX(const double E0, const double E1) const override
Get distance traveled by muon.
virtual double getB() const override
Get energy loss constant.
Interface for muon energy loss.
double operator()(const double E, const double dx) const
Energy of muon after specified distance.
double operator()(const double E) const
Range of muon.
virtual double getX(const double E0, const double E1) const =0
Get distance traveled by muon.
virtual double getB() const =0
Get energy loss constant.
double operator()() const
Equivalent unit track length per unit shower energy and per unit track length.
virtual double getE(const double E, const double dx) const =0
Get energy of muon after specified distance.
virtual double getA() const =0
Get energy loss constant.
Auxiliary methods for light properties of deep-sea water.
static const double DENSITY_SEA_WATER
Fixed environment values.
static const double MASS_MUON
muon mass [GeV]
static const double DENSITY_ROCK
Density of rock [g/cm^3].
static const JGeane_t gRock(2.67e-1 *0.9 *DENSITY_ROCK, 3.40e-4 *1.2 *DENSITY_ROCK)
Function object for energy loss of muon in rock.
static const JGeaneWater gWater
Function object for energy loss of muon in sea water.
double getSinThetaC()
Get average sine of Cherenkov angle of water corresponding to group velocity.
double geanc()
Equivalent muon track length per unit shower energy.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).