19void tprofile2polyRealistic(
Int_t numEvents=100000)
23 TCanvas *
c2 =
new TCanvas(
"c2",
"Merge Individual moving charge plots", 800, 400);
25 c1->Divide(NUM_LS, 3);
44 for (
float i = minx; i < maxx; i += binsz) {
45 for (
float j = miny; j < maxy; j += binsz) {
46 tot_merge->AddBin(i, j, i + binsz, j + binsz);
47 for (
int l = 0;
l < NUM_LS; ++
l) {
48 tot_avg_ls[
l].AddBin(i, j, i + binsz, j + binsz);
58 dir.
Append(
"/hist/data/tprofile2poly_tutorial.data");
59 infile.open(dir.
Data());
63 std::cerr << dir.
Data() << std::endl;
64 std::cerr <<
"Error code: " << std::strerror(errno) << std::endl;
67 std::cout <<
" WE ARE AFTER LOADING DATA " << std::endl;
69 std::vector<std::pair<Double_t, Double_t>> allCoords;
71 while (infile >>
a >>
b)
72 allCoords.emplace_back(
a,
b);
74 if (allCoords.size() % 3 != 0) {
75 cout <<
"[ERROR] Bad file" << endl;
80 for (
int i = 0; i < allCoords.size(); i += 3) {
81 x[0] = allCoords[i + 0].first;
82 y[0] = allCoords[i + 0].second;
83 x[1] = allCoords[i + 1].first;
84 y[1] = allCoords[i + 1].second;
85 x[2] = allCoords[i + 2].first;
86 y[2] = allCoords[i + 2].second;
88 det_avg_merge->AddBin(3,
x,
y);
89 det_err_merge->AddBin(3,
x,
y);
91 for (
int l = 0;
l < NUM_LS; ++
l) {
92 det_avg_ls[
l].AddBin(3,
x,
y);
93 det_err_ls[
l].AddBin(3,
x,
y);
97 std::cout <<
" WE ARE AFTER ADDING BINS " << std::endl;
108 for (
int i = 0; i <= NUM_LS-1; ++i) {
109 std::cout <<
"[In Progress] LumiSection " << i << std::endl;
110 for (
int j = 0; j < numEvents; ++j) {
125 if (r2 > 3. - yoffset1 && r2 < 8. - yoffset1 &&
126 r1 > 1. + xoffset1 && r1 < 5. + xoffset1 ) {
130 if (r2 > -10 + yoffset2 && r2 < -8 + yoffset2 &&
131 r1 > -6 + xoffset2 && r1 < 8 + xoffset2 ) {
135 tot_avg_ls[i].Fill(r1, r2, val);
136 det_avg_ls[i].Fill(r1, r2, val);
137 det_err_ls[i].Fill(r1, r2, val);
143 title =
"Global View: Avg in LS " + std::to_string(i);
144 tot_avg_ls[i].SetTitle(title.c_str());
145 tot_avg_ls[i].SetStats(
false);
146 tot_avg_ls[i].Draw(
"COLZ");
149 c1->cd((i+1)+NUM_LS);
150 title =
"Detector View: Avg in LS " + std::to_string(i);
151 det_avg_ls[i].SetTitle(title.c_str());
152 det_avg_ls[i].SetStats(
false);
153 det_avg_ls[i].Draw(
"COLZ");
156 c1->cd((i+1)+(NUM_LS*2));
157 title =
"Detector View: Error in LS " + std::to_string(i);
158 det_err_ls[i].SetTitle(title.c_str());
159 det_err_ls[i].SetStats(
false);
160 det_err_ls[i].SetContentToError();
161 det_err_ls[i].Draw(
"COLZ");
165 std::vector<TProfile2Poly*> tot_avg_v;
166 std::vector<TProfile2Poly*> det_avg_v;
167 for (
int t = 0; t < NUM_LS; t++){
168 tot_avg_v.push_back(&tot_avg_ls[t]);
169 det_avg_v.push_back(&det_avg_ls[t]);
172 std::cout <<
"[In Progress] Merging" << std::endl;
174 tot_merge->Merge(tot_avg_v);
176 tot_merge->SetTitle(
"Total average merge");
177 tot_merge->Draw(
"COLZ");
179 det_avg_merge->Merge(det_avg_v);
181 det_avg_merge->SetTitle(
"Detector average merge");
182 det_avg_merge->SetContentToAverage();
183 det_avg_merge->Draw(
"COLZ");
185 det_err_merge->Merge(det_avg_v);
187 det_err_merge->SetTitle(
"Detector error merge");
188 det_err_merge->SetContentToError();
189 det_err_merge->Draw(
"COLZ");
2D Histogram with Polygonal Bins
2D Profile Histogram with Polygonal Bins.
This is the base class for the ROOT Random number generators.
virtual Double_t Gaus(Double_t mean=0, Double_t sigma=1)
Samples a random number from the standard Normal (Gaussian) Distribution with the given mean and sigm...
const char * Data() const
TString & Append(const char *cs)