1#ifndef __JPHYSICS__JPDFTABLE__
2#define __JPHYSICS__JPDFTABLE__
37 template<
class JFunction1D_t,
43 public JObjectBinaryIO< JPDFTable<JFunction1D_t, JMaplist_t, JDistance_t> >
78 template<
class __JFunction_t,
class __JMaplist_t,
class __JDistance_t>
89 template<
class JHistogram_t,
class __JMaplist_t,
class __JDistance_t>
113 const double epsilon = 1.0e-10,
114 const double quantile = 0.99)
123 for (
super_iterator i = this->super_begin(); i != this->super_end(); ++i) {
130 const typename function_type::supervisor_type supervisor = f1.getSupervisor();
144 for (JGaussHermite::const_iterator j = engine.begin(); j != engine.end(); ++j) {
145 X.insert(Q.
getX() + TTS*sqrt(2.0)*j->getX());
148 for (
typename function_type::const_iterator j = f1.begin(); j != f1.end(); ++j) {
150 if (j->getX() - TTS < X.
getXmin()) {
151 X.insert(j->getX() - TTS);
154 if (j->getX() + TTS > X.
getXmax()) {
155 X.insert(j->getX() + TTS);
168 for (JGaussHermite::const_iterator j = engine.begin(); j != engine.end(); ++j) {
170 const double u = j->getX();
171 const double v = j->getY() / sqrt(PI);
172 const double w = get_value(f1(*x + u*TTS*sqrt(2.0)));
177 buffer[*x] = W * Q.
getIntegral() * Gauss(*x - Q.
getX(), TTS) + (1.0 - W) * y;
180 buffer.transform(put);
185 f1.setExceptionHandler(supervisor);
199 static_cast<typename transformablemultifunction_type::container_type*
>(
this)->erase(this->lower_bound(Xmax), this->end());
201 for (
super_iterator i = this->super_begin(); i != this->super_end(); ++i) {
206 typename function_type::iterator p = f1.lower_bound(range.
getLowerLimit());
207 typename function_type::iterator q = f1.lower_bound(range.
getUpperLimit());
209 for (++q; p != q; ++p) {
234 if (buffer.read(in)) {
260 out << static_cast<const transformablemultifunction_type&>(*
this);
Auxiliary methods for mathematics.
Auxiliary class to define a range between two values.
Interface for binary input.
virtual void clear()
Clear status of reader.
Forward declaration of binary output.
Interface for binary output.
Multi-dimensional PDF table for arrival time of Cherenkov light.
virtual JWriter & write(JWriter &out) const override
Write from input.
transformablemultifunction_type::function_type function_type
transformablemultifunction_type::value_type value_type
JTransformableMultiFunction< JFunction1D_t, JMaplist_t, JDistance_t > transformablemultifunction_type
void compress(const double Xmax, const JRange< typename function_type::abscissa_type > &range)
Compresses PDF to given abscissa range.
JPDFTable()
Default constructor.
transformablemultifunction_type::multimap_type multimap_type
transformablemultifunction_type::super_const_iterator super_const_iterator
transformablemultifunction_type::transformer_type transformer_type
transformablemultifunction_type::super_iterator super_iterator
JPDFTable(const JTransformableMultiFunction< __JFunction_t, __JMaplist_t, __JDistance_t > &input)
Constructor.
virtual JReader & read(JReader &in) override
Read from input.
transformablemultifunction_type::result_type result_type
void blur(const double TTS, const int numberOfPoints=25, const double epsilon=1.0e-10, const double quantile=0.99)
Blur PDF.
JPDFTable(const JTransformableMultiHistogram< JHistogram_t, __JMaplist_t, __JDistance_t > &input)
Constructor.
transformablemultifunction_type::argument_type argument_type
Auxiliary methods for light properties of deep-sea water.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Auxiliary base class for storing and loading a single object to and from a binary file,...
double getValue(const double x) const
Function value.