Go to the documentation of this file. 1 #ifndef __JPHYSICS__JPDFTABLE__
2 #define __JPHYSICS__JPDFTABLE__
36 template<
class JFunction1D_t,
42 public JObjectBinaryIO< JPDFTable<JFunction1D_t, JMaplist_t, JDistance_t> >
77 template<
class JPDF_t,
class JPDFMaplist_t,
class JPDFDistance_t>
88 template<
class JHistogram1D_t,
class JHistogramMaplist_t,
class JHistogramDistance_t>
112 const double epsilon = 1.0e-10,
113 const double quantile = 0.99)
122 for (
super_iterator i = this->super_begin(); i != this->super_end(); ++i) {
129 const typename function_type::supervisor_type& supervisor = f1.getSupervisor();
144 X.insert(Q.
getX() + TTS*sqrt(2.0)*
j->getX());
147 for (
typename function_type::const_iterator
j = f1.begin();
j != f1.end(); ++
j) {
149 if (
j->getX() - TTS < X.
getXmin()) {
150 X.insert(
j->getX() - TTS);
153 if (
j->getX() + TTS > X.
getXmax()) {
154 X.insert(
j->getX() + TTS);
169 const double u =
j->getX();
170 const double v =
j->getY() / sqrt(
PI);
171 const double w =
get_value(f1(*x +
u*TTS*sqrt(2.0)));
184 f1.setExceptionHandler(supervisor);
197 for (
super_iterator pdf_it=this->super_begin(); pdf_it!=this->super_end(); ++pdf_it) {
200 typename function_type::iterator f1_newB = f1.lower_bound(Crange.
getLowerLimit());
201 f1.function_type::container_type::erase(f1.begin(),f1_newB);
202 typename function_type::iterator f1_newE = f1.lower_bound(Crange.
getUpperLimit());
203 f1.function_type::container_type::erase(++f1_newE,f1.end());
216 if (in >> static_cast<transformablemultifunction_t&>(*
this)) {
248 out << static_cast<const transformablemultifunction_t&>(*
this);
263 static double gauss(
const double x,
const double sigma)
265 const double u = x / sigma;
268 return exp(-0.5*
u*
u);
281 static double Gauss(
const double x,
const double sigma)
295 static double Gauss(
const double x,
const double x0,
const double sigma)
297 return Gauss(x - x0, sigma);
virtual void clear()
Clear status of reader.
void compress(const JRange< typename function_type::abscissa_type > &Crange)
Compresses PDF to abscissa range specified by Crange.
Interface for binary input.
transformablemultifunction_t::multimap_type multimap_type
JTransformableMultiFunction< JFunction1D_t, JMaplist_t, JDistance_t > transformablemultifunction_t
void blur(const double TTS, const int numberOfPoints=25, const double epsilon=1.0e-10, const double quantile=0.99)
Blur PDF.
static double Gauss(const double x, const double sigma)
Normalised Gauss function.
transformablemultifunction_t::transformer_type transformer_type
Forward declaration of binary output.
transformablemultifunction_t::function_type function_type
virtual JWriter & write(JWriter &out) const
Write from input.
Auxiliary classes and methods for calculation of PDF and muon energy loss.
transformablemultifunction_t::super_iterator super_iterator
Auxiliary base class for storing and loading a single object to and from a binary file,...
static double gauss(const double x, const double sigma)
Gauss function (normalised to 1 at x = 0).
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Interface for binary output.
Multi-dimensional PDF table for arrival time of Cherenkov light.
JPDFTable(const JTransformableMultiFunction< JPDF_t, JPDFMaplist_t, JPDFDistance_t > &input)
Constructor.
JPDFTable()
Default constructor.
transformablemultifunction_t::value_type value_type
static double Gauss(const double x, const double x0, const double sigma)
Normalised Gauss function.
virtual JReader & read(JReader &in)
Read from input.
transformablemultifunction_t::argument_type argument_type
JPDFTable(const JTransformableMultiHistogram< JHistogram1D_t, JHistogramMaplist_t, JHistogramDistance_t > &input)
Constructor.
T get(const JHead &header)
Get object from header.
transformablemultifunction_t::result_type result_type
transformablemultifunction_t::super_const_iterator super_const_iterator