Jpp  master_rocky-40-g5f0272dcd
the software that should make you happy
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 Reference

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< typename JFunction_t::argument_type > > JIO::JObjectBinaryIO< T > JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance< typename JFunction_t::argument_type > > JTOOLS::JTransformable< JMapLength< JMaplist_t >::value, JFunction_t::argument_type > JTOOLS::JMultiMap< JFunction_t::argument_type, JFunction_t, JMaplist_t, JDistance< typename JFunction_t::argument_type > >

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_typetransformer_type
 
typedef transformer_type::array_type array_type
 
enum  
 
typedef JMultiFunction< JFunction_t, JMaplist_t, JDistance< typename JFunction_t::argument_type > > multifunction_type
 
enum  
 
typedef JMultiMap< typename JFunction_t::argument_type, JFunction_t, JMaplist_t, JDistance< typename JFunction_t::argument_type > > 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...
 
template<class __JFunction_t , class __JMaplist_t , class __JDistance_t >
void insert (const JTransformableMultiFunction< __JFunction_t, __JMaplist_t, __JDistance_t > &input)
 Insert multidimensional input. More...
 
template<class JHistogram_t , class __JMaplist_t , class __JDistance_t >
void insert (const JTransformableMultiHistogram< JHistogram_t, __JMaplist_t, __JDistance_t > &input)
 Insert multidimensional input. More...
 
const JTransformableMultiFunctiongetTransformableMultiFunction () const
 Get transformable multidimensional function. More...
 
JTransformableMultiFunctiongetTransformableMultiFunction ()
 Get transformable multidimensional function. More...
 
void insert (const JTransformableMultiFunction< __JFunction_t, __JMaplist_t, __JDistance_t > &input)
 Insert multidimensional input. More...
 
void insert (const JTransformableMultiHistogram< JHistogram_t, __JMaplist_t, __JDistance_t > &input)
 Insert multidimensional input. More...
 
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...
 
void insert (const JMultiKey< JMapLength< JMaplist_t >::value, argument_type > &key, const JHistogram1D< __JElement_t, __JContainer_t, __JDistance_t > &input)
 Convert one-dimensional histogram to PDF and insert result at given multidimensional key. More...
 
void insert (const JMultiFunction< __JFunction_t, __JMaplist_t, __JDistance_t > &input)
 Insert multidimensional input. More...
 
void insert (const JMultiHistogram< JHistogram_t, __JMaplist_t, __JDistance_t > &input)
 Insert multidimensional input. More...
 
void add (const JMultiFunction_t &input)
 Add function. More...
 
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...
 
const JMultiFunctiongetMultiFunction () const
 Get multidimensional function. More...
 
JMultiFunctiongetMultiFunction ()
 Get multidimensional function. More...
 
void compile ()
 Compilation. More...
 
void setExceptionHandler (const typename function_type::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_typetransformer
 

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...
 
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...
 
void insert (const JMultiKey< JMapLength< JMaplist_t >::value, argument_type > &key, const JHistogram1D< __JElement_t, __JContainer_t, __JDistance_t > &input)
 Convert one-dimensional histogram to PDF and insert result at given multidimensional key. More...
 
void insert (const JMultiKey< JMapLength< JMaplist_t >::value, argument_type > &key, const JMultiHistogram< JHistogram_t, __JMaplist_t, __JDistance_t > &input)
 Convert multidimensional histogram to PDF and insert result at given multidimensional key. More...
 

Protected Attributes

JArray< NUMBER_OF_DIMENSIONS, argument_typebuffer
 

Detailed Description

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
class JTOOLS::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

◆ transformablemultifunction_type

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.

◆ function_type

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.

◆ value_type

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.

◆ argument_type

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.

◆ supervisor_type

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.

◆ abscissa_type

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.

◆ ordinate_type

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.

◆ result_type

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.

◆ const_iterator

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.

◆ const_reverse_iterator

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.

◆ iterator

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.

◆ reverse_iterator

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.

◆ super_iterator

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.

◆ super_const_iterator

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.

◆ transformer_type

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.

◆ array_type

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.

◆ multifunction_type

typedef JMultiFunction<JFunction_t, JMaplist_t, JDistance< typename JFunction_t::argument_type > > JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance< typename JFunction_t::argument_type > >::multifunction_type
inherited

Definition at line 47 of file JTransformableMultiFunction.hh.

◆ multimap_type

typedef JMultiMap<typename JFunction_t::argument_type, JFunction_t, JMaplist_t, JDistance< typename JFunction_t::argument_type > > JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance< typename JFunction_t::argument_type > >::multimap_type
inherited

Definition at line 47 of file JMultiFunction.hh.

Member Enumeration Documentation

◆ anonymous enum

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

◆ anonymous enum

anonymous enum
inherited

Definition at line 49 of file JTransformableMultiFunction.hh.

49 { NUMBER_OF_DIMENSIONS = multifunction_type::NUMBER_OF_DIMENSIONS };

◆ anonymous enum

anonymous enum
inherited

Constructor & Destructor Documentation

◆ JMultiPDF() [1/2]

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  {}

◆ JMultiPDF() [2/2]

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 insert(const JMultiHistogram< JHistogram_t, JHistogramMaplist_t, JHistogramDistance_t > &input)
Insert multi-dimensional input.
Definition: JMultiPDF.hh:97

Member Function Documentation

◆ insert() [1/15]

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  }
Multidimensional key.
Definition: JMultiKey.hh:69

◆ insert() [2/15]

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  }
JLANG::JSharedPointer< transformer_type > transformer

◆ insert() [3/15]

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  }
collection_type::const_iterator const_iterator
transformablemultifunction_type::argument_type argument_type
Definition: JMultiPDF.hh:49
data_type w[N+1][M+1]
Definition: JPolint.hh:867
int j
Definition: JPolint.hh:792

◆ insert() [4/15]

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 & div(const double factor)
Scale array.
Definition: JArray.hh:416
void insert(const JTransformableMultiFunction< __JFunction_t, __JMaplist_t, __JDistance_t > &input)
Insert multidimensional input.
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).

◆ insert() [5/15]

template<class JFunction_t , class JMaplist_t , class JDistance_t = JDistance<typename JFunction_t::argument_type>>
template<class __JFunction_t , class __JMaplist_t , class __JDistance_t >
void JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::insert ( class __JFunction_t  ,
class __JMaplist_t  ,
class __JDistance_t   
)
inline

Insert multidimensional input.

Parameters
inputmultidimensional function

Definition at line 125 of file JTransformableMultiFunction.hh.

126  {
127  this->transformer.reset(input.transformer->clone());
128 
130  }
void insert(const JMultiFunction< __JFunction_t, __JMaplist_t, __JDistance_t > &input)
Insert multidimensional input.

◆ insert() [6/15]

template<class JFunction_t , class JMaplist_t , class JDistance_t = JDistance<typename JFunction_t::argument_type>>
template<class JHistogram_t , class __JMaplist_t , class __JDistance_t >
void JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::insert ( class JHistogram_t  ,
class __JMaplist_t  ,
class __JDistance_t   
)
inline

Insert multidimensional input.

Parameters
inputmultidimensional histogram

Definition at line 139 of file JTransformableMultiFunction.hh.

140  {
141  this->transformer.reset(input.transformer->clone());
142 
144  }

◆ getTransformableMultiFunction() [1/2]

const JTransformableMultiFunction& JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance< typename JFunction_t::argument_type > >::getTransformableMultiFunction ( ) const
inlineinherited

Get transformable multidimensional function.

Returns
this transformable multidimensional function

Definition at line 102 of file JTransformableMultiFunction.hh.

103  {
104  return static_cast<const JTransformableMultiFunction&>(*this);
105  }
Transformable multidimensional function.

◆ getTransformableMultiFunction() [2/2]

JTransformableMultiFunction& JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance< typename JFunction_t::argument_type > >::getTransformableMultiFunction ( )
inlineinherited

Get transformable multidimensional function.

Returns
this transformable multidimensional function

Definition at line 113 of file JTransformableMultiFunction.hh.

114  {
115  return static_cast<JTransformableMultiFunction&>(*this);
116  }

◆ insert() [7/15]

void JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance< typename JFunction_t::argument_type > >::insert ( const JTransformableMultiFunction< __JFunction_t, __JMaplist_t, __JDistance_t > &  input)
inlineinherited

Insert multidimensional input.

Parameters
inputmultidimensional function

Definition at line 125 of file JTransformableMultiFunction.hh.

126  {
127  this->transformer.reset(input.transformer->clone());
128 
129  multifunction_type::insert(input);
130  }

◆ insert() [8/15]

void JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance< typename JFunction_t::argument_type > >::insert ( const JTransformableMultiHistogram< JHistogram_t, __JMaplist_t, __JDistance_t > &  input)
inlineinherited

Insert multidimensional input.

Parameters
inputmultidimensional histogram

Definition at line 139 of file JTransformableMultiFunction.hh.

140  {
141  this->transformer.reset(input.transformer->clone());
142 
143  multifunction_type::insert(input);
144  }

◆ insert() [9/15]

void JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance< typename JFunction_t::argument_type > >::insert ( unsigned int  N,
class __JAbscissa_t  ,
class __JContents_t  ,
template< class, class, class > class  __JMap_t,
class __JDistance_t   
)
inlineinherited

Insert multidimensional histogram at multidimensional key.

Parameters
keymultidimensional key
inputmultidimensional histogram

Definition at line 72 of file JMultiFunction.hh.

198  {
199  if (input.size() > 1) {
200 
201  for (auto j = input.begin(), i = j++; j != input.end(); ++i, ++j) {
202 
203  const argument_type x = 0.5 * (i->getX() + j->getX());
204 
205  insert(JMultiKey<N+1, argument_type>(key, x), i->getY());
206  }
207  }
208  }

◆ insert() [10/15]

void JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance< typename JFunction_t::argument_type > >::insert ( class __JElement_t  ,
template< class, class > class  __JContainer_t,
class __JDistance_t   
)
inlineinherited

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

Parameters
keymultidimensional key
inputhistogram

Definition at line 72 of file JMultiFunction.hh.

221  {
222  JFunction_t buffer;
223 
224  makePDF(input, buffer);
225 
226  multimap_type::insert(key, buffer);
227  }
void makePDF(const JMultiHistogram< JHistogram_t, JHistogramMaplist_t, JHistogramDistance_t > &input, JMultiFunction< JFunction_t, JFunctionMaplist_t, JFunctionDistance_t > &output)
Conversion of multidimensional histogram to multidimensional function.

◆ insert() [11/15]

void JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance< typename JFunction_t::argument_type > >::insert ( const JMultiFunction< __JFunction_t, __JMaplist_t, __JDistance_t > &  input)
inlineinherited

Insert multidimensional input.

Parameters
inputmultidimensional function

Definition at line 121 of file JMultiFunction.hh.

122  {
123  copy(input, *this);
124  }
void copy(const Head &from, JHead &to)
Copy header from from to to.
Definition: JHead.cc:162

◆ insert() [12/15]

void JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance< typename JFunction_t::argument_type > >::insert ( const JMultiHistogram< JHistogram_t, __JMaplist_t, __JDistance_t > &  input)
inlineinherited

Insert multidimensional input.

Parameters
inputmultidimensional histogram

Definition at line 133 of file JMultiFunction.hh.

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

◆ insert() [13/15]

void JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance< typename JFunction_t::argument_type > >::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 196 of file JMultiFunction.hh.

198  {
199  if (input.size() > 1) {
200 
201  for (auto j = input.begin(), i = j++; j != input.end(); ++i, ++j) {
202 
203  const argument_type x = 0.5 * (i->getX() + j->getX());
204 
205  insert(JMultiKey<N+1, argument_type>(key, x), i->getY());
206  }
207  }
208  }

◆ insert() [14/15]

void JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance< typename JFunction_t::argument_type > >::insert ( const JMultiKey< JMapLength< JMaplist_t >::value, argument_type > &  key,
const JHistogram1D< __JElement_t, __JContainer_t, __JDistance_t > &  input 
)
inlineprotectedinherited

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

Parameters
keymultidimensional key
inputhistogram

Definition at line 218 of file JMultiFunction.hh.

221  {
222  JFunction_t buffer;
223 
224  makePDF(input, buffer);
225 
226  multimap_type::insert(key, buffer);
227  }

◆ insert() [15/15]

void JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance< typename JFunction_t::argument_type > >::insert ( const JMultiKey< JMapLength< JMaplist_t >::value, argument_type > &  key,
const JMultiHistogram< JHistogram_t, __JMaplist_t, __JDistance_t > &  input 
)
inlineprotectedinherited

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

Parameters
keymultidimensional key
inputmultidimensional histogram

Definition at line 237 of file JMultiFunction.hh.

239  {
240  JFunction_t buffer;
241 
242  makePDF(input, buffer);
243 
244  multimap_type::insert(key, buffer);
245  }

◆ add()

void JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance< typename JFunction_t::argument_type > >::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 155 of file JTransformableMultiFunction.hh.

156  {
157  for (super_iterator i = this->super_begin(); i != this->super_end(); ++i) {
158 
159  const array_type array = (*i).getKey();
160  function_type& f1 = (*i).getValue();
161 
162  if (!f1.empty()) {
163 
164  const JMultiMapGetTransformer<NUMBER_OF_DIMENSIONS - 1, value_type> get(*(this->transformer), array);
165  const JMultiMapPutTransformer<NUMBER_OF_DIMENSIONS - 1, value_type> put(*(this->transformer), array);
166 
167  f1.transform(get);
168 
169  for (typename function_type::iterator j = f1.begin(); j != f1.end(); ++j) {
170 
172 
173  j->getY() += get_value(input.evaluate(buffer.data()));
174  }
175 
176  f1.transform(put);
177  f1.compile();
178  }
179  }
180  }
const_pointer data() const
Get pointer to data.
Definition: JArray.hh:284
Auxiliary class to convert JMultiMapTransformer to JCollectionElementTransformer.
Auxiliary class to convert JMultiMapTransformer to JCollectionElementTransformer.
const JPolynome f1(1.0, 2.0, 3.0)
Function.
JResultEvaluator< JResult_t >::result_type get_value(const JResult_t &value)
Helper method to recursively evaluate a to function value.
Definition: JResult.hh:998
double getValue(const double x) const
Function value.
Definition: JMathlib.hh:1421

◆ operator()()

result_type JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance< typename JFunction_t::argument_type > >::operator() ( const Args &...  args) const
inlineinherited

Multidimensional interpolation method call.

Parameters
argscomma seperated list of abscissa values
Returns
function value

Definition at line 190 of file JTransformableMultiFunction.hh.

191  {
192  return this->evaluate(this->buffer.set(args...).data());
193  }
JArray & set(const Args &...args)
Set array.
Definition: JArray.hh:199
virtual result_type evaluate(const argument_type *pX) const override
Recursive function value evaluation.

◆ evaluate()

virtual result_type JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance< typename JFunction_t::argument_type > >::evaluate ( const argument_type pX) const
inlineoverridevirtualinherited

Recursive function value evaluation.

Parameters
pXpointer to abscissa values
Returns
function value

Definition at line 202 of file JTransformableMultiFunction.hh.

203  {
204  for (int i = 0; i != NUMBER_OF_DIMENSIONS; ++i) {
205  this->buffer[i] = pX[i];
206  }
207 
208  this->buffer[NUMBER_OF_DIMENSIONS - 1] = transformer->putXn(this->buffer, this->buffer[NUMBER_OF_DIMENSIONS - 1]);
209 
210  const result_type y = multifunction_type::evaluate(this->buffer.data());
211  const double W = transformer->getWeight(this->buffer);
212 
214  }
Auxiliary class to handle multidimensional map transformations for given result type.

◆ transform()

virtual void JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance< typename JFunction_t::argument_type > >::transform ( const transformer_type transformer)
inlineoverridevirtualinherited

Application of weight function and coordinate transformation.

Parameters
transformerfunction transformer

Implements JTOOLS::JTransformable< JMapLength< JMaplist_t >::value, JFunction_t::argument_type >.

Definition at line 222 of file JTransformableMultiFunction.hh.

223  {
224  for (super_iterator i = this->super_begin(); i != this->super_end(); ++i) {
225 
226  const array_type array = (*i).getKey();
227  function_type& function = (*i).getValue();
228 
229  const JMultiMapGetTransformer<NUMBER_OF_DIMENSIONS - 1, value_type> get(*(this->transformer), array);
231 
232  function.transform(get);
233  function.transform(put);
234  }
235 
236  this->transformer.reset(transformer.clone());
237  this->compile();
238  }

◆ getMultiFunction() [1/2]

const JMultiFunction& JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance< typename JFunction_t::argument_type > >::getMultiFunction ( ) const
inlineinherited

Get multidimensional function.

Returns
this multidimensional function

Definition at line 98 of file JMultiFunction.hh.

99  {
100  return static_cast<const JMultiFunction&>(*this);
101  }
Multidimensional interpolation method.

◆ getMultiFunction() [2/2]

JMultiFunction& JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance< typename JFunction_t::argument_type > >::getMultiFunction ( )
inlineinherited

Get multidimensional function.

Returns
this multidimensional function

Definition at line 109 of file JMultiFunction.hh.

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

◆ compile()

void JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance< typename JFunction_t::argument_type > >::compile ( )
inlineinherited

Compilation.

Definition at line 142 of file JMultiFunction.hh.

143  {
144  this->for_each(compiler);
145 
146  for (super_iterator i = this->super_begin(); i != this->super_end(); ++i) {
147  (*i).getValue().compile();
148  }
149  }
JObject_t & for_each(JObject_t &object, JType< JTypeList< JHead_t, JTail_t > > typelist)
For each data type method.
Definition: JTypeList.hh:415
static const JCompiler compiler
Function object for functional object compilation.
Definition: JFunctional.hh:384

◆ setExceptionHandler()

void JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance< typename JFunction_t::argument_type > >::setExceptionHandler ( const typename function_type::supervisor_type &  supervisor)
inlineinherited

Set the supervisor for handling of exceptions.

Parameters
supervisorsupervisor

Definition at line 157 of file JMultiFunction.hh.

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

◆ load()

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  }

◆ store()

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

◆ transformer

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

Definition at line 271 of file JTransformableMultiFunction.hh.

◆ buffer

JArray<NUMBER_OF_DIMENSIONS, argument_type> JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance< typename JFunction_t::argument_type > >::buffer
mutableprotectedinherited

Definition at line 183 of file JMultiFunction.hh.


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