1 #if !defined(__CINT__) || defined(__MAKECINT__)
18 #include "TSpectrum.h"
25 #include "TPolyMarker.h"
26 #include "StBichsel/Bichsel.h"
27 #include "BetheBloch.h"
29 #include "TTreeIter.h"
59 const Char_t *Set[2] = {
"tpt",
"sti"};
60 TFile *fIn[2] = {0,0};
61 const Char_t *charge[2] = {
"P",
"N"};
62 const Char_t *scharge[2] = {
"+",
"-"};
63 const Char_t *PG[2] = {
"f",
"Gl"};
64 static Int_t nPng = 0;
66 Int_t accept(Float_t pT, Float_t eta, Int_t nMcHit,Int_t GeantId, Int_t mFitPts,
67 Float_t Qual, Int_t mNAssocGl, Int_t mNAssocPr, Char_t validMc=1, Short_t PrimaryMc=1 ) {
68 if (! validMc || ! PrimaryMc)
return 0;
71 if (TMath::Abs(eta) > 0.5 || nMcHit < 40)
return 0;
72 if (mFitPts > 0 && mFitPts < 25)
return 0;
74 if (TMath::Abs(eta) > 0.5 || nMcHit < 20)
return 0;
75 if (mFitPts > 0 && mFitPts < 15)
return 0;
77 if (Qual > 0 && Qual < 90.0)
return 0;
79 if (GeantId == 8)
return -1;
80 if (GeantId == 9)
return 1;
84 void DrawPng(TCanvas *c) {
87 c->Update(); pngName = c->GetName();
88 pngName.ReplaceAll(
" ",
"_");
89 pngName.ReplaceAll(
"(",
"_");
90 pngName.ReplaceAll(
")",
"_");
91 pngName.ReplaceAll(
"{",
"_");
92 pngName.ReplaceAll(
"}",
"_");
93 pngName.ReplaceAll(
"<",
"lt");
94 pngName.ReplaceAll(
">",
"gt");
95 pngName.ReplaceAll(
"tpt_sti_",
"");
96 pngName.ReplaceAll(
"tpt_sti",
"");
97 pngName.ReplaceAll(
"GeV/c",
"");
98 pngName.ReplaceAll(
".",
"_");
99 pngName.ReplaceAll(
"/",
"_");
100 pngName.ReplaceAll(
"^",
"_");
101 pngName.ReplaceAll(
"__",
"_");
102 pngName.ReplaceAll(
"__",
"_");
104 TVirtualX::Instance()->WritePixmap(c->GetCanvasID(),-1,-1,(Char_t *)pngName.Data());
106 cout <<
"Draw #\t" << nPng <<
"\t" << pngName << endl;
110 void DrawpTdif(
const Char_t *plot =
"pTDiff") {
112 TString c1tit = Plot;
113 Double_t yMin[2] = { 99999., 99999.};
114 Double_t yMax[2] = {-99999., -99999.};
118 for (Int_t c = 0; c < 2; c++) {
119 for (Int_t k = 1; k >= 0; k--) {
122 cout <<
"File \t" << f->GetName() << endl;
123 TString name = Plot; name += charge[c];
125 TH2D * pTDiff = (TH2D*) f->Get(name);
126 if (! pTDiff)
continue;
127 pTDiff->FitSlicesY();
128 TString Mu(name); Mu +=
"_1";
129 TString Sigma(name); Sigma +=
"_2";
130 TH1D *mu = (TH1D*)gDirectory->Get(Mu);
131 TH1D *sigma = (TH1D*)gDirectory->Get(Sigma);
132 if (! mu || ! sigma)
continue;
133 Int_t nx = mu->GetNbinsX();
134 for (Int_t i = 1; i <= nx; i++) {
135 Double_t x = mu->GetBinCenter(i);
136 if (x < xmin || x > xmax)
continue;
137 Double_t y = mu->GetBinContent(i);
138 Double_t dy = TMath::Abs(mu->GetBinError(i));
139 if (dy > 0 && TMath::Abs(y) > dy) {
140 if (y - dy < yMin[0]) yMin[0] = y - dy;
141 if (y + dy > yMax[0]) yMax[0] = y + dy;
144 y = sigma->GetBinContent(i);
145 dy = TMath::Abs(sigma->GetBinError(i));
146 if (dy > 0 && TMath::Abs(y) > dy) {
147 if (y - dy < yMin[1]) yMin[1] = y - dy;
148 if (y + dy > yMax[1]) yMax[1] = y + dy;
156 for (Int_t i = 0; i < 2; i++) {
157 if (yMin[i] < 0) yMin[i] *= 1.1;
else yMin[i] *= 0.9;
158 if (yMax[i] > 0) yMax[i] *= 1.1;
else yMax[i] *= 0.9;
160 TCanvas *c1 =
new TCanvas(c1tit,c1tit,400,400);
161 TString c2tit = c1tit;
163 TCanvas *c2 =
new TCanvas(c2tit,c2tit,400,400);
166 TString title1, title2;
167 Double_t scale = 1.e3;
170 if (Plot ==
"pTDiff" || Plot ==
"pTDifGl") {
171 l1 =
new TLegend(.2,.15,.35,.35);
172 l1->SetBorderSize(0);
174 l1->SetTextSize(0.033);
175 l2 =
new TLegend(.2,.65,.45,.85);
176 l2->SetBorderSize(0);
178 l2->SetTextSize(0.033);
179 Double_t ymin = -20; Double_t ymax = 5;
180 title1 =
"pT diff. #Delta p_{T} (MeV/c) for ";
181 title2 =
"sigma of pT diff.#sigma #Delta p_{T} (MeV/c) for ";
182 if (Plot ==
"pTDifGl") {
183 title1 +=
"Globals"; title2 +=
"Globals";
185 title1 +=
"Primaries"; title2 +=
"Primaries";
187 if (scale*yMin[0] > ymin) ymin = scale*yMin[0];
188 if (scale*yMax[0] < ymax) ymax = scale*yMax[0];
190 if (Plot ==
"pTDifGl") {ymin = -10; ymax = 2.;}
191 else {ymin = -15.; ymax = 5;}
192 TH1F *dummy = c1->DrawFrame(xmin ,ymin, xmax,ymax, title1);
193 dummy->SetName(
"hframe1");
194 dummy->SetXTitle(
"p_{TMc} (GeV/c)");
195 dummy->SetYTitle(
"Delta p_{T} MeV/c");
196 if (scale*yMin[1] > ymin) ymin = scale*yMin[1];
197 if (scale*yMax[1] < ymax) ymax = scale*yMax[1];
201 if (Plot ==
"pTDifGl") {ymin = 0; ymax = 50.;}
202 TH1F *dummy2 = c2->DrawFrame(xmin ,ymin, xmax,ymax,title2);
203 dummy2->SetName(
"hframe2");
204 dummy2->SetXTitle(
"p_{TMc} (GeV/c)");
205 dummy2->SetYTitle(
"sigma Delta p_{T} [MeV/c]");
207 }
else if (Plot ==
"pTRel" || Plot ==
"pTRelGl") {
208 l1 =
new TLegend(.6,.20,.8,.45);
209 l1->SetBorderSize(0);
211 l1->SetTextSize(0.033);
212 l2 =
new TLegend(.2,.65,.45,.90);
213 l2->SetBorderSize(0);
215 l2->SetTextSize(0.033);
217 Double_t ymin = -5; Double_t ymax = 1;
218 title1 =
"Relative pT diff.#delta p_{T} (%) for ";
219 title2 =
"sigma of relative pT diff. #sigma #delta p_{T} (%) for ";
220 if (Plot ==
"pTRelGl") {
221 title1 +=
"Globals"; title2 +=
"Globals";
223 title1 +=
"Primaries"; title2 +=
"Primaries";
225 if (scale*yMin[0] > ymin) ymin = scale*yMin[0];
226 if (scale*yMax[0] < ymax) ymax = scale*yMax[0];
228 if (Plot ==
"pTRelGl") {ymin = -5.; ymax = 1;}
229 else {ymin = -2.; ymax = 0.5;}
230 TH1F *dummy = c1->DrawFrame(xmin ,ymin, xmax,ymax, title1);
231 dummy->SetName(c1->GetName());
232 dummy->SetXTitle(
"p_{TMc} (GeV/c)");
233 dummy->SetYTitle(
"#delta p_{T} [%]");
236 if (scale*yMin[1] > ymin) ymin = scale*yMin[1];
237 if (scale*yMax[1] < ymax) ymax = scale*yMax[1];
239 TH1F *dummy2 = c2->DrawFrame(xmin ,ymin, xmax,ymax, title2);
240 dummy2->SetName(c2->GetName());
241 dummy2->SetXTitle(
"p_{TMc} (GeV/c)");
242 dummy2->SetYTitle(
"sigma delta p_{T}) [%]");
246 for (Int_t c = 0; c < 2; c++) {
247 for (Int_t k = 1; k >= 0; k--) {
250 cout <<
"File \t" << f->GetName() << endl;
251 TString name = Plot; name += charge[c];
253 TH2D * pTDiff = (TH2D*) f->Get(name);
254 if (! pTDiff)
continue;
255 pTDiff->FitSlicesY();
256 TString Mu(name); Mu +=
"_1";
257 TString Sigma(name); Sigma +=
"_2";
258 TH1D *mu = (TH1D*)gDirectory->Get(Mu);
259 TH1D *sigma = (TH1D*)gDirectory->Get(Sigma);
260 if (! mu || ! sigma)
continue;
261 mu->SetMarkerStyle(21-k);
262 mu->SetMarkerColor(1+c+2*k);
263 sigma->SetMarkerStyle(21-k);
264 sigma->SetMarkerColor(1+c+2*k);
265 TString caption(
"pi"); caption += scharge[c];
266 if (! Mu.Contains(
"Gl",TString::kIgnoreCase)) caption +=
" Pr.";
267 else caption +=
" Gl.";
269 cout << mu->GetName() <<
"\t" << caption << endl;
270 l1->AddEntry(mu,caption.Data(),
"p");
274 l2->AddEntry(sigma,caption.Data(),
"p");
292 TCanvas *caneff =
new TCanvas(
"Efficiency",
"Efficiency");
293 TH1D * pTMcP = (TH1D*) gDirectory->Get(
"pTMcP");
294 TH1D * pTMcN = (TH1D*) gDirectory->Get(
"pTMcN");
295 TH1D * pTMcA = (TH1D*) gDirectory->Get(
"pTMcA");
297 TH1D * pTGlP = (TH1D*) gDirectory->Get(
"pTGlP");
298 TH1D * pTGlN = (TH1D*) gDirectory->Get(
"pTGlN");
299 TH1D * pTGlA = (TH1D*) gDirectory->Get(
"pTGlA");
301 TH1D * pTPrP = (TH1D*) gDirectory->Get(
"pTPrP");
302 TH1D * pTPrN = (TH1D*) gDirectory->Get(
"pTPrN");
303 TH1D * pTPrA = (TH1D*) gDirectory->Get(
"pTPrA");
305 TH1D *effN = (TH1D *) pTPrN->Clone(); effN->SetName(
"effN"); effN->Reset();
306 TH1D *effP = (TH1D *) pTPrP->Clone(); effP->SetName(
"effP"); effP->Reset();
307 TH1D *effGlN = (TH1D *) pTGlN->Clone(); effGlN->SetName(
"effGlN");effGlN->Reset();
308 TH1D *effGlP = (TH1D *) pTGlP->Clone(); effGlP->SetName(
"effGlP");effGlP->Reset();
309 Int_t nx = effN->GetNbinsX();
310 Double_t val, sum, err;
311 for (Int_t l = 1; l <= nx; l++) {
312 val = pTPrN->GetBinContent(l);
313 sum = pTMcN->GetBinContent(l);
314 if (sum < 1.e-7 || val > sum) {val = 0; err = 0;}
315 else { val /= sum; err = TMath::Sqrt(val*(1.-val)/sum);}
316 effN->SetBinContent(l,100.*val);
317 effN->SetBinError(l,100.*err);
319 val = pTPrP->GetBinContent(l);
320 sum = pTMcP->GetBinContent(l);
321 if (sum < 1.e-7 || val > sum) {val = 0; err = 0;}
322 else { val /= sum; err = TMath::Sqrt(val*(1.-val)/sum);}
323 effP->SetBinContent(l,100.*val);
324 effP->SetBinError(l,100.*err);
326 val = pTGlN->GetBinContent(l);
327 sum = pTMcN->GetBinContent(l);
328 if (sum < 1.e-7 || val > sum) {val = 0; err = 0;}
329 else { val /= sum; err = TMath::Sqrt(val*(1.-val)/sum);}
330 effGlN->SetBinContent(l,100.*val);
331 effGlN->SetBinError(l,100.*err);
333 val = pTGlP->GetBinContent(l);
334 sum = pTMcP->GetBinContent(l);
335 if (sum < 1.e-7 || val > sum) {val = 0; err = 0;}
336 else { val /= sum; err = TMath::Sqrt(val*(1.-val)/sum);}
337 effGlP->SetBinContent(l,100.*val);
338 effGlP->SetBinError(l,100.*err);
341 effP->SetMarkerStyle(28);
342 effP->SetMarkerColor(4);
343 effN->SetMarkerStyle(23);
344 effN->SetMarkerColor(3);
345 effGlP->SetMarkerStyle(28);
346 effGlP->SetMarkerColor(7);
347 effGlN->SetMarkerStyle(23);
348 effGlN->SetMarkerColor(6);
349 TString title(
"Efficiency (%)."); title += effP->GetTitle();
350 effP->SetTitle(title);
351 effP->SetXTitle(
"Mc pT [GeV/c]");
352 effP->SetYTitle(
"Efficiency (%)");
353 TLegend *l4 =
new TLegend(.5,.2,0.9,.4);
355 effP->SetAxisRange(0,2);
356 effP->Draw(); l4->AddEntry(effP,
"#pi+ Pr.",
"p");
357 effN->Draw(
"same"); l4->AddEntry(effN,
"#pi- Pr.",
"p");
366 Char_t *XYZ[3] = {
"X",
"Y",
"Z"};
367 for (Int_t i = 0; i < 3; i++) {
368 TH1* h = (TH1 *) gDirectory->Get(Form(
"DifPv%s",XYZ[i]));
370 TCanvas *c =
new TCanvas(Form(
"PrimaryVertex%sdiff",XYZ[i]),Form(
"PrimaryVertex%sdiff",XYZ[i]));
376 void Draw(
const Char_t *fNameTPT,
const Char_t *fNameSTI=0) {
377 if (fNameTPT) fIn[0] =
new TFile(fNameTPT);
378 if (fNameSTI) fIn[1] =
new TFile(fNameSTI);
379 if (! fIn[0] && ! fIn[1] )
return;
381 if (fNameTPT) {tFile = fNameTPT; tFile.ReplaceAll(
".root",
"");}
382 if (fNameSTI) {tFile = fNameSTI; tFile.ReplaceAll(
".root",
"");}
384 DrawpTdif(
"pTDifGl");
386 DrawpTdif(
"pTRelGl");
392 void MiniMcPlots(
const Char_t *files=
"*minimc.root") {
400 while ((file = (Char_t *) Dir.NextFile())) {iter.AddFile(file); NFiles++; file1 = file;}
401 cout << files <<
"\twith " << NFiles <<
" files" <<
"\t" << file1 << endl;
402 if (! file1 )
return;
403 TString pFile(file1);
404 Int_t i1 = pFile.Index(
"TbyT/");
405 if (i1 >= 0) i1 += 5;
407 i1 = pFile.Index(
"MC/");
408 if (i1 >= 0) i1 += 3;
410 i1 = pFile.Index(
"./");
411 if (i1 >= 0) i1 += 2;
415 Int_t i2 = pFile.Index(
".root");
416 cout << pFile.Data() <<
"\t" << i1 <<
"\t/" << i2 << endl;
417 TString tFile(pFile.Data()+i1,i2-i1);
418 tFile.ReplaceAll(
"/",
"_"); cout <<
"Master file\t" << tFile.Data() << endl;
420 Out +=
".15_20.Plots.root";
421 TFile *fOut =
new TFile(Out.Data(),
"recreate");
440 const Float_t &mVertexX = iter(
"mVertexX");
441 const Float_t &mVertexY = iter(
"mVertexY");
442 const Float_t &mVertexZ = iter(
"mVertexZ");
443 const Float_t &mMcVertexX = iter(
"mMcVertexX");
444 const Float_t &mMcVertexY = iter(
"mMcVertexY");
445 const Float_t &mMcVertexZ = iter(
"mMcVertexZ");
454 const Int_t &mNMcTrack = iter(
"mNMcTrack");
455 const Int_t &mNMatchedPair = iter(
"mNMatchedPair");
461 const Int_t &mMcTracks_ = iter(
"mMcTracks_");
463 const Float_t *&mMcTracks_mPtMc = iter(
"mMcTracks.mPtMc");
465 const Float_t *&mMcTracks_mEtaMc = iter(
"mMcTracks.mEtaMc");
467 const Short_t *&mMcTracks_mNHitMc = iter(
"mMcTracks.mNHitMc");
471 const Short_t *&mMcTracks_mGeantId = iter(
"mMcTracks.mGeantId");
475 const Short_t *&mMcTracks_mNAssocGl = iter(
"mMcTracks.mNAssocGl");
476 const Short_t *&mMcTracks_mNAssocPr = iter(
"mMcTracks.mNAssocPr");
478 const Int_t &mMatchedPairs_ = iter(
"mMatchedPairs_");
483 const Float_t *&mMatchedPairs_mAvgQuality = iter(
"mMatchedPairs.mAvgQuality");
485 const Float_t *&mMatchedPairs_mPtMc = iter(
"mMatchedPairs.mPtMc");
487 const Float_t *&mMatchedPairs_mEtaMc = iter(
"mMatchedPairs.mEtaMc");
489 const Short_t *&mMatchedPairs_mNHitMc = iter(
"mMatchedPairs.mNHitMc");
493 const Short_t *&mMatchedPairs_mGeantId = iter(
"mMatchedPairs.mGeantId");
497 const Short_t *&mMatchedPairs_mNAssocGl = iter(
"mMatchedPairs.mNAssocGl");
498 const Short_t *&mMatchedPairs_mNAssocPr = iter(
"mMatchedPairs.mNAssocPr");
499 const Float_t *&mMatchedPairs_mPtPr = iter(
"mMatchedPairs.mPtPr");
514 const Float_t *&mMatchedPairs_mPtGl = iter(
"mMatchedPairs.mPtGl");
519 const Float_t *&mMatchedPairs_mDcaXYGl = iter(
"mMatchedPairs.mDcaXYGl");
536 const Short_t *&mMatchedPairs_mFitPts = iter(
"mMatchedPairs.mFitPts");
547 TH1D *DifPvX =
new TH1D(
"DifPvX",
"Difference in X for Rc - Mc positions",100,-0.25,0.25);
548 TH1D *DifPvY =
new TH1D(
"DifPvY",
"Difference in Y for Rc - Mc positions",100,-0.25,0.25);
549 TH1D *DifPvZ =
new TH1D(
"DifPvZ",
"Difference in Z for Rc - Mc positions",100,-0.25,0.25);
551 if (tFile.Contains(
"tpt",TString::kIgnoreCase)) Title =
"TPT :";
552 else Title =
"ITTF:";
554 Title +=
" #eta |<0.5 && McHit>39 FitPts>24 Q>90";
555 TH2D * pTDiffP =
new TH2D(
"pTDiffP",Title,40,0.,4.,200,-.2,.2);
556 TH2D * pTDiffN =
new TH2D(
"pTDiffN",Title,40,0.,4.,200,-.2,.2);
557 TH2D * pTRelP =
new TH2D(
"pTRelP",Title,40,0.,4.,200,-.2,.2);
558 TH2D * pTRelN =
new TH2D(
"pTRelN",Title,40,0.,4.,200,-.2,.2);
560 TH2D * pTDifGlP =
new TH2D(
"pTDifGlP",Title,40,0.,4.,200,-.2,.2);
561 TH2D * pTDifGlN =
new TH2D(
"pTDifGlN",Title,40,0.,4.,200,-.2,.2);
562 TH2D * pTRelGlP =
new TH2D(
"pTRelGlP",Title,40,0.,4.,200,-.2,.2);
563 TH2D * pTRelGlN =
new TH2D(
"pTRelGlN",Title,40,0.,4.,200,-.2,.2);
565 TH2D * dcaP =
new TH2D(
"dcaP",Title,20,0.,4.,120,-3.,3.);
566 TH2D * dcaN =
new TH2D(
"dcaN",Title,20,0.,4.,120,-3.,3.);
568 TH1D * pTMcP =
new TH1D(
"pTMcP",
"pT for MC pion+",100,0.,5.);
569 TH1D * pTMcN =
new TH1D(
"pTMcN",
"pT for MC pion-",100,0.,5.);
570 TH1D * pTMcA =
new TH1D(
"pTMcA",
"pT for MC all",100,0.,5.);
572 TH1D * pTPrP =
new TH1D(
"pTPrP",
"pT for Matched pion+",100,0.,5.);
573 TH1D * pTPrN =
new TH1D(
"pTPrN",
"pT for Matched pion-",100,0.,5.);
574 TH1D * pTPrA =
new TH1D(
"pTPrA",
"pT for Matched all",100,0.,5.);
576 TH1D * pTGlP =
new TH1D(
"pTGlP",
"pT for Global pion+",100,0.,5.);
577 TH1D * pTGlN =
new TH1D(
"pTGlN",
"pT for Global pion-",100,0.,5.);
578 TH1D * pTGlA =
new TH1D(
"pTGlA",
"pT for Global all",100,0.,5.);
580 TH1D * EtaMcP =
new TH1D(
"EtaMcP",
"Eta for MC pion+",100,-2.5,2.5);
581 TH1D * EtaMcN =
new TH1D(
"EtaMcN",
"Eta for MC pion-",100,-2.5,2.5);
582 TH1D * EtaMcA =
new TH1D(
"EtaMcA",
"Eta for MC all",100,-2.5,2.5);
584 TH1D * EtaPrP =
new TH1D(
"EtaPrP",
"Eta for Matched pion+",100,-2.5,2.5);
585 TH1D * EtaPrN =
new TH1D(
"EtaPrN",
"Eta for Matched pion-",100,-2.5,2.5);
586 TH1D * EtaPrA =
new TH1D(
"EtaPrA",
"Eta for Matched all",100,-2.5,2.5);
588 TH1D * EtaGlP =
new TH1D(
"EtaGlP",
"Eta for Global pion+",100,-2.5,2.5);
589 TH1D * EtaGlN =
new TH1D(
"EtaGlN",
"Eta for Global pion-",100,-2.5,2.5);
590 TH1D * EtaGlA =
new TH1D(
"EtaGlA",
"Eta for Global all",100,-2.5,2.5);
594 while (iter.Next()) {
595 DifPvX->Fill(mVertexX - mMcVertexX);
596 DifPvY->Fill(mVertexY - mMcVertexY);
597 DifPvZ->Fill(mVertexZ - mMcVertexZ);
598 if (TMath::Abs(mVertexX - mMcVertexX) > 0.25 ||
599 TMath::Abs(mVertexY - mMcVertexY) > 0.25 ||
600 TMath::Abs(mVertexZ - mMcVertexZ) > 0.25)
continue;
611 for (k = 0; k < mNMcTrack; k++) {
613 Int_t iok = accept(mMcTracks_mPtMc[k],mMcTracks_mEtaMc[k],mMcTracks_mNHitMc[k],mMcTracks_mGeantId[k],-1,-1.,
614 mMcTracks_mNAssocGl[k],mMcTracks_mNAssocPr[k],1,1);
617 pTMcA->Fill(mMcTracks_mPtMc[k]);
618 EtaMcA->Fill(mMcTracks_mEtaMc[k]);
620 pTMcN->Fill(mMcTracks_mPtMc[k]);
621 EtaMcN->Fill(mMcTracks_mEtaMc[k]);
623 pTMcP->Fill(mMcTracks_mPtMc[k]);
624 EtaMcP->Fill(mMcTracks_mEtaMc[k]);
627 for (k = 0; k < mNMatchedPair; k++) {
629 if (mMatchedPairs_mFitPts[k] < 15)
continue;
630 Int_t iok = accept(mMatchedPairs_mPtMc[k],mMatchedPairs_mEtaMc[k],mMatchedPairs_mNHitMc[k],
631 mMatchedPairs_mGeantId[k],mMatchedPairs_mFitPts[k],mMatchedPairs_mAvgQuality[k],
632 mMatchedPairs_mNAssocGl[k],mMatchedPairs_mNAssocPr[k]);
636 Double_t EtaMc = mMatchedPairs_mEtaMc[k];
637 Double_t pTMc = mMatchedPairs_mPtMc[k];
638 Double_t dif = mMatchedPairs_mPtGl[k]-pTMc;
639 Double_t rel = dif/pTMc;
645 pTDifGlN->Fill(pTMc,dif);
646 pTRelGlN->Fill(pTMc,rel);
650 pTDifGlP->Fill(pTMc,dif);
651 pTRelGlP->Fill(pTMc,rel);
654 dif = mMatchedPairs_mPtPr[k]-pTMc;
661 pTDiffN->Fill(pTMc,dif);
662 pTRelN->Fill(pTMc,rel);
663 dcaN->Fill(pTMc,mMatchedPairs_mDcaXYGl[k]);
667 pTDiffP->Fill(pTMc,dif);
668 pTRelP->Fill(pTMc,rel);
669 dcaP->Fill(pTMc,mMatchedPairs_mDcaXYGl[k]);
674 if (nread%1000 == 1) cout <<
"read " << nread <<
" events" << endl;
678 if (Title.BeginsWith(
"TPT",TString::kIgnoreCase)) Draw(Out, 0);