Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
InterlopationV4.C
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file InterlopationV4.C
1 #include <cmath>
2 #include <TFile.h>
3 #include <TString.h>
4 #include <TLine.h>
5 #include <TTree.h>
6 #include <TLatex.h>
7 #include <TGraphErrors.h>
8 #include <cassert>
9 #include <iostream>
10 #include <fstream>
11 using namespace std;
12 
13 
14 
15 using std::cout;
16 using std::endl;
17 #endif
18 
20 {
21 
22  gStyle->SetOptFit(0);
23  gStyle->SetOptStat(0);
24 
25  TFile *fin = new TFile("EnergyPosition2.root");
26 
27 //Set Tower Horizontal Lines//
28 double y1 = 90;
29 double y2 = 113;
30 double y3 = 141;
31 double y4 = 166;
32 double y5 = 190;
33 
34 //Set Tower Vertical Lines//
35 
36 double x1 = 204;
37 double x2 = 227.5;
38 double x3 = 248;
39 double x4 = 265;
40 double x5 = 283;
41 
42 
43 
44 int binx;
45 
46 int forward = 2;
47 int backward = 2;
48 
49 
50 int biny;
51 double step = 1;
52 
53 double Xmin = 170;
54 double Xmax = 310.0;
55 
56 double Ymin = 60;
57 double Ymax = 245.0;
58 
59 
60 
61 
62 cout << Ymax << endl;
63 
64 int NumX = (Xmax - Xmin)/step;
65 int NumY = (Ymax - Ymin)/step;
66 
67 const int XBins = NumX;
68 
69 const int YBins = NumY;
70 double x;
71 double y;
72 
73 cout << "XBins = " << XBins << endl;
74 cout << "YBins = " << YBins << endl;
75 
76 
77 double value[XBins][YBins];
78 
79 double finalvalue[XBins][YBins];
80 
81 TH2D *Inter = new TH2D("Inter","",XBins,Xmin,Xmax,YBins,Ymin,Ymax);
82 
83 /*
84 double ylower = 35;
85 double yhigher = 188;
86 double xlower = 178;
87 double xhigher = 301;
88 */
89 int k;
90 
91 int NumberofValue;
92 double Sum;
93 
94 
95 
96 TCanvas *c1 = new TCanvas("c1", "c1",0,0,800,600);
97 
98 c1->cd();
99 
100 EnPo->GetXaxis()->SetTitle("Horizontal Axis (mm)");
101 EnPo->GetYaxis()->SetTitle("Vertical Axis (mm)");
102 
103 EnPo->SetTitle("Energy vs Horizontal and Vertical Positions Before Interpolation - 10 Degree");
104 
105 EnPo->Draw("colz");
106 c1->Update();
107 
108 c1->SaveAs("Before10Degree.png");
109 
110 
111 for(int i = 0; i < XBins; i++)
112 {
113 
114 //x = Xmin + step*i;
115 
116 
117 for(int j = 0; j < YBins; j++)
118 {
119 
120 // TCanvas *c1 = new TCanvas("c1", "c1",0,0,800,600);
121 // y = Ymin + step*j;
122 
123 
124 
125 
126 value[i][j] = EnPo->GetBinContent(i,j);
127 
128 
129 }
130 }
131 
132 //Horizontal Interpolation Begins//
133 
134 for(int i = backward; i < XBins - backward; i++)
135 {
136 
137  for(int j = backward; j < YBins - backward; j++)
138 {
139 
140 //cout << "OK" << endl;
141 
142 NumberofValue = 0;
143 Sum = 0;
144 for(int k = i - backward; k < i + forward +1; k++)
145 {
146 
147  for(int m = j - backward; m < j+backward+1; m++)
148  {
149 
150  if(value[k][m] > 0) NumberofValue = NumberofValue + 1;
151 
152  Sum = Sum + value[k][m];
153 
154  }
155 
156 }
157 
158 cout << "Number of Value = " << NumberofValue << endl;
159 
160 cout << "Sum = " << Sum << endl;
161 
162 if(NumberofValue > 0) finalvalue[i][j] = Sum/NumberofValue;
163 
164 cout << " i = " << i << " j = " << j << endl;
165 
166 cout << "Final Value is " << finalvalue[i][j] << endl;
167 
168 
169 Inter->SetBinContent(i,j,finalvalue[i][j]);
170 
171 
172 }
173 
174 
175 }
176 
177 /*
178 cout << "Horizontal Done" << endl;
179 
180 
181 //Vertical Interpolation Begins//
182 
183 cout << "DONE Value" << endl;
184 
185 for(int i = 1; i < XBins; i++)
186 {
187 
188  for(int j = 1; j < YBins; j++)
189 {
190 
191  cout << "Before Updating: Binx = " << i << " " << "Bin y = " << j << " Value = " << value[i][j] << endl;
192 
193 
194 if (value[i][j] < 6.8 && value[i][j-1] >0 && i < XBins && j < YBins)
195 {
196 
197 
198 k = j;
199 do {
200  k = k + 1;
201 
202 // cout << "k value is = " << k << endl;
203 }
204 while(value[i][k] == 0 && k < YBins);
205 
206 //cout << "neW k " << k << endl;
207 
208 value[i][j] =value[i][j-1] + (value[i][k] - value[i][j-1])/(k+1-j);
209 
210  cout << "After Updating: Binx = " << i << " " << " Bin y = " << j << " Value = " <<value[i][j] << endl;
211 
212 }
213 
214 
215 }
216 
217 
218 }
219 
220 cout << "Vk =" << k << endl;
221 
222 //Vertical Interpolation Ends//
223 
224 cout << "VERTICAL DONE" << endl;
225 
226 */
227 /*
228 for(int i =0; i < XBins; i++)
229 {
230 
231 
232 
233  for(int j = 1; j < YBins; j++)
234 {
235 
236 
237 }
238 
239 
240 }
241 */
242 Inter->GetXaxis()->SetTitle("Horizontal Axis (mm)");
243 Inter->GetYaxis()->SetTitle("Vertical Axis (mm)");
244 Inter->SetTitle("Energy vs Horizontal and Vertical Positions Before Interpolation - 10 Degree");
245 
246  TFile *fout = new TFile("Interpolated2.root","RECREATE");
247 Inter->Write();
248 
249 
250 TCanvas *c22 = new TCanvas("c22", "c22",0,0,800,600);
251 
252 c22->cd();
253 
254 
255 
256 Inter->SetMinimum(4.5);
257 
258 Inter->SetMaximum(9);
259 
260 Inter->Draw("colz");
261 
262 // Horizontal line Tower 1 //
263  TLine *l1 = new TLine(Xmin,y1,Xmax,y1);
264  l1->SetLineWidth(1);
265  l1->Draw("same");
266 
267 
268  TLatex* texCol;
269 texCol= new TLatex(Xmin,y1,"Tower 6");
270  texCol->SetTextAlign(13);
271  texCol->SetTextSize(0.03);
272  texCol->SetTextFont(42);
273  texCol->Draw();
274 
275 
276 // Horizontal line Tower 2 //
277 
278 
279  TLine *l2 = new TLine(Xmin,y2,Xmax,y2);
280  l2->SetLineWidth(1);
281  l2->Draw("same");
282 
283 
284 
285 texCol= new TLatex(Xmin,y2,"Tower 5");
286  texCol->SetTextAlign(13);
287  texCol->SetTextSize(0.03);
288  texCol->SetTextFont(42);
289  texCol->Draw();
290 
291 // Horizontal line Tower 3//
292 
293 
294  TLine *l3 = new TLine(Xmin,y3,Xmax,y3);
295  l3->SetLineWidth(1);
296  l3->Draw("same");
297 
298 
299 
300 texCol= new TLatex(Xmin,y3,"Tower 4");
301  texCol->SetTextAlign(13);
302  texCol->SetTextSize(0.03);
303  texCol->SetTextFont(42);
304  texCol->Draw();
305 
306 
307 
308 // Horizontal line Tower 4 //
309 
310 
311  TLine *l4 = new TLine(Xmin,y4,Xmax,y4);
312  l4->SetLineWidth(1);
313  l4->Draw("same");
314 
315 
316 
317 texCol= new TLatex(Xmin,y4,"Tower 3");
318  texCol->SetTextAlign(13);
319  texCol->SetTextSize(0.03);
320  texCol->SetTextFont(42);
321  texCol->Draw();
322 
323  // Horizontal line Tower 5 //
324 
325 
326  TLine *l4 = new TLine(Xmin,y5,Xmax,y5);
327  l4->SetLineWidth(1);
328  l4->Draw("same");
329 
330 
331 
332 
333 texCol= new TLatex(Xmin,y5,"Tower 2");
334  texCol->SetTextAlign(13);
335  texCol->SetTextSize(0.03);
336  texCol->SetTextFont(42);
337  texCol->Draw();
338 
339 
340  // Horizontal line Tower 6 //
341 
342  TLine *l12 = new TLine(Xmax,Ymax,Xmax,Ymax);
343  l12->SetLineWidth(1);
344  l12->Draw("same");
345 
346 
347  TLatex* texCol;
348 texCol= new TLatex(Xmin,215,"Tower 1");
349  texCol->SetTextAlign(13);
350  texCol->SetTextSize(0.03);
351  texCol->SetTextFont(42);
352  texCol->Draw();
353 
354 
355 
356 
357 
358 // Vertical line Tower 1 //
359  TLine *l6 = new TLine(x1,Ymin,x1,Ymax);
360  l6->SetLineWidth(1);
361  l6->Draw("same");
362 
363 
364  TLatex* texCol;
365 texCol= new TLatex(x1,Ymax,"Tower 6");
366  texCol->SetTextAlign(33);
367  texCol->SetTextSize(0.03);
368  texCol->SetTextFont(42);
369  texCol->Draw();
370 
371 
372 // Horizontal line Tower 2 //
373 
374 
375  TLine *l7 = new TLine(x2,Ymin,x2,Ymax);
376  l7->SetLineWidth(1);
377  l7->Draw("same");
378 
379 
380  TLatex* texCol;
381 texCol= new TLatex(x2,Ymax,"Tower 5");
382  texCol->SetTextAlign(33);
383  texCol->SetTextSize(0.03);
384  texCol->SetTextFont(42);
385  texCol->Draw();
386 
387 // Horizontal line Tower 3//
388 
389 
390  TLine *l8 = new TLine(x3,Ymin,x3,Ymax);
391  l8->SetLineWidth(1);
392  l8->Draw("same");
393 
394 
395  TLatex* texCol;
396 texCol= new TLatex(x3,Ymax,"Tower 4");
397  texCol->SetTextAlign(33);
398  texCol->SetTextSize(0.03);
399  texCol->SetTextFont(42);
400  texCol->Draw();
401 
402 
403 // Horizontal line Tower 4 //
404 
405  TLine *l9 = new TLine(x4,Ymin,x4,Ymax);
406  l9->SetLineWidth(1);
407  l9->Draw("same");
408 
409 
410  TLatex* texCol;
411 texCol= new TLatex(x4,Ymax,"Tower 3");
412  texCol->SetTextAlign(33);
413  texCol->SetTextSize(0.03);
414  texCol->SetTextFont(42);
415  texCol->Draw();
416 
417 
418  // Horizontal line Tower 5 //
419 
420 
421  TLine *l10 = new TLine(x5,Ymin,x5,Ymax);
422  l10->SetLineWidth(1);
423  l10->Draw("same");
424 
425 
426  TLatex* texCol;
427 texCol= new TLatex(x5,Ymax,"Tower 2");
428  texCol->SetTextAlign(33);
429  texCol->SetTextSize(0.03);
430  texCol->SetTextFont(42);
431  texCol->Draw();
432 
433  // Horizontal line Tower 6 //
434 
435  TLine *l11 = new TLine(Xmax,Ymin,Xmax,Ymax);
436  l11->SetLineWidth(1);
437  l11->Draw("same");
438 
439 
440  TLatex* texCol;
441 texCol= new TLatex(Xmax,Ymax,"Tower 1");
442  texCol->SetTextAlign(33);
443  texCol->SetTextSize(0.03);
444  texCol->SetTextFont(42);
445  texCol->Draw();
446 
447 
448 
449 c22->Update();
450 
451 c22->SaveAs("Interpolation10Degree.png");
452 
453 }