Jpp  15.0.1-rc.2-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 | Public Attributes | Protected Member Functions | List of all members
JTOOLS::JMultiPDF< JFunction_t, JMaplist_t, JDistance_t > Class Template Referenceabstract

General purpose class for multi-dimensional probability density 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_type::NUMBER_OF_DIMENSIONS }
 
typedef
JTransformableMultiFunction
< JFunction_t, JMaplist_t,
JDistance_t > 
transformablemultifunction_type
 
typedef JFunction_t function_type
 
typedef
transformablemultifunction_type::value_type 
value_type
 
typedef
transformablemultifunction_type::argument_type 
argument_type
 
typedef
transformablemultifunction_type::supervisor_type 
supervisor_type
 
typedef
transformablemultifunction_type::abscissa_type 
abscissa_type
 
typedef
transformablemultifunction_type::ordinate_type 
ordinate_type
 
typedef
transformablemultifunction_type::result_type 
result_type
 
typedef
transformablemultifunction_type::const_iterator 
const_iterator
 
typedef
transformablemultifunction_type::const_reverse_iterator 
const_reverse_iterator
 
typedef
transformablemultifunction_type::iterator 
iterator
 
typedef
transformablemultifunction_type::reverse_iterator 
reverse_iterator
 
typedef
transformablemultifunction_type::super_iterator 
super_iterator
 
typedef
transformablemultifunction_type::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 multi-dimensional input. More...
 
template<class JHistogram_t , class JHistogramMaplist_t , class JHistogramDistance_t >
void insert (const JTransformableMultiHistogram< JHistogram_t, JHistogramMaplist_t, JHistogramDistance_t > &input)
 Insert multi-dimensional 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...
 
template<class... Args>
result_type operator() (const Args &...args) const
 Multidimensional interpolation method call. More...
 
virtual result_type evaluate (const argument_type *pX) const override
 Recursive function value evaluation. More...
 
virtual void transform (const transformer_type &transformer) override
 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)
 Recursive method to insert multi-dimensional histogram at multi-dimensional 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)
 Termination method to insert multi-dimensional histogram at multi-dimensional 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...
 

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 multi-dimensional probability density function (PDF).

This class is a simple wrapper around the JTransformableMultiFunction class to properly convert a multi-dimensional histogram to a multi-dimensional PDF. In this, the histogram contents in each bin are divided by the summed weight of the multi-dimensional histogram and the width (c.q. area) of the multi-dimensional 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_type

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_type::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_type::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_type::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_type::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_type::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_type::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_type::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_type::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_type::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_type::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_type::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_type::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 44 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 46 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 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::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
inputmulti-dimensional 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 multi-dimensional 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 multi-dimensional input.

Parameters
inputmulti-dimensional 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 multi-dimensional input.
Definition: JMultiPDF.hh:97
Multidimensional key.
Definition: JMultiKey.hh:34
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 multi-dimensional input.

Parameters
inputmulti-dimensional 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 multi-dimensional input.
Definition: JMultiPDF.hh:97
JLANG::JSharedPointer< transformer_type > transformer
Multidimensional key.
Definition: JMultiKey.hh:34
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

Recursive method to insert multi-dimensional histogram at multi-dimensional key.

Parameters
keymulti-dimensional key
inputmulti-dimensional 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  }
data_type w[N+1][M+1]
Definition: JPolint.hh:741
void insert(const JMultiHistogram< JHistogram_t, JHistogramMaplist_t, JHistogramDistance_t > &input)
Insert multi-dimensional input.
Definition: JMultiPDF.hh:97
Multidimensional key.
Definition: JMultiKey.hh:34
collection_type::const_iterator const_iterator
transformablemultifunction_type::argument_type argument_type
Definition: JMultiPDF.hh:49
int j
Definition: JPolint.hh:666
std::vector< double > weight
Definition: JAlgorithm.hh:417
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

Termination method to insert multi-dimensional histogram at multi-dimensional key.

Convert one-dimensional histogram to PDF, normalise PDF with given weight and insert result at given multi-dimensional key.

Parameters
keymulti-dimensional key
inputhistogram
weightweight

Definition at line 158 of file JMultiPDF.hh.

161  {
162  JFunction_t buffer;
163 
164  makePDF(input, buffer);
165 
166  buffer.div(weight);
167 
169  }
JArray< NUMBER_OF_DIMENSIONS, argument_type > buffer
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).
void insert(const JTransformableMultiFunction< JPDF_t, JPDFMaplist_t, JPDFDistance_t > &input)
Insert multidimensional input.
std::vector< double > weight
Definition: JAlgorithm.hh:417
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 99 of file JTransformableMultiFunction.hh.

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

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

123  {
124  this->transformer.reset(input.transformer->clone());
125 
127  }
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 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<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 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 
)
inlineprotectedinherited

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).
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 152 of file JTransformableMultiFunction.hh.

153  {
154  for (super_iterator i = this->super_begin(); i != this->super_end(); ++i) {
155 
156  const array_type array = (*i).getKey();
157  function_type& f1 = (*i).getValue();
158 
159  if (!f1.empty()) {
160 
161  const JMultiMapGetTransformer<NUMBER_OF_DIMENSIONS - 1, value_type> get(*(this->transformer), array);
162  const JMultiMapPutTransformer<NUMBER_OF_DIMENSIONS - 1, value_type> put(*(this->transformer), array);
163 
164  f1.transform(get);
165 
166  for (typename function_type::iterator j = f1.begin(); j != f1.end(); ++j) {
167 
169 
170  j->getY() += get_value(input.evaluate(buffer.data()));
171  }
172 
173  f1.transform(put);
174  f1.compile();
175  }
176  }
177  }
Auxiliary class to convert JMultiMapTransformer to JCollectionElementTransformer. ...
JArray< NUMBER_OF_DIMENSIONS, argument_type > buffer
Auxiliary class to convert JMultiMapTransformer to JCollectionElementTransformer. ...
int j
Definition: JPolint.hh:666
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:998
const_pointer data() const
Get pointer to data.
Definition: JArray.hh:282
template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
template<class... Args>
result_type JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::operator() ( const Args &...  args) const
inlineinherited

Multidimensional interpolation method call.

Parameters
argscomma seperated list of abscissa values
Returns
function value

Definition at line 187 of file JTransformableMultiFunction.hh.

188  {
189  return this->evaluate(this->buffer.set(args...).data());
190  }
JArray & set(const Args &...args)
Set array.
Definition: JArray.hh:197
JArray< NUMBER_OF_DIMENSIONS, argument_type > buffer
virtual result_type evaluate(const argument_type *pX) const override
Recursive function value evaluation.
const_pointer data() const
Get pointer to data.
Definition: JArray.hh:282
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
inlineoverridevirtualinherited

Recursive function value evaluation.

Parameters
pXpointer to abscissa values
Returns
function value

Definition at line 199 of file JTransformableMultiFunction.hh.

200  {
201  for (int i = 0; i != NUMBER_OF_DIMENSIONS; ++i) {
202  this->buffer[i] = pX[i];
203  }
204 
205  this->buffer[NUMBER_OF_DIMENSIONS - 1] = transformer->putXn(this->buffer, this->buffer[NUMBER_OF_DIMENSIONS - 1]);
206 
207  const result_type y = multifunction_type::evaluate(this->buffer.data());
208  const double W = transformer->getWeight(this->buffer);
209 
211  }
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:282
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)
inlineoverridevirtualinherited

Application of weight function and coordinate transformation.

Parameters
transformerfunction transformer

Definition at line 219 of file JTransformableMultiFunction.hh.

220  {
221  for (super_iterator i = this->super_begin(); i != this->super_end(); ++i) {
222 
223  const array_type array = (*i).getKey();
224  function_type& function = (*i).getValue();
225 
226  const JMultiMapGetTransformer<NUMBER_OF_DIMENSIONS - 1, value_type> get(*(this->transformer), array);
228 
229  function.transform(get);
230  function.transform(put);
231  }
232 
233  this->transformer.reset(transformer.clone());
234  this->compile();
235  }
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 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 ( )
inlineinherited

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

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

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 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  }
do set_variable OUTPUT_DIRECTORY $WORKDIR T
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  }
do set_variable OUTPUT_DIRECTORY $WORKDIR T

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 268 of file JTransformableMultiFunction.hh.


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