Go to the documentation of this file. 1 #ifndef __JPHYSICS__JPDFTRANSFORMER__
2 #define __JPHYSICS__JPDFTRANSFORMER__
32 template<
unsigned int N,
class JArgument_t>
46 template<
class JArgument_t>
58 using JMultiMapTransformer_t::getWeight;
115 const double R = buffer[0];
124 if (__kmax > __kmin) {
143 const double R = buffer[0];
147 if (__kmax > __kmin) {
170 const double R = buffer[0];
173 const double ct0 = 1.0 /
n;
174 const double st0 = sqrt((1.0 + ct0)*(1.0 - ct0));
176 const double d = sqrt(getRmin()*getRmin() + R*R) / st0;
178 return exp(-d/__ln) / pow(d,__alpha);
222 std::ostream&
print(std::ostream& out)
const
226 out <<
"Effective attenuation length [m] " << __ln << endl;
227 out <<
"Distance dependence (power term) " << __alpha << endl;
228 out <<
"Minimal kappa " << __kmin << endl;
229 out <<
"Maximal kappa " << __kmax << endl;
254 template<
class JArgument_t>
266 using JMultiMapTransformer_t::getWeight;
279 getShowerProbability()
303 getShowerProbability(
geant)
305 getShowerProbability.add(bmin);
306 getShowerProbability.compile();
332 const double D = buffer[0];
342 if (__kmax > __kmin) {
361 const double D = buffer[0];
366 if (__kmax > __kmin) {
389 const double D = buffer[0];
390 const double cd = buffer[1];
392 const double d = sqrt(getDmin()*getDmin() + D*D);
410 in >> getShowerProbability;
428 out << getShowerProbability;
440 std::ostream&
print(std::ostream& out)
const
444 out <<
"Effective attenuation length [m] " << __ln << endl;
445 out <<
"Distance dependence (power term) " << __alpha << endl;
446 out <<
"Minimal kappa " << __kmin << endl;
447 out <<
"Maximal kappa " << __kmax << endl;
475 template<
class JArgument_t>
490 using JMultiMapTransformer_t::getWeight;
521 transformer(ln, alpha, kmin, kmax),
551 return transformer.putXn(buffer, xn);
564 return transformer.getXn(buffer, xn);
578 const double theta = buffer[1];
579 const double phi = buffer[2];
582 const double ct0 = 1.0 /
n;
583 const double st0 = sqrt((1.0 + ct0)*(1.0 - ct0));
585 const double px = sin(theta)*cos(phi);
587 const double pz = cos(theta);
589 const double ct = st0*px + ct0*pz;
633 std::ostream&
print(std::ostream& out)
const
635 return transformer.print(out);
658 template<
class JArgument_t>
673 using JMultiMapTransformer_t::getWeight;
708 transformer(ln, alpha, kmin, kmax,
geant, bmin),
738 return transformer.putXn(buffer, xn);
751 return transformer.getXn(buffer, xn);
763 const double cd = buffer[1];
764 const double theta = buffer[2];
765 const double phi = buffer[3];
767 const double ct0 = cd;
768 const double st0 = sqrt((1.0 + ct0)*(1.0 - ct0));
770 const double px = sin(theta)*cos(phi);
772 const double pz = cos(theta);
774 const double ct = st0*px + ct0*pz;
818 std::ostream&
print(std::ostream& out)
const
820 return transformer.print(out);
844 template<
class JArgument_t>
860 using JMultiMapTransformer_t::getWeight;
895 transformer(ln, alpha, kmin, kmax,
geant, bmin, pmt, amin)
918 return transformer.putXn(buffer.pop_front(), xn);
931 return transformer.getXn(buffer.pop_front(), xn);
943 const double E = buffer[0];
944 return transformer.getWeight(buffer.pop_front()) / E;
982 std::ostream&
print(std::ostream& out)
const
984 return transformer.print(out);
Interface for binary input.
Auxiliary classes and methods for calculation of PDF and muon energy loss.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
JClonable< JClonable_t >::clone_type clone_type
Interface for binary output.
Function object for the probability density function of photon emission from EM-shower as a function ...
static const JGeant geant(geanx, 0.0001)
Function object for the number of photons from EM-shower as a function of emission angle.
double getAngularAcceptance(const double x)
Angular acceptence of PMT.