Jpp 19.3.0-rc.1
the software that should make you happy
Loading...
Searching...
No Matches
JPolynome3D+2D.cc
Go to the documentation of this file.
1
2#include <string>
3#include <iostream>
4#include <iomanip>
5
6#include "TRandom3.h"
7
8#include "JTools/JMapList.hh"
12#include "JTools/JQuantile.hh"
13
14#include "Jeep/JTimer.hh"
15#include "Jeep/JParser.hh"
16#include "Jeep/JMessage.hh"
17
18
19/**
20 * 5D function.
21 */
22inline double f5(const double x0,
23 const double x1,
24 const double x2,
25 const double x3,
26 const double x4)
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}
39
40
41/**
42 * \file
43 * Example program to test multi-dimensional interpolation with multi-dimensional function objects.
44 * \author mdejong
45 */
46int main(int argc, char **argv)
47{
48 using namespace std;
49
50 int numberOfEvents;
51 int numberOfBins;
52 int debug;
53
54 try {
55
56 JParser<> zap("Example program to test multi-dimensional interpolation with multi-dimensional function objects.");
57
58 zap['n'] = make_field(numberOfEvents) = 1000;
59 zap['N'] = make_field(numberOfBins) = 11;
60 zap['d'] = make_field(debug) = 3;
61
62 zap(argc, argv);
63 }
64 catch(const exception &error) {
65 FATAL(error.what() << endl);
66 }
67
68
69 using namespace JPP;
70
71
72 const double xmin = -1.0;
73 const double xmax = +1.0;
74 const double dx = (xmax - xmin) / (numberOfBins - 1);
75
76
77 typedef JGridPolint3Function1D_t JFunction1D_t;
78
80
83 JPolint3FunctionalGridMap>::maplist JMaplist3D_t;
84
87
88 JFunction5D_t g5;
89
90
91 for (double x0 = xmin; x0 <= xmax + 0.5*dx; x0 += dx) {
92 for (double x1 = xmin; x1 <= xmax + 0.5*dx; x1 += dx) {
93 for (double x2 = xmin; x2 <= xmax + 0.5*dx; x2 += dx) {
94 for (double x3 = xmin; x3 <= xmax + 0.5*dx; x3 += dx) {
95 for (double x4 = xmin; x4 <= xmax + 0.5*dx; x4 += dx) {
96 g5[x0][x1][x2][x3][x4] = f5(x0, x1, x2, x3, x4);
97 }
98 }
99 }
100 }
101 }
102
103 g5.compile();
104 g5.setExceptionHandler(new JFunction1D_t::JDefaultResult(JMATH::zero));
105
106
107 if (numberOfEvents > 0) {
108
109 JTimer timer;
110
111 JQuantile Q;
112
113 for (int i = 0; i != numberOfEvents; ++i) {
114
115 const double x0 = gRandom->Uniform(xmin, xmax);
116 const double x1 = gRandom->Uniform(xmin, xmax);
117 const double x2 = gRandom->Uniform(xmin, xmax);
118 const double x3 = gRandom->Uniform(xmin, xmax);
119 const double x4 = gRandom->Uniform(xmin, xmax);
120
121 const double v = f5(x0,x1,x2,x3,x4);
122
123 timer.start();
124
125 const double w = g5(x0,x1,x2,x3,x4);
126
127 timer.stop();
128
129 Q.put(v - w);
130 }
131
132 Q.print(cout);
133
134 timer.print(cout, 1.0 / numberOfEvents);
135 }
136}
Various implementations of functional maps.
General purpose messaging.
#define FATAL(A)
Definition JMessage.hh:67
int debug
debug level
Definition JSirene.cc:72
Utility class to parse command line options.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition JParser.hh:2142
int main(int argc, char **argv)
double f5(const double x0, const double x1, const double x2, const double x3, const double x4)
5D function.
int numberOfBins
number of bins for average CDF integral of optical module
Definition JSirene.cc:73
Auxiliary class for CPU timing and usage.
Definition JTimer.hh:33
void print(std::ostream &out, const JScale_t scale=milli_t) const
Print timer data.
Definition JTimer.hh:172
void stop()
Stop timer.
Definition JTimer.hh:127
void start()
Start timer.
Definition JTimer.hh:106
Utility class to parse command line options.
Definition JParser.hh:1698
Multidimensional interpolation method.
void compile()
Compilation.
static const JZero zero
Function object to assign zero value.
Definition JZero.hh:105
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Type definition of a 3rd degree polynomial interpolation based on a JGridCollection with result type ...
Auxiliary class for recursive map list generation.
Definition JMapList.hh:109
Map list.
Definition JMapList.hh:25
Type definition of a 3rd degree polynomial interpolation based on a JGridMap implementation.
Auxiliary data structure for running average, standard deviation and quantiles.
Definition JQuantile.hh:46
std::ostream & print(std::ostream &out, bool lpr=true) const
Print quantile.
Definition JQuantile.hh:382
void put(const double x, const double w=1.0)
Put value.
Definition JQuantile.hh:133