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