70{
72
73 string inputFile;
75 int numberOfEvents;
78
79 try {
80
81 JParser<> zap(
"Example program to test conditional probability density function.");
82
88
89 zap(argc, argv);
90 }
91 catch(const exception &error) {
92 FATAL(error.what() << endl);
93 }
94
95
96 if (numberOfEvents <= 0) {
97 FATAL(
"No events." << endl);
98 }
99
101
102
103 const double xmin = -10.0;
104 const double xmax = +10.0;
106
107
109
114
116
118
119 for (
double x0 = xmin; x0 <= xmax + 0.5*
dx; x0 +=
dx) {
120 for (
double x1 = xmin; x1 <= xmax + 0.5*
dx; x1 +=
dx) {
121 for (JGaussHermite::const_iterator x2 = bounds.begin(); x2 != bounds.end(); ++x2) {
122 for (JGaussHermite::const_iterator
x3 = bounds.begin();
x3 != bounds.end(); ++
x3) {
123 histogram[x0][x1][x0 + x2->getX()][x1 +
x3->getX()] = 0.0;
124 }
125 }
126 }
127 }
128
129
130
131 JTimer timer(
"histogram");
132
133 for (int i = 0; i != numberOfEvents; ++i) {
134
135 if (i%1000 == 0) {
137 }
138
139 const double x0 =
gRandom->Uniform(xmin, xmax);
140 const double x1 =
gRandom->Uniform(xmin, xmax);
141 const double x2 = x0 +
gRandom->Gaus(0.0, 1.0);
142 const double x3 = x1 +
gRandom->Gaus(0.0, 1.0);
143 const double w = 1.0;
144
145 timer.start();
146
148
149 timer.stop();
150 }
152
153 if (
debug >= status_t) {
154 timer.print(
cout,
true, micro_t);
155 }
156
157 try {
158
160
162
164 }
167 }
168 }
169
170
171 if (inputFile != "") {
172
175
179
181
182 try {
183
184 NOTICE(
"loading input to file " << inputFile <<
"... " << flush);
185
186 JLANG::load<JIO::JFileStreamReader>(inputFile.c_str(),
histogram);
187
189 }
192 }
193
194
197
201
202
204
205
206
207
209
210 for (int i = 0; i != numberOfEvents; ++i) {
211
212 const double x0 =
gRandom->Uniform(xmin, xmax);
213 const double x1 =
gRandom->Uniform(xmin, xmax);
214 const double x2 = x0 +
gRandom->Gaus(0.0, 1.0);
215 const double x3 = x1 +
gRandom->Gaus(0.0, 1.0);
216
217 try {
218
219 const double u =
g4 (x0, x1, x2,
x3);
220 const double v = pdf(x0, x1, x2,
x3);
221
223 }
224 catch(const std::exception& error) {}
225 }
226
227
229
230 for (JMultiFunction_t::super_const_iterator i = pdf.super_begin(); i != pdf.super_end(); ++i) {
232 }
233
234 cout <<
"normalisation "
237 cout <<
"efficiency "
239
242 }
243}
#define DEBUG(A)
Message macros.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
int numberOfBins
number of bins for average CDF integral of optical module
Auxiliary class for CPU timing and usage.
virtual const char * what() const override
Get error message.
Template definition of a multi-dimensional oscillation probability interpolation table.
Utility class to parse command line options.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Auxiliary data structure for floating point format specification.
Auxiliary data structure for floating point format specification.