BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
Tof400Alignment.C
Go to the documentation of this file.
1
2
3#include "TCanvas.h"
4#include "TChain.h"
5#include "TClonesArray.h"
6#include "TDirectory.h"
7#include "TF1.h"
8#include "TFile.h"
9#include "TH1.h"
10#include "TH2.h"
11#include "TList.h"
12#include "TPad.h"
13#include "TVector3.h"
14
15#include <TMath.h>
16#include <ctime>
17#include <fstream>
18#include <iostream>
19#include <istream>
20#include <stdio.h>
21#include <vector>
22
23vector<TF1*> vTrackZX;
24vector<TF1*> vTrackZY;
25vector<FairTrackParam*> vLast;
26vector<FairTrackParam*> vFirst;
27vector<BmnTofHit*> vTofHits;
28
29void Tof400Alignment(TString NameFileIn = "bmndst.root", Int_t nEvForRead = 0)
30{
31
32 TStopwatch timer;
33 timer.Start();
34 Int_t nBytes = 0;
35 Bool_t FlagGoodSeed;
36
37 gROOT->LoadMacro("$VMCWORKDIR/macro/run/bmnloadlibs.C");
38 bmnloadlibs(); // load BmnRoot libraries
39 // gStyle->SetOptStat(kFALSE);
40
41 TH2I* hZX = new TH2I("hZX", "hZX", 1200, -50., 550., 520, -130., 130.);
42 hZX->GetXaxis()->SetTitle("Z, cm");
43 hZX->GetYaxis()->SetTitle("X, cm");
44 hZX->SetMarkerStyle(8);
45 hZX->SetMarkerColor(2);
46
47 TH2I* hZX_GemHit = new TH2I("hZX_GemHit", "hZX_GemHit", 1200, -50., 550., 520, -130., 130.);
48 hZX_GemHit->GetXaxis()->SetTitle("Z, cm");
49 hZX_GemHit->GetYaxis()->SetTitle("X, cm");
50 hZX_GemHit->SetMarkerStyle(34);
51 hZX_GemHit->SetMarkerColor(1);
52
53 TH2I* hZY = new TH2I("hZY", "hZY", 1200, -50., 550., 520, -130., 130.);
54 hZY->GetXaxis()->SetTitle("Z, cm");
55 hZY->GetYaxis()->SetTitle("Y, cm");
56 hZY->SetMarkerStyle(8);
57 hZY->SetMarkerColor(2);
58
59 TH2I* hZY_GemHit = new TH2I("hZY_GemHit", "hZY_GemHit", 1200, -50., 550., 520, -130., 130.);
60 hZY_GemHit->GetXaxis()->SetTitle("Z, cm");
61 hZY_GemHit->GetYaxis()->SetTitle("X, cm");
62 hZY_GemHit->SetMarkerStyle(34);
63 hZY_GemHit->SetMarkerColor(1);
64
65 TH2I* hXY_Tof = new TH2I("hXY_Tof", "hXY_Tof", 240, -150., 150., 150, -75., 75.);
66 hXY_Tof->GetXaxis()->SetTitle("X, cm");
67 hXY_Tof->GetYaxis()->SetTitle("Y, cm");
68 hXY_Tof->SetMarkerStyle(8);
69 hXY_Tof->SetMarkerColor(2);
70
71 TH2I* hXY_Gem = new TH2I("hXY_Gem", "hXY_Gem", 240, -150., 150., 150, -75., 75.);
72 hXY_Gem->GetXaxis()->SetTitle("X, cm");
73 hXY_Gem->GetYaxis()->SetTitle("Y, cm");
74 hXY_Gem->SetMarkerStyle(8);
75 hXY_Gem->SetMarkerColor(1);
76
77 TH2I* hXY_Tof_PeakX1 = new TH2I("hXY_Tof_PeakX1", "hXY_Tof_PeakX1", 240, -150., 150., 150, -75., 75.);
78 hXY_Tof_PeakX1->GetXaxis()->SetTitle("X, cm");
79 hXY_Tof_PeakX1->GetYaxis()->SetTitle("Y, cm");
80
81 TH2I* hXY_Tof_PeakX2 = new TH2I("hXY_Tof_PeakX2", "hXY_Tof_PeakX2", 240, -150., 150., 150, -75., 75.);
82 hXY_Tof_PeakX2->GetXaxis()->SetTitle("X, cm");
83 hXY_Tof_PeakX2->GetYaxis()->SetTitle("Y, cm");
84
85 TH1I* hDeviationX = new TH1I("hDeviationX", "hDeviationX", 800, -200., 200.);
86 hDeviationX->GetXaxis()->SetTitle("dX, cm");
87 hDeviationX->SetLineWidth(3);
88 hDeviationX->SetLineColor(4);
89 TH1I* hDeviationY = new TH1I("hDeviationY", "hDeviationY", 800, -200., 200.);
90 hDeviationY->GetXaxis()->SetTitle("dY, cm");
91 hDeviationY->SetLineWidth(3);
92 hDeviationY->SetLineColor(4);
93 TH1I* hDeviation = new TH1I("hDeviation", "hDeviation", 402, -1., 200.);
94 hDeviation->GetXaxis()->SetTitle("dY, cm");
95 hDeviation->SetLineWidth(3);
96 hDeviation->SetLineColor(4);
97
98 TH1I* hSeed = new TH1I("hSeed", "hSeed", 20, 0, 20.);
99 hSeed->GetXaxis()->SetTitle("N Seeds for aligment");
100 hSeed->SetLineWidth(2);
101 hSeed->SetLineColor(4);
102
103 TH1I* hTargetX = new TH1I("hTargetX", "hTargetX", 80, -10., 10.);
104 hTargetX->GetXaxis()->SetTitle("X, cm");
105 TH1I* hTargetY = new TH1I("hTargetY", "hTargetY", 80, -10., 10.);
106 hTargetY->GetXaxis()->SetTitle("Y, cm");
107 TH1I* hTargetZ_FromX = new TH1I("hTargetZ_FromX", "hTargetZ_FromX", 500, -150., 100.);
108 hTargetZ_FromX->GetXaxis()->SetTitle("Z, cm");
109 TH1I* hTargetZ_FromY = new TH1I("hTargetZ_FromY", "hTargetZ_FromY", 500, -150., 100.);
110 hTargetZ_FromY->GetXaxis()->SetTitle("Z, cm");
111 TH2I* hTargetXY = new TH2I("hTargetXY", "hTargetXY", 80, -10., 10., 80, -10., 10.);
112 hTargetXY->GetXaxis()->SetTitle("X, cm");
113 hTargetXY->GetYaxis()->SetTitle("Y, cm");
114
115 TCanvas* c_1 = new TCanvas("c1", "c1", 20, 20, 1500, 750);
116 TPad* Pad_ZX = new TPad("Pad_ZX", "Pad_ZX", 0.01, 0.51, 0.49, 0.99, 21);
117 TPad* Pad_ZY = new TPad("Pad_ZY", "Pad_ZY", 0.01, 0.01, 0.49, 0.49, 21);
118 TPad* Pad_XY_on_Tof = new TPad("Pad_XY_on_Tof", "Pad_XY_on_Tof", 0.51, 0.51, 0.99, 0.99, 21);
119 TPad* Pad_DeviationX = new TPad("Pad_DeviationX", "Pad_DeviationX", 0.51, 0.01, 0.74, 0.49, 21);
120 TPad* Pad_DeviationY = new TPad("Pad_DeviationY", "Pad_DeviationY", 0.74, 0.01, 0.99, 0.49, 21);
121
122 Pad_ZX->Draw();
123 Pad_ZX->SetGridy();
124 Pad_ZX->SetGridx();
125 Pad_ZY->Draw();
126 Pad_ZX->SetGridy();
127 Pad_ZY->SetGridx();
128 Pad_XY_on_Tof->Draw();
129 Pad_XY_on_Tof->SetGridy();
130 Pad_XY_on_Tof->SetGridx();
131 Pad_DeviationX->Draw();
132 Pad_DeviationX->SetGridy();
133 Pad_DeviationX->SetGridx();
134 Pad_DeviationY->Draw();
135 Pad_DeviationY->SetGridy();
136 Pad_DeviationY->SetGridx();
137
138 //--------Data Analysis-----------------------------------------------------------------
139
140 TChain* eveTree = new TChain("cbmsim");
141 TString inName = Form("$VMCWORKDIR/macro/run/%s", NameFileIn.Data());
142 // inName = file;
143 cout << "Open file " << inName << endl << endl;
144 eveTree->Add(inName);
145
146 TClonesArray* Tof400Hits;
147 eveTree->SetBranchAddress("BmnTof400Hit", &Tof400Hits);
148
149 TClonesArray* GemSeeds;
150 eveTree->SetBranchAddress("BmnGemTrack", &GemSeeds);
151 // eveTree->SetBranchAddress("BmnGemSeed", &GemSeeds);
152
153 TClonesArray* GemStripHits;
154 eveTree->SetBranchAddress("BmnGemStripHit", &GemStripHits);
155
156 Long64_t nEvents = eveTree->GetEntries();
157 if (nEvForRead == 0 || nEvForRead > nEvents)
158 nEvForRead = nEvents;
159 cout << "Will be readed " << nEvForRead << " events from " << nEvents << endl;
160
161 for (Int_t iEv = 0; iEv < nEvForRead; iEv++) {
162
163 if (iEv % 50000 == 0)
164 cout << "EVENT: " << iEv << endl;
165 nBytes = eveTree->GetEntry(iEv);
166
167 Int_t nSeeds = GemSeeds->GetEntriesFast();
168 Int_t nHits = Tof400Hits->GetEntriesFast();
169 // cout << "GemSeeds = " << nSeeds;
170 // cout << "; Tof400Hits = " << nHits << endl;
171
172 // if (nHits == nSeeds && nSeeds != 0) {
173 // if (nHits == 1 && nSeeds == 1) {
174 if (nHits != 0 && nSeeds != 0) {
175 // cout << endl << "EVENT: " << iEv << endl;
176 // cout << "GemSeeds = " << nSeeds;
177 // cout << "; Tof400Hits = " << nHits << endl;
178
179 hZX->GetListOfFunctions()->Clear("nodelete");
180 hZX->Reset();
181 hZX_GemHit->Reset();
182 hZY->GetListOfFunctions()->Clear("nodelete");
183 hZY->Reset();
184 hZY_GemHit->Reset();
185 hXY_Tof->Reset();
186 hXY_Gem->Reset();
187
188 for (Int_t i = 0; i < vTrackZX.size(); i++) {
189 vTrackZX[vTrackZX.size() - i - 1]->~TF1();
190 vTrackZY[vTrackZX.size() - i - 1]->~TF1();
191 }
192 vTrackZX.clear();
193 vTrackZY.clear();
194 vLast.clear();
195 vFirst.clear();
196 vTofHits.clear();
197 vTrackZX.reserve(nSeeds);
198 vTrackZY.reserve(nSeeds);
199 vLast.reserve(nSeeds);
200 vFirst.reserve(nSeeds);
201 vTofHits.reserve(nHits);
202
203 // cout << "Start seedGem" << endl;
204 for (Int_t i = 0; i < nSeeds; i++) {
205 // cout << "read seed# " << i << endl;
206 BmnGemTrack* seedGem = (BmnGemTrack*)GemSeeds->At(i);
207 FairTrackParam* pLast = seedGem->GetParamLast();
208 FairTrackParam* pFirst = seedGem->GetParamFirst();
209 vLast.push_back(pLast);
210 vFirst.push_back(pFirst);
211
212 TF1* f1 = new TF1(Form("ZX%d", i), "[0]*(x-[1])+[2]", vLast[i]->GetZ(), 550);
213 f1->SetParameters(vLast[i]->GetTx(), vLast[i]->GetZ(), vLast[i]->GetX());
214 f1->SetLineColor(1);
215 f1->SetLineWidth(2);
216 vTrackZX.push_back(f1);
217 // vTrackZX[i] = new TF1(Form("ZX%d", i), "[0]*(x-[1])+[2]", -50, 550);
218 // vTrackZX[i] = new TF1(Form("ZX%d", i), "[0]*(x-[1])+[2]", vLast[i]->GetZ(), 550);
219 // vTrackZX[i]->SetParameters(vLast[i]->GetTx(), vLast[i]->GetZ(), vLast[i]->GetX());
220 // vTrackZX[i]->SetLineColor(1);
221 // vTrackZX[i]->SetLineWidth(2);
222 hZX->GetListOfFunctions()->Add(vTrackZX[i]); //*/
223
224 TF1* f2 = new TF1(Form("ZY%d", i), "[0]*(x-[1])+[2]", vLast[i]->GetZ(), 550);
225 f2->SetParameters(vLast[i]->GetTy(), vLast[i]->GetZ(), vLast[i]->GetY());
226 f2->SetLineColor(1);
227 f2->SetLineWidth(2);
228 vTrackZY.push_back(f2);
229 // vTrackZY[i] = new TF1(Form("ZY%d", i), "[0]*(x-[1])+[2]", -50, 550);
230 // vTrackZY[i] = new TF1(Form("ZY%d", i), "[0]*(x-[1])+[2]", vLast[i]->GetZ(), 550);
231 // vTrackZY[i]->SetParameters(vLast[i]->GetTy(), vLast[i]->GetZ(), vLast[i]->GetY());
232 // vTrackZY[i]->SetLineColor(1);
233 // vTrackZY[i]->SetLineWidth(2);
235
236 hXY_Gem->Fill(vTrackZX[i]->Eval(450), vTrackZY[i]->Eval(450)); //*/
237 }
238 // cout << "End seedGem Analysis" << endl;
239 FlagGoodSeed = kTRUE;
240 if (nSeeds > 0) {
241 for (Int_t i = 0; i < nSeeds; i++) {
242 // if (TMath::Abs(vTrackZX[i]->Eval(-21.7) - 0.41.) > (0.76 * 3.) ||
243 // TMath::Abs(vTrackZY[i]->Eval(-21.7) - (-3.92)) > (0.65 * 3.) || (vLast[i]->GetTx()) < 0.)
244 // FlagGoodSeed = kFALSE;
245
246 hTargetX->Fill(vTrackZX[i]->Eval(-21.7));
247 hTargetY->Fill(vTrackZY[i]->Eval(-21.7));
248 hTargetZ_FromX->Fill((0.41 - vLast[i]->GetX()) / vLast[i]->GetTx() + vLast[i]->GetZ());
249 hTargetZ_FromY->Fill((-3.92 - vLast[i]->GetY()) / vLast[i]->GetTy() + vLast[i]->GetZ());
250 hTargetXY->Fill(vTrackZX[i]->Eval(-21.7), vTrackZY[i]->Eval(-21.7));
251 }
252 } //*/
253
254 if (FlagGoodSeed == kTRUE) {
255
256 hSeed->Fill(nSeeds);
257
258 // cout << "Start Tof400Hits" << endl;
259 for (Int_t i = 0; i < nHits; i++) {
260 BmnTofHit* hitTof400 = (BmnTofHit*)Tof400Hits->At(i);
261 vTofHits[i] = hitTof400;
262 vTofHits.push_back(hitTof400);
263 hZX->Fill(hitTof400->GetZ(), hitTof400->GetX());
264 hZY->Fill(hitTof400->GetZ(), hitTof400->GetY());
265 hXY_Tof->Fill(hitTof400->GetX(), hitTof400->GetY());
266 // hitTof400->Delete();
267 }
268
269 for (Int_t iseed = 0; iseed < nSeeds; iseed++) {
270 Double_t MinDev = 1000., MinDevY = 1000., MinDevX = 1000., tempx, tempy, dev;
271 Int_t NearHit = -1;
272 for (Int_t itof = 0; itof < nHits; itof++) {
273 if (vTofHits[itof]->IsUsed() == kFALSE) {
274 tempx = vTrackZX[iseed]->Eval(vTofHits[itof]->GetZ()) - vTofHits[itof]->GetX();
275 tempy = vTrackZY[iseed]->Eval(vTofHits[itof]->GetZ()) - vTofHits[itof]->GetY();
276 if (MinDevX > tempx)
277 MinDevX = tempx;
278 if (MinDevY > tempy)
279 MinDevY = tempy;
280 dev = TMath::Sqrt(tempx * tempx + tempy * tempy);
281 if (MinDev > dev) {
282 MinDev = dev;
283 NearHit = itof;
284 }
285 }
286 }
287 hDeviationX->Fill(MinDevX);
288 hDeviationY->Fill(MinDevY);
289
290 if (NearHit != -1) {
291 vTofHits[NearHit]->SetUsing(1);
292 hDeviation->Fill(MinDev);
293 if (TMath::Abs(MinDev) <= 4.) {
294 hXY_Tof_PeakX1->Fill(vTofHits[NearHit]->GetX(), vTofHits[NearHit]->GetY());
295 }
296 if (TMath::Abs(MinDev) > 4.)
297 hXY_Tof_PeakX2->Fill(vTofHits[NearHit]->GetX(), vTofHits[NearHit]->GetY());
298 }
299 } //*/
300 // cout << "End Tof400Hits Analysis" << endl;
301
302 // cout << "Start GemStripHits" << endl;
303 for (Int_t i = 0; i < GemStripHits->GetEntriesFast(); i++) {
304 BmnGemStripHit* hit = (BmnGemStripHit*)GemStripHits->At(i);
305 hZX_GemHit->Fill(hit->GetZ(), hit->GetX());
306 hZY_GemHit->Fill(hit->GetZ(), hit->GetY());
307
308 } //*/
309 // cout << "End GemStripHits Analysis" << endl;
310
311 /* {
312 cout << "Draw event# " << iEv << endl;
313
314 Pad_ZX->cd();
315 hZX->Draw();
316 hZX_GemHit->Draw("SAME");
317
318 Pad_ZY->cd();
319 hZY->Draw();
320 hZY_GemHit->Draw("SAME");
321
322 Pad_XY_on_Tof->cd();
323 hXY_Tof->Draw();
324 hXY_Gem->Draw("SAME");
325
326 Pad_DeviationX->cd();
327 hDeviationX->Draw();
328
329 Pad_DeviationY->cd();
330 hDeviationY->Draw();
331
332 c_1->Update();
333 getchar();
334 }//End Draw */
335 } // end if (FlagGoodSeed == kTRUE)
336
337 } // end if (nHits != 0 && nSeeds != 0)
338 }
339
340 /* TF1 *fDxFit = new TF1("fDxFit", "gaus(0) + gaus(3) + pol2(6)", 15., 45.);
341 fDxFit->SetParNames("Const1", "Mean1", "Sigma1", "Const2", "Mean2", "Sigma2", "p0", "p1", "p2");
342 hDeviationX->GetXaxis()->SetRangeUser(15, 45);
343 Double_t max = hDeviationX->GetBinContent(hDeviationX->GetMaximumBin());
344 cout << "max Dx = " << max;
345 hDeviationX->GetXaxis()-> UnZoom();
346 fDxFit->SetParameters(max / 4., 27., 1.3, max, 33.2, 1.3, 0., 1., -0.1);
347 fDxFit->SetParLimits(1, 26., 29.); // mean of first gaus
348 fDxFit->SetParLimits(2, 0.1, 2.); // sigma of first gaus
349 fDxFit->SetParLimits(4, 32., 35.5); // mean of second gaus
350 fDxFit->SetParLimits(5, 0.1, 2.); // sigma of second gaus
351 hDeviationX->Fit(fDxFit, "BR");
352 hDeviationX->Draw();//*/
353
354 TF1* fDxFit = new TF1("fDxFit", "gaus(0) + pol2(3)", -8., 8.);
355 fDxFit->SetParNames("Const1", "Mean1", "Sigma1", "p0", "p1", "p2");
356 hDeviationX->GetXaxis()->SetRangeUser(-8., 8.);
357 Double_t max = hDeviationX->GetBinContent(hDeviationX->GetMaximumBin());
358 cout << "max Dx = " << max;
359 hDeviationX->GetXaxis()->UnZoom();
360 fDxFit->SetParameters(max, 0., 1.3, 0., 1., -0.1);
361 fDxFit->SetParLimits(1, -3., 3.); // mean of first gaus
362 fDxFit->SetParLimits(2, 0.1, 2.); // sigma of first gaus
363 hDeviationX->Fit(fDxFit, "BR");
364 hDeviationX->Draw();
365
366 /* TF1 *fDyFit = new TF1("fDyFit", "gaus(0) + pol3(3)", -20., 15.);
367 fDyFit->SetParNames("Const1", "Mean1", "Sigma1", "p0", "p1", "p2", "p3");
368 hDeviationY->GetXaxis()->SetRangeUser(-20, 15);
369 max = hDeviationY->GetBinContent(hDeviationY->GetMaximumBin());
370 cout << "max Dy = " << max;
371 hDeviationY->GetXaxis()-> UnZoom();
372 fDyFit->SetParameters(max, -3.5, 0.8, 10, -1.3, -0.1, 0.01);
373 fDyFit->SetParLimits(1, -5., -2.); // mean of first gaus
374 fDyFit->SetParLimits(2, 0.1, 2.); // sigma of first gaus
375 hDeviationY->Fit(fDyFit, "BR");//*/
376
377 TF1* fDyFit = new TF1("fDyFit", "gaus(0) + pol3(3)", -15., 15.);
378 fDyFit->SetParNames("Const1", "Mean1", "Sigma1", "p0", "p1", "p2", "p3");
379 hDeviationY->GetXaxis()->SetRangeUser(-15, 15);
380 max = hDeviationY->GetBinContent(hDeviationY->GetMaximumBin());
381 cout << "max Dy = " << max;
382 hDeviationY->GetXaxis()->UnZoom();
383 fDyFit->SetParameters(max, 0., 0.8, 10, -1.3, -0.1, 0.001);
384 fDyFit->SetParLimits(1, -3., 3.); // mean of first gaus
385 fDyFit->SetParLimits(2, 0.1, 2.); // sigma of first gaus
386 hDeviationY->Fit(fDyFit, "BR");
387
388 ofstream f_time;
389 TString NameTimeFile = "Tof400Aligment.dat";
390 cout << "Write time to " << NameTimeFile.Data() << endl;
391 f_time.open(NameTimeFile.Data(), std::ofstream::out | std::ofstream::app);
392 f_time << endl << NameFileIn << endl;
393 f_time << "\tX_Aligment\n\t\t" << fDxFit->GetParameter("Mean1") << " +- " << fDxFit->GetParameter("Sigma1") << endl;
394 // f_time << "\t\t" << fDxFit->GetParameter("Mean2") << " +- " << fDxFit->GetParameter("Sigma2") << endl;
395 f_time << "\tY_Aligment\n\t\t" << fDyFit->GetParameter("Mean1") << " +- " << fDyFit->GetParameter("Sigma1") << endl;
396 f_time.close(); //
397
398 timer.Stop();
399 cout << "Readed " << nEvForRead << " events" << endl;
400 cout << "Time = " << timer.RealTime() << " s" << endl;
401 cout << "Time/Event = " << timer.RealTime() / (Double_t)nEvForRead * 1000. << " ms/Event" << endl;
402 cout << "TimeCPU = " << timer.CpuTime() << " s" << endl;
403 cout << "TimeCPU/Event = " << timer.CpuTime() / (Double_t)nEvForRead * 1000. << " ms/Event" << endl;
404
405 timer.Reset();
406 timer.Start();
407 TString outName = NameFileIn;
408 Int_t Point = outName.First('.');
409 outName.Replace(Point, 15, "_Aligment.root");
410 outName = Form("/home/storage/analysis/%s", outName.Data());
411 cout << "Save data to " << outName.Data() << endl;
412 TFile* fileout = new TFile(outName.Data(), "RECREATE");
413
414 hSeed->Write();
415 hDeviationX->Write();
416 hDeviationY->Write();
417 hDeviation->Write();
418 hXY_Tof_PeakX1->Write();
419 hXY_Tof_PeakX2->Write();
420 hTargetX->Write();
421 hTargetY->Write();
422 hTargetZ_FromX->Write();
423 hTargetZ_FromY->Write();
424 hTargetXY->Write();
425
426 fileout->Close();
427
428 timer.Stop();
429
430 cout << "Time for write root = " << timer.RealTime() << " s" << endl;
431}
int i
Definition P4_F32vec4.h:22
friend F32vec4 max(const F32vec4 &a, const F32vec4 &b)
Definition P4_F32vec4.h:31
bool Bool_t
int Int_t
constexpr Bool_t kFALSE
double Double_t
long long Long64_t
constexpr Bool_t kTRUE
#define gROOT
char * Form(const char *fmt,...)
FairTrackParam * GetParamFirst()
Definition BmnTrack.h:63
FairTrackParam * GetParamLast()
Definition BmnTrack.h:65
virtual void SetLineWidth(Width_t lwidth)
virtual void SetLineColor(Color_t lcolor)
virtual void SetMarkerColor(Color_t mcolor=1)
virtual void SetMarkerStyle(Style_t mstyle=1)
virtual void UnZoom()
virtual void SetRangeUser(Double_t ufirst, Double_t ulast)
Int_t SetBranchAddress(const char *bname, T **add, TBranch **ptr=nullptr)
virtual Int_t Add(const char *name, Long64_t nentries=TTree::kMaxEntries)
Long64_t GetEntries() const override
Int_t GetEntry(Long64_t entry=0, Int_t getall=0) override
virtual Double_t GetParameter(const TString &name) const
virtual void SetParNames(const char *name0="", const char *name1="", const char *name2="", const char *name3="", const char *name4="", const char *name5="", const char *name6="", const char *name7="", const char *name8="", const char *name9="", const char *name10="")
virtual void SetParLimits(Int_t ipar, Double_t parmin, Double_t parmax)
virtual void SetParameters(const Double_t *params)
void Close(Option_t *option="") override
TAxis * GetXaxis()
virtual TFitResultPtr Fit(const char *formula, Option_t *option="", Option_t *goption="", Double_t xmin=0, Double_t xmax=0)
TAxis * GetYaxis()
void Draw(Option_t *option="") override
virtual Int_t Fill(const char *name, Double_t w)
TList * GetListOfFunctions() const
virtual Int_t GetMaximumBin() const
virtual Double_t GetBinContent(Int_t bin) const
void Reset(Option_t *option="") override
virtual Int_t Fill(const char *namex, const char *namey, Double_t w)
void Clear(Option_t *option="") override
void Add(TObject *obj) override
virtual void SetTitle(const char *title="")
Int_t GetEntriesFast() const
TObject * At(Int_t idx) const override
virtual Int_t Write(const char *name=nullptr, Int_t option=0, Int_t bufsize=0)
void SetGridx(Int_t value=1) override
void SetGridy(Int_t value=1) override
void Draw(Option_t *option="") override
Double_t RealTime()
void Start(Bool_t reset=kTRUE)
Double_t CpuTime()
void Stop()
void Reset()
TString & Replace(Ssiz_t pos, Ssiz_t n, const char *s)
Ssiz_t First(char c) const
const char * Data() const
vector< FairTrackParam * > vFirst
vector< FairTrackParam * > vLast
vector< BmnTofHit * > vTofHits
vector< TF1 * > vTrackZX
vector< TF1 * > vTrackZY
void Tof400Alignment(TString NameFileIn="bmndst.root", Int_t nEvForRead=0)
Double_t Sqrt(Double_t x)
Double_t Abs(Double_t d)