23int main(
int argc,
char **argv)
37 JParser<> zap(
"Example program to test quantile calculation.");
48 catch(
const exception &error) {
49 FATAL(error.what() << endl);
52 if (numberOfEvents < 2) {
53 FATAL(
"Fatal error: number of events " << numberOfEvents << endl);
56 gRandom->SetSeed(seed);
63 for (
int i = 0; i != numberOfEvents; ++i) {
65 double x = gRandom->Uniform(-1.0e6, +1.0e6);
75 for (
int i = 0; i != 100; ++i) {
77 std::shuffle(buffer.begin(), buffer.end(), g);
79 DEBUG(
"buffer[0] " <<
FIXED(15,6) << buffer[0] << endl);
83 for (
const double x : buffer) {
95 for (
int i = 0; i != numberOfEvents; ++i) {
96 Q.
put(gRandom->Gaus(x, sigma));
99 NOTICE(
"quantity " <<
CENTER(10) <<
"calculated" <<
" | " <<
CENTER(10) <<
"true" << endl);
103 ASSERT(numberOfEvents > 0,
"Test number of events.");
110 for (
int i = 0; i != numberOfEvents; ++i) {
111 Q.
put(gRandom->Uniform(0.0, 1.0));
114 for (
const double x : { 0.1, 0.5, 0.9}) {
120 ASSERT(fabs(Q.
getQuantile(x, JQuantile::forward_t) - ( x )) <= precision,
"Test forward quantile ");
121 ASSERT(fabs(Q.
getQuantile(x, JQuantile::symmetric_t) - ( x )) <= precision,
"Test symmetric quantile ");
122 ASSERT(fabs(Q.
getQuantile(x, JQuantile::backward_t) - (1.0 - x)) <= precision,
"Test backward quantile ");