36 JRange<double> range_Deg;
41 JParser<> zap(
"Example program to test JOmega2D class.");
45 zap[
'G'] =
make_field(range_Deg) = JRange<double>(0.5, 10.5);
50 catch(
const exception &error) {
51 FATAL(error.what() << endl);
57 TH1D h0(
"h0[grid", NULL,
N, range_Deg.getLowerLimit(), range_Deg.getUpperLimit());
58 TH1D
h1(
"h1[RMS]", NULL,
N, range_Deg.getLowerLimit(), range_Deg.getUpperLimit());
59 TH1D h2(
"h2[deviation]", NULL,
N, range_Deg.getLowerLimit(), range_Deg.getUpperLimit());
65 for (
int i = 1; i <= h0.GetNbinsX(); ++i) {
67 const Double_t x = h0.GetBinCenter(i);
69 omega .push_back(JOmega2D(x *
PI/180.0));
70 quantile.push_back(JQuantile());
74 for (
int i = 0; i != numberOfEvents; ++i) {
76 STATUS(
"event: " << setw(10) << i <<
'\r');
DEBUG(endl);
78 const double phi = gRandom->Uniform(0.0, 2*
PI);
80 const JAngle2D angle(phi);
82 for (
size_t j = 0;
j != omega.size(); ++
j) {
84 const int pos = omega[
j].find(angle);
85 const double dot = angle.getDot(omega[
j][pos]);
87 quantile[
j].put(acos(dot) * 180.0/
PI);
93 for (
int i = 1; i <= h0.GetNbinsX(); ++i) {
94 h0.SetBinContent(i, omega [i-1].size());
95 h1.SetBinContent(i, quantile[i-1].getSTDev());
96 h2.SetBinContent(i, quantile[i-1].getDeviation());
103 out << h0 <<
h1 << h2;
109 for (
int i = 1; i <= h2.GetNbinsX(); ++i) {
111 const Double_t x = h2.GetBinCenter (i);
112 const Double_t y = h2.GetBinContent(i);
114 NOTICE(
"Grid test " << x <<
" [deg]: " << y <<
" [deg]." << endl);
Utility class to parse command line options.
then for HISTOGRAM in h0 h1
#define ASSERT(A,...)
Assert macro.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
static const double PI
Mathematical constants.
then usage $script[input file[working directory[option]]] nWhere option can be N
#define DEBUG(A)
Message macros.