Jpp
Public Types | Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Friends | List of all members
JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t > Class Template Referenceabstract

Transformable multidimensional function. More...

#include <JTransformableMultiFunction.hh>

Inheritance diagram for JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_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 > JPHYSICS::JPDFTable< JFunction1D_t, JPDFMaplist_t > JPHYSICS::JPDFTable< JFunction1D_t, JMaplist_t, JDistance_t > JTOOLS::JMultiPDF< JFunction_t, JMaplist_t, JDistance_t >

Public Types

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

 JTransformableMultiFunction ()
 Default constructor. More...
 
template<class T >
 JTransformableMultiFunction (const T &input)
 Constructor. 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 JHistogram_t , class JHistogramMaplist_t , class JHistogramDistance_t >
void insert (const JTransformableMultiHistogram< JHistogram_t, JHistogramMaplist_t, JHistogramDistance_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...
 
template<class JPDF_t , class JPDFMaplist_t , class JPDFDistance_t >
void insert (const JMultiFunction< JPDF_t, JPDFMaplist_t, JPDFDistance_t > &input)
 Insert multidimensional input. More...
 
template<class JHistogram_t , class JHistogramMaplist_t , class JHistogramDistance_t >
void insert (const JMultiHistogram< JHistogram_t, JHistogramMaplist_t, JHistogramDistance_t > &input)
 Insert multidimensional input. More...
 
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...
 
const JMultiFunctiongetMultiFunction () const
 Get multidimensional function. More...
 
JMultiFunctiongetMultiFunction ()
 Get multidimensional function. More...
 
template<class JPDF_t , class JPDFMaplist_t , class JPDFDistance_t >
void insert (const JMultiFunction< JPDF_t, JPDFMaplist_t, JPDFDistance_t > &input)
 Insert multidimensional input. More...
 
template<class JHistogram_t , class JHistogramMaplist_t , class JHistogramDistance_t >
void insert (const JMultiHistogram< JHistogram_t, JHistogramMaplist_t, JHistogramDistance_t > &input)
 Insert multidimensional input. More...
 
void compile ()
 Compilation. More...
 
void setExceptionHandler (const supervisor_type &supervisor)
 Set the supervisor for handling of exceptions. More...
 
virtual void transform (const transformer_type &transformer)=0
 Application of transformation. 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)
 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_typebuffer
 

Friends

JReaderoperator>> (JReader &in, JTransformableMultiFunction &object)
 Read transformable multidimensional function. More...
 
JWriteroperator<< (JWriter &out, const JTransformableMultiFunction &object)
 Write transformable multidimensional function. More...
 

Detailed Description

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

Transformable multidimensional function.

This class implements the JTransformable interface.

Definition at line 38 of file JTransformableMultiFunction.hh.

Member Typedef Documentation

◆ multifunction_type

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

Definition at line 46 of file JTransformableMultiFunction.hh.

◆ function_type

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

Definition at line 50 of file JTransformableMultiFunction.hh.

◆ value_type

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

Definition at line 52 of file JTransformableMultiFunction.hh.

◆ argument_type

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

Definition at line 53 of file JTransformableMultiFunction.hh.

◆ supervisor_type

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

Definition at line 54 of file JTransformableMultiFunction.hh.

◆ abscissa_type

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

Definition at line 56 of file JTransformableMultiFunction.hh.

◆ ordinate_type

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

Definition at line 57 of file JTransformableMultiFunction.hh.

◆ result_type

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

Definition at line 58 of file JTransformableMultiFunction.hh.

◆ const_iterator

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

Definition at line 60 of file JTransformableMultiFunction.hh.

◆ const_reverse_iterator

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

Definition at line 61 of file JTransformableMultiFunction.hh.

◆ iterator

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

Definition at line 62 of file JTransformableMultiFunction.hh.

◆ reverse_iterator

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

Definition at line 63 of file JTransformableMultiFunction.hh.

◆ super_iterator

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

Definition at line 65 of file JTransformableMultiFunction.hh.

◆ super_const_iterator

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

Definition at line 66 of file JTransformableMultiFunction.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::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::transformer_type

Definition at line 68 of file JTransformableMultiFunction.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::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::array_type

Definition at line 69 of file JTransformableMultiFunction.hh.

◆ multimap_type

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

◆ anonymous enum

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

Definition at line 48 of file JTransformableMultiFunction.hh.

◆ anonymous enum

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.

50 { NUMBER_OF_DIMENSIONS = JMapLength<JMaplist_t>::value + JFunction_t::NUMBER_OF_DIMENSIONS };

Constructor & Destructor Documentation

◆ JTransformableMultiFunction() [1/2]

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::JTransformableMultiFunction ( )
inline

Default constructor.

Definition at line 77 of file JTransformableMultiFunction.hh.

77  :
79  {}

◆ JTransformableMultiFunction() [2/2]

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

Constructor.

Parameters
inputmultidimensional input

Definition at line 88 of file JTransformableMultiFunction.hh.

89  {
90  insert(input);
91 
92  this->compile();
93  }

Member Function Documentation

◆ getTransformableMultiFunction() [1/2]

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
inline

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  }

◆ getTransformableMultiFunction() [2/2]

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

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  }

◆ insert() [1/10]

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

Insert multidimensional input.

Parameters
inputmultidimensional function

Definition at line 124 of file JTransformableMultiFunction.hh.

125  {
126  this->transformer.reset(input.transformer->clone());
127 
129  }

◆ insert() [2/10]

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

139  {
140  this->transformer.reset(input.transformer->clone());
141 
143  }

◆ add()

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

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 
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 
171 
172  j->getY() += get_value(input.evaluate(buffer.data()));
173  }
174 
175  f1.transform(put);
176  f1.compile();
177  }
178  }
179  }

◆ operator()()

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
inline

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  }

◆ evaluate()

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
inlinevirtual

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  }

◆ transform() [1/2]

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

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 
239 
240  function.transform(get);
241  function.transform(put);
242  }
243 
244  this->transformer.reset(transformer.clone());
245  this->compile();
246  }

◆ insert() [3/10]

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 ( class JPDF_t  ,
class JPDFMaplist_t  ,
class JPDFDistance_t   
)
inline

Insert multidimensional input.

Parameters
inputmultidimensional function

Definition at line 122 of file JMultiFunction.hh.

123  {
124  copy(input, *this);
125  }

◆ insert() [4/10]

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
template<class JHistogram_t , class JHistogramMaplist_t , class JHistogramDistance_t >
void JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::insert ( class JHistogram_t  ,
class JHistogramMaplist_t  ,
class JHistogramDistance_t   
)
inline

Insert multidimensional input.

Parameters
inputmultidimensional histogram

Definition at line 134 of file JMultiFunction.hh.

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

◆ insert() [5/10]

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 ( unsigned int  N,
class __JAbscissa_t  ,
class __JContents_t  ,
template< class, class, class > class  __JMap_t,
class __JDistance_t   
)
inline

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  }

◆ insert() [6/10]

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 ( class __JValue_t  )
inline

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  }

◆ getMultiFunction() [1/2]

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  }

◆ getMultiFunction() [2/2]

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  }

◆ insert() [7/10]

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  }

◆ insert() [8/10]

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
template<class JHistogram_t , class JHistogramMaplist_t , class JHistogramDistance_t >
void JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::insert ( const JMultiHistogram< JHistogram_t, JHistogramMaplist_t, JHistogramDistance_t > &  input)
inlineinherited

Insert multidimensional input.

Parameters
inputmultidimensional histogram

Definition at line 134 of file JMultiFunction.hh.

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

◆ insert() [9/10]

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  }

◆ insert() [10/10]

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  }

◆ compile()

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  }

◆ setExceptionHandler()

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  }

◆ transform() [2/2]

virtual void JTOOLS::JTransformable< N, JFunction_t::argument_type >::transform ( const transformer_type transformer)
pure virtualinherited

Application of transformation.

Parameters
transformerfunction transformer

Friends And Related Function Documentation

◆ operator>>

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
JReader& operator>> ( JReader in,
JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t > &  object 
)
friend

Read transformable multidimensional function.

Parameters
inreader
objecttransformable multidimensional function.
Returns
reader

Definition at line 256 of file JTransformableMultiFunction.hh.

257  {
258  in >> static_cast<multifunction_type&>(object);
259 
260  return object.transformer->read(in);
261  }

◆ operator<<

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
JWriter& operator<< ( JWriter out,
const JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t > &  object 
)
friend

Write transformable multidimensional function.

Parameters
outwriter
objecttransformable multidimensional function
Returns
writer

Definition at line 271 of file JTransformableMultiFunction.hh.

272  {
273  out << static_cast<const multifunction_type&>(object);
274 
275  return object.transformer->write(out);
276  }

Member Data Documentation

◆ transformer

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

Definition at line 279 of file JTransformableMultiFunction.hh.

◆ ap

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.

◆ buffer

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:
JTOOLS::JMultiMapGetTransformer
Auxiliary class to convert JMultiMapTransformer to JCollectionElementTransformer.
Definition: JMultiMapTransformer.hh:291
JTOOLS::compiler
static const JCompiler compiler
Function object for functional object compilation.
Definition: JFunctional.hh:369
JTOOLS::pX
pX
Definition: JPolint.hh:625
JTOOLS::JTransformableMultiFunction::NUMBER_OF_DIMENSIONS
Definition: JTransformableMultiFunction.hh:48
JTOOLS::JMultiFunction::ap
va_list ap
Definition: JMultiFunction.hh:235
JTOOLS::JArray< NUMBER_OF_DIMENSIONS, argument_type >
JTOOLS::JHistogramMap::const_iterator
collection_type::const_iterator const_iterator
Definition: JHistogramMap.hh:41
JTOOLS::j
int j
Definition: JPolint.hh:634
JTOOLS::JMapLength
Length of map list.
Definition: JMapList.hh:45
JTOOLS::JArray::data
const_pointer data() const
Get pointer to data.
Definition: JArray.hh:263
JTOOLS::JMultiMapTransformer::getClone
static JMultiMapTransformer * getClone()
Get clone of default transformer.
Definition: JMultiMapTransformer.hh:124
JTOOLS::get_value
JResultEvaluator< JResult_t >::result_type get_value(const JResult_t &value)
Helper method to recursively evaluate a to function value.
Definition: JResult.hh:936
JTOOLS::JTransformableMultiFunction::array_type
transformer_type::array_type array_type
Definition: JTransformableMultiFunction.hh:69
JTOOLS::JMultiFunction::super_iterator
multimap_type::super_iterator super_iterator
Definition: JMultiFunction.hh:67
JTOOLS::for_each
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
JTOOLS::JTransformableMultiFunction::super_iterator
multifunction_type::super_iterator super_iterator
Definition: JTransformableMultiFunction.hh:65
JTOOLS::JMultiFunction::buffer
JArray< NUMBER_OF_DIMENSIONS, argument_type > buffer
Definition: JMultiFunction.hh:236
JTOOLS::JTransformableMultiFunction::value_type
multifunction_type::value_type value_type
Definition: JTransformableMultiFunction.hh:52
JTOOLS::makePDF
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).
Definition: JHistogram1D.hh:545
JTOOLS::JMultiMapPutTransformer
Auxiliary class to convert JMultiMapTransformer to JCollectionElementTransformer.
Definition: JMultiMapTransformer.hh:240
JTOOLS::JMultiFunction::argument_type
JFunction_t::argument_type argument_type
Definition: JMultiFunction.hh:55
JTOOLS::JResultTransformer::transform
static result_type transform(const JMultiMapTransformer< N, JArgument_t > &transformer, typename JMultiMapTransformer< N, JArgument_t >::const_array_type array, const result_type &result)
Definition: JResultTransformer.hh:26
JTOOLS::JMultiFunction::NUMBER_OF_DIMENSIONS
Definition: JMultiFunction.hh:50
JTOOLS::JTransformableMultiFunction::transformer
JLANG::JSharedPointer< transformer_type > transformer
Definition: JTransformableMultiFunction.hh:279
JTOOLS::JMultiFunction::compile
void compile()
Compilation.
Definition: JMultiFunction.hh:143
JTOOLS::JMultiKey
Forward declaration of template JMultiKey class.
Definition: JMultiKey.hh:29
JTOOLS::copy
void copy(const T &input, T &output)
Copy of input to output.
Definition: JToolsToolkit.hh:250
JTOOLS::JTransformableMultiFunction::evaluate
virtual result_type evaluate(const argument_type *pX) const
Recursive function value evaluation.
Definition: JTransformableMultiFunction.hh:210
JTOOLS::JMultiFunction::insert
void insert(const JMultiFunction< JPDF_t, JPDFMaplist_t, JPDFDistance_t > &input)
Insert multidimensional input.
Definition: JMultiFunction.hh:122
JTOOLS::JTransformableMultiHistogram::transformer
JLANG::JSharedPointer< transformer_type > transformer
Definition: JTransformableMultiHistogram.hh:183
JTOOLS::JTransformableMultiFunction::result_type
multifunction_type::result_type result_type
Definition: JTransformableMultiFunction.hh:58
JAANET::get
T get(const JHead &header)
Get object from header.
Definition: JHeadToolkit.hh:295
JTOOLS::JTransformableMultiFunction::insert
void insert(const JTransformableMultiFunction< JPDF_t, JPDFMaplist_t, JPDFDistance_t > &input)
Insert multidimensional input.
Definition: JTransformableMultiFunction.hh:124
JTOOLS::JTransformableMultiFunction::function_type
JFunction_t function_type
Definition: JTransformableMultiFunction.hh:50
JTOOLS::JTransformableMultiFunction::argument_type
multifunction_type::argument_type argument_type
Definition: JTransformableMultiFunction.hh:53