]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG2/SPECTRA/AliProtonAnalysis.cxx
code cleanup (Theo)
[u/mrichter/AliRoot.git] / PWG2 / SPECTRA / AliProtonAnalysis.cxx
CommitLineData
734d2c12 1/**************************************************************************
2 * Author: Panos Christakoglou. *
3 * Contributors are mentioned in the code where appropriate. *
4 * *
5 * Permission to use, copy, modify and distribute this software and its *
6 * documentation strictly for non-commercial purposes is hereby granted *
7 * without fee, provided that the above copyright notice appears in all *
8 * copies and that both the copyright notice and this permission notice *
9 * appear in the supporting documentation. The authors make no claims *
10 * about the suitability of this software for any purpose. It is *
11 * provided "as is" without express or implied warranty. *
12 **************************************************************************/
13
14/* $Id$ */
15
16//-----------------------------------------------------------------
17// AliProtonAnalysis class
18// This is the class to deal with the proton analysis
dd3fa486 19// Origin: Panos Christakoglou | Panos.Christakoglou@cern.ch
734d2c12 20//-----------------------------------------------------------------
21#include <Riostream.h>
22#include <TFile.h>
23#include <TSystem.h>
aafecd8b 24#include <TF1.h>
37cb8683 25#include <TH3F.h>
251e4034 26#include <TH2D.h>
734d2c12 27#include <TH1D.h>
3f6d0c08 28#include <TH1I.h>
e4358d7f 29#include <TParticle.h>
735cc63d 30#include <TList.h>
734d2c12 31
2b748670 32#include <AliExternalTrackParam.h>
ee4ca40d 33#include <AliAODEvent.h>
734d2c12 34#include <AliESDEvent.h>
73aba974 35//#include <AliLog.h>
ee4ca40d 36#include <AliPID.h>
e4358d7f 37#include <AliStack.h>
39f2a708 38#include <AliCFContainer.h>
39#include <AliCFEffGrid.h>
251e4034 40#include <AliCFDataGrid.h>
ff672838 41#include <AliTPCPIDResponse.h>
42#include <AliESDpid.h>
73aba974 43class AliLog;
44class AliESDVertex;
45
46#include "AliProtonAnalysis.h"
47#include "AliProtonAnalysisBase.h"
e4358d7f 48
734d2c12 49ClassImp(AliProtonAnalysis)
50
51//____________________________________________________________________//
52AliProtonAnalysis::AliProtonAnalysis() :
0ab648ea 53 TObject(), fProtonAnalysisBase(0),
734d2c12 54 fNBinsY(0), fMinY(0), fMaxY(0),
55 fNBinsPt(0), fMinPt(0), fMaxPt(0),
251e4034 56 fProtonContainer(0), fAntiProtonContainer(0),
f203beb9 57 fHistEvents(0), fHistYPtProtons(0), fHistYPtAntiProtons(0),
ce9d2201 58 fHistEventStats(0), fYRatioInPtBinsList(0),
251e4034 59 fEffGridListProtons(0), fCorrectionListProtons2D(0),
60 fEfficiencyListProtons1D(0), fCorrectionListProtons1D(0),
61 fEffGridListAntiProtons(0), fCorrectionListAntiProtons2D(0),
62 fEfficiencyListAntiProtons1D(0), fCorrectionListAntiProtons1D(0),
735cc63d 63 fCorrectProtons(0), fCorrectAntiProtons(0),
336ea0ff 64 fHistEfficiencyYPtProtons(0), fHistEfficiencyYPtAntiProtons(0),
735cc63d 65 fGlobalQAList(0), fQA2DList(0),
66 fQAProtonsAcceptedList(0), fQAProtonsRejectedList(0),
67 fQAAntiProtonsAcceptedList(0), fQAAntiProtonsRejectedList(0),
68 fInitQAFlag(kFALSE) {
734d2c12 69 //Default constructor
734d2c12 70}
71
72//____________________________________________________________________//
0ab648ea 73AliProtonAnalysis::AliProtonAnalysis(Int_t nbinsY,
74 Float_t fLowY, Float_t fHighY,
75 Int_t nbinsPt,
76 Float_t fLowPt, Float_t fHighPt) :
77 TObject(), fProtonAnalysisBase(0),
734d2c12 78 fNBinsY(nbinsY), fMinY(fLowY), fMaxY(fHighY),
79 fNBinsPt(nbinsPt), fMinPt(fLowPt), fMaxPt(fHighPt),
251e4034 80 fProtonContainer(0), fAntiProtonContainer(0),
ce9d2201 81 fHistEvents(0), fHistYPtProtons(0), fHistYPtAntiProtons(0),
82 fHistEventStats(0), fYRatioInPtBinsList(0),
251e4034 83 fEffGridListProtons(0), fCorrectionListProtons2D(0),
84 fEfficiencyListProtons1D(0), fCorrectionListProtons1D(0),
85 fEffGridListAntiProtons(0), fCorrectionListAntiProtons2D(0),
86 fEfficiencyListAntiProtons1D(0), fCorrectionListAntiProtons1D(0),
735cc63d 87 fCorrectProtons(0), fCorrectAntiProtons(0),
336ea0ff 88 fHistEfficiencyYPtProtons(0), fHistEfficiencyYPtAntiProtons(0),
735cc63d 89 fGlobalQAList(0), fQA2DList(0),
90 fQAProtonsAcceptedList(0), fQAProtonsRejectedList(0),
91 fQAAntiProtonsAcceptedList(0), fQAAntiProtonsRejectedList(0),
92 fInitQAFlag(kFALSE) {
734d2c12 93 //Default constructor
f203beb9 94 fHistEvents = new TH1I("fHistEvents","Analyzed events",2,0.5,2.5);
95 fHistEvents->GetXaxis()->SetBinLabel(1,"Analyzed events");
96 fHistEvents->GetXaxis()->SetBinLabel(2,"Events with (anti)protons");
3f6d0c08 97
0ab648ea 98 fHistYPtProtons = new TH2D("fHistYPtProtons","Protons",
99 fNBinsY,fMinY,fMaxY,
100 fNBinsPt,fMinPt,fMaxPt);
734d2c12 101 fHistYPtProtons->SetStats(kTRUE);
0ab648ea 102 fHistYPtProtons->GetYaxis()->SetTitle("P_{T} [GeV/c]");
103 if(fProtonAnalysisBase->GetEtaMode())
104 fHistYPtProtons->GetXaxis()->SetTitle("#eta");
105 else
106 fHistYPtProtons->GetXaxis()->SetTitle("y");
734d2c12 107 fHistYPtProtons->GetXaxis()->SetTitleColor(1);
108
0ab648ea 109 fHistYPtAntiProtons = new TH2D("fHistYPtAntiProtons","Antiprotons",
110 fNBinsY,fMinY,fMaxY,
111 fNBinsPt,fMinPt,fMaxPt);
734d2c12 112 fHistYPtAntiProtons->SetStats(kTRUE);
0ab648ea 113 fHistYPtAntiProtons->GetYaxis()->SetTitle("P_{T} [GeV/c]");
114 if(fProtonAnalysisBase->GetEtaMode())
115 fHistYPtAntiProtons->GetXaxis()->SetTitle("#eta");
116 else
117 fHistYPtAntiProtons->GetXaxis()->SetTitle("y");
734d2c12 118 fHistYPtAntiProtons->GetXaxis()->SetTitleColor(1);
251e4034 119
120 //setting up the containers
121 Int_t iBin[2];
122 iBin[0] = nbinsY;
123 iBin[1] = nbinsPt;
124 Double_t *binLimY = new Double_t[nbinsY+1];
125 Double_t *binLimPt = new Double_t[nbinsPt+1];
126 //values for bin lower bounds
127 for(Int_t i = 0; i <= nbinsY; i++)
128 binLimY[i]=(Double_t)fLowY + (fHighY - fLowY) /nbinsY*(Double_t)i;
129 for(Int_t i = 0; i <= nbinsPt; i++)
130 binLimPt[i]=(Double_t)fLowPt + (fHighPt - fLowPt) /nbinsPt*(Double_t)i;
131
132 fProtonContainer = new AliCFContainer("containerProtons",
133 "container for protons",
2f1c0f45 134 kNSteps,2,iBin);
0ab648ea 135 fProtonContainer->SetBinLimits(0,binLimY); //rapidity or eta
251e4034 136 fProtonContainer->SetBinLimits(1,binLimPt); //pT
137 fAntiProtonContainer = new AliCFContainer("containerAntiProtons",
138 "container for antiprotons",
2f1c0f45 139 kNSteps,2,iBin);
0ab648ea 140 fAntiProtonContainer->SetBinLimits(0,binLimY); //rapidity or eta
251e4034 141 fAntiProtonContainer->SetBinLimits(1,binLimPt); //pT
e56f08ed 142
143 //Initialize the QA
144 if(!fInitQAFlag) InitQA();
734d2c12 145}
146
4acc9d4d 147//____________________________________________________________________//
148AliProtonAnalysis::AliProtonAnalysis(Int_t nbinsY, Double_t *gY,
149 Int_t nbinsPt,Double_t *gPt) :
150 TObject(), fProtonAnalysisBase(0),
151 fNBinsY(nbinsY), fMinY(gY[0]), fMaxY(gY[nbinsY]),
152 fNBinsPt(nbinsPt), fMinPt(gPt[0]), fMaxPt(gPt[nbinsPt]),
153 fProtonContainer(0), fAntiProtonContainer(0),
ce9d2201 154 fHistEvents(0), fHistYPtProtons(0), fHistYPtAntiProtons(0),
155 fHistEventStats(0), fYRatioInPtBinsList(0),
4acc9d4d 156 fEffGridListProtons(0), fCorrectionListProtons2D(0),
157 fEfficiencyListProtons1D(0), fCorrectionListProtons1D(0),
158 fEffGridListAntiProtons(0), fCorrectionListAntiProtons2D(0),
159 fEfficiencyListAntiProtons1D(0), fCorrectionListAntiProtons1D(0),
735cc63d 160 fCorrectProtons(0), fCorrectAntiProtons(0),
336ea0ff 161 fHistEfficiencyYPtProtons(0), fHistEfficiencyYPtAntiProtons(0),
735cc63d 162 fGlobalQAList(0), fQA2DList(0),
163 fQAProtonsAcceptedList(0), fQAProtonsRejectedList(0),
164 fQAAntiProtonsAcceptedList(0), fQAAntiProtonsRejectedList(0),
165 fInitQAFlag(kFALSE) {
4acc9d4d 166 //Default constructor
f203beb9 167 fHistEvents = new TH1I("fHistEvents","Analyzed events",2,0.5,2.5);
168 fHistEvents->GetXaxis()->SetBinLabel(1,"Analyzed events");
169 fHistEvents->GetXaxis()->SetBinLabel(2,"Events with (anti)protons");
4acc9d4d 170
171 fHistYPtProtons = new TH2D("fHistYPtProtons","Protons",
172 fNBinsY,gY,fNBinsPt,gPt);
173 fHistYPtProtons->SetStats(kTRUE);
174 fHistYPtProtons->GetYaxis()->SetTitle("P_{T} [GeV/c]");
175 if(fProtonAnalysisBase->GetEtaMode())
176 fHistYPtProtons->GetXaxis()->SetTitle("#eta");
177 else
178 fHistYPtProtons->GetXaxis()->SetTitle("y");
179 fHistYPtProtons->GetXaxis()->SetTitleColor(1);
180
181 fHistYPtAntiProtons = new TH2D("fHistYPtAntiProtons","Antiprotons",
182 fNBinsY,gY,fNBinsPt,gPt);
183 fHistYPtAntiProtons->SetStats(kTRUE);
184 fHistYPtAntiProtons->GetYaxis()->SetTitle("P_{T} [GeV/c]");
185 if(fProtonAnalysisBase->GetEtaMode())
186 fHistYPtAntiProtons->GetXaxis()->SetTitle("#eta");
187 else
188 fHistYPtAntiProtons->GetXaxis()->SetTitle("y");
189 fHistYPtAntiProtons->GetXaxis()->SetTitleColor(1);
190
191 //setting up the containers
192 Int_t iBin[2];
193 iBin[0] = nbinsY;
194 iBin[1] = nbinsPt;
195 fProtonContainer = new AliCFContainer("containerProtons",
196 "container for protons",
2f1c0f45 197 kNSteps,2,iBin);
4acc9d4d 198 fProtonContainer->SetBinLimits(0,gY); //rapidity or eta
199 fProtonContainer->SetBinLimits(1,gPt); //pT
200 fAntiProtonContainer = new AliCFContainer("containerAntiProtons",
201 "container for antiprotons",
2f1c0f45 202 kNSteps,2,iBin);
4acc9d4d 203 fAntiProtonContainer->SetBinLimits(0,gY); //rapidity or eta
204 fAntiProtonContainer->SetBinLimits(1,gPt); //pT
e56f08ed 205
206 //Initialize the QA
207 if(!fInitQAFlag) InitQA();
4acc9d4d 208}
209
734d2c12 210//____________________________________________________________________//
211AliProtonAnalysis::~AliProtonAnalysis() {
212 //Default destructor
0ab648ea 213 if(fProtonAnalysisBase) delete fProtonAnalysisBase;
214
39f2a708 215 if(fHistEvents) delete fHistEvents;
216 if(fHistYPtProtons) delete fHistYPtProtons;
217 if(fHistYPtAntiProtons) delete fHistYPtAntiProtons;
52b04cf9 218 if(fHistEventStats) delete fHistEventStats;
ce9d2201 219 if(fYRatioInPtBinsList) delete fYRatioInPtBinsList;
220
251e4034 221 if(fProtonContainer) delete fProtonContainer;
222 if(fAntiProtonContainer) delete fAntiProtonContainer;
223
251e4034 224 if(fEffGridListProtons) delete fEffGridListProtons;
cdb3530f 225 if(fCorrectionListProtons2D) delete fCorrectionListProtons2D;
226 if(fEfficiencyListProtons1D) delete fEfficiencyListProtons1D;
227 if(fCorrectionListProtons1D) delete fCorrectionListProtons1D;
251e4034 228 if(fEffGridListAntiProtons) delete fEffGridListAntiProtons;
cdb3530f 229 if(fCorrectionListAntiProtons2D) delete fCorrectionListAntiProtons2D;
230 if(fEfficiencyListAntiProtons1D) delete fEfficiencyListAntiProtons1D;
231 if(fCorrectionListAntiProtons1D) delete fCorrectionListAntiProtons1D;
251e4034 232 if(fCorrectProtons) delete fCorrectProtons;
233 if(fCorrectAntiProtons) delete fCorrectAntiProtons;
336ea0ff 234 if(fHistEfficiencyYPtProtons) delete fHistEfficiencyYPtProtons;
235 if(fHistEfficiencyYPtAntiProtons) delete fHistEfficiencyYPtAntiProtons;
735cc63d 236
237 //QA lists
238 if(fGlobalQAList) delete fGlobalQAList;
239 if(fQA2DList) delete fQA2DList;
240 if(fQAProtonsAcceptedList) delete fQAProtonsAcceptedList;
241 if(fQAProtonsRejectedList) delete fQAProtonsRejectedList;
242 if(fQAAntiProtonsAcceptedList) delete fQAAntiProtonsAcceptedList;
243 if(fQAAntiProtonsRejectedList) delete fQAAntiProtonsRejectedList;
734d2c12 244}
245
246//____________________________________________________________________//
251e4034 247void AliProtonAnalysis::InitAnalysisHistograms(Int_t nbinsY,
248 Float_t fLowY, Float_t fHighY,
249 Int_t nbinsPt,
250 Float_t fLowPt, Float_t fHighPt) {
9cd594db 251 //Initializes the histograms
734d2c12 252 fNBinsY = nbinsY;
253 fMinY = fLowY;
254 fMaxY = fHighY;
255 fNBinsPt = nbinsPt;
256 fMinPt = fLowPt;
257 fMaxPt = fHighPt;
258
f203beb9 259 fHistEvents = new TH1I("fHistEvents","Analyzed events",2,0.5,2.5);
260 fHistEvents->GetXaxis()->SetBinLabel(1,"Analyzed events");
261 fHistEvents->GetXaxis()->SetBinLabel(2,"Events with (anti)protons");
3f6d0c08 262
0ab648ea 263 fHistYPtProtons = new TH2D("fHistYPtProtons","Protons",
264 fNBinsY,fMinY,fMaxY,
265 fNBinsPt,fMinPt,fMaxPt);
734d2c12 266 fHistYPtProtons->SetStats(kTRUE);
0ab648ea 267 fHistYPtProtons->GetYaxis()->SetTitle("P_{T} [GeV/c]");
268 if(fProtonAnalysisBase->GetEtaMode())
269 fHistYPtProtons->GetXaxis()->SetTitle("#eta");
270 else
271 fHistYPtProtons->GetXaxis()->SetTitle("y");
734d2c12 272 fHistYPtProtons->GetXaxis()->SetTitleColor(1);
273
0ab648ea 274 fHistYPtAntiProtons = new TH2D("fHistYPtAntiProtons","Antiprotons",
275 fNBinsY,fMinY,fMaxY,
276 fNBinsPt,fMinPt,fMaxPt);
734d2c12 277 fHistYPtAntiProtons->SetStats(kTRUE);
0ab648ea 278 fHistYPtAntiProtons->GetYaxis()->SetTitle("P_{T} [GeV/c]");
279 if(fProtonAnalysisBase->GetEtaMode())
280 fHistYPtAntiProtons->GetXaxis()->SetTitle("#eta");
281 else
282 fHistYPtAntiProtons->GetXaxis()->SetTitle("y");
734d2c12 283 fHistYPtAntiProtons->GetXaxis()->SetTitleColor(1);
251e4034 284
285 //setting up the containers
286 Int_t iBin[2];
287 iBin[0] = nbinsY;
288 iBin[1] = nbinsPt;
289 Double_t *binLimY = new Double_t[nbinsY+1];
290 Double_t *binLimPt = new Double_t[nbinsPt+1];
291 //values for bin lower bounds
292 for(Int_t i = 0; i <= nbinsY; i++)
293 binLimY[i]=(Double_t)fLowY + (fHighY - fLowY) /nbinsY*(Double_t)i;
294 for(Int_t i = 0; i <= nbinsPt; i++)
295 binLimPt[i]=(Double_t)fLowPt + (fHighPt - fLowPt) /nbinsPt*(Double_t)i;
296
297 fProtonContainer = new AliCFContainer("containerProtons",
298 "container for protons",
2f1c0f45 299 kNSteps,2,iBin);
251e4034 300 fProtonContainer->SetBinLimits(0,binLimY); //rapidity
301 fProtonContainer->SetBinLimits(1,binLimPt); //pT
302 fAntiProtonContainer = new AliCFContainer("containerAntiProtons",
303 "container for antiprotons",
2f1c0f45 304 kNSteps,2,iBin);
251e4034 305 fAntiProtonContainer->SetBinLimits(0,binLimY); //rapidity
306 fAntiProtonContainer->SetBinLimits(1,binLimPt); //pT
e56f08ed 307
308 //Initialize the QA
309 if(!fInitQAFlag) InitQA();
734d2c12 310}
311
4acc9d4d 312//____________________________________________________________________//
313void AliProtonAnalysis::InitAnalysisHistograms(Int_t nbinsY, Double_t *gY,
314 Int_t nbinsPt, Double_t *gPt) {
315 //Initializes the histograms using asymmetric values - global tracking
316 fNBinsY = nbinsY;
317 fMinY = gY[0];
318 fMaxY = gY[nbinsY];
319 fNBinsPt = nbinsPt;
320 fMinPt = gPt[0];
321 fMaxPt = gPt[nbinsPt];
322
f203beb9 323 fHistEvents = new TH1I("fHistEvents","Analyzed events",2,0.5,2.5);
324 fHistEvents->GetXaxis()->SetBinLabel(1,"Analyzed events");
325 fHistEvents->GetXaxis()->SetBinLabel(2,"Events with (anti)protons");
4acc9d4d 326
327 fHistYPtProtons = new TH2D("fHistYPtProtons","Protons",
328 fNBinsY,gY,fNBinsPt,gPt);
329 fHistYPtProtons->SetStats(kTRUE);
330 fHistYPtProtons->GetYaxis()->SetTitle("P_{T} [GeV/c]");
331 if(fProtonAnalysisBase->GetEtaMode())
332 fHistYPtProtons->GetXaxis()->SetTitle("#eta");
333 else
334 fHistYPtProtons->GetXaxis()->SetTitle("y");
335 fHistYPtProtons->GetXaxis()->SetTitleColor(1);
336
337 fHistYPtAntiProtons = new TH2D("fHistYPtAntiProtons","Antiprotons",
338 fNBinsY,gY,fNBinsPt,gPt);
339 fHistYPtAntiProtons->SetStats(kTRUE);
340 fHistYPtAntiProtons->GetYaxis()->SetTitle("P_{T} [GeV/c]");
341 if(fProtonAnalysisBase->GetEtaMode())
342 fHistYPtAntiProtons->GetXaxis()->SetTitle("#eta");
343 else
344 fHistYPtAntiProtons->GetXaxis()->SetTitle("y");
345 fHistYPtAntiProtons->GetXaxis()->SetTitleColor(1);
346
347 //setting up the containers
348 Int_t iBin[2];
349 iBin[0] = nbinsY;
350 iBin[1] = nbinsPt;
351
352 fProtonContainer = new AliCFContainer("containerProtons",
353 "container for protons",
2f1c0f45 354 kNSteps,2,iBin);
4acc9d4d 355 fProtonContainer->SetBinLimits(0,gY); //rapidity
356 fProtonContainer->SetBinLimits(1,gPt); //pT
357 fAntiProtonContainer = new AliCFContainer("containerAntiProtons",
358 "container for antiprotons",
2f1c0f45 359 kNSteps,2,iBin);
4acc9d4d 360 fAntiProtonContainer->SetBinLimits(0,gY); //rapidity
361 fAntiProtonContainer->SetBinLimits(1,gPt); //pT
e56f08ed 362
363 //Initialize the QA
364 if(!fInitQAFlag) InitQA();
4acc9d4d 365}
366
734d2c12 367//____________________________________________________________________//
2b748670 368Bool_t AliProtonAnalysis::ReadFromFile(const char* filename) {
9cd594db 369 //Read the containers from the existing file
2b748670 370 Bool_t status = kTRUE;
371
734d2c12 372 TFile *file = TFile::Open(filename);
2b748670 373 if(!file) {
374 cout<<"Could not find the input file "<<filename<<endl;
375 status = kFALSE;
376 }
377
0ab648ea 378 TList *list = (TList *)file->Get("outputList");
2b748670 379 if(list) {
380 cout<<"Retrieving objects from the list "<<list->GetName()<<"..."<<endl;
251e4034 381 fHistYPtProtons = (TH2D *)list->At(0);
382 fHistYPtAntiProtons = (TH2D *)list->At(1);
3f6d0c08 383 fHistEvents = (TH1I *)list->At(2);
251e4034 384 fProtonContainer = (AliCFContainer *)list->At(3);
385 fAntiProtonContainer = (AliCFContainer *)list->At(4);
52b04cf9 386 fHistEventStats = (TH1F *)list->At(5);
2b748670 387 }
388 else if(!list) {
389 cout<<"Retrieving objects from the file... "<<endl;
251e4034 390 fHistYPtProtons = (TH2D *)file->Get("fHistYPtProtons");
391 fHistYPtAntiProtons = (TH2D *)file->Get("fHistYPtAntiProtons");
3f6d0c08 392 fHistEvents = (TH1I *)file->Get("fHistEvents");
251e4034 393 fProtonContainer = (AliCFContainer *)file->Get("containerProtons");
394 fAntiProtonContainer = (AliCFContainer *)file->Get("containerAntiProtons");
52b04cf9 395 fHistEventStats = (TH1F *)file->Get("fHistEventStats");
2b748670 396 }
251e4034 397 if((!fHistYPtProtons)||(!fHistYPtAntiProtons)||(!fHistEvents)
52b04cf9 398 ||(!fProtonContainer)||(!fAntiProtonContainer)||(!fHistEventStats)) {
2b748670 399 cout<<"Input containers were not found!!!"<<endl;
400 status = kFALSE;
401 }
402 else {
3e23254a 403 //fHistYPtProtons = fProtonContainer->ShowProjection(0,1,0);
404 //fHistYPtAntiProtons = fAntiProtonContainer->ShowProjection(0,1,0);
405 fHistYPtProtons->Sumw2();
406 fHistYPtAntiProtons->Sumw2();
2b748670 407 }
408
409 return status;
734d2c12 410}
411
ce9d2201 412//____________________________________________________________________//
413TList *AliProtonAnalysis::GetYRatioHistogramsInPtBins() {
414 //Returns a TList obkect with the eta (or y) dependent ratios for each
415 //pT bin taken from the 2D histograms (not from the containers)
416 fYRatioInPtBinsList = new TList();
417
418 //Protons
419 TH1D *gHistYProtons[100];
420 TString title;
421 for(Int_t iBin = 1; iBin <= fHistYPtProtons->GetNbinsY(); iBin++) {
422 title = "gHistYProtons_PtBin"; title += iBin;
423 gHistYProtons[iBin] = (TH1D *)fHistYPtProtons->ProjectionX(title.Data(),
424 iBin,
425 iBin,"e");
426 gHistYProtons[iBin]->Sumw2();
427 }
428
429 //Antiprotons
430 TH1D *gHistYAntiProtons[100];
431 for(Int_t iBin = 1; iBin <= fHistYPtAntiProtons->GetNbinsY(); iBin++) {
432 title = "gHistYAntiProtons_PtBin"; title += iBin;
433 gHistYAntiProtons[iBin] = (TH1D *)fHistYPtAntiProtons->ProjectionX(title.Data(),
434 iBin,
435 iBin,"e");
436 gHistYAntiProtons[iBin]->Sumw2();
437 }
438
439 Double_t pTmin = fHistYPtProtons->GetYaxis()->GetXmin();
440 Double_t pTStep = (fHistYPtProtons->GetYaxis()->GetXmax() - fHistYPtProtons->GetYaxis()->GetXmin())/fHistYPtProtons->GetNbinsY();
441 Double_t pTmax = pTmin + pTStep;
442 //Ratio
443 TH1D *gHistYRatio[100];
444 for(Int_t iBin = 1; iBin <= fHistYPtProtons->GetNbinsY(); iBin++) {
445 title = "gHistYRatio_PtBin"; title += iBin;
446 gHistYRatio[iBin] = new TH1D(title.Data(),"",
447 fHistYPtProtons->GetNbinsX(),
448 fHistYPtProtons->GetXaxis()->GetXmin(),
449 fHistYPtProtons->GetXaxis()->GetXmax());
450 title = "Pt: "; title += pTmin; title += " - "; title += pTmax;
451 gHistYRatio[iBin]->SetTitle(title.Data());
452 gHistYRatio[iBin]->GetYaxis()->SetTitle("#bar{p}/p");
453 gHistYRatio[iBin]->GetXaxis()->SetTitle(fHistYPtProtons->GetXaxis()->GetTitle());
454 gHistYRatio[iBin]->Divide(gHistYAntiProtons[iBin],
455 gHistYProtons[iBin],1.0,1.0);
456 fYRatioInPtBinsList->Add(gHistYRatio[iBin]);
457 pTmin += pTStep;
458 pTmax += pTStep;
459 }
460
461 return fYRatioInPtBinsList;
462}
463
734d2c12 464//____________________________________________________________________//
465TH1D *AliProtonAnalysis::GetProtonYHistogram() {
9cd594db 466 //Get the y histogram for protons
3f6d0c08 467 Int_t nAnalyzedEvents = GetNumberOfAnalyzedEvents();
251e4034 468
f203beb9 469 //TH1D *fYProtons = (TH1D *)fHistYPtProtons->ProjectionX("fYProtons",0,fHistYPtProtons->GetYaxis()->GetNbins(),"");
8d64ac62 470 TH1D *fYProtons = fProtonContainer->ShowProjection(0,kStepInPhaseSpace); //variable-step
251e4034 471
734d2c12 472 fYProtons->SetStats(kFALSE);
3f6d0c08 473 fYProtons->GetYaxis()->SetTitle("(1/N_{events})(dN/dy)");
734d2c12 474 fYProtons->SetTitle("dN/dy protons");
475 fYProtons->SetMarkerStyle(kFullCircle);
476 fYProtons->SetMarkerColor(4);
3f6d0c08 477 if(nAnalyzedEvents > 0)
251e4034 478 fYProtons->Scale(1./nAnalyzedEvents);
479
734d2c12 480 return fYProtons;
481}
482
483//____________________________________________________________________//
484TH1D *AliProtonAnalysis::GetAntiProtonYHistogram() {
9cd594db 485 //Get the y histogram for antiprotons
3f6d0c08 486 Int_t nAnalyzedEvents = GetNumberOfAnalyzedEvents();
3e23254a 487
f203beb9 488 //TH1D *fYAntiProtons = (TH1D *)fHistYPtAntiProtons->ProjectionX("fYAntiProtons",0,fHistYPtAntiProtons->GetYaxis()->GetNbins(),"");
8d64ac62 489 TH1D *fYAntiProtons = fAntiProtonContainer->ShowProjection(0,kStepInPhaseSpace);//variable-step
251e4034 490
734d2c12 491 fYAntiProtons->SetStats(kFALSE);
3f6d0c08 492 fYAntiProtons->GetYaxis()->SetTitle("(1/N_{events})(dN/dy)");
734d2c12 493 fYAntiProtons->SetTitle("dN/dy antiprotons");
494 fYAntiProtons->SetMarkerStyle(kFullCircle);
495 fYAntiProtons->SetMarkerColor(4);
3f6d0c08 496 if(nAnalyzedEvents > 0)
497 fYAntiProtons->Scale(1./nAnalyzedEvents);
734d2c12 498
499 return fYAntiProtons;
500}
501
502//____________________________________________________________________//
503TH1D *AliProtonAnalysis::GetProtonPtHistogram() {
9cd594db 504 //Get the Pt histogram for protons
3f6d0c08 505 Int_t nAnalyzedEvents = GetNumberOfAnalyzedEvents();
3e23254a 506
f203beb9 507 //TH1D *fPtProtons = (TH1D *)fHistYPtProtons->ProjectionY("fPtProtons",0,fHistYPtProtons->GetXaxis()->GetNbins(),"");
8d64ac62 508 TH1D *fPtProtons = fProtonContainer->ShowProjection(1,kStepInPhaseSpace); //variable-step
251e4034 509
734d2c12 510 fPtProtons->SetStats(kFALSE);
3f6d0c08 511 fPtProtons->GetYaxis()->SetTitle("(1/N_{events})(dN/dP_{T})");
734d2c12 512 fPtProtons->SetTitle("dN/dPt protons");
513 fPtProtons->SetMarkerStyle(kFullCircle);
514 fPtProtons->SetMarkerColor(4);
3f6d0c08 515 if(nAnalyzedEvents > 0)
516 fPtProtons->Scale(1./nAnalyzedEvents);
734d2c12 517
518 return fPtProtons;
519}
520
521//____________________________________________________________________//
522TH1D *AliProtonAnalysis::GetAntiProtonPtHistogram() {
9cd594db 523 //Get the Pt histogram for antiprotons
3f6d0c08 524 Int_t nAnalyzedEvents = GetNumberOfAnalyzedEvents();
3e23254a 525
f203beb9 526 //TH1D *fPtAntiProtons = (TH1D *)fHistYPtAntiProtons->ProjectionY("fPtAntiProtons",0,fHistYPtProtons->GetXaxis()->GetNbins(),"");
8d64ac62 527 TH1D *fPtAntiProtons = fAntiProtonContainer->ShowProjection(1,kStepInPhaseSpace); //variable-step
251e4034 528
734d2c12 529 fPtAntiProtons->SetStats(kFALSE);
3f6d0c08 530 fPtAntiProtons->GetYaxis()->SetTitle("(1/N_{events})(dN/dP_{T})");
734d2c12 531 fPtAntiProtons->SetTitle("dN/dPt antiprotons");
532 fPtAntiProtons->SetMarkerStyle(kFullCircle);
533 fPtAntiProtons->SetMarkerColor(4);
3f6d0c08 534 if(nAnalyzedEvents > 0)
535 fPtAntiProtons->Scale(1./nAnalyzedEvents);
734d2c12 536
537 return fPtAntiProtons;
538}
539
251e4034 540//____________________________________________________________________//
541TH1D *AliProtonAnalysis::GetProtonCorrectedYHistogram() {
9cd594db 542 //Get the corrected y histogram for protons
251e4034 543 Int_t nAnalyzedEvents = GetNumberOfAnalyzedEvents();
544
336ea0ff 545 TH1D *fYProtons = (TH1D *)fHistYPtProtons->ProjectionX("fYProtons",1,fHistYPtProtons->GetYaxis()->GetNbins(),"e");
546 //TH1D *fYProtons = fCorrectProtons->Project(0); //0: rapidity
251e4034 547
548 fYProtons->SetStats(kFALSE);
549 fYProtons->GetYaxis()->SetTitle("(1/N_{events})(dN/dy)");
550 fYProtons->GetXaxis()->SetTitle("y");
551 fYProtons->SetTitle("dN/dy protons");
552 fYProtons->SetMarkerStyle(kFullCircle);
553 fYProtons->SetMarkerColor(4);
554 if(nAnalyzedEvents > 0)
555 fYProtons->Scale(1./nAnalyzedEvents);
556
557 return fYProtons;
558}
559
560//____________________________________________________________________//
561TH1D *AliProtonAnalysis::GetAntiProtonCorrectedYHistogram() {
9cd594db 562 //Get the corrected y histogram for antiprotons
251e4034 563 Int_t nAnalyzedEvents = GetNumberOfAnalyzedEvents();
336ea0ff 564
565 TH1D *fYAntiProtons = (TH1D *)fHistYPtAntiProtons->ProjectionX("fYAntiProtons",1,fHistYPtAntiProtons->GetYaxis()->GetNbins(),"e");
566 //TH1D *fYAntiProtons = fCorrectAntiProtons->Project(0); //0: rapidity
251e4034 567
568 fYAntiProtons->SetStats(kFALSE);
569 fYAntiProtons->GetYaxis()->SetTitle("(1/N_{events})(dN/dy)");
570 fYAntiProtons->GetXaxis()->SetTitle("y");
571 fYAntiProtons->SetTitle("dN/dy protons");
572 fYAntiProtons->SetMarkerStyle(kFullCircle);
573 fYAntiProtons->SetMarkerColor(4);
574 if(nAnalyzedEvents > 0)
575 fYAntiProtons->Scale(1./nAnalyzedEvents);
576
577 return fYAntiProtons;
578}
579
580//____________________________________________________________________//
581TH1D *AliProtonAnalysis::GetProtonCorrectedPtHistogram() {
9cd594db 582 //Get the corrected Pt histogram for protons
251e4034 583 Int_t nAnalyzedEvents = GetNumberOfAnalyzedEvents();
584
336ea0ff 585 TH1D *fPtProtons = (TH1D *)fHistYPtProtons->ProjectionY("fPtProtons",1,fHistYPtProtons->GetXaxis()->GetNbins(),"e");
586 //TH1D *fPtProtons = fCorrectProtons->Project(0); //0: rapidity
251e4034 587
588 fPtProtons->SetStats(kFALSE);
589 fPtProtons->GetYaxis()->SetTitle("(1/N_{events})(dN/dP_{T})");
590 fPtProtons->GetXaxis()->SetTitle("P_{T} [GeV/c]");
591 fPtProtons->SetTitle("dN/dPt protons");
592 fPtProtons->SetMarkerStyle(kFullCircle);
593 fPtProtons->SetMarkerColor(4);
594 if(nAnalyzedEvents > 0)
595 fPtProtons->Scale(1./nAnalyzedEvents);
596
597 return fPtProtons;
598}
599
600//____________________________________________________________________//
601TH1D *AliProtonAnalysis::GetAntiProtonCorrectedPtHistogram() {
9cd594db 602 //Get the corrected Pt histogram for antiprotons
251e4034 603 Int_t nAnalyzedEvents = GetNumberOfAnalyzedEvents();
604
336ea0ff 605 TH1D *fPtAntiProtons = (TH1D *)fHistYPtAntiProtons->ProjectionY("fPtAntiProtons",1,fHistYPtAntiProtons->GetXaxis()->GetNbins(),"e");
606//TH1D *fPtAntiProtons = fCorrectAntiProtons->Project(0); //0: rapidity
251e4034 607
608 fPtAntiProtons->SetStats(kFALSE);
609 fPtAntiProtons->GetYaxis()->SetTitle("(1/N_{events})(dN/dP_{T})");
610 fPtAntiProtons->GetXaxis()->SetTitle("P_{T} [GeV/c]");
611 fPtAntiProtons->SetTitle("dN/dPt antiprotons");
612 fPtAntiProtons->SetMarkerStyle(kFullCircle);
613 fPtAntiProtons->SetMarkerColor(4);
614 if(nAnalyzedEvents > 0)
615 fPtAntiProtons->Scale(1./nAnalyzedEvents);
616
617 return fPtAntiProtons;
618}
619
734d2c12 620//____________________________________________________________________//
621TH1D *AliProtonAnalysis::GetYRatioHistogram() {
3e23254a 622 //Returns the rapidity dependence of the ratio (uncorrected)
734d2c12 623 TH1D *fYProtons = GetProtonYHistogram();
624 TH1D *fYAntiProtons = GetAntiProtonYHistogram();
625
626 TH1D *hRatioY = new TH1D("hRatioY","",fYProtons->GetNbinsX(),fYProtons->GetXaxis()->GetXmin(),fYProtons->GetXaxis()->GetXmax());
627 hRatioY->Divide(fYAntiProtons,fYProtons,1.0,1.0);
628 hRatioY->SetMarkerStyle(kFullCircle);
629 hRatioY->SetMarkerColor(4);
630 hRatioY->GetYaxis()->SetTitle("#bar{p}/p");
631 hRatioY->GetYaxis()->SetTitleOffset(1.4);
632 hRatioY->GetXaxis()->SetTitle("y");
633 hRatioY->GetXaxis()->SetTitleColor(1);
634 hRatioY->SetStats(kFALSE);
635
636 return hRatioY;
637}
638
3e23254a 639//____________________________________________________________________//
336ea0ff 640TH1D *AliProtonAnalysis::GetYRatioCorrectedHistogram() {
641//TH2D *gCorrectionProtons,
642//TH2D *gCorrectionAntiProtons) {
3e23254a 643 //Returns the rapidity dependence of the ratio (corrected)
336ea0ff 644 //fHistYPtProtons->Multiply(gCorrectionProtons);
645 TH1D *fYProtons = GetProtonCorrectedYHistogram();
646 //fHistYPtAntiProtons->Multiply(gCorrectionAntiProtons);
647 TH1D *fYAntiProtons = GetAntiProtonCorrectedYHistogram();
3e23254a 648
649 TH1D *hRatioY = new TH1D("hRatioY","",fYProtons->GetNbinsX(),fYProtons->GetXaxis()->GetXmin(),fYProtons->GetXaxis()->GetXmax());
650 hRatioY->Divide(fYAntiProtons,fYProtons,1.0,1.0);
651 hRatioY->SetMarkerStyle(kFullCircle);
652 hRatioY->SetMarkerColor(4);
653 hRatioY->GetYaxis()->SetTitle("#bar{p}/p");
654 hRatioY->GetYaxis()->SetTitleOffset(1.4);
655 hRatioY->GetXaxis()->SetTitle("y");
656 hRatioY->GetXaxis()->SetTitleColor(1);
657 hRatioY->SetStats(kFALSE);
658
659 return hRatioY;
660}
661
734d2c12 662//____________________________________________________________________//
663TH1D *AliProtonAnalysis::GetPtRatioHistogram() {
3e23254a 664 //Returns the pT dependence of the ratio (uncorrected)
734d2c12 665 TH1D *fPtProtons = GetProtonPtHistogram();
666 TH1D *fPtAntiProtons = GetAntiProtonPtHistogram();
667
668 TH1D *hRatioPt = new TH1D("hRatioPt","",fPtProtons->GetNbinsX(),fPtProtons->GetXaxis()->GetXmin(),fPtProtons->GetXaxis()->GetXmax());
669 hRatioPt->Divide(fPtAntiProtons,fPtProtons,1.0,1.0);
670 hRatioPt->SetMarkerStyle(kFullCircle);
671 hRatioPt->SetMarkerColor(4);
672 hRatioPt->GetYaxis()->SetTitle("#bar{p}/p");
673 hRatioPt->GetYaxis()->SetTitleOffset(1.4);
674 hRatioPt->GetXaxis()->SetTitle("P_{T} [GeV/c]");
675 hRatioPt->GetXaxis()->SetTitleColor(1);
676 hRatioPt->SetStats(kFALSE);
677
678 return hRatioPt;
679}
680
3e23254a 681//____________________________________________________________________//
336ea0ff 682TH1D *AliProtonAnalysis::GetPtRatioCorrectedHistogram() {
683 //TH2D *gCorrectionProtons,
684 //TH2D *gCorrectionAntiProtons) {
3e23254a 685 //Returns the Pt dependence of the ratio (corrected)
336ea0ff 686 //fHistYPtProtons->Multiply(gCorrectionProtons);
687 TH1D *fPtProtons = GetProtonCorrectedPtHistogram();
688 //fHistYPtAntiProtons->Multiply(gCorrectionAntiProtons);
689 TH1D *fPtAntiProtons = GetAntiProtonCorrectedPtHistogram();
3e23254a 690
691 TH1D *hRatioPt = new TH1D("hRatioPt","",fPtProtons->GetNbinsX(),fPtProtons->GetXaxis()->GetXmin(),fPtProtons->GetXaxis()->GetXmax());
692 hRatioPt->Divide(fPtAntiProtons,fPtProtons,1.0,1.0);
693 hRatioPt->SetMarkerStyle(kFullCircle);
694 hRatioPt->SetMarkerColor(4);
695 hRatioPt->GetYaxis()->SetTitle("#bar{p}/p");
696 hRatioPt->GetYaxis()->SetTitleOffset(1.4);
697 hRatioPt->GetXaxis()->SetTitle("y");
698 hRatioPt->GetXaxis()->SetTitleColor(1);
699 hRatioPt->SetStats(kFALSE);
700
701 return hRatioPt;
702}
703
734d2c12 704//____________________________________________________________________//
705TH1D *AliProtonAnalysis::GetYAsymmetryHistogram() {
3e23254a 706 //Returns the rapidity dependence of the asymmetry (uncorrected)
734d2c12 707 TH1D *fYProtons = GetProtonYHistogram();
708 TH1D *fYAntiProtons = GetAntiProtonYHistogram();
709
710 TH1D *hsum = new TH1D("hsumY","",fYProtons->GetNbinsX(),fYProtons->GetXaxis()->GetXmin(),fYProtons->GetXaxis()->GetXmax());
711 hsum->Add(fYProtons,fYAntiProtons,1.0,1.0);
712
713 TH1D *hdiff = new TH1D("hdiffY","",fYProtons->GetNbinsX(),fYProtons->GetXaxis()->GetXmin(),fYProtons->GetXaxis()->GetXmax());
714 hdiff->Add(fYProtons,fYAntiProtons,1.0,-1.0);
715
716 TH1D *hAsymmetryY = new TH1D("hAsymmetryY","",fYProtons->GetNbinsX(),fYProtons->GetXaxis()->GetXmin(),fYProtons->GetXaxis()->GetXmax());
717 hAsymmetryY->Divide(hdiff,hsum,2.0,1.);
718 hAsymmetryY->SetMarkerStyle(kFullCircle);
719 hAsymmetryY->SetMarkerColor(4);
720 hAsymmetryY->GetYaxis()->SetTitle("A_{p}");
721 hAsymmetryY->GetYaxis()->SetTitleOffset(1.4);
722 hAsymmetryY->GetXaxis()->SetTitle("y");
723 hAsymmetryY->GetXaxis()->SetTitleColor(1);
724 hAsymmetryY->SetStats(kFALSE);
725
726 return hAsymmetryY;
727}
728
729//____________________________________________________________________//
730TH1D *AliProtonAnalysis::GetPtAsymmetryHistogram() {
3e23254a 731 //Returns the pT dependence of the asymmetry (uncorrected)
734d2c12 732 TH1D *fPtProtons = GetProtonPtHistogram();
733 TH1D *fPtAntiProtons = GetAntiProtonPtHistogram();
734
735 TH1D *hsum = new TH1D("hsumPt","",fPtProtons->GetNbinsX(),fPtProtons->GetXaxis()->GetXmin(),fPtProtons->GetXaxis()->GetXmax());
736 hsum->Add(fPtProtons,fPtAntiProtons,1.0,1.0);
737
738 TH1D *hdiff = new TH1D("hdiffPt","",fPtProtons->GetNbinsX(),fPtProtons->GetXaxis()->GetXmin(),fPtProtons->GetXaxis()->GetXmax());
739 hdiff->Add(fPtProtons,fPtAntiProtons,1.0,-1.0);
740
741 TH1D *hAsymmetryPt = new TH1D("hAsymmetryPt","",fPtProtons->GetNbinsX(),fPtProtons->GetXaxis()->GetXmin(),fPtProtons->GetXaxis()->GetXmax());
742 hAsymmetryPt->Divide(hdiff,hsum,2.0,1.);
743 hAsymmetryPt->SetMarkerStyle(kFullCircle);
744 hAsymmetryPt->SetMarkerColor(4);
745 hAsymmetryPt->GetYaxis()->SetTitle("A_{p}");
746 hAsymmetryPt->GetYaxis()->SetTitleOffset(1.4);
747 hAsymmetryPt->GetXaxis()->SetTitle("P_{T} [GeV/c]");
748 hAsymmetryPt->GetXaxis()->SetTitleColor(1);
749 hAsymmetryPt->SetStats(kFALSE);
750
751 return hAsymmetryPt;
752}
753
754//____________________________________________________________________//
6667f3a7 755void AliProtonAnalysis::Analyze(AliESDEvent* esd,
756 const AliESDVertex *vertex) {
e4358d7f 757 //Main analysis part - ESD
0ab648ea 758 Int_t nTracks = 0;
759 Int_t nIdentifiedProtons = 0, nIdentifiedAntiProtons = 0;
760 Int_t nSurvivedProtons = 0, nSurvivedAntiProtons = 0;
ff672838 761
762 //=========================================//
763 //Aleph parametrization
764 Double_t fAlephParameters[5];
765 if(fProtonAnalysisBase->GetMCAnalysisMode()) {
766 fAlephParameters[0] = 2.15898e+00/50.;
767 fAlephParameters[1] = 1.75295e+01;
768 fAlephParameters[2] = 3.40030e-09;
769 fAlephParameters[3] = 1.96178e+00;
770 fAlephParameters[4] = 3.91720e+00;
771 }
772 else {
773 fAlephParameters[0] = 0.0283086;
774 fAlephParameters[1] = 2.63394e+01;
775 fAlephParameters[2] = 5.04114e-11;
776 fAlephParameters[3] = 2.12543e+00;
777 fAlephParameters[4] = 4.88663e+00;
778 }
779 AliESDpid *fESDpid = new AliESDpid();
780 AliTPCPIDResponse tpcResponse = fESDpid->GetTPCResponse();
781 tpcResponse.SetBetheBlochParameters(fAlephParameters[0],fAlephParameters[1],fAlephParameters[2],fAlephParameters[3],fAlephParameters[4]);
782 //=========================================//
0ab648ea 783
f203beb9 784 fHistEvents->Fill(1); //number of analyzed events
251e4034 785 Double_t containerInput[2] ;
9cd594db 786 Double_t gPt = 0.0, gP = 0.0;
0ab648ea 787 nTracks = esd->GetNumberOfTracks();
788 for(Int_t iTracks = 0; iTracks < nTracks; iTracks++) {
6667f3a7 789 AliESDtrack* track = esd->GetTrack(iTracks);
df1e8a78 790 AliESDtrack trackTPC;
2b748670 791
32a2ebb6 792 //in case it's a TPC only track relate it to the proper vertex
0ab648ea 793 /*if(fProtonAnalysisBase->GetAnalysisMode()==AliProtonAnalysisBase::kTPC) {
df1e8a78 794 Float_t p[2],cov[3];
795 track->GetImpactParametersTPC(p,cov);
796 if (p[0]==0 && p[1]==0)
6667f3a7 797 track->RelateToVertexTPC(((AliESDEvent*)esd)->GetPrimaryVertexTPC(),esd->GetMagneticField(),kVeryBig);
df1e8a78 798 if (!track->FillTPCOnlyTrack(trackTPC)) {
32a2ebb6 799 continue;
df1e8a78 800 }
801 track = &trackTPC ;
0ab648ea 802 }*/
df1e8a78 803
37cb8683 804 Int_t fIdxInt[200];
805 Int_t nClustersTPC = track->GetTPCclusters(fIdxInt);
806 Int_t npointsTPCdEdx = track->GetTPCsignalN();
4de4661f 807 Double_t dca[2] = {0.0,0.0}, cov[3] = {0.0,0.0,0.0}; //The impact parameters and their covariance.
37cb8683 808
0ab648ea 809 if((fProtonAnalysisBase->GetAnalysisMode()==AliProtonAnalysisBase::kTPC)||(fProtonAnalysisBase->GetAnalysisMode()==AliProtonAnalysisBase::kHybrid)) {
810 AliExternalTrackParam *tpcTrack = (AliExternalTrackParam *)track->GetTPCInnerParam();
811 if(!tpcTrack) continue;
812 gPt = tpcTrack->Pt();
813 gP = tpcTrack->P();
4de4661f 814
815 tpcTrack->PropagateToDCA(vertex,
816 esd->GetMagneticField(),
817 100.,dca,cov);
818
e56f08ed 819 if(fProtonAnalysisBase->IsPrimary(esd,vertex,track)) {
30f87a5b 820 if(fProtonAnalysisBase->IsAccepted(track)) {
4de4661f 821 ((TH2F *)(fQA2DList->At(0)))->Fill(gP,track->GetTPCsignal());
ff672838 822 ((TH2F *)(fQA2DList->At(2)))->Fill(gP,TMath::Log(track->GetTPCsignal()/tpcResponse.GetExpectedSignal(gP,AliPID::kProton)));
823 ((TH3F *)(fQA2DList->At(4)))->Fill(tpcTrack->Eta(),
4de4661f 824 tpcTrack->Phi()*180./TMath::Pi(),
825 npointsTPCdEdx);
ff672838 826 ((TH3F *)(fQA2DList->At(6)))->Fill(tpcTrack->Eta(),
4de4661f 827 tpcTrack->Phi()*180./TMath::Pi(),
828 nClustersTPC);
ff672838 829 ((TH3F *)(fQA2DList->At(8)))->Fill(gPt,
4de4661f 830 tpcTrack->Phi()*180./TMath::Pi(),
831 npointsTPCdEdx);
ff672838 832 ((TH3F *)(fQA2DList->At(10)))->Fill(gPt,
4de4661f 833 tpcTrack->Phi()*180./TMath::Pi(),
834 nClustersTPC);
e56f08ed 835 }//quality cuts
836 }//primary cuts
4de4661f 837
838 if(fProtonAnalysisBase->IsProton(track)) {
839 //Step: kStepIdentified
840 if(fProtonAnalysisBase->GetEtaMode())
841 containerInput[0] = tpcTrack->Eta();
842 else
843 containerInput[0] = fProtonAnalysisBase->Rapidity(tpcTrack->Px(),
844 tpcTrack->Py(),
845 tpcTrack->Pz());
846 containerInput[1] = gPt;
847 if(tpcTrack->Charge() > 0) {
735cc63d 848 nIdentifiedProtons += 1;
4de4661f 849 fProtonContainer->Fill(containerInput,kStepIdentified);
850 }//protons
851 else if(tpcTrack->Charge() < 0) {
735cc63d 852 nIdentifiedAntiProtons += 1;
4de4661f 853 fAntiProtonContainer->Fill(containerInput,kStepIdentified);
854 }//protons
855
856 //Step: kStepIsPrimary
857 if(fProtonAnalysisBase->IsPrimary(esd,vertex,track)) {
858 if(tpcTrack->Charge() > 0)
859 fProtonContainer->Fill(containerInput,kStepIsPrimary);
860 else if(tpcTrack->Charge() < 0)
e56f08ed 861 fAntiProtonContainer->Fill(containerInput,kStepIsPrimary);
4de4661f 862
863 FillQA(esd,vertex,track);
864
865 //Step: kStepSurvived
30f87a5b 866 if(fProtonAnalysisBase->IsAccepted(track)) {
e56f08ed 867 ((TH2F *)(fQA2DList->At(1)))->Fill(gP,track->GetTPCsignal());
ff672838 868 ((TH2F *)(fQA2DList->At(3)))->Fill(gP,TMath::Log(track->GetTPCsignal()/tpcResponse.GetExpectedSignal(gP,AliPID::kProton)));
869 ((TH3F *)(fQA2DList->At(5)))->Fill(tpcTrack->Eta(),
e56f08ed 870 tpcTrack->Phi()*180./TMath::Pi(),
871 npointsTPCdEdx);
ff672838 872 ((TH3F *)(fQA2DList->At(7)))->Fill(tpcTrack->Eta(),
e56f08ed 873 tpcTrack->Phi()*180./TMath::Pi(),
874 nClustersTPC);
ff672838 875 ((TH3F *)(fQA2DList->At(9)))->Fill(gPt,
e56f08ed 876 tpcTrack->Phi()*180./TMath::Pi(),
877 npointsTPCdEdx);
ff672838 878 ((TH3F *)(fQA2DList->At(11)))->Fill(gPt,
e56f08ed 879 tpcTrack->Phi()*180./TMath::Pi(),
880 nClustersTPC);
e56f08ed 881
4de4661f 882 if(tpcTrack->Charge() > 0) {
883 fProtonContainer->Fill(containerInput,kStepSurvived);
ff672838 884 ((TH2F *)(fQA2DList->At(12)))->Fill(tpcTrack->Eta(),
4de4661f 885 tpcTrack->Phi()*180./TMath::Pi());
3322c804 886 ((TH3F *)(fQA2DList->At(14)))->Fill(tpcTrack->Eta(),
887 tpcTrack->Pt(),
4de4661f 888 TMath::Abs(dca[0]));
3322c804 889 ((TH3F *)(fQA2DList->At(15)))->Fill(tpcTrack->Eta(),
890 tpcTrack->Pt(),
4de4661f 891 TMath::Abs(dca[1]));
892 }//protons
893 else if(tpcTrack->Charge() < 0) {
894 fAntiProtonContainer->Fill(containerInput,kStepSurvived);
ff672838 895 ((TH2F *)(fQA2DList->At(13)))->Fill(tpcTrack->Eta(),
4de4661f 896 tpcTrack->Phi()*180./TMath::Pi());
3322c804 897 ((TH3F *)(fQA2DList->At(16)))->Fill(tpcTrack->Eta(),
898 tpcTrack->Pt(),
4de4661f 899 TMath::Abs(dca[0]));
3322c804 900 ((TH3F *)(fQA2DList->At(17)))->Fill(tpcTrack->Eta(),
901 tpcTrack->Pt(),
4de4661f 902 TMath::Abs(dca[1]));
903 }//antiprotons
904
905 //Step: kStepInPhaseSpace
906 if(fProtonAnalysisBase->IsInPhaseSpace(track)) {
907 if(tpcTrack->Charge() > 0) {
908 nSurvivedProtons += 1;
909 fHistYPtProtons->Fill(containerInput[0],
910 containerInput[1]);
911 fProtonContainer->Fill(containerInput,kStepInPhaseSpace);
912 }//protons
913 else if(tpcTrack->Charge() < 0) {
914 nSurvivedAntiProtons += 1;
915 fHistYPtAntiProtons->Fill(containerInput[0],
916 containerInput[1]);
917 fAntiProtonContainer->Fill(containerInput,kStepInPhaseSpace);
918 }//antiprotons
919 }//Step: kStepInPhaseSpace
920 }//Step: kStepSurvived
921 }//Step: kStepIsPrimary
922 }//Step: kStepIdentified
0ab648ea 923 }//TPC only tracks
924 else if(fProtonAnalysisBase->GetAnalysisMode() == AliProtonAnalysisBase::kGlobal) {
925 gPt = track->Pt();
926 gP = track->P();
4de4661f 927 track->PropagateToDCA(vertex,
928 esd->GetMagneticField(),
929 100.,dca,cov);
930
931 if(fProtonAnalysisBase->IsPrimary(esd,vertex,track)) {
30f87a5b 932 if(fProtonAnalysisBase->IsAccepted(track)) {
4de4661f 933 ((TH2F *)(fQA2DList->At(0)))->Fill(gP,track->GetTPCsignal());
ff672838 934 ((TH2F *)(fQA2DList->At(2)))->Fill(gP,TMath::Log(track->GetTPCsignal()/tpcResponse.GetExpectedSignal(gP,AliPID::kProton)));
935 ((TH3F *)(fQA2DList->At(4)))->Fill(track->Eta(),
4de4661f 936 track->Phi()*180./TMath::Pi(),
937 npointsTPCdEdx);
ff672838 938 ((TH3F *)(fQA2DList->At(6)))->Fill(track->Eta(),
4de4661f 939 track->Phi()*180./TMath::Pi(),
940 nClustersTPC);
ff672838 941 ((TH3F *)(fQA2DList->At(8)))->Fill(gPt,
4de4661f 942 track->Phi()*180./TMath::Pi(),
943 npointsTPCdEdx);
ff672838 944 ((TH3F *)(fQA2DList->At(10)))->Fill(gPt,
4de4661f 945 track->Phi()*180./TMath::Pi(),
946 nClustersTPC);
e56f08ed 947 }//quality cuts
948 }//primary cuts
4de4661f 949
950 if(fProtonAnalysisBase->IsProton(track)) {
951 //Step: kStepIdentified
952 if(fProtonAnalysisBase->GetEtaMode())
953 containerInput[0] = track->Eta();
954 else
955 containerInput[0] = fProtonAnalysisBase->Rapidity(track->Px(),
956 track->Py(),
957 track->Pz());
958 containerInput[1] = gPt;
959 if(track->Charge() > 0) {
0ab648ea 960 nIdentifiedProtons += 1;
4de4661f 961 fProtonContainer->Fill(containerInput,kStepIdentified);
962 }//protons
963 else if(track->Charge() < 0) {
0ab648ea 964 nIdentifiedAntiProtons += 1;
4de4661f 965 fAntiProtonContainer->Fill(containerInput,kStepIdentified);
966 }//protons
967
968 //Step: kStepIsPrimary
969 if(fProtonAnalysisBase->IsPrimary(esd,vertex,track)) {
970 if(track->Charge() > 0)
971 fProtonContainer->Fill(containerInput,kStepIsPrimary);
972 else if(track->Charge() < 0)
e56f08ed 973 fAntiProtonContainer->Fill(containerInput,kStepIsPrimary);
4de4661f 974
975 FillQA(esd,vertex,track);
976
977 //Step: kStepSurvived
30f87a5b 978 if(fProtonAnalysisBase->IsAccepted(track)) {
e56f08ed 979 ((TH2F *)(fQA2DList->At(1)))->Fill(gP,track->GetTPCsignal());
ff672838 980 ((TH2F *)(fQA2DList->At(3)))->Fill(gP,TMath::Log(track->GetTPCsignal()/tpcResponse.GetExpectedSignal(gP,AliPID::kProton)));
981 ((TH3F *)(fQA2DList->At(5)))->Fill(track->Eta(),
e56f08ed 982 track->Phi()*180./TMath::Pi(),
983 npointsTPCdEdx);
ff672838 984 ((TH3F *)(fQA2DList->At(7)))->Fill(track->Eta(),
e56f08ed 985 track->Phi()*180./TMath::Pi(),
986 nClustersTPC);
ff672838 987 ((TH3F *)(fQA2DList->At(9)))->Fill(gPt,
e56f08ed 988 track->Phi()*180./TMath::Pi(),
989 npointsTPCdEdx);
ff672838 990 ((TH3F *)(fQA2DList->At(11)))->Fill(gPt,
e56f08ed 991 track->Phi()*180./TMath::Pi(),
992 nClustersTPC);
e56f08ed 993
4de4661f 994 if(track->Charge() > 0) {
995 fProtonContainer->Fill(containerInput,kStepSurvived);
ff672838 996 ((TH2F *)(fQA2DList->At(12)))->Fill(track->Eta(),
4de4661f 997 track->Phi()*180./TMath::Pi());
3322c804 998 ((TH3F *)(fQA2DList->At(14)))->Fill(track->Eta(),
999 track->Pt(),
4de4661f 1000 TMath::Abs(dca[0]));
3322c804 1001 ((TH3F *)(fQA2DList->At(15)))->Fill(track->Eta(),
1002 track->Pt(),
4de4661f 1003 TMath::Abs(dca[1]));
1004 }//protons
1005 else if(track->Charge() < 0) {
1006 fAntiProtonContainer->Fill(containerInput,kStepSurvived);
ff672838 1007 ((TH2F *)(fQA2DList->At(13)))->Fill(track->Eta(),
4de4661f 1008 track->Phi()*180./TMath::Pi());
3322c804 1009 ((TH3F *)(fQA2DList->At(16)))->Fill(track->Eta(),
1010 track->Pt(),
4de4661f 1011 TMath::Abs(dca[0]));
3322c804 1012 ((TH3F *)(fQA2DList->At(17)))->Fill(track->Eta(),
1013 track->Pt(),
4de4661f 1014 TMath::Abs(dca[1]));
1015 }//antiprotons
1016
1017 //Step: kStepInPhaseSpace
1018 if(fProtonAnalysisBase->IsInPhaseSpace(track)) {
1019 if(track->Charge() > 0) {
1020 nSurvivedProtons += 1;
1021 fHistYPtProtons->Fill(containerInput[0],
1022 containerInput[1]);
1023 fProtonContainer->Fill(containerInput,kStepInPhaseSpace);
1024 }//protons
1025 else if(track->Charge() < 0) {
1026 nSurvivedAntiProtons += 1;
1027 fHistYPtAntiProtons->Fill(containerInput[0],
1028 containerInput[1]);
1029 fAntiProtonContainer->Fill(containerInput,kStepInPhaseSpace);
1030 }//antiprotons
1031 }//Step: kStepInPhaseSpace
1032 }//Step: kStepSurvived
1033 }//Step: kStepIsPrimary
1034 }//Step: kStepIdentified
1035 }//Global tracking
734d2c12 1036 }//track loop
0ab648ea 1037
f203beb9 1038 if((nIdentifiedProtons > 0)||(nIdentifiedAntiProtons > 0))
1039 fHistEvents->Fill(2); //number of analyzed events with at least one (anti)proton
1040
0ab648ea 1041 if(fProtonAnalysisBase->GetDebugMode())
1042 Printf("Initial number of tracks: %d | Identified (anti)protons: %d - %d | Survived (anti)protons: %d - %d",nTracks,nIdentifiedProtons,nIdentifiedAntiProtons,nSurvivedProtons,nSurvivedAntiProtons);
734d2c12 1043}
1044
ee4ca40d 1045//____________________________________________________________________//
9cd594db 1046void AliProtonAnalysis::Analyze(AliAODEvent* const fAOD) {
e4358d7f 1047 //Main analysis part - AOD
f203beb9 1048 fHistEvents->Fill(1); //number of analyzed events
0ab648ea 1049 Int_t nTracks = fAOD->GetNumberOfTracks();
1050 for(Int_t iTracks = 0; iTracks < nTracks; iTracks++) {
ee4ca40d 1051 AliAODTrack* track = fAOD->GetTrack(iTracks);
9cd594db 1052 Double_t gPt = track->Pt();
1053 Double_t gP = track->P();
ee4ca40d 1054
1055 //pid
1056 Double_t probability[10];
1057 track->GetPID(probability);
1058 Double_t rcc = 0.0;
0ab648ea 1059 for(Int_t i = 0; i < AliPID::kSPECIESN; i++) rcc += probability[i]*fProtonAnalysisBase->GetParticleFraction(i,gP);
ee4ca40d 1060 if(rcc == 0.0) continue;
738619fd 1061 Double_t w[10];
0ab648ea 1062 for(Int_t i = 0; i < AliPID::kSPECIESN; i++) w[i] = probability[i]*fProtonAnalysisBase->GetParticleFraction(i,gP)/rcc;
ee4ca40d 1063 Long64_t fParticleType = TMath::LocMax(AliPID::kSPECIESN,w);
1064 if(fParticleType == 4) {
251e4034 1065 if(track->Charge() > 0)
9cd594db 1066 fHistYPtProtons->Fill(track->Y(fParticleType),gPt);
251e4034 1067 else if(track->Charge() < 0)
9cd594db 1068 fHistYPtAntiProtons->Fill(track->Y(fParticleType),gPt);
ee4ca40d 1069 }//proton check
1070 }//track loop
1071}
1072
e4358d7f 1073//____________________________________________________________________//
9cd594db 1074void AliProtonAnalysis::Analyze(AliStack* const stack,
da8c4c1c 1075 Bool_t iInclusive) {
e4358d7f 1076 //Main analysis part - MC
f203beb9 1077 fHistEvents->Fill(1); //number of analyzed events
3e23254a 1078
1079 Int_t nParticles = 0;
1080 //inclusive protons -
1081 if(iInclusive) nParticles = stack->GetNtrack();
1082 else nParticles = stack->GetNprimary();
1083
1084 for(Int_t i = 0; i < nParticles; i++) {
e4358d7f 1085 TParticle *particle = stack->Particle(i);
55f9a666 1086 if(!particle) continue;
537afcc3 1087
da8c4c1c 1088 //in case of inclusive protons reject the secondaries from hadronic inter.
1089 if(particle->GetUniqueID() == 13) continue;
1090
537afcc3 1091 if(TMath::Abs(particle->Eta()) > 1.0) continue;
1092 if((particle->Pt() > fMaxPt)||(particle->Pt() < fMinPt)) continue;
0ab648ea 1093 if((fProtonAnalysisBase->Rapidity(particle->Px(),particle->Py(),particle->Pz()) > fMaxY)||(fProtonAnalysisBase->Rapidity(particle->Px(),particle->Py(),particle->Pz()) < fMinY)) continue;
537afcc3 1094
e4358d7f 1095 Int_t pdgcode = particle->GetPdgCode();
0ab648ea 1096 if(pdgcode == 2212) fHistYPtProtons->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
1097 particle->Py(),
1098 particle->Pz()),
e4358d7f 1099 particle->Pt());
0ab648ea 1100 if(pdgcode == -2212) fHistYPtAntiProtons->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
1101 particle->Py(),
1102 particle->Pz()),
e4358d7f 1103 particle->Pt());
251e4034 1104 }//particle loop
e4358d7f 1105}
1106
3f6d0c08 1107//____________________________________________________________________//
1108Bool_t AliProtonAnalysis::PrintMean(TH1 *hist, Double_t edge) {
1109 //calculates the mean value of the ratio/asymmetry within \pm edge
336ea0ff 1110 Double_t sum = 0.0, sumError = 0.0;
3f6d0c08 1111 Int_t nentries = 0;
1112 //calculate the mean
336ea0ff 1113 for(Int_t i = 1; i <= hist->GetXaxis()->GetNbins(); i++) {
1114 Double_t x = hist->GetBinCenter(i);
1115 Double_t y = hist->GetBinContent(i);
3f6d0c08 1116 if(TMath::Abs(x) < edge) {
1117 sum += y;
336ea0ff 1118 sumError += TMath::Power(hist->GetBinError(i),2);
3f6d0c08 1119 nentries += 1;
1120 }
a3bc43fb 1121 //Printf("eta: %lf - sum: %lf - sumError: %lf - counter: %d",
1122 //TMath::Abs(x),sum,sumError,nentries);
3f6d0c08 1123 }
1124 Double_t mean = 0.0;
336ea0ff 1125 Double_t error = 0.0;
1126 if(nentries != 0) {
3f6d0c08 1127 mean = sum/nentries;
336ea0ff 1128 error = TMath::Sqrt(sumError)/nentries;
1129 }
3f6d0c08 1130
1131 //calculate the error
336ea0ff 1132 /*for(Int_t i = 1; i <= hist->GetXaxis()->GetNbins(); i++) {
1133 Double_t x = hist->GetBinCenter(i);
1134 Double_t y = hist->GetBinContent(i);
3f6d0c08 1135 if(TMath::Abs(x) < edge) {
1136 sum += TMath::Power((mean - y),2);
1137 nentries += 1;
1138 }
336ea0ff 1139 }*/
3f6d0c08 1140
3f6d0c08 1141
1142 cout<<"========================================="<<endl;
1143 cout<<"Input distribution: "<<hist->GetName()<<endl;
1144 cout<<"Interval used: -"<<edge<<" -> "<<edge<<endl;
1145 cout<<"Mean value :"<<mean<<endl;
1146 cout<<"Error: "<<error<<endl;
1147 cout<<"========================================="<<endl;
1148
1149 return 0;
1150}
1151
1152//____________________________________________________________________//
1153Bool_t AliProtonAnalysis::PrintYields(TH1 *hist, Double_t edge) {
1154 //calculates the (anti)proton yields within the \pm edge
1155 Double_t sum = 0.0, sumerror = 0.0;
1156 Double_t error = 0.0;
1157 for(Int_t i = 0; i < hist->GetXaxis()->GetNbins(); i++) {
1158 Double_t x = hist->GetBinCenter(i+1);
1159 Double_t y = hist->GetBinContent(i+1);
1160 if(TMath::Abs(x) < edge) {
1161 sum += y;
1162 sumerror += TMath::Power(hist->GetBinError(i+1),2);
1163 }
1164 }
1165
1166 error = TMath::Sqrt(sumerror);
1167
1168 cout<<"========================================="<<endl;
1169 cout<<"Input distribution: "<<hist->GetName()<<endl;
1170 cout<<"Interval used: -"<<edge<<" -> "<<edge<<endl;
1171 cout<<"Yields :"<<sum<<endl;
1172 cout<<"Error: "<<error<<endl;
1173 cout<<"========================================="<<endl;
1174
1175 return 0;
1176}
1177
336ea0ff 1178//____________________________________________________________________//
1179void AliProtonAnalysis::Correct() {
a3bc43fb 1180 //Apply the corrections: Fast & dirty way for the absorption corrections
336ea0ff 1181 fHistYPtProtons->Divide(fHistEfficiencyYPtProtons);
1182 fHistYPtAntiProtons->Divide(fHistEfficiencyYPtAntiProtons);
1183}
1184
251e4034 1185//____________________________________________________________________//
1186void AliProtonAnalysis::Correct(Int_t step) {
1187 //Applies the correction maps to the initial containers
1188 fCorrectProtons = new AliCFDataGrid("correctProtons",
1189 "corrected data",
1190 *fProtonContainer);
0ab648ea 1191 fCorrectProtons->SetMeasured(0);
251e4034 1192 fCorrectProtons->ApplyEffCorrection(*(AliCFEffGrid *)fEffGridListProtons->At(step));
1193
1194 fCorrectAntiProtons = new AliCFDataGrid("correctAntiProtons",
1195 "corrected data",
1196 *fAntiProtonContainer);
0ab648ea 1197 fCorrectAntiProtons->SetMeasured(0);
251e4034 1198 fCorrectAntiProtons->ApplyEffCorrection(*(AliCFEffGrid *)fEffGridListAntiProtons->At(step));
1199}
1200
39f2a708 1201//____________________________________________________________________//
1202Bool_t AliProtonAnalysis::ReadCorrectionContainer(const char* filename) {
1203 // Reads the outout of the correction framework task
1204 // Creates the correction maps
1205 // Puts the results in the different TList objects
1206 Bool_t status = kTRUE;
1207
336ea0ff 1208 TFile *file = TFile::Open(filename);
1209 if(!file) {
1210 cout<<"Could not find the input CORRFW file "<<filename<<endl;
1211 status = kFALSE;
1212 }
1213 TList *list = dynamic_cast<TList *>(file->Get("outputList"));
1214 Int_t iRap = 0, iPt = 1;
1215
1216 //Calculation of efficiency/correction: Protons
1217 AliCFContainer *gProtonContainer = dynamic_cast<AliCFContainer *>(list->At(0));
1218 AliCFEffGrid *effProtonsStep0Step2 = new AliCFEffGrid("eff20",
1219 "effProtonsStep0Step2",
1220 *gProtonContainer);
1221 effProtonsStep0Step2->CalculateEfficiency(2,0);
1222 fHistEfficiencyYPtProtons = effProtonsStep0Step2->Project(iRap,iPt);
1223 fHistEfficiencyYPtProtons->Sumw2();
1224
1225 //Calculation of efficiency/correction: Protons
1226 AliCFContainer *gAntiProtonContainer = dynamic_cast<AliCFContainer *>(list->At(1));
1227 AliCFEffGrid *effAntiProtonsStep0Step2 = new AliCFEffGrid("eff20",
1228 "effAntiProtonsStep0Step2",
1229 *gAntiProtonContainer);
1230 effAntiProtonsStep0Step2->CalculateEfficiency(2,0);
1231 fHistEfficiencyYPtAntiProtons = effAntiProtonsStep0Step2->Project(iRap,iPt);
1232 fHistEfficiencyYPtAntiProtons->Sumw2();
1233
1234 Correct();
1235
1236 return status;
1237}
1238
1239//____________________________________________________________________//
1240/*Bool_t AliProtonAnalysis::ReadCorrectionContainer(const char* filename) {
1241 // Reads the outout of the correction framework task
1242 // Creates the correction maps
1243 // Puts the results in the different TList objects
1244 Bool_t status = kTRUE;
1245
39f2a708 1246 TFile *file = TFile::Open(filename);
1247 if(!file) {
1248 cout<<"Could not find the input CORRFW file "<<filename<<endl;
1249 status = kFALSE;
1250 }
1251
cdb3530f 1252 //________________________________________//
1253 //Protons
251e4034 1254 fEffGridListProtons = new TList();
cdb3530f 1255 fCorrectionListProtons2D = new TList();
1256 fEfficiencyListProtons1D = new TList();
1257 fCorrectionListProtons1D = new TList();
1258
1259 AliCFContainer *corrfwContainerProtons = (AliCFContainer*) (file->Get("containerProtons"));
1260 if(!corrfwContainerProtons) {
1261 cout<<"CORRFW container for protons not found!"<<endl;
39f2a708 1262 status = kFALSE;
1263 }
1264
cdb3530f 1265 Int_t nSteps = corrfwContainerProtons->GetNStep();
39f2a708 1266 TH2D *gYPt[4];
1267 //currently the GRID is formed by the y-pT parameters
1268 //Add Vz as a next step
1269 Int_t iRap = 0, iPt = 1;
9b168f47 1270 AliCFEffGrid *effProtonsStep0Step1 = new AliCFEffGrid("eff10",
1271 "effProtonsStep0Step1",
1272 *corrfwContainerProtons);
1273 effProtonsStep0Step1->CalculateEfficiency(1,0); //eff= step1/step0
251e4034 1274 fEffGridListProtons->Add(effProtonsStep0Step1);
9b168f47 1275 gYPt[0] = effProtonsStep0Step1->Project(iRap,iPt);
1276 fCorrectionListProtons2D->Add(gYPt[0]);
1277
1278 AliCFEffGrid *effProtonsStep0Step2 = new AliCFEffGrid("eff20",
1279 "effProtonsStep0Step2",
1280 *corrfwContainerProtons);
1281 effProtonsStep0Step2->CalculateEfficiency(2,0); //eff= step2/step0
251e4034 1282 fEffGridListProtons->Add(effProtonsStep0Step2);
9b168f47 1283 gYPt[1] = effProtonsStep0Step2->Project(iRap,iPt);
1284 fCorrectionListProtons2D->Add(gYPt[1]);
1285
1286 AliCFEffGrid *effProtonsStep0Step3 = new AliCFEffGrid("eff30",
1287 "effProtonsStep0Step3",
1288 *corrfwContainerProtons);
1289 effProtonsStep0Step3->CalculateEfficiency(3,0); //eff= step1/step0
251e4034 1290 fEffGridListProtons->Add(effProtonsStep0Step3);
9b168f47 1291 gYPt[2] = effProtonsStep0Step3->Project(iRap,iPt);
1292 fCorrectionListProtons2D->Add(gYPt[2]);
1293
1294 TH1D *gEfficiency[2][3]; //efficiency as a function of pT and of y (raws-[2])
1295 TH1D *gCorrection[2][3]; //efficiency as a function of pT and of y (raws-[2])
9b4aee57 1296 TString gTitle;
cdb3530f 1297 //Get the projection of the efficiency maps
9b168f47 1298 for(Int_t iParameter = 0; iParameter < 2; iParameter++) {
1299 gEfficiency[iParameter][0] = effProtonsStep0Step1->Project(iParameter);
1300 gTitle = "ProtonsEfficiency_Parameter"; gTitle += iParameter+1;
1301 gTitle += "_Step0_Step1";
1302 gEfficiency[iParameter][0]->SetName(gTitle.Data());
1303 fEfficiencyListProtons1D->Add(gEfficiency[iParameter][0]);
1304 gTitle = "ProtonsCorrection_Parameter"; gTitle += iParameter+1;
1305 gTitle += "_Step0_Step1";
1306 gCorrection[iParameter][0] = new TH1D(gTitle.Data(),
1307 gTitle.Data(),
1308 gEfficiency[iParameter][0]->GetNbinsX(),
1309 gEfficiency[iParameter][0]->GetXaxis()->GetXmin(),
1310 gEfficiency[iParameter][0]->GetXaxis()->GetXmax());
1311 //initialisation of the correction
1312 for(Int_t iBin = 1; iBin <= gEfficiency[iParameter][0]->GetNbinsX(); iBin++)
1313 gCorrection[iParameter][0]->SetBinContent(iBin,1.0);
1314
1315 gEfficiency[iParameter][1] = effProtonsStep0Step2->Project(iParameter);
1316 gTitle = "ProtonsEfficiency_Parameter"; gTitle += iParameter+1;
1317 gTitle += "_Step0_Step2";
1318 gEfficiency[iParameter][1]->SetName(gTitle.Data());
1319 fEfficiencyListProtons1D->Add(gEfficiency[iParameter][1]);
1320 gTitle = "ProtonsCorrection_Parameter"; gTitle += iParameter+1;
1321 gTitle += "_Step0_Step2";
1322 gCorrection[iParameter][1] = new TH1D(gTitle.Data(),
1323 gTitle.Data(),
1324 gEfficiency[iParameter][1]->GetNbinsX(),
1325 gEfficiency[iParameter][1]->GetXaxis()->GetXmin(),
1326 gEfficiency[iParameter][1]->GetXaxis()->GetXmax());
1327 //initialisation of the correction
1328 for(Int_t iBin = 1; iBin <= gEfficiency[iParameter][1]->GetNbinsX(); iBin++)
1329 gCorrection[iParameter][1]->SetBinContent(iBin,1.0);
1330
1331 gEfficiency[iParameter][2] = effProtonsStep0Step3->Project(iParameter);
1332 gTitle = "ProtonsEfficiency_Parameter"; gTitle += iParameter+1;
1333 gTitle += "_Step0_Step3";
1334 gEfficiency[iParameter][2]->SetName(gTitle.Data());
1335 fEfficiencyListProtons1D->Add(gEfficiency[iParameter][2]);
1336 gTitle = "ProtonsCorrection_Parameter"; gTitle += iParameter+1;
1337 gTitle += "_Step0_Step3";
1338 gCorrection[iParameter][2] = new TH1D(gTitle.Data(),
1339 gTitle.Data(),
1340 gEfficiency[iParameter][2]->GetNbinsX(),
1341 gEfficiency[iParameter][2]->GetXaxis()->GetXmin(),
1342 gEfficiency[iParameter][2]->GetXaxis()->GetXmax());
1343 //initialisation of the correction
1344 for(Int_t iBin = 1; iBin <= gEfficiency[iParameter][2]->GetNbinsX(); iBin++)
1345 gCorrection[iParameter][2]->SetBinContent(iBin,1.0);
cdb3530f 1346 }//parameter loop
1347 //Calculate the 1D correction parameters as a function of y and pT
1348 for(Int_t iParameter = 0; iParameter < 2; iParameter++) {
1349 for(Int_t iStep = 1; iStep < nSteps; iStep++) {
1350 gCorrection[iParameter][iStep-1]->Divide(gEfficiency[iParameter][iStep-1]);
1351 fCorrectionListProtons1D->Add(gCorrection[iParameter][iStep-1]);
1352 }
1353 }
1354
1355 //________________________________________//
1356 //AntiProtons
251e4034 1357 fEffGridListAntiProtons = new TList();
cdb3530f 1358 fCorrectionListAntiProtons2D = new TList();
1359 fEfficiencyListAntiProtons1D = new TList();
1360 fCorrectionListAntiProtons1D = new TList();
1361
1362 AliCFContainer *corrfwContainerAntiProtons = (AliCFContainer*) (file->Get("containerAntiProtons"));
1363 if(!corrfwContainerAntiProtons) {
1364 cout<<"CORRFW container for antiprotons not found!"<<endl;
1365 status = kFALSE;
1366 }
1367
1368 nSteps = corrfwContainerAntiProtons->GetNStep();
1369 //currently the GRID is formed by the y-pT parameters
1370 //Add Vz as a next step
9b168f47 1371 AliCFEffGrid *effAntiProtonsStep0Step1 = new AliCFEffGrid("eff10",
1372 "effAntiProtonsStep0Step1",
1373 *corrfwContainerAntiProtons);
1374 effAntiProtonsStep0Step1->CalculateEfficiency(1,0); //eff= step1/step0
251e4034 1375 fEffGridListAntiProtons->Add(effAntiProtonsStep0Step1);
9b168f47 1376 gYPt[0] = effAntiProtonsStep0Step1->Project(iRap,iPt);
1377 fCorrectionListAntiProtons2D->Add(gYPt[0]);
1378
1379 AliCFEffGrid *effAntiProtonsStep0Step2 = new AliCFEffGrid("eff20",
1380 "effAntiProtonsStep0Step2",
1381 *corrfwContainerAntiProtons);
1382 effAntiProtonsStep0Step2->CalculateEfficiency(2,0); //eff= step2/step0
251e4034 1383 fEffGridListAntiProtons->Add(effAntiProtonsStep0Step2);
9b168f47 1384 gYPt[1] = effAntiProtonsStep0Step2->Project(iRap,iPt);
1385 fCorrectionListAntiProtons2D->Add(gYPt[1]);
1386
1387 AliCFEffGrid *effAntiProtonsStep0Step3 = new AliCFEffGrid("eff30",
1388 "effAntiProtonsStep0Step3",
1389 *corrfwContainerAntiProtons);
1390 effAntiProtonsStep0Step3->CalculateEfficiency(3,0); //eff= step1/step0
251e4034 1391 fEffGridListAntiProtons->Add(effAntiProtonsStep0Step3);
9b168f47 1392 gYPt[2] = effAntiProtonsStep0Step3->Project(iRap,iPt);
1393 fCorrectionListAntiProtons2D->Add(gYPt[2]);
cdb3530f 1394
39f2a708 1395 //Get the projection of the efficiency maps
9b168f47 1396 for(Int_t iParameter = 0; iParameter < 2; iParameter++) {
1397 gEfficiency[iParameter][0] = effAntiProtonsStep0Step1->Project(iParameter);
1398 gTitle = "AntiProtonsEfficiency_Parameter"; gTitle += iParameter+1;
1399 gTitle += "_Step0_Step1";
1400 gEfficiency[iParameter][0]->SetName(gTitle.Data());
1401 fEfficiencyListAntiProtons1D->Add(gEfficiency[iParameter][0]);
1402 gTitle = "AntiProtonsCorrection_Parameter"; gTitle += iParameter+1;
1403 gTitle += "_Step0_Step1";
1404 gCorrection[iParameter][0] = new TH1D(gTitle.Data(),
1405 gTitle.Data(),
1406 gEfficiency[iParameter][0]->GetNbinsX(),
1407 gEfficiency[iParameter][0]->GetXaxis()->GetXmin(),
1408 gEfficiency[iParameter][0]->GetXaxis()->GetXmax());
1409 //initialisation of the correction
1410 for(Int_t iBin = 1; iBin <= gEfficiency[iParameter][0]->GetNbinsX(); iBin++)
1411 gCorrection[iParameter][0]->SetBinContent(iBin,1.0);
1412
1413 gEfficiency[iParameter][1] = effAntiProtonsStep0Step2->Project(iParameter);
1414 gTitle = "AntiProtonsEfficiency_Parameter"; gTitle += iParameter+1;
1415 gTitle += "_Step0_Step2";
1416 gEfficiency[iParameter][1]->SetName(gTitle.Data());
1417 fEfficiencyListAntiProtons1D->Add(gEfficiency[iParameter][1]);
1418 gTitle = "AntiProtonsCorrection_Parameter"; gTitle += iParameter+1;
1419 gTitle += "_Step0_Step2";
1420 gCorrection[iParameter][1] = new TH1D(gTitle.Data(),
1421 gTitle.Data(),
1422 gEfficiency[iParameter][1]->GetNbinsX(),
1423 gEfficiency[iParameter][1]->GetXaxis()->GetXmin(),
1424 gEfficiency[iParameter][1]->GetXaxis()->GetXmax());
1425 //initialisation of the correction
1426 for(Int_t iBin = 1; iBin <= gEfficiency[iParameter][1]->GetNbinsX(); iBin++)
1427 gCorrection[iParameter][1]->SetBinContent(iBin,1.0);
1428
1429 gEfficiency[iParameter][2] = effAntiProtonsStep0Step3->Project(iParameter);
1430 gTitle = "AntiProtonsEfficiency_Parameter"; gTitle += iParameter+1;
1431 gTitle += "_Step0_Step3";
1432 gEfficiency[iParameter][2]->SetName(gTitle.Data());
1433 fEfficiencyListAntiProtons1D->Add(gEfficiency[iParameter][2]);
1434 gTitle = "AntiProtonsCorrection_Parameter"; gTitle += iParameter+1;
1435 gTitle += "_Step0_Step3";
1436 gCorrection[iParameter][2] = new TH1D(gTitle.Data(),
1437 gTitle.Data(),
1438 gEfficiency[iParameter][2]->GetNbinsX(),
1439 gEfficiency[iParameter][2]->GetXaxis()->GetXmin(),
1440 gEfficiency[iParameter][2]->GetXaxis()->GetXmax());
1441 //initialisation of the correction
1442 for(Int_t iBin = 1; iBin <= gEfficiency[iParameter][2]->GetNbinsX(); iBin++)
1443 gCorrection[iParameter][2]->SetBinContent(iBin,1.0);
39f2a708 1444 }//parameter loop
1445 //Calculate the 1D correction parameters as a function of y and pT
1446 for(Int_t iParameter = 0; iParameter < 2; iParameter++) {
1447 for(Int_t iStep = 1; iStep < nSteps; iStep++) {
1448 gCorrection[iParameter][iStep-1]->Divide(gEfficiency[iParameter][iStep-1]);
cdb3530f 1449 fCorrectionListAntiProtons1D->Add(gCorrection[iParameter][iStep-1]);
39f2a708 1450 }
1451 }
ef1a8dbd 1452
1453 return status;
336ea0ff 1454 }*/
24421eb6 1455
735cc63d 1456//____________________________________________________________________//
1457void AliProtonAnalysis::InitQA() {
1458 //Applies the correction maps to the initial containers
1459 fInitQAFlag = kTRUE;
1460 fGlobalQAList = new TList();
1461 fGlobalQAList->SetName("fGlobalQAList");
1462
1463 //========================================================//
1464 fQA2DList = new TList();
1465 fQA2DList->SetName("fQA2DList");
1466 fGlobalQAList->Add(fQA2DList);
37cb8683 1467
790140ac 1468 //dEdx plots
37cb8683 1469 TH2F *gHistdEdxP = new TH2F("gHistdEdxP","dE/dx (TPC); P [GeV/c]; dE/dx [a.u]",1000,0.05,20.05,600,0,600);
790140ac 1470 fQA2DList->Add(gHistdEdxP);
37cb8683 1471 TH2F *gHistProtonsdEdxP = new TH2F("gHistProtonsdEdxP","Accepted protons dE/dx (TPC); P [GeV/c]; dE/dx [a.u]",1000,0.05,20.05,600,0,600);
790140ac 1472 fQA2DList->Add(gHistProtonsdEdxP);
37cb8683 1473
ff672838 1474 //normalized dEdx plots
1475 TH2F *gHistZP = new TH2F("gHistZP","Normalized dE/dx (TPC); P [GeV/c]; ln[(dE/dx)_{exp.}/(dE/dx)_{BB}] ",1000,0.05,20.05,100,-2.0,2.0);
1476 fQA2DList->Add(gHistZP);
1477 TH2F *gHistProtonsZP = new TH2F("gHistProtonsZP","Normalized dE/dx (TPC); P [GeV/c]; ln[(dE/dx)_{exp.}/(dE/dx)_{BB}] ",1000,0.05,20.05,100,-2.0,2.0);
1478 fQA2DList->Add(gHistProtonsZP);
1479
37cb8683 1480 //eta-phi-Npoints(dEdx)
1481 TH3F *gHistEtaPhiTPCdEdxNPoints = new TH3F("gHistEtaPhiTPCdEdxNPoints",
1482 ";#eta;#phi;N_{points}(TPC)",
e56f08ed 1483 18,-0.9,0.9,
1484 180,0,360,
37cb8683 1485 100,0,200);
1486 gHistEtaPhiTPCdEdxNPoints->SetStats(kTRUE);
1487 fQA2DList->Add(gHistEtaPhiTPCdEdxNPoints);
1488 TH3F *gHistProtonsEtaPhiTPCdEdxNPoints = new TH3F("gHistProtonsEtaPhiTPCdEdxNPoints",
1489 ";#eta;#phi;N_{points}(TPC)",
e56f08ed 1490 18,-0.9,0.9,
1491 180,0,360,
37cb8683 1492 100,0,200);
1493 gHistProtonsEtaPhiTPCdEdxNPoints->SetStats(kTRUE);
1494 fQA2DList->Add(gHistProtonsEtaPhiTPCdEdxNPoints);
1495
1496 //eta-phi-Npoints
1497 TH3F *gHistEtaPhiTPCNPoints = new TH3F("gHistEtaPhiTPCNPoints",
1498 ";#eta;#phi;N_{points}(TPC)",
e56f08ed 1499 18,-0.9,0.9,
1500 180,0,360,
37cb8683 1501 100,0,200);
1502 gHistEtaPhiTPCNPoints->SetStats(kTRUE);
1503 fQA2DList->Add(gHistEtaPhiTPCNPoints);
1504 TH3F *gHistProtonsEtaPhiTPCNPoints = new TH3F("gHistProtonsEtaPhiTPCNPoints",
1505 ";#eta;#phi;N_{points}(TPC)",
e56f08ed 1506 18,-0.9,0.9,
1507 180,0,360,
37cb8683 1508 100,0,200);
1509 gHistProtonsEtaPhiTPCNPoints->SetStats(kTRUE);
1510 fQA2DList->Add(gHistProtonsEtaPhiTPCNPoints);
1511
1512 //pt-phi-Npoints(dEdx)
1513 TH3F *gHistPtPhiTPCdEdxNPoints = new TH3F("gHistPtPhiTPCdEdxNPoints",
1514 ";P_{T} [GeV/c];#phi;N_{points}(TPC)",
1515 fNBinsPt,fMinPt,fMaxPt,
e56f08ed 1516 180,0,360,
37cb8683 1517 100,0,200);
1518 gHistPtPhiTPCdEdxNPoints->SetStats(kTRUE);
1519 fQA2DList->Add(gHistPtPhiTPCdEdxNPoints);
1520 TH3F *gHistProtonsPtPhiTPCdEdxNPoints = new TH3F("gHistProtonsPtPhiTPCdEdxNPoints",
1521 ";P_{T} [GeV/c];#phi;N_{points}(TPC)",
1522 fNBinsPt,fMinPt,fMaxPt,
e56f08ed 1523 180,0,360,
37cb8683 1524 100,0,200);
1525 gHistProtonsPtPhiTPCdEdxNPoints->SetStats(kTRUE);
1526 fQA2DList->Add(gHistProtonsPtPhiTPCdEdxNPoints);
1527
1528 //pt-phi-Npoints
1529 TH3F *gHistPtPhiTPCNPoints = new TH3F("gHistPtPhiTPCNPoints",
1530 ";P_{T} [GeV/c];#phi;N_{points}(TPC)",
1531 fNBinsPt,fMinPt,fMaxPt,
e56f08ed 1532 180,0,360,
37cb8683 1533 100,0,200);
1534 gHistPtPhiTPCNPoints->SetStats(kTRUE);
1535 fQA2DList->Add(gHistPtPhiTPCNPoints);
1536 TH3F *gHistProtonsPtPhiTPCNPoints = new TH3F("gHistProtonsPtPhiTPCNPoints",
1537 ";P_{T} [GeV/c];#phi;N_{points}(TPC)",
1538 fNBinsPt,fMinPt,fMaxPt,
e56f08ed 1539 180,0,360,
37cb8683 1540 100,0,200);
1541 gHistProtonsPtPhiTPCNPoints->SetStats(kTRUE);
1542 fQA2DList->Add(gHistProtonsPtPhiTPCNPoints);
1543
e56f08ed 1544 //eta-phi for protons & antiprotons
1545 TH2F *gHistProtonsEtaPhi = new TH2F("gHistProtonsEtaPhi",
1546 ";#eta;#phi",
1547 18,-0.9,0.9,
1548 180,0,360);
1549 gHistProtonsEtaPhi->SetStats(kTRUE);
1550 fQA2DList->Add(gHistProtonsEtaPhi);
1551 TH2F *gHistAntiProtonsEtaPhi = new TH2F("gHistAntiProtonsEtaPhi",
1552 ";#eta;#phi",
1553 18,-0.9,0.9,
1554 180,0,360);
1555 gHistAntiProtonsEtaPhi->SetStats(kTRUE);
1556 fQA2DList->Add(gHistAntiProtonsEtaPhi);
1557
4de4661f 1558 //dca vs pT for protons & antiprotons
3322c804 1559 TH3F *gHistProtonsDCAxyEtaPt = new TH3F("gHistProtonsDCAxyEtaPt",
1560 ";P_{T} [GeV/c];dca_{xy} [cm]",
1561 fNBinsY,fMinY,fMaxY,
1562 fNBinsPt,fMinPt,fMaxPt,
1563 100,0,10);
1564 if(fProtonAnalysisBase->GetEtaMode())
1565 gHistProtonsDCAxyEtaPt->GetXaxis()->SetTitle("#eta");
1566 else
1567 gHistProtonsDCAxyEtaPt->GetXaxis()->SetTitle("y");
1568 gHistProtonsDCAxyEtaPt->SetStats(kTRUE);
1569 fQA2DList->Add(gHistProtonsDCAxyEtaPt);
1570 TH3F *gHistProtonsDCAzEtaPt = new TH3F("gHistProtonsDCAzEtaPt",
1571 ";P_{T} [GeV/c];dca_{z} [cm]",
1572 fNBinsY,fMinY,fMaxY,
1573 fNBinsPt,fMinPt,fMaxPt,
1574 100,0,10);
1575 if(fProtonAnalysisBase->GetEtaMode())
1576 gHistProtonsDCAzEtaPt->GetXaxis()->SetTitle("#eta");
1577 else
1578 gHistProtonsDCAzEtaPt->GetXaxis()->SetTitle("y");
1579 gHistProtonsDCAzEtaPt->SetStats(kTRUE);
1580 fQA2DList->Add(gHistProtonsDCAzEtaPt);
1581 TH3F *gHistAntiProtonsDCAxyEtaPt = new TH3F("gHistAntiProtonsDCAxyEtaPt",
1582 ";P_{T} [GeV/c];dca_{xy} [cm]",
1583 fNBinsY,fMinY,fMaxY,
1584 fNBinsPt,fMinPt,fMaxPt,
1585 100,0,10);
1586 if(fProtonAnalysisBase->GetEtaMode())
1587 gHistAntiProtonsDCAxyEtaPt->GetXaxis()->SetTitle("#eta");
1588 else
1589 gHistAntiProtonsDCAxyEtaPt->GetXaxis()->SetTitle("y");
1590 gHistAntiProtonsDCAxyEtaPt->SetStats(kTRUE);
1591 fQA2DList->Add(gHistAntiProtonsDCAxyEtaPt);
1592 TH3F *gHistAntiProtonsDCAzEtaPt = new TH3F("gHistAntiProtonsDCAzEtaPt",
1593 ";P_{T} [GeV/c];dca_{z} [cm]",
1594 fNBinsY,fMinY,fMaxY,
1595 fNBinsPt,fMinPt,fMaxPt,
1596 100,0,10);
1597 if(fProtonAnalysisBase->GetEtaMode())
1598 gHistAntiProtonsDCAzEtaPt->GetXaxis()->SetTitle("#eta");
1599 else
1600 gHistAntiProtonsDCAzEtaPt->GetXaxis()->SetTitle("y");
1601 gHistAntiProtonsDCAzEtaPt->SetStats(kTRUE);
1602 fQA2DList->Add(gHistAntiProtonsDCAzEtaPt);
4de4661f 1603
735cc63d 1604 //========================================================//
1605 fQAProtonsAcceptedList = new TList();
1606 fQAProtonsAcceptedList->SetName("fQAProtonsAcceptedList");
1607 fGlobalQAList->Add(fQAProtonsAcceptedList);
1608 //Accepted protons
1609 TH1F *gProtonsITSClustersPass = new TH1F("gProtonsITSClustersPass",
1610 ";N_{clusters} (ITS);Entries",
1611 7,0,7);
1612 fQAProtonsAcceptedList->Add(gProtonsITSClustersPass);
1613 TH1F *gProtonsChi2PerClusterITSPass = new TH1F("gProtonsChi2PerClusterITSPass",
1614 ";x^{2}/N_{clusters} (ITS);Entries",
1615 100,0,4);
1616 fQAProtonsAcceptedList->Add(gProtonsChi2PerClusterITSPass);
1617 TH1F *gProtonsTPCClustersPass = new TH1F("gProtonsTPCClustersPass",
1618 ";N_{clusters} (TPC);Entries",
1619 100,0,200);
1620 fQAProtonsAcceptedList->Add(gProtonsTPCClustersPass);
1621 TH1F *gProtonsChi2PerClusterTPCPass = new TH1F("gProtonsChi2PerClusterTPCPass",
1622 ";x^{2}/N_{clusters} (TPC);Entries",
1623 100,0,4);
1624 fQAProtonsAcceptedList->Add(gProtonsChi2PerClusterTPCPass);
1625 TH1F *gProtonsExtCov11Pass = new TH1F("gProtonsExtCov11Pass",
1626 ";#sigma_{y} [cm];Entries",
1627 100,0,4);
1628 fQAProtonsAcceptedList->Add(gProtonsExtCov11Pass);
1629 TH1F *gProtonsExtCov22Pass = new TH1F("gProtonsExtCov22Pass",
1630 ";#sigma_{z} [cm];Entries",
1631 100,0,4);
1632 fQAProtonsAcceptedList->Add(gProtonsExtCov22Pass);
1633 TH1F *gProtonsExtCov33Pass = new TH1F("gProtonsExtCov33Pass",
1634 ";#sigma_{sin(#phi)};Entries",
1635 100,0,4);
1636 fQAProtonsAcceptedList->Add(gProtonsExtCov33Pass);
1637 TH1F *gProtonsExtCov44Pass = new TH1F("gProtonsExtCov44Pass",
1638 ";#sigma_{tan(#lambda)};Entries",
1639 100,0,4);
1640 fQAProtonsAcceptedList->Add(gProtonsExtCov44Pass);
1641 TH1F *gProtonsExtCov55Pass = new TH1F("gProtonsExtCov55Pass",
1642 ";#sigma_{1/P_{T}} [GeV/c]^{-1};Entries",
1643 100,0,4);
1644 fQAProtonsAcceptedList->Add(gProtonsExtCov55Pass);
1645 TH1F *gProtonsSigmaToVertexPass = new TH1F("gProtonsSigmaToVertexPass",
1646 ";#sigma_{Vertex};Entries",
1647 100,0,10);
1648 fQAProtonsAcceptedList->Add(gProtonsSigmaToVertexPass);
1649 TH1F *gProtonsSigmaToVertexTPCPass = new TH1F("gProtonsSigmaToVertexTPCPass",
1650 ";#sigma_{Vertex};Entries",
1651 100,0,10);
1652 fQAProtonsAcceptedList->Add(gProtonsSigmaToVertexTPCPass);
1653 TH1F *gProtonsDCAXYPass = new TH1F("gProtonsDCAXYPass",
1654 ";DCA_{xy} [cm];Entries",
1655 100,0,20);
1656 fQAProtonsAcceptedList->Add(gProtonsDCAXYPass);
1657 TH1F *gProtonsDCAXYTPCPass = new TH1F("gProtonsDCAXYTPCPass",
1658 ";DCA_{xy} [cm];Entries",
1659 100,0,20);
1660 fQAProtonsAcceptedList->Add(gProtonsDCAXYTPCPass);
1661 TH1F *gProtonsDCAZPass = new TH1F("gProtonsDCAZPass",
1662 ";DCA_{z} [cm];Entries",
1663 100,0,20);
1664 fQAProtonsAcceptedList->Add(gProtonsDCAZPass);
1665 TH1F *gProtonsDCAZTPCPass = new TH1F("gProtonsDCAZTPCPass",
1666 ";DCA_{z} [cm];Entries",
1667 100,0,20);
1668 fQAProtonsAcceptedList->Add(gProtonsDCAZTPCPass);
1669 TH1F *gProtonsConstrainChi2Pass = new TH1F("gProtonsConstrainChi2Pass",
1670 ";Log_{10}(#chi^{2});Entries",
1671 100,-10,10);
1672 fQAProtonsAcceptedList->Add(gProtonsConstrainChi2Pass);
1673 TH1F *gProtonsITSRefitPass = new TH1F("gProtonsITSRefitPass",
1674 "",10,-1,1);
1675 fQAProtonsAcceptedList->Add(gProtonsITSRefitPass);
1676 TH1F *gProtonsTPCRefitPass = new TH1F("gProtonsTPCRefitPass",
1677 "",10,-1,1);
1678 fQAProtonsAcceptedList->Add(gProtonsTPCRefitPass);
1679 TH1F *gProtonsESDpidPass = new TH1F("gProtonsESDpidPass",
1680 "",10,-1,1);
1681 fQAProtonsAcceptedList->Add(gProtonsESDpidPass);
1682 TH1F *gProtonsTPCpidPass = new TH1F("gProtonsTPCpidPass",
1683 "",10,-1,1);
1684 fQAProtonsAcceptedList->Add(gProtonsTPCpidPass);
1685 TH1F *gProtonsPointOnITSLayer1Pass = new TH1F("gProtonsPointOnITSLayer1Pass",
1686 "",10,-1,1);
1687 fQAProtonsAcceptedList->Add(gProtonsPointOnITSLayer1Pass);
1688 TH1F *gProtonsPointOnITSLayer2Pass = new TH1F("gProtonsPointOnITSLayer2Pass",
1689 "",10,-1,1);
1690 fQAProtonsAcceptedList->Add(gProtonsPointOnITSLayer2Pass);
1691 TH1F *gProtonsPointOnITSLayer3Pass = new TH1F("gProtonsPointOnITSLayer3Pass",
1692 "",10,-1,1);
1693 fQAProtonsAcceptedList->Add(gProtonsPointOnITSLayer3Pass);
1694 TH1F *gProtonsPointOnITSLayer4Pass = new TH1F("gProtonsPointOnITSLayer4Pass",
1695 "",10,-1,1);
1696 fQAProtonsAcceptedList->Add(gProtonsPointOnITSLayer4Pass);
1697 TH1F *gProtonsPointOnITSLayer5Pass = new TH1F("gProtonsPointOnITSLayer5Pass",
1698 "",10,-1,1);
1699 fQAProtonsAcceptedList->Add(gProtonsPointOnITSLayer5Pass);
1700 TH1F *gProtonsPointOnITSLayer6Pass = new TH1F("gProtonsPointOnITSLayer6Pass",
1701 "",10,-1,1);
1702 fQAProtonsAcceptedList->Add(gProtonsPointOnITSLayer6Pass);
1703 TH1F *gProtonsNumberOfTPCdEdxPointsPass = new TH1F("gProtonsNumberOfTPCdEdxPointsPass","",100,0,200);
1704 fQAProtonsAcceptedList->Add(gProtonsNumberOfTPCdEdxPointsPass);
1705
1706 //========================================================//
1707 fQAProtonsRejectedList = new TList();
1708 fQAProtonsRejectedList->SetName("fQAProtonsRejectedList");
1709 fGlobalQAList->Add(fQAProtonsRejectedList);
1710 //Rejected protons
1711 TH1F *gProtonsITSClustersReject = new TH1F("gProtonsITSClustersReject",
1712 ";N_{clusters} (ITS);Entries",
1713 7,0,7);
1714 gProtonsITSClustersReject->SetFillColor(kRed-2);
1715 fQAProtonsRejectedList->Add(gProtonsITSClustersReject);
1716 TH1F *gProtonsChi2PerClusterITSReject = new TH1F("gProtonsChi2PerClusterITSReject",
1717 ";x^{2}/N_{clusters} (ITS);Entries",
1718 100,0,4);
1719 gProtonsChi2PerClusterITSReject->SetFillColor(kRed-2);
1720 fQAProtonsRejectedList->Add(gProtonsChi2PerClusterITSReject);
1721 TH1F *gProtonsTPCClustersReject = new TH1F("gProtonsTPCClustersReject",
1722 ";N_{clusters} (TPC);Entries",
1723 100,0,200);
1724 gProtonsTPCClustersReject->SetFillColor(kRed-2);
1725 fQAProtonsRejectedList->Add(gProtonsTPCClustersReject);
1726 TH1F *gProtonsChi2PerClusterTPCReject = new TH1F("gProtonsChi2PerClusterTPCReject",
1727 ";x^{2}/N_{clusters} (TPC);Entries",
1728 100,0,4);
1729 gProtonsChi2PerClusterTPCReject->SetFillColor(kRed-2);
1730 fQAProtonsRejectedList->Add(gProtonsChi2PerClusterTPCReject);
1731 TH1F *gProtonsExtCov11Reject = new TH1F("gProtonsExtCov11Reject",
1732 ";#sigma_{y} [cm];Entries",
1733 100,0,4);
1734 gProtonsExtCov11Reject->SetFillColor(kRed-2);
1735 fQAProtonsRejectedList->Add(gProtonsExtCov11Reject);
1736 TH1F *gProtonsExtCov22Reject = new TH1F("gProtonsExtCov22Reject",
1737 ";#sigma_{z} [cm];Entries",
1738 100,0,4);
1739 gProtonsExtCov22Reject->SetFillColor(kRed-2);
1740 fQAProtonsRejectedList->Add(gProtonsExtCov22Reject);
1741 TH1F *gProtonsExtCov33Reject = new TH1F("gProtonsExtCov33Reject",
1742 ";#sigma_{sin(#phi)};Entries",
1743 100,0,4);
1744 gProtonsExtCov33Reject->SetFillColor(kRed-2);
1745 fQAProtonsRejectedList->Add(gProtonsExtCov33Reject);
1746 TH1F *gProtonsExtCov44Reject = new TH1F("gProtonsExtCov44Reject",
1747 ";#sigma_{tan(#lambda)};Entries",
1748 100,0,4);
1749 gProtonsExtCov44Reject->SetFillColor(kRed-2);
1750 fQAProtonsRejectedList->Add(gProtonsExtCov44Reject);
1751 TH1F *gProtonsExtCov55Reject = new TH1F("gProtonsExtCov55Reject",
1752 ";#sigma_{1/P_{T}} [GeV/c]^{-1};Entries",
1753 100,0,4);
1754 gProtonsExtCov55Reject->SetFillColor(kRed-2);
1755 fQAProtonsRejectedList->Add(gProtonsExtCov55Reject);
1756 TH1F *gProtonsSigmaToVertexReject = new TH1F("gProtonsSigmaToVertexReject",
1757 ";#sigma_{Vertex};Entries",
1758 100,0,10);
1759 gProtonsSigmaToVertexReject->SetFillColor(kRed-2);
1760 fQAProtonsRejectedList->Add(gProtonsSigmaToVertexReject);
1761 TH1F *gProtonsSigmaToVertexTPCReject = new TH1F("gProtonsSigmaToVertexTPCReject",
1762 ";#sigma_{Vertex};Entries",
1763 100,0,10);
1764 gProtonsSigmaToVertexTPCReject->SetFillColor(kRed-2);
1765 fQAProtonsRejectedList->Add(gProtonsSigmaToVertexTPCReject);
1766 TH1F *gProtonsDCAXYReject = new TH1F("gProtonsDCAXYReject",
1767 ";DCA_{xy} [cm];Entries",
1768 100,0,20);
1769 gProtonsDCAXYReject->SetFillColor(kRed-2);
1770 fQAProtonsRejectedList->Add(gProtonsDCAXYReject);
1771 TH1F *gProtonsDCAXYTPCReject = new TH1F("gProtonsDCAXYTPCReject",
1772 ";DCA_{xy} [cm];Entries",
1773 100,0,20);
1774 gProtonsDCAXYTPCReject->SetFillColor(kRed-2);
1775 fQAProtonsRejectedList->Add(gProtonsDCAXYTPCReject);
1776 TH1F *gProtonsDCAZReject = new TH1F("gProtonsDCAZReject",
1777 ";DCA_{z} [cm];Entries",
1778 100,0,20);
1779 gProtonsDCAZReject->SetFillColor(kRed-2);
1780 fQAProtonsRejectedList->Add(gProtonsDCAZReject);
1781 TH1F *gProtonsDCAZTPCReject = new TH1F("gProtonsDCAZTPCReject",
1782 ";DCA_{z} [cm];Entries",
1783 100,0,20);
1784 gProtonsDCAZTPCReject->SetFillColor(kRed-2);
1785 fQAProtonsRejectedList->Add(gProtonsDCAZTPCReject);
1786 TH1F *gProtonsConstrainChi2Reject = new TH1F("gProtonsConstrainChi2Reject",
1787 ";Log_{10}(#chi^{2});Entries",
1788 100,-10,10);
1789 gProtonsConstrainChi2Reject->SetFillColor(kRed-2);
1790 fQAProtonsRejectedList->Add(gProtonsConstrainChi2Reject);
1791 TH1F *gProtonsITSRefitReject = new TH1F("gProtonsITSRefitReject",
1792 "",10,-1,1);
1793 gProtonsITSRefitReject->SetFillColor(kRed-2);
1794 fQAProtonsRejectedList->Add(gProtonsITSRefitReject);
1795 TH1F *gProtonsTPCRefitReject = new TH1F("gProtonsTPCRefitReject",
1796 "",10,-1,1);
1797 gProtonsTPCRefitReject->SetFillColor(kRed-2);
1798 fQAProtonsRejectedList->Add(gProtonsTPCRefitReject);
1799 TH1F *gProtonsESDpidReject = new TH1F("gProtonsESDpidReject",
1800 "",10,-1,1);
1801 gProtonsESDpidReject->SetFillColor(kRed-2);
1802 fQAProtonsRejectedList->Add(gProtonsESDpidReject);
1803 TH1F *gProtonsTPCpidReject = new TH1F("gProtonsTPCpidReject",
1804 "",10,-1,1);
1805 gProtonsTPCpidReject->SetFillColor(kRed-2);
1806 fQAProtonsRejectedList->Add(gProtonsTPCpidReject);
1807 TH1F *gProtonsPointOnITSLayer1Reject = new TH1F("gProtonsPointOnITSLayer1Reject",
1808 "",10,-1,1);
1809 gProtonsPointOnITSLayer1Reject->SetFillColor(kRed-2);
1810 fQAProtonsRejectedList->Add(gProtonsPointOnITSLayer1Reject);
1811 TH1F *gProtonsPointOnITSLayer2Reject = new TH1F("gProtonsPointOnITSLayer2Reject",
1812 "",10,-1,1);
1813 gProtonsPointOnITSLayer2Reject->SetFillColor(kRed-2);
1814 fQAProtonsRejectedList->Add(gProtonsPointOnITSLayer2Reject);
1815 TH1F *gProtonsPointOnITSLayer3Reject = new TH1F("gProtonsPointOnITSLayer3Reject",
1816 "",10,-1,1);
1817 gProtonsPointOnITSLayer3Reject->SetFillColor(kRed-2);
1818 fQAProtonsRejectedList->Add(gProtonsPointOnITSLayer3Reject);
1819 TH1F *gProtonsPointOnITSLayer4Reject = new TH1F("gProtonsPointOnITSLayer4Reject",
1820 "",10,-1,1);
1821 gProtonsPointOnITSLayer4Reject->SetFillColor(kRed-2);
1822 fQAProtonsRejectedList->Add(gProtonsPointOnITSLayer4Reject);
1823 TH1F *gProtonsPointOnITSLayer5Reject = new TH1F("gProtonsPointOnITSLayer5Reject",
1824 "",10,-1,1);
1825 gProtonsPointOnITSLayer5Reject->SetFillColor(kRed-2);
1826 fQAProtonsRejectedList->Add(gProtonsPointOnITSLayer5Reject);
1827 TH1F *gProtonsPointOnITSLayer6Reject = new TH1F("gProtonsPointOnITSLayer6Reject",
1828 "",10,-1,1);
1829 gProtonsPointOnITSLayer6Reject->SetFillColor(kRed-2);
1830 fQAProtonsRejectedList->Add(gProtonsPointOnITSLayer6Reject);
1831 TH1F *gProtonsNumberOfTPCdEdxPointsReject = new TH1F("gProtonsNumberOfTPCdEdxPointsReject","",100,0,200);
1832 gProtonsNumberOfTPCdEdxPointsReject->SetFillColor(kRed-2);
1833 fQAProtonsRejectedList->Add(gProtonsNumberOfTPCdEdxPointsReject);
1834
1835 //========================================================//
1836 fQAAntiProtonsAcceptedList = new TList();
1837 fQAAntiProtonsAcceptedList->SetName("fQAAntiProtonsAcceptedList");
1838 fGlobalQAList->Add(fQAAntiProtonsAcceptedList);
1839 //Accepted antiprotons
1840 TH1F *gAntiProtonsITSClustersPass = new TH1F("gAntiProtonsITSClustersPass",
1841 ";N_{clusters} (ITS);Entries",
1842 7,0,7);
1843 fQAAntiProtonsAcceptedList->Add(gAntiProtonsITSClustersPass);
1844 TH1F *gAntiProtonsChi2PerClusterITSPass = new TH1F("gAntiProtonsChi2PerClusterITSPass",
1845 ";x^{2}/N_{clusters} (ITS);Entries",
1846 100,0,4);
1847 fQAAntiProtonsAcceptedList->Add(gAntiProtonsChi2PerClusterITSPass);
1848 TH1F *gAntiProtonsTPCClustersPass = new TH1F("gAntiProtonsTPCClustersPass",
1849 ";N_{clusters} (TPC);Entries",
1850 100,0,200);
1851 fQAAntiProtonsAcceptedList->Add(gAntiProtonsTPCClustersPass);
1852 TH1F *gAntiProtonsChi2PerClusterTPCPass = new TH1F("gAntiProtonsChi2PerClusterTPCPass",
1853 ";x^{2}/N_{clusters} (TPC);Entries",
1854 100,0,4);
1855 fQAAntiProtonsAcceptedList->Add(gAntiProtonsChi2PerClusterTPCPass);
1856 TH1F *gAntiProtonsExtCov11Pass = new TH1F("gAntiProtonsExtCov11Pass",
1857 ";#sigma_{y} [cm];Entries",
1858 100,0,4);
1859 fQAAntiProtonsAcceptedList->Add(gAntiProtonsExtCov11Pass);
1860 TH1F *gAntiProtonsExtCov22Pass = new TH1F("gAntiProtonsExtCov22Pass",
1861 ";#sigma_{z} [cm];Entries",
1862 100,0,4);
1863 fQAAntiProtonsAcceptedList->Add(gAntiProtonsExtCov22Pass);
1864 TH1F *gAntiProtonsExtCov33Pass = new TH1F("gAntiProtonsExtCov33Pass",
1865 ";#sigma_{sin(#phi)};Entries",
1866 100,0,4);
1867 fQAAntiProtonsAcceptedList->Add(gAntiProtonsExtCov33Pass);
1868 TH1F *gAntiProtonsExtCov44Pass = new TH1F("gAntiProtonsExtCov44Pass",
1869 ";#sigma_{tan(#lambda)};Entries",
1870 100,0,4);
1871 fQAAntiProtonsAcceptedList->Add(gAntiProtonsExtCov44Pass);
1872 TH1F *gAntiProtonsExtCov55Pass = new TH1F("gAntiProtonsExtCov55Pass",
1873 ";#sigma_{1/P_{T}} [GeV/c]^{-1};Entries",
1874 100,0,4);
1875 fQAAntiProtonsAcceptedList->Add(gAntiProtonsExtCov55Pass);
1876 TH1F *gAntiProtonsSigmaToVertexPass = new TH1F("gAntiProtonsSigmaToVertexPass",
1877 ";#sigma_{Vertex};Entries",
1878 100,0,10);
1879 fQAAntiProtonsAcceptedList->Add(gAntiProtonsSigmaToVertexPass);
1880 TH1F *gAntiProtonsSigmaToVertexTPCPass = new TH1F("gAntiProtonsSigmaToVertexTPCPass",
1881 ";#sigma_{Vertex};Entries",
1882 100,0,10);
1883 fQAAntiProtonsAcceptedList->Add(gAntiProtonsSigmaToVertexTPCPass);
1884 TH1F *gAntiProtonsDCAXYPass = new TH1F("gAntiProtonsDCAXYPass",
1885 ";DCA_{xy} [cm];Entries",
1886 100,0,20);
1887 fQAAntiProtonsAcceptedList->Add(gAntiProtonsDCAXYPass);
1888 TH1F *gAntiProtonsDCAXYTPCPass = new TH1F("gAntiProtonsDCAXYTPCPass",
1889 ";DCA_{xy} [cm];Entries",
1890 100,0,20);
1891 fQAAntiProtonsAcceptedList->Add(gAntiProtonsDCAXYTPCPass);
1892 TH1F *gAntiProtonsDCAZPass = new TH1F("gAntiProtonsDCAZPass",
1893 ";DCA_{z} [cm];Entries",
1894 100,0,20);
1895 fQAAntiProtonsAcceptedList->Add(gAntiProtonsDCAZPass);
1896 TH1F *gAntiProtonsDCAZTPCPass = new TH1F("gAntiProtonsDCAZTPCPass",
1897 ";DCA_{z} [cm];Entries",
1898 100,0,20);
1899 fQAAntiProtonsAcceptedList->Add(gAntiProtonsDCAZTPCPass);
1900 TH1F *gAntiProtonsConstrainChi2Pass = new TH1F("gAntiProtonsConstrainChi2Pass",
1901 ";Log_{10}(#chi^{2});Entries",
1902 100,-10,10);
1903 fQAAntiProtonsAcceptedList->Add(gAntiProtonsConstrainChi2Pass);
1904 TH1F *gAntiProtonsITSRefitPass = new TH1F("gAntiProtonsITSRefitPass",
1905 "",10,-1,1);
1906 fQAAntiProtonsAcceptedList->Add(gAntiProtonsITSRefitPass);
1907 TH1F *gAntiProtonsTPCRefitPass = new TH1F("gAntiProtonsTPCRefitPass",
1908 "",10,-1,1);
1909 fQAAntiProtonsAcceptedList->Add(gAntiProtonsTPCRefitPass);
1910 TH1F *gAntiProtonsESDpidPass = new TH1F("gAntiProtonsESDpidPass",
1911 "",10,-1,1);
1912 fQAAntiProtonsAcceptedList->Add(gAntiProtonsESDpidPass);
1913 TH1F *gAntiProtonsTPCpidPass = new TH1F("gAntiProtonsTPCpidPass",
1914 "",10,-1,1);
1915 fQAAntiProtonsAcceptedList->Add(gAntiProtonsTPCpidPass);
1916 TH1F *gAntiProtonsPointOnITSLayer1Pass = new TH1F("gAntiProtonsPointOnITSLayer1Pass",
1917 "",10,-1,1);
1918 fQAAntiProtonsAcceptedList->Add(gAntiProtonsPointOnITSLayer1Pass);
1919 TH1F *gAntiProtonsPointOnITSLayer2Pass = new TH1F("gAntiProtonsPointOnITSLayer2Pass",
1920 "",10,-1,1);
1921 fQAAntiProtonsAcceptedList->Add(gAntiProtonsPointOnITSLayer2Pass);
1922 TH1F *gAntiProtonsPointOnITSLayer3Pass = new TH1F("gAntiProtonsPointOnITSLayer3Pass",
1923 "",10,-1,1);
1924 fQAAntiProtonsAcceptedList->Add(gAntiProtonsPointOnITSLayer3Pass);
1925 TH1F *gAntiProtonsPointOnITSLayer4Pass = new TH1F("gAntiProtonsPointOnITSLayer4Pass",
1926 "",10,-1,1);
1927 fQAAntiProtonsAcceptedList->Add(gAntiProtonsPointOnITSLayer4Pass);
1928 TH1F *gAntiProtonsPointOnITSLayer5Pass = new TH1F("gAntiProtonsPointOnITSLayer5Pass",
1929 "",10,-1,1);
1930 fQAAntiProtonsAcceptedList->Add(gAntiProtonsPointOnITSLayer5Pass);
1931 TH1F *gAntiProtonsPointOnITSLayer6Pass = new TH1F("gAntiProtonsPointOnITSLayer6Pass",
1932 "",10,-1,1);
1933 fQAAntiProtonsAcceptedList->Add(gAntiProtonsPointOnITSLayer6Pass);
1934 TH1F *gAntiProtonsNumberOfTPCdEdxPointsPass = new TH1F("gAntiProtonsNumberOfTPCdEdxPointsPass","",100,0,200);
1935 fQAAntiProtonsAcceptedList->Add(gAntiProtonsNumberOfTPCdEdxPointsPass);
1936
1937 //========================================================//
1938 fQAAntiProtonsRejectedList = new TList();
1939 fQAAntiProtonsRejectedList->SetName("fQAAntiProtonsRejectedList");
1940 fGlobalQAList->Add(fQAAntiProtonsRejectedList);
1941 //Rejected antiprotons
1942 TH1F *gAntiProtonsITSClustersReject = new TH1F("gAntiProtonsITSClustersReject",
1943 ";N_{clusters} (ITS);Entries",
1944 7,0,7);
1945 gAntiProtonsITSClustersReject->SetFillColor(kRed-2);
1946 fQAAntiProtonsRejectedList->Add(gAntiProtonsITSClustersReject);
1947 TH1F *gAntiProtonsChi2PerClusterITSReject = new TH1F("gAntiProtonsChi2PerClusterITSReject",
1948 ";x^{2}/N_{clusters} (ITS);Entries",
1949 100,0,4);
1950 gAntiProtonsChi2PerClusterITSReject->SetFillColor(kRed-2);
1951 fQAAntiProtonsRejectedList->Add(gAntiProtonsChi2PerClusterITSReject);
1952 TH1F *gAntiProtonsTPCClustersReject = new TH1F("gAntiProtonsTPCClustersReject",
1953 ";N_{clusters} (TPC);Entries",
1954 100,0,200);
1955 gAntiProtonsTPCClustersReject->SetFillColor(kRed-2);
1956 fQAAntiProtonsRejectedList->Add(gAntiProtonsTPCClustersReject);
1957 TH1F *gAntiProtonsChi2PerClusterTPCReject = new TH1F("gAntiProtonsChi2PerClusterTPCReject",
1958 ";x^{2}/N_{clusters} (TPC);Entries",
1959 100,0,4);
1960 gAntiProtonsChi2PerClusterTPCReject->SetFillColor(kRed-2);
1961 fQAAntiProtonsRejectedList->Add(gAntiProtonsChi2PerClusterTPCReject);
1962 TH1F *gAntiProtonsExtCov11Reject = new TH1F("gAntiProtonsExtCov11Reject",
1963 ";#sigma_{y} [cm];Entries",
1964 100,0,4);
1965 gAntiProtonsExtCov11Reject->SetFillColor(kRed-2);
1966 fQAAntiProtonsRejectedList->Add(gAntiProtonsExtCov11Reject);
1967 TH1F *gAntiProtonsExtCov22Reject = new TH1F("gAntiProtonsExtCov22Reject",
1968 ";#sigma_{z} [cm];Entries",
1969 100,0,4);
1970 gAntiProtonsExtCov22Reject->SetFillColor(kRed-2);
1971 fQAAntiProtonsRejectedList->Add(gAntiProtonsExtCov22Reject);
1972 TH1F *gAntiProtonsExtCov33Reject = new TH1F("gAntiProtonsExtCov33Reject",
1973 ";#sigma_{sin(#phi)};Entries",
1974 100,0,4);
1975 gAntiProtonsExtCov33Reject->SetFillColor(kRed-2);
1976 fQAAntiProtonsRejectedList->Add(gAntiProtonsExtCov33Reject);
1977 TH1F *gAntiProtonsExtCov44Reject = new TH1F("gAntiProtonsExtCov44Reject",
1978 ";#sigma_{tan(#lambda)};Entries",
1979 100,0,4);
1980 gAntiProtonsExtCov44Reject->SetFillColor(kRed-2);
1981 fQAAntiProtonsRejectedList->Add(gAntiProtonsExtCov44Reject);
1982 TH1F *gAntiProtonsExtCov55Reject = new TH1F("gAntiProtonsExtCov55Reject",
1983 ";#sigma_{1/P_{T}} [GeV/c]^{-1};Entries",
1984 100,0,4);
1985 gAntiProtonsExtCov55Reject->SetFillColor(kRed-2);
1986 fQAAntiProtonsRejectedList->Add(gAntiProtonsExtCov55Reject);
1987 TH1F *gAntiProtonsSigmaToVertexReject = new TH1F("gAntiProtonsSigmaToVertexReject",
1988 ";#sigma_{Vertex};Entries",
1989 100,0,10);
1990 gAntiProtonsSigmaToVertexReject->SetFillColor(kRed-2);
1991 fQAAntiProtonsRejectedList->Add(gAntiProtonsSigmaToVertexReject);
1992 TH1F *gAntiProtonsSigmaToVertexTPCReject = new TH1F("gAntiProtonsSigmaToVertexTPCReject",
1993 ";#sigma_{Vertex};Entries",
1994 100,0,10);
1995 gAntiProtonsSigmaToVertexTPCReject->SetFillColor(kRed-2);
1996 fQAAntiProtonsRejectedList->Add(gAntiProtonsSigmaToVertexTPCReject);
1997 TH1F *gAntiProtonsDCAXYReject = new TH1F("gAntiProtonsDCAXYReject",
1998 ";DCA_{xy} [cm];Entries",
1999 100,0,20);
2000 gAntiProtonsDCAXYReject->SetFillColor(kRed-2);
2001 fQAAntiProtonsRejectedList->Add(gAntiProtonsDCAXYReject);
2002 TH1F *gAntiProtonsDCAXYTPCReject = new TH1F("gAntiProtonsDCAXYTPCReject",
2003 ";DCA_{xy} [cm];Entries",
2004 100,0,20);
2005 gAntiProtonsDCAXYTPCReject->SetFillColor(kRed-2);
2006 fQAAntiProtonsRejectedList->Add(gAntiProtonsDCAXYTPCReject);
2007 TH1F *gAntiProtonsDCAZReject = new TH1F("gAntiProtonsDCAZReject",
2008 ";DCA_{z} [cm];Entries",
2009 100,0,20);
2010 gAntiProtonsDCAZReject->SetFillColor(kRed-2);
2011 fQAAntiProtonsRejectedList->Add(gAntiProtonsDCAZReject);
2012 TH1F *gAntiProtonsDCAZTPCReject = new TH1F("gAntiProtonsDCAZTPCReject",
2013 ";DCA_{z} [cm];Entries",
2014 100,0,20);
2015 gAntiProtonsDCAZTPCReject->SetFillColor(kRed-2);
2016 fQAAntiProtonsRejectedList->Add(gAntiProtonsDCAZTPCReject);
2017 TH1F *gAntiProtonsConstrainChi2Reject = new TH1F("gAntiProtonsConstrainChi2Reject",
2018 ";Log_{10}(#chi^{2});Entries",
2019 100,-10,10);
2020 gAntiProtonsConstrainChi2Reject->SetFillColor(kRed-2);
2021 fQAAntiProtonsRejectedList->Add(gAntiProtonsConstrainChi2Reject);
2022 TH1F *gAntiProtonsITSRefitReject = new TH1F("gAntiProtonsITSRefitReject",
2023 "",10,-1,1);
2024 gAntiProtonsITSRefitReject->SetFillColor(kRed-2);
2025 fQAAntiProtonsRejectedList->Add(gAntiProtonsITSRefitReject);
2026 TH1F *gAntiProtonsTPCRefitReject = new TH1F("gAntiProtonsTPCRefitReject",
2027 "",10,-1,1);
2028 gAntiProtonsTPCRefitReject->SetFillColor(kRed-2);
2029 fQAAntiProtonsRejectedList->Add(gAntiProtonsTPCRefitReject);
2030 TH1F *gAntiProtonsESDpidReject = new TH1F("gAntiProtonsESDpidReject",
2031 "",10,-1,1);
2032 gAntiProtonsESDpidReject->SetFillColor(kRed-2);
2033 fQAAntiProtonsRejectedList->Add(gAntiProtonsESDpidReject);
2034 TH1F *gAntiProtonsTPCpidReject = new TH1F("gAntiProtonsTPCpidReject",
2035 "",10,-1,1);
2036 gAntiProtonsTPCpidReject->SetFillColor(kRed-2);
2037 fQAAntiProtonsRejectedList->Add(gAntiProtonsTPCpidReject);
2038 TH1F *gAntiProtonsPointOnITSLayer1Reject = new TH1F("gAntiProtonsPointOnITSLayer1Reject",
2039 "",10,-1,1);
2040 gAntiProtonsPointOnITSLayer1Reject->SetFillColor(kRed-2);
2041 fQAAntiProtonsRejectedList->Add(gAntiProtonsPointOnITSLayer1Reject);
2042 TH1F *gAntiProtonsPointOnITSLayer2Reject = new TH1F("gAntiProtonsPointOnITSLayer2Reject",
2043 "",10,-1,1);
2044 gAntiProtonsPointOnITSLayer2Reject->SetFillColor(kRed-2);
2045 fQAAntiProtonsRejectedList->Add(gAntiProtonsPointOnITSLayer2Reject);
2046 TH1F *gAntiProtonsPointOnITSLayer3Reject = new TH1F("gAntiProtonsPointOnITSLayer3Reject",
2047 "",10,-1,1);
2048 gAntiProtonsPointOnITSLayer3Reject->SetFillColor(kRed-2);
2049 fQAAntiProtonsRejectedList->Add(gAntiProtonsPointOnITSLayer3Reject);
2050 TH1F *gAntiProtonsPointOnITSLayer4Reject = new TH1F("gAntiProtonsPointOnITSLayer4Reject",
2051 "",10,-1,1);
2052 gAntiProtonsPointOnITSLayer4Reject->SetFillColor(kRed-2);
2053 fQAAntiProtonsRejectedList->Add(gAntiProtonsPointOnITSLayer4Reject);
2054 TH1F *gAntiProtonsPointOnITSLayer5Reject = new TH1F("gAntiProtonsPointOnITSLayer5Reject",
2055 "",10,-1,1);
2056 gAntiProtonsPointOnITSLayer5Reject->SetFillColor(kRed-2);
2057 fQAAntiProtonsRejectedList->Add(gAntiProtonsPointOnITSLayer5Reject);
2058 TH1F *gAntiProtonsPointOnITSLayer6Reject = new TH1F("gAntiProtonsPointOnITSLayer6Reject",
2059 "",10,-1,1);
2060 gAntiProtonsPointOnITSLayer6Reject->SetFillColor(kRed-2);
2061 fQAAntiProtonsRejectedList->Add(gAntiProtonsPointOnITSLayer6Reject);
2062 TH1F *gAntiProtonsNumberOfTPCdEdxPointsReject = new TH1F("gAntiProtonsNumberOfTPCdEdxPointsReject","",100,0,200);
2063 gAntiProtonsNumberOfTPCdEdxPointsReject->SetFillColor(kRed-2);
2064 fQAAntiProtonsRejectedList->Add(gAntiProtonsNumberOfTPCdEdxPointsReject);
2065}
39f2a708 2066
735cc63d 2067//____________________________________________________________________//
2068void AliProtonAnalysis::FillQA(AliESDEvent *esd,
2069 const AliESDVertex *vertex,
2070 AliESDtrack* track) {
2071 //Fills the QA histograms
2072 Double_t gPt = 0.0, gPx = 0.0, gPy = 0.0, gPz = 0.0;
2073 Double_t dca[2] = {0.0,0.0}, cov[3] = {0.0,0.0,0.0}; //The impact parameters and their covariance.
2074
2075 if((fProtonAnalysisBase->GetAnalysisMode()==AliProtonAnalysisBase::kTPC)||(fProtonAnalysisBase->GetAnalysisMode()==AliProtonAnalysisBase::kHybrid)) {
2076 AliExternalTrackParam *tpcTrack = (AliExternalTrackParam *)track->GetTPCInnerParam();
2077 if(!tpcTrack) {
2078 gPt = 0.0; gPx = 0.0; gPy = 0.0; gPz = 0.0;
2079 dca[0] = -100.; dca[1] = -100.;
2080 cov[0] = -100.; cov[1] = -100.; cov[2] = -100.;
2081 }
2082 else {
2083 gPt = tpcTrack->Pt();
2084 gPx = tpcTrack->Px();
2085 gPy = tpcTrack->Py();
2086 gPz = tpcTrack->Pz();
2087 tpcTrack->PropagateToDCA(vertex,
2088 esd->GetMagneticField(),
2089 100.,dca,cov);
2090 }
2091 }
2092 else{
2093 gPt = track->Pt();
2094 gPx = track->Px();
2095 gPy = track->Py();
2096 gPz = track->Pz();
2097 track->PropagateToDCA(vertex,
2098 esd->GetMagneticField(),
2099 100.,dca,cov);
2100 }
39f2a708 2101
735cc63d 2102 Int_t fIdxInt[200];
2103 Int_t nClustersITS = track->GetITSclusters(fIdxInt);
2104 Int_t nClustersTPC = track->GetTPCclusters(fIdxInt);
39f2a708 2105
735cc63d 2106 Float_t chi2PerClusterITS = -1;
2107 if (nClustersITS!=0)
2108 chi2PerClusterITS = track->GetITSchi2()/Float_t(nClustersITS);
2109 Float_t chi2PerClusterTPC = -1;
2110 if (nClustersTPC!=0)
2111 chi2PerClusterTPC = track->GetTPCchi2()/Float_t(nClustersTPC);
39f2a708 2112
735cc63d 2113 Double_t extCov[15];
2114 track->GetExternalCovariance(extCov);
2115
2116 //protons
2117 if(track->Charge() > 0) {
2118 if(fProtonAnalysisBase->IsUsedMinITSClusters()) {
2119 if(nClustersITS < fProtonAnalysisBase->GetMinITSClusters()) {
2120 ((TH1F *)(fQAProtonsRejectedList->At(0)))->Fill(nClustersITS);
2121 }
2122 else if(nClustersITS >= fProtonAnalysisBase->GetMinITSClusters())
2123 ((TH1F *)(fQAProtonsAcceptedList->At(0)))->Fill(nClustersITS);
2124 }//ITS clusters
2125 if(fProtonAnalysisBase->IsUsedMaxChi2PerITSCluster()) {
2126 if(chi2PerClusterITS > fProtonAnalysisBase->GetMaxChi2PerITSCluster()) {
2127 ((TH1F *)(fQAProtonsRejectedList->At(1)))->Fill(chi2PerClusterITS);
2128 }
2129 else if(chi2PerClusterITS <= fProtonAnalysisBase->GetMaxChi2PerITSCluster())
2130 ((TH1F *)(fQAProtonsAcceptedList->At(1)))->Fill(chi2PerClusterITS);
2131 }//chi2 per ITS cluster
2132 if(fProtonAnalysisBase->IsUsedMinTPCClusters()) {
2133 if(nClustersTPC < fProtonAnalysisBase->GetMinTPCClusters()) {
2134 ((TH1F *)(fQAProtonsRejectedList->At(2)))->Fill(nClustersTPC);
2135 }
2136 else if(nClustersTPC >= fProtonAnalysisBase->GetMinTPCClusters()) {
2137 ((TH1F *)(fQAProtonsAcceptedList->At(2)))->Fill(nClustersTPC);
2138 }
2139 }//TPC clusters
2140 if(fProtonAnalysisBase->IsUsedMaxChi2PerTPCCluster()) {
2141 if(chi2PerClusterTPC > fProtonAnalysisBase->GetMaxChi2PerTPCCluster()) {
2142 ((TH1F *)(fQAProtonsRejectedList->At(3)))->Fill(chi2PerClusterTPC);
2143 }
2144 else if(chi2PerClusterTPC <= fProtonAnalysisBase->GetMaxChi2PerTPCCluster())
2145 ((TH1F *)(fQAProtonsAcceptedList->At(3)))->Fill(chi2PerClusterTPC);
2146 }//chi2 per TPC cluster
2147 if(fProtonAnalysisBase->IsUsedMaxCov11()) {
2148 if(extCov[0] > fProtonAnalysisBase->GetMaxCov11()) {
2149 ((TH1F *)(fQAProtonsRejectedList->At(4)))->Fill(extCov[0]);
2150 }
2151 else if(extCov[0] <= fProtonAnalysisBase->GetMaxCov11())
2152 ((TH1F *)(fQAProtonsAcceptedList->At(4)))->Fill(extCov[0]);
2153 }//cov11
2154 if(fProtonAnalysisBase->IsUsedMaxCov22()) {
2155 if(extCov[2] > fProtonAnalysisBase->GetMaxCov22()) {
2156 ((TH1F *)(fQAProtonsRejectedList->At(5)))->Fill(extCov[2]);
2157 }
2158 else if(extCov[2] <= fProtonAnalysisBase->GetMaxCov22())
2159 ((TH1F *)(fQAProtonsAcceptedList->At(5)))->Fill(extCov[2]);
2160 }//cov11
2161 if(fProtonAnalysisBase->IsUsedMaxCov33()) {
2162 if(extCov[5] > fProtonAnalysisBase->GetMaxCov33()) {
2163 ((TH1F *)(fQAProtonsRejectedList->At(6)))->Fill(extCov[5]);
2164 }
2165 else if(extCov[5] <= fProtonAnalysisBase->GetMaxCov33())
2166 ((TH1F *)(fQAProtonsAcceptedList->At(6)))->Fill(extCov[5]);
2167 }//cov11
2168 if(fProtonAnalysisBase->IsUsedMaxCov44()) {
2169 if(extCov[9] > fProtonAnalysisBase->GetMaxCov44()) {
2170 ((TH1F *)(fQAProtonsRejectedList->At(7)))->Fill(extCov[9]);
2171 }
2172 else if(extCov[9] <= fProtonAnalysisBase->GetMaxCov44())
2173 ((TH1F *)(fQAProtonsAcceptedList->At(7)))->Fill(extCov[9]);
2174 }//cov11
2175 if(fProtonAnalysisBase->IsUsedMaxCov55()) {
2176 if(extCov[14] > fProtonAnalysisBase->GetMaxCov55()) {
2177 ((TH1F *)(fQAProtonsRejectedList->At(8)))->Fill(extCov[14]);
2178 }
2179 else if(extCov[14] <= fProtonAnalysisBase->GetMaxCov55())
2180 ((TH1F *)(fQAProtonsAcceptedList->At(8)))->Fill(extCov[14]);
2181 }//cov55
2182 if(fProtonAnalysisBase->IsUsedMaxSigmaToVertex()) {
2183 if(fProtonAnalysisBase->GetSigmaToVertex(track) > fProtonAnalysisBase->GetMaxSigmaToVertex()) {
2184 ((TH1F *)(fQAProtonsRejectedList->At(9)))->Fill(fProtonAnalysisBase->GetSigmaToVertex(track));
2185 }
2186 else if(fProtonAnalysisBase->GetSigmaToVertex(track) <= fProtonAnalysisBase->GetMaxSigmaToVertex())
2187 ((TH1F *)(fQAProtonsAcceptedList->At(9)))->Fill(fProtonAnalysisBase->GetSigmaToVertex(track));
2188 }//sigma to vertex
2189 if(fProtonAnalysisBase->IsUsedMaxSigmaToVertexTPC()) {
2190 if(fProtonAnalysisBase->GetSigmaToVertex(track) > fProtonAnalysisBase->GetMaxSigmaToVertexTPC()) {
2191 ((TH1F *)(fQAProtonsRejectedList->At(10)))->Fill(fProtonAnalysisBase->GetSigmaToVertex(track));
2192 }
2193 else if(fProtonAnalysisBase->GetSigmaToVertex(track) <= fProtonAnalysisBase->GetMaxSigmaToVertexTPC())
2194 ((TH1F *)(fQAProtonsAcceptedList->At(10)))->Fill(fProtonAnalysisBase->GetSigmaToVertex(track));
2195 }//sigma to vertex TPC
2196 if(fProtonAnalysisBase->IsUsedMaxDCAXY()) {
2197 if(TMath::Abs(dca[0]) > fProtonAnalysisBase->GetMaxDCAXY()) {
2198 ((TH1F *)(fQAProtonsRejectedList->At(11)))->Fill(TMath::Abs(dca[0]));
2199 }
2200 else if(TMath::Abs(dca[0]) <= fProtonAnalysisBase->GetMaxDCAXY())
2201 ((TH1F *)(fQAProtonsAcceptedList->At(11)))->Fill(TMath::Abs(dca[0]));
2202 }//DCA xy global tracking
2203 if(fProtonAnalysisBase->IsUsedMaxDCAXYTPC()) {
2204 if(TMath::Abs(dca[0]) > fProtonAnalysisBase->GetMaxDCAXYTPC()) {
2205 ((TH1F *)(fQAProtonsRejectedList->At(12)))->Fill(TMath::Abs(dca[0]));
2206 }
2207 else if(TMath::Abs(dca[0]) <= fProtonAnalysisBase->GetMaxDCAXYTPC())
2208 ((TH1F *)(fQAProtonsAcceptedList->At(12)))->Fill(TMath::Abs(dca[0]));
2209 }//DCA xy TPC tracking
2210 if(fProtonAnalysisBase->IsUsedMaxDCAZ()) {
2211 if(TMath::Abs(dca[1]) > fProtonAnalysisBase->GetMaxDCAZ()) {
2212 ((TH1F *)(fQAProtonsRejectedList->At(13)))->Fill(TMath::Abs(dca[1]));
2213 }
2214 else if(TMath::Abs(dca[1]) <= fProtonAnalysisBase->GetMaxDCAZ())
2215 ((TH1F *)(fQAProtonsAcceptedList->At(13)))->Fill(TMath::Abs(dca[1]));
2216 }//DCA z global tracking
2217 if(fProtonAnalysisBase->IsUsedMaxDCAZTPC()) {
2218 if(TMath::Abs(dca[1]) > fProtonAnalysisBase->GetMaxDCAZTPC()) {
2219 ((TH1F *)(fQAProtonsRejectedList->At(14)))->Fill(TMath::Abs(dca[1]));
2220 }
2221 else if(TMath::Abs(dca[1]) <= fProtonAnalysisBase->GetMaxDCAZTPC())
2222 ((TH1F *)(fQAProtonsAcceptedList->At(14)))->Fill(TMath::Abs(dca[1]));
2223 }//DCA z TPC tracking
2224 if(fProtonAnalysisBase->IsUsedMaxConstrainChi2()) {
2225 if(track->GetConstrainedChi2() > 0) {
2226 if(TMath::Log(track->GetConstrainedChi2()) > fProtonAnalysisBase->GetMaxConstrainChi2()) {
2227 ((TH1F *)(fQAProtonsRejectedList->At(15)))->Fill(TMath::Log(track->GetConstrainedChi2()));
2228 }
2229 else if(TMath::Log(track->GetConstrainedChi2()) <= fProtonAnalysisBase->GetMaxConstrainChi2())
2230 ((TH1F *)(fQAProtonsAcceptedList->At(15)))->Fill(TMath::Log(track->GetConstrainedChi2()));
2231 }
2232 }//constrain chi2 - vertex
2233 if(fProtonAnalysisBase->IsUsedITSRefit()) {
2234 if ((track->GetStatus() & AliESDtrack::kITSrefit) == 0) {
2235 ((TH1F *)(fQAProtonsRejectedList->At(16)))->Fill(0);
2236 }
2237 else if((track->GetStatus() & AliESDtrack::kITSrefit) != 0)
2238 ((TH1F *)(fQAProtonsAcceptedList->At(16)))->Fill(0);
2239 }//ITS refit
2240 if(fProtonAnalysisBase->IsUsedTPCRefit()) {
2241 if ((track->GetStatus() & AliESDtrack::kTPCrefit) == 0) {
2242 ((TH1F *)(fQAProtonsRejectedList->At(17)))->Fill(0);
2243 }
2244 else if((track->GetStatus() & AliESDtrack::kTPCrefit) != 0)
2245 ((TH1F *)(fQAProtonsAcceptedList->At(17)))->Fill(0);
2246 }//TPC refit
2247 if(fProtonAnalysisBase->IsUsedESDpid()) {
2248 if ((track->GetStatus() & AliESDtrack::kESDpid) == 0) {
2249 ((TH1F *)(fQAProtonsRejectedList->At(18)))->Fill(0);
2250 }
2251 else if((track->GetStatus() & AliESDtrack::kESDpid) != 0)
2252 ((TH1F *)(fQAProtonsAcceptedList->At(18)))->Fill(0);
2253 }//ESD pid
2254 if(fProtonAnalysisBase->IsUsedTPCpid()) {
2255 if ((track->GetStatus() & AliESDtrack::kTPCpid) == 0) {
2256 ((TH1F *)(fQAProtonsRejectedList->At(19)))->Fill(0);
2257 }
2258 else if((track->GetStatus() & AliESDtrack::kTPCpid) != 0)
2259 ((TH1F *)(fQAProtonsAcceptedList->At(19)))->Fill(0);
2260 }//TPC pid
2261 if(fProtonAnalysisBase->IsUsedPointOnITSLayer1()) {
2262 if(!track->HasPointOnITSLayer(0)) {
2263 ((TH1F *)(fQAProtonsRejectedList->At(20)))->Fill(0);
2264 }
2265 else if(track->HasPointOnITSLayer(0))
2266 ((TH1F *)(fQAProtonsAcceptedList->At(20)))->Fill(0);
2267 }//point on SPD1
2268 if(fProtonAnalysisBase->IsUsedPointOnITSLayer2()) {
2269 if(!track->HasPointOnITSLayer(1)) {
2270 ((TH1F *)(fQAProtonsRejectedList->At(21)))->Fill(0);
2271 }
2272 else if(track->HasPointOnITSLayer(1))
2273 ((TH1F *)(fQAProtonsAcceptedList->At(21)))->Fill(0);
2274 }//point on SPD2
2275 if(fProtonAnalysisBase->IsUsedPointOnITSLayer3()) {
2276 if(!track->HasPointOnITSLayer(2)) {
2277 ((TH1F *)(fQAProtonsRejectedList->At(22)))->Fill(0);
2278 }
2279 else if(track->HasPointOnITSLayer(2))
2280 ((TH1F *)(fQAProtonsAcceptedList->At(22)))->Fill(0);
2281 }//point on SDD1
2282 if(fProtonAnalysisBase->IsUsedPointOnITSLayer4()) {
2283 if(!track->HasPointOnITSLayer(3)) {
2284 ((TH1F *)(fQAProtonsRejectedList->At(23)))->Fill(0);
2285 }
2286 else if(track->HasPointOnITSLayer(3))
2287 ((TH1F *)(fQAProtonsAcceptedList->At(23)))->Fill(0);
2288 }//point on SDD2
2289 if(fProtonAnalysisBase->IsUsedPointOnITSLayer5()) {
2290 if(!track->HasPointOnITSLayer(4)) {
2291 ((TH1F *)(fQAProtonsRejectedList->At(24)))->Fill(0);
2292 }
2293 else if(track->HasPointOnITSLayer(4))
2294 ((TH1F *)(fQAProtonsAcceptedList->At(24)))->Fill(0);
2295 }//point on SSD1
2296 if(fProtonAnalysisBase->IsUsedPointOnITSLayer6()) {
2297 if(!track->HasPointOnITSLayer(5)) {
2298 ((TH1F *)(fQAProtonsRejectedList->At(25)))->Fill(0);
2299 }
2300 else if(track->HasPointOnITSLayer(5))
2301 ((TH1F *)(fQAProtonsAcceptedList->At(25)))->Fill(0);
2302 }//point on SSD2
2303 if(fProtonAnalysisBase->IsUsedMinTPCdEdxPoints()) {
2304 if(track->GetTPCsignalN() < fProtonAnalysisBase->GetMinTPCdEdxPoints()) {
2305 ((TH1F *)(fQAProtonsRejectedList->At(26)))->Fill(track->GetTPCsignalN());
2306 }
2307 if(track->GetTPCsignalN() >= fProtonAnalysisBase->GetMinTPCdEdxPoints())
2308 ((TH1F *)(fQAProtonsAcceptedList->At(26)))->Fill(track->GetTPCsignalN());
2309 }//number of TPC points for the dE/dx
2310 }//protons
2311
2312 //antiprotons
2313 if(track->Charge() < 0) {
2314 if(fProtonAnalysisBase->IsUsedMinITSClusters()) {
2315 if(nClustersITS < fProtonAnalysisBase->GetMinITSClusters()) {
2316 ((TH1F *)(fQAAntiProtonsRejectedList->At(0)))->Fill(nClustersITS);
2317 }
2318 else if(nClustersITS >= fProtonAnalysisBase->GetMinITSClusters())
2319 ((TH1F *)(fQAAntiProtonsAcceptedList->At(0)))->Fill(nClustersITS);
2320 }//ITS clusters
2321 if(fProtonAnalysisBase->IsUsedMaxChi2PerITSCluster()) {
2322 if(chi2PerClusterITS > fProtonAnalysisBase->GetMaxChi2PerITSCluster()) {
2323 ((TH1F *)(fQAAntiProtonsRejectedList->At(1)))->Fill(chi2PerClusterITS);
2324 }
2325 else if(chi2PerClusterITS <= fProtonAnalysisBase->GetMaxChi2PerITSCluster())
2326 ((TH1F *)(fQAAntiProtonsAcceptedList->At(1)))->Fill(chi2PerClusterITS);
2327 }//chi2 per ITS cluster
2328 if(fProtonAnalysisBase->IsUsedMinTPCClusters()) {
2329 if(nClustersTPC < fProtonAnalysisBase->GetMinTPCClusters()) {
2330 ((TH1F *)(fQAAntiProtonsRejectedList->At(2)))->Fill(nClustersTPC);
2331 }
2332 else if(nClustersTPC >= fProtonAnalysisBase->GetMinTPCClusters()) {
2333 ((TH1F *)(fQAAntiProtonsAcceptedList->At(2)))->Fill(nClustersTPC);
2334 }
2335 }//TPC clusters
2336 if(fProtonAnalysisBase->IsUsedMaxChi2PerTPCCluster()) {
2337 if(chi2PerClusterTPC > fProtonAnalysisBase->GetMaxChi2PerTPCCluster()) {
2338 ((TH1F *)(fQAAntiProtonsRejectedList->At(3)))->Fill(chi2PerClusterTPC);
2339 }
2340 else if(chi2PerClusterTPC <= fProtonAnalysisBase->GetMaxChi2PerTPCCluster())
2341 ((TH1F *)(fQAAntiProtonsAcceptedList->At(3)))->Fill(chi2PerClusterTPC);
2342 }//chi2 per TPC cluster
2343 if(fProtonAnalysisBase->IsUsedMaxCov11()) {
2344 if(extCov[0] > fProtonAnalysisBase->GetMaxCov11()) {
2345 ((TH1F *)(fQAAntiProtonsRejectedList->At(4)))->Fill(extCov[0]);
2346 }
2347 else if(extCov[0] <= fProtonAnalysisBase->GetMaxCov11())
2348 ((TH1F *)(fQAAntiProtonsAcceptedList->At(4)))->Fill(extCov[0]);
2349 }//cov11
2350 if(fProtonAnalysisBase->IsUsedMaxCov22()) {
2351 if(extCov[2] > fProtonAnalysisBase->GetMaxCov22()) {
2352 ((TH1F *)(fQAAntiProtonsRejectedList->At(5)))->Fill(extCov[2]);
2353 }
2354 else if(extCov[2] <= fProtonAnalysisBase->GetMaxCov22())
2355 ((TH1F *)(fQAAntiProtonsAcceptedList->At(5)))->Fill(extCov[2]);
2356 }//cov11
2357 if(fProtonAnalysisBase->IsUsedMaxCov33()) {
2358 if(extCov[5] > fProtonAnalysisBase->GetMaxCov33()) {
2359 ((TH1F *)(fQAAntiProtonsRejectedList->At(6)))->Fill(extCov[5]);
2360 }
2361 else if(extCov[5] <= fProtonAnalysisBase->GetMaxCov33())
2362 ((TH1F *)(fQAAntiProtonsAcceptedList->At(6)))->Fill(extCov[5]);
2363 }//cov11
2364 if(fProtonAnalysisBase->IsUsedMaxCov44()) {
2365 if(extCov[9] > fProtonAnalysisBase->GetMaxCov44()) {
2366 ((TH1F *)(fQAAntiProtonsRejectedList->At(7)))->Fill(extCov[9]);
2367 }
2368 else if(extCov[9] <= fProtonAnalysisBase->GetMaxCov44())
2369 ((TH1F *)(fQAAntiProtonsAcceptedList->At(7)))->Fill(extCov[9]);
2370 }//cov11
2371 if(fProtonAnalysisBase->IsUsedMaxCov55()) {
2372 if(extCov[14] > fProtonAnalysisBase->GetMaxCov55()) {
2373 ((TH1F *)(fQAAntiProtonsRejectedList->At(8)))->Fill(extCov[14]);
2374 }
2375 else if(extCov[14] <= fProtonAnalysisBase->GetMaxCov55())
2376 ((TH1F *)(fQAAntiProtonsAcceptedList->At(8)))->Fill(extCov[14]);
2377 }//cov55
2378 if(fProtonAnalysisBase->IsUsedMaxSigmaToVertex()) {
2379 if(fProtonAnalysisBase->GetSigmaToVertex(track) > fProtonAnalysisBase->GetMaxSigmaToVertex()) {
2380 ((TH1F *)(fQAAntiProtonsRejectedList->At(9)))->Fill(fProtonAnalysisBase->GetSigmaToVertex(track));
2381 }
2382 else if(fProtonAnalysisBase->GetSigmaToVertex(track) <= fProtonAnalysisBase->GetMaxSigmaToVertex())
2383 ((TH1F *)(fQAAntiProtonsAcceptedList->At(9)))->Fill(fProtonAnalysisBase->GetSigmaToVertex(track));
2384 }//sigma to vertex
2385 if(fProtonAnalysisBase->IsUsedMaxSigmaToVertexTPC()) {
2386 if(fProtonAnalysisBase->GetSigmaToVertex(track) > fProtonAnalysisBase->GetMaxSigmaToVertexTPC()) {
2387 ((TH1F *)(fQAAntiProtonsRejectedList->At(10)))->Fill(fProtonAnalysisBase->GetSigmaToVertex(track));
2388 }
2389 else if(fProtonAnalysisBase->GetSigmaToVertex(track) <= fProtonAnalysisBase->GetMaxSigmaToVertexTPC())
2390 ((TH1F *)(fQAAntiProtonsAcceptedList->At(10)))->Fill(fProtonAnalysisBase->GetSigmaToVertex(track));
2391 }//sigma to vertex TPC
2392 if(fProtonAnalysisBase->IsUsedMaxDCAXY()) {
2393 if(TMath::Abs(dca[0]) > fProtonAnalysisBase->GetMaxDCAXY()) {
2394 ((TH1F *)(fQAAntiProtonsRejectedList->At(11)))->Fill(TMath::Abs(dca[0]));
2395 }
2396 else if(TMath::Abs(dca[0]) <= fProtonAnalysisBase->GetMaxDCAXY())
2397 ((TH1F *)(fQAAntiProtonsAcceptedList->At(11)))->Fill(TMath::Abs(dca[0]));
2398 }//DCA xy global tracking
2399 if(fProtonAnalysisBase->IsUsedMaxDCAXYTPC()) {
2400 if(TMath::Abs(dca[0]) > fProtonAnalysisBase->GetMaxDCAXYTPC()) {
2401 ((TH1F *)(fQAAntiProtonsRejectedList->At(12)))->Fill(TMath::Abs(dca[0]));
2402 }
2403 else if(TMath::Abs(dca[0]) <= fProtonAnalysisBase->GetMaxDCAXYTPC())
2404 ((TH1F *)(fQAAntiProtonsAcceptedList->At(12)))->Fill(TMath::Abs(dca[0]));
2405 }//DCA xy TPC tracking
2406 if(fProtonAnalysisBase->IsUsedMaxDCAZ()) {
2407 if(TMath::Abs(dca[1]) > fProtonAnalysisBase->GetMaxDCAZ()) {
2408 ((TH1F *)(fQAAntiProtonsRejectedList->At(13)))->Fill(TMath::Abs(dca[1]));
2409 }
2410 else if(TMath::Abs(dca[1]) <= fProtonAnalysisBase->GetMaxDCAZ())
2411 ((TH1F *)(fQAAntiProtonsAcceptedList->At(13)))->Fill(TMath::Abs(dca[1]));
2412 }//DCA z global tracking
2413 if(fProtonAnalysisBase->IsUsedMaxDCAZTPC()) {
2414 if(TMath::Abs(dca[1]) > fProtonAnalysisBase->GetMaxDCAZTPC()) {
2415 ((TH1F *)(fQAAntiProtonsRejectedList->At(14)))->Fill(TMath::Abs(dca[1]));
2416 }
2417 else if(TMath::Abs(dca[1]) <= fProtonAnalysisBase->GetMaxDCAZTPC())
2418 ((TH1F *)(fQAAntiProtonsAcceptedList->At(14)))->Fill(TMath::Abs(dca[1]));
2419 }//DCA z TPC tracking
2420 if(fProtonAnalysisBase->IsUsedMaxConstrainChi2()) {
2421 if(track->GetConstrainedChi2() > 0) {
2422 if(TMath::Log(track->GetConstrainedChi2()) > fProtonAnalysisBase->GetMaxConstrainChi2()) {
2423 ((TH1F *)(fQAAntiProtonsRejectedList->At(15)))->Fill(TMath::Log(track->GetConstrainedChi2()));
2424 }
2425 else if(TMath::Log(track->GetConstrainedChi2()) <= fProtonAnalysisBase->GetMaxConstrainChi2())
2426 ((TH1F *)(fQAAntiProtonsAcceptedList->At(15)))->Fill(TMath::Log(track->GetConstrainedChi2()));
2427 }
2428 }//constrain chi2 - vertex
2429 if(fProtonAnalysisBase->IsUsedITSRefit()) {
2430 if ((track->GetStatus() & AliESDtrack::kITSrefit) == 0) {
2431 ((TH1F *)(fQAAntiProtonsRejectedList->At(16)))->Fill(0);
2432 }
2433 else if((track->GetStatus() & AliESDtrack::kITSrefit) != 0)
2434 ((TH1F *)(fQAAntiProtonsAcceptedList->At(16)))->Fill(0);
2435 }//ITS refit
2436 if(fProtonAnalysisBase->IsUsedTPCRefit()) {
2437 if ((track->GetStatus() & AliESDtrack::kTPCrefit) == 0) {
2438 ((TH1F *)(fQAAntiProtonsRejectedList->At(17)))->Fill(0);
2439 }
2440 else if((track->GetStatus() & AliESDtrack::kTPCrefit) != 0)
2441 ((TH1F *)(fQAAntiProtonsAcceptedList->At(17)))->Fill(0);
2442 }//TPC refit
2443 if(fProtonAnalysisBase->IsUsedESDpid()) {
2444 if ((track->GetStatus() & AliESDtrack::kESDpid) == 0) {
2445 ((TH1F *)(fQAAntiProtonsRejectedList->At(18)))->Fill(0);
2446 }
2447 else if((track->GetStatus() & AliESDtrack::kESDpid) != 0)
2448 ((TH1F *)(fQAAntiProtonsAcceptedList->At(18)))->Fill(0);
2449 }//ESD pid
2450 if(fProtonAnalysisBase->IsUsedTPCpid()) {
2451 if ((track->GetStatus() & AliESDtrack::kTPCpid) == 0) {
2452 ((TH1F *)(fQAAntiProtonsRejectedList->At(19)))->Fill(0);
2453 }
2454 else if((track->GetStatus() & AliESDtrack::kTPCpid) != 0)
2455 ((TH1F *)(fQAAntiProtonsAcceptedList->At(19)))->Fill(0);
2456 }//TPC pid
2457 if(fProtonAnalysisBase->IsUsedPointOnITSLayer1()) {
2458 if(!track->HasPointOnITSLayer(0)) {
2459 ((TH1F *)(fQAAntiProtonsRejectedList->At(20)))->Fill(0);
2460 }
2461 else if(track->HasPointOnITSLayer(0))
2462 ((TH1F *)(fQAAntiProtonsAcceptedList->At(20)))->Fill(0);
2463 }//point on SPD1
2464 if(fProtonAnalysisBase->IsUsedPointOnITSLayer2()) {
2465 if(!track->HasPointOnITSLayer(1)) {
2466 ((TH1F *)(fQAAntiProtonsRejectedList->At(21)))->Fill(0);
2467 }
2468 else if(track->HasPointOnITSLayer(1))
2469 ((TH1F *)(fQAAntiProtonsAcceptedList->At(21)))->Fill(0);
2470 }//point on SPD2
2471 if(fProtonAnalysisBase->IsUsedPointOnITSLayer3()) {
2472 if(!track->HasPointOnITSLayer(2)) {
2473 ((TH1F *)(fQAAntiProtonsRejectedList->At(22)))->Fill(0);
2474 }
2475 else if(track->HasPointOnITSLayer(2))
2476 ((TH1F *)(fQAAntiProtonsAcceptedList->At(22)))->Fill(0);
2477 }//point on SDD1
2478 if(fProtonAnalysisBase->IsUsedPointOnITSLayer4()) {
2479 if(!track->HasPointOnITSLayer(3)) {
2480 ((TH1F *)(fQAAntiProtonsRejectedList->At(23)))->Fill(0);
2481 }
2482 else if(track->HasPointOnITSLayer(3))
2483 ((TH1F *)(fQAAntiProtonsAcceptedList->At(23)))->Fill(0);
2484 }//point on SDD2
2485 if(fProtonAnalysisBase->IsUsedPointOnITSLayer5()) {
2486 if(!track->HasPointOnITSLayer(4)) {
2487 ((TH1F *)(fQAAntiProtonsRejectedList->At(24)))->Fill(0);
2488 }
2489 else if(track->HasPointOnITSLayer(4))
2490 ((TH1F *)(fQAAntiProtonsAcceptedList->At(24)))->Fill(0);
2491 }//point on SSD1
2492 if(fProtonAnalysisBase->IsUsedPointOnITSLayer6()) {
2493 if(!track->HasPointOnITSLayer(5)) {
2494 ((TH1F *)(fQAAntiProtonsRejectedList->At(25)))->Fill(0);
2495 }
2496 else if(track->HasPointOnITSLayer(5))
2497 ((TH1F *)(fQAAntiProtonsAcceptedList->At(25)))->Fill(0);
2498 }//point on SSD2
2499 if(fProtonAnalysisBase->IsUsedMinTPCdEdxPoints()) {
2500 if(track->GetTPCsignalN() < fProtonAnalysisBase->GetMinTPCdEdxPoints()) {
2501 ((TH1F *)(fQAAntiProtonsRejectedList->At(26)))->Fill(track->GetTPCsignalN());
2502 }
2503 if(track->GetTPCsignalN() >= fProtonAnalysisBase->GetMinTPCdEdxPoints())
2504 ((TH1F *)(fQAAntiProtonsAcceptedList->At(26)))->Fill(track->GetTPCsignalN());
2505 }//number of TPC points for the dE/dx
2506 }//antiprotons
2507}