1#ifndef __JPHYSICS__JNPETABLE__
2#define __JPHYSICS__JNPETABLE__
38 template<
class JArgument_t,
56 typedef typename multifunction_t::map_type
map_type;
91 template<
class JPDF_t,
class JPDFMaplist_t,
class JPDFDistance_t>
99 typedef typename JTransformableMultiFunction_t::transformer_type
transformer_type;
104 for (
typename JTransformableMultiFunction_t::super_const_iterator i = input.super_begin(); i != input.super_end(); ++i) {
106 const JMultiKey_t& key = (*i).getKey();
107 const JPDF_t& value = (*i).getValue();
109 const typename transformer_type::array_type array(key);
111 const double V = getIntegral(value, JTimeRange(input.transformer->putXn(array, range.getLowerLimit()),
112 input.transformer->putXn(array, range.getUpperLimit())));
114 const argument_type z = input.transformer->getXn(array, 1.0) - input.transformer->getXn(array, 0.0);
116 this->insert(key, function_type(z*V));
134 for (
super_iterator i = this->super_begin(); i != this->super_end(); ++i) {
138 for (
typename map_type::iterator j = f1.begin(); j != f1.end(); ++j) {
144 const double npe = get_value(input.
evaluate(buffer.
data()));
145 const double W = this->
transformer->getWeight(buffer);
161 template<
class ...Args>
204 for (
super_iterator i = this->super_begin(); i != this->super_end(); ++i) {
208 for (
typename map_type::iterator j = f1.begin(); j != f1.end(); ++j) {
Custom class for integrated values of the PDF of the arrival time of Cherenkov light.
multifunction_t::result_type result_type
virtual result_type evaluate(const argument_type *pX) const override
Recursive function value evaluation.
JNPETable()
Default constructor.
multifunction_t::abscissa_type abscissa_type
multifunction_t::argument_type argument_type
JNPETable(const JTransformableMultiFunction< JPDF_t, JPDFMaplist_t, JPDFDistance_t > &input, const JTimeRange range=JTimeRange())
Constructor.
void transform(const transformer_type &transformer)
Application of weight function.
multifunction_t::reverse_iterator reverse_iterator
JConstantFunction1D< JArgument_t, JResult_t > function_type
multifunction_t::map_type map_type
multifunction_t::ordinate_type ordinate_type
multifunction_t::value_type value_type
multifunction_t::iterator iterator
multifunction_t::const_reverse_iterator const_reverse_iterator
multifunction_t::const_iterator const_iterator
multifunction_t::super_iterator super_iterator
JMultiFunction< JConstantFunction1D< JArgument_t, JResult_t >, JMaplist_t, JDistance_t > multifunction_t
std::shared_ptr< transformer_type > transformer
result_type operator()(const Args &...args) const
Get number of photo-electrons.
JMultiMapTransformer< NUMBER_OF_DIMENSIONS, argument_type > transformer_type
multifunction_t::supervisor_type supervisor_type
multifunction_t::super_const_iterator super_const_iterator
void add(const JNPETable &input)
Add NPE table.
Auxiliary methods for light properties of deep-sea water.
JTOOLS::JRange< double > JTimeRange
Type definition for time range (unit [ns]).
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
double getValue(const double x) const
Function value.