1 #ifndef _TabularTankResponseNS_TabularTankResponse_h_
2 #define _TabularTankResponseNS_TabularTankResponse_h_
4 #include <tls/VTankResponse.h>
7 #include <boost/multi_array.hpp>
8 #include <utl/NormalDistribution.h>
14 namespace TabularTankResponseNS {
31 PDF(
const double signal,
34 const ulong muons)
const;
38 CDF(
const double threshold,
41 const ulong muons)
const;
45 Mean(
const double theta,
47 const ulong muons)
const;
51 StDev(
const double theta,
53 const ulong muons)
const;
72 EvaluateCdf(
const std::vector<double>& v,
const double signal,
const double mean,
const double sigma)
77 if (signal >=
fDS*(v.size()-2))
80 const size_t i =
static_cast<size_t>(
z);
82 return (1.0-z)*v[
i] + z*v[i+1];
90 boost::multi_array<double, 2>
fMean;
91 boost::multi_array<double, 2>
fSigma;
92 boost::multi_array<std::vector<double>, 3>
fCdf;
virtual double StDev(const double theta, const double r, const ulong muons) const
Standard deviation of signal, given fixed number of muons.
virtual double PDF(const double signal, const double theta, const double r, const ulong muons) const
PDF of signal, given a fixed number of muons.
virtual double CDF(const double threshold, const double theta, const double r, const ulong muons) const
Probability of signal begin smaller than smax, given a fixed number of muons.
TankResponse & operator=(const TankResponse &)
double pow(const double x, const unsigned int i)
double NormalCDF(const double x)
virtual double GetThetaMax() const
Largest zenith angle at which the tank response is defined.
Class representing a document branch.
virtual double GetRadiusMin() const
Smallest radial distance at which the tank response is defined.
Interface class for coupling different tank response calculations into the reconstruction code...
boost::multi_array< std::vector< double >, 3 > fCdf
static TankResponse & GetInstance(const utl::Branch branch)
boost::multi_array< double, 2 > fSigma
virtual double Mean(const double theta, const double r, const ulong muons) const
Average signal, given fixed number of muons.
if(signal >=fDS *(v.size()-2)) return utl double z
virtual double GetRadiusMax() const
Largest radial distance at which the tank response is defined.
boost::multi_array< double, 2 > fMean
virtual double GetThetaMin() const
Smallest zenith angle at which the tank response is defined.