Jpp
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
JTOOLS::JMultiPDF< JFunction_t, JMaplist_t, JDistance_t > Class Template Referenceabstract

General purpose class for multidimensional probability desnity function (PDF). More...

#include <JMultiPDF.hh>

Inheritance diagram for JTOOLS::JMultiPDF< JFunction_t, JMaplist_t, JDistance_t >:
JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t > JIO::JObjectBinaryIO< T > JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t > JTOOLS::JTransformable< JMapLength< JMaplist_t >::value, JFunction_t::argument_type > JTOOLS::JMultiMap< JFunction_t::argument_type, JFunction_t, JMaplist_t, JDistance_t >

Public Types

enum  { NUMBER_OF_DIMENSIONS = transformablemultifunction_t::NUMBER_OF_DIMENSIONS }
 
typedef
JTransformableMultiFunction
< JFunction_t, JMaplist_t,
JDistance_t > 
transformablemultifunction_t
 
typedef JFunction_t function_type
 
typedef
transformablemultifunction_t::value_type 
value_type
 
typedef
transformablemultifunction_t::argument_type 
argument_type
 
typedef
transformablemultifunction_t::supervisor_type 
supervisor_type
 
typedef
transformablemultifunction_t::abscissa_type 
abscissa_type
 
typedef
transformablemultifunction_t::ordinate_type 
ordinate_type
 
typedef
transformablemultifunction_t::result_type 
result_type
 
typedef
transformablemultifunction_t::const_iterator 
const_iterator
 
typedef
transformablemultifunction_t::const_reverse_iterator 
const_reverse_iterator
 
typedef
transformablemultifunction_t::iterator 
iterator
 
typedef
transformablemultifunction_t::reverse_iterator 
reverse_iterator
 
typedef
transformablemultifunction_t::super_iterator 
super_iterator
 
typedef
transformablemultifunction_t::super_const_iterator 
super_const_iterator
 
typedef JMultiMapTransformer
< JMapLength< JMaplist_t >
::value, argument_type
transformer_type
 
typedef
transformer_type::array_type 
array_type
 
enum  { NUMBER_OF_DIMENSIONS = multifunction_type::NUMBER_OF_DIMENSIONS }
 
typedef JMultiFunction
< JFunction_t, JMaplist_t,
JDistance_t > 
multifunction_type
 
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
 

Public Member Functions

 JMultiPDF ()
 Default constructor. More...
 
template<class T >
 JMultiPDF (const T &input)
 Constructor. 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...
 
template<class JHistogram_t , class JHistogramMaplist_t , class JHistogramDistance_t >
void insert (const JTransformableMultiHistogram< JHistogram_t, JHistogramMaplist_t, JHistogramDistance_t > &input)
 Insert multidimensional input. More...
 
const JTransformableMultiFunctiongetTransformableMultiFunction () const
 Get transformable multidimensional function. More...
 
JTransformableMultiFunctiongetTransformableMultiFunction ()
 Get transformable multidimensional function. More...
 
template<class JPDF_t , class JPDFMaplist_t , class JPDFDistance_t >
void insert (const JTransformableMultiFunction< JPDF_t, JPDFMaplist_t, JPDFDistance_t > &input)
 Insert multidimensional input. 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 JMultiFunction_t >
void add (const JMultiFunction_t &input)
 Add function. More...
 
result_type operator() (const argument_type x,...) const
 Multidimensional interpolation method call. More...
 
virtual result_type evaluate (const argument_type *pX) const
 Recursive function value evaluation. More...
 
virtual void transform (const transformer_type &transformer)
 Application of weight function and coordinate transformation. More...
 
virtual void transform (const transformer_type &transformer)=0
 Application of transformation. More...
 
const JMultiFunctiongetMultiFunction () const
 Get multidimensional function. More...
 
JMultiFunctiongetMultiFunction ()
 Get multidimensional function. More...
 
void compile ()
 Compilation. More...
 
void setExceptionHandler (const supervisor_type &supervisor)
 Set the supervisor for handling of exceptions. More...
 
void load (const char *file_name)
 Load from input file. More...
 
void store (const char *file_name) const
 Store to output file. More...
 

Public Attributes

JLANG::JSharedPointer
< transformer_type
transformer
 

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, const double weight)
 Insert multidimensional histogram at multidimensional key. More...
 
template<class __JElement_t , template< class, class > class __JContainer_t, class __JDistance_t >
void insert (const JMultiKey< JMapLength< JMaplist_t >::value, argument_type > &key, const JHistogram1D< __JElement_t, __JContainer_t, __JDistance_t > &input, const double weight)
 Convert one-dimensional histogram to PDF and insert result at given multidimensional key. More...
 
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::JMultiPDF< JFunction_t, JMaplist_t, JDistance_t >

General purpose class for multidimensional probability desnity function (PDF).

This class is a simple wrapper around the JTransformableMultiFunction class to properly convert a multidimensional histogram to a multidimensional PDF. In this, the histogram contents in each bin are divided by the summed weight of the multidimensional histogram and the 'width' of the multidimensional bin.

Definition at line 34 of file JMultiPDF.hh.

Member Typedef Documentation

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
typedef JTransformableMultiFunction<JFunction_t, JMaplist_t, JDistance_t> JTOOLS::JMultiPDF< JFunction_t, JMaplist_t, JDistance_t >::transformablemultifunction_t

Definition at line 42 of file JMultiPDF.hh.

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

Definition at line 46 of file JMultiPDF.hh.

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

Definition at line 48 of file JMultiPDF.hh.

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

Definition at line 49 of file JMultiPDF.hh.

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

Definition at line 50 of file JMultiPDF.hh.

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

Definition at line 52 of file JMultiPDF.hh.

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

Definition at line 53 of file JMultiPDF.hh.

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

Definition at line 54 of file JMultiPDF.hh.

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

Definition at line 56 of file JMultiPDF.hh.

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

Definition at line 57 of file JMultiPDF.hh.

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

Definition at line 58 of file JMultiPDF.hh.

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

Definition at line 59 of file JMultiPDF.hh.

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

Definition at line 61 of file JMultiPDF.hh.

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

Definition at line 62 of file JMultiPDF.hh.

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
typedef JMultiMapTransformer<JMapLength<JMaplist_t>::value, argument_type> JTOOLS::JMultiPDF< JFunction_t, JMaplist_t, JDistance_t >::transformer_type

Definition at line 64 of file JMultiPDF.hh.

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
typedef transformer_type::array_type JTOOLS::JMultiPDF< JFunction_t, JMaplist_t, JDistance_t >::array_type

Definition at line 65 of file JMultiPDF.hh.

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

Definition at line 46 of file JTransformableMultiFunction.hh.

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
inherited

Definition at line 48 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
template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
anonymous enum
inherited
template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
anonymous enum
inherited
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::JMultiPDF< JFunction_t, JMaplist_t, JDistance_t >::JMultiPDF ( )
inline

Default constructor.

Definition at line 73 of file JMultiPDF.hh.

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

Constructor.

Parameters
inputmultidimensional input

Definition at line 83 of file JMultiPDF.hh.

84  {
85  insert(input);
86 
87  this->compile();
88  }
void compile()
Compilation.
void insert(const JMultiHistogram< JHistogram_t, JHistogramMaplist_t, JHistogramDistance_t > &input)
Insert multidimensional input.
Definition: JMultiPDF.hh:97

Member Function Documentation

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

98  {
99  this->insert(JMultiKey<0, argument_type>(), input, input.getIntegral());
100  }
void insert(const JMultiHistogram< JHistogram_t, JHistogramMaplist_t, JHistogramDistance_t > &input)
Insert multidimensional input.
Definition: JMultiPDF.hh:97
Forward declaration of template JMultiKey class.
Definition: JMultiKey.hh:29
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::JMultiPDF< JFunction_t, JMaplist_t, JDistance_t >::insert ( const JTransformableMultiHistogram< JHistogram_t, JHistogramMaplist_t, JHistogramDistance_t > &  input)
inline

Insert multidimensional input.

Parameters
inputmultidimensional histogram

Definition at line 109 of file JMultiPDF.hh.

110  {
111  this->transformer->reset(input.transformer->clone());
112 
113  this->insert(JMultiKey<0, argument_type>(), input, input.getIntegral());
114  }
void insert(const JMultiHistogram< JHistogram_t, JHistogramMaplist_t, JHistogramDistance_t > &input)
Insert multidimensional input.
Definition: JMultiPDF.hh:97
JLANG::JSharedPointer< transformer_type > transformer
Forward declaration of template JMultiKey class.
Definition: JMultiKey.hh:29
JLANG::JSharedPointer< transformer_type > transformer
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::JMultiPDF< JFunction_t, JMaplist_t, JDistance_t >::insert ( const JMultiKey< N, argument_type > &  key,
const JHistogramMap< __JAbscissa_t, __JContents_t, __JMap_t, __JDistance_t > &  input,
const double  weight 
)
inlineprotected

Insert multidimensional histogram at multidimensional key.

Parameters
keymultidimensional key
inputmultidimensional histogram
weightweight

Definition at line 129 of file JMultiPDF.hh.

132  {
133  if (input.size() > 1) {
134 
135  for (typename JHistogramMap<__JAbscissa_t, __JContents_t, __JMap_t, __JDistance_t>::const_iterator j = input.begin(), i = j++; j != input.end(); ++i, ++j) {
136 
137  const argument_type x = 0.5 * (i->getX() + j->getX());
138  const double w = weight * input.getDistance(i->getX(), j->getX());
139 
140  insert(JMultiKey<N+1, argument_type>(key, x), i->getY(), w);
141  }
142  }
143  }
void insert(const JMultiHistogram< JHistogram_t, JHistogramMaplist_t, JHistogramDistance_t > &input)
Insert multidimensional input.
Definition: JMultiPDF.hh:97
Forward declaration of template JMultiKey class.
Definition: JMultiKey.hh:29
collection_type::const_iterator const_iterator
transformablemultifunction_t::argument_type argument_type
Definition: JMultiPDF.hh:49
template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
template<class __JElement_t , template< class, class > class __JContainer_t, class __JDistance_t >
void JTOOLS::JMultiPDF< JFunction_t, JMaplist_t, JDistance_t >::insert ( const JMultiKey< JMapLength< JMaplist_t >::value, argument_type > &  key,
const JHistogram1D< __JElement_t, __JContainer_t, __JDistance_t > &  input,
const double  weight 
)
inlineprotected

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

Parameters
keymultidimensional key
inputhistogram
weightweight

Definition at line 156 of file JMultiPDF.hh.

159  {
160  JFunction_t buffer;
161 
162  makePDF(input, buffer);
163 
164  buffer.div(weight);
165 
167  }
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
void insert(const JTransformableMultiFunction< 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>>
const JTransformableMultiFunction& JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::getTransformableMultiFunction ( ) const
inlineinherited

Get transformable multidimensional function.

Returns
this transformable multidimensional function

Definition at line 101 of file JTransformableMultiFunction.hh.

102  {
103  return static_cast<const JTransformableMultiFunction&>(*this);
104  }
Transformable multidimensional function.
template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
JTransformableMultiFunction& JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::getTransformableMultiFunction ( )
inlineinherited

Get transformable multidimensional function.

Returns
this transformable multidimensional function

Definition at line 112 of file JTransformableMultiFunction.hh.

113  {
114  return static_cast<JTransformableMultiFunction&>(*this);
115  }
Transformable multidimensional function.
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::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::insert ( const JTransformableMultiFunction< JPDF_t, JPDFMaplist_t, JPDFDistance_t > &  input)
inlineinherited

Insert multidimensional input.

Parameters
inputmultidimensional function

Definition at line 124 of file JTransformableMultiFunction.hh.

125  {
126  this->transformer.reset(input.transformer->clone());
127 
129  }
void insert(const JMultiFunction< JPDF_t, JPDFMaplist_t, JPDFDistance_t > &input)
Insert multidimensional input.
JLANG::JSharedPointer< transformer_type > transformer
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)
inlineinherited

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<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 
)
inlineprotectedinherited

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 
)
inlineprotectedinherited

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
template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
template<class JMultiFunction_t >
void JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::add ( const JMultiFunction_t &  input)
inlineinherited

Add function.

Note that the summation is made via iteration of the elements in this multidimensional function.

Parameters
inputmultidimensional function

Definition at line 154 of file JTransformableMultiFunction.hh.

155  {
156  for (super_iterator i = this->super_begin(); i != this->super_end(); ++i) {
157 
158  const array_type array = (*i).getKey();
159  function_type& f1 = (*i).getValue();
160 
161  if (!f1.empty()) {
162 
163  const JMultiMapGetTransformer<NUMBER_OF_DIMENSIONS - 1, value_type> get(*(this->transformer), array);
164  const JMultiMapPutTransformer<NUMBER_OF_DIMENSIONS - 1, value_type> put(*(this->transformer), array);
165 
166  f1.transform(get);
167 
168  for (typename function_type::iterator j = f1.begin(); j != f1.end(); ++j) {
169 
170  const JArray<NUMBER_OF_DIMENSIONS, argument_type> buffer(array, j->getX());
171 
172  j->getY() += get_value(input.evaluate(buffer.data()));
173  }
174 
175  f1.transform(put);
176  f1.compile();
177  }
178  }
179  }
Auxiliary class to convert JMultiMapTransformer to JCollectionElementTransformer. ...
JArray< NUMBER_OF_DIMENSIONS, argument_type > buffer
Auxiliary class to convert JMultiMapTransformer to JCollectionElementTransformer. ...
multifunction_type::super_iterator super_iterator
JLANG::JSharedPointer< transformer_type > transformer
JResultEvaluator< JResult_t >::result_type get_value(const JResult_t &value)
Helper method to recursively evaluate a to function value.
Definition: JResult.hh:748
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>>
result_type JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::operator() ( const argument_type  x,
  ... 
) const
inlineinherited

Multidimensional interpolation method call.

Parameters
xcomma seperated list of abscissa values
Returns
function value

Definition at line 188 of file JTransformableMultiFunction.hh.

189  {
190  va_start(this->ap, x);
191 
192  this->buffer[0] = x;
193 
194  for (int i = 1; i != NUMBER_OF_DIMENSIONS; ++i) {
195  this->buffer[i] = va_arg(this->ap, argument_type);
196  }
197 
198  va_end(this->ap);
199 
200  return this->evaluate(this->buffer.data());
201  }
multifunction_type::argument_type argument_type
JArray< NUMBER_OF_DIMENSIONS, argument_type > buffer
const_pointer data() const
Get pointer to data.
Definition: JArray.hh:247
virtual result_type evaluate(const argument_type *pX) const
Recursive function value evaluation.
template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
virtual result_type JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::evaluate ( const argument_type pX) const
inlinevirtualinherited

Recursive function value evaluation.

Parameters
pXpointer to abscissa values
Returns
function value

Definition at line 210 of file JTransformableMultiFunction.hh.

211  {
212  for (int i = 0; i != NUMBER_OF_DIMENSIONS; ++i) {
213  this->buffer[i] = pX[i];
214  }
215 
216  this->buffer[NUMBER_OF_DIMENSIONS - 1] = transformer->putXn(this->buffer, this->buffer[NUMBER_OF_DIMENSIONS - 1]);
217 
218  const result_type y = multifunction_type::evaluate(this->buffer.data());
219  const double W = transformer->getWeight(this->buffer);
220 
222  }
multifunction_type::result_type result_type
static result_type transform(const JMultiMapTransformer< N, JArgument_t > &transformer, typename JMultiMapTransformer< N, JArgument_t >::const_array_type array, const result_type &result)
JArray< NUMBER_OF_DIMENSIONS, argument_type > buffer
JLANG::JSharedPointer< transformer_type > transformer
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>>
virtual void JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::transform ( const transformer_type transformer)
inlinevirtualinherited

Application of weight function and coordinate transformation.

Parameters
transformerfunction transformer

Definition at line 230 of file JTransformableMultiFunction.hh.

231  {
232  for (super_iterator i = this->super_begin(); i != this->super_end(); ++i) {
233 
234  const array_type array = (*i).getKey();
235  function_type& function = (*i).getValue();
236 
237  const JMultiMapGetTransformer<NUMBER_OF_DIMENSIONS - 1, value_type> get(*(this->transformer), array);
239 
240  function.transform(get);
241  function.transform(put);
242  }
243 
244  this->transformer.reset(transformer.clone());
245  this->compile();
246  }
void compile()
Compilation.
Auxiliary class to convert JMultiMapTransformer to JCollectionElementTransformer. ...
Auxiliary class to convert JMultiMapTransformer to JCollectionElementTransformer. ...
multifunction_type::super_iterator super_iterator
JLANG::JSharedPointer< transformer_type > transformer
virtual void JTOOLS::JTransformable< N, JFunction_t::argument_type >::transform ( const transformer_type transformer)
pure virtualinherited

Application of transformation.

Parameters
transformerfunction transformer
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
inlineinherited

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 ( )
inlineinherited

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>>
void JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::compile ( )
inlineinherited

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)
inlineinherited

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 T>
void JIO::JObjectBinaryIO< T >::load ( const char *  file_name)
inlineinherited

Load from input file.

Parameters
file_namefile name

Definition at line 29 of file JObjectBinaryIO.hh.

30  {
31  JLANG::load<JFileStreamReader>(file_name, static_cast<T&>(*this));
32  }
template<class T>
void JIO::JObjectBinaryIO< T >::store ( const char *  file_name) const
inlineinherited

Store to output file.

Parameters
file_namefile name

Definition at line 40 of file JObjectBinaryIO.hh.

41  {
42  JLANG::store<JFileStreamWriter>(file_name, static_cast<const T&>(*this));
43  }

Member Data Documentation

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
JLANG::JSharedPointer<transformer_type> JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::transformer
inherited

Definition at line 279 of file JTransformableMultiFunction.hh.

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
mutableprotectedinherited

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
mutableprotectedinherited

Definition at line 236 of file JMultiFunction.hh.


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