Jpp  18.2.0
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
JPHYSICS::JPDFTable< JFunction1D_t, JMaplist_t, JDistance_t > Class Template Referenceabstract

Multi-dimensional PDF table for arrival time of Cherenkov light. More...

#include <JPDFTable.hh>

Inheritance diagram for JPHYSICS::JPDFTable< JFunction1D_t, JMaplist_t, JDistance_t >:
JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t > JIO::JSerialisable JIO::JObjectBinaryIO< T > JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t > JTOOLS::JTransformable< JMapLength< JMaplist_t >::value, JFunction_t::argument_type > JTOOLS::JMultiMap< JFunction_t::argument_type, JFunction_t, JMaplist_t, JDistance_t >

Public Types

enum  { NUMBER_OF_DIMENSIONS = transformablemultifunction_type::NUMBER_OF_DIMENSIONS }
 
typedef
JTransformableMultiFunction
< JFunction1D_t, JMaplist_t,
JDistance_t > 
transformablemultifunction_type
 
typedef
transformablemultifunction_type::argument_type 
argument_type
 
typedef
transformablemultifunction_type::result_type 
result_type
 
typedef
transformablemultifunction_type::value_type 
value_type
 
typedef
transformablemultifunction_type::multimap_type 
multimap_type
 
typedef
transformablemultifunction_type::transformer_type 
transformer_type
 
typedef
transformablemultifunction_type::super_const_iterator 
super_const_iterator
 
typedef
transformablemultifunction_type::super_iterator 
super_iterator
 
typedef
transformablemultifunction_type::function_type 
function_type
 
enum  { NUMBER_OF_DIMENSIONS = multifunction_type::NUMBER_OF_DIMENSIONS }
 
typedef JMultiFunction
< JFunction_t, JMaplist_t,
JDistance_t > 
multifunction_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::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
transformer_type::array_type 
array_type
 
enum  { NUMBER_OF_DIMENSIONS = JMapLength<JMaplist_t>::value + JFunction_t::NUMBER_OF_DIMENSIONS }
 

Public Member Functions

 JPDFTable ()
 Default constructor. More...
 
template<class __JFunction_t , class __JMaplist_t , class __JDistance_t >
 JPDFTable (const JTransformableMultiFunction< __JFunction_t, __JMaplist_t, __JDistance_t > &input)
 Constructor. More...
 
template<class JHistogram_t , class __JMaplist_t , class __JDistance_t >
 JPDFTable (const JTransformableMultiHistogram< JHistogram_t, __JMaplist_t, __JDistance_t > &input)
 Constructor. More...
 
void blur (const double TTS, const int numberOfPoints=25, const double epsilon=1.0e-10, const double quantile=0.99)
 Blur PDF. More...
 
void compress (const JRange< typename function_type::abscissa_type > &range)
 Compresses PDF to given abscissa range. More...
 
virtual JReaderread (JReader &in) override
 Read from input. More...
 
virtual JWriterwrite (JWriter &out) const override
 Write from input. More...
 
const JTransformableMultiFunctiongetTransformableMultiFunction () const
 Get transformable multidimensional function. More...
 
JTransformableMultiFunctiongetTransformableMultiFunction ()
 Get transformable multidimensional function. More...
 
template<class __JFunction_t , class __JMaplist_t , class __JDistance_t >
void insert (const JTransformableMultiFunction< __JFunction_t, __JMaplist_t, __JDistance_t > &input)
 Insert multidimensional input. More...
 
template<class JHistogram_t , class __JMaplist_t , class __JDistance_t >
void insert (const JTransformableMultiHistogram< JHistogram_t, __JMaplist_t, __JDistance_t > &input)
 Insert multidimensional input. More...
 
template<class __JFunction_t , class __JMaplist_t , class __JDistance_t >
void insert (const JMultiFunction< __JFunction_t, __JMaplist_t, __JDistance_t > &input)
 Insert multidimensional input. More...
 
template<class JHistogram_t , class __JMaplist_t , class __JDistance_t >
void insert (const JMultiHistogram< JHistogram_t, __JMaplist_t, __JDistance_t > &input)
 Insert multidimensional input. More...
 
template<class JMultiFunction_t >
void add (const JMultiFunction_t &input)
 Add function. More...
 
template<class... Args>
result_type operator() (const Args &...args) const
 Multidimensional interpolation method call. More...
 
virtual result_type evaluate (const argument_type *pX) const override
 Recursive function value evaluation. More...
 
virtual void transform (const transformer_type &transformer) override
 Application of weight function and coordinate transformation. More...
 
virtual void transform (const transformer_type &transformer)=0
 Application of transformation. More...
 
const JMultiFunctiongetMultiFunction () const
 Get multidimensional function. More...
 
JMultiFunctiongetMultiFunction ()
 Get multidimensional function. More...
 
void compile ()
 Compilation. More...
 
void setExceptionHandler (const typename function_type::supervisor_type &supervisor)
 Set the supervisor for handling of exceptions. More...
 
void load (const char *file_name)
 Load from input file. More...
 
void store (const char *file_name) const
 Store to output file. More...
 

Public Attributes

JLANG::JSharedPointer
< transformer_type
transformer
 

Protected Member Functions

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. More...
 
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. More...
 
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. More...
 

Protected Attributes

JArray< NUMBER_OF_DIMENSIONS,
argument_type
buffer
 

Detailed Description

template<class JFunction1D_t, class JMaplist_t, class JDistance_t = JTOOLS::JDistance<typename JFunction1D_t::argument_type>>
class JPHYSICS::JPDFTable< JFunction1D_t, JMaplist_t, JDistance_t >

Multi-dimensional PDF table for arrival time of Cherenkov light.

Definition at line 40 of file JPDFTable.hh.

Member Typedef Documentation

template<class JFunction1D_t, class JMaplist_t, class JDistance_t = JTOOLS::JDistance<typename JFunction1D_t::argument_type>>
typedef JTransformableMultiFunction<JFunction1D_t, JMaplist_t, JDistance_t> JPHYSICS::JPDFTable< JFunction1D_t, JMaplist_t, JDistance_t >::transformablemultifunction_type

Definition at line 47 of file JPDFTable.hh.

template<class JFunction1D_t, class JMaplist_t, class JDistance_t = JTOOLS::JDistance<typename JFunction1D_t::argument_type>>
typedef transformablemultifunction_type::argument_type JPHYSICS::JPDFTable< JFunction1D_t, JMaplist_t, JDistance_t >::argument_type

Definition at line 49 of file JPDFTable.hh.

template<class JFunction1D_t, class JMaplist_t, class JDistance_t = JTOOLS::JDistance<typename JFunction1D_t::argument_type>>
typedef transformablemultifunction_type::result_type JPHYSICS::JPDFTable< JFunction1D_t, JMaplist_t, JDistance_t >::result_type

Definition at line 50 of file JPDFTable.hh.

template<class JFunction1D_t, class JMaplist_t, class JDistance_t = JTOOLS::JDistance<typename JFunction1D_t::argument_type>>
typedef transformablemultifunction_type::value_type JPHYSICS::JPDFTable< JFunction1D_t, JMaplist_t, JDistance_t >::value_type

Definition at line 51 of file JPDFTable.hh.

template<class JFunction1D_t, class JMaplist_t, class JDistance_t = JTOOLS::JDistance<typename JFunction1D_t::argument_type>>
typedef transformablemultifunction_type::multimap_type JPHYSICS::JPDFTable< JFunction1D_t, JMaplist_t, JDistance_t >::multimap_type

Definition at line 53 of file JPDFTable.hh.

template<class JFunction1D_t, class JMaplist_t, class JDistance_t = JTOOLS::JDistance<typename JFunction1D_t::argument_type>>
typedef transformablemultifunction_type::transformer_type JPHYSICS::JPDFTable< JFunction1D_t, JMaplist_t, JDistance_t >::transformer_type

Definition at line 54 of file JPDFTable.hh.

template<class JFunction1D_t, class JMaplist_t, class JDistance_t = JTOOLS::JDistance<typename JFunction1D_t::argument_type>>
typedef transformablemultifunction_type::super_const_iterator JPHYSICS::JPDFTable< JFunction1D_t, JMaplist_t, JDistance_t >::super_const_iterator

Definition at line 58 of file JPDFTable.hh.

template<class JFunction1D_t, class JMaplist_t, class JDistance_t = JTOOLS::JDistance<typename JFunction1D_t::argument_type>>
typedef transformablemultifunction_type::super_iterator JPHYSICS::JPDFTable< JFunction1D_t, JMaplist_t, JDistance_t >::super_iterator

Definition at line 59 of file JPDFTable.hh.

template<class JFunction1D_t, class JMaplist_t, class JDistance_t = JTOOLS::JDistance<typename JFunction1D_t::argument_type>>
typedef transformablemultifunction_type::function_type JPHYSICS::JPDFTable< JFunction1D_t, JMaplist_t, JDistance_t >::function_type

Definition at line 60 of file JPDFTable.hh.

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
typedef JMultiFunction<JFunction_t, JMaplist_t, JDistance_t> JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::multifunction_type
inherited

Definition at line 47 of file JTransformableMultiFunction.hh.

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
typedef multifunction_type::supervisor_type JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::supervisor_type
inherited

Definition at line 55 of file JTransformableMultiFunction.hh.

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
typedef multifunction_type::abscissa_type JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::abscissa_type
inherited

Definition at line 57 of file JTransformableMultiFunction.hh.

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
typedef multifunction_type::ordinate_type JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::ordinate_type
inherited

Definition at line 58 of file JTransformableMultiFunction.hh.

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
typedef multifunction_type::const_iterator JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::const_iterator
inherited

Definition at line 61 of file JTransformableMultiFunction.hh.

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
typedef multifunction_type::const_reverse_iterator JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::const_reverse_iterator
inherited

Definition at line 62 of file JTransformableMultiFunction.hh.

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
typedef multifunction_type::iterator JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::iterator
inherited

Definition at line 63 of file JTransformableMultiFunction.hh.

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
typedef multifunction_type::reverse_iterator JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::reverse_iterator
inherited

Definition at line 64 of file JTransformableMultiFunction.hh.

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
typedef transformer_type::array_type JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::array_type
inherited

Definition at line 70 of file JTransformableMultiFunction.hh.

Member Enumeration Documentation

template<class JFunction1D_t, class JMaplist_t, class JDistance_t = JTOOLS::JDistance<typename JFunction1D_t::argument_type>>
anonymous enum
template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
anonymous enum
inherited
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.

Constructor & Destructor Documentation

template<class JFunction1D_t, class JMaplist_t, class JDistance_t = JTOOLS::JDistance<typename JFunction1D_t::argument_type>>
JPHYSICS::JPDFTable< JFunction1D_t, JMaplist_t, JDistance_t >::JPDFTable ( )
inline

Default constructor.

Definition at line 68 of file JPDFTable.hh.

68  :
70  {}
JTransformableMultiFunction< JFunction1D_t, JMaplist_t, JDistance_t > transformablemultifunction_type
Definition: JPDFTable.hh:47
template<class JFunction1D_t, class JMaplist_t, class JDistance_t = JTOOLS::JDistance<typename JFunction1D_t::argument_type>>
template<class __JFunction_t , class __JMaplist_t , class __JDistance_t >
JPHYSICS::JPDFTable< JFunction1D_t, JMaplist_t, JDistance_t >::JPDFTable ( const JTransformableMultiFunction< __JFunction_t, __JMaplist_t, __JDistance_t > &  input)
inline

Constructor.

Parameters
inputmulti-dimensional function

Definition at line 79 of file JPDFTable.hh.

79  :
81  {}
JTransformableMultiFunction< JFunction1D_t, JMaplist_t, JDistance_t > transformablemultifunction_type
Definition: JPDFTable.hh:47
template<class JFunction1D_t, class JMaplist_t, class JDistance_t = JTOOLS::JDistance<typename JFunction1D_t::argument_type>>
template<class JHistogram_t , class __JMaplist_t , class __JDistance_t >
JPHYSICS::JPDFTable< JFunction1D_t, JMaplist_t, JDistance_t >::JPDFTable ( const JTransformableMultiHistogram< JHistogram_t, __JMaplist_t, __JDistance_t > &  input)
inline

Constructor.

Parameters
inputmulti-dimensional histogram

Definition at line 90 of file JPDFTable.hh.

90  :
92  {}
JTransformableMultiFunction< JFunction1D_t, JMaplist_t, JDistance_t > transformablemultifunction_type
Definition: JPDFTable.hh:47

Member Function Documentation

template<class JFunction1D_t, class JMaplist_t, class JDistance_t = JTOOLS::JDistance<typename JFunction1D_t::argument_type>>
void JPHYSICS::JPDFTable< JFunction1D_t, JMaplist_t, JDistance_t >::blur ( const double  TTS,
const int  numberOfPoints = 25,
const double  epsilon = 1.0e-10,
const double  quantile = 0.99 
)
inline

Blur PDF.

The arrival times of Cherenkov light are smeared according to a Gaussian distribution with the specified width (i.e. TTS) using Gauss-Hermite integration. An exception is made when the time range according the specified quantile is smaller than the specified width (TTS) of the Gaussian distribution. In that case, the resulting PDF is a Gaussian distribution with the specified width (TTS) and normalisation according to the integral value of the input PDF. A smooth transition is imposed between the normal regime and this exeption.

Parameters
TTSTTS [ns]
numberOfPointsnumber of points for Gauss-Hermite integration
epsilonprecision
quantilequantile

Definition at line 111 of file JPDFTable.hh.

115  {
116  using namespace std;
117  using namespace JPP;
118 
119  typedef typename transformer_type::array_type array_type;
120 
121  const JGaussHermite engine(numberOfPoints, epsilon);
122 
123  for (super_iterator i = this->super_begin(); i != this->super_end(); ++i) {
124 
125  const array_type array = (*i).getKey();
126  function_type& f1 = (*i).getValue();
127 
128  if (!f1.empty()) {
129 
130  const typename function_type::supervisor_type& supervisor = f1.getSupervisor();
131 
132  const JMultiMapGetTransformer<NUMBER_OF_DIMENSIONS - 1, value_type> get(*(this->transformer), array);
133  const JMultiMapPutTransformer<NUMBER_OF_DIMENSIONS - 1, value_type> put(*(this->transformer), array);
134 
135  f1.transform(get);
136  f1.compile();
137 
138  const JQuantiles Q(f1, quantile);
139 
140  // abscissa
141 
142  JSet<double> X;
143 
144  for (JGaussHermite::const_iterator j = engine.begin(); j != engine.end(); ++j) {
145  X.insert(Q.getX() + TTS*sqrt(2.0)*j->getX());
146  }
147 
148  for (typename function_type::const_iterator j = f1.begin(); j != f1.end(); ++j) {
149 
150  if (j->getX() - TTS < X.getXmin()) {
151  X.insert(j->getX() - TTS);
152  }
153 
154  if (j->getX() + TTS > X.getXmax()) {
155  X.insert(j->getX() + TTS);
156  }
157  }
158 
159 
160  const double W = gauss(Q.getUpperLimit() - Q.getLowerLimit(), TTS);
161 
163 
164  for (JSet<double>::const_iterator x = X.begin(); x != X.end(); ++x) {
165 
166  double y = 0.0;
167 
168  for (JGaussHermite::const_iterator j = engine.begin(); j != engine.end(); ++j) {
169 
170  const double u = j->getX();
171  const double v = j->getY() / sqrt(PI);
172  const double w = get_value(f1(*x + u*TTS*sqrt(2.0)));
173 
174  y += v * w;
175  }
176 
177  buffer[*x] = W * Q.getIntegral() * Gauss(*x - Q.getX(), TTS) + (1.0 - W) * y;
178  }
179 
180  buffer.transform(put);
181  buffer.compile();
182 
183  f1 = buffer;
184 
185  f1.setExceptionHandler(supervisor);
186  }
187  }
188  }
data_type w[N+1][M+1]
Definition: JPolint.hh:823
Q(UTCMax_s-UTCMin_s)-livetime_s
transformablemultifunction_type::function_type function_type
Definition: JPDFTable.hh:60
transformablemultifunction_type::value_type value_type
Definition: JPDFTable.hh:51
const JPolynome f1(1.0, 2.0, 3.0)
Function.
JArray< N, argument_type > array_type
JArray< NUMBER_OF_DIMENSIONS, argument_type > buffer
static const double PI
Mathematical constants.
then set_variable NUMBER_OF_TESTS else set_variable NUMBER_OF_TESTS fi function gauss()
int numberOfPoints
Definition: JResultPDF.cc:22
double Gauss(const double x, const double sigma)
Normalised Gauss function.
no fit printf nominal n $STRING awk v X
transformablemultifunction_type::super_iterator super_iterator
Definition: JPDFTable.hh:59
int j
Definition: JPolint.hh:748
data_type v[N+1][M+1]
Definition: JPolint.hh:822
double u[N+1]
Definition: JPolint.hh:821
JLANG::JSharedPointer< transformer_type > transformer
JResultEvaluator< JResult_t >::result_type get_value(const JResult_t &value)
Helper method to recursively evaluate a to function value.
Definition: JResult.hh:998
const double epsilon
Definition: JQuadrature.cc:21
double getValue(const double x) const
Function value.
Definition: JPolynome.hh:233
template<class JFunction1D_t, class JMaplist_t, class JDistance_t = JTOOLS::JDistance<typename JFunction1D_t::argument_type>>
void JPHYSICS::JPDFTable< JFunction1D_t, JMaplist_t, JDistance_t >::compress ( const JRange< typename function_type::abscissa_type > &  range)
inline

Compresses PDF to given abscissa range.

Parameters
rangeabscissa range

Definition at line 196 of file JPDFTable.hh.

197  {
198  for (super_iterator i = this->super_begin(); i != this->super_end(); ++i) {
199 
200  function_type& f1 = i.getValue();
201  function_type f2;
202 
203  typename function_type::iterator p = f1.lower_bound(range.getLowerLimit());
204  typename function_type::iterator q = f1.lower_bound(range.getUpperLimit());
205 
206  for (++q; p != q; ++p) {
207  f2.insert(*p);
208  }
209 
210  f2.swap(f1);
211  }
212 
213  this->compile();
214  }
void compile()
Compilation.
transformablemultifunction_type::function_type function_type
Definition: JPDFTable.hh:60
const JPolynome f1(1.0, 2.0, 3.0)
Function.
z range($ZMAX-$ZMIN)< $MINIMAL_DZ." fi fi typeset -Z 4 STRING typeset -Z 2 FLOOR JPlot1D -f $
transformablemultifunction_type::super_iterator super_iterator
Definition: JPDFTable.hh:59
template<class JFunction1D_t, class JMaplist_t, class JDistance_t = JTOOLS::JDistance<typename JFunction1D_t::argument_type>>
virtual JReader& JPHYSICS::JPDFTable< JFunction1D_t, JMaplist_t, JDistance_t >::read ( JReader in)
inlineoverridevirtual

Read from input.

Parameters
inreader
Returns
reader

Implements JIO::JSerialisable.

Definition at line 223 of file JPDFTable.hh.

224  {
225  if (in >> static_cast<transformablemultifunction_type&>(*this)) {
226 
227  // read optional transformer
228 
230 
231  if (buffer.read(in)) {
232 
233  this->transformer.reset(buffer.clone());
234 
235  } else {
236 
237  in.clear();
238 
240  }
241  }
242 
243  this->compile();
244 
245  return in;
246  }
void compile()
Compilation.
Template definition of transformer of the probability density function (PDF) of the time response of ...
JArray< NUMBER_OF_DIMENSIONS, argument_type > buffer
static JMultiMapTransformer * getClone()
Get clone of default transformer.
transformablemultifunction_type::argument_type argument_type
Definition: JPDFTable.hh:49
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY JAcoustics sh $DETECTOR_ID source JAcousticsToolkit sh CHECK_EXIT_CODE typeset A EMITTERS get_tripods $WORKDIR tripod txt EMITTERS get_transmitters $WORKDIR transmitter txt EMITTERS for EMITTER in
Definition: JCanberra.sh:46
JLANG::JSharedPointer< transformer_type > transformer
template<class JFunction1D_t, class JMaplist_t, class JDistance_t = JTOOLS::JDistance<typename JFunction1D_t::argument_type>>
virtual JWriter& JPHYSICS::JPDFTable< JFunction1D_t, JMaplist_t, JDistance_t >::write ( JWriter out) const
inlineoverridevirtual

Write from input.

Parameters
outwriter
Returns
writer

Implements JIO::JSerialisable.

Definition at line 255 of file JPDFTable.hh.

256  {
257  out << static_cast<const transformablemultifunction_type&>(*this);
258 
259  this->transformer->write(out);
260 
261  return out;
262  }
JLANG::JSharedPointer< transformer_type > transformer
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
inlineinherited

Get transformable multidimensional function.

Returns
this transformable multidimensional function

Definition at line 102 of file JTransformableMultiFunction.hh.

103  {
104  return static_cast<const JTransformableMultiFunction&>(*this);
105  }
Transformable multidimensional function.
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 ( )
inlineinherited

Get transformable multidimensional function.

Returns
this transformable multidimensional function

Definition at line 113 of file JTransformableMultiFunction.hh.

114  {
115  return static_cast<JTransformableMultiFunction&>(*this);
116  }
Transformable multidimensional function.
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)
inlineinherited

Insert multidimensional input.

Parameters
inputmultidimensional function

Definition at line 125 of file JTransformableMultiFunction.hh.

126  {
127  this->transformer.reset(input.transformer->clone());
128 
130  }
void insert(const JMultiFunction< __JFunction_t, __JMaplist_t, __JDistance_t > &input)
Insert multidimensional input.
JLANG::JSharedPointer< transformer_type > transformer
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)
inlineinherited

Insert multidimensional input.

Parameters
inputmultidimensional histogram

Definition at line 139 of file JTransformableMultiFunction.hh.

140  {
141  this->transformer.reset(input.transformer->clone());
142 
144  }
JLANG::JSharedPointer< transformer_type > transformer
void insert(const JMultiFunction< __JFunction_t, __JMaplist_t, __JDistance_t > &input)
Insert multidimensional input.
JLANG::JSharedPointer< transformer_type > transformer
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)
inlineinherited

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.
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)
inlineinherited

Insert multidimensional input.

Parameters
inputmultidimensional histogram

Definition at line 133 of file JMultiFunction.hh.

134  {
135  this->insert(JMultiKey<0, argument_type>(), input);
136  }
Multidimensional key.
Definition: JMultiKey.hh:34
void insert(const JMultiFunction< __JFunction_t, __JMaplist_t, __JDistance_t > &input)
Insert multidimensional input.
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 
)
inlineprotectedinherited

Insert multidimensional histogram at multidimensional key.

Parameters
keymultidimensional key
inputmultidimensional histogram

Definition at line 196 of file JMultiFunction.hh.

198  {
199  if (input.size() > 1) {
200 
201  for (auto j = input.begin(), i = j++; j != input.end(); ++i, ++j) {
202 
203  const argument_type x = 0.5 * (i->getX() + j->getX());
204 
205  insert(JMultiKey<N+1, argument_type>(key, x), i->getY());
206  }
207  }
208  }
function_type::argument_type argument_type
Multidimensional key.
Definition: JMultiKey.hh:34
void insert(const JMultiFunction< __JFunction_t, __JMaplist_t, __JDistance_t > &input)
Insert multidimensional input.
int j
Definition: JPolint.hh:748
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 
)
inlineprotectedinherited

Convert one-dimensional histogram to PDF and insert result at given multidimensional key.

Parameters
keymultidimensional key
inputhistogram

Definition at line 218 of file JMultiFunction.hh.

221  {
222  JFunction_t buffer;
223 
224  makePDF(input, buffer);
225 
226  multimap_type::insert(key, buffer);
227  }
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).
JArray< NUMBER_OF_DIMENSIONS, argument_type > buffer
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 
)
inlineprotectedinherited

Convert multidimensional histogram to PDF and insert result at given multidimensional key.

Parameters
keymultidimensional key
inputmultidimensional histogram

Definition at line 237 of file JMultiFunction.hh.

239  {
240  JFunction_t buffer;
241 
242  makePDF(input, buffer);
243 
244  multimap_type::insert(key, buffer);
245  }
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).
JArray< NUMBER_OF_DIMENSIONS, argument_type > buffer
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)
inlineinherited

Add function.

Note that the summation is made via iteration of the elements in this multidimensional function.

Parameters
inputmultidimensional function

Definition at line 155 of file JTransformableMultiFunction.hh.

156  {
157  for (super_iterator i = this->super_begin(); i != this->super_end(); ++i) {
158 
159  const array_type array = (*i).getKey();
160  function_type& f1 = (*i).getValue();
161 
162  if (!f1.empty()) {
163 
164  const JMultiMapGetTransformer<NUMBER_OF_DIMENSIONS - 1, value_type> get(*(this->transformer), array);
165  const JMultiMapPutTransformer<NUMBER_OF_DIMENSIONS - 1, value_type> put(*(this->transformer), array);
166 
167  f1.transform(get);
168 
169  for (typename function_type::iterator j = f1.begin(); j != f1.end(); ++j) {
170 
172 
173  j->getY() += get_value(input.evaluate(buffer.data()));
174  }
175 
176  f1.transform(put);
177  f1.compile();
178  }
179  }
180  }
Auxiliary class to convert JMultiMapTransformer to JCollectionElementTransformer. ...
const JPolynome f1(1.0, 2.0, 3.0)
Function.
JArray< NUMBER_OF_DIMENSIONS, argument_type > buffer
Auxiliary class to convert JMultiMapTransformer to JCollectionElementTransformer. ...
int j
Definition: JPolint.hh:748
multifunction_type::super_iterator super_iterator
JLANG::JSharedPointer< transformer_type > transformer
JResultEvaluator< JResult_t >::result_type get_value(const JResult_t &value)
Helper method to recursively evaluate a to function value.
Definition: JResult.hh:998
const_pointer data() const
Get pointer to data.
Definition: JArray.hh:284
double getValue(const double x) const
Function value.
Definition: JPolynome.hh:233
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
inlineinherited

Multidimensional interpolation method call.

Parameters
argscomma seperated list of abscissa values
Returns
function value

Definition at line 190 of file JTransformableMultiFunction.hh.

191  {
192  return this->evaluate(this->buffer.set(args...).data());
193  }
JArray & set(const Args &...args)
Set array.
Definition: JArray.hh:199
JArray< NUMBER_OF_DIMENSIONS, argument_type > buffer
virtual result_type evaluate(const argument_type *pX) const override
Recursive function value evaluation.
const_pointer data() const
Get pointer to data.
Definition: JArray.hh:284
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
inlineoverridevirtualinherited

Recursive function value evaluation.

Parameters
pXpointer to abscissa values
Returns
function value

Definition at line 202 of file JTransformableMultiFunction.hh.

203  {
204  for (int i = 0; i != NUMBER_OF_DIMENSIONS; ++i) {
205  this->buffer[i] = pX[i];
206  }
207 
208  this->buffer[NUMBER_OF_DIMENSIONS - 1] = transformer->putXn(this->buffer, this->buffer[NUMBER_OF_DIMENSIONS - 1]);
209 
210  const result_type y = multifunction_type::evaluate(this->buffer.data());
211  const double W = transformer->getWeight(this->buffer);
212 
214  }
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)
JArray< NUMBER_OF_DIMENSIONS, argument_type > buffer
JLANG::JSharedPointer< transformer_type > transformer
const_pointer data() const
Get pointer to data.
Definition: JArray.hh:284
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)
inlineoverridevirtualinherited

Application of weight function and coordinate transformation.

Parameters
transformerfunction transformer

Definition at line 222 of file JTransformableMultiFunction.hh.

223  {
224  for (super_iterator i = this->super_begin(); i != this->super_end(); ++i) {
225 
226  const array_type array = (*i).getKey();
227  function_type& function = (*i).getValue();
228 
229  const JMultiMapGetTransformer<NUMBER_OF_DIMENSIONS - 1, value_type> get(*(this->transformer), array);
231 
232  function.transform(get);
233  function.transform(put);
234  }
235 
236  this->transformer.reset(transformer.clone());
237  this->compile();
238  }
void compile()
Compilation.
Auxiliary class to convert JMultiMapTransformer to JCollectionElementTransformer. ...
Auxiliary class to convert JMultiMapTransformer to JCollectionElementTransformer. ...
multifunction_type::super_iterator super_iterator
JLANG::JSharedPointer< transformer_type > transformer
virtual void JTOOLS::JTransformable< N, JFunction_t::argument_type >::transform ( const transformer_type transformer)
pure virtualinherited

Application of transformation.

Parameters
transformerfunction transformer
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  }
Multidimensional interpolation method.
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  }
Multidimensional interpolation method.
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.
Definition: JFunctional.hh:369
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
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  }
multimap_type::super_iterator super_iterator
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
template<class T>
void JIO::JObjectBinaryIO< T >::load ( const char *  file_name)
inlineinherited

Load from input file.

Parameters
file_namefile name

Definition at line 29 of file JObjectBinaryIO.hh.

30  {
31  JLANG::load<JFileStreamReader>(file_name, static_cast<T&>(*this));
32  }
do set_variable OUTPUT_DIRECTORY $WORKDIR T
template<class T>
void JIO::JObjectBinaryIO< T >::store ( const char *  file_name) const
inlineinherited

Store to output file.

Parameters
file_namefile name

Definition at line 40 of file JObjectBinaryIO.hh.

41  {
42  JLANG::store<JFileStreamWriter>(file_name, static_cast<const T&>(*this));
43  }
do set_variable OUTPUT_DIRECTORY $WORKDIR T

Member Data Documentation

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
JLANG::JSharedPointer<transformer_type> JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::transformer
inherited

Definition at line 271 of file JTransformableMultiFunction.hh.

template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
JArray<NUMBER_OF_DIMENSIONS, argument_type> JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::buffer
mutableprotectedinherited

Definition at line 183 of file JMultiFunction.hh.


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