BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
h3l_phys.C
Go to the documentation of this file.
1#include "TCanvas.h"
2#include "TF1.h"
3#include "TFile.h"
4#include "TGraph.h"
5#include "TGraphErrors.h"
6#include "TH1F.h"
7#include "TLegend.h"
8#include "TLorentzVector.h"
9#include "TStyle.h"
10#include "TSystem.h"
11#include "TTreeReader.h"
12#include "TTreeReaderArray.h"
13#include "TTreeReaderValue.h"
14
15using namespace TMath;
16using namespace std;
17
18// // full region
19const Float_t minBound = 2.96;
20const Float_t maxBound = 3.02;
21
22const Float_t massTheor = 2.992;
23
24// Float_t range = 0.012; // 0.009;
25// Float_t leftSig = massTheor - range;
26// Float_t rightSig = massTheor + range;
27
29{
30 gStyle->SetOptStat(kFALSE);
31 auto c = new TCanvas(h->GetName(), h->GetName(), 800, 500);
32 h->SetTitle("");
33 h->GetXaxis()->SetTitle("M_{^{3}He + #pi^{-}}, GeV/c^{2}");
34 h->GetXaxis()->SetTitleSize(0.045);
35 h->GetXaxis()->SetTitleOffset(0.9);
36 h->GetXaxis()->SetTitleFont(62);
37 h->GetXaxis()->SetLabelFont(62);
38
39 h->GetYaxis()->SetTitle(
40 Form("Entries / (%d MeV/c^{2})", (int)(1000 * (maxBound - minBound) / h->GetXaxis()->GetNbins() + 0.5)));
41 h->GetYaxis()->SetTitleSize(0.045);
42 h->GetYaxis()->SetTitleOffset(1.1);
43 h->GetYaxis()->SetTitleFont(62);
44 h->GetYaxis()->SetLabelFont(62);
45
46 h->SetMarkerStyle(20);
47 h->SetMarkerSize(1.0);
50 h->SetMinimum(0);
51
52 TF1* fitS = h->GetFunction("fitFcn");
53 if (!fitS)
54 return;
55 fitS->SetNpx(500);
56 fitS->SetLineColor(kBlack);
57 TF1* fitB = h->GetFunction("fitBack");
58 if (!fitB)
59 return;
60 fitB->SetLineColor(kBlack);
61 fitB->SetLineStyle(7);
62 auto leg = new TLegend(0.2, 0.2, 0.6, 0.5);
63 // auto leg = new TLegend(0.5, 0.5, 0.9, 0.9);
64
65 Float_t T = S + B;
66
67 Float_t dS = TMath::Sqrt(T + B);
68 Float_t dSB = TMath::Sqrt((T * B + 1) / B / B / B);
69 Float_t dSIGN = 0.5 * TMath::Sqrt(1 + 12 * T * B / (T + B) / (T + B));
70
71 leg->SetHeader("Parameters:", "L");
72 leg->AddEntry((TObject*)0, Form("S = %d #pm %d", S, Int_t(dS)), "");
73 leg->AddEntry((TObject*)0, Form("S / B = %4.3f #pm %4.3f", S / B, dSB), "");
74 leg->AddEntry((TObject*)0, Form("S / #sqrt{S + 2B} = %4.1f #pm %4.1f", S / TMath::Sqrt(T), dSIGN), "");
75 leg->AddEntry((TObject*)0, Form("#mu = %4.4f #pm %4.4f", fitS->GetParameter(1), fitS->GetParError(1)), "");
76 leg->AddEntry((TObject*)0,
77 Form("#sigma = %4.4f #pm %4.4f", TMath::Abs(fitS->GetParameter(2)), fitS->GetParError(2)), "");
78 h->Draw("pe1");
79 leg->Draw();
80
81 // TH1F* hSignal = new TH1F("hSignal", "hSignal", h->GetNbinsX(), h->GetXaxis()->GetXmin(),
82 // h->GetXaxis()->GetXmax()); hSignal->SetMarkerStyle(29); hSignal->SetMarkerSize(1.5);
83 // hSignal->SetMarkerColor(kBlack);
84 // hSignal->SetLineColor(kBlack);
85 // for (Int_t i = 0; i < h->GetNbinsX(); ++i) {
86 // hSignal->SetBinContent(i, h->GetBinContent(i) - fitB->Eval(h->GetBinCenter(i)));
87 // }
88 // hSignal->Draw("pe1 same");
89 // c->SaveAs(Form("lifetime_%s.png", h->GetName()));
90}
91
93{
94 Double_t fA = minBound;
95 Double_t fB = maxBound;
96
97 vector<Double_t> fT;
98 fT.resize(6); // polynomial
99
100 Double_t x = (2.0 * xx[0] - fA - fB) / (fB - fA);
101 int order = fT.size();
102 if (order == 1)
103 return p[0];
104 if (order == 2)
105 return p[0] + x * p[1];
106 // build the polynomials
107 fT[0] = 1;
108 fT[1] = x;
109 for (Int_t i = 1; i < order; ++i) {
110 fT[i + 1] = 2 * x * fT[i] - fT[i - 1];
111 }
112 Double_t sum = p[0] * fT[0];
113 for (int i = 1; i <= order; ++i) {
114 sum += p[i] * fT[i];
115 }
116 return sum;
117}
118
120{
121
122 // convert from (A,B) to (-1,1), Chebyshev defined on (-1, 1)
123 Double_t x = (2.0 * xx[0] - minBound - maxBound) / (maxBound - minBound);
124
125 Double_t T0 = 1.0;
126 Double_t T1 = 1.0 * x;
127 Double_t T2 = 2.0 * x * x - 1.0;
128 Double_t result = p[0] * T0 + p[1] * T1 + p[2] * T2;
129
130 return result;
131}
132
134{
135
136 // convert from (A,B) to (-1,1), Chebyshev defined on (-1, 1)
137 Double_t x = (2.0 * xx[0] - minBound - maxBound) / (maxBound - minBound);
138
139 Double_t T0 = 1.0;
140 Double_t T1 = 1.0 * x;
141 Double_t T2 = 2.0 * x * x - 1.0;
142 Double_t T3 = 4.0 * x * x * x - 3.0 * x;
143 Double_t result = p[0] * T0 + p[1] * T1 + p[2] * T2 + p[3] * T3;
144
145 return result;
146}
147
149{
150
151 // convert from (A,B) to (-1,1), Chebyshev defined on (-1, 1)
152 Double_t x = (2.0 * xx[0] - minBound - maxBound) / (maxBound - minBound);
153
154 Double_t T0 = 1.0;
155 Double_t T1 = 1.0 * x;
156 Double_t T2 = 2.0 * x * x - 1.0;
157 Double_t T3 = 4.0 * x * x * x - 3.0 * x;
158 Double_t T4 = 8.0 * x * x * x * x - 8.0 * x * x + 1.0;
159 Double_t result = p[0] * T0 + p[1] * T1 + p[2] * T2 + p[3] * T3 + p[4] * T4;
160
161 return result;
162}
163
164// Gausian Peak function
166{
167 Double_t arg = (x[0] - par[1]) / par[2];
168 Double_t fitval = par[0] * TMath::Exp(-0.5 * arg * arg);
169 return fitval;
170}
171
172// Sum of background and peak function
174{
175 return gausPeak(x, &par[0]) + backgroundChe4(x, &par[3]);
176}
177
178void fitator(TH1F* h, Double_t& Tout, Double_t& Bout)
179{
180
181 if (h->GetEntries() == 0)
182 return;
183
184 Int_t leftBin = 9; // h->FindBin(leftSig);
185 Int_t rightBin = 13; // h->FindBin(rightSig);
186 // cout << leftBin << " " << rightBin << endl;
187
188 vector<Float_t> values;
189 vector<Float_t> errors;
190 for (Int_t i = leftBin; i < rightBin; i++) {
191 values.push_back(h->GetBinContent(i));
192 errors.push_back(h->GetBinError(i));
193 h->SetBinContent(i, 0);
194 h->SetBinError(i, 1e6);
195 }
196 TF1* fitBack = new TF1("fitBack", backgroundChe4, minBound, maxBound, 5);
197 // fitBack->SetParameters(1000, 0, 0, 0); // initial values
198 h->Fit(fitBack, "QIER", "", minBound, maxBound);
199
200 Double_t B = 0;
201 Double_t T = 0;
202
203 for (Int_t i = leftBin; i < rightBin; i++) {
204 h->SetBinContent(i, values[i - leftBin]);
205 h->SetBinError(i, errors[i - leftBin]);
206 T += values[i - leftBin];
207 B += fitBack->Eval(h->GetBinCenter(i));
208 }
209
210 TF1* fitFcn = new TF1("fitFcn", fitFunction, minBound, maxBound, 8);
211 fitFcn->SetLineColor(kBlue);
212
213 // Устанавливаем параметры гаусса
214 fitFcn->SetParameter(0, (T - B) / 2);
215 fitFcn->SetParameter(1, massTheor);
216 fitFcn->SetParameter(2, 0.004); // Ожидаемая ширина
217 // Ограничения для стабильности
218 fitFcn->SetParLimits(0, 0.1 * (T - B), 1.5 * (T - B)); // Амплитуда не может быть отрицательной
219 fitFcn->SetParLimits(1, massTheor - 0.010, massTheor + 0.010);
220 fitFcn->SetParLimits(2, 0.003, 0.010);
221 fitFcn->FixParameter(3, fitBack->GetParameter(0));
222 fitFcn->FixParameter(4, fitBack->GetParameter(1));
223 fitFcn->FixParameter(5, fitBack->GetParameter(2));
224 fitFcn->FixParameter(6, fitBack->GetParameter(3));
225 fitFcn->FixParameter(7, fitBack->GetParameter(4));
226 // fitFcn->FixParameter(7, fitBack->GetParameter(4));
227 // fitFcn->FixParameter(8, fitBack->GetParameter(5));
228 // fitFcn->FixParameter(9, fitBack->GetParameter(6));
229
230 h->Fit(fitFcn, "QIER+", "e1p", minBound, maxBound);
231
232 // h->GetYaxis()->SetRangeUser(0, 9000);
233
234 Tout = T;
235 Bout = B;
236}
237
239 // TString inputFileName =
240 // "/home/merz/data/h3l/h3l_select_25090_A_withKplus/h3l_select_25090_A_withKplus.root",
241 // TString outputFileName =
242 // "/home/merz/data/h3l/h3l_select_25090_A_withKplus/h3l_phys_25090_A_withKplus.root")
243 TString inputFileName = "/home/merz/data/h3l_sim/h3lSelect_XeCsI_3.8AGeV_mb_4mln.root",
244 TString outputFileName = "/home/merz/data/h3l_sim/h3lPhys_XeCsI_3.8AGeV_mb_4mln.root")
245{
246
247 if (gSystem->AccessPathName(inputFileName))
248 return;
249
250 TH1F* hTime = new TH1F("hTime", "Lifetime distribution of ^{3}He + #pi^{-}; time, ns; Counter", 100, 0, 0.6);
251 TH1F* hPt = new TH1F("hPt", "Pt distribution of ^{3}He + #pi^{-}; P_{t}, GeV/c; Counter", 100, 0, 2.2);
252 TH1F* hY = new TH1F("hY", "Rapidity distribution of ^{3}He + #pi^{-}; y; Counter", 100, 1, 2.2);
253 TH1F* hInvMassTotal = new TH1F(
254 "hInvMassTotal", "Invariant mass; Invariant mass of ^{3}He + #pi^{-}, GeV/c^{2}; Counter", 25, 2.95, 3.05);
255 hInvMassTotal->Sumw2();
256
257 const Int_t tN = 4;
258 // const Float_t tMin[tN] = {0.00, 0.04, 0.06, 0.10};
259 // const Float_t tMax[tN] = {0.04, 0.06, 0.10, 0.50};
260 const Float_t tMin[tN] = {0.02, 0.05, 0.09, 0.20};
261 const Float_t tMax[tN] = {0.05, 0.09, 0.20, 0.62};
262 const Float_t effTime[tN] = {1.0, 1.0, 1.0, 1.0};
263 TGraph* gLifeTimeTot = new TGraph();
264 TGraphErrors* gLifeTimeSig = new TGraphErrors();
265 TGraph* gLifeTimeSigEff = new TGraph();
266 TH1F* hInvMassTime[tN];
267 for (Int_t i = 0; i < tN; i++) {
268 hInvMassTime[i] =
269 new TH1F(Form("hInvMassTime_%d", i),
270 "Invariant mass; Invariant mass of ^{3}He + #pi^{-}, GeV/c^{2}; Counter", 25, 2.95, 3.05);
271 hInvMassTime[i]->Sumw2();
272 }
273
274 // const Int_t ptN = 8;
275 // const Float_t ptMin[ptN] = {0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0};
276 // const Float_t ptMax[ptN] = {0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2};
277 // TGraph* gPtTot = new TGraph();
278 // TGraph* gPtSig = new TGraph();
279 // TH1F* hInvMassPt[ptN];
280 // for (Int_t i = 0; i < ptN; i++) {
281 // hInvMassPt[i] =
282 // new TH1F(Form("hInvMassPt_%d", i), "Invariant mass; Invariant mass of ^{3}He + #pi^{-}, GeV/c^{2};
283 // Counter",
284 // 25, 2.95, 3.05);
285 // hInvMassPt[i]->Sumw2();
286 // }
287
288 // const Int_t yN = 5;
289 // const Float_t yMin[yN] = {1.0, 1.2, 1.4, 1.6, 1.8};
290 // const Float_t yMax[yN] = {1.2, 1.4, 1.6, 1.8, 2.0};
291 // TGraph* gYTot = new TGraph();
292 // TGraph* gYSig = new TGraph();
293 // TH1F* hInvMassY[yN];
294 // for (Int_t i = 0; i < yN; i++) {
295 // hInvMassY[i] =
296 // new TH1F(Form("hInvMassY_%d", i), "Invariant mass; Invariant mass of ^{3}He + #pi^{-}, GeV/c^{2};
297 // Counter",
298 // 50, 2.95, 3.05);
299 // hInvMassY[i]->Sumw2();
300 // }
301
302 cout << "File: " << inputFileName << endl;
303 TFile* inFile = TFile::Open(inputFileName);
304
305 TTreeReader myReader("H3L", inFile);
306
307 TTreeReaderArray<Float_t> InvMass(myReader, "invMass");
308 TTreeReaderArray<Float_t> Px1(myReader, "Px1");
309 TTreeReaderArray<Float_t> Py1(myReader, "Py1");
310 TTreeReaderArray<Float_t> Pz1(myReader, "Pz1");
311 TTreeReaderArray<Float_t> Px2(myReader, "Px2");
312 TTreeReaderArray<Float_t> Py2(myReader, "Py2");
313 TTreeReaderArray<Float_t> Pz2(myReader, "Pz2");
314 TTreeReaderArray<Float_t> path(myReader, "path");
315
316 Int_t evId = 0;
317
318 while (myReader.Next()) {
319
320 if (evId % 100000 == 0)
321 printf("evId = %d\n", evId);
322 evId++;
323 for (Int_t i = 0; i < InvMass.GetSize(); ++i) {
324
325 TLorentzVector lPos;
326 TLorentzVector lNeg;
327 TLorentzVector lH3l;
328 lPos.SetXYZM(Px1[i], Py1[i], Pz1[i], 2.8094135);
329 lNeg.SetXYZM(Px2[i], Py2[i], Pz2[i], 0.1395704);
330 lH3l = lPos + lNeg;
331 Float_t tau = path[i] * 2.992 / lH3l.P() / 29.9172; // ns
332 Float_t pt = lH3l.Pt();
333 // if (pt < 0.2) //0.2, 0.3, 0.4, 0.5, 0.6
334 // continue;
335 Float_t y = lH3l.Rapidity();
336 Float_t m = lH3l.Mag();
337 hTime->Fill(tau);
338 hPt->Fill(pt);
339 hY->Fill(y);
340 hInvMassTotal->Fill(m);
341
342 for (Int_t j = 0; j < tN; j++) {
343 if (tau > tMin[j] && tau < tMax[j]) {
344 hInvMassTime[j]->Fill(m);
345 break;
346 }
347 }
348
349 // for (Int_t j = 0; j < ptN; j++) {
350 // if (pt > ptMin[j] && pt < ptMax[j]) {
351 // hInvMassPt[j]->Fill(m);
352 // break;
353 // }
354 // }
355
356 // for (Int_t j = 0; j < yN; j++) {
357 // if (y > yMin[j] && y < yMax[j]) {
358 // hInvMassY[j]->Fill(m);
359 // break;
360 // }
361 // }
362 }
363 }
364
365 inFile->Close();
366
367 TFile outFile(outputFileName, "recreate");
368 hTime->Write();
369 hPt->Write();
370 hY->Write();
371
372 Double_t T = 0;
373 Double_t B = 0;
374 fitator(hInvMassTotal, T, B);
375 Float_t S = T - B;
376 Float_t dS = TMath::Sqrt(T + B);
377 Float_t dB = TMath::Sqrt(B);
378 Float_t SIGN = S / dS; // TMath::Sqrt(T);
379 Float_t dSIGN_OLD = 1.0 / (2 * T) * TMath::Sqrt((T + B) * (T + B) + 4 * B * T);
380 Float_t dSIGN = 0.5 * TMath::Sqrt(1 + 12 * T * B / (T + B) / (T + B));
381 cout << hInvMassTotal->GetName() << ":\t" << S << "\t" << dS << "\t" << SIGN << "\t" << dSIGN << "\t" << dSIGN_OLD
382 << "\t" << B << "\t" << dB << endl;
383 DrawNicePlot(hInvMassTotal, S, B);
384 hInvMassTotal->Write();
385
386 for (Int_t i = 0; i < tN; i++) {
387 T = 0;
388 B = 0;
389 fitator(hInvMassTime[i], T, B);
390
391 S = T - B;
392 dS = TMath::Sqrt(T + B);
393 dB = TMath::Sqrt(B);
394 SIGN = S / dS; // TMath::Sqrt(T);
395 dSIGN_OLD = 1.0 / (2 * T) * TMath::Sqrt((T + B) * (T + B) + 4 * B * T);
396 dSIGN = 0.5 * TMath::Sqrt(1 + 12 * T * B / (T + B) / (T + B));
397 cout << hInvMassTime[i]->GetName() << ":\t" << S << "\t" << dS << "\t" << SIGN << "\t" << dSIGN << "\t"
398 << dSIGN_OLD << "\t" << B << "\t" << dB << endl;
399 gLifeTimeTot->SetPoint(i, 0.5 * (tMax[i] + tMin[i]), hInvMassTime[i]->GetEntries());
400 gLifeTimeSig->SetPoint(i, 0.5 * (tMax[i] + tMin[i]), S);
401 gLifeTimeSig->SetPointError(i, 0.5 * (tMax[i] - tMin[i]), dS);
402 gLifeTimeSigEff->SetPoint(i, 0.5 * (tMax[i] + tMin[i]), S / effTime[i]);
403 hInvMassTime[i]->Write();
404 DrawNicePlot(hInvMassTime[i], S, B);
405 }
406 gLifeTimeTot->GetXaxis()->SetRangeUser(0.0, 1.0);
407 gLifeTimeTot->SetName("gLifeTimeTot");
408 gLifeTimeSig->GetYaxis()->SetRangeUser(0, 1000);
409 gLifeTimeSig->GetYaxis()->SetTitle("Signal");
410 gLifeTimeSig->GetXaxis()->SetRangeUser(0.0, 1.0);
411 gLifeTimeSig->GetXaxis()->SetTitle("Lifetime, ns");
412 gLifeTimeSig->SetName("gLifeTimeSig");
413 gLifeTimeSig->Fit("expo", "R", "", 0.0, 0.5);
414 gLifeTimeSigEff->GetXaxis()->SetRangeUser(0.0, 1.0);
415 gLifeTimeSigEff->SetName("gLifeTimeSigEff");
416 gLifeTimeSigEff->Fit("expo");
417 gLifeTimeTot->Write();
418 gLifeTimeSig->Write();
419 gLifeTimeSigEff->Write();
420
421 // for (Int_t i = 0; i < ptN; i++) {
422 // T = 0;
423 // B = 0;
424 // fitator(hInvMassPt[i], T, B);
425
426 // S = T - B;
427 // SB = S / B;
428 // SIGN = S / TMath::Sqrt(T);
429 // cout << hInvMassPt[i]->GetName() << ":\t" << B << "\t" << S << "\t" << SIGN << "\t" << SB << endl;
430 // gPtTot->SetPoint(i, 0.5 * (ptMax[i] + ptMin[i]), hInvMassPt[i]->GetEntries());
431 // gPtSig->SetPoint(i, 0.5 * (ptMax[i] + ptMin[i]), S);
432 // hInvMassPt[i]->Write();
433 // DrawNicePlot(hInvMassPt[i], S, B);
434 // }
435 // gPtTot->GetXaxis()->SetRangeUser(0.0, 2.0);
436 // gPtTot->SetName("gPtTot");
437 // gPtSig->GetXaxis()->SetRangeUser(0.0, 2.0);
438 // gPtSig->SetName("gPtSig");
439 // gPtTot->Write();
440 // gPtSig->Write();
441
442 // for (Int_t i = 0; i < yN; i++) {
443 // T = 0;
444 // B = 0;
445 // fitator(hInvMassY[i], T, B);
446
447 // S = T - B;
448 // SB = S / B;
449 // SIGN = S / TMath::Sqrt(T);
450 // cout << hInvMassY[i]->GetName() << ":\t" << B << "\t" << S << "\t" << SIGN << "\t" << SB << endl;
451 // gYTot->SetPoint(i, 0.5 * (yMax[i] + yMin[i]), hInvMassY[i]->GetEntries());
452 // gYSig->SetPoint(i, 0.5 * (yMax[i] + yMin[i]), S);
453 // hInvMassY[i]->Write();
454 // DrawNicePlot(hInvMassY[i], S, B);
455 // }
456 // gYTot->GetXaxis()->SetRangeUser(0.0, 2.0);
457 // gYTot->SetName("gYTot");
458 // gYSig->GetXaxis()->SetRangeUser(0.0, 2.0);
459 // gYSig->SetName("gYSig");
460 // gYTot->Write();
461 // gYSig->Write();
462 outFile.Close();
463}
int i
Definition P4_F32vec4.h:22
__m128 m
Definition P4_F32vec4.h:27
int Int_t
float Float_t
constexpr Bool_t kFALSE
double Double_t
kBlack
kBlue
char * Form(const char *fmt,...)
R__EXTERN TStyle * gStyle
R__EXTERN TSystem * gSystem
virtual void SetTitleOffset(Float_t offset=1)
virtual void SetTitleFont(Style_t font=62)
virtual void SetLabelFont(Style_t font=62)
virtual void SetTitleSize(Float_t size=0.04)
virtual void SetLineStyle(Style_t lstyle)
virtual void SetLineColor(Color_t lcolor)
virtual void SetMarkerColor(Color_t mcolor=1)
virtual void SetMarkerStyle(Style_t mstyle=1)
virtual void SetMarkerSize(Size_t msize=1)
Int_t GetNbins() const
virtual void SetRangeUser(Double_t ufirst, Double_t ulast)
virtual Double_t GetParameter(const TString &name) const
virtual void SetNpx(Int_t npx=100)
virtual void SetParLimits(Int_t ipar, Double_t parmin, Double_t parmax)
virtual Double_t GetParError(const char *name) const
virtual Double_t Eval(Double_t x, Double_t y=0, Double_t z=0, Double_t t=0) const
virtual void SetParameter(const TString &name, Double_t value)
virtual void FixParameter(Int_t ipar, Double_t value)
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
void Close(Option_t *option="") override
virtual void SetPointError(Double_t ex, Double_t ey)
virtual void SetPoint(Int_t i, Double_t x, Double_t y)
virtual TFitResultPtr Fit(const char *formula, Option_t *option="", Option_t *goption="", Axis_t xmin=0, Axis_t xmax=0)
void SetName(const char *name="") override
TAxis * GetXaxis() const
TAxis * GetYaxis() const
virtual Double_t GetBinCenter(Int_t bin) const
void SetTitle(const char *title) override
virtual Double_t GetBinError(Int_t bin) const
TAxis * GetXaxis()
virtual TFitResultPtr Fit(const char *formula, Option_t *option="", Option_t *goption="", Double_t xmin=0, Double_t xmax=0)
virtual void SetBinError(Int_t bin, Double_t error)
TAxis * GetYaxis()
void Draw(Option_t *option="") override
virtual Int_t Fill(const char *name, Double_t w)
virtual void SetMinimum(Double_t minimum=-1111)
virtual void SetBinContent(Int_t bin, Double_t content)
virtual Double_t GetEntries() const
virtual TF1 * GetFunction(const char *name) const
virtual Double_t GetBinContent(Int_t bin) const
virtual void Sumw2(Bool_t flag=kTRUE)
Double_t Rapidity() const
Double_t Mag() const
Double_t Pt() const
Double_t P() const
void SetXYZM(Double_t x, Double_t y, Double_t z, Double_t m)
virtual void SetTitle(const char *title="")
const char * GetName() const override
virtual Int_t Write(const char *name=nullptr, Int_t option=0, Int_t bufsize=0)
const Float_t minBound
Definition h3l_phys.C:19
const Float_t maxBound
Definition h3l_phys.C:20
const Float_t massTheor
Definition h3l_phys.C:22
Double_t backgroundChe(Double_t *xx, Double_t *p)
Definition h3l_phys.C:92
void fitator(TH1F *h, Double_t &Tout, Double_t &Bout)
Definition h3l_phys.C:178
Double_t backgroundChe4(Double_t *xx, Double_t *p)
Definition h3l_phys.C:148
Double_t gausPeak(Double_t *x, Double_t *par)
Definition h3l_phys.C:165
Double_t backgroundChe2(Double_t *xx, Double_t *p)
Definition h3l_phys.C:119
void h3l_phys(TString inputFileName="/home/merz/data/h3l_sim/h3lSelect_XeCsI_3.8AGeV_mb_4mln.root", TString outputFileName="/home/merz/data/h3l_sim/h3lPhys_XeCsI_3.8AGeV_mb_4mln.root")
Definition h3l_phys.C:238
void DrawNicePlot(TH1F *h, Int_t S, Float_t B)
Definition h3l_phys.C:28
Double_t backgroundChe3(Double_t *xx, Double_t *p)
Definition h3l_phys.C:133
Double_t fitFunction(Double_t *x, Double_t *par)
Definition h3l_phys.C:173
Double_t Exp(Double_t x)
Double_t Sqrt(Double_t x)
Double_t Abs(Double_t d)
Definition json.hpp:4446