Jpp test-rotations-old
the software that should make you happy
Loading...
Searching...
No Matches
JDIS.cc
Go to the documentation of this file.
1#include <string>
2#include <iostream>
3#include <iomanip>
4#include <map>
5
6#include "TROOT.h"
7#include "TFile.h"
8#include "TH1D.h"
9#include "TRandom3.h"
10
11#include "JPhysics/JDIS.hh"
12
13#include "JROOT/JManager.hh"
14#include "JROOT/JRootToolkit.hh"
15
16#include "Jeep/JParser.hh"
17#include "Jeep/JMessage.hh"
18
19
20/**
21 * Example application to display DIS of muon.
22 *
23 * \author mdejong
24 */
25int main(int argc, char **argv)
26{
27 using namespace std;
28 using namespace JPP;
29
30 string outputFile;
31 int numberOfEvents;
32 ULong_t seed;
33 int debug;
34
35 try {
36
37 JParser<> zap("Example application to display DIS of muon.");
38
39 zap['o'] = make_field(outputFile) = "dis.root";
40 zap['n'] = make_field(numberOfEvents) = 0;
41 zap['S'] = make_field(seed) = 0;
42 zap['d'] = make_field(debug) = 0;
43
44 zap(argc, argv);
45 }
46 catch(const exception &error) {
47 FATAL(error.what() << endl);
48 }
49
50 gRandom->SetSeed(seed);
51
52
53 const JDIS dis;
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
64 const map<double, double> setups = { { 1.0e2, 0.7 },
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);
73 const double y = dis.getCrossSection(E);
74
75 h0.SetBinContent(i, y * 1.0e+30); // ub
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);
129 const double y = dis.getThetaRMS(E, v);
130
131 hb->SetBinContent(i, y);
132 }
133 }
134
135
136 TFile out(outputFile.c_str(), "recreate");
137
138 out << h0 << HA << H1 << HB;
139
140 out.Write();
141 out.Close();
142}
string outputFile
int main(int argc, char **argv)
Example application to display DIS of muon.
Definition JDIS.cc:25
Deep-inelastic muon-nucleon scattering.
Dynamic ROOT object management.
General purpose messaging.
#define FATAL(A)
Definition JMessage.hh:67
int debug
debug level
Definition JSirene.cc:72
Utility class to parse command line options.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition JParser.hh:2142
Utility class to parse command line options.
Definition JParser.hh:1698
Deep-inelastic muon-nucleon scattering.
Definition JDIS.hh:31
double getCrossSection(const double E) const
Get cross section.
Definition JDIS.hh:46
double getP(const double E, const double v) const
Get probability of given energy fraction.
Definition JDIS.hh:64
double getThetaRMS(const double E, const double v) const
Get RMS of scattering angle.
Definition JDIS.hh:93
double getV(const double E) const
Get breakpoint.
Definition JDIS.hh:110
double getE(const double E) const
Get shower energy.
Definition JDIS.hh:78
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).