Jpp 19.3.0-rc.2
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, 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_type > transformer_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 JTransformableMultiFunction & getTransformableMultiFunction () const
 Get transformable multidimensional function.
 
JTransformableMultiFunction & getTransformableMultiFunction ()
 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 JMultiFunction & getMultiFunction () const
 Get multidimensional function.
 
JMultiFunction & getMultiFunction ()
 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

std::shared_ptr< transformer_type > transformer
 

Friends

JReader & operator>> (JReader &in, JTransformableMultiFunction &object)
 Read transformable multidimensional function.
 
JWriter & operator<< (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 40 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 48 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 52 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 54 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 55 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 56 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 58 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 59 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 60 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 62 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 63 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 64 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 65 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 67 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 68 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 70 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 71 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 79 of file JTransformableMultiFunction.hh.

79 :
81 {}
static JMultiMapTransformer * getClone()
Get clone of default transformer.
std::shared_ptr< 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 90 of file JTransformableMultiFunction.hh.

91 {
92 insert(input);
93
94 this->compile();
95 }
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 103 of file JTransformableMultiFunction.hh.

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

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

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

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

127 {
128 this->transformer.reset(input.transformer->clone());
129
131 }
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 140 of file JTransformableMultiFunction.hh.

141 {
142 this->transformer.reset(input.transformer->clone());
143
145 }

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

157 {
158 for (super_iterator i = this->super_begin(); i != this->super_end(); ++i) {
159
160 const array_type array = (*i).getKey();
161 function_type& f1 = (*i).getValue();
162
163 if (!f1.empty()) {
164
165 const JMultiMapGetTransformer<NUMBER_OF_DIMENSIONS - 1, value_type> get(*(this->transformer), array);
166 const JMultiMapPutTransformer<NUMBER_OF_DIMENSIONS - 1, value_type> put(*(this->transformer), array);
167
168 f1.transform(get);
169
170 for (typename function_type::iterator j = f1.begin(); j != f1.end(); ++j) {
171
172 const JArray<NUMBER_OF_DIMENSIONS, argument_type> buffer(array, j->getX());
173
174 j->getY() += get_value(input.evaluate(buffer.data()));
175 }
176
177 f1.transform(put);
178 f1.compile();
179 }
180 }
181 }
multifunction_type::super_iterator super_iterator
const JPolynome f1(1.0, 2.0, 3.0)
Function.
int j
Definition JPolint.hh:801
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 191 of file JTransformableMultiFunction.hh.

192 {
193 const JArray<NUMBER_OF_DIMENSIONS, argument_type> buffer(args...);
194
195 return this->evaluate(buffer.data());
196 }
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 205 of file JTransformableMultiFunction.hh.

206 {
207 JArray<NUMBER_OF_DIMENSIONS, argument_type> buffer;
208
209 for (int i = 0; i != NUMBER_OF_DIMENSIONS; ++i) {
210 buffer[i] = pX[i];
211 }
212
213 buffer[NUMBER_OF_DIMENSIONS - 1] = transformer->putXn(buffer, buffer[NUMBER_OF_DIMENSIONS - 1]);
214
215 const result_type y = multifunction_type::evaluate(buffer.data());
216 const double W = transformer->getWeight(buffer);
217
219 }
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 227 of file JTransformableMultiFunction.hh.

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

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

196 {
197 if (input.size() > 1) {
198
199 for (auto j = input.begin(), i = j++; j != input.end(); ++i, ++j) {
200
201 const argument_type x = 0.5 * (i->getX() + j->getX());
202
203 insert(JMultiKey<N+1, argument_type>(key, x), i->getY());
204 }
205 }
206 }
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 216 of file JMultiFunction.hh.

219 {
220 JFunction_t buffer;
221
222 makePDF(input, buffer);
223
224 multimap_type::insert(key, buffer);
225 }
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 235 of file JMultiFunction.hh.

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

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

254 {
255 in >> static_cast<multifunction_type&>(object);
256
257 return object.transformer->read(in);
258 }
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 268 of file JTransformableMultiFunction.hh.

269 {
270 out << static_cast<const multifunction_type&>(object);
271
272 return object.transformer->write(out);
273 }

Member Data Documentation

◆ transformer

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

Definition at line 276 of file JTransformableMultiFunction.hh.


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