1 #include "CommonDefs.C"
8 kMatchedCorrelatedTracks,
12 const Char_t *histoName[kNHistos] = {
16 "hUncorrelatedTracks",
17 "hMatchedCorrelatedTracks",
31 TOFmatchEff(const Char_t *filename, Int_t evMax = kMaxInt)
34 /* include path for ACLic */
35 gSystem->AddIncludePath("-I$ALICE_ROOT/include");
36 gSystem->AddIncludePath("-I$ALICE_ROOT/TOF");
38 gSystem->Load("libANALYSIS");
39 gSystem->Load("libANALYSISalice");
40 /* build analysis task class */
41 gROOT->LoadMacro("AliAnalysisParticle.cxx+g");
42 gROOT->LoadMacro("AliAnalysisEvent.cxx+g");
43 gROOT->LoadMacro("AliAnalysisTrack.cxx+g");
45 /* open file, get tree and connect */
46 TFile *filein = TFile::Open(filename);
47 TTree *treein = (TTree *)filein->Get("aodTree");
48 printf("got \"aodTree\": %d entries\n", treein->GetEntries());
49 AliAnalysisEvent *analysisEvent = new AliAnalysisEvent();
50 TClonesArray *analysisTrackArray = new TClonesArray("AliAnalysisTrack");
51 AliAnalysisTrack *analysisTrack = NULL;
52 treein->SetBranchAddress("AnalysisEvent", &analysisEvent);
53 treein->SetBranchAddress("AnalysisTrack", &analysisTrackArray);
55 /* open enabled flag map */
56 TH1F *hEnabledFlag = NULL;
57 if (enabledChannelsFileName) {
58 TFile *enabledfile = TFile::Open(enabledChannelsFileName);
59 hEnabledFlag = (TH1F *)enabledfile->Get("hEnabledFlag");
63 for (Int_t ieta = 0; ieta < NetaBins + 1; ieta++)
64 etaBin[ieta] = etaMin + ieta * etaStep;
65 for (Int_t iphi = 0; iphi < NphiBins + 1; iphi++)
66 phiBin[iphi] = phiMin + iphi * phiStep;
68 Int_t NparamBins[kNParams] = {NcentralityBins, NptBins, NetaBins, NphiBins};
69 Double_t *paramBin[kNParams] = {centralityBin, ptBin, etaBin, phiBin};
70 THnSparseF *hHisto[kNHistos][kNCharges];
71 for (Int_t ihisto = 0; ihisto < kNHistos; ihisto++)
72 for (Int_t icharge = 0; icharge < kNCharges; icharge++) {
73 hHisto[ihisto][icharge] = new THnSparseF(Form("hHisto_%s_%s", histoName[ihisto], chargeName[icharge]), "", kNParams, NparamBins);
74 for (Int_t iparam = 0; iparam < kNParams; iparam++)
75 hHisto[ihisto][icharge]->SetBinEdges(iparam, paramBin[iparam]);
78 TH2F *hHistoPID[kNHistos][AliPID::kSPECIES][kNCharges];
79 for (Int_t ihisto = 0; ihisto < kNHistos; ihisto++)
80 for (Int_t ipart = 0; ipart < AliPID::kSPECIES; ipart++)
81 for (Int_t icharge = 0; icharge < kNCharges; icharge++) {
85 hHistoPID[ihisto][ipart][icharge] = new TH2F(Form("hHistoPID_%s_%s_%s", histoName[ihisto], AliPID::ParticleName(ipart), chargeName[icharge]), "", NcentralityBins, centralityBin, NptBins, ptBin);
89 TH2F *hFEAMap = new TH2F("hFEAMap", "", 72, 0., 18., 91, 0., 91.);
95 /* loop over events */
96 Double_t param[kNParams];
98 Int_t index, sector, sectorStrip, padx, fea;
99 Float_t hitmapx, hitmapy;
100 AliTOFcalibHisto calib;
101 calib.LoadCalibHisto();
102 for (Int_t iev = 0; iev < treein->GetEntries() && iev < evMax; iev++) {
104 treein->GetEvent(iev);
105 if (iev % 10000 == 0) printf("iev = %d\n", iev);
107 if (!analysisEvent->AcceptEvent(acceptEventType)) continue;
109 /*** ACCEPTED EVENT ***/
112 param[kCentrality] = analysisEvent->GetCentralityPercentile(centralityEstimator);
114 /* loop over tracks */
115 for (Int_t itrk = 0; itrk < analysisTrackArray->GetEntries(); itrk++) {
117 analysisTrack = (AliAnalysisTrack *)analysisTrackArray->At(itrk);
118 if (!analysisTrack) continue;
119 /* check accepted track */
120 if (!analysisTrack->AcceptTrack()) continue;
122 /*** ACCEPTED TRACK ***/
125 param[kPt] = analysisTrack->GetPt();
126 param[kEta] = analysisTrack->GetEta();
127 param[kPhi] = analysisTrack->GetPhi();
128 charge = analysisTrack->GetSign() > 0. ? kPositive : kNegative;
129 index = analysisTrack->GetTOFIndex();
131 /* fill accepted tracks histos */
132 hHisto[kAcceptedTracks][charge]->Fill(param);
134 for (Int_t ipart = 0; ipart < AliPID::kSPECIES; ipart++) {
136 if (analysisTrack->GetY(AliPID::ParticleMass(ipart)) - rapidityShift > rapidityMaxCut ||
137 analysisTrack->GetY(AliPID::ParticleMass(ipart)) - rapidityShift < rapidityMinCut) continue;
139 hHistoPID[kAcceptedTracks][ipart][charge]->Fill(param[kCentrality], param[kPt]);
144 if (!analysisTrack->HasTOFPID(hEnabledFlag)) continue;
146 /*** ACCEPTED TRACK WITH TOF SIGNAL ***/
149 sector = calib.GetCalibMap(AliTOFcalibHisto::kSector, index);
150 sectorStrip = calib.GetCalibMap(AliTOFcalibHisto::kSectorStrip, index);
151 padx = calib.GetCalibMap(AliTOFcalibHisto::kPadX, index);
153 hitmapx = sector + ((Double_t)(3 - fea) + 0.5) / 4.;
154 hitmapy = sectorStrip;
155 hFEAMap->Fill(hitmapx, hitmapy);
157 /* fill matched tracks histos */
158 hHisto[kMatchedTracks][charge]->Fill(param);
159 if (!analysisTrack->IsMismatchMC()) {
160 hHisto[kMatchedGoodTracks][charge]->Fill(param);
161 hHisto[kMatchedCorrelatedTracks][charge]->Fill(param);
164 hHisto[kMismatchedTracks][charge]->Fill(param);
165 if (!analysisTrack->IsUncorrelatedMismatchMC())
166 hHisto[kMatchedCorrelatedTracks][charge]->Fill(param);
168 hHisto[kUncorrelatedTracks][charge]->Fill(param);
171 for (Int_t ipart = 0; ipart < AliPID::kSPECIES; ipart++) {
172 if (analysisTrack->GetY(AliPID::ParticleMass(ipart)) - rapidityShift > rapidityMaxCut ||
173 analysisTrack->GetY(AliPID::ParticleMass(ipart)) - rapidityShift < rapidityMinCut) continue;
174 hHistoPID[kMatchedTracks][ipart][charge]->Fill(param[kCentrality], param[kPt]);
175 if (!analysisTrack->IsMismatchMC()) {
176 hHistoPID[kMatchedGoodTracks][ipart][charge]->Fill(param);
177 hHistoPID[kMatchedCorrelatedTracks][ipart][charge]->Fill(param);
180 hHistoPID[kMismatchedTracks][ipart][charge]->Fill(param);
181 if (!analysisTrack->IsUncorrelatedMismatchMC())
182 hHistoPID[kMatchedCorrelatedTracks][ipart][charge]->Fill(param);
184 hHistoPID[kUncorrelatedTracks][ipart][charge]->Fill(param);
195 TFile *fileout = TFile::Open(Form("TOFmatchEff.%s", filename), "RECREATE");
197 for (Int_t ihisto = 0; ihisto < kNHistos; ihisto++)
198 for (Int_t icharge = 0; icharge < kNCharges; icharge++) {
199 hHisto[ihisto][icharge]->Write();
202 for (Int_t ihisto = 0; ihisto < kNHistos; ihisto++)
203 for (Int_t ipart = 0; ipart < AliPID::kSPECIES; ipart++)
204 for (Int_t icharge = 0; icharge < kNCharges; icharge++) {
205 hHistoPID[ihisto][ipart][icharge]->Write();
210 TString str = Form("TOFmatchEff.%s", filename);
211 TOFmatchEff_efficiencyPt(str.Data());
212 TOFmatchEff_efficiencyEta(str.Data());
213 TOFmatchEff_efficiencyPhi(str.Data());
216 //_____________________________________________________________________________-
218 TOFmatchEff_efficiencyPt(const Char_t *filename)
222 TFile *filein = TFile::Open(filename);
223 THnSparseF *hHisto[kNHistos][kNCharges];
224 TH2F *hHistoPID[kNHistos][AliPID::kSPECIES][kNCharges];
225 TH1D *hHistoPt_MB[kNHistos][kNCharges], *hHistoPt_centrality[NcentralityBins][kNHistos][kNCharges];
226 TH1D *hHistoPIDPt_MB[kNHistos][AliPID::kSPECIES][kNCharges], *hHistoPIDPt_centrality[NcentralityBins][kNHistos][AliPID::kSPECIES][kNCharges];
227 TH1D *hHistoAllPt_MB[kNHistos], *hHistoAllPt_centrality[NcentralityBins][kNHistos];
228 /* loop over histos */
229 for (Int_t ihisto = 0; ihisto < kNHistos; ihisto++) {
233 hHistoAllPt_MB[ihisto] = new TH1D(Form("hHistoAllPt_MB_%s", histoName[ihisto]), "", NptBins, ptBin);
234 for (Int_t icent = 0; icent < NcentralityBins; icent++)
235 hHistoAllPt_centrality[icent][ihisto] = new TH1D(Form("hHistoAllPt_centrality%d_%s", icent, histoName[ihisto]), "", NptBins, ptBin);
237 /* SINGLE PARTICLE */
239 for (Int_t icharge = 0; icharge < kNCharges; icharge++) {
242 hHisto[ihisto][icharge] = (THnSparseF *)filein->Get(Form("hHisto_%s_%s", histoName[ihisto], chargeName[icharge]));
245 hHistoPt_MB[ihisto][icharge] = hHisto[ihisto][icharge]->Projection(kPt);
246 hHistoPt_MB[ihisto][icharge]->SetName(Form("hHistoPt_MB_%s_%s", histoName[ihisto], chargeName[icharge]));
247 hHistoPt_MB[ihisto][icharge]->Sumw2();
248 hHistoAllPt_MB[ihisto]->Add(hHistoPt_MB[ihisto][icharge]);
250 /* centrality projection */
251 for (Int_t icent = 0; icent < NcentralityBins; icent++) {
253 hHisto[ihisto][icharge]->GetAxis(kCentrality)->SetRange(icent + 1, icent + 1);
254 hHistoPt_centrality[icent][ihisto][icharge] = hHisto[ihisto][icharge]->Projection(kPt);
255 hHistoPt_centrality[icent][ihisto][icharge]->SetName(Form("hHistoPt_centrality%d_%s_%s", icent, histoName[ihisto], chargeName[icharge]));
256 hHistoPt_centrality[icent][ihisto][icharge]->Sumw2();
257 hHistoAllPt_centrality[icent][ihisto]->Add(hHistoPt_centrality[icent][ihisto][icharge]);
261 for (Int_t ipart = 0; ipart < AliPID::kSPECIES; ipart++) {
264 hHistoPID[ihisto][ipart][icharge] = (TH2F *)filein->Get(Form("hHistoPID_%s_%s_%s", histoName[ihisto], AliPID::ParticleName(ipart), chargeName[icharge]));
267 hHistoPIDPt_MB[ihisto][ipart][icharge] = hHistoPID[ihisto][ipart][icharge]->ProjectionY("hpy");
268 hHistoPIDPt_MB[ihisto][ipart][icharge]->SetName(Form("hHistoPIDPt_MB_%s_%s_%s", histoName[ihisto], AliPID::ParticleName(ipart), chargeName[icharge]));
269 hHistoPIDPt_MB[ihisto][ipart][icharge]->Sumw2();
271 /* centrality projection */
272 for (Int_t icent = 0; icent < NcentralityBins; icent++) {
273 hHistoPIDPt_centrality[icent][ihisto][ipart][icharge] = hHistoPID[ihisto][ipart][icharge]->ProjectionY("hpy", icent + 1, icent + 1);
274 hHistoPIDPt_centrality[icent][ihisto][ipart][icharge]->SetName(Form("hHistoPIDPt_centrality%d_%s_%s_%s", icent, histoName[ihisto], AliPID::ParticleName(ipart), chargeName[icharge]));
275 hHistoPIDPt_centrality[icent][ihisto][ipart][icharge]->Sumw2();
286 TString str = filename;
287 str.Insert(str.Length() - TString(".root").Length(), ".efficiencyPt");
288 TFile *fileout = TFile::Open(str.Data(), "RECREATE");
290 /* efficiencies/fractions and write */
291 TH1D *hEfficiencyPt_MB[kNHistos][kNCharges], *hEfficiencyPt_centrality[NcentralityBins][kNHistos][kNCharges], *hEfficiencyPt_ratioMB_centrality[NcentralityBins][kNHistos][kNCharges];
292 TH1D *hEfficiencyPIDPt_MB[kNHistos][AliPID::kSPECIES][kNCharges], *hEfficiencyPIDPt_centrality[NcentralityBins][kNHistos][AliPID::kSPECIES][kNCharges], *hEfficiencyPIDPt_ratioMB_centrality[NcentralityBins][kNHistos][AliPID::kSPECIES][kNCharges];
293 TH1D *hEfficiencyAllPt_MB[kNHistos], *hEfficiencyAllPt_centrality[NcentralityBins][kNHistos], *hEfficiencyAllPt_ratioMB_centrality[NcentralityBins][kNHistos];
295 TH1D *hFractionPt_MB[kNHistos][kNCharges], *hFractionPt_centrality[NcentralityBins][kNHistos][kNCharges], *hFractionPt_ratioMB_centrality[NcentralityBins][kNHistos][kNCharges];
296 for (Int_t ihisto = 0; ihisto < kNHistos; ihisto++) {
298 if (ihisto == kAcceptedTracks) continue;
303 hEfficiencyAllPt_MB[ihisto] = new TH1D(*hHistoAllPt_MB[ihisto]);
304 hEfficiencyAllPt_MB[ihisto]->SetName(Form("hEfficiencyAllPt_MB_%s", histoName[ihisto]));
305 hEfficiencyAllPt_MB[ihisto]->SetLineWidth(2);
306 hEfficiencyAllPt_MB[ihisto]->SetLineColor(1);
307 hEfficiencyAllPt_MB[ihisto]->SetMarkerStyle(20);
308 hEfficiencyAllPt_MB[ihisto]->SetMarkerColor(1);
309 hEfficiencyAllPt_MB[ihisto]->Divide(hEfficiencyAllPt_MB[ihisto], hHistoAllPt_MB[kAcceptedTracks], 1, 1, "B");
310 hEfficiencyAllPt_MB[ihisto]->Write();
312 /* multiplicity/centrality efficiency */
313 for (Int_t icent = 0; icent < NcentralityBins; icent++) {
314 hEfficiencyAllPt_centrality[icent][ihisto] = new TH1D(*hHistoAllPt_centrality[icent][ihisto]);
315 hEfficiencyAllPt_centrality[icent][ihisto]->SetName(Form("hEfficiencyAllPt_centrality%d_%s", icent, histoName[ihisto]));
316 hEfficiencyAllPt_centrality[icent][ihisto]->SetLineWidth(2);
317 hEfficiencyAllPt_centrality[icent][ihisto]->SetLineColor(multcentColor[icent]);
318 hEfficiencyAllPt_centrality[icent][ihisto]->SetMarkerStyle(20);
319 hEfficiencyAllPt_centrality[icent][ihisto]->SetMarkerColor(multcentColor[icent]);
320 hEfficiencyAllPt_centrality[icent][ihisto]->Divide(hEfficiencyAllPt_centrality[icent][ihisto], hHistoAllPt_centrality[icent][kAcceptedTracks], 1, 1, "B");
321 hEfficiencyAllPt_centrality[icent][ihisto]->Write();
324 hEfficiencyAllPt_ratioMB_centrality[icent][ihisto] = new TH1D(*hEfficiencyAllPt_centrality[icent][ihisto]);
325 hEfficiencyAllPt_ratioMB_centrality[icent][ihisto]->SetName(Form("hEfficiencyAllPt_ratioMB_centrality%d_%s", icent, histoName[ihisto]));
326 hEfficiencyAllPt_ratioMB_centrality[icent][ihisto]->SetLineWidth(2);
327 hEfficiencyAllPt_ratioMB_centrality[icent][ihisto]->SetLineColor(multcentColor[icent]);
328 hEfficiencyAllPt_ratioMB_centrality[icent][ihisto]->SetMarkerStyle(20);
329 hEfficiencyAllPt_ratioMB_centrality[icent][ihisto]->SetMarkerColor(multcentColor[icent]);
330 hEfficiencyAllPt_ratioMB_centrality[icent][ihisto]->Divide(hEfficiencyAllPt_MB[ihisto]);
331 hEfficiencyAllPt_ratioMB_centrality[icent][ihisto]->Write();
334 /* SINGLE PARTICLE */
336 for (Int_t icharge = 0; icharge < kNCharges; icharge++) {
339 hEfficiencyPt_MB[ihisto][icharge] = new TH1D(*hHistoPt_MB[ihisto][icharge]);
340 hEfficiencyPt_MB[ihisto][icharge]->SetName(Form("hEfficiencyPt_MB_%s_%s", histoName[ihisto], chargeName[icharge]));
341 hEfficiencyPt_MB[ihisto][icharge]->SetLineWidth(2);
342 hEfficiencyPt_MB[ihisto][icharge]->SetLineColor(1);
343 hEfficiencyPt_MB[ihisto][icharge]->SetMarkerStyle(20);
344 hEfficiencyPt_MB[ihisto][icharge]->SetMarkerColor(1);
345 hEfficiencyPt_MB[ihisto][icharge]->Divide(hEfficiencyPt_MB[ihisto][icharge], hHistoPt_MB[kAcceptedTracks][icharge], 1, 1, "B");
346 hEfficiencyPt_MB[ihisto][icharge]->Write();
348 /* multiplicity/centrality efficiency */
349 for (Int_t icent = 0; icent < NcentralityBins; icent++) {
350 hEfficiencyPt_centrality[icent][ihisto][icharge] = new TH1D(*hHistoPt_centrality[icent][ihisto][icharge]);
351 hEfficiencyPt_centrality[icent][ihisto][icharge]->SetName(Form("hEfficiencyPt_centrality%d_%s_%s", icent, histoName[ihisto], chargeName[icharge]));
352 hEfficiencyPt_centrality[icent][ihisto][icharge]->SetLineWidth(2);
353 hEfficiencyPt_centrality[icent][ihisto][icharge]->SetLineColor(multcentColor[icent]);
354 hEfficiencyPt_centrality[icent][ihisto][icharge]->SetMarkerStyle(20);
355 hEfficiencyPt_centrality[icent][ihisto][icharge]->SetMarkerColor(multcentColor[icent]);
356 hEfficiencyPt_centrality[icent][ihisto][icharge]->Divide(hEfficiencyPt_centrality[icent][ihisto][icharge], hHistoPt_centrality[icent][kAcceptedTracks][icharge], 1, 1, "B");
357 hEfficiencyPt_centrality[icent][ihisto][icharge]->Write();
360 hEfficiencyPt_ratioMB_centrality[icent][ihisto][icharge] = new TH1D(*hEfficiencyPt_centrality[icent][ihisto][icharge]);
361 hEfficiencyPt_ratioMB_centrality[icent][ihisto][icharge]->SetName(Form("hEfficiencyPt_ratioMB_centrality%d_%s_%s", icent, histoName[ihisto], chargeName[icharge]));
362 hEfficiencyPt_ratioMB_centrality[icent][ihisto][icharge]->SetLineWidth(2);
363 hEfficiencyPt_ratioMB_centrality[icent][ihisto][icharge]->SetLineColor(multcentColor[icent]);
364 hEfficiencyPt_ratioMB_centrality[icent][ihisto][icharge]->SetMarkerStyle(20);
365 hEfficiencyPt_ratioMB_centrality[icent][ihisto][icharge]->SetMarkerColor(multcentColor[icent]);
366 hEfficiencyPt_ratioMB_centrality[icent][ihisto][icharge]->Divide(hEfficiencyPt_MB[ihisto][icharge]);
367 hEfficiencyPt_ratioMB_centrality[icent][ihisto][icharge]->Write();
371 for (Int_t ipart = 0; ipart < AliPID::kSPECIES; ipart++) {
374 hEfficiencyPIDPt_MB[ihisto][ipart][icharge] = new TH1D(*hHistoPIDPt_MB[ihisto][ipart][icharge]);
375 hEfficiencyPIDPt_MB[ihisto][ipart][icharge]->SetName(Form("hEfficiencyPIDPt_MB_%s_%s_%s", histoName[ihisto], AliPID::ParticleName(ipart), chargeName[icharge]));
376 hEfficiencyPIDPt_MB[ihisto][ipart][icharge]->SetLineWidth(2);
377 hEfficiencyPIDPt_MB[ihisto][ipart][icharge]->SetLineColor(1);
378 hEfficiencyPIDPt_MB[ihisto][ipart][icharge]->SetMarkerStyle(20);
379 hEfficiencyPIDPt_MB[ihisto][ipart][icharge]->SetMarkerColor(1);
380 hEfficiencyPIDPt_MB[ihisto][ipart][icharge]->Divide(hEfficiencyPIDPt_MB[ihisto][ipart][icharge], hHistoPIDPt_MB[kAcceptedTracks][ipart][icharge], 1, 1, "B");
381 hEfficiencyPIDPt_MB[ihisto][ipart][icharge]->Write();
383 /* multiplicity/centrality efficiency */
384 for (Int_t icent = 0; icent < NcentralityBins; icent++) {
386 hEfficiencyPIDPt_centrality[icent][ihisto][ipart][icharge] = new TH1D(*hHistoPIDPt_centrality[icent][ihisto][ipart][icharge]);
387 hEfficiencyPIDPt_centrality[icent][ihisto][ipart][icharge]->SetName(Form("hEfficiencyPIDPt_centrality%d_%s_%s_%s", icent, histoName[ihisto], AliPID::ParticleName(ipart), chargeName[icharge]));
388 hEfficiencyPIDPt_centrality[icent][ihisto][ipart][icharge]->SetLineWidth(2);
389 hEfficiencyPIDPt_centrality[icent][ihisto][ipart][icharge]->SetLineColor(multcentColor[icent]);
390 hEfficiencyPIDPt_centrality[icent][ihisto][ipart][icharge]->SetMarkerStyle(20);
391 hEfficiencyPIDPt_centrality[icent][ihisto][ipart][icharge]->SetMarkerColor(multcentColor[icent]);
393 hEfficiencyPIDPt_centrality[icent][ihisto][ipart][icharge]->Divide(hEfficiencyPIDPt_centrality[icent][ihisto][ipart][icharge], hHistoPIDPt_centrality[icent][kAcceptedTracks][ipart][icharge], 1, 1, "B");
394 hEfficiencyPIDPt_centrality[icent][ihisto][ipart][icharge]->Write();
397 hEfficiencyPIDPt_ratioMB_centrality[icent][ihisto][ipart][icharge] = new TH1D(*hEfficiencyPIDPt_centrality[icent][ihisto][ipart][icharge]);
398 hEfficiencyPIDPt_ratioMB_centrality[icent][ihisto][ipart][icharge]->SetName(Form("hEfficiencyPIDPt_ratioMB_centrality%d_%s_%s_%s", icent, histoName[ihisto], AliPID::ParticleName(ipart), chargeName[icharge]));
399 hEfficiencyPIDPt_ratioMB_centrality[icent][ihisto][ipart][icharge]->SetLineWidth(2);
400 hEfficiencyPIDPt_ratioMB_centrality[icent][ihisto][ipart][icharge]->SetLineColor(multcentColor[icent]);
401 hEfficiencyPIDPt_ratioMB_centrality[icent][ihisto][ipart][icharge]->SetMarkerStyle(20);
402 hEfficiencyPIDPt_ratioMB_centrality[icent][ihisto][ipart][icharge]->SetMarkerColor(multcentColor[icent]);
403 hEfficiencyPIDPt_ratioMB_centrality[icent][ihisto][ipart][icharge]->Divide(hEfficiencyPIDPt_MB[ihisto][ipart][icharge]);
404 hEfficiencyPIDPt_ratioMB_centrality[icent][ihisto][ipart][icharge]->Write();
418 //_____________________________________________________________________________-
420 TOFmatchEff_efficiencyPhi(const Char_t *filename)
424 TFile *filein = TFile::Open(filename);
425 THnSparseF *hHisto[kNHistos][kNCharges];
426 TH1D *hHistoPhi_MB[kNHistos][kNCharges], *hHistoPhi_centrality[NcentralityBins][kNHistos][kNCharges];
427 TH1D *hHistoPhi_MB_pt[NptsubBins][kNHistos][kNCharges], *hHistoPhi_centrality_pt[NcentralityBins][NptsubBins][kNHistos][kNCharges];
428 /* loop over histos */
429 for (Int_t ihisto = 0; ihisto < kNHistos; ihisto++)
430 for (Int_t icharge = 0; icharge < kNCharges; icharge++) {
433 hHisto[ihisto][icharge] = (THnSparseF *)filein->Get(Form("hHisto_%s_%s", histoName[ihisto], chargeName[icharge]));
436 hHisto[ihisto][icharge]->GetAxis(kPt)->SetRange(0, 0);
437 hHisto[ihisto][icharge]->GetAxis(kCentrality)->SetRange(0, 0);
438 hHistoPhi_MB[ihisto][icharge] = hHisto[ihisto][icharge]->Projection(kPhi);
439 hHistoPhi_MB[ihisto][icharge]->SetName(Form("hHistoPhi_MB_%s_%s", histoName[ihisto], chargeName[icharge]));
440 hHistoPhi_MB[ihisto][icharge]->Sumw2();
442 for (Int_t ipt = 0; ipt < NptsubBins; ipt++) {
443 hHisto[ihisto][icharge]->GetAxis(kPt)->SetRange(ptsubBinMin[ipt] + 1, ptsubBinMax[ipt] + 1);
444 hHisto[ihisto][icharge]->GetAxis(kCentrality)->SetRange(0, 0);
445 hHistoPhi_MB_pt[ipt][ihisto][icharge] = hHisto[ihisto][icharge]->Projection(kPhi);
446 hHistoPhi_MB_pt[ipt][ihisto][icharge]->SetName(Form("hHistoPhi_MB_pt%d_%s_%s", ipt, histoName[ihisto], chargeName[icharge]));
447 hHistoPhi_MB_pt[ipt][ihisto][icharge]->Sumw2();
450 /* centrality projection */
451 for (Int_t icent = 0; icent < NcentralityBins; icent++) {
452 hHisto[ihisto][icharge]->GetAxis(kPt)->SetRange(0, 0);
453 hHisto[ihisto][icharge]->GetAxis(kCentrality)->SetRange(icent + 1, icent + 1);
454 hHistoPhi_centrality[icent][ihisto][icharge] = hHisto[ihisto][icharge]->Projection(kPhi);
455 hHistoPhi_centrality[icent][ihisto][icharge]->SetName(Form("hHistoPhi_centrality%d_%s_%s", icent, histoName[ihisto], chargeName[icharge]));
456 hHistoPhi_centrality[icent][ihisto][icharge]->Sumw2();
458 for (Int_t ipt = 0; ipt < NptsubBins; ipt++) {
459 hHisto[ihisto][icharge]->GetAxis(kPt)->SetRange(ptsubBinMin[ipt] + 1, ptsubBinMax[ipt] + 1);
460 hHisto[ihisto][icharge]->GetAxis(kCentrality)->SetRange(icent + 1, icent + 1);
461 hHistoPhi_centrality_pt[icent][ipt][ihisto][icharge] = hHisto[ihisto][icharge]->Projection(kPhi);
462 hHistoPhi_centrality_pt[icent][ipt][ihisto][icharge]->SetName(Form("hHistoPhi_centrality%d_pt%d_%s_%s", icent, ipt, histoName[ihisto], chargeName[icharge]));
463 hHistoPhi_centrality_pt[icent][ipt][ihisto][icharge]->Sumw2();
469 TString str = filename;
470 str.Insert(str.Length() - TString(".root").Length(), ".efficiencyPhi");
471 TFile *fileout = TFile::Open(str.Data(), "RECREATE");
473 /* efficiencies/fractions and write */
474 TH1D *hEfficiencyPhi_MB[kNHistos][kNCharges], *hEfficiencyPhi_centrality[NcentralityBins][kNHistos][kNCharges], *hEfficiencyPhi_ratioMB_centrality[NcentralityBins][kNHistos][kNCharges];
475 TH1D *hEfficiencyPhi_MB_pt[NptsubBins][kNHistos][kNCharges], *hEfficiencyPhi_centrality_pt[NcentralityBins][NptsubBins][kNHistos][kNCharges], *hEfficiencyPhi_ratioMB_centrality_pt[NcentralityBins][NptsubBins][kNHistos][kNCharges];
478 TH1D *hFractionPhi_MB[kNHistos][kNCharges], *hFractionPhi_centrality[NcentralityBins][kNHistos][kNCharges], *hFractionPhi_ratioMB_centrality[NcentralityBins][kNHistos][kNCharges];
479 for (Int_t ihisto = 0; ihisto < kNHistos; ihisto++) {
480 for (Int_t icharge = 0; icharge < kNCharges; icharge++) {
482 if (ihisto == kAcceptedTracks) continue;
485 hEfficiencyPhi_MB[ihisto][icharge] = new TH1D(*hHistoPhi_MB[ihisto][icharge]);
486 hEfficiencyPhi_MB[ihisto][icharge]->SetName(Form("hEfficiencyPhi_MB_%s_%s", histoName[ihisto], chargeName[icharge]));
487 hEfficiencyPhi_MB[ihisto][icharge]->SetLineWidth(2);
488 hEfficiencyPhi_MB[ihisto][icharge]->SetLineColor(1);
489 hEfficiencyPhi_MB[ihisto][icharge]->SetMarkerStyle(20);
490 hEfficiencyPhi_MB[ihisto][icharge]->SetMarkerColor(1);
491 hEfficiencyPhi_MB[ihisto][icharge]->Divide(hEfficiencyPhi_MB[ihisto][icharge], hHistoPhi_MB[kAcceptedTracks][icharge], 1, 1, "B");
492 hEfficiencyPhi_MB[ihisto][icharge]->Write();
494 for (Int_t ipt = 0; ipt < NptsubBins; ipt++) {
495 hEfficiencyPhi_MB_pt[ipt][ihisto][icharge] = new TH1D(*hHistoPhi_MB_pt[ipt][ihisto][icharge]);
496 hEfficiencyPhi_MB_pt[ipt][ihisto][icharge]->SetName(Form("hEfficiencyPhi_MB_pt%d_%s_%s", ipt, histoName[ihisto], chargeName[icharge]));
497 hEfficiencyPhi_MB_pt[ipt][ihisto][icharge]->SetLineWidth(2);
498 hEfficiencyPhi_MB_pt[ipt][ihisto][icharge]->SetLineColor(1);
499 hEfficiencyPhi_MB_pt[ipt][ihisto][icharge]->SetMarkerStyle(20);
500 hEfficiencyPhi_MB_pt[ipt][ihisto][icharge]->SetMarkerColor(1);
501 hEfficiencyPhi_MB_pt[ipt][ihisto][icharge]->Divide(hEfficiencyPhi_MB_pt[ipt][ihisto][icharge], hHistoPhi_MB_pt[ipt][kAcceptedTracks][icharge], 1, 1, "B");
502 hEfficiencyPhi_MB_pt[ipt][ihisto][icharge]->Write();
505 /* multiplicity/centrality efficiency */
506 for (Int_t icent = 0; icent < NcentralityBins; icent++) {
507 hEfficiencyPhi_centrality[icent][ihisto][icharge] = new TH1D(*hHistoPhi_centrality[icent][ihisto][icharge]);
508 hEfficiencyPhi_centrality[icent][ihisto][icharge]->SetName(Form("hEfficiencyPhi_centrality%d_%s_%s", icent, histoName[ihisto], chargeName[icharge]));
509 hEfficiencyPhi_centrality[icent][ihisto][icharge]->SetLineWidth(2);
510 hEfficiencyPhi_centrality[icent][ihisto][icharge]->SetLineColor(multcentColor[icent]);
511 hEfficiencyPhi_centrality[icent][ihisto][icharge]->SetMarkerStyle(20);
512 hEfficiencyPhi_centrality[icent][ihisto][icharge]->SetMarkerColor(multcentColor[icent]);
513 hEfficiencyPhi_centrality[icent][ihisto][icharge]->Divide(hEfficiencyPhi_centrality[icent][ihisto][icharge], hHistoPhi_centrality[icent][kAcceptedTracks][icharge], 1, 1, "B");
514 hEfficiencyPhi_centrality[icent][ihisto][icharge]->Write();
517 hEfficiencyPhi_ratioMB_centrality[icent][ihisto][icharge] = new TH1D(*hEfficiencyPhi_centrality[icent][ihisto][icharge]);
518 hEfficiencyPhi_ratioMB_centrality[icent][ihisto][icharge]->SetName(Form("hEfficiencyPhi_ratioMB_centrality%d_%s_%s", icent, histoName[ihisto], chargeName[icharge]));
519 hEfficiencyPhi_ratioMB_centrality[icent][ihisto][icharge]->SetLineWidth(2);
520 hEfficiencyPhi_ratioMB_centrality[icent][ihisto][icharge]->SetLineColor(multcentColor[icent]);
521 hEfficiencyPhi_ratioMB_centrality[icent][ihisto][icharge]->SetMarkerStyle(20);
522 hEfficiencyPhi_ratioMB_centrality[icent][ihisto][icharge]->SetMarkerColor(multcentColor[icent]);
523 hEfficiencyPhi_ratioMB_centrality[icent][ihisto][icharge]->Divide(hEfficiencyPhi_MB[ihisto][icharge]);
524 hEfficiencyPhi_ratioMB_centrality[icent][ihisto][icharge]->Write();
534 //_____________________________________________________________________________-
536 TOFmatchEff_efficiencyEta(const Char_t *filename)
540 TFile *filein = TFile::Open(filename);
541 THnSparseF *hHisto[kNHistos][kNCharges];
542 TH1D *hHistoEta_MB[kNHistos][kNCharges], *hHistoEta_centrality[NcentralityBins][kNHistos][kNCharges];
543 TH1D *hHistoEta_MB_pt[NptsubBins][kNHistos][kNCharges], *hHistoEta_centrality_pt[NcentralityBins][NptsubBins][kNHistos][kNCharges];
544 /* loop over histos */
545 for (Int_t ihisto = 0; ihisto < kNHistos; ihisto++)
546 for (Int_t icharge = 0; icharge < kNCharges; icharge++) {
549 hHisto[ihisto][icharge] = (THnSparseF *)filein->Get(Form("hHisto_%s_%s", histoName[ihisto], chargeName[icharge]));
552 hHisto[ihisto][icharge]->GetAxis(kPt)->SetRange(0, 0);
553 hHisto[ihisto][icharge]->GetAxis(kCentrality)->SetRange(0, 0);
554 hHistoEta_MB[ihisto][icharge] = hHisto[ihisto][icharge]->Projection(kEta);
555 hHistoEta_MB[ihisto][icharge]->SetName(Form("hHistoEta_MB_%s_%s", histoName[ihisto], chargeName[icharge]));
556 hHistoEta_MB[ihisto][icharge]->Sumw2();
558 for (Int_t ipt = 0; ipt < NptsubBins; ipt++) {
559 hHisto[ihisto][icharge]->GetAxis(kPt)->SetRange(ptsubBinMin[ipt] + 1, ptsubBinMax[ipt] + 1);
560 hHisto[ihisto][icharge]->GetAxis(kCentrality)->SetRange(0, 0);
561 hHistoEta_MB_pt[ipt][ihisto][icharge] = hHisto[ihisto][icharge]->Projection(kEta);
562 hHistoEta_MB_pt[ipt][ihisto][icharge]->SetName(Form("hHistoEta_MB_pt%d_%s_%s", ipt, histoName[ihisto], chargeName[icharge]));
563 hHistoEta_MB_pt[ipt][ihisto][icharge]->Sumw2();
566 /* centrality projection */
567 for (Int_t icent = 0; icent < NcentralityBins; icent++) {
568 hHisto[ihisto][icharge]->GetAxis(kPt)->SetRange(0, 0);
569 hHisto[ihisto][icharge]->GetAxis(kCentrality)->SetRange(icent + 1, icent + 1);
570 hHistoEta_centrality[icent][ihisto][icharge] = hHisto[ihisto][icharge]->Projection(kEta);
571 hHistoEta_centrality[icent][ihisto][icharge]->SetName(Form("hHistoEta_centrality%d_%s_%s", icent, histoName[ihisto], chargeName[icharge]));
572 hHistoEta_centrality[icent][ihisto][icharge]->Sumw2();
574 for (Int_t ipt = 0; ipt < NptsubBins; ipt++) {
575 hHisto[ihisto][icharge]->GetAxis(kPt)->SetRange(ptsubBinMin[ipt] + 1, ptsubBinMax[ipt] + 1);
576 hHisto[ihisto][icharge]->GetAxis(kCentrality)->SetRange(icent + 1, icent + 1);
577 hHistoEta_centrality_pt[icent][ipt][ihisto][icharge] = hHisto[ihisto][icharge]->Projection(kEta);
578 hHistoEta_centrality_pt[icent][ipt][ihisto][icharge]->SetName(Form("hHistoEta_centrality%d_pt%d_%s_%s", icent, ipt, histoName[ihisto], chargeName[icharge]));
579 hHistoEta_centrality_pt[icent][ipt][ihisto][icharge]->Sumw2();
585 TString str = filename;
586 str.Insert(str.Length() - TString(".root").Length(), ".efficiencyEta");
587 TFile *fileout = TFile::Open(str.Data(), "RECREATE");
589 /* efficiencies/fractions and write */
590 TH1D *hEfficiencyEta_MB[kNHistos][kNCharges], *hEfficiencyEta_centrality[NcentralityBins][kNHistos][kNCharges], *hEfficiencyEta_ratioMB_centrality[NcentralityBins][kNHistos][kNCharges];
591 TH1D *hEfficiencyEta_MB_pt[NptsubBins][kNHistos][kNCharges], *hEfficiencyEta_centrality_pt[NcentralityBins][NptsubBins][kNHistos][kNCharges], *hEfficiencyEta_ratioMB_centrality_pt[NcentralityBins][NptsubBins][kNHistos][kNCharges];
594 TH1D *hFractionEta_MB[kNHistos][kNCharges], *hFractionEta_centrality[NcentralityBins][kNHistos][kNCharges], *hFractionEta_ratioMB_centrality[NcentralityBins][kNHistos][kNCharges];
595 for (Int_t ihisto = 0; ihisto < kNHistos; ihisto++) {
596 for (Int_t icharge = 0; icharge < kNCharges; icharge++) {
598 if (ihisto == kAcceptedTracks) continue;
601 hEfficiencyEta_MB[ihisto][icharge] = new TH1D(*hHistoEta_MB[ihisto][icharge]);
602 hEfficiencyEta_MB[ihisto][icharge]->SetName(Form("hEfficiencyEta_MB_%s_%s", histoName[ihisto], chargeName[icharge]));
603 hEfficiencyEta_MB[ihisto][icharge]->SetLineWidth(2);
604 hEfficiencyEta_MB[ihisto][icharge]->SetLineColor(1);
605 hEfficiencyEta_MB[ihisto][icharge]->SetMarkerStyle(20);
606 hEfficiencyEta_MB[ihisto][icharge]->SetMarkerColor(1);
607 hEfficiencyEta_MB[ihisto][icharge]->Divide(hEfficiencyEta_MB[ihisto][icharge], hHistoEta_MB[kAcceptedTracks][icharge], 1, 1, "B");
608 hEfficiencyEta_MB[ihisto][icharge]->Write();
610 for (Int_t ipt = 0; ipt < NptsubBins; ipt++) {
611 hEfficiencyEta_MB_pt[ipt][ihisto][icharge] = new TH1D(*hHistoEta_MB_pt[ipt][ihisto][icharge]);
612 hEfficiencyEta_MB_pt[ipt][ihisto][icharge]->SetName(Form("hEfficiencyEta_MB_pt%d_%s_%s", ipt, histoName[ihisto], chargeName[icharge]));
613 hEfficiencyEta_MB_pt[ipt][ihisto][icharge]->SetLineWidth(2);
614 hEfficiencyEta_MB_pt[ipt][ihisto][icharge]->SetLineColor(1);
615 hEfficiencyEta_MB_pt[ipt][ihisto][icharge]->SetMarkerStyle(20);
616 hEfficiencyEta_MB_pt[ipt][ihisto][icharge]->SetMarkerColor(1);
617 hEfficiencyEta_MB_pt[ipt][ihisto][icharge]->Divide(hEfficiencyEta_MB_pt[ipt][ihisto][icharge], hHistoEta_MB_pt[ipt][kAcceptedTracks][icharge], 1, 1, "B");
618 hEfficiencyEta_MB_pt[ipt][ihisto][icharge]->Write();
621 /* multiplicity/centrality efficiency */
622 for (Int_t icent = 0; icent < NcentralityBins; icent++) {
623 hEfficiencyEta_centrality[icent][ihisto][icharge] = new TH1D(*hHistoEta_centrality[icent][ihisto][icharge]);
624 hEfficiencyEta_centrality[icent][ihisto][icharge]->SetName(Form("hEfficiencyEta_centrality%d_%s_%s", icent, histoName[ihisto], chargeName[icharge]));
625 hEfficiencyEta_centrality[icent][ihisto][icharge]->SetLineWidth(2);
626 hEfficiencyEta_centrality[icent][ihisto][icharge]->SetLineColor(multcentColor[icent]);
627 hEfficiencyEta_centrality[icent][ihisto][icharge]->SetMarkerStyle(20);
628 hEfficiencyEta_centrality[icent][ihisto][icharge]->SetMarkerColor(multcentColor[icent]);
629 hEfficiencyEta_centrality[icent][ihisto][icharge]->Divide(hEfficiencyEta_centrality[icent][ihisto][icharge], hHistoEta_centrality[icent][kAcceptedTracks][icharge], 1, 1, "B");
630 hEfficiencyEta_centrality[icent][ihisto][icharge]->Write();
633 hEfficiencyEta_ratioMB_centrality[icent][ihisto][icharge] = new TH1D(*hEfficiencyEta_centrality[icent][ihisto][icharge]);
634 hEfficiencyEta_ratioMB_centrality[icent][ihisto][icharge]->SetName(Form("hEfficiencyEta_ratioMB_centrality%d_%s_%s", icent, histoName[ihisto], chargeName[icharge]));
635 hEfficiencyEta_ratioMB_centrality[icent][ihisto][icharge]->SetLineWidth(2);
636 hEfficiencyEta_ratioMB_centrality[icent][ihisto][icharge]->SetLineColor(multcentColor[icent]);
637 hEfficiencyEta_ratioMB_centrality[icent][ihisto][icharge]->SetMarkerStyle(20);
638 hEfficiencyEta_ratioMB_centrality[icent][ihisto][icharge]->SetMarkerColor(multcentColor[icent]);
639 hEfficiencyEta_ratioMB_centrality[icent][ihisto][icharge]->Divide(hEfficiencyEta_MB[ihisto][icharge]);
640 hEfficiencyEta_ratioMB_centrality[icent][ihisto][icharge]->Write();
651 //_____________________________________________________________________________-
653 TOFmatchMC_efficiencyCent(const Char_t *filename, const Char_t *particle = "", const Char_t *charge = "", const Char_t *trdmode = "")
657 Double_t pt[npt + 1] = {0., 0.5, 1.0, 1.5, 5.0};
660 TFile *filein = TFile::Open(filename);
661 THnSparseF *hHisto[kNHistos];
662 TH1D *hHisto_all[kNHistos], *hHisto_MB_all[kNHistos], *hHisto_pt[kNHistos][MAXMULTCENTBINS], *hHisto_MB_pt[kNHistos][MAXMULTCENTBINS];
663 /* loop over histos */
664 for (Int_t ihisto = 0; ihisto < kNHistos; ihisto++) {
665 if (ihisto == kMatchedCorrelatedTracks) continue;
667 hHisto[ihisto] = (THnSparseF *)filein->Get(histoName[ihisto]);
668 /* set range limits */
669 hHisto[ihisto]->GetAxis(kRapidity)->SetRangeUser(-0.5 + kEpsilon, 0.5 - kEpsilon);
670 hHisto[ihisto]->GetAxis(kEta)->SetRangeUser(-0.8 + kEpsilon, 0.8 - kEpsilon);
671 hHisto[ihisto]->GetAxis(kPt)->SetRangeUser(0. + kEpsilon, 5.0 - kEpsilon);
672 /* select particle if requested */
673 for (Int_t ipart = 0; ipart < AliPID::kSPECIES; ipart++)
674 if (TString(particle) == AliPID::ParticleName(ipart))
675 hHisto[ihisto]->GetAxis(kParticle)->SetRange(ipart + 1, ipart + 1);
676 /* select charge if requested */
677 if (TString(charge) == "plus")
678 hHisto[ihisto]->GetAxis(kCharge)->SetRange(1, 1);
679 else if (TString(charge) == "minus")
680 hHisto[ihisto]->GetAxis(kCharge)->SetRange(2, 2);
681 /* select TRD mode if requested */
682 if (TString(trdmode) == "trdout")
683 hHisto[ihisto]->GetAxis(kTRDmode)->SetRange(1, 1);
684 else if (TString(trdmode) == "notrdout")
685 hHisto[ihisto]->GetAxis(kTRDmode)->SetRange(2, 2);
687 hHisto_all[ihisto] = hHisto[ihisto]->Projection(kMultCent);
688 hHisto_all[ihisto]->SetName(Form("%s_all", histoName[ihisto]));
689 hHisto_all[ihisto]->Sumw2();
690 /* MB all projection */
691 hHisto_MB_all[ihisto] = new TH1D(*hHisto_all[ihisto]);
692 hHisto_MB_all[ihisto]->SetName(Form("%s_MB_all", histoName[ihisto]));
693 for (Int_t i = 0; i < hHisto_MB_all[ihisto]->GetNbinsX(); i++) {
694 hHisto_MB_all[ihisto]->SetBinContent(i + 1, hHisto_all[ihisto]->Integral());
695 hHisto_MB_all[ihisto]->SetBinError(i + 1, TMath::Sqrt(hHisto_all[ihisto]->Integral()));
698 for (Int_t ibin = 0; ibin < npt; ibin++) {
699 hHisto[ihisto]->GetAxis(kPt)->SetRangeUser(pt[ibin] + kEpsilon, pt[ibin + 1] - kEpsilon);
700 hHisto_pt[ihisto][ibin] = hHisto[ihisto]->Projection(kMultCent);
701 hHisto_pt[ihisto][ibin]->SetName(Form("%s_pt%3.1f-%3.1f", histoName[ihisto], pt[ibin], pt[ibin + 1]));
702 hHisto_pt[ihisto][ibin]->Sumw2();
703 /* MB pt projection */
704 hHisto_MB_pt[ihisto][ibin] = new TH1D(*hHisto_pt[ihisto][ibin]);
705 hHisto_MB_pt[ihisto][ibin]->SetName(Form("%s_MB_pt%3.1f-%3.1f", histoName[ihisto], pt[ibin], pt[ibin + 1]));
706 for (Int_t i = 0; i < hHisto_MB_pt[ihisto][ibin]->GetNbinsX(); i++) {
707 hHisto_MB_pt[ihisto][ibin]->SetBinContent(i + 1, hHisto_pt[ihisto][ibin]->Integral());
708 hHisto_MB_pt[ihisto][ibin]->SetBinError(i + 1, TMath::Sqrt(hHisto_pt[ihisto][ibin]->Integral()));
712 /*** matched correlated histos ***/
714 hHisto_all[kMatchedCorrelatedTracks] = new TH1D(*hHisto_all[kMatchedTracks]);
715 hHisto_all[kMatchedCorrelatedTracks]->Add(hHisto_all[kUncorrelatedTracks], -1.);
716 hHisto_all[kMatchedCorrelatedTracks]->SetName(Form("%s_all", histoName[kMatchedCorrelatedTracks]));
717 /* MB all projection */
718 hHisto_MB_all[kMatchedCorrelatedTracks] = new TH1D(*hHisto_MB_all[kMatchedTracks]);
719 hHisto_MB_all[kMatchedCorrelatedTracks]->Add(hHisto_MB_all[kUncorrelatedTracks], -1.);
720 hHisto_MB_all[kMatchedCorrelatedTracks]->SetName(Form("%s_MB_all", histoName[kMatchedCorrelatedTracks]));
722 for (Int_t ibin = 0; ibin < npt; ibin++) {
723 hHisto_pt[kMatchedCorrelatedTracks][ibin] = new TH1D(*hHisto_pt[kMatchedTracks][ibin]);
724 hHisto_pt[kMatchedCorrelatedTracks][ibin]->Add(hHisto_pt[kUncorrelatedTracks][ibin], -1.);
725 hHisto_pt[kMatchedCorrelatedTracks][ibin]->SetName(Form("%s_pt%3.1f-%3.1f", histoName[kMatchedCorrelatedTracks], pt[ibin], pt[ibin + 1]));
726 /* MB pt projection */
727 hHisto_MB_pt[kMatchedCorrelatedTracks][ibin] = new TH1D(*hHisto_MB_pt[kMatchedTracks][ibin]);
728 hHisto_MB_pt[kMatchedCorrelatedTracks][ibin]->Add(hHisto_MB_pt[kUncorrelatedTracks][ibin], -1.);
729 hHisto_MB_pt[kMatchedCorrelatedTracks][ibin]->SetName(Form("%s_MB_pt%3.1f-%3.1f", histoName[kMatchedCorrelatedTracks], pt[ibin], pt[ibin + 1]));
733 TString str = filename;
734 str.Insert(str.Length() - TString(".root").Length(), ".efficiencyCent");
735 for (Int_t ipart = 0; ipart < AliPID::kSPECIES; ipart++)
736 if (TString(particle) == AliPID::ParticleName(ipart))
737 str.Insert(str.Length() - TString(".root").Length(), Form(".%s", AliPID::ParticleName(ipart)));
738 if (TString(charge) == "plus")
739 str.Insert(str.Length() - TString(".root").Length(), ".plus");
740 else if (TString(charge) == "minus")
741 str.Insert(str.Length() - TString(".root").Length(), ".minus");
742 if (TString(trdmode) == "trdout")
743 str.Insert(str.Length() - TString(".root").Length(), ".trdout");
744 else if (TString(trdmode) == "notrdout")
745 str.Insert(str.Length() - TString(".root").Length(), ".notrdout");
746 TFile *fileout = TFile::Open(str.Data(), "RECREATE");
748 /* efficiencies/fractions and write */
749 TH1D *hEfficiency_all[kNHistos], *hEfficiency_MB_all[kNHistos], *hEfficiency_ratioMB_all[kNHistos], *hEfficiency_pt[kNHistos][MAXMULTCENTBINS], *hEfficiency_MB_pt[kNHistos][MAXMULTCENTBINS], *hEfficiency_ratioMB_pt[kNHistos][MAXMULTCENTBINS];
752 // TH1D *hEfficiency_MB[kNHistos], *hEfficiency_multcent[kNHistos][MAXMULTCENTBINS], *hEfficiency_ratioMB_multcent[kNHistos][MAXMULTCENTBINS];
753 // TH1D *hFraction_MB[kNHistos], *hFraction_multcent[kNHistos][MAXMULTCENTBINS], *hFraction_ratioMB_multcent[kNHistos][MAXMULTCENTBINS];
754 for (Int_t ihisto = 0; ihisto < kNHistos; ihisto++) {
755 if (ihisto == kAcceptedTracks) continue;
757 hEfficiency_all[ihisto] = new TH1D(*hHisto_all[ihisto]);
758 hEfficiency_all[ihisto]->SetName(Form("%s_efficiency_all", histoName[ihisto]));
759 hEfficiency_all[ihisto]->SetLineWidth(2);
760 hEfficiency_all[ihisto]->SetLineColor(1);
761 hEfficiency_all[ihisto]->SetMarkerStyle(20);
762 hEfficiency_all[ihisto]->SetMarkerColor(1);
763 hEfficiency_all[ihisto]->Divide(hHisto_all[kAcceptedTracks]);
764 hEfficiency_all[ihisto]->Write();
765 /* MB all efficiency */
766 hEfficiency_MB_all[ihisto] = new TH1D(*hHisto_MB_all[ihisto]);
767 hEfficiency_MB_all[ihisto]->SetName(Form("%s_efficiency_MB_all", histoName[ihisto]));
768 hEfficiency_MB_all[ihisto]->Divide(hHisto_MB_all[kAcceptedTracks]);
769 hEfficiency_MB_all[ihisto]->Write();
771 hEfficiency_ratioMB_all[ihisto] = new TH1D(*hEfficiency_all[ihisto]);
772 hEfficiency_ratioMB_all[ihisto]->SetName(Form("%s_efficiency_ratioMB_all", histoName[ihisto]));
773 hEfficiency_ratioMB_all[ihisto]->Divide(hEfficiency_MB_all[ihisto]);
774 hEfficiency_ratioMB_all[ihisto]->Write();
776 for (Int_t ibin = 0; ibin < npt; ibin++) {
777 hEfficiency_pt[ihisto][ibin] = new TH1D(*hHisto_pt[ihisto][ibin]);
778 hEfficiency_pt[ihisto][ibin]->SetName(Form("%s_efficiency_pt%3.1f-%3.1f", histoName[ihisto], pt[ibin], pt[ibin + 1]));
779 hEfficiency_pt[ihisto][ibin]->SetLineWidth(2);
780 hEfficiency_pt[ihisto][ibin]->SetLineColor(multcentColor[ibin]);
781 hEfficiency_pt[ihisto][ibin]->SetMarkerStyle(20);
782 hEfficiency_pt[ihisto][ibin]->SetMarkerColor(multcentColor[ibin]);
783 hEfficiency_pt[ihisto][ibin]->Divide(hHisto_pt[kAcceptedTracks][ibin]);
784 hEfficiency_pt[ihisto][ibin]->Write();
785 /* MB pt efficiency */
786 hEfficiency_MB_pt[ihisto][ibin] = new TH1D(*hHisto_MB_pt[ihisto][ibin]);
787 hEfficiency_MB_pt[ihisto][ibin]->SetName(Form("%s_efficiency_MB_pt%3.1f-%3.1f", histoName[ihisto], pt[ibin], pt[ibin + 1]));
788 hEfficiency_MB_pt[ihisto][ibin]->Divide(hHisto_MB_pt[kAcceptedTracks][ibin]);
789 hEfficiency_MB_pt[ihisto][ibin]->Write();
790 /* ratio wrt. central */
791 hEfficiency_ratioMB_pt[ihisto][ibin] = new TH1D(*hEfficiency_pt[ihisto][ibin]);
792 hEfficiency_ratioMB_pt[ihisto][ibin]->SetName(Form("%s_efficiency_ratioMB_pt%3.1f-%3.1f", histoName[ihisto], pt[ibin], pt[ibin + 1]));
793 hEfficiency_ratioMB_pt[ihisto][ibin]->Divide(hEfficiency_MB_pt[ihisto][ibin]);
794 hEfficiency_ratioMB_pt[ihisto][ibin]->Write();
799 if (ihisto == kAcceptedTracks || ihisto == kMatchedTracks) continue;
801 hFraction_MB[ihisto] = new TH1D(*hHisto_MB[ihisto]);
802 hFraction_MB[ihisto]->SetName(Form("%s_fraction_MB", histoName[ihisto]));
803 hFraction_MB[ihisto]->SetLineWidth(2);
804 hFraction_MB[ihisto]->SetLineColor(1);
805 hFraction_MB[ihisto]->SetMarkerStyle(20);
806 hFraction_MB[ihisto]->SetMarkerColor(1);
807 hFraction_MB[ihisto]->Divide(hHisto_MB[kMatchedTracks]);
808 hFraction_MB[ihisto]->Write();
809 /* multiplicity/centrality fraction */
810 for (Int_t ibin = 0; ibin < hHisto[kMatchedTracks]->GetAxis(kMultCent)->GetNbins(); ibin++) {
811 hFraction_multcent[ihisto][ibin] = new TH1D(*hHisto_multcent[ihisto][ibin]);
812 hFraction_multcent[ihisto][ibin]->SetName(Form("%s_fraction_multcent%d", histoName[ihisto], ibin));
813 hFraction_multcent[ihisto][ibin]->SetLineWidth(2);
814 hFraction_multcent[ihisto][ibin]->SetLineColor(multcentColor[ibin]);
815 hFraction_multcent[ihisto][ibin]->SetMarkerStyle(20);
816 hFraction_multcent[ihisto][ibin]->SetMarkerColor(multcentColor[ibin]);
817 hFraction_multcent[ihisto][ibin]->Divide(hHisto_multcent[kMatchedTracks][ibin]);
818 hFraction_multcent[ihisto][ibin]->Write();
820 hFraction_ratioMB_multcent[ihisto][ibin] = new TH1D(*hFraction_multcent[ihisto][ibin]);
821 hFraction_ratioMB_multcent[ihisto][ibin]->SetName(Form("%s_fraction_ratioMB_multcent%d", histoName[ihisto], ibin));
822 hFraction_ratioMB_multcent[ihisto][ibin]->SetLineWidth(2);
823 hFraction_ratioMB_multcent[ihisto][ibin]->SetLineColor(multcentColor[ibin]);
824 hFraction_ratioMB_multcent[ihisto][ibin]->SetMarkerStyle(20);
825 hFraction_ratioMB_multcent[ihisto][ibin]->SetMarkerColor(multcentColor[ibin]);
826 hFraction_ratioMB_multcent[ihisto][ibin]->Divide(hFraction_MB[ihisto]);
827 hFraction_ratioMB_multcent[ihisto][ibin]->Write();
838 //_____________________________________________________________________________-
841 TOFmatchMC_get(const Char_t *filename, const Char_t *name, Option_t *opt = "", Int_t color = 1, Int_t marker = 20)
844 TFile *f = TFile::Open(filename);
845 if (!f || !f->IsOpen())
847 TH1D *h = (TH1D *)f->Get(name);
850 h->SetLineColor(color);
852 h->SetMarkerColor(color);
853 h->SetMarkerStyle(marker);
858 //_____________________________________________________________________________-
861 TOFmatchMC_divide(const Char_t *filename, const Char_t *name1, const Char_t *name2, Option_t *opt = "")
864 TFile *f = TFile::Open(filename);
865 if (!f || !f->IsOpen())
867 TH1D *h1 = (TH1D *)f->Get(name1);
868 TH1D *h2 = (TH1D *)f->Get(name2);
871 TH1D *hr = new TH1D(*h1);
877 //_____________________________________________________________________________-
880 TOFmatchMC_sub(const Char_t *filename, const Char_t *name1, const Char_t *name2, Option_t *opt = "", Int_t color = 1, Int_t marker = 20)
883 TFile *f = TFile::Open(filename);
884 if (!f || !f->IsOpen())
886 TH1D *h1 = (TH1D *)f->Get(name1);
887 TH1D *h2 = (TH1D *)f->Get(name2);
890 TH1D *hr = new TH1D(*h1);
892 hr->SetLineColor(color);
894 hr->SetMarkerColor(color);
895 hr->SetMarkerStyle(marker);
900 //_____________________________________________________________________________-
903 TOFmatchMC_compare(const Char_t *filename1, const Char_t *filename2, const Char_t *name, Option_t *opt = "", Int_t color = 1, Int_t marker = 20)
906 TFile *f1 = TFile::Open(filename1);
907 TFile *f2 = TFile::Open(filename2);
908 if (!f1 || !f2 || !f1->IsOpen() || !f2->IsOpen())
910 TH1D *h1 = (TH1D *)f1->Get(name);
911 TH1D *h2 = (TH1D *)f2->Get(name);
914 TH1D *hr = new TH1D(*h1);
916 hr->SetLineColor(color);
918 hr->SetMarkerColor(color);
919 hr->SetMarkerStyle(marker);
924 //_____________________________________________________________________________-
927 TOFmatchMC_comparesub(const Char_t *filename1, const Char_t *filename2, const Char_t *name1, const Char_t *name2, Option_t *opt = "", Int_t color = 1, Int_t marker = 20)
930 TFile *f1 = TFile::Open(filename1);
931 TFile *f2 = TFile::Open(filename2);
932 if (!f1 || !f2 || !f1->IsOpen() || !f2->IsOpen())
934 TH1D *h11 = (TH1D *)f1->Get(name1);
935 TH1D *h21 = (TH1D *)f2->Get(name1);
936 TH1D *h12 = (TH1D *)f1->Get(name2);
937 TH1D *h22 = (TH1D *)f2->Get(name2);
938 if (!h11 || !h21 || !h12 || !h22)
940 TH1D *hs1 = new TH1D(*h11);
942 TH1D *hs2 = new TH1D(*h21);
944 TH1D *hr = new TH1D(*hs1);
946 hr->SetLineColor(color);
948 hr->SetMarkerColor(color);
949 hr->SetMarkerStyle(marker);
956 TOFmatchEff_efficiencyPt_MB_plot(const Char_t *filename, Int_t ihisto = kMatchedTracks, Int_t icharge, Int_t marker = 20, Int_t color = 2, Option_t *opt = "")
959 TCanvas *cCanvas1 = new TCanvas("cCanvas1");
960 TCanvas *cCanvas2 = new TCanvas("cCanvas2");
961 const Char_t *destdir = "matchingEfficiency_DATA";
963 Double_t ptMin = 0.5;
964 Double_t ptMax = 5.0;
966 TF1 *fEff = new TF1("fEff", "[0] + [1] * x - [2] * TMath::Exp(-[3] * TMath::Power(x, [4]))", 0., 5.0);
967 fEff->SetParameter(0, 0.5);
968 fEff->SetParameter(1, 0.);
969 fEff->SetParameter(2, 0.5);
970 fEff->SetParameter(3, 1.);
971 fEff->SetParameter(4, 2.);
974 TFile *filein = TFile::Open(filename);
975 TH1D *hEfficiencyPt = (TH1D *)filein->Get(Form("hEfficiencyPt_MB_%s_%s", histoName[ihisto], chargeName[icharge]));
976 hEfficiencyPt->Fit(fEff, "0", "", 0.5, 5.0);
977 hEfficiencyPt->SetTitle(Form("%s tracks;p_{T} (GeV/c);acceptance #times efficiency;", chargeName[icharge]));
978 hEfficiencyPt->SetMinimum(0.4);
979 hEfficiencyPt->SetMaximum(0.8);
980 hEfficiencyPt->SetMarkerStyle(marker);
981 hEfficiencyPt->SetMarkerColor(color);
982 hEfficiencyPt->SetMarkerSize(1.5);
983 hEfficiencyPt->SetLineWidth(2);
984 hEfficiencyPt->SetLineColor(color);
985 hEfficiencyPt->GetXaxis()->SetRangeUser(ptMin + 0.001, ptMax - 0.001);
986 hEfficiencyPt->SetStats(kFALSE);
988 hEfficiencyPt->Draw(opt);
991 cCanvas1->SetGridx();
992 cCanvas1->SetGridy();
993 cCanvas1->SaveAs(Form("%s/efficiencyPt_MB_%s.C", destdir, chargeName[icharge]));
994 cCanvas1->SaveAs(Form("%s/efficiencyPt_MB_%s.root", destdir, chargeName[icharge]));
995 cCanvas1->SaveAs(Form("%s/efficiencyPt_MB_%s.png", destdir, chargeName[icharge]));
996 cCanvas1->SaveAs(Form("%s/efficiencyPt_MB_%s.eps", destdir, chargeName[icharge]));
998 TH1D *hRatioPt = new TH1D(*hEfficiencyPt);
999 hRatioPt->Divide(fEff);
1000 hRatioPt->SetTitle(Form("%s tracks;p_{T} (GeV/c);ratio wrt. fitted dependence;", chargeName[icharge]));
1001 hRatioPt->SetMinimum(0.9);
1002 hRatioPt->SetMaximum(1.1);
1006 cCanvas2->SetGridx();
1007 cCanvas2->SetGridy();
1008 cCanvas2->SaveAs(Form("%s/efficiencyPt_ratioFit_MB_%s.C", destdir, chargeName[icharge]));
1009 cCanvas2->SaveAs(Form("%s/efficiencyPt_ratioFit_MB_%s.root", destdir, chargeName[icharge]));
1010 cCanvas2->SaveAs(Form("%s/efficiencyPt_ratioFit_MB_%s.png", destdir, chargeName[icharge]));
1011 cCanvas2->SaveAs(Form("%s/efficiencyPt_ratioFit_MB_%s.eps", destdir, chargeName[icharge]));
1014 // hEfficiencyPt->Add(fEff, -1.);
1015 return hEfficiencyPt;
1019 //_____________________________________________________________________________-
1022 TOFmatchEff_efficiencyPt_centrality_all_plot(const Char_t *filename, Int_t ihisto = kMatchedTracks, Int_t marker = 20, Int_t color = 1, Option_t *opt = "")
1025 TCanvas *cCanvas1 = new TCanvas("cCanvas1");
1026 TCanvas *cCanvas2 = new TCanvas("cCanvas2");
1027 const Char_t *destdir = "matchingEfficiency_DATA";
1029 Double_t ptMin = 0.5;
1030 Double_t ptMax = 5.0;
1032 TF1 *fMismatchFrac = new TF1("fMismatchFrac", "([0]+[1]*TMath::Exp(-[2]*TMath::Power(x,[3])))*[4]", 0., 5.0);
1033 fMismatchFrac->SetParameter(0, 0.0447133);
1034 fMismatchFrac->SetParameter(1, 0.179172);
1035 fMismatchFrac->SetParameter(2, 2.54333);
1036 fMismatchFrac->SetParameter(3, 1.16819);
1037 fMismatchFrac->SetParameter(4, 1.);
1039 TF1 *fEff = new TF1("fEff", "([0] + [1] * x - [2] * TMath::Exp(-[3] * TMath::Power(x, [4]))) * [5]", 0., 5.0);
1040 fEff->SetParameter(0, 0.5);
1041 fEff->SetParameter(1, 0.);
1042 fEff->SetParameter(2, 0.5);
1043 fEff->SetParameter(3, 1.);
1044 fEff->SetParameter(4, 2.);
1045 fEff->FixParameter(5, 1.);
1047 TFile *filein = TFile::Open(filename);
1048 TH1D *hEfficiencyPt = (TH1D *)filein->Get(Form("hEfficiencyAllPt_MB_%s", histoName[ihisto]));
1049 hEfficiencyPt->Fit(fEff, "0", "", 0.5, 5.0);
1050 hEfficiencyPt->SetTitle("all particles;p_{T} (GeV/c);acceptance #times efficiency;");
1051 hEfficiencyPt->SetMinimum(0.4);
1052 hEfficiencyPt->SetMaximum(0.8);
1053 hEfficiencyPt->SetMarkerStyle(marker);
1054 hEfficiencyPt->SetMarkerColor(color);
1055 hEfficiencyPt->SetMarkerSize(1.5);
1056 hEfficiencyPt->SetLineWidth(2);
1057 hEfficiencyPt->SetLineColor(color);
1058 hEfficiencyPt->GetXaxis()->SetRangeUser(0.5 + 0.001, 5.0 - 0.001);
1059 hEfficiencyPt->SetStats(kFALSE);
1061 hEfficiencyPt->Draw(opt);
1064 cCanvas1->SetGridx();
1065 cCanvas1->SetGridy();
1066 cCanvas1->SaveAs(Form("%s/efficiencyPt_MB_all.C", destdir));
1067 cCanvas1->SaveAs(Form("%s/efficiencyPt_MB_all.root", destdir));
1068 cCanvas1->SaveAs(Form("%s/efficiencyPt_MB_all.png", destdir));
1069 cCanvas1->SaveAs(Form("%s/efficiencyPt_MB_all.eps", destdir));
1071 TH1D *hRatioPt = new TH1D(*hEfficiencyPt);
1072 hRatioPt->Divide(fEff);
1073 hRatioPt->SetTitle("all particles;p_{T} (GeV/c);ratio wrt. fitted dependence;");
1074 hRatioPt->SetMinimum(0.9);
1075 hRatioPt->SetMaximum(1.1);
1079 cCanvas2->SetGridx();
1080 cCanvas2->SetGridy();
1081 cCanvas2->SaveAs(Form("%s/efficiencyPt_ratioFit_MB_all.C", destdir));
1082 cCanvas2->SaveAs(Form("%s/efficiencyPt_ratioFit_MB_all.root", destdir));
1083 cCanvas2->SaveAs(Form("%s/efficiencyPt_ratioFit_MB_all.png", destdir));
1084 cCanvas2->SaveAs(Form("%s/efficiencyPt_ratioFit_MB_all.eps", destdir));
1086 /* fix efficiency shape and release scale factor */
1087 fEff->FixParameter(0, fEff->GetParameter(0));
1088 fEff->FixParameter(1, fEff->GetParameter(1));
1089 fEff->FixParameter(2, fEff->GetParameter(2));
1090 fEff->FixParameter(3, fEff->GetParameter(3));
1091 fEff->FixParameter(4, fEff->GetParameter(4));
1092 fEff->ReleaseParameter(5);
1094 TH1D *hEfficiencyCent = new TH1D("hEfficiencyCent", "all particles;centrality percentile;acceptance x efficiency scale factor;", NcentralityBins, centralityBin);
1095 hEfficiencyCent->SetMinimum(0.95);
1096 hEfficiencyCent->SetMaximum(1.05);
1097 hEfficiencyCent->SetMarkerStyle(marker);
1098 hEfficiencyCent->SetMarkerColor(color);
1099 hEfficiencyCent->SetMarkerSize(1.5);
1100 hEfficiencyCent->SetLineWidth(2);
1101 hEfficiencyCent->SetLineColor(color);
1102 hEfficiencyCent->SetStats(kFALSE);
1105 TH1D *hEfficiencyPt_cent[NcentralityBins];
1106 TH1D *hRatioPt_cent[NcentralityBins];
1107 for (Int_t icent = 0; icent < NcentralityBins; icent++) {
1110 hEfficiencyPt_cent[icent] = (TH1D *)filein->Get(Form("hEfficiencyAllPt_centrality%d_%s", icent, histoName[ihisto]));
1111 hEfficiencyPt_cent[icent]->Fit(fEff, "", "", 0.5, 5.0);
1113 hEfficiencyPt_cent[icent]->SetTitle(Form("all particles (%d-%d\%);p_{T} (GeV/c);acceptance #times efficiency;", (Int_t)centralityBin[icent], (Int_t)centralityBin[icent + 1]));
1114 hEfficiencyPt_cent[icent]->SetMinimum(0.2);
1115 hEfficiencyPt_cent[icent]->SetMaximum(0.8);
1116 hEfficiencyPt_cent[icent]->SetMarkerStyle(marker);
1117 hEfficiencyPt_cent[icent]->SetMarkerColor(color);
1118 hEfficiencyPt_cent[icent]->SetMarkerSize(1.5);
1119 hEfficiencyPt_cent[icent]->SetLineWidth(2);
1120 hEfficiencyPt_cent[icent]->SetLineColor(color);
1121 hEfficiencyPt_cent[icent]->GetXaxis()->SetRangeUser(0.5 + 0.001, 5.0 - 0.001);
1122 hEfficiencyPt_cent[icent]->SetStats(kFALSE);
1124 hEfficiencyPt_cent[icent]->Draw(opt);
1127 hEfficiencyCent->SetBinContent(icent + 1, fEff->GetParameter(5));
1128 hEfficiencyCent->SetBinError(icent + 1, fEff->GetParError(5));
1130 cCanvas1->SetGridx();
1131 cCanvas1->SetGridy();
1132 cCanvas1->SaveAs(Form("%s/efficiencyPt_centrality%d_all.C", destdir, icent));
1133 cCanvas1->SaveAs(Form("%s/efficiencyPt_centrality%d_all.root", destdir, icent));
1134 cCanvas1->SaveAs(Form("%s/efficiencyPt_centrality%d_all.png", destdir, icent));
1135 cCanvas1->SaveAs(Form("%s/efficiencyPt_centrality%d_all.eps", destdir, icent));
1137 hRatioPt_cent[icent] = new TH1D(*hEfficiencyPt_cent[icent]);
1138 hRatioPt_cent[icent]->Divide(fEff);
1139 hRatioPt_cent[icent]->SetTitle(Form("all particles (%d-%d\%);p_{T} (GeV/c);ratio wrt. fitted dependence;", (Int_t)centralityBin[icent], (Int_t)centralityBin[icent + 1]));
1140 hRatioPt_cent[icent]->SetMinimum(0.9);
1141 hRatioPt_cent[icent]->SetMaximum(1.1);
1143 hRatioPt_cent[icent]->Draw();
1145 cCanvas2->SetGridx();
1146 cCanvas2->SetGridy();
1147 cCanvas2->SaveAs(Form("%s/efficiencyPt_ratioFit_centrality%d_all.C", destdir, icent));
1148 cCanvas2->SaveAs(Form("%s/efficiencyPt_ratioFit_centrality%d_all.root", destdir, icent));
1149 cCanvas2->SaveAs(Form("%s/efficiencyPt_ratioFit_centrality%d_all.png", destdir, icent));
1150 cCanvas2->SaveAs(Form("%s/efficiencyPt_ratioFit_centrality%d_all.eps", destdir, icent));
1155 TF1 *fEffCent = new TF1("fEffCent", "[0] - [1] * TMath::Exp(-[2] * TMath::Power(x, [3]))", 0., 90.);
1156 fEffCent->SetParameter(0, 1.02);
1157 fEffCent->SetParameter(1, 0.04);
1158 fEffCent->SetParameter(2, 0.001);
1159 fEffCent->SetParameter(3, 2.);
1160 // hEfficiencyCent->Fit(fEffCent, "q0", "", 0., 90.);
1162 TCanvas *cCanvas3 = new TCanvas("cCanvas3");
1163 hEfficiencyCent->Draw();
1164 // fEffCent->Draw("same");
1166 cCanvas3->SetGridx();
1167 cCanvas3->SetGridy();
1168 cCanvas3->SaveAs(Form("%s/efficiencyCentrality_scaleFactor_all.C", destdir));
1169 cCanvas3->SaveAs(Form("%s/efficiencyCentrality_scaleFactor_all.root", destdir));
1170 cCanvas3->SaveAs(Form("%s/efficiencyCentrality_scaleFactor_all.png", destdir));
1171 cCanvas3->SaveAs(Form("%s/efficiencyCentrality_scaleFactor_all.eps", destdir));
1173 TCanvas *cCanvas4 = new TCanvas("cCanvas4");
1175 TH1D *hRatioCent = new TH1D(*hEfficiencyCent);
1176 hRatioCent->Divide(fEffCent);
1177 hRatioCent->SetTitle(Form("all particles;centrality percentile;ratio wrt. fitted dependence;"));
1178 hRatioCent->SetMinimum(0.95);
1179 hRatioCent->SetMaximum(1.05);
1183 cCanvas4->SetGridx();
1184 cCanvas4->SetGridy();
1185 cCanvas4->SaveAs(Form("%s/efficiencyCentrality_scaleFactor_ratioFit_all.C", destdir));
1186 cCanvas4->SaveAs(Form("%s/efficiencyCentrality_scaleFactor_ratioFit_all.root", destdir));
1187 cCanvas4->SaveAs(Form("%s/efficiencyCentrality_scaleFactor_ratioFit_all.png", destdir));
1188 cCanvas4->SaveAs(Form("%s/efficiencyCentrality_scaleFactor_ratioFit_all.eps", destdir));
1192 // hEfficiencyPt->Add(fEff, -1.);
1193 return hEfficiencyCent;
1197 //_____________________________________________________________________________-
1200 TOFmatchEff_efficiencyPt_centrality_all_plot_nomismatch(const Char_t *filename, Int_t ihisto = kMatchedTracks, Int_t marker = 20, Int_t color = 1, Option_t *opt = "")
1203 TF1 *fpol0 = (TF1 *)gROOT->GetFunction("pol0");
1204 fpol0->SetRange(0., 5.0);
1206 TCanvas *cCanvas1 = new TCanvas("cCanvas1");
1207 TCanvas *cCanvas2 = new TCanvas("cCanvas2");
1208 const Char_t *destdir = "matchingEfficiency_DATA";
1210 Double_t ptMin = 0.5;
1211 Double_t ptMax = 5.0;
1213 TF1 *fMismatchCorr = new TF1("fMismatchCorr", "1. - ([0]+[1]*TMath::Exp(-[2]*TMath::Power(x,[3])))*[4]", 0., 5.0);
1214 fMismatchCorr->SetParameter(0, 4.47133e-02);
1215 fMismatchCorr->SetParameter(1, 1.79172e-01);
1216 fMismatchCorr->SetParameter(2, 2.54333e+00);
1217 fMismatchCorr->SetParameter(3, 1.16819e+00);
1218 fMismatchCorr->SetParameter(4, 1.);
1220 TF1 *fMismatchScale = new TF1("fMismatchScale", "[0] + [1] * TMath::Exp(-[2] * x)", 0., 100.);
1221 fMismatchScale->SetParameter(0, -6.36877e-02);
1222 fMismatchScale->SetParameter(1, 1.74818e+00);
1223 fMismatchScale->SetParameter(2, 3.00818e-02);
1225 TFile *filein = TFile::Open(filename);
1226 TH1D *hEfficiencyPt = (TH1D *)filein->Get(Form("hEfficiencyAllPt_MB_%s", histoName[ihisto]));
1227 if (ihisto != kMatchedCorrelatedTracks)
1228 hEfficiencyPt->Multiply(fMismatchCorr);
1229 hEfficiencyPt->SetTitle("all particles;p_{T} (GeV/c);acceptance #times efficiency;");
1230 hEfficiencyPt->SetMinimum(0.4);
1231 hEfficiencyPt->SetMaximum(0.8);
1232 hEfficiencyPt->SetMarkerStyle(marker);
1233 hEfficiencyPt->SetMarkerColor(color);
1234 hEfficiencyPt->SetMarkerSize(1.5);
1235 hEfficiencyPt->SetLineWidth(2);
1236 hEfficiencyPt->SetLineColor(color);
1237 hEfficiencyPt->GetXaxis()->SetRangeUser(0.5 + 0.001, 5.0 - 0.001);
1238 hEfficiencyPt->SetStats(kFALSE);
1240 hEfficiencyPt->Draw(opt);
1242 cCanvas1->SetGridx();
1243 cCanvas1->SetGridy();
1244 cCanvas1->SaveAs(Form("%s/efficiencyPt_MB_all.C", destdir));
1245 cCanvas1->SaveAs(Form("%s/efficiencyPt_MB_all.root", destdir));
1246 cCanvas1->SaveAs(Form("%s/efficiencyPt_MB_all.png", destdir));
1247 cCanvas1->SaveAs(Form("%s/efficiencyPt_MB_all.eps", destdir));
1249 TH1D *hEfficiencyCent = new TH1D("hEfficiencyCent", "all particles;centrality percentile;acceptance x efficiency scale factor;", NcentralityBins, centralityBin);
1250 hEfficiencyCent->SetMinimum(0.95);
1251 hEfficiencyCent->SetMaximum(1.05);
1252 hEfficiencyCent->SetMarkerStyle(marker);
1253 hEfficiencyCent->SetMarkerColor(color);
1254 hEfficiencyCent->SetMarkerSize(1.5);
1255 hEfficiencyCent->SetLineWidth(2);
1256 hEfficiencyCent->SetLineColor(color);
1257 hEfficiencyCent->SetStats(kFALSE);
1260 TH1D *hEfficiencyPt_cent[NcentralityBins];
1261 TH1D *hRatioPt_cent[NcentralityBins];
1263 for (Int_t icent = 0; icent < NcentralityBins; icent++) {
1265 centmean = 0.5 * (centralityBin[icent] + centralityBin[icent + 1]);
1266 hEfficiencyPt_cent[icent] = (TH1D *)filein->Get(Form("hEfficiencyAllPt_centrality%d_%s", icent, histoName[ihisto]));
1267 fMismatchCorr->SetParameter(4, fMismatchScale->Eval(centmean));
1268 if (ihisto != kMatchedCorrelatedTracks)
1269 hEfficiencyPt_cent[icent]->Multiply(fMismatchCorr);
1270 hEfficiencyPt_cent[icent]->Divide(hEfficiencyPt);
1271 hEfficiencyPt_cent[icent]->Fit(fpol0, "q0", "", 0.5, 5.0);
1272 hEfficiencyPt_cent[icent]->SetTitle(Form("all particles (%d-%d\%);p_{T} (GeV/c);acceptance #times efficiency;", (Int_t)centralityBin[icent], (Int_t)centralityBin[icent + 1]));
1273 hEfficiencyPt_cent[icent]->SetMinimum(0.2);
1274 hEfficiencyPt_cent[icent]->SetMaximum(0.8);
1275 hEfficiencyPt_cent[icent]->SetMarkerStyle(marker);
1276 hEfficiencyPt_cent[icent]->SetMarkerColor(color);
1277 hEfficiencyPt_cent[icent]->SetMarkerSize(1.5);
1278 hEfficiencyPt_cent[icent]->SetLineWidth(2);
1279 hEfficiencyPt_cent[icent]->SetLineColor(color);
1280 hEfficiencyPt_cent[icent]->GetXaxis()->SetRangeUser(0.5 + 0.001, 5.0 - 0.001);
1281 hEfficiencyPt_cent[icent]->SetStats(kFALSE);
1283 hEfficiencyPt_cent[icent]->Draw(opt);
1284 fpol0->Draw("same");
1286 hEfficiencyCent->SetBinContent(icent + 1, fpol0->GetParameter(0));
1287 hEfficiencyCent->SetBinError(icent + 1, fpol0->GetParError(0));
1289 cCanvas1->SetGridx();
1290 cCanvas1->SetGridy();
1291 cCanvas1->SaveAs(Form("%s/efficiencyPt_centrality%d_all.C", destdir, icent));
1292 cCanvas1->SaveAs(Form("%s/efficiencyPt_centrality%d_all.root", destdir, icent));
1293 cCanvas1->SaveAs(Form("%s/efficiencyPt_centrality%d_all.png", destdir, icent));
1294 cCanvas1->SaveAs(Form("%s/efficiencyPt_centrality%d_all.eps", destdir, icent));
1296 hRatioPt_cent[icent] = new TH1D(*hEfficiencyPt_cent[icent]);
1297 hRatioPt_cent[icent]->Divide(fpol0);
1298 hRatioPt_cent[icent]->SetTitle(Form("all particles (%d-%d\%);p_{T} (GeV/c);ratio wrt. fitted dependence;", (Int_t)centralityBin[icent], (Int_t)centralityBin[icent + 1]));
1299 hRatioPt_cent[icent]->SetMinimum(0.9);
1300 hRatioPt_cent[icent]->SetMaximum(1.1);
1302 hRatioPt_cent[icent]->Draw();
1304 cCanvas2->SetGridx();
1305 cCanvas2->SetGridy();
1306 cCanvas2->SaveAs(Form("%s/efficiencyPt_ratioFit_centrality%d_all.C", destdir, icent));
1307 cCanvas2->SaveAs(Form("%s/efficiencyPt_ratioFit_centrality%d_all.root", destdir, icent));
1308 cCanvas2->SaveAs(Form("%s/efficiencyPt_ratioFit_centrality%d_all.png", destdir, icent));
1309 cCanvas2->SaveAs(Form("%s/efficiencyPt_ratioFit_centrality%d_all.eps", destdir, icent));
1314 TF1 *fEffCent = new TF1("fEffCent", "[0] - [1] * TMath::Exp(-[2] * TMath::Power(x, [3]))", 0., 90.);
1315 fEffCent->SetParameter(0, 1.02);
1316 fEffCent->SetParameter(1, 0.04);
1317 fEffCent->SetParameter(2, 0.001);
1318 fEffCent->SetParameter(3, 2.);
1319 // hEfficiencyCent->Fit(fEffCent, "q0", "", 0., 90.);
1321 TCanvas *cCanvas3 = new TCanvas("cCanvas3");
1322 hEfficiencyCent->Draw();
1323 // fEffCent->Draw("same");
1325 cCanvas3->SetGridx();
1326 cCanvas3->SetGridy();
1327 cCanvas3->SaveAs(Form("%s/efficiencyCentrality_scaleFactor_all.C", destdir));
1328 cCanvas3->SaveAs(Form("%s/efficiencyCentrality_scaleFactor_all.root", destdir));
1329 cCanvas3->SaveAs(Form("%s/efficiencyCentrality_scaleFactor_all.png", destdir));
1330 cCanvas3->SaveAs(Form("%s/efficiencyCentrality_scaleFactor_all.eps", destdir));
1332 TCanvas *cCanvas4 = new TCanvas("cCanvas4");
1334 TH1D *hRatioCent = new TH1D(*hEfficiencyCent);
1335 hRatioCent->Divide(fEffCent);
1336 hRatioCent->SetTitle(Form("all particles;centrality percentile;ratio wrt. fitted dependence;"));
1337 hRatioCent->SetMinimum(0.95);
1338 hRatioCent->SetMaximum(1.05);
1342 cCanvas4->SetGridx();
1343 cCanvas4->SetGridy();
1344 cCanvas4->SaveAs(Form("%s/efficiencyCentrality_scaleFactor_ratioFit_all.C", destdir));
1345 cCanvas4->SaveAs(Form("%s/efficiencyCentrality_scaleFactor_ratioFit_all.root", destdir));
1346 cCanvas4->SaveAs(Form("%s/efficiencyCentrality_scaleFactor_ratioFit_all.png", destdir));
1347 cCanvas4->SaveAs(Form("%s/efficiencyCentrality_scaleFactor_ratioFit_all.eps", destdir));
1351 // hEfficiencyPt->Add(fEff, -1.);
1352 return hEfficiencyCent;
1357 TOFmatchEff_rapidityCut(const Char_t *filename, Int_t ipart, Int_t icharge, Int_t color = 2, Int_t marker = 20, Option_t *opt = "")
1360 TFile *filein = TFile::Open(filename);
1361 TH1D *hEfficiency_MB = (TH1D *)filein->Get(Form("hEfficiencyPt_MB_hMatchedTracks_%s", chargeName[icharge]));
1362 TH1D *hEfficiencyPID_MB = (TH1D *)filein->Get(Form("hEfficiencyPIDPt_MB_hMatchedTracks_%s_%s", AliPID::ParticleName(ipart), chargeName[icharge]));
1364 TH1D *hRatio = new TH1D(*hEfficiencyPID_MB);
1365 hRatio->Divide(hEfficiency_MB);
1366 hRatio->SetLineColor(color);
1367 hRatio->SetLineWidth(2);
1368 hRatio->SetMarkerColor(color);
1369 hRatio->SetMarkerStyle(marker);
1375 TOFmatchEff_checkFEAmap(const Char_t *filename)
1378 TFile *filein = TFile::Open(filename);
1379 TH2F *hFEAMap = (TH2F *)filein->Get("hFEAMap");
1380 TH2F *hEmptyFEA = new TH2F("hEmptyFEA", "", 72, 0., 18., 91, 0., 91.);
1382 Float_t nhits = hFEAMap->GetEntries();
1384 printf("found not hits.\n");
1387 printf("found %d hits\n", nhits);
1388 Float_t avhits = nhits / (hFEAMap->GetNbinsX() * hFEAMap->GetNbinsX());
1389 printf("on average %f hits/FEA\n", avhits);
1391 TH1F *hFEANormHit = new TH1F("hFEANormHit", "", 1000, 0., 3.);
1392 for (Int_t ibinx = 0; ibinx < hFEAMap->GetNbinsX(); ibinx++)
1393 for (Int_t ibiny = 0; ibiny < hFEAMap->GetNbinsY(); ibiny++) {
1394 if (hFEAMap->GetBinContent(ibinx + 1, ibiny + 1) == 0.) {
1395 hEmptyFEA->SetBinContent(ibinx + 1, ibiny + 1, 1.);
1398 hFEANormHit->Fill(hFEAMap->GetBinContent(ibinx + 1, ibiny + 1) / avhits);
1401 TCanvas *cCanvas1 = new TCanvas("cCanvas1");
1402 cCanvas1->Divide(1, 2);
1404 hFEAMap->Draw("colz");
1406 hEmptyFEA->Draw("colz");
1408 TCanvas *cCanvas2 = new TCanvas("cCanvas2");
1409 hFEANormHit->Draw();
1412 TFile *fileout = TFile::Open(Form("TOFmatchEff_checkFEAmap.%s", filename), "RECREATE");
1414 hFEANormHit->Write();