Jpp  17.3.0-rc.2
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Functions
JPolynome5D.cc File Reference

Example program to test multi-dimensional interpolation. More...

#include <string>
#include <iostream>
#include <iomanip>
#include "TRandom3.h"
#include "JTools/JMapList.hh"
#include "JTools/JFunction1D_t.hh"
#include "JTools/JFunctionalMap_t.hh"
#include "JTools/JMultiFunction.hh"
#include "JTools/JQuantile.hh"
#include "Jeep/JTimer.hh"
#include "Jeep/JParser.hh"
#include "Jeep/JMessage.hh"

Go to the source code of this file.

Functions

double f5 (const double x0, const double x1, const double x2, const double x3, const double x4)
 5D function. More...
 
int main (int argc, char **argv)
 

Detailed Description

Example program to test multi-dimensional interpolation.

Author
mdejong

Definition in file JPolynome5D.cc.

Function Documentation

double f5 ( const double  x0,
const double  x1,
const double  x2,
const double  x3,
const double  x4 
)
inline

5D function.

Definition at line 22 of file JPolynome5D.cc.

27 {
28  static const double a = 1.0;
29  static const double b = 1.0;
30  static const double c = 1.0;
31 
32  return
33  x0 * (a + x0 * (b + c*x0)) *
34  x1 * (a + x1 * (b + c*x1)) *
35  x2 * (a + x2 * (b + c*x2)) *
36  x3 * (a + x3 * (b + c*x3)) *
37  x4 * (a + x4 * (b + c*x4));
38 }
then JCalibrateToT a
Definition: JTuneHV.sh:116
$WORKDIR ev_configure_dqsimulator txt echo process $DQ_SIMULATOR $i $SOURCE_HOST[$index] csh c(setenv ROOTSYS $ROOTSYS &&source $JPP_DIR/setenv.csh $JPP_DIR &&($DQ_SIMULATOR\-u\$NAME\$\-H\$SERVER\$\-M\$LOGGER\$\-d $DEBUG</dev/null > &/dev/null &))'
int main ( int  argc,
char **  argv 
)

Definition at line 46 of file JPolynome5D.cc.

47 {
48  using namespace std;
49 
50  int numberOfEvents;
51  int numberOfBins;
52  double precision;
53  int debug;
54 
55  try {
56 
57  JParser<> zap("Example program to test multi-dimensional interpolation.");
58 
59  zap['n'] = make_field(numberOfEvents) = 1000;
60  zap['N'] = make_field(numberOfBins) = 11;
61  zap['e'] = make_field(precision) = 1.0e-14;
62  zap['d'] = make_field(debug) = 3;
63 
64  zap(argc, argv);
65  }
66  catch(const exception &error) {
67  FATAL(error.what() << endl);
68  }
69 
70 
71  using namespace JPP;
72 
73 
74  const double xmin = -1.0;
75  const double xmax = +1.0;
76  const double dx = (xmax - xmin) / (numberOfBins - 1);
77 
78 
79  typedef JGridPolint3Function1D_t JFunction1D_t;
80 
81  typedef JMAPLIST<JPolint3FunctionalGridMap,
82  JPolint3FunctionalGridMap,
83  JPolint3FunctionalGridMap,
84  JPolint3FunctionalGridMap>::maplist JMaplist_t;
85 
86  typedef JMultiFunction<JFunction1D_t, JMaplist_t> JMultiFunction_t;
87 
88 
89  JMultiFunction_t g5;
90 
91 
92  for (double x0 = xmin; x0 <= xmax + 0.5*dx; x0 += dx) {
93  for (double x1 = xmin; x1 <= xmax + 0.5*dx; x1 += dx) {
94  for (double x2 = xmin; x2 <= xmax + 0.5*dx; x2 += dx) {
95  for (double x3 = xmin; x3 <= xmax + 0.5*dx; x3 += dx) {
96  for (double x4 = xmin; x4 <= xmax + 0.5*dx; x4 += dx) {
97  g5[x0][x1][x2][x3][x4] = f5(x0, x1, x2, x3, x4);
98  }
99  }
100  }
101  }
102  }
103 
104  g5.compile();
105  g5.setExceptionHandler(new JFunction1D_t::JDefaultResult(JMATH::zero));
106 
107 
108  ASSERT(numberOfEvents > 0);
109 
110  JTimer timer;
111 
112  JQuantile Q;
113 
114  for (int i = 0; i != numberOfEvents; ++i) {
115 
116  const double x0 = gRandom->Uniform(xmin, xmax);
117  const double x1 = gRandom->Uniform(xmin, xmax);
118  const double x2 = gRandom->Uniform(xmin, xmax);
119  const double x3 = gRandom->Uniform(xmin, xmax);
120  const double x4 = gRandom->Uniform(xmin, xmax);
121 
122  const double v = f5(x0,x1,x2,x3,x4);
123 
124  timer.start();
125 
126  const double w = g5(x0,x1,x2,x3,x4);
127 
128  timer.stop();
129 
130  Q.put(v - w);
131  }
132 
133  if (debug >- debug_t) {
134 
135  Q.print(cout);
136 
137  timer.print(cout, 1.0 / numberOfEvents);
138  }
139 
140  ASSERT(Q.getMean() <= precision);
141  ASSERT(Q.getSTDev() <= precision);
142 
143  return 0;
144 }
const double xmax
Definition: JQuadrature.cc:24
Utility class to parse command line options.
Definition: JParser.hh:1517
data_type w[N+1][M+1]
Definition: JPolint.hh:778
Q(UTCMax_s-UTCMin_s)-livetime_s
debug
Definition: JMessage.hh:29
static const JZero zero
Function object to assign zero value.
Definition: JZero.hh:105
#define ASSERT(A,...)
Assert macro.
Definition: JMessage.hh:90
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:1993
#define FATAL(A)
Definition: JMessage.hh:67
const double xmin
Definition: JQuadrature.cc:23
double f5(const double x0, const double x1, const double x2, const double x3, const double x4)
5D function.
data_type v[N+1][M+1]
Definition: JPolint.hh:777
int numberOfBins
number of bins for average CDF integral of optical module
Definition: JSirene.cc:69
int debug
debug level