Example application to display DIS of muon.
26{
29
31 int numberOfEvents;
32 ULong_t seed;
34
35 try {
36
37 JParser<> zap(
"Example application to display DIS of muon.");
38
43
44 zap(argc, argv);
45 }
46 catch(const exception &error) {
47 FATAL(error.what() << endl);
48 }
49
50 gRandom->SetSeed(seed);
51
52
54
55
56 TH1D h0("sigma", NULL, 1000, -1.0, 9.0);
57
58 JManager<double, TH1D> HA(new TH1D("v [% GeV]", NULL, 1000, -5.0, 0.0));
59 JManager<double, TH1D> H1(new TH1D("ran[% GeV]", NULL, 1000, -5.0, 0.0));
60 JManager<double, TH1D> HB(new TH1D("RMS[% GeV]", NULL, 1000, -5.0, 0.0));
61
62 H1->Sumw2();
63
65 { 1.0e3, 0.6 },
66 { 1.0e4, 0.5 } };
67
68
69 for (int i = 1; i <= h0.GetNbinsX(); ++i) {
70
71 const double x = h0.GetBinCenter(i);
72 const double E =
pow(10.0, x);
74
75 h0.SetBinContent(i, y * 1.0e+30);
76 }
77
78 for (const auto& setup : setups) {
79
80 const double E = setup.first;
81
82 TH1D* ha = HA[E];
83 TH1D* h1 = H1[E];
84 TH1D* hb = HB[E];
85
86 for (int i = 1; i <= ha->GetNbinsX(); ++i) {
87
88 const double x = ha->GetBinCenter(i);
89 const double v =
pow(10.0, x);
90
91 double y = dis.
getP(E, v);
92
93 if (numberOfEvents == 0) {
94 y *= setup.second / dis.
getP(E, dis.
getV(E));
95 }
96
97 ha->SetBinContent(i, y);
98 }
99
100 if (numberOfEvents != 0) {
101
102 for (int i = 0; i != numberOfEvents; ++i) {
103
104 const double Es = dis.
getE(E);
105 const double v = Es/E;
106
107 h1->Fill(log10(v));
108 }
109
110 for (int i = 1; i <= h1->GetNbinsX(); ++i) {
111
112 const double y = h1->GetBinContent(i);
113 const double z = h1->GetBinError (i);
114
115 const double xmin = h1->GetXaxis()->GetBinLowEdge(i);
116 const double xmax = h1->GetXaxis()->GetBinUpEdge (i);
117
118 const double w = (
pow(10.0,xmax) -
pow(10.0,xmin)) * numberOfEvents;
119
120 h1->SetBinContent(i, y / w);
121 h1->SetBinError (i, z / w);
122 }
123 }
124
125 for (int i = 1; i <= hb->GetNbinsX(); ++i) {
126
127 const double x = hb->GetBinCenter(i);
128 const double v =
pow(10.0, x);
130
131 hb->SetBinContent(i, y);
132 }
133 }
134
135
137
138 out << h0 << HA << H1 << HB;
139
140 out.Write();
141 out.Close();
142}
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Utility class to parse command line options.
Deep-inelastic muon-nucleon scattering.
double getCrossSection(const double E) const
Get cross section.
double getP(const double E, const double v) const
Get probability of given energy fraction.
double getThetaRMS(const double E, const double v) const
Get RMS of scattering angle.
double getV(const double E) const
Get breakpoint.
double getE(const double E) const
Get shower energy.
T pow(const T &x, const double y)
Power .
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).