1 #ifndef __JPHYSICS__JPDFTABLE__
2 #define __JPHYSICS__JPDFTABLE__
20 namespace JPP {
using namespace JPHYSICS; }
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)
116 using namespace JTOOLS;
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)));
179 buffer.transform(put);
184 f1.setExceptionHandler(supervisor);
197 for (
super_iterator i = this->super_begin(); i != this->super_end(); ++i) {
201 typename function_type::iterator p = f1.lower_bound(range.
getLowerLimit());
203 f1.function_type::container_type::erase(f1.begin(), p);
205 typename function_type::iterator q = f1.lower_bound(range.
getUpperLimit());
207 f1.function_type::container_type::erase(++q, f1.end());
222 if (in >> static_cast<transformablemultifunction_type&>(*
this)) {
228 if (buffer.read(in)) {
254 out << static_cast<const transformablemultifunction_type&>(*this);
269 static double gauss(
const double x,
const double sigma)
271 const double u = x / sigma;
274 return exp(-0.5*u*u);
287 static double Gauss(
const double x,
const double sigma)
301 static double Gauss(
const double x,
const double x0,
const double sigma)
303 return Gauss(x - x0, sigma);
Interface for binary output.
Auxiliary base class for storing and loading a single object to and from a binary file...
transformablemultifunction_type::multimap_type multimap_type
transformablemultifunction_type::function_type function_type
esac print_variable DETECTOR INPUT_FILE OUTPUT_FILE CDF for TYPE in
void blur(const double TTS, const int numberOfPoints=25, const double epsilon=1.0e-10, const double quantile=0.99)
Blur PDF.
virtual JWriter & write(JWriter &out) const
Write from input.
virtual JReader & read(JReader &in)
Read from input.
transformablemultifunction_type::value_type value_type
JTransformableMultiFunction< JFunction1D_t, JMaplist_t, JDistance_t > transformablemultifunction_type
static double Gauss(const double x, const double sigma)
Normalised Gauss function.
void compress(const JRange< typename function_type::abscissa_type > &range)
Compresses PDF to given abscissa range.
Forward declaration of binary output.
JPDFTable(const JTransformableMultiFunction< JPDF_t, JPDFMaplist_t, JPDFDistance_t > &input)
Constructor.
JPDFTable(const JTransformableMultiHistogram< JHistogram1D_t, JHistogramMaplist_t, JHistogramDistance_t > &input)
Constructor.
Multi-dimensional PDF table for arrival time of Cherenkov light.
JPDFTable()
Default constructor.
static double Gauss(const double x, const double x0, const double sigma)
Normalised Gauss function.
Interface for binary input.
transformablemultifunction_type::transformer_type transformer_type
transformablemultifunction_type::argument_type argument_type
Auxiliary class to define a range between two values.
transformablemultifunction_type::super_const_iterator super_const_iterator
transformablemultifunction_type::super_iterator super_iterator
transformablemultifunction_type::result_type result_type
virtual void clear()
Clear status of reader.
static double gauss(const double x, const double sigma)
Gauss function (normalised to 1 at x = 0).
then set_variable FORMULA *[0] exp(-0.5 *(x-[1])*(x-[1])/([2]*[2]))" set_variable OUTPUT_FILE histogram.root JHistogram1D -o $WORKDIR/$OUTPUT_FILE -F "$FORMULA" -