36 JRange<double> range_Deg;
41 JParser<> zap(
"Example program to test JOmega3D 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(JOmega3D(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 theta = gRandom->Uniform(0.0,
PI);
79 const double phi = gRandom->Uniform(0.0, 2*
PI);
81 const JAngle3D angle(theta, phi);
83 for (
size_t j = 0;
j != omega.size(); ++
j) {
85 const int pos = omega[
j].find(angle);
86 const double dot = angle.getDot(omega[
j][pos]);
88 quantile[
j].put(acos(dot) * 180.0/
PI);
94 for (
int i = 1; i <= h0.GetNbinsX(); ++i) {
95 h0.SetBinContent(i, omega [i-1].size());
96 h1.SetBinContent(i, quantile[i-1].getSTDev());
97 h2.SetBinContent(i, quantile[i-1].getDeviation());
104 out << h0 <<
h1 << h2;
110 for (
int i = 1; i <= h2.GetNbinsX(); ++i) {
112 const Double_t x = h2.GetBinCenter (i);
113 const Double_t y = h2.GetBinContent(i);
115 NOTICE(
"Grid test " << x <<
" [deg]: " << y <<
" [deg]." << endl);
Utility class to parse command line options.
then JShowerPostfit f $INPUT_FILE o $OUTPUT_FILE N
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 >< detector_file > fi set_variable OUTPUT_DIR set_variable SELECTOR JDAQTimesliceL1 set_variable DEBUG case set_variable DEBUG