Jpp
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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_type
buffer
 

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

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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

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.

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

77  {}
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  }
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 99 of file JMultiFunction.hh.

100  {
101  return static_cast<const JMultiFunction&>(*this);
102  }
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 110 of file JMultiFunction.hh.

111  {
112  return static_cast<JMultiFunction&>(*this);
113  }
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 122 of file JMultiFunction.hh.

123  {
124  copy(input, *this);
125  }
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 134 of file JMultiFunction.hh.

135  {
136  this->insert(JMultiKey<0, argument_type>(), input);
137  }
Forward declaration of template JMultiKey class.
Definition: JMultiKey.hh:29
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 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  }
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:857
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  }
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:857
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  }
JFunction_t::argument_type argument_type
JArray< NUMBER_OF_DIMENSIONS, argument_type > buffer
const_pointer data() const
Get pointer to data.
Definition: JArray.hh:247
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  }
JFunction_t::argument_type argument_type
Forward declaration of template JMultiKey class.
Definition: JMultiKey.hh:29
collection_type::const_iterator const_iterator
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>>
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  }
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).
JArray< NUMBER_OF_DIMENSIONS, argument_type > buffer

Member Data Documentation

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.

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: