Jpp
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t > Class Template Reference

Multidimensional interpolation method. More...

#include <JMultiFunction.hh>

Inheritance diagram for JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >:
JTOOLS::JMultiMap< JFunction_t::argument_type, JFunction_t, JMaplist_t, JDistance_t > JPHYSICS::JNPETable< double, double, JNPEMaplist_t > JPHYSICS::JCDFTable2D< JArgument_t, JResult_t > JPHYSICS::JNPETable< JArgument_t, JResult_t, JMaplist_t, JDistance_t > JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t > KM3NET::JPhotocathodeArea2D JPHYSICS::JPDFTable< JFunction1D_t, JPDFMaplist_t > JPHYSICS::JPDFTable< JFunction1D_t, JMaplist_t, JDistance_t > JTOOLS::JMultiPDF< JFunction_t, JMaplist_t, JDistance_t >

Public Types

enum  { NUMBER_OF_DIMENSIONS = JMapLength<JMaplist_t>::value + JFunction_t::NUMBER_OF_DIMENSIONS }
 
typedef JMultiMap< typename JFunction_t::argument_type, JFunction_t, JMaplist_t, JDistance_t > multimap_type
 
typedef JFunction_t function_type
 
typedef JFunction_t::value_type value_type
 
typedef JFunction_t::argument_type argument_type
 
typedef JFunction_t::supervisor_type supervisor_type
 
typedef multimap_type::abscissa_type abscissa_type
 
typedef multimap_type::ordinate_type ordinate_type
 
typedef multimap_type::result_type result_type
 
typedef multimap_type::const_iterator const_iterator
 
typedef multimap_type::const_reverse_iterator const_reverse_iterator
 
typedef multimap_type::iterator iterator
 
typedef multimap_type::reverse_iterator reverse_iterator
 
typedef multimap_type::super_iterator super_iterator
 
typedef multimap_type::super_const_iterator super_const_iterator
 

Public Member Functions

 JMultiFunction ()
 Default constructor. More...
 
template<class T >
 JMultiFunction (const T &input)
 Constructor. More...
 
const JMultiFunctiongetMultiFunction () const
 Get multidimensional function. More...
 
JMultiFunctiongetMultiFunction ()
 Get multidimensional function. More...
 
template<class JPDF_t , class JPDFMaplist_t , class JPDFDistance_t >
void insert (const JMultiFunction< JPDF_t, JPDFMaplist_t, JPDFDistance_t > &input)
 Insert multidimensional input. More...
 
template<class JHistogram_t , class JHistogramMaplist_t , class JHistogramDistance_t >
void insert (const JMultiHistogram< JHistogram_t, JHistogramMaplist_t, JHistogramDistance_t > &input)
 Insert multidimensional input. More...
 
void compile ()
 Compilation. More...
 
void setExceptionHandler (const supervisor_type &supervisor)
 Set the supervisor for handling of exceptions. More...
 
result_type operator() (const argument_type x,...) const
 Multi-dimensional interpolation method call. More...
 

Protected Member Functions

template<unsigned int N, class __JAbscissa_t , class __JContents_t , template< class, class, class > class __JMap_t, class __JDistance_t >
void insert (const JMultiKey< N, argument_type > &key, const JHistogramMap< __JAbscissa_t, __JContents_t, __JMap_t, __JDistance_t > &input)
 Insert multidimensional histogram at multidimensional key. More...
 
template<class __JValue_t >
void insert (const JMultiKey< JMapLength< JMaplist_t >::value, argument_type > &key, const __JValue_t &input)
 Convert one-dimensional histogram to PDF and insert result at given multidimensional key. More...
 

Protected Attributes

va_list ap
 
JArray< NUMBER_OF_DIMENSIONS, argument_typebuffer
 

Detailed Description

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
class JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >

Multidimensional interpolation method.

The template parameters respectively refer to:

  1. function object used for the lowest dimension(s);
  2. list of functional maps used for the higher dimension(s); and
  3. distance operator.

The number of dimensions of this function object is equal to the length of the given map list plus the extra dimensions of the first function object. When converting a multidimensional histogram to a multidimensional function for subsequent interpolations, the function object used for the lowest dimension(s) is treated as a probability density function.

Definition at line 40 of file JMultiFunction.hh.

Member Typedef Documentation

◆ multimap_type

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
typedef JMultiMap<typename JFunction_t::argument_type, JFunction_t, JMaplist_t, JDistance_t> JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::multimap_type

Definition at line 48 of file JMultiFunction.hh.

◆ function_type

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
typedef JFunction_t JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::function_type

Definition at line 52 of file JMultiFunction.hh.

◆ value_type

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
typedef JFunction_t::value_type JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::value_type

Definition at line 54 of file JMultiFunction.hh.

◆ argument_type

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
typedef JFunction_t::argument_type JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::argument_type

Definition at line 55 of file JMultiFunction.hh.

◆ supervisor_type

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
typedef JFunction_t::supervisor_type JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::supervisor_type

Definition at line 56 of file JMultiFunction.hh.

◆ abscissa_type

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
typedef multimap_type::abscissa_type JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::abscissa_type

Definition at line 58 of file JMultiFunction.hh.

◆ ordinate_type

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
typedef multimap_type::ordinate_type JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::ordinate_type

Definition at line 59 of file JMultiFunction.hh.

◆ result_type

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
typedef multimap_type::result_type JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::result_type

Definition at line 60 of file JMultiFunction.hh.

◆ const_iterator

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
typedef multimap_type::const_iterator JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::const_iterator

Definition at line 62 of file JMultiFunction.hh.

◆ const_reverse_iterator

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
typedef multimap_type::const_reverse_iterator JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::const_reverse_iterator

Definition at line 63 of file JMultiFunction.hh.

◆ iterator

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
typedef multimap_type::iterator JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::iterator

Definition at line 64 of file JMultiFunction.hh.

◆ reverse_iterator

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
typedef multimap_type::reverse_iterator JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::reverse_iterator

Definition at line 65 of file JMultiFunction.hh.

◆ super_iterator

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
typedef multimap_type::super_iterator JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::super_iterator

Definition at line 67 of file JMultiFunction.hh.

◆ super_const_iterator

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
typedef multimap_type::super_const_iterator JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::super_const_iterator

Definition at line 68 of file JMultiFunction.hh.

Member Enumeration Documentation

◆ anonymous enum

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
anonymous enum
Enumerator
NUMBER_OF_DIMENSIONS 

Definition at line 50 of file JMultiFunction.hh.

50 { NUMBER_OF_DIMENSIONS = JMapLength<JMaplist_t>::value + JFunction_t::NUMBER_OF_DIMENSIONS };

Constructor & Destructor Documentation

◆ JMultiFunction() [1/2]

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::JMultiFunction ( )
inline

Default constructor.

Definition at line 76 of file JMultiFunction.hh.

77  {}

◆ JMultiFunction() [2/2]

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
template<class T >
JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::JMultiFunction ( const T &  input)
inline

Constructor.

Parameters
inputmultidimensional input

Definition at line 86 of file JMultiFunction.hh.

87  {
88  insert(input);
89 
90  this->compile();
91  }

Member Function Documentation

◆ getMultiFunction() [1/2]

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
const JMultiFunction& JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::getMultiFunction ( ) const
inline

Get multidimensional function.

Returns
this multidimensional function

Definition at line 99 of file JMultiFunction.hh.

100  {
101  return static_cast<const JMultiFunction&>(*this);
102  }

◆ getMultiFunction() [2/2]

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
JMultiFunction& JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::getMultiFunction ( )
inline

Get multidimensional function.

Returns
this multidimensional function

Definition at line 110 of file JMultiFunction.hh.

111  {
112  return static_cast<JMultiFunction&>(*this);
113  }

◆ insert() [1/4]

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
template<class JPDF_t , class JPDFMaplist_t , class JPDFDistance_t >
void JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::insert ( const JMultiFunction< JPDF_t, JPDFMaplist_t, JPDFDistance_t > &  input)
inline

Insert multidimensional input.

Parameters
inputmultidimensional function

Definition at line 122 of file JMultiFunction.hh.

123  {
124  copy(input, *this);
125  }

◆ insert() [2/4]

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
template<class JHistogram_t , class JHistogramMaplist_t , class JHistogramDistance_t >
void JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::insert ( const JMultiHistogram< JHistogram_t, JHistogramMaplist_t, JHistogramDistance_t > &  input)
inline

Insert multidimensional input.

Parameters
inputmultidimensional histogram

Definition at line 134 of file JMultiFunction.hh.

135  {
136  this->insert(JMultiKey<0, argument_type>(), input);
137  }

◆ compile()

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
void JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::compile ( )
inline

Compilation.

Definition at line 143 of file JMultiFunction.hh.

144  {
145  this->for_each(compiler);
146 
147  for (super_iterator i = this->super_begin(); i != this->super_end(); ++i) {
148  (*i).getValue().compile();
149  }
150  }

◆ setExceptionHandler()

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
void JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::setExceptionHandler ( const supervisor_type supervisor)
inline

Set the supervisor for handling of exceptions.

Parameters
supervisorsupervisor

Definition at line 158 of file JMultiFunction.hh.

159  {
160  this->for_each(supervisor);
161 
162  for (super_iterator i = this->super_begin(); i != this->super_end(); ++i) {
163  (*i).getValue().setExceptionHandler(supervisor);
164  }
165  }

◆ operator()()

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
result_type JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::operator() ( const argument_type  x,
  ... 
) const
inline

Multi-dimensional interpolation method call.

Parameters
xcomma seperated list of abscissa values
Returns
function value

Definition at line 174 of file JMultiFunction.hh.

175  {
176  va_start(ap, x);
177 
178  buffer[0] = x;
179 
180  for (int i = 1; i != NUMBER_OF_DIMENSIONS; ++i) {
181  buffer[i] = va_arg(ap, argument_type);
182  }
183 
184  va_end(ap);
185 
186  return this->evaluate(buffer.data());
187  }

◆ insert() [3/4]

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
template<unsigned int N, class __JAbscissa_t , class __JContents_t , template< class, class, class > class __JMap_t, class __JDistance_t >
void JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::insert ( const JMultiKey< N, argument_type > &  key,
const JHistogramMap< __JAbscissa_t, __JContents_t, __JMap_t, __JDistance_t > &  input 
)
inlineprotected

Insert multidimensional histogram at multidimensional key.

Parameters
keymultidimensional key
inputmultidimensional histogram

Definition at line 202 of file JMultiFunction.hh.

204  {
205  if (input.size() > 1) {
206 
207  for (typename JHistogramMap<__JAbscissa_t, __JContents_t, __JMap_t, __JDistance_t>::const_iterator j = input.begin(), i = j++; j != input.end(); ++i, ++j) {
208 
209  const argument_type x = 0.5 * (i->getX() + j->getX());
210 
211  insert(JMultiKey<N+1, argument_type>(key, x), i->getY());
212  }
213  }
214  }

◆ insert() [4/4]

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
template<class __JValue_t >
void JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::insert ( const JMultiKey< JMapLength< JMaplist_t >::value, argument_type > &  key,
const __JValue_t &  input 
)
inlineprotected

Convert one-dimensional histogram to PDF and insert result at given multidimensional key.

Parameters
keymultidimensional key
inputhistogram

Definition at line 224 of file JMultiFunction.hh.

226  {
227  JFunction_t buffer;
228 
229  makePDF(input, buffer);
230 
231  multimap_type::insert(key, buffer);
232  }

Member Data Documentation

◆ ap

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
va_list JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::ap
mutableprotected

Definition at line 235 of file JMultiFunction.hh.

◆ buffer

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
JArray<NUMBER_OF_DIMENSIONS, argument_type> JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::buffer
mutableprotected

Definition at line 236 of file JMultiFunction.hh.


The documentation for this class was generated from the following file:
JTOOLS::compiler
static const JCompiler compiler
Function object for functional object compilation.
Definition: JFunctional.hh:369
JTOOLS::JMultiFunction::ap
va_list ap
Definition: JMultiFunction.hh:235
JTOOLS::JHistogramMap::const_iterator
collection_type::const_iterator const_iterator
Definition: JHistogramMap.hh:41
JTOOLS::j
int j
Definition: JPolint.hh:634
JTOOLS::JMapLength
Length of map list.
Definition: JMapList.hh:45
JTOOLS::JArray::data
const_pointer data() const
Get pointer to data.
Definition: JArray.hh:263
JTOOLS::JMultiFunction::super_iterator
multimap_type::super_iterator super_iterator
Definition: JMultiFunction.hh:67
JTOOLS::for_each
JObject_t & for_each(JObject_t &object, JType< JTypeList< JHead_t, JTail_t > > typelist, const JTuple< T > &tuple)
For each data type method.
Definition: JTuple.hh:857
JTOOLS::JMultiFunction::buffer
JArray< NUMBER_OF_DIMENSIONS, argument_type > buffer
Definition: JMultiFunction.hh:236
JTOOLS::makePDF
void makePDF(const JHistogram1D< JElement_t, JContainer_t, JDistance_t > &input, typename JMappable< JElement_t >::map_type &output)
Conversion of histogram to probability density function (PDF).
Definition: JHistogram1D.hh:545
JTOOLS::JMultiFunction::argument_type
JFunction_t::argument_type argument_type
Definition: JMultiFunction.hh:55
JTOOLS::JMultiFunction::NUMBER_OF_DIMENSIONS
Definition: JMultiFunction.hh:50
JTOOLS::JMultiFunction::compile
void compile()
Compilation.
Definition: JMultiFunction.hh:143
JTOOLS::JMultiKey
Forward declaration of template JMultiKey class.
Definition: JMultiKey.hh:29
JTOOLS::copy
void copy(const T &input, T &output)
Copy of input to output.
Definition: JToolsToolkit.hh:250
JTOOLS::JMultiFunction::insert
void insert(const JMultiFunction< JPDF_t, JPDFMaplist_t, JPDFDistance_t > &input)
Insert multidimensional input.
Definition: JMultiFunction.hh:122