Jpp  15.0.1-rc.1-highQE
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Protected Member Functions | 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::JNPETable< double, double, JNPEMapList_t2 > JPHYSICS::JCDFTable2D< JArgument_t, JResult_t > JPHYSICS::JNPETable< JArgument_t, JResult_t, JMaplist_t, JDistance_t > JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t > KM3NET2D::JPhotocathodeArea2D JPHYSICS::JPDFTable< JFunction1D_t, JPDFMaplist_t > 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...
 
template<class... Args>
result_type operator() (const Args &...args) 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...
 

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 38 of file JMultiFunction.hh.

Member Typedef Documentation

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 46 of file JMultiFunction.hh.

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 50 of file JMultiFunction.hh.

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 52 of file JMultiFunction.hh.

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 53 of file JMultiFunction.hh.

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 54 of file JMultiFunction.hh.

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 56 of file JMultiFunction.hh.

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 57 of file JMultiFunction.hh.

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 58 of file JMultiFunction.hh.

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 60 of file JMultiFunction.hh.

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 61 of file JMultiFunction.hh.

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 62 of file JMultiFunction.hh.

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 63 of file JMultiFunction.hh.

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 65 of file JMultiFunction.hh.

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 66 of file JMultiFunction.hh.

Member Enumeration Documentation

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 48 of file JMultiFunction.hh.

Constructor & Destructor Documentation

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 74 of file JMultiFunction.hh.

75  {}
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 84 of file JMultiFunction.hh.

85  {
86  insert(input);
87 
88  this->compile();
89  }
void compile()
Compilation.
void insert(const JMultiFunction< JPDF_t, JPDFMaplist_t, JPDFDistance_t > &input)
Insert multidimensional input.

Member Function Documentation

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 97 of file JMultiFunction.hh.

98  {
99  return static_cast<const JMultiFunction&>(*this);
100  }
Multidimensional interpolation method.
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 108 of file JMultiFunction.hh.

109  {
110  return static_cast<JMultiFunction&>(*this);
111  }
Multidimensional interpolation method.
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 120 of file JMultiFunction.hh.

121  {
122  copy(input, *this);
123  }
void copy(const T &input, T &output)
Copy of input to output.
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 132 of file JMultiFunction.hh.

133  {
134  this->insert(JMultiKey<0, argument_type>(), input);
135  }
Multidimensional key.
Definition: JMultiKey.hh:34
void insert(const JMultiFunction< JPDF_t, JPDFMaplist_t, JPDFDistance_t > &input)
Insert multidimensional input.
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 141 of file JMultiFunction.hh.

142  {
143  this->for_each(compiler);
144 
145  for (super_iterator i = this->super_begin(); i != this->super_end(); ++i) {
146  (*i).getValue().compile();
147  }
148  }
multimap_type::super_iterator super_iterator
static const JCompiler compiler
Function object for functional object compilation.
Definition: JFunctional.hh:369
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:666
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 156 of file JMultiFunction.hh.

157  {
158  this->for_each(supervisor);
159 
160  for (super_iterator i = this->super_begin(); i != this->super_end(); ++i) {
161  (*i).getValue().setExceptionHandler(supervisor);
162  }
163  }
multimap_type::super_iterator super_iterator
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:666
template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
template<class... Args>
result_type JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::operator() ( const Args &...  args) const
inline

Multi-dimensional interpolation method call.

Parameters
argscomma seperated list of abscissa values
Returns
function value

Definition at line 173 of file JMultiFunction.hh.

174  {
175  return this->evaluate(JArray<NUMBER_OF_DIMENSIONS, argument_type>(args...).data());
176  }
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 191 of file JMultiFunction.hh.

193  {
194  if (input.size() > 1) {
195 
196  for (typename JHistogramMap<__JAbscissa_t, __JContents_t, __JMap_t, __JDistance_t>::const_iterator j = input.begin(), i = j++; j != input.end(); ++i, ++j) {
197 
198  const argument_type x = 0.5 * (i->getX() + j->getX());
199 
200  insert(JMultiKey<N+1, argument_type>(key, x), i->getY());
201  }
202  }
203  }
JFunction_t::argument_type argument_type
Multidimensional key.
Definition: JMultiKey.hh:34
collection_type::const_iterator const_iterator
void insert(const JMultiFunction< JPDF_t, JPDFMaplist_t, JPDFDistance_t > &input)
Insert multidimensional input.
int j
Definition: JPolint.hh:666
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 213 of file JMultiFunction.hh.

215  {
216  JFunction_t buffer;
217 
218  makePDF(input, buffer);
219 
220  multimap_type::insert(key, buffer);
221  }
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).

The documentation for this class was generated from the following file: