Jpp master_rocky-44-g75b7c4f75
the software that should make you happy
Loading...
Searching...
No Matches
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< JAbscissa_t, JOrdinate_t, JMaplist_t, JDistance_t > JPHYSICS::JPDFTable< JFunction1D_t, JPDFMapList_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.
 
template<class T >
 JTransformableMultiFunction (const T &input)
 Constructor.
 
const JTransformableMultiFunctiongetTransformableMultiFunction () const
 Get transformable multidimensional function.
 
JTransformableMultiFunctiongetTransformableMultiFunction ()
 Get transformable multidimensional function.
 
template<class __JFunction_t , class __JMaplist_t , class __JDistance_t >
void insert (const JTransformableMultiFunction< __JFunction_t, __JMaplist_t, __JDistance_t > &input)
 Insert multidimensional input.
 
template<class JHistogram_t , class __JMaplist_t , class __JDistance_t >
void insert (const JTransformableMultiHistogram< JHistogram_t, __JMaplist_t, __JDistance_t > &input)
 Insert multidimensional input.
 
template<class JMultiFunction_t >
void add (const JMultiFunction_t &input)
 Add function.
 
template<class ... Args>
result_type operator() (const Args &...args) const
 Multidimensional interpolation method call.
 
virtual result_type evaluate (const argument_type *pX) const override
 Recursive function value evaluation.
 
virtual void transform (const transformer_type &transformer) override
 Application of weight function and coordinate transformation.
 
template<class __JFunction_t , class __JMaplist_t , class __JDistance_t >
void insert (const JMultiFunction< __JFunction_t, __JMaplist_t, __JDistance_t > &input)
 Insert multidimensional input.
 
template<class JHistogram_t , class __JMaplist_t , class __JDistance_t >
void insert (const JMultiHistogram< JHistogram_t, __JMaplist_t, __JDistance_t > &input)
 Insert multidimensional input.
 
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.
 
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)
 Convert one-dimensional histogram to PDF and insert result at given multidimensional key.
 
template<class JHistogram_t , class __JMaplist_t , class __JDistance_t >
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.
 
const JMultiFunctiongetMultiFunction () const
 Get multidimensional function.
 
JMultiFunctiongetMultiFunction ()
 Get multidimensional function.
 
void compile ()
 Compilation.
 
void setExceptionHandler (const typename function_type::supervisor_type &supervisor)
 Set the supervisor for handling of exceptions.
 
virtual void transform (const transformer_type &transformer)=0
 Application of transformation.
 

Public Attributes

JLANG::JSharedPointer< transformer_typetransformer
 

Protected Attributes

JArray< NUMBER_OF_DIMENSIONS, argument_typebuffer
 

Friends

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

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 39 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>>
JMultiFunction<JFunction_t, JMaplist_t, JDistance_t> JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::multifunction_type

Definition at line 47 of file JTransformableMultiFunction.hh.

◆ function_type

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

Definition at line 51 of file JTransformableMultiFunction.hh.

◆ value_type

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

Definition at line 53 of file JTransformableMultiFunction.hh.

◆ argument_type

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

Definition at line 54 of file JTransformableMultiFunction.hh.

◆ supervisor_type

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

Definition at line 55 of file JTransformableMultiFunction.hh.

◆ abscissa_type

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

Definition at line 57 of file JTransformableMultiFunction.hh.

◆ ordinate_type

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

Definition at line 58 of file JTransformableMultiFunction.hh.

◆ result_type

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

Definition at line 59 of file JTransformableMultiFunction.hh.

◆ const_iterator

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

Definition at line 61 of file JTransformableMultiFunction.hh.

◆ const_reverse_iterator

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

Definition at line 62 of file JTransformableMultiFunction.hh.

◆ iterator

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

Definition at line 63 of file JTransformableMultiFunction.hh.

◆ reverse_iterator

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

Definition at line 64 of file JTransformableMultiFunction.hh.

◆ super_iterator

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

Definition at line 66 of file JTransformableMultiFunction.hh.

◆ super_const_iterator

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

Definition at line 67 of file JTransformableMultiFunction.hh.

◆ transformer_type

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

Definition at line 69 of file JTransformableMultiFunction.hh.

◆ array_type

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

Definition at line 70 of file JTransformableMultiFunction.hh.

◆ multimap_type

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

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

49{ 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 78 of file JTransformableMultiFunction.hh.

78 :
80 {}
static JMultiMapTransformer * getClone()
Get clone of default transformer.
JLANG::JSharedPointer< transformer_type > transformer

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

90 {
91 insert(input);
92
93 this->compile();
94 }
void compile()
Compilation.
void insert(const JTransformableMultiFunction< __JFunction_t, __JMaplist_t, __JDistance_t > &input)
Insert multidimensional input.

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

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

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

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

◆ insert() [1/7]

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 ( const JTransformableMultiFunction< __JFunction_t, __JMaplist_t, __JDistance_t > & input)
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() [2/7]

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 ( const JTransformableMultiHistogram< JHistogram_t, __JMaplist_t, __JDistance_t > & input)
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 }

◆ 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 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
171 const JArray<NUMBER_OF_DIMENSIONS, argument_type> buffer(array, j->getX());
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
JArray< NUMBER_OF_DIMENSIONS, argument_type > buffer
multifunction_type::super_iterator super_iterator
const JPolynome f1(1.0, 2.0, 3.0)
Function.
int j
Definition JPolint.hh:792
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()()

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
inline

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

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
inlineoverridevirtual

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

◆ 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)
inlineoverridevirtual

Application of weight function and coordinate transformation.

Parameters
transformerfunction transformer

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);
230 const JMultiMapPutTransformer<NUMBER_OF_DIMENSIONS - 1, value_type> put( transformer, array);
231
232 function.transform(get);
233 function.transform(put);
234 }
235
236 this->transformer.reset(transformer.clone());
237 this->compile();
238 }

◆ insert() [3/7]

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::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::insert ( const JMultiFunction< __JFunction_t, __JMaplist_t, __JDistance_t > & input)
inline

Insert multidimensional input.

Parameters
inputmultidimensional function

Definition at line 121 of file JMultiFunction.hh.

122 {
123 copy(input, *this);
124 }
void copy(const T &input, T &output)
Copy of input to output.

◆ insert() [4/7]

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::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::insert ( const JMultiHistogram< JHistogram_t, __JMaplist_t, __JDistance_t > & input)
inline

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() [5/7]

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

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 }
multifunction_type::argument_type argument_type

◆ insert() [6/7]

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

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 }
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() [7/7]

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::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::insert ( const JMultiKey< JMapLength< JMaplist_t >::value, argument_type > & key,
const JMultiHistogram< JHistogram_t, __JMaplist_t, __JDistance_t > & input )
inline

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 }

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

99 {
100 return static_cast<const JMultiFunction&>(*this);
101 }
JMultiFunction()
Default constructor.

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

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

◆ 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 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 }
multimap_type::super_iterator super_iterator
static const JCompiler compiler
Function object for functional object compilation.
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

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

◆ 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 Symbol 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 248 of file JTransformableMultiFunction.hh.

249 {
250 in >> static_cast<multifunction_type&>(object);
251
252 return object.transformer->read(in);
253 }
JMultiFunction< JFunction_t, JMaplist_t, JDistance_t > multifunction_type

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

264 {
265 out << static_cast<const multifunction_type&>(object);
266
267 return object.transformer->write(out);
268 }

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 271 of file JTransformableMultiFunction.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 183 of file JMultiFunction.hh.


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