Jpp
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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_type
transformer_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
JTransformableMultiHistogram
getTransformableMultiHistogram () 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_type
transformer
 

Protected Attributes

va_list ap
 
JArray< NUMBER_OF_DIMENSIONS,
abscissa_type
buffer
 

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

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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

template<class JHistogram_t, class JMaplist_t, class JDistance_t = JDistance<typename JHistogram_t::abscissa_type>>
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.

Constructor & Destructor Documentation

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  {}
JLANG::JSharedPointer< transformer_type > transformer
static JMultiMapTransformer * getClone()
Get clone of default transformer.

Member Function Documentation

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  }
Transformable multidimensional histogram.
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  }
Transformable multidimensional histogram.
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  }
const_iterator begin() const
get iterator to begin of data
Definition: JArray.hh:172
JLANG::JSharedPointer< transformer_type > transformer
JMultiHistogram_t::abscissa_type abscissa_type
JArray< NUMBER_OF_DIMENSIONS, abscissa_type > buffer
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 
142  const JMultiMapGetTransformer<NUMBER_OF_DIMENSIONS - 1, value_type> get(*(this->transformer), array);
144 
145  histogram.transform(get);
146  histogram.transform(put);
147  }
148 
149  this->transformer.reset(transformer.clone());
150  }
JLANG::JSharedPointer< transformer_type > transformer
Auxiliary class to convert JMultiMapTransformer to JCollectionElementTransformer. ...
JArray< N, argument_type > array_type
JMultiHistogram_t::super_iterator super_iterator
Auxiliary class to convert JMultiMapTransformer to JCollectionElementTransformer. ...
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  }
Multidimensional histogram.
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  }
Multidimensional histogram.
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

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  }
JMultiHistogram< JHistogram_t, JMaplist_t, JDistance_t > JMultiHistogram_t
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

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.

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.

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: