Jpp  debug
the software that should make you happy
Public Types | Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Friends | List of all members
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< typename JHistogram_t::abscissa_type > > JTOOLS::JTransformable< JMapLength< JMaplist_t >::value, JHistogram_t::abscissa_type > JTOOLS::JMultiMap< JHistogram_t::abscissa_type, JHistogram_t, JMaplist_t, JDistance< typename JHistogram_t::abscissa_type > >

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  
 
typedef JMultiMap< typename JHistogram_t::abscissa_type, JHistogram_t, JMaplist_t, JDistance< typename JHistogram_t::abscissa_type > > multimap_type
 
typedef JHistogram_t::abscissa_type argument_type
 

Public Member Functions

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

Public Attributes

JLANG::JSharedPointer< 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. More...
 
void __fill__ (const int i, const abscissa_type x0, const abscissa_type x1, const Args &...args)
 Recursive method for filling histogram. More...
 
virtual void __fill__ (const int i, const abscissa_type x, const contents_type w)
 Termination method for filling histogram. More...
 

Protected Attributes

JArray< NUMBER_OF_DIMENSIONS, abscissa_typebuffer
 

Friends

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

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 35 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>>
typedef JMultiHistogram<JHistogram_t, JMaplist_t, JDistance_t> JTOOLS::JTransformableMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t >::JMultiHistogram_t

Definition at line 43 of file JTransformableMultiHistogram.hh.

◆ histogram_type

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

Definition at line 47 of file JTransformableMultiHistogram.hh.

◆ contents_type

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

Definition at line 49 of file JTransformableMultiHistogram.hh.

◆ value_type

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

Definition at line 50 of file JTransformableMultiHistogram.hh.

◆ abscissa_type

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

Definition at line 52 of file JTransformableMultiHistogram.hh.

◆ ordinate_type

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

Definition at line 53 of file JTransformableMultiHistogram.hh.

◆ const_iterator

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

Definition at line 55 of file JTransformableMultiHistogram.hh.

◆ const_reverse_iterator

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

Definition at line 56 of file JTransformableMultiHistogram.hh.

◆ iterator

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

Definition at line 57 of file JTransformableMultiHistogram.hh.

◆ reverse_iterator

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

Definition at line 58 of file JTransformableMultiHistogram.hh.

◆ super_iterator

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

Definition at line 60 of file JTransformableMultiHistogram.hh.

◆ super_const_iterator

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

Definition at line 61 of file JTransformableMultiHistogram.hh.

◆ transformer_type

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

Definition at line 63 of file JTransformableMultiHistogram.hh.

◆ array_type

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

Definition at line 64 of file JTransformableMultiHistogram.hh.

◆ multimap_type

typedef JMultiMap<typename JHistogram_t::abscissa_type, JHistogram_t, JMaplist_t, JDistance< typename JHistogram_t::abscissa_type > > JTOOLS::JMultiHistogram< JHistogram_t, JMaplist_t, JDistance< typename JHistogram_t::abscissa_type > >::multimap_type
inherited

Definition at line 41 of file JMultiHistogram.hh.

◆ argument_type

typedef 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

anonymous enum
inherited

Definition at line 43 of file JMultiHistogram.hh.

43 { NUMBER_OF_DIMENSIONS = JMapLength<JMaplist_t>::value + JHistogram_t::NUMBER_OF_DIMENSIONS };
Length of map list.
Definition: JMapList.hh:45

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 70 of file JTransformableMultiHistogram.hh.

70  :
72  {}
static JMultiMapTransformer * getClone()
Get clone of default transformer.
JLANG::JSharedPointer< 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 80 of file JTransformableMultiHistogram.hh.

81  {
82  return static_cast<const JTransformableMultiHistogram&>(*this);
83  }
Transformable multidimensional histogram.

◆ 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 91 of file JTransformableMultiHistogram.hh.

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

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

103  {
104  typedef typename transformer_type::array_type array_type;
105 
106  for (super_iterator i = this->super_begin(); i != this->super_end(); ++i) {
107 
108  const array_type array = (*i).getKey();
109  histogram_type& histogram = (*i).getValue();
110 
111  const JMultiMapGetTransformer<NUMBER_OF_DIMENSIONS - 1, value_type> get(*(this->transformer), array);
113 
114  histogram.transform(get);
115  histogram.transform(put);
116  }
117 
118  this->transformer.reset(transformer.clone());
119  }
Auxiliary class to convert JMultiMapTransformer to JCollectionElementTransformer.
Auxiliary class to convert JMultiMapTransformer to JCollectionElementTransformer.
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 162 of file JTransformableMultiHistogram.hh.

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

◆ getMultiHistogram() [1/2]

const JMultiHistogram& JTOOLS::JMultiHistogram< JHistogram_t, JMaplist_t, JDistance< typename JHistogram_t::abscissa_type > >::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  }
Multidimensional histogram.

◆ getMultiHistogram() [2/2]

JMultiHistogram& JTOOLS::JMultiHistogram< JHistogram_t, JMaplist_t, JDistance< typename JHistogram_t::abscissa_type > >::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()

void JTOOLS::JMultiHistogram< JHistogram_t, JMaplist_t, JDistance< typename JHistogram_t::abscissa_type > >::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]

void JTOOLS::JMultiHistogram< JHistogram_t, JMaplist_t, JDistance< typename JHistogram_t::abscissa_type > >::__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]

virtual void JTOOLS::JMultiHistogram< JHistogram_t, JMaplist_t, JDistance< typename JHistogram_t::abscissa_type > >::__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:284

◆ 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 Function 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 129 of file JTransformableMultiHistogram.hh.

130  {
131  in >> static_cast<JMultiHistogram_t&>(object);
132 
133  return object.transformer->read(in);
134  }
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 144 of file JTransformableMultiHistogram.hh.

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

Member Data Documentation

◆ transformer

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

Definition at line 152 of file JTransformableMultiHistogram.hh.

◆ buffer

JArray<NUMBER_OF_DIMENSIONS, abscissa_type> JTOOLS::JMultiHistogram< JHistogram_t, JMaplist_t, JDistance< typename JHistogram_t::abscissa_type > >::buffer
mutableprotectedinherited

Definition at line 131 of file JMultiHistogram.hh.


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