]>
Commit | Line | Data |
---|---|---|
bf000c32 | 1 | //____________________________________________________________________ |
a1f80595 | 2 | // |
3 | // $Id$ | |
4 | // | |
5 | // Script that contains a class to draw hits, using the | |
6 | // AliFMDInputHits class in the util library. | |
7 | // | |
8 | // It draws the energy loss versus the p/(mq^2). It can be overlayed | |
9 | // with the Bethe-Bloc curve to show how the simulation behaves | |
10 | // relative to the expected. | |
11 | // | |
12 | // Use the script `Compile.C' to compile this class using ACLic. | |
13 | // | |
14 | #include <TH2D.h> | |
15 | #include <AliFMDHit.h> | |
16 | #include <AliFMDInput.h> | |
17 | #include <iostream> | |
18 | #include <TStyle.h> | |
9aa0bdc4 | 19 | #include <TArrayF.h> |
8f6ee336 | 20 | #include <TParticle.h> |
a9579262 | 21 | #include <TCanvas.h> |
22 | #include <TGraphErrors.h> | |
2b893216 | 23 | #include <TDatabasePDG.h> |
24 | #include <TParticlePDG.h> | |
25 | #include <TLegend.h> | |
26 | #include <TArrow.h> | |
27 | #include <TLatex.h> | |
28 | #include <TF1.h> | |
a1f80595 | 29 | |
9b48326f | 30 | /** @class DrawHits |
31 | @brief Draw hit energy loss | |
32 | @code | |
33 | Root> .L Compile.C | |
34 | Root> Compile("DrawHits.C") | |
35 | Root> DrawHits c | |
36 | Root> c.Run(); | |
37 | @endcode | |
38 | @ingroup FMD_script | |
39 | */ | |
8ec606c2 | 40 | class DrawHits : public AliFMDInput |
a1f80595 | 41 | { |
42 | private: | |
43 | TH2D* fElossVsPMQ; // Histogram | |
2b893216 | 44 | TH1D* fEloss; |
45 | TParticlePDG* fPdg; | |
46 | const Double_t fRho; | |
47 | const Double_t fBetaGammaMip; | |
a1f80595 | 48 | public: |
bf000c32 | 49 | //__________________________________________________________________ |
2b893216 | 50 | DrawHits(const char* pdgName="pi+", |
51 | Int_t m=1000, Double_t emin=1, Double_t emax=1000, | |
52 | Int_t n=900, Double_t tmin=1e-2, Double_t tmax=1e3) | |
53 | : fPdg(0), | |
54 | fRho(2.33), | |
55 | fBetaGammaMip(3.4601) | |
088f8e79 | 56 | { |
8f6ee336 | 57 | AddLoad(kKinematics); |
8ec606c2 | 58 | AddLoad(kHits); |
2b893216 | 59 | TDatabasePDG* pdgDB = TDatabasePDG::Instance(); |
60 | fPdg = pdgDB->GetParticle(pdgName); | |
61 | if (!fPdg) Warning("DrawHits", "Particle %s not found", pdgName); | |
62 | ||
088f8e79 | 63 | TArrayF tkine(MakeLogScale(n, tmin, tmax)); |
64 | TArrayF eloss(MakeLogScale(m, emin, emax)); | |
2b893216 | 65 | TString name("elossVsPMQ"); |
66 | TString title(Form("#Delta E/#Delta x / q^{2} vs. p/m, %s", | |
67 | (pdgName ? pdgName : ""))); | |
8f6ee336 | 68 | fElossVsPMQ = new TH2D(name.Data(), title.Data(), |
69 | tkine.fN-1, tkine.fArray, | |
70 | eloss.fN-1, eloss.fArray); | |
2b893216 | 71 | fElossVsPMQ->SetXTitle("p/(mq^{2})=#beta#gamma/q^{2}"); |
72 | fElossVsPMQ->SetYTitle("#Delta E/#Delta x / q^{2} [MeV/cm]"); | |
2aeec17d | 73 | fElossVsPMQ->Sumw2(); |
2b893216 | 74 | fEloss = new TH1D("eloss", "#Delta E/#Delta x / q^{2}", |
75 | eloss.fN-1, eloss.fArray); | |
76 | fEloss->SetFillColor(2); | |
77 | fEloss->SetFillStyle(3001); | |
78 | fEloss->SetXTitle("#Delta E/#Delta x / q^{2} [MeV/cm]"); | |
2aeec17d | 79 | fEloss->Sumw2(); |
a1f80595 | 80 | } |
bf000c32 | 81 | //__________________________________________________________________ |
8f6ee336 | 82 | Bool_t ProcessHit(AliFMDHit* hit, TParticle* p) |
a1f80595 | 83 | { |
84 | if (!hit) { | |
85 | std::cout << "No hit" << std::endl; | |
86 | return kFALSE; | |
87 | } | |
088f8e79 | 88 | |
8f6ee336 | 89 | if (!p) { |
90 | std::cout << "No track" << std::endl; | |
91 | return kFALSE; | |
92 | } | |
93 | if (!p->IsPrimary()) return kTRUE; | |
088f8e79 | 94 | if (hit->IsStop()) return kTRUE; |
2b893216 | 95 | |
088f8e79 | 96 | Float_t x = hit->P(); |
97 | Float_t y = hit->Edep()/hit->Length(); | |
2b893216 | 98 | Float_t q = hit->Q() / 3.; |
99 | Float_t m = hit->M(); | |
100 | if (m == 0 || q == 0) return kTRUE; | |
101 | ||
102 | x /= hit->M(); | |
103 | y /= q * q; | |
088f8e79 | 104 | fElossVsPMQ->Fill(x, y); |
2b893216 | 105 | fEloss->Fill(y); |
106 | ||
a1f80595 | 107 | return kTRUE; |
108 | } | |
bf000c32 | 109 | //__________________________________________________________________ |
a1f80595 | 110 | Bool_t Finish() |
111 | { | |
112 | gStyle->SetPalette(1); | |
2b893216 | 113 | // gStyle->SetOptTitle(0); |
114 | gStyle->SetTitleBorderSize(1); | |
115 | gStyle->SetTitleFillColor(0); | |
116 | gStyle->SetCanvasColor(0); | |
088f8e79 | 117 | gStyle->SetCanvasColor(0); |
118 | gStyle->SetCanvasBorderSize(0); | |
119 | gStyle->SetPadColor(0); | |
120 | gStyle->SetPadBorderSize(0); | |
2b893216 | 121 | TCanvas* c = new TCanvas("elossVsP", "Energy loss versus momentum"); |
122 | c->SetLogy(); | |
123 | c->SetLogx(); | |
124 | ||
69893a66 | 125 | TString title(Form("%s, %d events", fElossVsPMQ->GetTitle(), fEventCount)); |
2b893216 | 126 | fElossVsPMQ->SetTitle(title.Data()); |
a1f80595 | 127 | fElossVsPMQ->SetStats(kFALSE); |
2b893216 | 128 | fElossVsPMQ->Draw("AXIS"); |
129 | fElossVsPMQ->Draw("ACOLZ same"); | |
130 | TGraph* mate = FromGFMATE(); | |
131 | TGraph* bb = FromRPPFull(); | |
132 | TGraph* nodelta = FromRPPNoDelta(); | |
133 | TGraph* norad = FromRPPNoRad(); | |
134 | TGraph* mean = FromRPPMean(); | |
135 | // fElossVsPMQ->Draw("ACOLZ same"); | |
136 | TLegend* l = new TLegend(.5, .6, .89, .89); | |
137 | // l->AddEntry(fElossVsPMQ, fElossVsPMQ->GetTitle(), "pf"); | |
138 | l->AddEntry(mate, mate->GetTitle(), "lf"); | |
139 | l->AddEntry(bb, bb->GetTitle(), "l"); | |
140 | l->AddEntry(nodelta, nodelta->GetTitle(), "l"); | |
141 | l->AddEntry(norad, norad->GetTitle(), "l"); | |
142 | l->AddEntry(mean, mean->GetTitle(), "l"); | |
143 | l->Draw("same"); | |
144 | Double_t min = fElossVsPMQ->GetYaxis()->GetFirst(); | |
145 | TArrow* a = new TArrow(fBetaGammaMip, min, fBetaGammaMip, 35*min, 03, "<|"); | |
146 | a->SetAngle(30); | |
147 | a->Draw("same"); | |
148 | TLatex* t = new TLatex(fBetaGammaMip, 40*min, "Minimum Ionising"); | |
149 | t->SetTextSize(0.04); | |
150 | t->SetTextAlign(21); | |
151 | t->Draw("same"); | |
a9579262 | 152 | c->Modified(); |
153 | c->Update(); | |
154 | c->cd(); | |
2b893216 | 155 | |
156 | c = new TCanvas("eloss", "Energy loss per unit material"); | |
157 | // c->SetLogx(); | |
158 | c->SetLogy(); | |
69893a66 | 159 | fEloss->Scale(1. / fEloss->GetEntries()); |
2b893216 | 160 | fEloss->GetXaxis()->SetRangeUser(1, 10); |
161 | fEloss->Fit("landau", "", "", 1, 10); | |
162 | TF1* land = fEloss->GetFunction("landau"); | |
163 | land->SetLineWidth(2); | |
164 | Double_t max = fEloss->GetMaximum(); | |
165 | TGraph* resp = GetResp(); | |
166 | Double_t* x = resp->GetX(); | |
167 | Double_t* y = resp->GetY(); | |
168 | TGraph* g = new TGraph(resp->GetN()); | |
169 | TGraph* co = GetCorr(); | |
170 | std::cout << "Correction factor: " << co->Eval(fBetaGammaMip) << std::endl; | |
171 | Double_t xs = fRho; // * 1.19; // / | |
172 | for (Int_t i = 0; i < g->GetN(); i++) | |
173 | g->SetPoint(i, x[i] * xs, y[i] * max); | |
174 | g->Draw("C same"); | |
175 | ||
176 | l = new TLegend(.6, .6, .89, .89); | |
177 | l->AddEntry(fEloss, fEloss->GetTitle(), "lf"); | |
178 | l->AddEntry(land, "Landau fit", "l"); | |
69893a66 | 179 | l->AddEntry(resp, "f(#Delta_{p}/x) [RPP fig 27.8]", "l"); |
2b893216 | 180 | l->Draw("same"); |
181 | ||
a1f80595 | 182 | return kTRUE; |
183 | } | |
2b893216 | 184 | |
185 | /** Scale a graph by density (multiply) and mass (divide). | |
186 | @param graph Graph to scale | |
187 | @param density If @c true, scale by the Si density | |
188 | ($\rho=2.33$/cm^3$). The y axis is assumed to have units of | |
189 | $MeVg^{-1}cm^2$. | |
190 | @param mass Mass to scale with. The x axis is assumed to be the | |
191 | kinetic energy of the particles in units of $GeV$. */ | |
192 | void ScaleGraph(TGraph* graph, bool density=true, double mass=1) | |
193 | { | |
194 | Double_t* x = graph->GetX(); | |
195 | Double_t* y = graph->GetY(); | |
196 | const Double_t rho = (density ? fRho : 1); | |
197 | for (Int_t i = 0; i < graph->GetN(); i++) | |
198 | graph->SetPoint(i, x[i] / mass, y[i] * rho); | |
199 | } | |
200 | /** Draw pure Bethe-Bloc from Review of Particle Physics, fig. 27.1 | |
201 | @return TGraph object */ | |
202 | TGraph* FromRPPFull() | |
203 | { | |
204 | static TGraph* graph = 0; | |
205 | if (!graph) { | |
206 | graph = new TGraph(20); | |
207 | graph->GetHistogram()->SetXTitle("#beta#gamma"); | |
208 | graph->GetHistogram()->SetYTitle("#Delta E/#Delta x [MeV/cm]"); | |
209 | graph->SetFillColor(0); | |
210 | graph->SetLineColor(2); | |
211 | graph->SetLineStyle(1); | |
212 | graph->SetLineWidth(1); | |
213 | graph->SetName("full_stop"); | |
214 | graph->SetTitle("Stopping (MeVcm^{2}/g) [RPP fig 27.1]"); | |
215 | graph->SetPoint(0,0.001461622,40.17542); | |
216 | graph->SetPoint(1,0.003775053,91.28429); | |
217 | graph->SetPoint(2,0.01178769,202.7359); | |
218 | graph->SetPoint(3,0.01722915,212.1938); | |
219 | graph->SetPoint(4,0.03162278,172.8318); | |
220 | graph->SetPoint(5,0.06028646,91.28429); | |
221 | graph->SetPoint(6,0.09506529,51.62633); | |
222 | graph->SetPoint(7,0.433873,5.281682); | |
223 | graph->SetPoint(8,1.255744,1.808947); | |
224 | graph->SetPoint(9,2.393982,1.440177); | |
225 | graph->SetPoint(10,3.499097,1.407715); | |
226 | graph->SetPoint(11,10.92601,1.542122); | |
227 | graph->SetPoint(12,60.28646,1.85066); | |
228 | graph->SetPoint(13,236.3885,2.121938); | |
229 | graph->SetPoint(14,468.0903,2.324538); | |
230 | graph->SetPoint(15,1208.976,2.987085); | |
231 | graph->SetPoint(16,6670.768,7.961412); | |
232 | graph->SetPoint(17,23341.67,24.3298); | |
233 | graph->SetPoint(18,110651.2,104.6651); | |
234 | graph->SetPoint(19,264896.9,260.5203); | |
235 | ScaleGraph(graph); | |
236 | } | |
237 | graph->Draw("C same"); | |
238 | return graph; | |
239 | } | |
240 | ||
241 | /** Draw pure Bethe-Bloc from Review of Particle Physics, fig. 27.1, | |
242 | but without delta electrons | |
243 | @return TGraph object */ | |
244 | TGraph* FromRPPNoDelta() | |
a9579262 | 245 | { |
2b893216 | 246 | static TGraph* graph = 0; |
247 | if (!graph) { | |
248 | graph = new TGraph(20); | |
249 | graph->SetName("stop_nodelta"); | |
250 | graph->SetTitle("Stopping w/o #delta's [RPP fig 27.1]"); | |
251 | graph->GetHistogram()->SetYTitle("(MeVcm^{2}/g)"); | |
252 | graph->GetHistogram()->SetXTitle("#beta#gamma"); | |
253 | graph->SetFillColor(0); | |
254 | graph->SetLineColor(3); | |
255 | graph->SetLineStyle(1); | |
256 | graph->SetLineWidth(1); | |
257 | graph->SetPoint(0,0.001461622,40.17542); | |
258 | graph->SetPoint(1,0.003775053,91.28429); | |
259 | graph->SetPoint(2,0.01178769,202.7359); | |
260 | graph->SetPoint(3,0.01722915,212.1938); | |
261 | graph->SetPoint(4,0.03162278,172.8318); | |
262 | graph->SetPoint(5,0.06028646,91.28429); | |
263 | graph->SetPoint(6,0.09506529,51.62633); | |
264 | graph->SetPoint(7,0.433873,5.281682); | |
265 | graph->SetPoint(8,1.255744,1.808947); | |
266 | graph->SetPoint(9,2.304822,1.473387); | |
267 | graph->SetPoint(10,3.921088,1.473387); | |
268 | graph->SetPoint(11,8.064796,1.614064); | |
269 | graph->SetPoint(12,26.15667,1.936996); | |
270 | graph->SetPoint(13,264.8969,2.489084); | |
271 | graph->SetPoint(14,544.8334,2.665278); | |
272 | graph->SetPoint(15,1163.949,2.853945); | |
273 | graph->SetPoint(16,5312.204,3.19853); | |
274 | graph->SetPoint(17,15374.93,3.424944); | |
275 | graph->SetPoint(18,49865.73,3.667384); | |
276 | graph->SetPoint(19,634158.5,4.110185); | |
277 | ScaleGraph(graph); | |
278 | } | |
279 | graph->Draw("C same"); | |
280 | return graph; | |
281 | } | |
282 | ||
283 | /** Draw pure Bethe-Bloc from Review of Particle Physics, fig. 27.1, | |
284 | but without delta electrons | |
285 | @return TGraph object */ | |
286 | TGraph* FromRPPNoRad() | |
287 | { | |
288 | static TGraph* graph = 0; | |
289 | if (!graph) { | |
290 | graph = new TGraph(18); | |
291 | graph->SetName("norad_stop"); | |
292 | graph->SetTitle("Stopping w/o radiative loss [RPP fig. 27.1]"); | |
293 | graph->GetHistogram()->SetYTitle("(MeVcm^{2}/g)"); | |
294 | graph->GetHistogram()->SetXTitle("#beta#gamma"); | |
295 | graph->SetFillColor(0); | |
296 | graph->SetLineStyle(1); | |
297 | graph->SetLineColor(4); | |
298 | graph->SetLineWidth(1); | |
299 | graph->SetPoint(0,0.001,24.3298); | |
300 | graph->SetPoint(1,0.003117649,74.35105); | |
301 | graph->SetPoint(2,0.008675042,172.8318); | |
302 | graph->SetPoint(3,0.01782497,212.1938); | |
303 | graph->SetPoint(4,0.02704573,189.3336); | |
304 | graph->SetPoint(5,0.07481082,70.29816); | |
305 | graph->SetPoint(6,0.3300035,8.524974); | |
306 | graph->SetPoint(7,0.819559,2.489084); | |
307 | graph->SetPoint(8,1.447084,1.651284); | |
308 | graph->SetPoint(9,2.555097,1.440177); | |
309 | graph->SetPoint(10,4.026598,1.407715); | |
310 | graph->SetPoint(11,32.38084,1.728318); | |
311 | graph->SetPoint(12,97.19733,1.893336); | |
312 | graph->SetPoint(13,1732.539,2.170869); | |
313 | graph->SetPoint(14,11098.58,2.324538); | |
314 | graph->SetPoint(15,32075.46,2.378141); | |
315 | graph->SetPoint(16,221655.8,2.546482); | |
316 | graph->SetPoint(17,593830.6,2.605203); | |
317 | ScaleGraph(graph); | |
318 | } | |
319 | graph->Draw("C same"); | |
320 | return graph; | |
321 | } | |
322 | ||
323 | /** Draw pure Bethe-Bloc from Review of Particle Physics, fig. 27.6 | |
324 | @return TGraph object */ | |
325 | TGraph* FromRPPMean() | |
326 | { | |
327 | static TGraph* graph = 0; | |
328 | if (!graph) { | |
329 | graph = new TGraph(12); | |
330 | graph->SetName("mean_eloss"); | |
69893a66 | 331 | graph->SetTitle("Mean #Delta E/#Delta x - " |
332 | "electronic only [RPP fig. 27.6]"); | |
2b893216 | 333 | graph->GetHistogram()->SetYTitle("(MeVcm^{2}/g)"); |
334 | graph->GetHistogram()->SetXTitle("#mu E_{kin} (GeV)"); | |
335 | graph->SetFillColor(1); | |
336 | graph->SetLineStyle(1); | |
337 | graph->SetLineWidth(1); | |
338 | graph->SetLineColor(1); | |
339 | graph->SetMarkerStyle(21); | |
340 | graph->SetMarkerSize(0.6); | |
341 | graph->SetPoint(0,0.1,1.346561); | |
342 | graph->SetPoint(1,0.1435819,1.230159); | |
343 | graph->SetPoint(2,0.2061576,1.156085); | |
344 | graph->SetPoint(3,0.3698076,1.124339); | |
345 | graph->SetPoint(4,0.4620113,1.124339); | |
346 | graph->SetPoint(5,0.8521452,1.145503); | |
347 | graph->SetPoint(6,1.909707,1.177249); | |
348 | graph->SetPoint(7,4.048096,1.198413); | |
349 | graph->SetPoint(8,12.66832,1.219577); | |
350 | graph->SetPoint(9,48.17031,1.230159); | |
351 | graph->SetPoint(10,285.8863,1.230159); | |
352 | graph->SetPoint(11,894.6674,1.230159); | |
353 | const Double_t m = 0.10566; // Muon | |
354 | ScaleGraph(graph, true, m); | |
355 | } | |
356 | graph->Draw("C same"); | |
357 | return graph; | |
358 | } | |
359 | ||
360 | /** Draw energy loss as obtained from GEANT 3.21 GFMATE. | |
361 | @return TGraph object */ | |
362 | TGraph* FromGFMATE() | |
363 | { | |
364 | static TGraphErrors* gre = 0; | |
365 | if (!gre) { | |
366 | gre = new TGraphErrors(91); | |
367 | gre->SetName("ELOSS"); | |
368 | gre->SetTitle("Energy loss 300#mu Si [GFMATE]"); | |
369 | gre->GetHistogram()->SetXTitle("#beta#gamma"); | |
370 | gre->GetHistogram()->SetYTitle("#Delta E/#Delta x [MeV/cm]"); | |
371 | gre->SetFillColor(6); | |
372 | gre->SetFillStyle(3002); | |
373 | gre->SetLineColor(1); | |
374 | gre->SetLineStyle(1); | |
375 | gre->SetLineWidth(1); | |
376 | gre->SetPoint(0,7.16486e-05,1218.84); | |
377 | gre->SetPoint(1,9.25378e-05,1221.38); | |
378 | gre->SetPoint(2,0.000119517,1180.12); | |
379 | gre->SetPoint(3,0.000154362,1100.31); | |
380 | gre->SetPoint(4,0.000199367,996.621); | |
381 | gre->SetPoint(5,0.000257492,886.005); | |
382 | gre->SetPoint(6,0.000332563,780.483); | |
383 | gre->SetPoint(7,0.000429522,684.927); | |
384 | gre->SetPoint(8,0.000554749,599.407); | |
385 | gre->SetPoint(9,0.000716486,522.375); | |
386 | gre->SetPoint(10,0.000925378,452.497); | |
387 | gre->SetPoint(11,0.00119517,389.101); | |
388 | gre->SetPoint(12,0.00154362,331.974); | |
389 | gre->SetPoint(13,0.00199367,280.969); | |
390 | gre->SetPoint(14,0.00257492,235.689); | |
391 | gre->SetPoint(15,0.00332564,196.156); | |
392 | gre->SetPoint(16,0.00429522,162.402); | |
393 | gre->SetPoint(17,0.00554749,133.87); | |
394 | gre->SetPoint(18,0.00716486,109.959); | |
395 | gre->SetPoint(19,0.00925378,90.2035); | |
396 | gre->SetPoint(20,0.0119517,74.1317); | |
397 | gre->SetPoint(21,0.0154362,60.8988); | |
398 | gre->SetPoint(22,0.0199367,49.9915); | |
399 | gre->SetPoint(23,0.0257492,40.9812); | |
400 | gre->SetPoint(24,0.0332564,33.5739); | |
401 | gre->SetPoint(25,0.0429522,27.5127); | |
402 | gre->SetPoint(26,0.0554749,22.5744); | |
403 | gre->SetPoint(27,0.0716486,18.5674); | |
404 | gre->SetPoint(28,0.0925378,15.3292); | |
405 | gre->SetPoint(29,0.119517,12.7231); | |
406 | gre->SetPoint(30,0.154362,10.6352); | |
407 | gre->SetPoint(31,0.199367,8.97115); | |
408 | gre->SetPoint(32,0.257492,7.65358); | |
409 | gre->SetPoint(33,0.332564,6.61909); | |
410 | gre->SetPoint(34,0.429522,5.79837); | |
411 | gre->SetPoint(35,0.554749,5.148); | |
412 | gre->SetPoint(36,0.716486,4.65024); | |
413 | gre->SetPoint(37,0.925378,4.27671); | |
414 | gre->SetPoint(38,1.19517,3.99831); | |
415 | gre->SetPoint(39,1.54362,3.79877); | |
416 | gre->SetPoint(40,1.99367,3.6629); | |
417 | gre->SetPoint(41,2.57492,3.57594); | |
418 | gre->SetPoint(42,3.32564,3.52565); | |
419 | gre->SetPoint(43,4.29522,3.50206); | |
420 | gre->SetPoint(44,5.54749,3.49715); | |
421 | gre->SetPoint(45,7.16486,3.50467); | |
422 | gre->SetPoint(46,9.25378,3.51988); | |
423 | gre->SetPoint(47,11.9517,3.53932); | |
424 | gre->SetPoint(48,15.4362,3.56054); | |
425 | gre->SetPoint(49,19.9367,3.58189); | |
426 | gre->SetPoint(50,25.7492,3.60231); | |
427 | gre->SetPoint(51,33.2564,3.62113); | |
428 | gre->SetPoint(52,42.9522,3.638); | |
429 | gre->SetPoint(53,55.4749,3.65275); | |
430 | gre->SetPoint(54,71.6486,3.66537); | |
431 | gre->SetPoint(55,92.5378,3.67586); | |
432 | gre->SetPoint(56,119.517,3.68433); | |
433 | gre->SetPoint(57,154.362,3.69105); | |
434 | gre->SetPoint(58,199.367,3.6962); | |
435 | gre->SetPoint(59,257.492,3.69997); | |
436 | gre->SetPoint(60,332.564,3.70257); | |
437 | gre->SetPoint(61,429.522,3.70421); | |
438 | gre->SetPoint(62,554.749,3.70511); | |
439 | gre->SetPoint(63,716.486,3.7055); | |
440 | gre->SetPoint(64,925.378,3.70559); | |
441 | gre->SetPoint(65,1195.17,3.70558); | |
442 | gre->SetPoint(66,1543.62,3.70557); | |
443 | gre->SetPoint(67,1993.67,3.70555); | |
444 | gre->SetPoint(68,2574.92,3.70553); | |
445 | gre->SetPoint(69,3325.64,3.70552); | |
446 | gre->SetPoint(70,4295.22,3.7055); | |
447 | gre->SetPoint(71,5547.49,3.70548); | |
448 | gre->SetPoint(72,7164.86,3.70547); | |
449 | gre->SetPoint(73,9253.78,3.70545); | |
450 | gre->SetPoint(74,11951.7,3.70544); | |
451 | gre->SetPoint(75,15436.2,3.70544); | |
452 | gre->SetPoint(76,19936.7,3.70544); | |
453 | gre->SetPoint(77,25749.2,3.70544); | |
454 | gre->SetPoint(78,33256.4,3.70544); | |
455 | gre->SetPoint(79,42952.2,3.70544); | |
456 | gre->SetPoint(80,55474.9,3.70544); | |
457 | gre->SetPoint(81,71648.6,3.70544); | |
458 | gre->SetPoint(82,92537.8,3.70544); | |
459 | gre->SetPoint(83,119517,3.70544); | |
460 | gre->SetPoint(84,154362,3.70544); | |
461 | gre->SetPoint(85,199367,3.70544); | |
462 | gre->SetPoint(86,257492,3.70544); | |
463 | gre->SetPoint(87,332563,3.70544); | |
464 | gre->SetPoint(88,429522,3.70544); | |
465 | gre->SetPoint(89,554749,3.70544); | |
466 | gre->SetPoint(90,716486,3.70544); | |
467 | // Double_t* x = gre->GetX(); | |
468 | Double_t* y = gre->GetY(); | |
469 | for (Int_t i = 0; i < gre->GetN(); i++) | |
470 | gre->SetPointError(i, 0, 2 * 0.1 * y[i]); // ! 1 sigma | |
471 | } | |
472 | gre->DrawClone("c3 same"); | |
473 | return gre; | |
474 | } | |
475 | ||
476 | /** Get the response functin @f$ f(\Delta_p/x)@f$ from Review of | |
477 | Particle Physics (fig. 27.2). It is scaled to the value at | |
478 | MPV. */ | |
479 | TGraph* GetResp() | |
480 | { | |
481 | static TGraph* graph = 0; | |
482 | if (!graph) { | |
483 | graph = new TGraph(16); | |
484 | graph->SetName("si_resp"); | |
485 | graph->SetTitle("f(#Delta_{p}/x) scaled to the MPV value "); | |
486 | graph->GetHistogram()->SetXTitle("#Delta_{p}/x (MeVcm^{2}/g)"); | |
487 | graph->GetHistogram()->SetYTitle("f(#Delta_{p}/x)"); | |
488 | graph->SetFillColor(1); | |
489 | graph->SetMarkerStyle(21); | |
490 | graph->SetMarkerSize(0.6); | |
491 | graph->SetPoint(0,0.8115124,0.009771987); | |
492 | graph->SetPoint(1,0.9198646,0.228013); | |
493 | graph->SetPoint(2,0.996614,0.5895765); | |
494 | graph->SetPoint(3,1.041761,0.8241042); | |
495 | graph->SetPoint(4,1.059819,0.8794788); | |
496 | graph->SetPoint(5,1.077878,0.9348534); | |
497 | graph->SetPoint(6,1.100451,0.980456); | |
498 | graph->SetPoint(7,1.141084,0.9967427); | |
499 | graph->SetPoint(8,1.204289,0.9153094); | |
500 | graph->SetPoint(9,1.276524,0.742671); | |
501 | graph->SetPoint(10,1.402935,0.465798); | |
502 | graph->SetPoint(11,1.515801,0.3029316); | |
503 | graph->SetPoint(12,1.73702,0.1465798); | |
504 | graph->SetPoint(13,1.985327,0.08143322); | |
505 | graph->SetPoint(14,2.301354,0.04234528); | |
506 | graph->SetPoint(15,2.56772,0.02931596); | |
507 | } | |
508 | return graph; | |
509 | } | |
510 | ||
511 | /** Get the correction to Bethe-Bloc from Review of Particle Physics | |
512 | (fig 27.8). | |
513 | */ | |
514 | TGraph* GetCorr() | |
515 | { | |
516 | static TGraph* graph = 0; | |
517 | if (!graph) { | |
518 | graph = new TGraph(14); | |
519 | graph->SetName("graph"); | |
520 | graph->SetTitle("(#Delta_{p}/x)/(dE/dx)|_{mip} for 320#mu Si"); | |
521 | graph->GetHistogram()->SetXTitle("#beta#gamma = p/m"); | |
522 | graph->SetFillColor(1); | |
523 | graph->SetLineColor(7); | |
524 | graph->SetMarkerStyle(21); | |
525 | graph->SetMarkerSize(0.6); | |
526 | graph->SetPoint(0,1.196058,0.9944915); | |
527 | graph->SetPoint(1,1.28502,0.9411017); | |
528 | graph->SetPoint(2,1.484334,0.8559322); | |
529 | graph->SetPoint(3,1.984617,0.7491525); | |
530 | graph->SetPoint(4,2.658367,0.6983051); | |
531 | graph->SetPoint(5,3.780227,0.6779661); | |
532 | graph->SetPoint(6,4.997358,0.6741525); | |
533 | graph->SetPoint(7,8.611026,0.684322); | |
534 | graph->SetPoint(8,15.28296,0.6995763); | |
535 | graph->SetPoint(9,41.54516,0.7186441); | |
536 | graph->SetPoint(10,98.91461,0.7288136); | |
537 | graph->SetPoint(11,203.2734,0.7326271); | |
538 | graph->SetPoint(12,505.6421,0.7338983); | |
539 | graph->SetPoint(13,896.973,0.7338983); | |
540 | } | |
541 | return graph; | |
a9579262 | 542 | } |
543 | ||
8f6ee336 | 544 | ClassDef(DrawHits,0); |
a1f80595 | 545 | }; |
546 | ||
547 | //____________________________________________________________________ | |
548 | // | |
549 | // EOF | |
550 | // |