Jpp test-rotations-new
the software that should make you happy
Loading...
Searching...
No Matches
JQuantiles.cc File Reference

Example program to test JTOOLS::JQuantiles calculation of a function. More...

#include <string>
#include <iostream>
#include <iomanip>
#include <cmath>
#include "TMath.h"
#include "JTools/JCollection.hh"
#include "JTools/JGrid.hh"
#include "JTools/JQuantiles.hh"
#include "JTools/JFunction1D_t.hh"
#include "Jeep/JPrint.hh"
#include "Jeep/JParser.hh"
#include "Jeep/JMessage.hh"

Go to the source code of this file.

Functions

Double_t g1 (const Double_t x)
 Function.
 
Double_t G1 (const Double_t x)
 Integral of method g1.
 
int main (int argc, char **argv)
 

Detailed Description

Example program to test JTOOLS::JQuantiles calculation of a function.

Author
mdejong

Definition in file JQuantiles.cc.

Function Documentation

◆ g1()

Double_t g1 ( const Double_t x)
inline

Function.

Parameters
x
Returns
function value

Definition at line 25 of file JQuantiles.cc.

26{
27 return TMath::Gaus(x, 0.0, 1.0, kTRUE);
28}

◆ G1()

Double_t G1 ( const Double_t x)
inline

Integral of method g1.

Parameters
x
Returns
integral value

Definition at line 37 of file JQuantiles.cc.

38{
39 return 0.5 * (1.0 + TMath::Erf(sqrt(0.5)*x));
40}

◆ main()

int main ( int argc,
char ** argv )

Definition at line 48 of file JQuantiles.cc.

49{
50 using namespace std;
51
52 int numberOfBins;
53 double Q;
54 double precision;
55 int debug;
56
57 try {
58
59 JParser<> zap("Example program to test quantiles calculation of a function.");
60
61 zap['N'] = make_field(numberOfBins) = 13;
62 zap['Q'] = make_field(Q) = 0.5;
63 zap['e'] = make_field(precision) = 1.0e-3;
64 zap['d'] = make_field(debug) = 3;
65
66 zap(argc, argv);
67 }
68 catch(const exception &error) {
69 FATAL(error.what() << endl);
70 }
71
72 if (numberOfBins < 2) {
73 FATAL("Fatal error: number of bins " << numberOfBins << endl);
74 }
75
76 if (Q < 0.0 || Q > 1.0) {
77 FATAL("Fatal error: quantile " << Q << endl);
78 }
79
80 using namespace JPP;
81
82 const Double_t xmin = -5.0;
83 const Double_t xmax = +5.0;
84
85 JQuantiles quantiles(make_grid(numberOfBins, xmin, xmax), g1, Q);
86
87 NOTICE("quantity " << setw(10) << "calculated" << " / " << setw(10) << "true" << endl);
88 NOTICE("X " << FIXED(10,6) << quantiles.getX() << " / " << FIXED(10,6) << 0.0 << endl);
89 NOTICE("FWHM " << FIXED(10,6) << quantiles.getFWHM() << " / " << FIXED(10,6) << 2.0*sqrt(2.0*log(2.0)) << endl);
90 NOTICE("integral " << FIXED(10,6) << quantiles.getIntegral() << " / " << FIXED(10,6) << G1(xmax) - G1(xmin) << endl);
91 NOTICE("quantile " << FIXED(10,6) << (G1(quantiles.getUpperLimit()) -
92 G1(quantiles.getLowerLimit())) << " / " << FIXED(10,6) << Q << endl);
93
94 ASSERT(fabs(quantiles.getX() - 0.0) < precision);
95 ASSERT(fabs(quantiles.getFWHM() - 2.0*sqrt(2.0*log(2.0))) < precision);
96 ASSERT(fabs(quantiles.getIntegral() - (G1(xmax) - G1(xmin))) < precision);
97 ASSERT(fabs((G1(quantiles.getUpperLimit()) -
98 G1(quantiles.getLowerLimit())) - Q) < precision);
99}
#define ASSERT(A,...)
Assert macro.
Definition JMessage.hh:90
#define NOTICE(A)
Definition JMessage.hh:64
#define FATAL(A)
Definition JMessage.hh:67
int debug
debug level
Definition JSirene.cc:72
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition JParser.hh:2142
Double_t g1(const Double_t x)
Function.
Definition JQuantiles.cc:25
Double_t G1(const Double_t x)
Integral of method g1.
Definition JQuantiles.cc:37
int numberOfBins
number of bins for average CDF integral of optical module
Definition JSirene.cc:73
Utility class to parse command line options.
Definition JParser.hh:1698
Quantile calculator for a given function.
const double xmax
const double xmin
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
JGrid< JAbscissa_t > make_grid(const int nx, const JAbscissa_t Xmin, const JAbscissa_t Xmax)
Helper method for JGrid.
Definition JGrid.hh:209
Auxiliary data structure for floating point format specification.
Definition JManip.hh:448