Jpp
Public Types | Public Member Functions | Public Attributes | 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_t > JTOOLS::JTransformable< JMapLength< JMaplist_t >::value, JHistogram_t::abscissa_type > JTOOLS::JMultiMap< JHistogram_t::abscissa_type, JHistogram_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. More...
 
const JTransformableMultiHistogramgetTransformableMultiHistogram () const
 Get transformable multidimensional histogram. More...
 
JTransformableMultiHistogramgetTransformableMultiHistogram ()
 Get transformable multidimensional histogram. More...
 
void fill (const abscissa_type x,...)
 Multidimensional fill method call. More...
 
virtual void transform (const transformer_type &transformer)
 Application of weight function and coordinate transformation. More...
 
const JMultiHistogramgetMultiHistogram () const
 Get multidimensional histogram. More...
 
JMultiHistogramgetMultiHistogram ()
 Get multidimensional histogram. More...
 
virtual void transform (const transformer_type &transformer)=0
 Application of transformation. More...
 

Public Attributes

JLANG::JSharedPointer< transformer_typetransformer
 

Protected Attributes

va_list ap
 
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 37 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 45 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 49 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 51 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 52 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 54 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 55 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 57 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 58 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 59 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 60 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 62 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 63 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 65 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 66 of file JTransformableMultiHistogram.hh.

◆ multimap_type

template<class JHistogram_t, class JMaplist_t, class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
typedef 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 43 of file JMultiHistogram.hh.

◆ argument_type

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

Definition at line 344 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
Enumerator
NUMBER_OF_DIMENSIONS 

Definition at line 47 of file JTransformableMultiHistogram.hh.

◆ 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 45 of file JMultiHistogram.hh.

45 { 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 72 of file JTransformableMultiHistogram.hh.

72  :
74  {}

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

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

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

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

◆ fill()

template<class JHistogram_t, class JMaplist_t, class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
void JTOOLS::JTransformableMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t >::fill ( const abscissa_type  x,
  ... 
)
inline

Multidimensional fill method call.

Parameters
xcomma seperated list of abscissa values
Returns
function value

Definition at line 105 of file JTransformableMultiHistogram.hh.

106  {
107  va_start(this->ap, x);
108 
109  this->buffer[0] = x;
110 
111  for (int i = 1; i != NUMBER_OF_DIMENSIONS; ++i) {
112  this->buffer[i] = va_arg(this->ap, abscissa_type);
113  }
114 
115  const contents_type w = va_arg(this->ap, contents_type);
116 
117  va_end(this->ap);
118 
119  this->buffer[NUMBER_OF_DIMENSIONS - 1] = transformer->putXn(this->buffer, this->buffer[NUMBER_OF_DIMENSIONS - 1]);
120 
121  const double z = transformer->putXn(this->buffer, 1.0) - transformer->putXn(this->buffer, 0.0);
122  const double W = transformer->getWeight(this->buffer);
123 
124  this->evaluate(this->buffer.begin(), w * z / W);
125  }

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

Application of weight function and coordinate transformation.

Parameters
transformerfunction transformer

Definition at line 133 of file JTransformableMultiHistogram.hh.

134  {
135  typedef typename transformer_type::array_type array_type;
136 
137  for (super_iterator i = this->super_begin(); i != this->super_end(); ++i) {
138 
139  const array_type array = (*i).getKey();
140  histogram_type& histogram = (*i).getValue();
141 
144 
145  histogram.transform(get);
146  histogram.transform(put);
147  }
148 
149  this->transformer.reset(transformer.clone());
150  }

◆ 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 73 of file JMultiHistogram.hh.

74  {
75  return static_cast<const JMultiHistogram&>(*this);
76  }

◆ 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 84 of file JMultiHistogram.hh.

85  {
86  return static_cast<JMultiHistogram&>(*this);
87  }

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

161  {
162  in >> static_cast<JMultiHistogram_t&>(object);
163 
164  return object.transformer->read(in);
165  }

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

176  {
177  out << static_cast<const JMultiHistogram_t&>(object);
178 
179  return object.transformer->write(out);
180  }

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

◆ ap

template<class JHistogram_t, class JMaplist_t, class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
va_list JTOOLS::JMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t >::ap
mutableprotectedinherited

Definition at line 114 of file JMultiHistogram.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 115 of file JMultiHistogram.hh.


The documentation for this class was generated from the following file:
JTOOLS::JMultiMapGetTransformer
Auxiliary class to convert JMultiMapTransformer to JCollectionElementTransformer.
Definition: JMultiMapTransformer.hh:291
JTOOLS::JArray::begin
const_iterator begin() const
get iterator to begin of data
Definition: JArray.hh:188
JTOOLS::w
data_type w[N+1][M+1]
Definition: JPolint.hh:708
JTOOLS::JTransformableMultiHistogram::abscissa_type
JMultiHistogram_t::abscissa_type abscissa_type
Definition: JTransformableMultiHistogram.hh:54
JTOOLS::JMultiHistogram::NUMBER_OF_DIMENSIONS
Definition: JMultiHistogram.hh:45
JTOOLS::JMapLength
Length of map list.
Definition: JMapList.hh:45
JTOOLS::JMultiMapTransformer::getClone
static JMultiMapTransformer * getClone()
Get clone of default transformer.
Definition: JMultiMapTransformer.hh:124
JTOOLS::JTransformableMultiHistogram::contents_type
histogram_type::contents_type contents_type
Definition: JTransformableMultiHistogram.hh:51
JTOOLS::JTransformableMultiHistogram::histogram_type
JHistogram_t histogram_type
Definition: JTransformableMultiHistogram.hh:49
JTOOLS::JMultiMapPutTransformer
Auxiliary class to convert JMultiMapTransformer to JCollectionElementTransformer.
Definition: JMultiMapTransformer.hh:240
JTOOLS::JMultiMapTransformer::array_type
JArray< N, argument_type > array_type
Definition: JMultiMapTransformer.hh:45
JTOOLS::JTransformableMultiHistogram::value_type
histogram_type::value_type value_type
Definition: JTransformableMultiHistogram.hh:52
JTOOLS::JTransformableMultiHistogram::array_type
transformer_type::array_type array_type
Definition: JTransformableMultiHistogram.hh:66
JTOOLS::JTransformableMultiHistogram::NUMBER_OF_DIMENSIONS
Definition: JTransformableMultiHistogram.hh:47
JTOOLS::JTransformableMultiHistogram::transformer
JLANG::JSharedPointer< transformer_type > transformer
Definition: JTransformableMultiHistogram.hh:183
JAANET::get
T get(const JHead &header)
Get object from header.
Definition: JHeadToolkit.hh:295
JTOOLS::JTransformableMultiHistogram::super_iterator
JMultiHistogram_t::super_iterator super_iterator
Definition: JTransformableMultiHistogram.hh:62
JTOOLS::JMultiHistogram::ap
va_list ap
Definition: JMultiHistogram.hh:114
JTOOLS::JMultiHistogram::buffer
JArray< NUMBER_OF_DIMENSIONS, abscissa_type > buffer
Definition: JMultiHistogram.hh:115