57 JParser<> zap(
"Example program to create 2D function interpolator from multi-dimensional interpolator.");
66 catch(
const exception &error) {
67 FATAL(error.what() << endl);
70 ASSERT(numberOfEvents > 0);
72 const double xmin = -1.0;
73 const double xmax = +1.0;
77 typedef JFunction1D_t::abscissa_type abscissa_type;
78 typedef JFunction1D_t::value_type value_type;
97 for (
double x0 = xmin; x0 < xmax + 0.5*dx; x0 += dx) {
98 for (
double x1 = xmin; x1 < xmax + 0.5*dx; x1 += dx) {
99 for (
double x2 = xmin; x2 < xmax + 0.5*dx; x2 += dx) {
100 for (
double x3 = xmin; x3 < xmax + 0.5*dx; x3 += dx) {
101 for (
double x4 = xmin; x4 < xmax + 0.5*dx; x4 += dx) {
102 g5[x0][x1][x2][x3][x4] =
f5(x0,x1,x2,x3,x4);
103 h5[x0][x1][x2][x3][x4] =
f5(x0,x1,x2,x3,x4);
114 const double x0 = +0.15;
115 const double x1 = -0.25;
116 const double x2 = 0.25;
120 JTimer timer(
"3D interpolator");
124 for (
int i = 0; i != 100; ++i) {
125 copy(h5(x0,x1,x2), g2);
129 timer.print(cout, 1.0/100,
micro_t);
133 JTimer t2(
"2D interpolator");
134 JTimer t5(
"5D interpolator");
149 for (
int i = 0; i != numberOfEvents; ++i) {
151 for (
int __i = 0; __i !=
N; ++__i) {
153 const double x3 = gRandom->Uniform(xmin, xmax);
154 const double x4 = gRandom->Uniform(xmin, xmax);
158 z[__i] =
f5(x0,x1,x2,x3,x4);
163 for (
int __i = 0; __i !=
N; ++__i) {
164 v[__i] = g2(
x[__i], y[__i]);
171 for (
int __i = 0; __i !=
N; ++__i) {
172 w[__i] = g5(x0,x1,x2,
x[__i],y[__i]);
177 for (
int __i = 0; __i !=
N; ++__i) {
178 Q2.put(
v[__i] - z[__i]);
179 Q5.put(
w[__i] - z[__i]);
186 Q5.print(cout,
false);
188 t2.print(cout, 1.0 / (
N * numberOfEvents),
nano_t);
189 t5.print(cout, 1.0 / (
N * numberOfEvents),
nano_t);
192 ASSERT(fabs(Q2.getMean() - Q5.getMean()) <= precision);
193 ASSERT(fabs(Q2.getSTDev() - Q5.getSTDev()) <= precision);
Utility class to parse command line options.
then JShowerPostfit f $INPUT_FILE o $OUTPUT_FILE N
#define ASSERT(A,...)
Assert macro.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Auxiliary class for CPU timing and usage.
double f5(const double x0, const double x1, const double x2, const double x3, const double x4)
5D function.
void copy(const Head &from, JHead &to)
Copy header from from to to.
int numberOfBins
number of bins for average CDF integral of optical module