1 #ifndef __JPHYSICS__JRADIATIONSOURCE__
2 #define __JPHYSICS__JRADIATIONSOURCE__
19 namespace JPP {
using namespace JPHYSICS; }
53 const unsigned int number_of_bins,
58 using namespace JTOOLS;
60 const double xmin = log(Emin);
61 const double xmax = log(Emax);
68 const double x = i->getX();
69 const double E = exp(x);
72 const double ymax = 0.0;
76 i->getY().configure(
make_grid(number_of_bins, ymin, ymax));
80 const double y = j->getX();
81 const double eps = exp(y) * E;
97 const double E = exp(i->getX());
110 const double E = exp(i->getX());
128 const double x = log(E);
130 if (x >=
sigmaEE. begin()->getX() &&
131 x <=
sigmaEE.rbegin()->getX()) {
136 catch(std::exception& error) {
137 std::cerr <<
"JRadiation::TotalCrossSectionEErad() " << E <<
' ' << error.what() << std::endl;
153 const double x = log(E);
155 if (x >=
sigmaGN. begin()->getX() &&
156 x <=
sigmaGN.rbegin()->getX()) {
161 catch(std::exception& error) {
162 std::cerr <<
"JRadiation::TotalCrossSectionGNrad() " << E <<
' ' << error.what() << std::endl;
171 const double eps)
const
175 const double x = log(E);
176 const double y = log(eps/E);
181 catch(std::exception& error) {
182 std::cerr <<
"JRadiation::IntegralofG() " << E <<
' ' << eps <<
' ' << error.what() << std::endl;
213 virtual double getInverseInteractionLength(
const double E)
const = 0;
222 virtual double getEnergyOfShower(
const double E)
const = 0;
236 typedef double (
JRadiation::*sigma_type)(
const double)
const;
237 typedef double (
JRadiation::*eloss_type)(
const double)
const;
250 const double density,
267 return (*rad.*sigma)(E) * rho * 1.0e6;
279 return (*rad.*eloss)(E);
JRadiationFunction(const JRadiation &radiation, const unsigned int number_of_bins, const double Emin, const double Emax)
Constructor.
JLANG::JSharedPointer< JRadiation > rad
JRadiationSource(const JLANG::JSharedPointer< JRadiation > &radiation, const double density, const source_type source)
Constructor.
Interface for calculation of inverse interaction length and shower energy.
virtual double getInverseInteractionLength(const double E) const
Get inverse interaction length.
Muon radiative cross sections.
virtual double TotalCrossSectionEErad(const double E) const
Pair production cross section.
virtual ~JRadiationInterface()
Virtual destructor.
Fast implementation of class JRadiation.
Various implementations of functional maps.
virtual double TotalCrossSectionGNrad(const double E) const
Photo-nuclear cross section.
std::pair< sigma_type, eloss_type > source_type
The template JSharedPointer class can be used to share a pointer to an object.
Auxiliary class for the calculation of the muon radiative cross sections.
virtual double IntegralofG(const double E, const double eps) const
virtual double getEnergyOfShower(const double E) const
Get energy of shower.
JTOOLS::JMultiFunction< JFunction1D_t, JTOOLS::JMapList< JTOOLS::JPolint1FunctionalGridMap > > JFunction2D_t
virtual double TotalCrossSectionEErad(const double E) const
Pair production cross section.
JTOOLS::JGridPolint1Function1D_t JFunction1D_t
virtual double IntegralofG(const double E, const double eps) const
virtual double TotalCrossSectionGNrad(const double E) const
Photo-nuclear cross section.