Jpp test-rotations-old
the software that should make you happy
Loading...
Searching...
No Matches
JTOOLS::JTransformableMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t > Class Template Referenceabstract

Transformable multidimensional histogram. More...

#include <JTransformableMultiHistogram.hh>

Inheritance diagram for JTOOLS::JTransformableMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t >:
JTOOLS::JMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t > JTOOLS::JTransformable< JMapLength< JMaplist_t >::value, JHistogram_t::abscissa_type > JTOOLS::JMultiMap< JAbscissa_t, JOrdinate_t, JMaplist_t, JDistance_t >

Public Types

enum  { NUMBER_OF_DIMENSIONS = JMultiHistogram_t::NUMBER_OF_DIMENSIONS }
 
typedef JMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t > JMultiHistogram_t
 
typedef JHistogram_t histogram_type
 
typedef histogram_type::contents_type contents_type
 
typedef histogram_type::value_type value_type
 
typedef JMultiHistogram_t::abscissa_type abscissa_type
 
typedef JMultiHistogram_t::ordinate_type ordinate_type
 
typedef JMultiHistogram_t::const_iterator const_iterator
 
typedef JMultiHistogram_t::const_reverse_iterator const_reverse_iterator
 
typedef JMultiHistogram_t::iterator iterator
 
typedef JMultiHistogram_t::reverse_iterator reverse_iterator
 
typedef JMultiHistogram_t::super_iterator super_iterator
 
typedef JMultiHistogram_t::super_const_iterator super_const_iterator
 
typedef JMultiMapTransformer< JMapLength< JMaplist_t >::value, abscissa_typetransformer_type
 
typedef transformer_type::array_type array_type
 
enum  { NUMBER_OF_DIMENSIONS = JMapLength<JMaplist_t>::value + JHistogram_t::NUMBER_OF_DIMENSIONS }
 
typedef JMultiMap< typename JHistogram_t::abscissa_type, JHistogram_t, JMaplist_t, JDistance_t > multimap_type
 
typedef JHistogram_t::abscissa_type argument_type
 

Public Member Functions

 JTransformableMultiHistogram ()
 Default constructor.
 
const JTransformableMultiHistogramgetTransformableMultiHistogram () const
 Get transformable multidimensional histogram.
 
JTransformableMultiHistogramgetTransformableMultiHistogram ()
 Get transformable multidimensional histogram.
 
virtual void transform (const transformer_type &transformer) override
 Application of weight function and coordinate transformation.
 
const JMultiHistogramgetMultiHistogram () const
 Get multidimensional histogram.
 
JMultiHistogramgetMultiHistogram ()
 Get multidimensional histogram.
 
template<class ... Args>
void fill (const Args &...args)
 Multi-dimensional fill method call.
 
virtual void transform (const transformer_type &transformer)=0
 Application of transformation.
 

Public Attributes

std::shared_ptr< transformer_typetransformer
 

Protected Member Functions

virtual void __fill__ (const int i, const abscissa_type x, const contents_type w) override
 Termination method for filling histogram.
 
template<class ... Args>
void __fill__ (const int i, const abscissa_type x0, const abscissa_type x1, const Args &...args)
 Recursive method for filling histogram.
 
virtual void __fill__ (const int i, const abscissa_type x, const contents_type w)
 Termination method for filling histogram.
 

Protected Attributes

JArray< NUMBER_OF_DIMENSIONS, abscissa_typebuffer
 

Friends

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

Detailed Description

template<class JHistogram_t, class JMaplist_t, class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
class JTOOLS::JTransformableMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t >

Transformable multidimensional histogram.

This class implements the JTransformable interface.

Definition at line 36 of file JTransformableMultiHistogram.hh.

Member Typedef Documentation

◆ JMultiHistogram_t

template<class JHistogram_t , class JMaplist_t , class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
JMultiHistogram<JHistogram_t, JMaplist_t, JDistance_t> JTOOLS::JTransformableMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t >::JMultiHistogram_t

Definition at line 44 of file JTransformableMultiHistogram.hh.

◆ histogram_type

template<class JHistogram_t , class JMaplist_t , class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
JHistogram_t JTOOLS::JTransformableMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t >::histogram_type

Definition at line 48 of file JTransformableMultiHistogram.hh.

◆ contents_type

template<class JHistogram_t , class JMaplist_t , class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
histogram_type::contents_type JTOOLS::JTransformableMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t >::contents_type

Definition at line 50 of file JTransformableMultiHistogram.hh.

◆ value_type

template<class JHistogram_t , class JMaplist_t , class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
histogram_type::value_type JTOOLS::JTransformableMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t >::value_type

Definition at line 51 of file JTransformableMultiHistogram.hh.

◆ abscissa_type

template<class JHistogram_t , class JMaplist_t , class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
JMultiHistogram_t::abscissa_type JTOOLS::JTransformableMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t >::abscissa_type

Definition at line 53 of file JTransformableMultiHistogram.hh.

◆ ordinate_type

template<class JHistogram_t , class JMaplist_t , class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
JMultiHistogram_t::ordinate_type JTOOLS::JTransformableMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t >::ordinate_type

Definition at line 54 of file JTransformableMultiHistogram.hh.

◆ const_iterator

template<class JHistogram_t , class JMaplist_t , class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
JMultiHistogram_t::const_iterator JTOOLS::JTransformableMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t >::const_iterator

Definition at line 56 of file JTransformableMultiHistogram.hh.

◆ const_reverse_iterator

template<class JHistogram_t , class JMaplist_t , class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
JMultiHistogram_t::const_reverse_iterator JTOOLS::JTransformableMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t >::const_reverse_iterator

Definition at line 57 of file JTransformableMultiHistogram.hh.

◆ iterator

template<class JHistogram_t , class JMaplist_t , class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
JMultiHistogram_t::iterator JTOOLS::JTransformableMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t >::iterator

Definition at line 58 of file JTransformableMultiHistogram.hh.

◆ reverse_iterator

template<class JHistogram_t , class JMaplist_t , class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
JMultiHistogram_t::reverse_iterator JTOOLS::JTransformableMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t >::reverse_iterator

Definition at line 59 of file JTransformableMultiHistogram.hh.

◆ super_iterator

template<class JHistogram_t , class JMaplist_t , class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
JMultiHistogram_t::super_iterator JTOOLS::JTransformableMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t >::super_iterator

Definition at line 61 of file JTransformableMultiHistogram.hh.

◆ super_const_iterator

template<class JHistogram_t , class JMaplist_t , class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
JMultiHistogram_t::super_const_iterator JTOOLS::JTransformableMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t >::super_const_iterator

Definition at line 62 of file JTransformableMultiHistogram.hh.

◆ transformer_type

template<class JHistogram_t , class JMaplist_t , class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
JMultiMapTransformer<JMapLength<JMaplist_t>::value, abscissa_type> JTOOLS::JTransformableMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t >::transformer_type

Definition at line 64 of file JTransformableMultiHistogram.hh.

◆ array_type

template<class JHistogram_t , class JMaplist_t , class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
transformer_type::array_type JTOOLS::JTransformableMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t >::array_type

Definition at line 65 of file JTransformableMultiHistogram.hh.

◆ multimap_type

template<class JHistogram_t , class JMaplist_t , class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
JMultiMap<typename JHistogram_t::abscissa_type, JHistogram_t, JMaplist_t, JDistance_t> JTOOLS::JMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t >::multimap_type
inherited

Definition at line 41 of file JMultiHistogram.hh.

◆ argument_type

JHistogram_t::abscissa_type JTOOLS::JTransformable< N, JHistogram_t::abscissa_type >::argument_type
inherited

Definition at line 329 of file JMultiMapTransformer.hh.

Member Enumeration Documentation

◆ anonymous enum

template<class JHistogram_t , class JMaplist_t , class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
anonymous enum

◆ anonymous enum

template<class JHistogram_t , class JMaplist_t , class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
anonymous enum
inherited
Enumerator
NUMBER_OF_DIMENSIONS 

Definition at line 43 of file JMultiHistogram.hh.

43{ NUMBER_OF_DIMENSIONS = JMapLength<JMaplist_t>::value + JHistogram_t::NUMBER_OF_DIMENSIONS };

Constructor & Destructor Documentation

◆ JTransformableMultiHistogram()

template<class JHistogram_t , class JMaplist_t , class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
JTOOLS::JTransformableMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t >::JTransformableMultiHistogram ( )
inline

Default constructor.

Definition at line 71 of file JTransformableMultiHistogram.hh.

71 :
73 {}
static JMultiMapTransformer * getClone()
Get clone of default transformer.
std::shared_ptr< transformer_type > transformer

Member Function Documentation

◆ getTransformableMultiHistogram() [1/2]

template<class JHistogram_t , class JMaplist_t , class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
const JTransformableMultiHistogram & JTOOLS::JTransformableMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t >::getTransformableMultiHistogram ( ) const
inline

Get transformable multidimensional histogram.

Returns
this transformable multidimensional histogram

Definition at line 81 of file JTransformableMultiHistogram.hh.

82 {
83 return static_cast<const JTransformableMultiHistogram&>(*this);
84 }

◆ getTransformableMultiHistogram() [2/2]

template<class JHistogram_t , class JMaplist_t , class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
JTransformableMultiHistogram & JTOOLS::JTransformableMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t >::getTransformableMultiHistogram ( )
inline

Get transformable multidimensional histogram.

Returns
this transformable multidimensional histogram

Definition at line 92 of file JTransformableMultiHistogram.hh.

93 {
94 return static_cast<JTransformableMultiHistogram&>(*this);
95 }

◆ transform() [1/2]

template<class JHistogram_t , class JMaplist_t , class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
virtual void JTOOLS::JTransformableMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t >::transform ( const transformer_type & transformer)
inlineoverridevirtual

Application of weight function and coordinate transformation.

Parameters
transformerfunction transformer

Definition at line 103 of file JTransformableMultiHistogram.hh.

104 {
106
107 for (super_iterator i = this->super_begin(); i != this->super_end(); ++i) {
108
109 const array_type array = (*i).getKey();
110 histogram_type& histogram = (*i).getValue();
111
112 const JMultiMapGetTransformer<NUMBER_OF_DIMENSIONS - 1, value_type> get(*(this->transformer), array);
113 const JMultiMapPutTransformer<NUMBER_OF_DIMENSIONS - 1, value_type> put( transformer, array);
114
115 histogram.transform(get);
116 histogram.transform(put);
117 }
118
119 this->transformer.reset(transformer.clone());
120 }
JArray< N, argument_type > array_type
JMultiHistogram_t::super_iterator super_iterator

◆ __fill__() [1/3]

template<class JHistogram_t , class JMaplist_t , class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
virtual void JTOOLS::JTransformableMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t >::__fill__ ( const int i,
const abscissa_type x,
const contents_type w )
inlineoverrideprotectedvirtual

Termination method for filling histogram.

Parameters
iindex
xabscissa value
wweight

Definition at line 163 of file JTransformableMultiHistogram.hh.

164 {
165 this->buffer[NUMBER_OF_DIMENSIONS - 1] = transformer->putXn(this->buffer, this->buffer[NUMBER_OF_DIMENSIONS - 1]);
166
167 const double z = transformer->putXn(this->buffer, 1.0) - transformer->putXn(this->buffer, 0.0);
168 const double W = transformer->getWeight(this->buffer);
169
170 this->evaluate(this->buffer.begin(), w * z / W);
171
172 this->evaluate(this->buffer.begin(), w);
173 }
const_iterator begin() const
get iterator to begin of data
Definition JArray.hh:220
JArray< NUMBER_OF_DIMENSIONS, abscissa_type > buffer

◆ getMultiHistogram() [1/2]

template<class JHistogram_t , class JMaplist_t , class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
const JMultiHistogram & JTOOLS::JMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t >::getMultiHistogram ( ) const
inlineinherited

Get multidimensional histogram.

Returns
this multidimensional histogram

Definition at line 71 of file JMultiHistogram.hh.

72 {
73 return static_cast<const JMultiHistogram&>(*this);
74 }
JMultiHistogram()
Default constructor.

◆ getMultiHistogram() [2/2]

template<class JHistogram_t , class JMaplist_t , class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
JMultiHistogram & JTOOLS::JMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t >::getMultiHistogram ( )
inlineinherited

Get multidimensional histogram.

Returns
this multidimensional histogram

Definition at line 82 of file JMultiHistogram.hh.

83 {
84 return static_cast<JMultiHistogram&>(*this);
85 }

◆ fill()

template<class JHistogram_t , class JMaplist_t , class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
template<class ... Args>
void JTOOLS::JMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t >::fill ( const Args &... args)
inlineinherited

Multi-dimensional fill method call.

Parameters
argscomma seperated list of abscissa values and weight

Definition at line 94 of file JMultiHistogram.hh.

95 {
96 __fill__(0, args...);
97 }
void __fill__(const int i, const abscissa_type x0, const abscissa_type x1, const Args &...args)
Recursive method for filling histogram.

◆ __fill__() [2/3]

template<class JHistogram_t , class JMaplist_t , class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
template<class ... Args>
void JTOOLS::JMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t >::__fill__ ( const int i,
const abscissa_type x0,
const abscissa_type x1,
const Args &... args )
inlineprotectedinherited

Recursive method for filling histogram.

Parameters
iindex
x0value at given index
x1value at following index
argsremaining values and weight

Definition at line 110 of file JMultiHistogram.hh.

111 {
112 this->buffer[i] = x0;
113
114 __fill__(i + 1, x1, args...);
115 }

◆ __fill__() [3/3]

template<class JHistogram_t , class JMaplist_t , class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
virtual void JTOOLS::JMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t >::__fill__ ( const int i,
const abscissa_type x,
const contents_type w )
inlineprotectedvirtualinherited

Termination method for filling histogram.

Parameters
iindex
xvalue at given index
wweight

Definition at line 124 of file JMultiHistogram.hh.

125 {
126 this->buffer[i] = x;
127
128 this->evaluate(this->buffer.data(), w);
129 }
const_pointer data() const
Get pointer to data.
Definition JArray.hh:295

◆ transform() [2/2]

virtual void JTOOLS::JTransformable< N, JHistogram_t::abscissa_type >::transform ( const transformer_type & transformer)
pure virtualinherited

Application of transformation.

Parameters
transformerfunction transformer

Friends And Related Symbol Documentation

◆ operator>>

template<class JHistogram_t , class JMaplist_t , class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
JReader & operator>> ( JReader & in,
JTransformableMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t > & object )
friend

Read transformable multidimensional histogram.

Parameters
inreader
objecttransformable multidimensional histogram.
Returns
reader

Definition at line 130 of file JTransformableMultiHistogram.hh.

131 {
132 in >> static_cast<JMultiHistogram_t&>(object);
133
134 return object.transformer->read(in);
135 }
JMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t > JMultiHistogram_t

◆ operator<<

template<class JHistogram_t , class JMaplist_t , class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
JWriter & operator<< ( JWriter & out,
const JTransformableMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t > & object )
friend

Write transformable multidimensional histogram.

Parameters
outwriter
objecttransformable multidimensional histogram
Returns
writer

Definition at line 145 of file JTransformableMultiHistogram.hh.

146 {
147 out << static_cast<const JMultiHistogram_t&>(object);
148
149 return object.transformer->write(out);
150 }

Member Data Documentation

◆ transformer

template<class JHistogram_t , class JMaplist_t , class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
std::shared_ptr<transformer_type> JTOOLS::JTransformableMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t >::transformer

Definition at line 153 of file JTransformableMultiHistogram.hh.

◆ buffer

template<class JHistogram_t , class JMaplist_t , class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
JArray<NUMBER_OF_DIMENSIONS, abscissa_type> JTOOLS::JMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t >::buffer
mutableprotectedinherited

Definition at line 131 of file JMultiHistogram.hh.


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