Jpp  15.0.0-rc.2
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 | Static Protected Member Functions | 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 JPDF_t , class JPDFMaplist_t , class JPDFDistance_t >
 JPDFTable (const JTransformableMultiFunction< JPDF_t, JPDFMaplist_t, JPDFDistance_t > &input)
 Constructor. More...
 
template<class JHistogram1D_t , class JHistogramMaplist_t , class JHistogramDistance_t >
 JPDFTable (const JTransformableMultiHistogram< JHistogram1D_t, JHistogramMaplist_t, JHistogramDistance_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 JPDF_t , class JPDFMaplist_t , class JPDFDistance_t >
void insert (const JTransformableMultiFunction< JPDF_t, JPDFMaplist_t, JPDFDistance_t > &input)
 Insert multidimensional input. More...
 
template<class JHistogram_t , class JHistogramMaplist_t , class JHistogramDistance_t >
void insert (const JTransformableMultiHistogram< JHistogram_t, JHistogramMaplist_t, JHistogramDistance_t > &input)
 Insert multidimensional input. More...
 
template<class JPDF_t , class JPDFMaplist_t , class JPDFDistance_t >
void insert (const JMultiFunction< JPDF_t, JPDFMaplist_t, JPDFDistance_t > &input)
 Insert multidimensional input. More...
 
template<class JHistogram_t , class JHistogramMaplist_t , class JHistogramDistance_t >
void insert (const JMultiHistogram< JHistogram_t, JHistogramMaplist_t, JHistogramDistance_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 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 __JValue_t >
void insert (const JMultiKey< JMapLength< JMaplist_t >::value, argument_type > &key, const __JValue_t &input)
 Convert one-dimensional histogram to PDF and insert result at given multidimensional key. More...
 

Static Protected Member Functions

static double gauss (const double x, const double sigma)
 Gauss function (normalised to 1 at x = 0). More...
 
static double Gauss (const double x, const double sigma)
 Normalised Gauss function. More...
 
static double Gauss (const double x, const double x0, const double sigma)
 Normalised Gauss function. More...
 

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 39 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 46 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 48 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 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::value_type JPHYSICS::JPDFTable< JFunction1D_t, JMaplist_t, JDistance_t >::value_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::multimap_type JPHYSICS::JPDFTable< JFunction1D_t, JMaplist_t, JDistance_t >::multimap_type

Definition at line 52 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 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::super_const_iterator JPHYSICS::JPDFTable< JFunction1D_t, JMaplist_t, JDistance_t >::super_const_iterator

Definition at line 57 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 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::function_type JPHYSICS::JPDFTable< JFunction1D_t, JMaplist_t, JDistance_t >::function_type

Definition at line 59 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 44 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 52 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 54 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 55 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 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_reverse_iterator JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::const_reverse_iterator
inherited

Definition at line 59 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 60 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 61 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 67 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 48 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 67 of file JPDFTable.hh.

67  :
69  {}
JTransformableMultiFunction< JFunction1D_t, JMaplist_t, JDistance_t > transformablemultifunction_type
Definition: JPDFTable.hh:46
template<class JFunction1D_t, class JMaplist_t, class JDistance_t = JTOOLS::JDistance<typename JFunction1D_t::argument_type>>
template<class JPDF_t , class JPDFMaplist_t , class JPDFDistance_t >
JPHYSICS::JPDFTable< JFunction1D_t, JMaplist_t, JDistance_t >::JPDFTable ( const JTransformableMultiFunction< JPDF_t, JPDFMaplist_t, JPDFDistance_t > &  input)
inline

Constructor.

Parameters
inputmulti-dimensional function

Definition at line 78 of file JPDFTable.hh.

78  :
80  {}
JTransformableMultiFunction< JFunction1D_t, JMaplist_t, JDistance_t > transformablemultifunction_type
Definition: JPDFTable.hh:46
template<class JFunction1D_t, class JMaplist_t, class JDistance_t = JTOOLS::JDistance<typename JFunction1D_t::argument_type>>
template<class JHistogram1D_t , class JHistogramMaplist_t , class JHistogramDistance_t >
JPHYSICS::JPDFTable< JFunction1D_t, JMaplist_t, JDistance_t >::JPDFTable ( const JTransformableMultiHistogram< JHistogram1D_t, JHistogramMaplist_t, JHistogramDistance_t > &  input)
inline

Constructor.

Parameters
inputmulti-dimensional histogram

Definition at line 89 of file JPDFTable.hh.

89  :
91  {}
JTransformableMultiFunction< JFunction1D_t, JMaplist_t, JDistance_t > transformablemultifunction_type
Definition: JPDFTable.hh:46

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 110 of file JPDFTable.hh.

114  {
115  using namespace std;
116  using namespace JTOOLS;
117 
118  typedef typename transformer_type::array_type array_type;
119 
120  const JGaussHermite engine(numberOfPoints, epsilon);
121 
122  for (super_iterator i = this->super_begin(); i != this->super_end(); ++i) {
123 
124  const array_type array = (*i).getKey();
125  function_type& f1 = (*i).getValue();
126 
127  if (!f1.empty()) {
128 
129  const typename function_type::supervisor_type& supervisor = f1.getSupervisor();
130 
131  const JMultiMapGetTransformer<NUMBER_OF_DIMENSIONS - 1, value_type> get(*(this->transformer), array);
132  const JMultiMapPutTransformer<NUMBER_OF_DIMENSIONS - 1, value_type> put(*(this->transformer), array);
133 
134  f1.transform(get);
135  f1.compile();
136 
137  const JQuantiles Q(f1, quantile);
138 
139  // abscissa
140 
141  JSet<double> X;
142 
143  for (JGaussHermite::const_iterator j = engine.begin(); j != engine.end(); ++j) {
144  X.insert(Q.getX() + TTS*sqrt(2.0)*j->getX());
145  }
146 
147  for (typename function_type::const_iterator j = f1.begin(); j != f1.end(); ++j) {
148 
149  if (j->getX() - TTS < X.getXmin()) {
150  X.insert(j->getX() - TTS);
151  }
152 
153  if (j->getX() + TTS > X.getXmax()) {
154  X.insert(j->getX() + TTS);
155  }
156  }
157 
158 
159  const double W = gauss(Q.getUpperLimit() - Q.getLowerLimit(), TTS);
160 
162 
163  for (JSet<double>::const_iterator x = X.begin(); x != X.end(); ++x) {
164 
165  double y = 0.0;
166 
167  for (JGaussHermite::const_iterator j = engine.begin(); j != engine.end(); ++j) {
168 
169  const double u = j->getX();
170  const double v = j->getY() / sqrt(PI);
171  const double w = get_value(f1(*x + u*TTS*sqrt(2.0)));
172 
173  y += v * w;
174  }
175 
176  buffer[*x] = W * Q.getIntegral() * Gauss(*x - Q.getX(), TTS) + (1.0 - W) * y;
177  }
178 
179  buffer.transform(put);
180  buffer.compile();
181 
182  f1 = buffer;
183 
184  f1.setExceptionHandler(supervisor);
185  }
186  }
187  }
data_type w[N+1][M+1]
Definition: JPolint.hh:741
Q(UTCMax_s-UTCMin_s)-livetime_s
Numerical integrator for W(x) = e^-(x^2).
Definition: JQuadrature.hh:251
transformablemultifunction_type::function_type function_type
Definition: JPDFTable.hh:59
transformablemultifunction_type::value_type value_type
Definition: JPDFTable.hh:50
Auxiliary class to convert JMultiMapTransformer to JCollectionElementTransformer. ...
Quantile calculator for a given function.
Definition: JQuantiles.hh:106
JArray< NUMBER_OF_DIMENSIONS, argument_type > buffer
static double Gauss(const double x, const double sigma)
Normalised Gauss function.
Definition: JPDFTable.hh:287
JArray< N, argument_type > array_type
then break fi done getCenter read X Y Z let X
static const double PI
Mathematical constants.
virtual abscissa_type getXmin() const override
Get minimal abscissa value.
Definition: JSet.hh:103
int numberOfPoints
Definition: JResultPDF.cc:22
virtual abscissa_type getXmax() const override
Get maximal abscissa value.
Definition: JSet.hh:114
Auxiliary class to convert JMultiMapTransformer to JCollectionElementTransformer. ...
transformablemultifunction_type::super_iterator super_iterator
Definition: JPDFTable.hh:58
int j
Definition: JPolint.hh:666
Simple data structure for an abstract collection of non-equidistant abscissa values.
Definition: JSet.hh:29
data_type v[N+1][M+1]
Definition: JPolint.hh:740
double u[N+1]
Definition: JPolint.hh:739
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
static double gauss(const double x, const double sigma)
Gauss function (normalised to 1 at x = 0).
Definition: JPDFTable.hh:269
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 195 of file JPDFTable.hh.

196  {
197  for (super_iterator i = this->super_begin(); i != this->super_end(); ++i) {
198 
199  function_type& f1 = i.getValue();
200 
201  typename function_type::iterator p = f1.lower_bound(range.getLowerLimit());
202 
203  f1.function_type::container_type::erase(f1.begin(), p);
204 
205  typename function_type::iterator q = f1.lower_bound(range.getUpperLimit());
206 
207  f1.function_type::container_type::erase(++q, f1.end());
208  }
209 
210  this->compile();
211  }
void compile()
Compilation.
T getLowerLimit() const
Get lower limit.
Definition: JRange.hh:202
transformablemultifunction_type::function_type function_type
Definition: JPDFTable.hh:59
T getUpperLimit() const
Get upper limit.
Definition: JRange.hh:213
transformablemultifunction_type::super_iterator super_iterator
Definition: JPDFTable.hh:58
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 220 of file JPDFTable.hh.

221  {
222  if (in >> static_cast<transformablemultifunction_type&>(*this)) {
223 
224  // read optional transformer
225 
227 
228  if (buffer.read(in)) {
229 
230  this->transformer.reset(buffer.clone());
231 
232  } else {
233 
234  in.clear();
235 
237  }
238  }
239 
240  this->compile();
241 
242  return in;
243  }
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:48
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 source JAcoustics sh $DETECTOR_ID CHECK_EXIT_CODE typeset A TRIPODS get_tripods $WORKDIR tripod txt TRIPODS for EMITTER in
Definition: JCanberra.sh:41
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 252 of file JPDFTable.hh.

253  {
254  out << static_cast<const transformablemultifunction_type&>(*this);
255 
256  this->transformer->write(out);
257 
258  return out;
259  }
JLANG::JSharedPointer< transformer_type > transformer
template<class JFunction1D_t, class JMaplist_t, class JDistance_t = JTOOLS::JDistance<typename JFunction1D_t::argument_type>>
static double JPHYSICS::JPDFTable< JFunction1D_t, JMaplist_t, JDistance_t >::gauss ( const double  x,
const double  sigma 
)
inlinestaticprotected

Gauss function (normalised to 1 at x = 0).

Parameters
xx
sigmasigma
Returns
function value

Definition at line 269 of file JPDFTable.hh.

270  {
271  const double u = x / sigma;
272 
273  if (fabs(u) < 10.0)
274  return exp(-0.5*u*u);
275  else
276  return 0.0;
277  }
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable STRING $argv[2] set_array QUANTILES set_variable FORMULA *[0] exp(-0.5 *(x-[1])*(x-[1])/([2]*[2]))" set_variable MODULE `getModule -a $DETECTOR -L "$STRING 0"` typeset -Z 4 STRING JOpera1D -f hydrophone.root
double u[N+1]
Definition: JPolint.hh:739
template<class JFunction1D_t, class JMaplist_t, class JDistance_t = JTOOLS::JDistance<typename JFunction1D_t::argument_type>>
static double JPHYSICS::JPDFTable< JFunction1D_t, JMaplist_t, JDistance_t >::Gauss ( const double  x,
const double  sigma 
)
inlinestaticprotected

Normalised Gauss function.

Parameters
xx
sigmasigma
Returns
function value

Definition at line 287 of file JPDFTable.hh.

288  {
289  return gauss(x, sigma) / sqrt(2.0*JTOOLS::PI) / sigma;
290  }
static const double PI
Mathematical constants.
static double gauss(const double x, const double sigma)
Gauss function (normalised to 1 at x = 0).
Definition: JPDFTable.hh:269
template<class JFunction1D_t, class JMaplist_t, class JDistance_t = JTOOLS::JDistance<typename JFunction1D_t::argument_type>>
static double JPHYSICS::JPDFTable< JFunction1D_t, JMaplist_t, JDistance_t >::Gauss ( const double  x,
const double  x0,
const double  sigma 
)
inlinestaticprotected

Normalised Gauss function.

Parameters
xx
x0central value
sigmasigma
Returns
function value

Definition at line 301 of file JPDFTable.hh.

302  {
303  return Gauss(x - x0, sigma);
304  }
static double Gauss(const double x, const double sigma)
Normalised Gauss function.
Definition: JPDFTable.hh:287
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 99 of file JTransformableMultiFunction.hh.

100  {
101  return static_cast<const JTransformableMultiFunction&>(*this);
102  }
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 110 of file JTransformableMultiFunction.hh.

111  {
112  return static_cast<JTransformableMultiFunction&>(*this);
113  }
Transformable multidimensional function.
template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
template<class JPDF_t , class JPDFMaplist_t , class JPDFDistance_t >
void JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::insert ( const JTransformableMultiFunction< JPDF_t, JPDFMaplist_t, JPDFDistance_t > &  input)
inlineinherited

Insert multidimensional input.

Parameters
inputmultidimensional function

Definition at line 122 of file JTransformableMultiFunction.hh.

123  {
124  this->transformer.reset(input.transformer->clone());
125 
127  }
void insert(const JMultiFunction< JPDF_t, JPDFMaplist_t, JPDFDistance_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 JHistogramMaplist_t , class JHistogramDistance_t >
void JTOOLS::JTransformableMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::insert ( const JTransformableMultiHistogram< JHistogram_t, JHistogramMaplist_t, JHistogramDistance_t > &  input)
inlineinherited

Insert multidimensional input.

Parameters
inputmultidimensional histogram

Definition at line 136 of file JTransformableMultiFunction.hh.

137  {
138  this->transformer.reset(input.transformer->clone());
139 
141  }
JLANG::JSharedPointer< transformer_type > transformer
void insert(const JMultiFunction< JPDF_t, JPDFMaplist_t, JPDFDistance_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 JPDF_t , class JPDFMaplist_t , class JPDFDistance_t >
void JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::insert ( const JMultiFunction< JPDF_t, JPDFMaplist_t, JPDFDistance_t > &  input)
inlineinherited

Insert multidimensional input.

Parameters
inputmultidimensional function

Definition at line 120 of file JMultiFunction.hh.

121  {
122  copy(input, *this);
123  }
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 JHistogramMaplist_t , class JHistogramDistance_t >
void JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::insert ( const JMultiHistogram< JHistogram_t, JHistogramMaplist_t, JHistogramDistance_t > &  input)
inlineinherited

Insert multidimensional input.

Parameters
inputmultidimensional histogram

Definition at line 132 of file JMultiFunction.hh.

133  {
134  this->insert(JMultiKey<0, argument_type>(), input);
135  }
Multidimensional key.
Definition: JMultiKey.hh:34
void insert(const JMultiFunction< JPDF_t, JPDFMaplist_t, JPDFDistance_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 191 of file JMultiFunction.hh.

193  {
194  if (input.size() > 1) {
195 
196  for (typename JHistogramMap<__JAbscissa_t, __JContents_t, __JMap_t, __JDistance_t>::const_iterator j = input.begin(), i = j++; j != input.end(); ++i, ++j) {
197 
198  const argument_type x = 0.5 * (i->getX() + j->getX());
199 
200  insert(JMultiKey<N+1, argument_type>(key, x), i->getY());
201  }
202  }
203  }
JFunction_t::argument_type argument_type
Multidimensional key.
Definition: JMultiKey.hh:34
collection_type::const_iterator const_iterator
void insert(const JMultiFunction< JPDF_t, JPDFMaplist_t, JPDFDistance_t > &input)
Insert multidimensional input.
int j
Definition: JPolint.hh:666
template<class JFunction_t, class JMaplist_t, class JDistance_t = JDistance<typename JFunction_t::argument_type>>
template<class __JValue_t >
void JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::insert ( const JMultiKey< JMapLength< JMaplist_t >::value, argument_type > &  key,
const __JValue_t &  input 
)
inlineprotectedinherited

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

Parameters
keymultidimensional key
inputhistogram

Definition at line 213 of file JMultiFunction.hh.

215  {
216  JFunction_t buffer;
217 
218  makePDF(input, buffer);
219 
220  multimap_type::insert(key, buffer);
221  }
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).
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 152 of file JTransformableMultiFunction.hh.

153  {
154  for (super_iterator i = this->super_begin(); i != this->super_end(); ++i) {
155 
156  const array_type array = (*i).getKey();
157  function_type& f1 = (*i).getValue();
158 
159  if (!f1.empty()) {
160 
161  const JMultiMapGetTransformer<NUMBER_OF_DIMENSIONS - 1, value_type> get(*(this->transformer), array);
162  const JMultiMapPutTransformer<NUMBER_OF_DIMENSIONS - 1, value_type> put(*(this->transformer), array);
163 
164  f1.transform(get);
165 
166  for (typename function_type::iterator j = f1.begin(); j != f1.end(); ++j) {
167 
169 
170  j->getY() += get_value(input.evaluate(buffer.data()));
171  }
172 
173  f1.transform(put);
174  f1.compile();
175  }
176  }
177  }
Auxiliary class to convert JMultiMapTransformer to JCollectionElementTransformer. ...
JArray< NUMBER_OF_DIMENSIONS, argument_type > buffer
Auxiliary class to convert JMultiMapTransformer to JCollectionElementTransformer. ...
int j
Definition: JPolint.hh:666
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:282
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 187 of file JTransformableMultiFunction.hh.

188  {
189  return this->evaluate(this->buffer.set(args...).data());
190  }
JArray & set(const Args &...args)
Set array.
Definition: JArray.hh:197
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:282
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 199 of file JTransformableMultiFunction.hh.

200  {
201  for (int i = 0; i != NUMBER_OF_DIMENSIONS; ++i) {
202  this->buffer[i] = pX[i];
203  }
204 
205  this->buffer[NUMBER_OF_DIMENSIONS - 1] = transformer->putXn(this->buffer, this->buffer[NUMBER_OF_DIMENSIONS - 1]);
206 
207  const result_type y = multifunction_type::evaluate(this->buffer.data());
208  const double W = transformer->getWeight(this->buffer);
209 
211  }
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:282
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 219 of file JTransformableMultiFunction.hh.

220  {
221  for (super_iterator i = this->super_begin(); i != this->super_end(); ++i) {
222 
223  const array_type array = (*i).getKey();
224  function_type& function = (*i).getValue();
225 
226  const JMultiMapGetTransformer<NUMBER_OF_DIMENSIONS - 1, value_type> get(*(this->transformer), array);
228 
229  function.transform(get);
230  function.transform(put);
231  }
232 
233  this->transformer.reset(transformer.clone());
234  this->compile();
235  }
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 97 of file JMultiFunction.hh.

98  {
99  return static_cast<const JMultiFunction&>(*this);
100  }
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 108 of file JMultiFunction.hh.

109  {
110  return static_cast<JMultiFunction&>(*this);
111  }
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 141 of file JMultiFunction.hh.

142  {
143  this->for_each(compiler);
144 
145  for (super_iterator i = this->super_begin(); i != this->super_end(); ++i) {
146  (*i).getValue().compile();
147  }
148  }
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 supervisor_type supervisor)
inlineinherited

Set the supervisor for handling of exceptions.

Parameters
supervisorsupervisor

Definition at line 156 of file JMultiFunction.hh.

157  {
158  this->for_each(supervisor);
159 
160  for (super_iterator i = this->super_begin(); i != this->super_end(); ++i) {
161  (*i).getValue().setExceptionHandler(supervisor);
162  }
163  }
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 268 of file JTransformableMultiFunction.hh.


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