]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/SPECTRA/AliProtonQAAnalysis.cxx
f660973107dce3290637b01585fb1dffd642d520
[u/mrichter/AliRoot.git] / PWG2 / SPECTRA / AliProtonQAAnalysis.cxx
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: AliProtonQAAnalysis.cxx 29114 2008-10-03 16:49:02Z pchrist $ */
15
16 //-----------------------------------------------------------------
17 //                 AliProtonQAAnalysis class
18 //   This is the class to deal with the proton analysis
19 //   Origin: Panos Christakoglou | Panos.Christakoglou@cern.ch
20 //-----------------------------------------------------------------
21 #include <Riostream.h>
22 #include <TSystem.h>
23 #include <TF1.h>
24 #include <TH2D.h>
25 #include <TH3F.h>
26 #include <TH1D.h>
27 #include <TArrayI.h>
28 #include <TParticle.h>
29
30 #include "AliProtonQAAnalysis.h"
31 #include "AliProtonAnalysisBase.h"
32
33 #include <AliExternalTrackParam.h>
34 #include <AliESDEvent.h>
35 #include <AliLog.h>
36 #include <AliPID.h>
37 #include <AliStack.h>
38 #include <AliESDVertex.h>
39 #include <AliGenEventHeader.h>
40 #include <AliMCEvent.h>
41
42 ClassImp(AliProtonQAAnalysis)
43
44 //____________________________________________________________________//
45 AliProtonQAAnalysis::AliProtonQAAnalysis() : 
46   TObject(), fProtonAnalysisBase(0),
47   fNBinsY(0), fMinY(0), fMaxY(0),
48   fNBinsPt(0), fMinPt(0), fMaxPt(0),
49   fGlobalQAList(0), fQAVertexList(0), fQA2DList(0),
50   fQAPrimaryProtonsAcceptedList(0),
51   fQAPrimaryProtonsRejectedList(0),
52   fQASecondaryProtonsAcceptedList(0),
53   fQASecondaryProtonsRejectedList(0),
54   fQAPrimaryAntiProtonsAcceptedList(0),
55   fQAPrimaryAntiProtonsRejectedList(0),
56   fQASecondaryAntiProtonsAcceptedList(0),
57   fQASecondaryAntiProtonsRejectedList(0),
58   fPDGList(0), fMCProcessesList(0),
59   fRunMCAnalysis(kFALSE),
60   fMCProcessIdFlag(kFALSE), fMCProcessId(0),
61   fMotherParticlePDGCodeFlag(kFALSE), fMotherParticlePDGCode(0),
62   fAcceptedCutList(0), fRejectedCutList(0),
63   fAcceptedDCAList(0), fRejectedDCAList(0),
64   fRunEfficiencyAnalysis(kFALSE),
65   fUseCutsInEfficiency(kFALSE),
66   fEfficiencyList(0) {
67   //Default constructor
68 }
69
70 //____________________________________________________________________//
71 AliProtonQAAnalysis::~AliProtonQAAnalysis() {
72   //Default destructor
73   if(fProtonAnalysisBase) delete fProtonAnalysisBase;
74   if(fGlobalQAList) delete fGlobalQAList;
75   if(fQAVertexList) delete fQAVertexList;
76   if(fQA2DList) delete fQA2DList;
77   if(fQAPrimaryProtonsAcceptedList) delete fQAPrimaryProtonsAcceptedList;
78   if(fQAPrimaryProtonsRejectedList) delete fQAPrimaryProtonsRejectedList;
79   if(fQASecondaryProtonsAcceptedList) delete fQASecondaryProtonsAcceptedList;
80   if(fQASecondaryProtonsRejectedList) delete fQASecondaryProtonsRejectedList;
81   if(fQAPrimaryAntiProtonsAcceptedList) 
82     delete fQAPrimaryAntiProtonsAcceptedList;
83   if(fQAPrimaryAntiProtonsRejectedList) 
84     delete fQAPrimaryAntiProtonsRejectedList;
85   if(fQASecondaryAntiProtonsAcceptedList) 
86     delete fQASecondaryAntiProtonsAcceptedList;
87   if(fQASecondaryAntiProtonsRejectedList) 
88     delete fQASecondaryAntiProtonsRejectedList; 
89
90   if(fPDGList) delete fPDGList;
91   if(fMCProcessesList) delete fMCProcessesList;
92   
93   if(fAcceptedCutList) delete fAcceptedCutList;
94   if(fRejectedCutList) delete fRejectedCutList;
95   if(fAcceptedDCAList) delete fAcceptedDCAList;
96   if(fRejectedDCAList) delete fRejectedDCAList;
97  
98   if(fEfficiencyList) delete fEfficiencyList;
99 }
100
101 //____________________________________________________________________//
102 void AliProtonQAAnalysis::FillQA(AliStack *const stack,
103                                  AliESDEvent *esd,
104                                  const AliESDVertex *vertex, 
105                                  AliESDtrack* track) {
106   // Checks if the track is excluded from the cuts
107   Int_t nPrimaries = stack->GetNprimary();
108   Int_t label = TMath::Abs(track->GetLabel());
109
110   Double_t gPt = 0.0, gPx = 0.0, gPy = 0.0, gPz = 0.0;
111   Double_t dca[2] = {0.0,0.0}, cov[3] = {0.0,0.0,0.0};  //The impact parameters and their covariance.
112
113   if((fProtonAnalysisBase->GetAnalysisMode()==AliProtonAnalysisBase::kTPC)||(fProtonAnalysisBase->GetAnalysisMode()==AliProtonAnalysisBase::kHybrid)) {
114     AliExternalTrackParam *tpcTrack = (AliExternalTrackParam *)track->GetTPCInnerParam();
115     if(!tpcTrack) {
116       gPt = 0.0; gPx = 0.0; gPy = 0.0; gPz = 0.0;
117       dca[0] = -100.; dca[1] = -100.;
118       cov[0] = -100.; cov[1] = -100.; cov[2] = -100.;
119     }
120     else {
121       gPt = tpcTrack->Pt();
122       gPx = tpcTrack->Px();
123       gPy = tpcTrack->Py();
124       gPz = tpcTrack->Pz();
125       tpcTrack->PropagateToDCA(vertex,
126                                esd->GetMagneticField(),
127                                100.,dca,cov);
128     }
129   }
130   else{
131     gPt = track->Pt();
132     gPx = track->Px();
133     gPy = track->Py();
134     gPz = track->Pz();
135     track->PropagateToDCA(vertex,
136                           esd->GetMagneticField(),
137                           100.,dca,cov);
138   }
139
140   Int_t  fIdxInt[200];
141   Int_t nClustersITS = track->GetITSclusters(fIdxInt);
142   Int_t nClustersTPC = track->GetTPCclusters(fIdxInt);
143
144   Float_t chi2PerClusterITS = -1;
145   if (nClustersITS!=0)
146     chi2PerClusterITS = track->GetITSchi2()/Float_t(nClustersITS);
147   Float_t chi2PerClusterTPC = -1;
148   if (nClustersTPC!=0)
149     chi2PerClusterTPC = track->GetTPCchi2()/Float_t(nClustersTPC);
150
151   Double_t extCov[15];
152   track->GetExternalCovariance(extCov);
153   
154   //protons
155   if(track->Charge() > 0) {
156     //Primaries
157     if(label <= nPrimaries) {
158       if(fProtonAnalysisBase->IsUsedMinITSClusters()) {
159         if(nClustersITS < fProtonAnalysisBase->GetMinITSClusters()) {
160           ((TH1F *)(fQAPrimaryProtonsRejectedList->At(0)))->Fill(nClustersITS);
161         }
162         else if(nClustersITS >= fProtonAnalysisBase->GetMinITSClusters()) 
163           ((TH1F *)(fQAPrimaryProtonsAcceptedList->At(0)))->Fill(nClustersITS);
164       }//ITS clusters
165       if(fProtonAnalysisBase->IsUsedMaxChi2PerITSCluster()) {
166         if(chi2PerClusterITS > fProtonAnalysisBase->GetMaxChi2PerITSCluster()) {
167           ((TH1F *)(fQAPrimaryProtonsRejectedList->At(1)))->Fill(chi2PerClusterITS);
168         }
169         else if(chi2PerClusterITS <= fProtonAnalysisBase->GetMaxChi2PerITSCluster())
170           ((TH1F *)(fQAPrimaryProtonsAcceptedList->At(1)))->Fill(chi2PerClusterITS);
171       }//chi2 per ITS cluster
172       if(fProtonAnalysisBase->IsUsedMinTPCClusters()) {
173         if(nClustersTPC < fProtonAnalysisBase->GetMinTPCClusters()) {
174           ((TH1F *)(fQAPrimaryProtonsRejectedList->At(2)))->Fill(nClustersTPC);
175         }
176         else if(nClustersTPC >= fProtonAnalysisBase->GetMinTPCClusters()) {
177           ((TH1F *)(fQAPrimaryProtonsAcceptedList->At(2)))->Fill(nClustersTPC);
178         }
179       }//TPC clusters
180       if(fProtonAnalysisBase->IsUsedMaxChi2PerTPCCluster()) {
181         if(chi2PerClusterTPC > fProtonAnalysisBase->GetMaxChi2PerTPCCluster()) {
182           ((TH1F *)(fQAPrimaryProtonsRejectedList->At(3)))->Fill(chi2PerClusterTPC);
183         }
184         else if(chi2PerClusterTPC <= fProtonAnalysisBase->GetMaxChi2PerTPCCluster())
185           ((TH1F *)(fQAPrimaryProtonsAcceptedList->At(3)))->Fill(chi2PerClusterTPC);
186       }//chi2 per TPC cluster
187       if(fProtonAnalysisBase->IsUsedMaxCov11()) {
188         if(extCov[0] > fProtonAnalysisBase->GetMaxCov11()) {
189           ((TH1F *)(fQAPrimaryProtonsRejectedList->At(4)))->Fill(extCov[0]);
190         }
191         else if(extCov[0] <= fProtonAnalysisBase->GetMaxCov11())
192           ((TH1F *)(fQAPrimaryProtonsAcceptedList->At(4)))->Fill(extCov[0]);
193       }//cov11
194       if(fProtonAnalysisBase->IsUsedMaxCov22()) {
195         if(extCov[2] > fProtonAnalysisBase->GetMaxCov22()) {
196           ((TH1F *)(fQAPrimaryProtonsRejectedList->At(5)))->Fill(extCov[2]);
197         }
198         else if(extCov[2] <= fProtonAnalysisBase->GetMaxCov22())
199           ((TH1F *)(fQAPrimaryProtonsAcceptedList->At(5)))->Fill(extCov[2]);
200       }//cov11
201       if(fProtonAnalysisBase->IsUsedMaxCov33()) {
202         if(extCov[5] > fProtonAnalysisBase->GetMaxCov33()) {
203           ((TH1F *)(fQAPrimaryProtonsRejectedList->At(6)))->Fill(extCov[5]);
204         }
205         else if(extCov[5] <= fProtonAnalysisBase->GetMaxCov33())
206           ((TH1F *)(fQAPrimaryProtonsAcceptedList->At(6)))->Fill(extCov[5]);
207       }//cov11
208       if(fProtonAnalysisBase->IsUsedMaxCov44()) {
209         if(extCov[9] > fProtonAnalysisBase->GetMaxCov44()) {
210           ((TH1F *)(fQAPrimaryProtonsRejectedList->At(7)))->Fill(extCov[9]);
211         }
212         else if(extCov[9] <= fProtonAnalysisBase->GetMaxCov44())
213           ((TH1F *)(fQAPrimaryProtonsAcceptedList->At(7)))->Fill(extCov[9]);
214       }//cov11
215       if(fProtonAnalysisBase->IsUsedMaxCov55()) {
216         if(extCov[14] > fProtonAnalysisBase->GetMaxCov55()) {
217           ((TH1F *)(fQAPrimaryProtonsRejectedList->At(8)))->Fill(extCov[14]);
218         }
219         else if(extCov[14] <= fProtonAnalysisBase->GetMaxCov55())
220           ((TH1F *)(fQAPrimaryProtonsAcceptedList->At(8)))->Fill(extCov[14]);
221       }//cov55
222       if(fProtonAnalysisBase->IsUsedMaxSigmaToVertex()) {
223         if(fProtonAnalysisBase->GetSigmaToVertex(track) > fProtonAnalysisBase->GetMaxSigmaToVertex()) {
224           ((TH1F *)(fQAPrimaryProtonsRejectedList->At(9)))->Fill(fProtonAnalysisBase->GetSigmaToVertex(track));
225         }
226         else if(fProtonAnalysisBase->GetSigmaToVertex(track) <= fProtonAnalysisBase->GetMaxSigmaToVertex())
227           ((TH1F *)(fQAPrimaryProtonsAcceptedList->At(9)))->Fill(fProtonAnalysisBase->GetSigmaToVertex(track));
228       }//sigma to vertex
229       if(fProtonAnalysisBase->IsUsedMaxSigmaToVertexTPC()) {
230         if(fProtonAnalysisBase->GetSigmaToVertex(track) > fProtonAnalysisBase->GetMaxSigmaToVertexTPC()) {
231           ((TH1F *)(fQAPrimaryProtonsRejectedList->At(10)))->Fill(fProtonAnalysisBase->GetSigmaToVertex(track));
232         }
233         else if(fProtonAnalysisBase->GetSigmaToVertex(track) <= fProtonAnalysisBase->GetMaxSigmaToVertexTPC())
234           ((TH1F *)(fQAPrimaryProtonsAcceptedList->At(10)))->Fill(fProtonAnalysisBase->GetSigmaToVertex(track));
235       }//sigma to vertex TPC
236       if(fProtonAnalysisBase->IsUsedMaxDCAXY()) {
237         if(TMath::Abs(dca[0]) > fProtonAnalysisBase->GetMaxDCAXY()) {
238           ((TH1F *)(fQAPrimaryProtonsRejectedList->At(11)))->Fill(TMath::Abs(dca[0]));
239         }
240         else if(TMath::Abs(dca[0]) <= fProtonAnalysisBase->GetMaxDCAXY())
241           ((TH1F *)(fQAPrimaryProtonsAcceptedList->At(11)))->Fill(TMath::Abs(dca[0]));
242       }//DCA xy global tracking
243       if(fProtonAnalysisBase->IsUsedMaxDCAXYTPC()) {
244         if(TMath::Abs(dca[0]) > fProtonAnalysisBase->GetMaxDCAXYTPC()) {
245           ((TH1F *)(fQAPrimaryProtonsRejectedList->At(12)))->Fill(TMath::Abs(dca[0]));
246         }
247         else if(TMath::Abs(dca[0]) <= fProtonAnalysisBase->GetMaxDCAXYTPC())
248           ((TH1F *)(fQAPrimaryProtonsAcceptedList->At(12)))->Fill(TMath::Abs(dca[0]));
249       }//DCA xy TPC tracking
250       if(fProtonAnalysisBase->IsUsedMaxDCAZ()) {
251         if(TMath::Abs(dca[1]) > fProtonAnalysisBase->GetMaxDCAZ()) {
252           ((TH1F *)(fQAPrimaryProtonsRejectedList->At(13)))->Fill(TMath::Abs(dca[1]));
253         }
254         else if(TMath::Abs(dca[1]) <= fProtonAnalysisBase->GetMaxDCAZ())
255           ((TH1F *)(fQAPrimaryProtonsAcceptedList->At(13)))->Fill(TMath::Abs(dca[1]));
256       }//DCA z global tracking
257       if(fProtonAnalysisBase->IsUsedMaxDCAZTPC()) {
258         if(TMath::Abs(dca[1]) > fProtonAnalysisBase->GetMaxDCAZTPC()) {
259           ((TH1F *)(fQAPrimaryProtonsRejectedList->At(14)))->Fill(TMath::Abs(dca[1]));
260         }
261         else if(TMath::Abs(dca[1]) <= fProtonAnalysisBase->GetMaxDCAZTPC())
262           ((TH1F *)(fQAPrimaryProtonsAcceptedList->At(14)))->Fill(TMath::Abs(dca[1]));
263       }//DCA z TPC tracking
264       if(fProtonAnalysisBase->IsUsedMaxConstrainChi2()) {
265         if(track->GetConstrainedChi2() > 0) {
266           if(TMath::Log(track->GetConstrainedChi2()) > fProtonAnalysisBase->GetMaxConstrainChi2()) {
267             ((TH1F *)(fQAPrimaryProtonsRejectedList->At(15)))->Fill(TMath::Log(track->GetConstrainedChi2()));
268           }
269           else if(TMath::Log(track->GetConstrainedChi2()) <= fProtonAnalysisBase->GetMaxConstrainChi2())
270             ((TH1F *)(fQAPrimaryProtonsAcceptedList->At(15)))->Fill(TMath::Log(track->GetConstrainedChi2()));
271         }
272       }//constrain chi2 - vertex
273       if(fProtonAnalysisBase->IsUsedITSRefit()) {
274         if ((track->GetStatus() & AliESDtrack::kITSrefit) == 0) {
275           ((TH1F *)(fQAPrimaryProtonsRejectedList->At(16)))->Fill(0);
276         }
277         else if((track->GetStatus() & AliESDtrack::kITSrefit) != 0)
278           ((TH1F *)(fQAPrimaryProtonsAcceptedList->At(16)))->Fill(0);
279       }//ITS refit
280       if(fProtonAnalysisBase->IsUsedTPCRefit()) {
281         if ((track->GetStatus() & AliESDtrack::kTPCrefit) == 0) {
282           ((TH1F *)(fQAPrimaryProtonsRejectedList->At(17)))->Fill(0);
283         }
284         else if((track->GetStatus() & AliESDtrack::kTPCrefit) != 0)
285           ((TH1F *)(fQAPrimaryProtonsAcceptedList->At(17)))->Fill(0);
286       }//TPC refit
287       if(fProtonAnalysisBase->IsUsedESDpid()) {
288         if ((track->GetStatus() & AliESDtrack::kESDpid) == 0) {
289           ((TH1F *)(fQAPrimaryProtonsRejectedList->At(18)))->Fill(0);
290         }
291         else if((track->GetStatus() & AliESDtrack::kESDpid) != 0)
292           ((TH1F *)(fQAPrimaryProtonsAcceptedList->At(18)))->Fill(0);
293       }//ESD pid
294       if(fProtonAnalysisBase->IsUsedTPCpid()) {
295         if ((track->GetStatus() & AliESDtrack::kTPCpid) == 0) {
296           ((TH1F *)(fQAPrimaryProtonsRejectedList->At(19)))->Fill(0);
297         }
298         else if((track->GetStatus() & AliESDtrack::kTPCpid) != 0)
299           ((TH1F *)(fQAPrimaryProtonsAcceptedList->At(19)))->Fill(0);
300       }//TPC pid
301       if(fProtonAnalysisBase->IsUsedMinTPCdEdxPoints()) {
302         if(track->GetTPCsignalN() < fProtonAnalysisBase->GetMinTPCdEdxPoints()) {
303           ((TH1F *)(fQAPrimaryProtonsRejectedList->At(20)))->Fill(track->GetTPCsignalN());
304         }
305         if(track->GetTPCsignalN() >= fProtonAnalysisBase->GetMinTPCdEdxPoints())
306           ((TH1F *)(fQAPrimaryProtonsAcceptedList->At(20)))->Fill(track->GetTPCsignalN());
307       }//number of TPC points for the dE/dx
308       if(fProtonAnalysisBase->IsUsedPointOnITSLayer1()) {
309         if(!track->HasPointOnITSLayer(0)) {
310           ((TH1F *)(fQAPrimaryProtonsRejectedList->At(21)))->Fill(0);
311         }
312         else if(track->HasPointOnITSLayer(0))
313           ((TH1F *)(fQAPrimaryProtonsAcceptedList->At(21)))->Fill(0);
314       }//point on SPD1
315       if(fProtonAnalysisBase->IsUsedPointOnITSLayer2()) {
316         if(!track->HasPointOnITSLayer(1)) {
317           ((TH1F *)(fQAPrimaryProtonsRejectedList->At(22)))->Fill(0);
318         }
319         else if(track->HasPointOnITSLayer(1))
320           ((TH1F *)(fQAPrimaryProtonsAcceptedList->At(22)))->Fill(0);
321       }//point on SPD2
322       if(fProtonAnalysisBase->IsUsedPointOnITSLayer3()) {
323         if(!track->HasPointOnITSLayer(2)) {
324           ((TH1F *)(fQAPrimaryProtonsRejectedList->At(23)))->Fill(0);
325         }
326         else if(track->HasPointOnITSLayer(2))
327           ((TH1F *)(fQAPrimaryProtonsAcceptedList->At(23)))->Fill(0);
328       }//point on SDD1
329       if(fProtonAnalysisBase->IsUsedPointOnITSLayer4()) {
330         if(!track->HasPointOnITSLayer(3)) {
331           ((TH1F *)(fQAPrimaryProtonsRejectedList->At(24)))->Fill(0);
332         }
333         else if(track->HasPointOnITSLayer(3))
334           ((TH1F *)(fQAPrimaryProtonsAcceptedList->At(24)))->Fill(0);
335       }//point on SDD2
336       if(fProtonAnalysisBase->IsUsedPointOnITSLayer5()) {
337         if(!track->HasPointOnITSLayer(4)) {
338           ((TH1F *)(fQAPrimaryProtonsRejectedList->At(25)))->Fill(0);
339         }
340         else if(track->HasPointOnITSLayer(4))
341           ((TH1F *)(fQAPrimaryProtonsAcceptedList->At(25)))->Fill(0);
342       }//point on SSD1
343       if(fProtonAnalysisBase->IsUsedPointOnITSLayer6()) {
344         if(!track->HasPointOnITSLayer(5)) {
345           ((TH1F *)(fQAPrimaryProtonsRejectedList->At(26)))->Fill(0);
346         }
347         else if(track->HasPointOnITSLayer(5))
348           ((TH1F *)(fQAPrimaryProtonsAcceptedList->At(26)))->Fill(0);
349       }//point on SSD2
350     }//primary particle cut
351
352     //Secondaries
353     if(label > nPrimaries) {
354       if(fProtonAnalysisBase->IsUsedMinITSClusters()) {
355         if(nClustersITS < fProtonAnalysisBase->GetMinITSClusters()) {
356           ((TH1F *)(fQASecondaryProtonsRejectedList->At(0)))->Fill(nClustersITS);
357         }
358         else if(nClustersITS >= fProtonAnalysisBase->GetMinITSClusters()) 
359           ((TH1F *)(fQASecondaryProtonsAcceptedList->At(0)))->Fill(nClustersITS);
360       }//ITS clusters
361       if(fProtonAnalysisBase->IsUsedMaxChi2PerITSCluster()) {
362         if(chi2PerClusterITS > fProtonAnalysisBase->GetMaxChi2PerITSCluster()) {
363           ((TH1F *)(fQASecondaryProtonsRejectedList->At(1)))->Fill(chi2PerClusterITS);
364         }
365         else if(chi2PerClusterITS <= fProtonAnalysisBase->GetMaxChi2PerITSCluster())
366           ((TH1F *)(fQASecondaryProtonsAcceptedList->At(1)))->Fill(chi2PerClusterITS);
367       }//chi2 per ITS cluster
368       if(fProtonAnalysisBase->IsUsedMinTPCClusters()) {
369         if(nClustersTPC < fProtonAnalysisBase->GetMinTPCClusters()) {
370           //cout<<"Secondary proton rejected"<<endl;
371           ((TH1F *)(fQASecondaryProtonsRejectedList->At(2)))->Fill(nClustersTPC);
372         }
373         else if(nClustersTPC >= fProtonAnalysisBase->GetMinTPCClusters()) {
374           //cout<<"Secondary proton accepted"<<endl;
375           ((TH1F *)(fQASecondaryProtonsAcceptedList->At(2)))->Fill(nClustersTPC);
376         }
377       }//TPC clusters
378       if(fProtonAnalysisBase->IsUsedMaxChi2PerTPCCluster()) {
379         if(chi2PerClusterTPC > fProtonAnalysisBase->GetMaxChi2PerTPCCluster()) {
380           ((TH1F *)(fQASecondaryProtonsRejectedList->At(3)))->Fill(chi2PerClusterTPC);
381         }
382         else if(chi2PerClusterTPC <= fProtonAnalysisBase->GetMaxChi2PerTPCCluster())
383           ((TH1F *)(fQASecondaryProtonsAcceptedList->At(3)))->Fill(chi2PerClusterTPC);
384       }//chi2 per TPC cluster
385       if(fProtonAnalysisBase->IsUsedMaxCov11()) {
386         if(extCov[0] > fProtonAnalysisBase->GetMaxCov11()) {
387           ((TH1F *)(fQASecondaryProtonsRejectedList->At(4)))->Fill(extCov[0]);
388         }
389         else if(extCov[0] <= fProtonAnalysisBase->GetMaxCov11())
390           ((TH1F *)(fQASecondaryProtonsAcceptedList->At(4)))->Fill(extCov[0]);
391       }//cov11
392       if(fProtonAnalysisBase->IsUsedMaxCov22()) {
393         if(extCov[2] > fProtonAnalysisBase->GetMaxCov22()) {
394           ((TH1F *)(fQASecondaryProtonsRejectedList->At(5)))->Fill(extCov[2]);
395         }
396         else if(extCov[2] <= fProtonAnalysisBase->GetMaxCov22())
397           ((TH1F *)(fQASecondaryProtonsAcceptedList->At(5)))->Fill(extCov[2]);
398       }//cov11
399       if(fProtonAnalysisBase->IsUsedMaxCov33()) {
400         if(extCov[5] > fProtonAnalysisBase->GetMaxCov33()) {
401           ((TH1F *)(fQASecondaryProtonsRejectedList->At(6)))->Fill(extCov[5]);
402         }
403         else if(extCov[5] <= fProtonAnalysisBase->GetMaxCov33())
404           ((TH1F *)(fQASecondaryProtonsAcceptedList->At(6)))->Fill(extCov[5]);
405       }//cov11
406       if(fProtonAnalysisBase->IsUsedMaxCov44()) {
407         if(extCov[9] > fProtonAnalysisBase->GetMaxCov44()) {
408           ((TH1F *)(fQASecondaryProtonsRejectedList->At(7)))->Fill(extCov[9]);
409         }
410         else if(extCov[9] <= fProtonAnalysisBase->GetMaxCov44())
411           ((TH1F *)(fQASecondaryProtonsAcceptedList->At(7)))->Fill(extCov[9]);
412       }//cov11
413       if(fProtonAnalysisBase->IsUsedMaxCov55()) {
414         if(extCov[14] > fProtonAnalysisBase->GetMaxCov55()) {
415           ((TH1F *)(fQASecondaryProtonsRejectedList->At(8)))->Fill(extCov[14]);
416         }
417         else if(extCov[14] <= fProtonAnalysisBase->GetMaxCov55())
418           ((TH1F *)(fQASecondaryProtonsAcceptedList->At(8)))->Fill(extCov[14]);
419       }//cov55
420       if(fProtonAnalysisBase->IsUsedMaxSigmaToVertex()) {
421         if(fProtonAnalysisBase->GetSigmaToVertex(track) > fProtonAnalysisBase->GetMaxSigmaToVertex()) {
422           ((TH1F *)(fQASecondaryProtonsRejectedList->At(9)))->Fill(fProtonAnalysisBase->GetSigmaToVertex(track));
423         }
424         else if(fProtonAnalysisBase->GetSigmaToVertex(track) <= fProtonAnalysisBase->GetMaxSigmaToVertex())
425           ((TH1F *)(fQASecondaryProtonsAcceptedList->At(9)))->Fill(fProtonAnalysisBase->GetSigmaToVertex(track));
426       }//sigma to vertex
427       if(fProtonAnalysisBase->IsUsedMaxSigmaToVertexTPC()) {
428         if(fProtonAnalysisBase->GetSigmaToVertex(track) > fProtonAnalysisBase->GetMaxSigmaToVertexTPC()) {
429           ((TH1F *)(fQASecondaryProtonsRejectedList->At(10)))->Fill(fProtonAnalysisBase->GetSigmaToVertex(track));
430         }
431         else if(fProtonAnalysisBase->GetSigmaToVertex(track) <= fProtonAnalysisBase->GetMaxSigmaToVertexTPC())
432           ((TH1F *)(fQASecondaryProtonsAcceptedList->At(10)))->Fill(fProtonAnalysisBase->GetSigmaToVertex(track));
433       }//sigma to vertex TPC
434       if(fProtonAnalysisBase->IsUsedMaxDCAXY()) {
435         if(TMath::Abs(dca[0]) > fProtonAnalysisBase->GetMaxDCAXY()) {
436           ((TH1F *)(fQASecondaryProtonsRejectedList->At(11)))->Fill(TMath::Abs(dca[0]));
437         }
438         else if(TMath::Abs(dca[0]) <= fProtonAnalysisBase->GetMaxDCAXY())
439           ((TH1F *)(fQASecondaryProtonsAcceptedList->At(11)))->Fill(TMath::Abs(dca[0]));
440       }//DCA xy global tracking
441       if(fProtonAnalysisBase->IsUsedMaxDCAXYTPC()) {
442         if(TMath::Abs(dca[0]) > fProtonAnalysisBase->GetMaxDCAXYTPC()) {
443           ((TH1F *)(fQASecondaryProtonsRejectedList->At(12)))->Fill(TMath::Abs(dca[0]));
444         }
445         else if(TMath::Abs(dca[0]) <= fProtonAnalysisBase->GetMaxDCAXYTPC())
446           ((TH1F *)(fQASecondaryProtonsAcceptedList->At(12)))->Fill(TMath::Abs(dca[0]));
447       }//DCA xy TPC tracking
448       if(fProtonAnalysisBase->IsUsedMaxDCAZ()) {
449         if(TMath::Abs(dca[1]) > fProtonAnalysisBase->GetMaxDCAZ()) {
450           ((TH1F *)(fQASecondaryProtonsRejectedList->At(13)))->Fill(TMath::Abs(dca[1]));
451         }
452         else if(TMath::Abs(dca[1]) <= fProtonAnalysisBase->GetMaxDCAZ())
453           ((TH1F *)(fQASecondaryProtonsAcceptedList->At(13)))->Fill(TMath::Abs(dca[1]));
454       }//DCA z global tracking
455       if(fProtonAnalysisBase->IsUsedMaxDCAZTPC()) {
456         if(TMath::Abs(dca[1]) > fProtonAnalysisBase->GetMaxDCAZTPC()) {
457           ((TH1F *)(fQASecondaryProtonsRejectedList->At(14)))->Fill(TMath::Abs(dca[1]));
458         }
459         else if(TMath::Abs(dca[1]) <= fProtonAnalysisBase->GetMaxDCAZTPC())
460           ((TH1F *)(fQASecondaryProtonsAcceptedList->At(14)))->Fill(TMath::Abs(dca[1]));
461       }//DCA z TPC tracking
462       if(fProtonAnalysisBase->IsUsedMaxConstrainChi2()) {
463         if(track->GetConstrainedChi2() > 0) {
464           if(TMath::Log(track->GetConstrainedChi2()) > fProtonAnalysisBase->GetMaxConstrainChi2()) {
465             ((TH1F *)(fQASecondaryProtonsRejectedList->At(15)))->Fill(TMath::Log(track->GetConstrainedChi2()));
466           }
467           else if(TMath::Log(track->GetConstrainedChi2()) <= fProtonAnalysisBase->GetMaxConstrainChi2())
468             ((TH1F *)(fQASecondaryProtonsAcceptedList->At(15)))->Fill(TMath::Log(track->GetConstrainedChi2()));
469         }
470       }//constrain chi2 - vertex
471       if(fProtonAnalysisBase->IsUsedITSRefit()) {
472         if ((track->GetStatus() & AliESDtrack::kITSrefit) == 0) {
473           ((TH1F *)(fQASecondaryProtonsRejectedList->At(16)))->Fill(0);
474         }
475         else if((track->GetStatus() & AliESDtrack::kITSrefit) != 0)
476           ((TH1F *)(fQASecondaryProtonsAcceptedList->At(16)))->Fill(0);
477       }//ITS refit
478       if(fProtonAnalysisBase->IsUsedTPCRefit()) {
479         if ((track->GetStatus() & AliESDtrack::kTPCrefit) == 0) {
480           ((TH1F *)(fQASecondaryProtonsRejectedList->At(17)))->Fill(0);
481         }
482         else if((track->GetStatus() & AliESDtrack::kTPCrefit) != 0)
483           ((TH1F *)(fQASecondaryProtonsAcceptedList->At(17)))->Fill(0);
484       }//TPC refit
485       if(fProtonAnalysisBase->IsUsedESDpid()) {
486         if ((track->GetStatus() & AliESDtrack::kESDpid) == 0) {
487           ((TH1F *)(fQASecondaryProtonsRejectedList->At(18)))->Fill(0);
488         }
489         else if((track->GetStatus() & AliESDtrack::kESDpid) != 0)
490           ((TH1F *)(fQASecondaryProtonsAcceptedList->At(18)))->Fill(0);
491       }//ESD pid
492       if(fProtonAnalysisBase->IsUsedTPCpid()) {
493         if ((track->GetStatus() & AliESDtrack::kTPCpid) == 0) {
494           ((TH1F *)(fQASecondaryProtonsRejectedList->At(19)))->Fill(0);
495         }
496         else if((track->GetStatus() & AliESDtrack::kTPCpid) != 0)
497           ((TH1F *)(fQASecondaryProtonsAcceptedList->At(19)))->Fill(0);
498       }//TPC pid
499       if(fProtonAnalysisBase->IsUsedMinTPCdEdxPoints()) {
500         if(track->GetTPCsignalN() < fProtonAnalysisBase->GetMinTPCdEdxPoints()) {
501           ((TH1F *)(fQASecondaryProtonsRejectedList->At(20)))->Fill(track->GetTPCsignalN());
502         }
503         if(track->GetTPCsignalN() >= fProtonAnalysisBase->GetMinTPCdEdxPoints())
504           ((TH1F *)(fQASecondaryProtonsAcceptedList->At(20)))->Fill(track->GetTPCsignalN());
505       }//number of TPC points for the dE/dx
506       if(fProtonAnalysisBase->IsUsedPointOnITSLayer1()) {
507         if(!track->HasPointOnITSLayer(0)) {
508           ((TH1F *)(fQASecondaryProtonsRejectedList->At(21)))->Fill(0);
509         }
510         else if(track->HasPointOnITSLayer(0))
511           ((TH1F *)(fQASecondaryProtonsAcceptedList->At(21)))->Fill(0);
512       }//point on SPD1
513       if(fProtonAnalysisBase->IsUsedPointOnITSLayer2()) {
514         if(!track->HasPointOnITSLayer(1)) {
515           ((TH1F *)(fQASecondaryProtonsRejectedList->At(22)))->Fill(0);
516         }
517         else if(track->HasPointOnITSLayer(1))
518           ((TH1F *)(fQASecondaryProtonsAcceptedList->At(22)))->Fill(0);
519       }//point on SPD2
520       if(fProtonAnalysisBase->IsUsedPointOnITSLayer3()) {
521         if(!track->HasPointOnITSLayer(2)) {
522           ((TH1F *)(fQASecondaryProtonsRejectedList->At(23)))->Fill(0);
523         }
524         else if(track->HasPointOnITSLayer(2))
525           ((TH1F *)(fQASecondaryProtonsAcceptedList->At(23)))->Fill(0);
526       }//point on SDD1
527       if(fProtonAnalysisBase->IsUsedPointOnITSLayer4()) {
528         if(!track->HasPointOnITSLayer(3)) {
529           ((TH1F *)(fQASecondaryProtonsRejectedList->At(24)))->Fill(0);
530         }
531         else if(track->HasPointOnITSLayer(3))
532           ((TH1F *)(fQASecondaryProtonsAcceptedList->At(24)))->Fill(0);
533       }//point on SDD2
534       if(fProtonAnalysisBase->IsUsedPointOnITSLayer5()) {
535         if(!track->HasPointOnITSLayer(4)) {
536           ((TH1F *)(fQASecondaryProtonsRejectedList->At(25)))->Fill(0);
537         }
538         else if(track->HasPointOnITSLayer(4))
539           ((TH1F *)(fQASecondaryProtonsAcceptedList->At(25)))->Fill(0);
540       }//point on SSD1
541       if(fProtonAnalysisBase->IsUsedPointOnITSLayer6()) {
542         if(!track->HasPointOnITSLayer(5)) {
543           ((TH1F *)(fQASecondaryProtonsRejectedList->At(26)))->Fill(0);
544         }
545         else if(track->HasPointOnITSLayer(5))
546           ((TH1F *)(fQASecondaryProtonsAcceptedList->At(26)))->Fill(0);
547       }//point on SSD2
548     }//secondary particle cut
549   }//protons
550
551   //antiprotons
552   if(track->Charge() < 0) {
553     //Primaries
554     if(label <= nPrimaries) {
555       if(fProtonAnalysisBase->IsUsedMinITSClusters()) {
556         if(nClustersITS < fProtonAnalysisBase->GetMinITSClusters()) {
557           ((TH1F *)(fQAPrimaryAntiProtonsRejectedList->At(0)))->Fill(nClustersITS);
558         }
559         else if(nClustersITS >= fProtonAnalysisBase->GetMinITSClusters()) 
560           ((TH1F *)(fQAPrimaryAntiProtonsAcceptedList->At(0)))->Fill(nClustersITS);
561       }//ITS clusters
562       if(fProtonAnalysisBase->IsUsedMaxChi2PerITSCluster()) {
563         if(chi2PerClusterITS > fProtonAnalysisBase->GetMaxChi2PerITSCluster()) {
564           ((TH1F *)(fQAPrimaryAntiProtonsRejectedList->At(1)))->Fill(chi2PerClusterITS);
565         }
566         else if(chi2PerClusterITS <= fProtonAnalysisBase->GetMaxChi2PerITSCluster())
567           ((TH1F *)(fQAPrimaryAntiProtonsAcceptedList->At(1)))->Fill(chi2PerClusterITS);
568       }//chi2 per ITS cluster
569       if(fProtonAnalysisBase->IsUsedMinTPCClusters()) {
570         if(nClustersTPC < fProtonAnalysisBase->GetMinTPCClusters()) {
571           //cout<<"Primary antiproton rejected"<<endl;
572           ((TH1F *)(fQAPrimaryAntiProtonsRejectedList->At(2)))->Fill(nClustersTPC);
573         }
574         else if(nClustersTPC >= fProtonAnalysisBase->GetMinTPCClusters()) {
575           ((TH1F *)(fQAPrimaryAntiProtonsAcceptedList->At(2)))->Fill(nClustersTPC);
576         }
577       }//TPC clusters
578       if(fProtonAnalysisBase->IsUsedMaxChi2PerTPCCluster()) {
579         if(chi2PerClusterTPC > fProtonAnalysisBase->GetMaxChi2PerTPCCluster()) {
580           ((TH1F *)(fQAPrimaryAntiProtonsRejectedList->At(3)))->Fill(chi2PerClusterTPC);
581         }
582         else if(chi2PerClusterTPC <= fProtonAnalysisBase->GetMaxChi2PerTPCCluster())
583           ((TH1F *)(fQAPrimaryAntiProtonsAcceptedList->At(3)))->Fill(chi2PerClusterTPC);
584       }//chi2 per TPC cluster
585       if(fProtonAnalysisBase->IsUsedMaxCov11()) {
586         if(extCov[0] > fProtonAnalysisBase->GetMaxCov11()) {
587           ((TH1F *)(fQAPrimaryAntiProtonsRejectedList->At(4)))->Fill(extCov[0]);
588         }
589         else if(extCov[0] <= fProtonAnalysisBase->GetMaxCov11())
590           ((TH1F *)(fQAPrimaryAntiProtonsAcceptedList->At(4)))->Fill(extCov[0]);
591       }//cov11
592       if(fProtonAnalysisBase->IsUsedMaxCov22()) {
593         if(extCov[2] > fProtonAnalysisBase->GetMaxCov22()) {
594           ((TH1F *)(fQAPrimaryAntiProtonsRejectedList->At(5)))->Fill(extCov[2]);
595         }
596         else if(extCov[2] <= fProtonAnalysisBase->GetMaxCov22())
597           ((TH1F *)(fQAPrimaryAntiProtonsAcceptedList->At(5)))->Fill(extCov[2]);
598       }//cov11
599       if(fProtonAnalysisBase->IsUsedMaxCov33()) {
600         if(extCov[5] > fProtonAnalysisBase->GetMaxCov33()) {
601           ((TH1F *)(fQAPrimaryAntiProtonsRejectedList->At(6)))->Fill(extCov[5]);
602         }
603         else if(extCov[5] <= fProtonAnalysisBase->GetMaxCov33())
604           ((TH1F *)(fQAPrimaryAntiProtonsAcceptedList->At(6)))->Fill(extCov[5]);
605       }//cov11
606       if(fProtonAnalysisBase->IsUsedMaxCov44()) {
607         if(extCov[9] > fProtonAnalysisBase->GetMaxCov44()) {
608           ((TH1F *)(fQAPrimaryAntiProtonsRejectedList->At(7)))->Fill(extCov[9]);
609         }
610         else if(extCov[9] <= fProtonAnalysisBase->GetMaxCov44())
611           ((TH1F *)(fQAPrimaryAntiProtonsAcceptedList->At(7)))->Fill(extCov[9]);
612       }//cov11
613       if(fProtonAnalysisBase->IsUsedMaxCov55()) {
614         if(extCov[14] > fProtonAnalysisBase->GetMaxCov55()) {
615           ((TH1F *)(fQAPrimaryAntiProtonsRejectedList->At(8)))->Fill(extCov[14]);
616         }
617         else if(extCov[14] <= fProtonAnalysisBase->GetMaxCov55())
618           ((TH1F *)(fQAPrimaryAntiProtonsAcceptedList->At(8)))->Fill(extCov[14]);
619       }//cov55
620       if(fProtonAnalysisBase->IsUsedMaxSigmaToVertex()) {
621         if(fProtonAnalysisBase->GetSigmaToVertex(track) > fProtonAnalysisBase->GetMaxSigmaToVertex()) {
622           ((TH1F *)(fQAPrimaryAntiProtonsRejectedList->At(9)))->Fill(fProtonAnalysisBase->GetSigmaToVertex(track));
623         }
624         else if(fProtonAnalysisBase->GetSigmaToVertex(track) <= fProtonAnalysisBase->GetMaxSigmaToVertex())
625           ((TH1F *)(fQAPrimaryAntiProtonsAcceptedList->At(9)))->Fill(fProtonAnalysisBase->GetSigmaToVertex(track));
626       }//sigma to vertex
627       if(fProtonAnalysisBase->IsUsedMaxSigmaToVertexTPC()) {
628         if(fProtonAnalysisBase->GetSigmaToVertex(track) > fProtonAnalysisBase->GetMaxSigmaToVertexTPC()) {
629           ((TH1F *)(fQAPrimaryAntiProtonsRejectedList->At(10)))->Fill(fProtonAnalysisBase->GetSigmaToVertex(track));
630         }
631         else if(fProtonAnalysisBase->GetSigmaToVertex(track) <= fProtonAnalysisBase->GetMaxSigmaToVertexTPC())
632           ((TH1F *)(fQAPrimaryAntiProtonsAcceptedList->At(10)))->Fill(fProtonAnalysisBase->GetSigmaToVertex(track));
633       }//sigma to vertex TPC
634       if(fProtonAnalysisBase->IsUsedMaxDCAXY()) {
635         if(TMath::Abs(dca[0]) > fProtonAnalysisBase->GetMaxDCAXY()) {
636           ((TH1F *)(fQAPrimaryAntiProtonsRejectedList->At(11)))->Fill(TMath::Abs(dca[0]));
637         }
638         else if(TMath::Abs(dca[0]) <= fProtonAnalysisBase->GetMaxDCAXY())
639           ((TH1F *)(fQAPrimaryAntiProtonsAcceptedList->At(11)))->Fill(TMath::Abs(dca[0]));
640       }//DCA xy global tracking
641       if(fProtonAnalysisBase->IsUsedMaxDCAXYTPC()) {
642         if(TMath::Abs(dca[0]) > fProtonAnalysisBase->GetMaxDCAXYTPC()) {
643           ((TH1F *)(fQAPrimaryAntiProtonsRejectedList->At(12)))->Fill(TMath::Abs(dca[0]));
644         }
645         else if(TMath::Abs(dca[0]) <= fProtonAnalysisBase->GetMaxDCAXYTPC())
646           ((TH1F *)(fQAPrimaryAntiProtonsAcceptedList->At(12)))->Fill(TMath::Abs(dca[0]));
647       }//DCA xy TPC tracking
648       if(fProtonAnalysisBase->IsUsedMaxDCAZ()) {
649         if(TMath::Abs(dca[1]) > fProtonAnalysisBase->GetMaxDCAZ()) {
650           ((TH1F *)(fQAPrimaryAntiProtonsRejectedList->At(13)))->Fill(TMath::Abs(dca[1]));
651         }
652         else if(TMath::Abs(dca[1]) <= fProtonAnalysisBase->GetMaxDCAZ())
653           ((TH1F *)(fQAPrimaryAntiProtonsAcceptedList->At(13)))->Fill(TMath::Abs(dca[1]));
654       }//DCA z global tracking
655       if(fProtonAnalysisBase->IsUsedMaxDCAZTPC()) {
656         if(TMath::Abs(dca[1]) > fProtonAnalysisBase->GetMaxDCAZTPC()) {
657           ((TH1F *)(fQAPrimaryAntiProtonsRejectedList->At(14)))->Fill(TMath::Abs(dca[1]));
658         }
659         else if(TMath::Abs(dca[1]) <= fProtonAnalysisBase->GetMaxDCAZTPC())
660           ((TH1F *)(fQAPrimaryAntiProtonsAcceptedList->At(14)))->Fill(TMath::Abs(dca[1]));
661       }//DCA z TPC tracking
662       if(fProtonAnalysisBase->IsUsedMaxConstrainChi2()) {
663         if(track->GetConstrainedChi2() > 0) {
664           if(TMath::Log(track->GetConstrainedChi2()) > fProtonAnalysisBase->GetMaxConstrainChi2()) {
665             ((TH1F *)(fQAPrimaryAntiProtonsRejectedList->At(15)))->Fill(TMath::Log(track->GetConstrainedChi2()));
666           }
667           else if(TMath::Log(track->GetConstrainedChi2()) <= fProtonAnalysisBase->GetMaxConstrainChi2())
668             ((TH1F *)(fQAPrimaryAntiProtonsAcceptedList->At(15)))->Fill(TMath::Log(track->GetConstrainedChi2()));
669         }
670       }//constrain chi2 - vertex
671       if(fProtonAnalysisBase->IsUsedITSRefit()) {
672         if ((track->GetStatus() & AliESDtrack::kITSrefit) == 0) {
673           ((TH1F *)(fQAPrimaryAntiProtonsRejectedList->At(16)))->Fill(0);
674         }
675         else if((track->GetStatus() & AliESDtrack::kITSrefit) != 0)
676           ((TH1F *)(fQAPrimaryAntiProtonsAcceptedList->At(16)))->Fill(0);
677       }//ITS refit
678       if(fProtonAnalysisBase->IsUsedTPCRefit()) {
679         if ((track->GetStatus() & AliESDtrack::kTPCrefit) == 0) {
680           ((TH1F *)(fQAPrimaryAntiProtonsRejectedList->At(17)))->Fill(0);
681         }
682         else if((track->GetStatus() & AliESDtrack::kTPCrefit) != 0)
683           ((TH1F *)(fQAPrimaryAntiProtonsAcceptedList->At(17)))->Fill(0);
684       }//TPC refit
685       if(fProtonAnalysisBase->IsUsedESDpid()) {
686         if ((track->GetStatus() & AliESDtrack::kESDpid) == 0) {
687           ((TH1F *)(fQAPrimaryAntiProtonsRejectedList->At(18)))->Fill(0);
688         }
689         else if((track->GetStatus() & AliESDtrack::kESDpid) != 0)
690           ((TH1F *)(fQAPrimaryAntiProtonsAcceptedList->At(18)))->Fill(0);
691       }//ESD pid
692       if(fProtonAnalysisBase->IsUsedTPCpid()) {
693         if ((track->GetStatus() & AliESDtrack::kTPCpid) == 0) {
694           ((TH1F *)(fQAPrimaryAntiProtonsRejectedList->At(19)))->Fill(0);
695         }
696         else if((track->GetStatus() & AliESDtrack::kTPCpid) != 0)
697           ((TH1F *)(fQAPrimaryAntiProtonsAcceptedList->At(19)))->Fill(0);
698       }//TPC pid
699       if(fProtonAnalysisBase->IsUsedMinTPCdEdxPoints()) {
700         if(track->GetTPCsignalN() < fProtonAnalysisBase->GetMinTPCdEdxPoints()) {
701           ((TH1F *)(fQAPrimaryAntiProtonsRejectedList->At(20)))->Fill(track->GetTPCsignalN());
702         }
703         if(track->GetTPCsignalN() >= fProtonAnalysisBase->GetMinTPCdEdxPoints())
704           ((TH1F *)(fQAPrimaryAntiProtonsAcceptedList->At(20)))->Fill(track->GetTPCsignalN());
705       }//number of TPC points for the dE/dx
706       if(fProtonAnalysisBase->IsUsedPointOnITSLayer1()) {
707         if(!track->HasPointOnITSLayer(0)) {
708           ((TH1F *)(fQAPrimaryAntiProtonsRejectedList->At(21)))->Fill(0);
709         }
710         else if(track->HasPointOnITSLayer(0))
711           ((TH1F *)(fQAPrimaryAntiProtonsAcceptedList->At(21)))->Fill(0);
712       }//point on SPD1
713       if(fProtonAnalysisBase->IsUsedPointOnITSLayer2()) {
714         if(!track->HasPointOnITSLayer(1)) {
715           ((TH1F *)(fQAPrimaryAntiProtonsRejectedList->At(22)))->Fill(0);
716         }
717         else if(track->HasPointOnITSLayer(1))
718           ((TH1F *)(fQAPrimaryAntiProtonsAcceptedList->At(22)))->Fill(0);
719       }//point on SPD2
720       if(fProtonAnalysisBase->IsUsedPointOnITSLayer3()) {
721         if(!track->HasPointOnITSLayer(2)) {
722           ((TH1F *)(fQAPrimaryAntiProtonsRejectedList->At(23)))->Fill(0);
723         }
724         else if(track->HasPointOnITSLayer(2))
725           ((TH1F *)(fQAPrimaryAntiProtonsAcceptedList->At(23)))->Fill(0);
726       }//point on SDD1
727       if(fProtonAnalysisBase->IsUsedPointOnITSLayer4()) {
728         if(!track->HasPointOnITSLayer(3)) {
729           ((TH1F *)(fQAPrimaryAntiProtonsRejectedList->At(24)))->Fill(0);
730         }
731         else if(track->HasPointOnITSLayer(3))
732           ((TH1F *)(fQAPrimaryAntiProtonsAcceptedList->At(24)))->Fill(0);
733       }//point on SDD2
734       if(fProtonAnalysisBase->IsUsedPointOnITSLayer5()) {
735         if(!track->HasPointOnITSLayer(4)) {
736           ((TH1F *)(fQAPrimaryAntiProtonsRejectedList->At(25)))->Fill(0);
737         }
738         else if(track->HasPointOnITSLayer(4))
739           ((TH1F *)(fQAPrimaryAntiProtonsAcceptedList->At(25)))->Fill(0);
740       }//point on SSD1
741       if(fProtonAnalysisBase->IsUsedPointOnITSLayer6()) {
742         if(!track->HasPointOnITSLayer(5)) {
743           ((TH1F *)(fQAPrimaryAntiProtonsRejectedList->At(26)))->Fill(0);
744         }
745         else if(track->HasPointOnITSLayer(5))
746           ((TH1F *)(fQAPrimaryAntiProtonsAcceptedList->At(26)))->Fill(0);
747       }//point on SSD2
748     }//primary particle cut
749
750     //Secondaries
751     if(label > nPrimaries) {
752       if(fProtonAnalysisBase->IsUsedMinITSClusters()) {
753         if(nClustersITS < fProtonAnalysisBase->GetMinITSClusters()) {
754           ((TH1F *)(fQASecondaryAntiProtonsRejectedList->At(0)))->Fill(nClustersITS);
755         }
756         else if(nClustersITS >= fProtonAnalysisBase->GetMinITSClusters()) 
757           ((TH1F *)(fQASecondaryAntiProtonsAcceptedList->At(0)))->Fill(nClustersITS);
758       }//ITS clusters
759       if(fProtonAnalysisBase->IsUsedMaxChi2PerITSCluster()) {
760         if(chi2PerClusterITS > fProtonAnalysisBase->GetMaxChi2PerITSCluster()) {
761           ((TH1F *)(fQASecondaryAntiProtonsRejectedList->At(1)))->Fill(chi2PerClusterITS);
762         }
763         else if(chi2PerClusterITS <= fProtonAnalysisBase->GetMaxChi2PerITSCluster())
764           ((TH1F *)(fQASecondaryAntiProtonsAcceptedList->At(1)))->Fill(chi2PerClusterITS);
765       }//chi2 per ITS cluster
766       if(fProtonAnalysisBase->IsUsedMinTPCClusters()) {
767         if(nClustersTPC < fProtonAnalysisBase->GetMinTPCClusters()) {
768           ((TH1F *)(fQASecondaryAntiProtonsRejectedList->At(2)))->Fill(nClustersTPC);
769         }
770         else if(nClustersTPC >= fProtonAnalysisBase->GetMinTPCClusters()) {
771           ((TH1F *)(fQASecondaryAntiProtonsAcceptedList->At(2)))->Fill(nClustersTPC);
772         }
773       }//TPC clusters
774       if(fProtonAnalysisBase->IsUsedMaxChi2PerTPCCluster()) {
775         if(chi2PerClusterTPC > fProtonAnalysisBase->GetMaxChi2PerTPCCluster()) {
776           ((TH1F *)(fQASecondaryAntiProtonsRejectedList->At(3)))->Fill(chi2PerClusterTPC);
777         }
778         else if(chi2PerClusterTPC <= fProtonAnalysisBase->GetMaxChi2PerTPCCluster())
779           ((TH1F *)(fQASecondaryAntiProtonsAcceptedList->At(3)))->Fill(chi2PerClusterTPC);
780       }//chi2 per TPC cluster
781       if(fProtonAnalysisBase->IsUsedMaxCov11()) {
782         if(extCov[0] > fProtonAnalysisBase->GetMaxCov11()) {
783           ((TH1F *)(fQASecondaryAntiProtonsRejectedList->At(4)))->Fill(extCov[0]);
784         }
785         else if(extCov[0] <= fProtonAnalysisBase->GetMaxCov11())
786           ((TH1F *)(fQASecondaryAntiProtonsAcceptedList->At(4)))->Fill(extCov[0]);
787       }//cov11
788       if(fProtonAnalysisBase->IsUsedMaxCov22()) {
789         if(extCov[2] > fProtonAnalysisBase->GetMaxCov22()) {
790           ((TH1F *)(fQASecondaryAntiProtonsRejectedList->At(5)))->Fill(extCov[2]);
791         }
792         else if(extCov[2] <= fProtonAnalysisBase->GetMaxCov22())
793           ((TH1F *)(fQASecondaryAntiProtonsAcceptedList->At(5)))->Fill(extCov[2]);
794       }//cov11
795       if(fProtonAnalysisBase->IsUsedMaxCov33()) {
796         if(extCov[5] > fProtonAnalysisBase->GetMaxCov33()) {
797           ((TH1F *)(fQASecondaryAntiProtonsRejectedList->At(6)))->Fill(extCov[5]);
798         }
799         else if(extCov[5] <= fProtonAnalysisBase->GetMaxCov33())
800           ((TH1F *)(fQASecondaryAntiProtonsAcceptedList->At(6)))->Fill(extCov[5]);
801       }//cov11
802       if(fProtonAnalysisBase->IsUsedMaxCov44()) {
803         if(extCov[9] > fProtonAnalysisBase->GetMaxCov44()) {
804           ((TH1F *)(fQASecondaryAntiProtonsRejectedList->At(7)))->Fill(extCov[9]);
805         }
806         else if(extCov[9] <= fProtonAnalysisBase->GetMaxCov44())
807           ((TH1F *)(fQASecondaryAntiProtonsAcceptedList->At(7)))->Fill(extCov[9]);
808       }//cov11
809       if(fProtonAnalysisBase->IsUsedMaxCov55()) {
810         if(extCov[14] > fProtonAnalysisBase->GetMaxCov55()) {
811           ((TH1F *)(fQASecondaryAntiProtonsRejectedList->At(8)))->Fill(extCov[14]);
812         }
813         else if(extCov[14] <= fProtonAnalysisBase->GetMaxCov55())
814           ((TH1F *)(fQASecondaryAntiProtonsAcceptedList->At(8)))->Fill(extCov[14]);
815       }//cov55
816       if(fProtonAnalysisBase->IsUsedMaxSigmaToVertex()) {
817         if(fProtonAnalysisBase->GetSigmaToVertex(track) > fProtonAnalysisBase->GetMaxSigmaToVertex()) {
818           ((TH1F *)(fQASecondaryAntiProtonsRejectedList->At(9)))->Fill(fProtonAnalysisBase->GetSigmaToVertex(track));
819         }
820         else if(fProtonAnalysisBase->GetSigmaToVertex(track) <= fProtonAnalysisBase->GetMaxSigmaToVertex())
821           ((TH1F *)(fQASecondaryAntiProtonsAcceptedList->At(9)))->Fill(fProtonAnalysisBase->GetSigmaToVertex(track));
822       }//sigma to vertex
823       if(fProtonAnalysisBase->IsUsedMaxSigmaToVertexTPC()) {
824         if(fProtonAnalysisBase->GetSigmaToVertex(track) > fProtonAnalysisBase->GetMaxSigmaToVertexTPC()) {
825           ((TH1F *)(fQASecondaryAntiProtonsRejectedList->At(10)))->Fill(fProtonAnalysisBase->GetSigmaToVertex(track));
826         }
827         else if(fProtonAnalysisBase->GetSigmaToVertex(track) <= fProtonAnalysisBase->GetMaxSigmaToVertexTPC())
828           ((TH1F *)(fQASecondaryAntiProtonsAcceptedList->At(10)))->Fill(fProtonAnalysisBase->GetSigmaToVertex(track));
829       }//sigma to vertex TPC
830       if(fProtonAnalysisBase->IsUsedMaxDCAXY()) {
831         if(TMath::Abs(dca[0]) > fProtonAnalysisBase->GetMaxDCAXY()) {
832           ((TH1F *)(fQASecondaryAntiProtonsRejectedList->At(11)))->Fill(TMath::Abs(dca[0]));
833         }
834         else if(TMath::Abs(dca[0]) <= fProtonAnalysisBase->GetMaxDCAXY())
835           ((TH1F *)(fQASecondaryAntiProtonsAcceptedList->At(11)))->Fill(TMath::Abs(dca[0]));
836       }//DCA xy global tracking
837       if(fProtonAnalysisBase->IsUsedMaxDCAXYTPC()) {
838         if(TMath::Abs(dca[0]) > fProtonAnalysisBase->GetMaxDCAXYTPC()) {
839           ((TH1F *)(fQASecondaryAntiProtonsRejectedList->At(12)))->Fill(TMath::Abs(dca[0]));
840         }
841         else if(TMath::Abs(dca[0]) <= fProtonAnalysisBase->GetMaxDCAXYTPC())
842           ((TH1F *)(fQASecondaryAntiProtonsAcceptedList->At(12)))->Fill(TMath::Abs(dca[0]));
843       }//DCA xy TPC tracking
844       if(fProtonAnalysisBase->IsUsedMaxDCAZ()) {
845         if(TMath::Abs(dca[1]) > fProtonAnalysisBase->GetMaxDCAZ()) {
846           ((TH1F *)(fQASecondaryAntiProtonsRejectedList->At(13)))->Fill(TMath::Abs(dca[1]));
847         }
848         else if(TMath::Abs(dca[1]) <= fProtonAnalysisBase->GetMaxDCAZ())
849           ((TH1F *)(fQASecondaryAntiProtonsAcceptedList->At(13)))->Fill(TMath::Abs(dca[1]));
850       }//DCA z global tracking
851       if(fProtonAnalysisBase->IsUsedMaxDCAZTPC()) {
852         if(TMath::Abs(dca[1]) > fProtonAnalysisBase->GetMaxDCAZTPC()) {
853           ((TH1F *)(fQASecondaryAntiProtonsRejectedList->At(14)))->Fill(TMath::Abs(dca[1]));
854         }
855         else if(TMath::Abs(dca[1]) <= fProtonAnalysisBase->GetMaxDCAZTPC())
856           ((TH1F *)(fQASecondaryAntiProtonsAcceptedList->At(14)))->Fill(TMath::Abs(dca[1]));
857       }//DCA z TPC tracking
858       if(fProtonAnalysisBase->IsUsedMaxConstrainChi2()) {
859         if(track->GetConstrainedChi2() > 0) {
860           if(TMath::Log(track->GetConstrainedChi2()) > fProtonAnalysisBase->GetMaxConstrainChi2()) {
861             ((TH1F *)(fQASecondaryAntiProtonsRejectedList->At(15)))->Fill(TMath::Log(track->GetConstrainedChi2()));
862           }
863           else if(TMath::Log(track->GetConstrainedChi2()) <= fProtonAnalysisBase->GetMaxConstrainChi2())
864             ((TH1F *)(fQASecondaryAntiProtonsAcceptedList->At(15)))->Fill(TMath::Log(track->GetConstrainedChi2()));
865         }
866       }//constrain chi2 - vertex
867       if(fProtonAnalysisBase->IsUsedITSRefit()) {
868         if ((track->GetStatus() & AliESDtrack::kITSrefit) == 0) {
869           ((TH1F *)(fQASecondaryAntiProtonsRejectedList->At(16)))->Fill(0);
870         }
871         else if((track->GetStatus() & AliESDtrack::kITSrefit) != 0)
872           ((TH1F *)(fQASecondaryAntiProtonsAcceptedList->At(16)))->Fill(0);
873       }//ITS refit
874       if(fProtonAnalysisBase->IsUsedTPCRefit()) {
875         if ((track->GetStatus() & AliESDtrack::kTPCrefit) == 0) {
876           ((TH1F *)(fQASecondaryAntiProtonsRejectedList->At(17)))->Fill(0);
877         }
878         else if((track->GetStatus() & AliESDtrack::kTPCrefit) != 0)
879           ((TH1F *)(fQASecondaryAntiProtonsAcceptedList->At(17)))->Fill(0);
880       }//TPC refit
881       if(fProtonAnalysisBase->IsUsedESDpid()) {
882         if ((track->GetStatus() & AliESDtrack::kESDpid) == 0) {
883           ((TH1F *)(fQASecondaryAntiProtonsRejectedList->At(18)))->Fill(0);
884         }
885         else if((track->GetStatus() & AliESDtrack::kESDpid) != 0)
886           ((TH1F *)(fQASecondaryAntiProtonsAcceptedList->At(18)))->Fill(0);
887       }//ESD pid
888       if(fProtonAnalysisBase->IsUsedTPCpid()) {
889         if ((track->GetStatus() & AliESDtrack::kTPCpid) == 0) {
890           ((TH1F *)(fQASecondaryAntiProtonsRejectedList->At(19)))->Fill(0);
891         }
892         else if((track->GetStatus() & AliESDtrack::kTPCpid) != 0)
893           ((TH1F *)(fQASecondaryAntiProtonsAcceptedList->At(19)))->Fill(0);
894       }//TPC pid
895       if(fProtonAnalysisBase->IsUsedMinTPCdEdxPoints()) {
896         if(track->GetTPCsignalN() < fProtonAnalysisBase->GetMinTPCdEdxPoints()) {
897           ((TH1F *)(fQASecondaryAntiProtonsRejectedList->At(20)))->Fill(track->GetTPCsignalN());
898         }
899         if(track->GetTPCsignalN() >= fProtonAnalysisBase->GetMinTPCdEdxPoints())
900           ((TH1F *)(fQASecondaryAntiProtonsAcceptedList->At(20)))->Fill(track->GetTPCsignalN());
901       }//number of TPC points for the dE/dx
902       if(fProtonAnalysisBase->IsUsedPointOnITSLayer1()) {
903         if(!track->HasPointOnITSLayer(0)) {
904           ((TH1F *)(fQASecondaryAntiProtonsRejectedList->At(21)))->Fill(0);
905         }
906         else if(track->HasPointOnITSLayer(0))
907           ((TH1F *)(fQASecondaryAntiProtonsAcceptedList->At(21)))->Fill(0);
908       }//point on SPD1
909       if(fProtonAnalysisBase->IsUsedPointOnITSLayer2()) {
910         if(!track->HasPointOnITSLayer(1)) {
911           ((TH1F *)(fQASecondaryAntiProtonsRejectedList->At(22)))->Fill(0);
912         }
913         else if(track->HasPointOnITSLayer(1))
914           ((TH1F *)(fQASecondaryAntiProtonsAcceptedList->At(22)))->Fill(0);
915       }//point on SPD2
916       if(fProtonAnalysisBase->IsUsedPointOnITSLayer3()) {
917         if(!track->HasPointOnITSLayer(2)) {
918           ((TH1F *)(fQASecondaryAntiProtonsRejectedList->At(23)))->Fill(0);
919         }
920         else if(track->HasPointOnITSLayer(2))
921           ((TH1F *)(fQASecondaryAntiProtonsAcceptedList->At(23)))->Fill(0);
922       }//point on SDD1
923       if(fProtonAnalysisBase->IsUsedPointOnITSLayer4()) {
924         if(!track->HasPointOnITSLayer(3)) {
925           ((TH1F *)(fQASecondaryAntiProtonsRejectedList->At(24)))->Fill(0);
926         }
927         else if(track->HasPointOnITSLayer(3))
928           ((TH1F *)(fQASecondaryAntiProtonsAcceptedList->At(24)))->Fill(0);
929       }//point on SDD2
930       if(fProtonAnalysisBase->IsUsedPointOnITSLayer5()) {
931         if(!track->HasPointOnITSLayer(4)) {
932           ((TH1F *)(fQASecondaryAntiProtonsRejectedList->At(25)))->Fill(0);
933         }
934         else if(track->HasPointOnITSLayer(4))
935           ((TH1F *)(fQASecondaryAntiProtonsAcceptedList->At(25)))->Fill(0);
936       }//point on SSD1
937       if(fProtonAnalysisBase->IsUsedPointOnITSLayer6()) {
938         if(!track->HasPointOnITSLayer(5)) {
939           ((TH1F *)(fQASecondaryAntiProtonsRejectedList->At(26)))->Fill(0);
940         }
941         else if(track->HasPointOnITSLayer(5))
942           ((TH1F *)(fQASecondaryAntiProtonsAcceptedList->At(26)))->Fill(0);
943       }//point on SSD2
944     }//secondary particle cut
945   }//antiprotons
946 }
947
948 //____________________________________________________________________//
949 void AliProtonQAAnalysis::SetRunQAAnalysis() {
950   //initializes the QA lists
951   //fQAHistograms = kTRUE;
952   fGlobalQAList = new TList();
953
954   fQA2DList = new TList();
955   fQA2DList->SetName("fQA2DList");
956   fGlobalQAList->Add(fQA2DList);
957   
958   fQAPrimaryProtonsAcceptedList = new TList();
959   fQAPrimaryProtonsAcceptedList->SetName("fQAPrimaryProtonsAcceptedList");
960   fGlobalQAList->Add(fQAPrimaryProtonsAcceptedList);
961   
962   fQAPrimaryProtonsRejectedList = new TList();
963   fQAPrimaryProtonsRejectedList->SetName("fQAPrimaryProtonsRejectedList");
964   fGlobalQAList->Add(fQAPrimaryProtonsRejectedList);
965   
966   fQASecondaryProtonsAcceptedList = new TList();
967   fQASecondaryProtonsAcceptedList->SetName("fQASecondaryProtonsAcceptedList");
968   fGlobalQAList->Add(fQASecondaryProtonsAcceptedList);
969   
970   fQASecondaryProtonsRejectedList = new TList();
971   fQASecondaryProtonsRejectedList->SetName("fQASecondaryProtonsRejectedList");
972   fGlobalQAList->Add(fQASecondaryProtonsRejectedList);
973   
974   fQAPrimaryAntiProtonsAcceptedList = new TList();
975   fQAPrimaryAntiProtonsAcceptedList->SetName("fQAPrimaryAntiProtonsAcceptedList");
976   fGlobalQAList->Add(fQAPrimaryAntiProtonsAcceptedList);
977   
978   fQAPrimaryAntiProtonsRejectedList = new TList();
979   fQAPrimaryAntiProtonsRejectedList->SetName("fQAPrimaryAntiProtonsRejectedList");
980   fGlobalQAList->Add(fQAPrimaryAntiProtonsRejectedList);
981   
982   fQASecondaryAntiProtonsAcceptedList = new TList();
983   fQASecondaryAntiProtonsAcceptedList->SetName("fQASecondaryAntiProtonsAcceptedList");
984   fGlobalQAList->Add(fQASecondaryAntiProtonsAcceptedList);
985   
986   fQASecondaryAntiProtonsRejectedList = new TList();
987   fQASecondaryAntiProtonsRejectedList->SetName("fQASecondaryAntiProtonsRejectedList");
988   fGlobalQAList->Add(fQASecondaryAntiProtonsRejectedList);
989 }
990
991 //____________________________________________________________________//
992 void AliProtonQAAnalysis::SetQAYPtBins(Int_t nbinsY, 
993                                        Double_t minY, Double_t maxY,
994                                        Int_t nbinsPt, 
995                                        Double_t minPt, Double_t maxPt) {
996   //Initializes the QA binning
997   fNBinsY = nbinsY;
998   fMinY = minY; fMaxY = maxY;
999   fNBinsPt = nbinsPt;
1000   fMinPt = minPt; fMaxPt = maxPt;
1001   InitQA();
1002   InitCutLists();
1003   InitVertexQA();
1004   if(fRunMCAnalysis) InitMCAnalysis();
1005   if(fRunEfficiencyAnalysis) InitEfficiencyAnalysis();
1006 }
1007
1008 //____________________________________________________________________//
1009 void AliProtonQAAnalysis::InitEfficiencyAnalysis() {
1010   //Initialization of the efficiency list - reconstruction & PID efficiency
1011   //Adding each monitored object in the list
1012   fEfficiencyList = new TList();
1013
1014   //MC primary protons and antiprotons for the reconstruction efficiency
1015   TH2D *gHistMCYPtProtons = new TH2D("gHistMCYPtProtons",
1016                                      ";;P_{T} [GeV/c]",
1017                                      fNBinsY,fMinY,fMaxY,
1018                                      fNBinsPt,fMinPt,fMaxPt);
1019   if(fProtonAnalysisBase->GetEtaMode()) 
1020     gHistMCYPtProtons->GetXaxis()->SetTitle("#eta");
1021   else 
1022     gHistMCYPtProtons->GetXaxis()->SetTitle("y");
1023   gHistMCYPtProtons->SetStats(kTRUE);
1024   gHistMCYPtProtons->GetXaxis()->SetTitleColor(1);
1025   fEfficiencyList->Add(gHistMCYPtProtons);
1026   TH2D *gHistMCYPtAntiProtons = new TH2D("gHistMCYPtAntiProtons",
1027                                          ";y;P_{T} [GeV/c]",
1028                                          fNBinsY,fMinY,fMaxY,
1029                                          fNBinsPt,fMinPt,fMaxPt);
1030   if(fProtonAnalysisBase->GetEtaMode()) 
1031     gHistMCYPtAntiProtons->GetXaxis()->SetTitle("#eta");
1032   else 
1033     gHistMCYPtAntiProtons->GetXaxis()->SetTitle("y");
1034   gHistMCYPtAntiProtons->SetStats(kTRUE);
1035   gHistMCYPtAntiProtons->GetXaxis()->SetTitleColor(1);
1036   fEfficiencyList->Add(gHistMCYPtAntiProtons);
1037
1038   //MC secondary protons and antiprotons that come from weak decay for the reconstruction efficiency
1039   TH2D *gHistMCYPtProtonsFromWeak = new TH2D("gHistMCYPtProtonsFromWeak",
1040                                              ";;P_{T} [GeV/c]",
1041                                              fNBinsY,fMinY,fMaxY,
1042                                              fNBinsPt,fMinPt,fMaxPt);
1043   if(fProtonAnalysisBase->GetEtaMode()) 
1044     gHistMCYPtProtonsFromWeak->GetXaxis()->SetTitle("#eta");
1045   else 
1046     gHistMCYPtProtonsFromWeak->GetXaxis()->SetTitle("y");
1047   gHistMCYPtProtonsFromWeak->SetStats(kTRUE);
1048   gHistMCYPtProtonsFromWeak->GetXaxis()->SetTitleColor(1);
1049   fEfficiencyList->Add(gHistMCYPtProtonsFromWeak);
1050   TH2D *gHistMCYPtAntiProtonsFromWeak = new TH2D("gHistMCYPtAntiProtonsFromWeak",
1051                                                  ";y;P_{T} [GeV/c]",
1052                                                  fNBinsY,fMinY,fMaxY,
1053                                                  fNBinsPt,fMinPt,fMaxPt);
1054   if(fProtonAnalysisBase->GetEtaMode()) 
1055     gHistMCYPtAntiProtonsFromWeak->GetXaxis()->SetTitle("#eta");
1056   else 
1057     gHistMCYPtAntiProtonsFromWeak->GetXaxis()->SetTitle("y");
1058   gHistMCYPtAntiProtonsFromWeak->SetStats(kTRUE);
1059   gHistMCYPtAntiProtonsFromWeak->GetXaxis()->SetTitleColor(1);
1060   fEfficiencyList->Add(gHistMCYPtAntiProtonsFromWeak);
1061
1062   //MC secondary protons and antiprotons that come from hadronic interactions for the reconstruction efficiency
1063   TH2D *gHistMCYPtProtonsFromHadronic = new TH2D("gHistMCYPtProtonsFromHadronic",
1064                                                  ";;P_{T} [GeV/c]",
1065                                                  fNBinsY,fMinY,fMaxY,
1066                                                  fNBinsPt,fMinPt,fMaxPt);
1067   if(fProtonAnalysisBase->GetEtaMode()) 
1068     gHistMCYPtProtonsFromHadronic->GetXaxis()->SetTitle("#eta");
1069   else 
1070     gHistMCYPtProtonsFromHadronic->GetXaxis()->SetTitle("y");
1071   gHistMCYPtProtonsFromHadronic->SetStats(kTRUE);
1072   gHistMCYPtProtonsFromHadronic->GetXaxis()->SetTitleColor(1);
1073   fEfficiencyList->Add(gHistMCYPtProtonsFromHadronic);
1074   TH2D *gHistMCYPtAntiProtonsFromHadronic = new TH2D("gHistMCYPtAntiProtonsFromHadronic",
1075                                                      ";y;P_{T} [GeV/c]",
1076                                                      fNBinsY,fMinY,fMaxY,
1077                                                      fNBinsPt,fMinPt,fMaxPt);
1078   if(fProtonAnalysisBase->GetEtaMode()) 
1079     gHistMCYPtAntiProtonsFromHadronic->GetXaxis()->SetTitle("#eta");
1080   else 
1081     gHistMCYPtAntiProtonsFromHadronic->GetXaxis()->SetTitle("y");
1082   gHistMCYPtAntiProtonsFromHadronic->SetStats(kTRUE);
1083   gHistMCYPtAntiProtonsFromHadronic->GetXaxis()->SetTitleColor(1);
1084   fEfficiencyList->Add(gHistMCYPtAntiProtonsFromHadronic);
1085   
1086   //ESD primary protons and antiprotons for the reconstruction efficiency
1087   TH2D *gHistESDYPtProtons = new TH2D("gHistESDYPtProtons",
1088                                       ";;P_{T} [GeV/c]",
1089                                       fNBinsY,fMinY,fMaxY,
1090                                       fNBinsPt,fMinPt,fMaxPt);
1091   if(fProtonAnalysisBase->GetEtaMode()) 
1092     gHistESDYPtProtons->GetXaxis()->SetTitle("#eta");
1093   else 
1094     gHistESDYPtProtons->GetXaxis()->SetTitle("y");
1095   gHistESDYPtProtons->SetStats(kTRUE);
1096   gHistESDYPtProtons->GetXaxis()->SetTitleColor(1);
1097   fEfficiencyList->Add(gHistESDYPtProtons);
1098   TH2D *gHistESDYPtAntiProtons = new TH2D("gHistESDYPtAntiProtons",
1099                                           ";;P_{T} [GeV/c]",
1100                                           fNBinsY,fMinY,fMaxY,
1101                                           fNBinsPt,fMinPt,fMaxPt);
1102   if(fProtonAnalysisBase->GetEtaMode()) 
1103     gHistESDYPtAntiProtons->GetXaxis()->SetTitle("#eta");
1104   else 
1105     gHistESDYPtAntiProtons->GetXaxis()->SetTitle("y");
1106   gHistESDYPtAntiProtons->SetStats(kTRUE);
1107   gHistESDYPtAntiProtons->GetXaxis()->SetTitleColor(1);
1108   fEfficiencyList->Add(gHistESDYPtAntiProtons);
1109
1110   //ESD (anti)protons from weak decays for the reconstruction efficiency
1111   TH2D *gHistESDYPtProtonsFromWeak = new TH2D("gHistESDYPtProtonsFromWeak",
1112                                               ";;P_{T} [GeV/c]",
1113                                               fNBinsY,fMinY,fMaxY,
1114                                               fNBinsPt,fMinPt,fMaxPt);
1115   if(fProtonAnalysisBase->GetEtaMode()) 
1116     gHistESDYPtProtonsFromWeak->GetXaxis()->SetTitle("#eta");
1117   else 
1118     gHistESDYPtProtonsFromWeak->GetXaxis()->SetTitle("y");
1119   gHistESDYPtProtonsFromWeak->SetStats(kTRUE);
1120   gHistESDYPtProtonsFromWeak->GetXaxis()->SetTitleColor(1);
1121   fEfficiencyList->Add(gHistESDYPtProtonsFromWeak);
1122   TH2D *gHistESDYPtAntiProtonsFromWeak = new TH2D("gHistESDYPtAntiProtonsFromWeak",
1123                                                   ";;P_{T} [GeV/c]",
1124                                                   fNBinsY,fMinY,fMaxY,
1125                                                   fNBinsPt,fMinPt,fMaxPt);
1126   if(fProtonAnalysisBase->GetEtaMode()) 
1127     gHistESDYPtAntiProtonsFromWeak->GetXaxis()->SetTitle("#eta");
1128   else 
1129     gHistESDYPtAntiProtonsFromWeak->GetXaxis()->SetTitle("y");
1130   gHistESDYPtAntiProtonsFromWeak->SetStats(kTRUE);
1131   gHistESDYPtAntiProtonsFromWeak->GetXaxis()->SetTitleColor(1);
1132   fEfficiencyList->Add(gHistESDYPtAntiProtonsFromWeak);
1133
1134   //ESD (anti)protons from hadronic interactions for the reconstruction efficiency
1135   TH2D *gHistESDYPtProtonsFromHadronic = new TH2D("gHistESDYPtProtonsFromHadronic",
1136                                                   ";;P_{T} [GeV/c]",
1137                                                   fNBinsY,fMinY,fMaxY,
1138                                                   fNBinsPt,fMinPt,fMaxPt);
1139   if(fProtonAnalysisBase->GetEtaMode()) 
1140     gHistESDYPtProtonsFromHadronic->GetXaxis()->SetTitle("#eta");
1141   else 
1142     gHistESDYPtProtonsFromHadronic->GetXaxis()->SetTitle("y");
1143   gHistESDYPtProtonsFromHadronic->SetStats(kTRUE);
1144   gHistESDYPtProtonsFromHadronic->GetXaxis()->SetTitleColor(1);
1145   fEfficiencyList->Add(gHistESDYPtProtonsFromHadronic);
1146   TH2D *gHistESDYPtAntiProtonsFromHadronic = new TH2D("gHistESDYPtAntiProtonsFromHadronic",
1147                                                       ";;P_{T} [GeV/c]",
1148                                                       fNBinsY,fMinY,fMaxY,
1149                                                       fNBinsPt,fMinPt,fMaxPt);
1150   if(fProtonAnalysisBase->GetEtaMode()) 
1151     gHistESDYPtAntiProtonsFromHadronic->GetXaxis()->SetTitle("#eta");
1152   else 
1153     gHistESDYPtAntiProtonsFromHadronic->GetXaxis()->SetTitle("y");
1154   gHistESDYPtAntiProtonsFromHadronic->SetStats(kTRUE);
1155   gHistESDYPtAntiProtonsFromHadronic->GetXaxis()->SetTitleColor(1);
1156   fEfficiencyList->Add(gHistESDYPtAntiProtonsFromHadronic);
1157   
1158   
1159   //ESD reconstructed tracks that were initially protons for the PID efficiency
1160   TH3D *gHistESDInitYPtProtons = new TH3D("gHistESDInitYPtProtons",
1161                                           ";;P_{T} [GeV/c];N_{points}",
1162                                           fNBinsY,fMinY,fMaxY,
1163                                           fNBinsPt,fMinPt,fMaxPt,
1164                                           50,0,200);
1165   if(fProtonAnalysisBase->GetEtaMode()) 
1166     gHistESDInitYPtProtons->GetXaxis()->SetTitle("#eta");
1167   else 
1168     gHistESDInitYPtProtons->GetXaxis()->SetTitle("y");
1169   gHistESDInitYPtProtons->SetStats(kTRUE);
1170   gHistESDInitYPtProtons->GetXaxis()->SetTitleColor(1);
1171   fEfficiencyList->Add(gHistESDInitYPtProtons);
1172   
1173   //ESD reconstructed tracks that were initially protons and were identified as protons for the PID efficiency
1174   TH3D *gHistESDIdYPtProtons = new TH3D("gHistESDIdYPtProtons",
1175                                         ";;P_{T} [GeV/c];N_{points}",
1176                                         fNBinsY,fMinY,fMaxY,
1177                                         fNBinsPt,fMinPt,fMaxPt,
1178                                         50,0,200);
1179   if(fProtonAnalysisBase->GetEtaMode()) 
1180     gHistESDIdYPtProtons->GetXaxis()->SetTitle("#eta");
1181   else 
1182     gHistESDIdYPtProtons->GetXaxis()->SetTitle("y");
1183   gHistESDIdYPtProtons->SetStats(kTRUE);
1184   gHistESDIdYPtProtons->GetXaxis()->SetTitleColor(1);
1185   fEfficiencyList->Add(gHistESDIdYPtProtons);
1186  
1187   //ESD reconstructed tracks that were identified as protons for the PID contamination
1188   TH3D *gHistESDRecIdYPtProtons = new TH3D("gHistESDRecIdYPtProtons",
1189                                            ";;P_{T} [GeV/c];N_{points}",
1190                                            fNBinsY,fMinY,fMaxY,
1191                                            fNBinsPt,fMinPt,fMaxPt,
1192                                            50,0,200);
1193   if(fProtonAnalysisBase->GetEtaMode()) 
1194     gHistESDRecIdYPtProtons->GetXaxis()->SetTitle("#eta");
1195   else 
1196     gHistESDRecIdYPtProtons->GetXaxis()->SetTitle("y");
1197   gHistESDRecIdYPtProtons->SetStats(kTRUE);
1198   gHistESDRecIdYPtProtons->GetXaxis()->SetTitleColor(1);
1199   fEfficiencyList->Add(gHistESDRecIdYPtProtons);
1200
1201   //ESD reconstructed tracks that were identified as protons but were initially not protons for the PID contamination
1202   TH3D *gHistESDContamYPtProtons = new TH3D("gHistESDContamYPtProtons",
1203                                             ";;P_{T} [GeV/c];N_{points}",
1204                                             fNBinsY,fMinY,fMaxY,
1205                                             fNBinsPt,fMinPt,fMaxPt,
1206                                             50,0,200);
1207   if(fProtonAnalysisBase->GetEtaMode()) 
1208     gHistESDContamYPtProtons->GetXaxis()->SetTitle("#eta");
1209   else 
1210     gHistESDContamYPtProtons->GetXaxis()->SetTitle("y");
1211   gHistESDContamYPtProtons->SetStats(kTRUE);
1212   gHistESDContamYPtProtons->GetXaxis()->SetTitleColor(1);
1213   fEfficiencyList->Add(gHistESDContamYPtProtons);
1214 }
1215
1216 //____________________________________________________________________//
1217 void AliProtonQAAnalysis::InitCutLists() {
1218   //Initialization of the cut lists
1219   //Adding each monitored object in each list
1220
1221   //Accepted cut list
1222   fAcceptedCutList = new TList();
1223   TH1F *gPrimaryProtonsClustersOnITSLayers = new TH1F("gPrimaryProtonsClustersOnITSLayers",";ITS Layer;Entries",6,0.5,6.5);
1224   fAcceptedCutList->Add(gPrimaryProtonsClustersOnITSLayers);
1225   TH1F *gPrimaryAntiProtonsClustersOnITSLayers = new TH1F("gPrimaryAntiProtonsClustersOnITSLayers",";ITS Layer;Entries",6,0.5,6.5);
1226   fAcceptedCutList->Add(gPrimaryAntiProtonsClustersOnITSLayers);
1227   TH1F *gSecondaryProtonsClustersOnITSLayers = new TH1F("gSecondaryProtonsClustersOnITSLayers",";ITS Layer;Entries",6,0.5,6.5);
1228   fAcceptedCutList->Add(gSecondaryProtonsClustersOnITSLayers);
1229   TH1F *gSecondaryAntiProtonsClustersOnITSLayers = new TH1F("gSecondaryAntiProtonsClustersOnITSLayers",";ITS Layer;Entries",6,0.5,6.5);
1230   fAcceptedCutList->Add(gSecondaryAntiProtonsClustersOnITSLayers);
1231
1232   TH1F *gPrimaryProtonsNClustersITS = new TH1F("gPrimaryProtonsNClustersITS",";ITS Layer;Entries",6,0.5,6.5);
1233   fAcceptedCutList->Add(gPrimaryProtonsNClustersITS);
1234   TH1F *gPrimaryAntiProtonsNClustersITS = new TH1F("gPrimaryAntiProtonsNClustersITS",";ITS Layer;Entries",6,0.5,6.5);
1235   fAcceptedCutList->Add(gPrimaryAntiProtonsNClustersITS);
1236   TH1F *gSecondaryProtonsNClustersITS = new TH1F("gSecondaryProtonsNClustersITS",";ITS Layer;Entries",6,0.5,6.5);
1237   fAcceptedCutList->Add(gSecondaryProtonsNClustersITS);
1238   TH1F *gSecondaryAntiProtonsNClustersITS = new TH1F("gSecondaryAntiProtonsNClustersITS",";ITS Layer;Entries",6,0.5,6.5);
1239   fAcceptedCutList->Add(gSecondaryAntiProtonsNClustersITS);
1240
1241   TH1F *gPrimaryProtonsChi2PerClusterITS = new TH1F("gPrimaryProtonsChi2PerClusterITS",
1242                                                     ";x^{2}/N_{clusters} (ITS);Entries",
1243                                                     100,0,20);
1244   fAcceptedCutList->Add(gPrimaryProtonsChi2PerClusterITS);
1245   TH1F *gPrimaryAntiProtonsChi2PerClusterITS = new TH1F("gPrimaryAntiProtonsChi2PerClusterITS",
1246                                                         ";x^{2}/N_{clusters} (ITS);Entries",
1247                                                         100,0,20);
1248   fAcceptedCutList->Add(gPrimaryAntiProtonsChi2PerClusterITS);
1249   TH1F *gSecondaryProtonsChi2PerClusterITS = new TH1F("gSecondaryProtonsChi2PerClusterITS",
1250                                                       ";x^{2}/N_{clusters} (ITS);Entries",
1251                                                       100,0,20);
1252   fAcceptedCutList->Add(gSecondaryProtonsChi2PerClusterITS);
1253   TH1F *gSecondaryAntiProtonsChi2PerClusterITS = new TH1F("gSecondaryAntiProtonsChi2PerClusterITS",
1254                                                           ";x^{2}/N_{clusters} (ITS);Entries",
1255                                                           100,0,20);
1256   fAcceptedCutList->Add(gSecondaryAntiProtonsChi2PerClusterITS);
1257
1258   TH1F *gPrimaryProtonsConstrainChi2 = new TH1F("gPrimaryProtonsConstrainChi2",
1259                                                 ";Log_{10}(#chi^{2});Entries",
1260                                                 100,-10,10);
1261   fAcceptedCutList->Add(gPrimaryProtonsConstrainChi2);
1262   TH1F *gPrimaryAntiProtonsConstrainChi2 = new TH1F("gPrimaryAntiProtonsConstrainChi2",
1263                                                     ";Log_{10}(#chi^{2});Entries",
1264                                                     100,-10,10);
1265   fAcceptedCutList->Add(gPrimaryAntiProtonsConstrainChi2);
1266   TH1F *gSecondaryProtonsConstrainChi2 = new TH1F("gSecondaryProtonsConstrainChi2",
1267                                                   ";Log_{10}(#chi^{2});Entries",
1268                                                   100,-10,10);
1269   fAcceptedCutList->Add(gSecondaryProtonsConstrainChi2);
1270   TH1F *gSecondaryAntiProtonsConstrainChi2 = new TH1F("gSecondaryAntiProtonsConstrainChi2",
1271                                                       ";Log_{10}(#chi^{2});Entries",
1272                                                       100,-10,10);
1273   fAcceptedCutList->Add(gSecondaryAntiProtonsConstrainChi2);
1274
1275   TH1F *gPrimaryProtonsTPCClusters = new TH1F("gPrimaryProtonsTPCClusters",
1276                                               ";N_{clusters} (TPC);Entries",
1277                                               100,0,200);
1278   fAcceptedCutList->Add(gPrimaryProtonsTPCClusters);
1279   TH1F *gPrimaryAntiProtonsTPCClusters = new TH1F("gPrimaryAntiProtonsTPCClusters",
1280                                                   ";N_{clusters} (TPC);Entries",
1281                                                   100,0,200);
1282   fAcceptedCutList->Add(gPrimaryAntiProtonsTPCClusters);
1283   TH1F *gSecondaryProtonsTPCClusters = new TH1F("gSecondaryProtonsTPCClusters",
1284                                                 ";N_{clusters} (TPC);Entries",
1285                                                 100,0,200);
1286   fAcceptedCutList->Add(gSecondaryProtonsTPCClusters);
1287   TH1F *gSecondaryAntiProtonsTPCClusters = new TH1F("gSecondaryAntiProtonsTPCClusters",
1288                                                     ";N_{clusters} (TPC);Entries",
1289                                                     100,0,200);
1290   fAcceptedCutList->Add(gSecondaryAntiProtonsTPCClusters);
1291
1292   TH1F *gPrimaryProtonsChi2PerClusterTPC = new TH1F("gPrimaryProtonsChi2PerClusterTPC",
1293                                                     ";x^{2}/N_{clusters} (TPC);Entries",
1294                                                     100,0,4);
1295   fAcceptedCutList->Add(gPrimaryProtonsChi2PerClusterTPC);
1296   TH1F *gPrimaryAntiProtonsChi2PerClusterTPC = new TH1F("gPrimaryAntiProtonsChi2PerClusterTPC",
1297                                                         ";x^{2}/N_{clusters} (TPC);Entries",
1298                                                         100,0,4);
1299   fAcceptedCutList->Add(gPrimaryAntiProtonsChi2PerClusterTPC);
1300   TH1F *gSecondaryProtonsChi2PerClusterTPC = new TH1F("gSecondaryProtonsChi2PerClusterTPC",
1301                                                       ";x^{2}/N_{clusters} (TPC);Entries",
1302                                                       100,0,4);
1303   fAcceptedCutList->Add(gSecondaryProtonsChi2PerClusterTPC);
1304   TH1F *gSecondaryAntiProtonsChi2PerClusterTPC = new TH1F("gSecondaryAntiProtonsChi2PerClusterTPC",
1305                                                           ";x^{2}/N_{clusters} (TPC);Entries",
1306                                                           100,0,4);
1307   fAcceptedCutList->Add(gSecondaryAntiProtonsChi2PerClusterTPC);
1308
1309   TH1F *gPrimaryProtonsExtCov11 = new TH1F("gPrimaryProtonsExtCov11",
1310                                            ";#sigma_{y} [cm];Entries",
1311                                            100,0,4);
1312   fAcceptedCutList->Add(gPrimaryProtonsExtCov11);
1313   TH1F *gPrimaryAntiProtonsExtCov11 = new TH1F("gPrimaryAntiProtonsExtCov11",
1314                                                ";#sigma_{y} [cm];Entries",
1315                                                100,0,4);
1316   fAcceptedCutList->Add(gPrimaryAntiProtonsExtCov11);
1317   TH1F *gSecondaryProtonsExtCov11 = new TH1F("gSecondaryProtonsExtCov11",
1318                                              ";#sigma_{y} [cm];Entries",
1319                                              100,0,4);
1320   fAcceptedCutList->Add(gSecondaryProtonsExtCov11);
1321   TH1F *gSecondaryAntiProtonsExtCov11 = new TH1F("gSecondaryAntiProtonsExtCov11",
1322                                                  ";#sigma_{y} [cm];Entries",
1323                                                  100,0,4);
1324   fAcceptedCutList->Add(gSecondaryAntiProtonsExtCov11);
1325
1326
1327   TH1F *gPrimaryProtonsExtCov22 = new TH1F("gPrimaryProtonsExtCov22",
1328                                            ";#sigma_{z} [cm];Entries",
1329                                            100,0,4);
1330   fAcceptedCutList->Add(gPrimaryProtonsExtCov22);
1331   TH1F *gPrimaryAntiProtonsExtCov22 = new TH1F("gPrimaryAntiProtonsExtCov22",
1332                                                ";#sigma_{z} [cm];Entries",
1333                                                100,0,4);
1334   fAcceptedCutList->Add(gPrimaryAntiProtonsExtCov22);
1335   TH1F *gSecondaryProtonsExtCov22 = new TH1F("gSecondaryProtonsExtCov22",
1336                                              ";#sigma_{z} [cm];Entries",
1337                                              100,0,4);
1338   fAcceptedCutList->Add(gSecondaryProtonsExtCov22);
1339   TH1F *gSecondaryAntiProtonsExtCov22 = new TH1F("gSecondaryAntiProtonsExtCov22",
1340                                                  ";#sigma_{z} [cm];Entries",
1341                                                  100,0,4);
1342   fAcceptedCutList->Add(gSecondaryAntiProtonsExtCov22);
1343
1344
1345   TH1F *gPrimaryProtonsExtCov33 = new TH1F("gPrimaryProtonsExtCov33",
1346                                            ";#sigma_{sin(#phi)};Entries",
1347                                            100,0,4);
1348   fAcceptedCutList->Add(gPrimaryProtonsExtCov33);
1349   TH1F *gPrimaryAntiProtonsExtCov33 = new TH1F("gPrimaryAntiProtonsExtCov33",
1350                                                ";#sigma_{sin(#phi)};Entries",
1351                                                100,0,4);
1352   fAcceptedCutList->Add(gPrimaryAntiProtonsExtCov33);
1353   TH1F *gSecondaryProtonsExtCov33 = new TH1F("gSecondaryProtonsExtCov33",
1354                                              ";#sigma_{sin(#phi)};Entries",
1355                                              100,0,4);
1356   fAcceptedCutList->Add(gSecondaryProtonsExtCov33);
1357   TH1F *gSecondaryAntiProtonsExtCov33 = new TH1F("gSecondaryAntiProtonsExtCov33",
1358                                                  ";#sigma_{sin(#phi)};Entries",
1359                                                  100,0,4);
1360   fAcceptedCutList->Add(gSecondaryAntiProtonsExtCov33);
1361
1362
1363   TH1F *gPrimaryProtonsExtCov44 = new TH1F("gPrimaryProtonsExtCov44",
1364                                            ";#sigma_{tan(#lambda)};Entries",
1365                                            100,0,4);
1366   fAcceptedCutList->Add(gPrimaryProtonsExtCov44);
1367   TH1F *gPrimaryAntiProtonsExtCov44 = new TH1F("gPrimaryAntiProtonsExtCov44",
1368                                                ";#sigma_{tan(#lambda)};Entries",
1369                                                100,0,4);
1370   fAcceptedCutList->Add(gPrimaryAntiProtonsExtCov44);
1371   TH1F *gSecondaryProtonsExtCov44 = new TH1F("gSecondaryProtonsExtCov44",
1372                                              ";#sigma_{tan(#lambda)};Entries",
1373                                              100,0,4);
1374   fAcceptedCutList->Add(gSecondaryProtonsExtCov44);
1375   TH1F *gSecondaryAntiProtonsExtCov44 = new TH1F("gSecondaryAntiProtonsExtCov44",
1376                                                  ";#sigma_{tan(#lambda)};Entries",
1377                                                  100,0,4);
1378   fAcceptedCutList->Add(gSecondaryAntiProtonsExtCov44);
1379
1380
1381   TH1F *gPrimaryProtonsExtCov55 = new TH1F("gPrimaryProtonsExtCov55",
1382                                            ";#sigma_{1/P_{T}} [GeV/c]^{-1};Entries",
1383                                            100,0,4);
1384   fAcceptedCutList->Add(gPrimaryProtonsExtCov55);
1385   TH1F *gPrimaryAntiProtonsExtCov55 = new TH1F("gPrimaryAntiProtonsExtCov55",
1386                                                ";#sigma_{1/P_{T}} [GeV/c]^{-1};Entries",
1387                                                100,0,4);
1388   fAcceptedCutList->Add(gPrimaryAntiProtonsExtCov55);
1389   TH1F *gSecondaryProtonsExtCov55 = new TH1F("gSecondaryProtonsExtCov55",
1390                                              ";#sigma_{1/P_{T}} [GeV/c]^{-1};Entries",
1391                                              100,0,4);
1392   fAcceptedCutList->Add(gSecondaryProtonsExtCov55);
1393   TH1F *gSecondaryAntiProtonsExtCov55 = new TH1F("gSecondaryAntiProtonsExtCov55",
1394                                                  ";#sigma_{1/P_{T}} [GeV/c]^{-1};Entries",
1395                                                  100,0,4);
1396   fAcceptedCutList->Add(gSecondaryAntiProtonsExtCov55);
1397   //eta-phi-Nclusters
1398   TH3D *gHistEtaPhiNClustersPrimaryProtonsPass = new TH3D("gHistEtaPhiNClustersPrimaryProtonsPass",
1399                                                           "Accepted primary protons;#eta;#phi;N_{clusters}(TPC)",
1400                                                           fNBinsY,fMinY,fMaxY,
1401                                                           100,0,360,
1402                                                           100,0,200);
1403   gHistEtaPhiNClustersPrimaryProtonsPass->SetStats(kTRUE);
1404   gHistEtaPhiNClustersPrimaryProtonsPass->GetXaxis()->SetTitleColor(1);
1405   fAcceptedCutList->Add(gHistEtaPhiNClustersPrimaryProtonsPass);//eta-phi of primary accepted ESD protons
1406   TH3D *gHistEtaPhiNClustersPrimaryAntiProtonsPass = new TH3D("gHistEtaPhiNClustersPrimaryAntiProtonsPass",
1407                                                               "Accepted primary antiprotons;#eta;#phi;N_{clusters}(TPC)",
1408                                                               fNBinsY,fMinY,fMaxY,
1409                                                               100,0,360,
1410                                                               100,0,200);
1411   gHistEtaPhiNClustersPrimaryAntiProtonsPass->SetStats(kTRUE);
1412   gHistEtaPhiNClustersPrimaryAntiProtonsPass->GetXaxis()->SetTitleColor(1);
1413   fAcceptedCutList->Add(gHistEtaPhiNClustersPrimaryAntiProtonsPass);//eta-phi of primary accepted ESD antiprotons
1414   TH3D *gHistEtaPhiNClustersSecondaryProtonsPass = new TH3D("gHistEtaPhiNClustersSecondaryProtonsPass",
1415                                                             "Accepted secondary protons;#eta;#phi;N_{clusters}(TPC)",
1416                                                             fNBinsY,fMinY,fMaxY,
1417                                                             100,0,360,
1418                                                             100,0,200);
1419   gHistEtaPhiNClustersSecondaryProtonsPass->SetStats(kTRUE);
1420   gHistEtaPhiNClustersSecondaryProtonsPass->GetXaxis()->SetTitleColor(1);
1421   fAcceptedCutList->Add(gHistEtaPhiNClustersSecondaryProtonsPass);//eta-phi of secondary accepted ESD protons
1422   TH3D *gHistEtaPhiNClustersSecondaryAntiProtonsPass = new TH3D("gHistEtaPhiNClustersSecondaryAntiProtonsPass",
1423                                                                 "Accepted secondary antiprotons;#eta;#phi;N_{clusters}(TPC)",
1424                                                                 fNBinsY,fMinY,fMaxY,
1425                                                                 100,0,360,
1426                                                                 100,0,200);
1427   gHistEtaPhiNClustersSecondaryAntiProtonsPass->SetStats(kTRUE);
1428   gHistEtaPhiNClustersSecondaryAntiProtonsPass->GetXaxis()->SetTitleColor(1);
1429   fAcceptedCutList->Add(gHistEtaPhiNClustersSecondaryAntiProtonsPass);//eta-phi of secondary accepted ESD antiprotons
1430   //eta-phi-chi^2 per TPC cluster
1431   TH3D *gHistEtaPhiChi2PerTPCClusterPrimaryProtonsPass = new TH3D("gHistEtaPhiChi2PerTPCClusterPrimaryProtonsPass",
1432                                                                   "Accepted primary protons;#eta;#phi;#chi^{2}/N_{clusters}(TPC)",
1433                                                                   fNBinsY,fMinY,fMaxY,
1434                                                                   100,0,360,
1435                                                                   100,0,4);
1436   gHistEtaPhiChi2PerTPCClusterPrimaryProtonsPass->SetStats(kTRUE);
1437   gHistEtaPhiChi2PerTPCClusterPrimaryProtonsPass->GetXaxis()->SetTitleColor(1);
1438   fAcceptedCutList->Add(gHistEtaPhiChi2PerTPCClusterPrimaryProtonsPass);//eta-phi of primary accepted ESD protons
1439   TH3D *gHistEtaPhiChi2PerTPCClusterPrimaryAntiProtonsPass = new TH3D("gHistEtaPhiChi2PerTPCClusterPrimaryAntiProtonsPass",
1440                                                                       "Accepted primary antiprotons;#eta;#phi;#chi^{2}/N_{clusters}(TPC)",
1441                                                                       fNBinsY,fMinY,fMaxY,
1442                                                                       100,0,360,
1443                                                                       100,0,4);
1444   gHistEtaPhiChi2PerTPCClusterPrimaryAntiProtonsPass->SetStats(kTRUE);
1445   gHistEtaPhiChi2PerTPCClusterPrimaryAntiProtonsPass->GetXaxis()->SetTitleColor(1);
1446   fAcceptedCutList->Add(gHistEtaPhiChi2PerTPCClusterPrimaryAntiProtonsPass);//eta-phi of primary accepted ESD antiprotons
1447   TH3D *gHistEtaPhiChi2PerTPCClusterSecondaryProtonsPass = new TH3D("gHistEtaPhiChi2PerTPCClusterSecondaryProtonsPass",
1448                                                                     "Accepted secondary protons;#eta;#phi;#chi^{2}/N_{clusters}(TPC)",
1449                                                                     fNBinsY,fMinY,fMaxY,
1450                                                                     100,0,360,
1451                                                                     100,0,4);
1452   gHistEtaPhiChi2PerTPCClusterSecondaryProtonsPass->SetStats(kTRUE);
1453   gHistEtaPhiChi2PerTPCClusterSecondaryProtonsPass->GetXaxis()->SetTitleColor(1);
1454   fAcceptedCutList->Add(gHistEtaPhiChi2PerTPCClusterSecondaryProtonsPass);//eta-phi of secondary accepted ESD protons
1455   TH3D *gHistEtaPhiChi2PerTPCClusterSecondaryAntiProtonsPass = new TH3D("gHistEtaPhiChi2PerTPCClusterSecondaryAntiProtonsPass",
1456                                                                         "Accepted secondary antiprotons;#eta;#phi;#chi^{2}/N_{clusters}(TPC)",
1457                                                                         fNBinsY,fMinY,fMaxY,
1458                                                                         100,0,360,
1459                                                                         100,0,4);
1460   gHistEtaPhiChi2PerTPCClusterSecondaryAntiProtonsPass->SetStats(kTRUE);
1461   gHistEtaPhiChi2PerTPCClusterSecondaryAntiProtonsPass->GetXaxis()->SetTitleColor(1);
1462   fAcceptedCutList->Add(gHistEtaPhiChi2PerTPCClusterSecondaryAntiProtonsPass);//eta-phi of secondary accepted ESD antiprotons
1463   //eta-phi-number of TPC points for the dE/dx
1464   TH3D *gHistEtaPhiTPCdEdxNPointsPrimaryProtonsPass = new TH3D("gHistEtaPhiTPCdEdxNPointsPrimaryProtonsPass",
1465                                                                   "Accepted primary protons;#eta;#phi;N_{points}(TPC)",
1466                                                                   fNBinsY,fMinY,fMaxY,
1467                                                                   100,0,360,
1468                                                                   100,0,200);
1469   gHistEtaPhiTPCdEdxNPointsPrimaryProtonsPass->SetStats(kTRUE);
1470   gHistEtaPhiTPCdEdxNPointsPrimaryProtonsPass->GetXaxis()->SetTitleColor(1);
1471   fAcceptedCutList->Add(gHistEtaPhiTPCdEdxNPointsPrimaryProtonsPass);//eta-phi of primary accepted ESD protons
1472   TH3D *gHistEtaPhiTPCdEdxNPointsPrimaryAntiProtonsPass = new TH3D("gHistEtaPhiTPCdEdxNPointsPrimaryAntiProtonsPass",
1473                                                                       "Accepted primary antiprotons;#eta;#phi;N_{points}(TPC)",
1474                                                                       fNBinsY,fMinY,fMaxY,
1475                                                                       100,0,360,
1476                                                                       100,0,200);
1477   gHistEtaPhiTPCdEdxNPointsPrimaryAntiProtonsPass->SetStats(kTRUE);
1478   gHistEtaPhiTPCdEdxNPointsPrimaryAntiProtonsPass->GetXaxis()->SetTitleColor(1);
1479   fAcceptedCutList->Add(gHistEtaPhiTPCdEdxNPointsPrimaryAntiProtonsPass);//eta-phi of primary accepted ESD antiprotons
1480   TH3D *gHistEtaPhiTPCdEdxNPointsSecondaryProtonsPass = new TH3D("gHistEtaPhiTPCdEdxNPointsSecondaryProtonsPass",
1481                                                                     "Accepted secondary protons;#eta;#phi;N_{points}(TPC)",
1482                                                                     fNBinsY,fMinY,fMaxY,
1483                                                                     100,0,360,
1484                                                                     100,0,200);
1485   gHistEtaPhiTPCdEdxNPointsSecondaryProtonsPass->SetStats(kTRUE);
1486   gHistEtaPhiTPCdEdxNPointsSecondaryProtonsPass->GetXaxis()->SetTitleColor(1);
1487   fAcceptedCutList->Add(gHistEtaPhiTPCdEdxNPointsSecondaryProtonsPass);//eta-phi of secondary accepted ESD protons
1488   TH3D *gHistEtaPhiTPCdEdxNPointsSecondaryAntiProtonsPass = new TH3D("gHistEtaPhiTPCdEdxNPointsSecondaryAntiProtonsPass",
1489                                                                         "Accepted secondary antiprotons;#eta;#phi;N_{points}(TPC)",
1490                                                                         fNBinsY,fMinY,fMaxY,
1491                                                                         100,0,360,
1492                                                                         100,0,200);
1493   gHistEtaPhiTPCdEdxNPointsSecondaryAntiProtonsPass->SetStats(kTRUE);
1494   gHistEtaPhiTPCdEdxNPointsSecondaryAntiProtonsPass->GetXaxis()->SetTitleColor(1);
1495   fAcceptedCutList->Add(gHistEtaPhiTPCdEdxNPointsSecondaryAntiProtonsPass);//eta-phi of secondary accepted ESD antiprotons
1496
1497   TH1F *gPrimaryProtonsNPointsTPCdEdx = new TH1F("gPrimaryProtonsNPointsTPCdEdx",
1498                                               ";N_{points} (TPC-dE/dx);Entries",
1499                                               100,0,200);
1500   fAcceptedCutList->Add(gPrimaryProtonsNPointsTPCdEdx);
1501   TH1F *gPrimaryAntiProtonsNPointsTPCdEdx = new TH1F("gPrimaryAntiProtonsNPointsTPCdEdx",
1502                                                   ";N_{points} (TPC-dE/dx);Entries",
1503                                                   100,0,200);
1504   fAcceptedCutList->Add(gPrimaryAntiProtonsNPointsTPCdEdx);
1505   TH1F *gSecondaryProtonsNPointsTPCdEdx = new TH1F("gSecondaryProtonsNPointsTPCdEdx",
1506                                                 ";N_{points} (TPC-dE/dx);Entries",
1507                                                 100,0,200);
1508   fAcceptedCutList->Add(gSecondaryProtonsNPointsTPCdEdx);
1509   TH1F *gSecondaryAntiProtonsNPointsTPCdEdx = new TH1F("gSecondaryAntiProtonsNPointsTPCdEdx",
1510                                                     ";N_{points} (TPC-dE/dx);Entries",
1511                                                     100,0,200);
1512   fAcceptedCutList->Add(gSecondaryAntiProtonsNPointsTPCdEdx);
1513   
1514   //Rejected cut list
1515   fRejectedCutList = new TList();
1516   //eta-phi-Nclusters
1517   TH3D *gHistEtaPhiNClustersPrimaryProtonsReject = new TH3D("gHistEtaPhiNClustersPrimaryProtonsReject",
1518                                                           "Rejected primary protons;#eta;#phi;N_{clusters}(TPC)",
1519                                                           fNBinsY,fMinY,fMaxY,
1520                                                           100,0,360,
1521                                                           100,0,200);
1522   gHistEtaPhiNClustersPrimaryProtonsReject->SetStats(kTRUE);
1523   gHistEtaPhiNClustersPrimaryProtonsReject->GetXaxis()->SetTitleColor(1);
1524   fRejectedCutList->Add(gHistEtaPhiNClustersPrimaryProtonsReject);//eta-phi of primary rejected ESD protons
1525   TH3D *gHistEtaPhiNClustersPrimaryAntiProtonsReject = new TH3D("gHistEtaPhiNClustersPrimaryAntiProtonsReject",
1526                                                               "Rejected primary antiprotons;#eta;#phi;N_{clusters}(TPC)",
1527                                                               fNBinsY,fMinY,fMaxY,
1528                                                               100,0,360,
1529                                                               100,0,200);
1530   gHistEtaPhiNClustersPrimaryAntiProtonsReject->SetStats(kTRUE);
1531   gHistEtaPhiNClustersPrimaryAntiProtonsReject->GetXaxis()->SetTitleColor(1);
1532   fRejectedCutList->Add(gHistEtaPhiNClustersPrimaryAntiProtonsReject);//eta-phi of primary rejected ESD antiprotons
1533   TH3D *gHistEtaPhiNClustersSecondaryProtonsReject = new TH3D("gHistEtaPhiNClustersSecondaryProtonsReject",
1534                                                             "Rejected secondary protons;#eta;#phi;N_{clusters}(TPC)",
1535                                                             fNBinsY,fMinY,fMaxY,
1536                                                             100,0,360,
1537                                                             100,0,200);
1538   gHistEtaPhiNClustersSecondaryProtonsReject->SetStats(kTRUE);
1539   gHistEtaPhiNClustersSecondaryProtonsReject->GetXaxis()->SetTitleColor(1);
1540   fRejectedCutList->Add(gHistEtaPhiNClustersSecondaryProtonsReject);//eta-phi of secondary rejected ESD protons
1541   TH3D *gHistEtaPhiNClustersSecondaryAntiProtonsReject = new TH3D("gHistEtaPhiNClustersSecondaryAntiProtonsReject",
1542                                                                 "Rejected secondary antiprotons;#eta;#phi;N_{clusters}(TPC)",
1543                                                                 fNBinsY,fMinY,fMaxY,
1544                                                                 100,0,360,
1545                                                                 100,0,200);
1546   gHistEtaPhiNClustersSecondaryAntiProtonsReject->SetStats(kTRUE);
1547   gHistEtaPhiNClustersSecondaryAntiProtonsReject->GetXaxis()->SetTitleColor(1);
1548   fRejectedCutList->Add(gHistEtaPhiNClustersSecondaryAntiProtonsReject);//eta-phi of secondary rejected ESD antiprotons
1549   //eta-phi-chi^2 per TPC cluster
1550   TH3D *gHistEtaPhiChi2PerTPCClusterPrimaryProtonsReject = new TH3D("gHistEtaPhiChi2PerTPCClusterPrimaryProtonsReject",
1551                                                                   "Rejected primary protons;#eta;#phi;#chi^{2}/N_{clusters}(TPC)",
1552                                                                   fNBinsY,fMinY,fMaxY,
1553                                                                   100,0,360,
1554                                                                   100,0,4);
1555   gHistEtaPhiChi2PerTPCClusterPrimaryProtonsReject->SetStats(kTRUE);
1556   gHistEtaPhiChi2PerTPCClusterPrimaryProtonsReject->GetXaxis()->SetTitleColor(1);
1557   fRejectedCutList->Add(gHistEtaPhiChi2PerTPCClusterPrimaryProtonsReject);//eta-phi of primary rejected ESD protons
1558   TH3D *gHistEtaPhiChi2PerTPCClusterPrimaryAntiProtonsReject = new TH3D("gHistEtaPhiChi2PerTPCClusterPrimaryAntiProtonsReject",
1559                                                                       "Rejected primary antiprotons;#eta;#phi;#chi^{2}/N_{clusters}(TPC)",
1560                                                                       fNBinsY,fMinY,fMaxY,
1561                                                                       100,0,360,
1562                                                                       100,0,4);
1563   gHistEtaPhiChi2PerTPCClusterPrimaryAntiProtonsReject->SetStats(kTRUE);
1564   gHistEtaPhiChi2PerTPCClusterPrimaryAntiProtonsReject->GetXaxis()->SetTitleColor(1);
1565   fRejectedCutList->Add(gHistEtaPhiChi2PerTPCClusterPrimaryAntiProtonsReject);//eta-phi of primary rejected ESD antiprotons
1566   TH3D *gHistEtaPhiChi2PerTPCClusterSecondaryProtonsReject = new TH3D("gHistEtaPhiChi2PerTPCClusterSecondaryProtonsReject",
1567                                                                     "Rejected secondary protons;#eta;#phi;#chi^{2}/N_{clusters}(TPC)",
1568                                                                     fNBinsY,fMinY,fMaxY,
1569                                                                     100,0,360,
1570                                                                     100,0,4);
1571   gHistEtaPhiChi2PerTPCClusterSecondaryProtonsReject->SetStats(kTRUE);
1572   gHistEtaPhiChi2PerTPCClusterSecondaryProtonsReject->GetXaxis()->SetTitleColor(1);
1573   fRejectedCutList->Add(gHistEtaPhiChi2PerTPCClusterSecondaryProtonsReject);//eta-phi of secondary rejected ESD protons
1574   TH3D *gHistEtaPhiChi2PerTPCClusterSecondaryAntiProtonsReject = new TH3D("gHistEtaPhiChi2PerTPCClusterSecondaryAntiProtonsReject",
1575                                                                         "Rejected secondary antiprotons;#eta;#phi;#chi^{2}/N_{clusters}(TPC)",
1576                                                                         fNBinsY,fMinY,fMaxY,
1577                                                                         100,0,360,
1578                                                                         100,0,4);
1579   gHistEtaPhiChi2PerTPCClusterSecondaryAntiProtonsReject->SetStats(kTRUE);
1580   gHistEtaPhiChi2PerTPCClusterSecondaryAntiProtonsReject->GetXaxis()->SetTitleColor(1);
1581   fRejectedCutList->Add(gHistEtaPhiChi2PerTPCClusterSecondaryAntiProtonsReject);//eta-phi of secondary rejected ESD antiprotons
1582   //eta-phi-number of TPC points for the dE/dx
1583   TH3D *gHistEtaPhiTPCdEdxNPointsPrimaryProtonsReject = new TH3D("gHistEtaPhiTPCdEdxNPointsPrimaryProtonsReject",
1584                                                                   "Rejected primary protons;#eta;#phi;N_{points}(TPC)",
1585                                                                   fNBinsY,fMinY,fMaxY,
1586                                                                   100,0,360,
1587                                                                   100,0,200);
1588   gHistEtaPhiTPCdEdxNPointsPrimaryProtonsReject->SetStats(kTRUE);
1589   gHistEtaPhiTPCdEdxNPointsPrimaryProtonsReject->GetXaxis()->SetTitleColor(1);
1590   fRejectedCutList->Add(gHistEtaPhiTPCdEdxNPointsPrimaryProtonsReject);//eta-phi of primary rejected ESD protons
1591   TH3D *gHistEtaPhiTPCdEdxNPointsPrimaryAntiProtonsReject = new TH3D("gHistEtaPhiTPCdEdxNPointsPrimaryAntiProtonsReject",
1592                                                                       "Rejected primary antiprotons;#eta;#phi;N_{points}(TPC)",
1593                                                                       fNBinsY,fMinY,fMaxY,
1594                                                                       100,0,360,
1595                                                                       100,0,200);
1596   gHistEtaPhiTPCdEdxNPointsPrimaryAntiProtonsReject->SetStats(kTRUE);
1597   gHistEtaPhiTPCdEdxNPointsPrimaryAntiProtonsReject->GetXaxis()->SetTitleColor(1);
1598   fRejectedCutList->Add(gHistEtaPhiTPCdEdxNPointsPrimaryAntiProtonsReject);//eta-phi of primary rejected ESD antiprotons
1599   TH3D *gHistEtaPhiTPCdEdxNPointsSecondaryProtonsReject = new TH3D("gHistEtaPhiTPCdEdxNPointsSecondaryProtonsReject",
1600                                                                     "Rejected secondary protons;#eta;#phi;N_{points}(TPC)",
1601                                                                     fNBinsY,fMinY,fMaxY,
1602                                                                     100,0,360,
1603                                                                     100,0,200);
1604   gHistEtaPhiTPCdEdxNPointsSecondaryProtonsReject->SetStats(kTRUE);
1605   gHistEtaPhiTPCdEdxNPointsSecondaryProtonsReject->GetXaxis()->SetTitleColor(1);
1606   fRejectedCutList->Add(gHistEtaPhiTPCdEdxNPointsSecondaryProtonsReject);//eta-phi of secondary rejected ESD protons
1607   TH3D *gHistEtaPhiTPCdEdxNPointsSecondaryAntiProtonsReject = new TH3D("gHistEtaPhiTPCdEdxNPointsSecondaryAntiProtonsReject",
1608                                                                         "Rejected secondary antiprotons;#eta;#phi;N_{points}(TPC)",
1609                                                                         fNBinsY,fMinY,fMaxY,
1610                                                                         100,0,360,
1611                                                                         100,0,200);
1612   gHistEtaPhiTPCdEdxNPointsSecondaryAntiProtonsReject->SetStats(kTRUE);
1613   gHistEtaPhiTPCdEdxNPointsSecondaryAntiProtonsReject->GetXaxis()->SetTitleColor(1);
1614   fRejectedCutList->Add(gHistEtaPhiTPCdEdxNPointsSecondaryAntiProtonsReject);//eta-phi of secondary rejected ESD antiprotons
1615
1616   //DCA list
1617   fAcceptedDCAList = new TList();
1618   TH1F *gPrimaryProtonsDCAXY = new TH1F("gPrimaryProtonsDCAXY",
1619                                         ";DCA_{xy} [cm];Entries",
1620                                         100,0,20);
1621   fAcceptedDCAList->Add(gPrimaryProtonsDCAXY);
1622   TH1F *gPrimaryAntiProtonsDCAXY = new TH1F("gPrimaryAntiProtonsDCAXY",
1623                                             ";DCA_{xy} [cm];Entries",
1624                                             100,0,20);
1625   fAcceptedDCAList->Add(gPrimaryAntiProtonsDCAXY);
1626   TH1F *gSecondaryProtonsDCAXY = new TH1F("gSecondaryProtonsDCAXY",
1627                                           ";DCA_{xy} [cm];Entries",
1628                                           100,0,20);
1629   fAcceptedDCAList->Add(gSecondaryProtonsDCAXY);
1630   TH1F *gSecondaryAntiProtonsDCAXY = new TH1F("gSecondaryAntiProtonsDCAXY",
1631                                               ";DCA_{xy} [cm];Entries",
1632                                               100,0,20);
1633
1634   fAcceptedDCAList->Add(gSecondaryAntiProtonsDCAXY);
1635   TH1F *gPrimaryProtonsDCAZ = new TH1F("gPrimaryProtonsDCAZ",
1636                                        ";DCA_{z} [cm];Entries",
1637                                        100,0,20);
1638   fAcceptedDCAList->Add(gPrimaryProtonsDCAZ);
1639   TH1F *gPrimaryAntiProtonsDCAZ = new TH1F("gPrimaryAntiProtonsDCAZ",
1640                                            ";DCA_{z} [cm];Entries",
1641                                            100,0,20);
1642   fAcceptedDCAList->Add(gPrimaryAntiProtonsDCAZ);
1643   TH1F *gSecondaryProtonsDCAZ = new TH1F("gSecondaryProtonsDCAZ",
1644                                          ";DCA_{z} [cm];Entries",
1645                                          100,0,20);
1646   fAcceptedDCAList->Add(gSecondaryProtonsDCAZ);
1647   TH1F *gSecondaryAntiProtonsDCAZ = new TH1F("gSecondaryAntiProtonsDCAZ",
1648                                              ";DCA_{z} [cm];Entries",
1649                                              100,0,20);
1650   fAcceptedDCAList->Add(gSecondaryAntiProtonsDCAZ);
1651
1652   TH1F *gPrimaryProtonsSigmaToVertex = new TH1F("gPrimaryProtonsSigmaToVertex",
1653                                                 ";#sigma_{Vertex};Entries",
1654                                                 100,0,10);
1655   fAcceptedDCAList->Add(gPrimaryProtonsSigmaToVertex);
1656   TH1F *gPrimaryAntiProtonsSigmaToVertex = new TH1F("gPrimaryAntiProtonsSigmaToVertex",
1657                                                     ";#sigma_{Vertex};Entries",
1658                                                     100,0,10);
1659   fAcceptedDCAList->Add(gPrimaryAntiProtonsSigmaToVertex);
1660   TH1F *gSecondaryProtonsSigmaToVertex = new TH1F("gSecondaryProtonsSigmaToVertex",
1661                                                   ";#sigma_{Vertex};Entries",
1662                                                   100,0,10);
1663   fAcceptedDCAList->Add(gSecondaryProtonsSigmaToVertex);
1664   TH1F *gSecondaryAntiProtonsSigmaToVertex = new TH1F("gSecondaryAntiProtonsSigmaToVertex",
1665                                                       ";#sigma_{Vertex};Entries",
1666                                                       100,0,10);
1667   fAcceptedDCAList->Add(gSecondaryAntiProtonsSigmaToVertex);
1668
1669 }
1670
1671 //____________________________________________________________________//
1672 void AliProtonQAAnalysis::InitVertexQA() {
1673   //Initializes the Vertex QA histograms
1674   fQAVertexList = new TList();
1675   fQAVertexList->SetName("fQAVertexList");
1676
1677   //Gen. multiplicity bins
1678   //Float_t xBins[24] = {0,1,2,4,6,8,10,15,20,30,40,50,75,100,
1679   //200,300,400,500,750,1000,1500,2000,2500,3000};
1680   //MC primary multiplicity (vertex efficiency calculation)
1681   TH1F *gHistMCPrimaryVz = new TH1F("gHistMCPrimaryVz",
1682                                     ";V_{z} (gen.) [cm];Entries",
1683                                     40,-20.,20.);
1684   fQAVertexList->Add(gHistMCPrimaryVz);
1685   //TH1F *gHistMCPrimaryMultiplicity = new TH1F("gHistMCPrimaryMultiplicity",
1686   //";N_{prim. gen.};Entries",
1687   //23,xBins);
1688   //fQAVertexList->Add(gHistMCPrimaryMultiplicity);
1689   
1690   //TPC
1691   TH1F *gHistTPCVz = new TH1F("gHistTPCVz",
1692                               ";V_{z} (gen.) [cm];Entries",
1693                               40,-20.,20.);
1694   fQAVertexList->Add(gHistTPCVz);
1695   //TH1F *gHistMCPrimaryMultiplicityTPC = new TH1F("gHistMCPrimaryMultiplicityTPC",
1696   //"Vertex TPC;N_{prim. gen.};Entries",
1697   //23,xBins);
1698   //fQAVertexList->Add(gHistMCPrimaryMultiplicityTPC);
1699   TH2F *gHistTPCESDVxN = new TH2F("gHistTPCESDVxN",
1700                                  "Primary vertex TPC;V_{x} [cm];N_{contributors}",
1701                                  100,-10.,10.,1000,0,5000);
1702   fQAVertexList->Add(gHistTPCESDVxN);
1703   TH2F *gHistTPCESDVyN = new TH2F("gHistTPCESDVyN",
1704                                  "Primary vertex TPC;V_{y} [cm];N_{contributors}",
1705                                  100,-10.,10.,1000,0,5000);
1706   fQAVertexList->Add(gHistTPCESDVyN);
1707   TH2F *gHistTPCESDVzN = new TH2F("gHistTPCESDVzN",
1708                                  "Primary vertex TPC;V_{z} [cm];N_{contributors}",
1709                                  100,-20.,20.,1000,0,5000);
1710   fQAVertexList->Add(gHistTPCESDVzN);
1711   TH1F *gHistTPCDiffVx = new TH1F("gHistTPCDiffVx",
1712                                   ";V_{x}(rec.) - V_{x}(true) [#mu m];Entries",
1713                                   100,-10000.,10000.);
1714   fQAVertexList->Add(gHistTPCDiffVx);
1715   TH1F *gHistTPCDiffVy = new TH1F("gHistTPCDiffVy",
1716                                   ";V_{y}(rec.) - V_{y}(true) [#mu m];Entries",
1717                                   100,-10000.,10000.);
1718   fQAVertexList->Add(gHistTPCDiffVy);
1719   TH1F *gHistTPCDiffVz = new TH1F("gHistTPCDiffVz",
1720                                   ";V_{z}(rec.) - V_{z}(true) [#mu m];Entries",
1721                                   100,-10000.,10000.);
1722   fQAVertexList->Add(gHistTPCDiffVz);
1723   TH1F *gHistTPCResolutionVx = new TH1F("gHistTPCResolutionVx",
1724                                         ";#sigma_{x} [#mu m];Entries",
1725                                         100,0.,1000000.);
1726   fQAVertexList->Add(gHistTPCResolutionVx);
1727   TH1F *gHistTPCResolutionVy = new TH1F("gHistTPCResolutionVy",
1728                                         ";#sigma_{y} [#mu m];Entries",
1729                                         100,0.,1000000.);
1730   fQAVertexList->Add(gHistTPCResolutionVy);
1731   TH1F *gHistTPCResolutionVz = new TH1F("gHistTPCResolutionVz",
1732                                         ";#sigma_{z} [#mu m];Entries",
1733                                         100,0.,6000.);
1734   fQAVertexList->Add(gHistTPCResolutionVz);
1735   
1736   //SPD
1737   TH1F *gHistSPDVz = new TH1F("gHistSPDVz",
1738                               ";V_{z} (gen.) [cm];Entries",
1739                               40,-20.,20.);
1740   fQAVertexList->Add(gHistSPDVz);
1741   //TH1F *gHistMCPrimaryMultiplicitySPD = new TH1F("gHistMCPrimaryMultiplicitySPD",
1742   //"Vertex SPD;N_{prim. gen.};Entries",
1743   //23,xBins);
1744   //fQAVertexList->Add(gHistMCPrimaryMultiplicitySPD);
1745   TH2F *gHistSPDESDVxN = new TH2F("gHistSPDESDVxN",
1746                                  "Primary vertex SPD;V_{x} [cm];N_{contributors}",
1747                                  100,-10.,10.,1000,0,5000);
1748   fQAVertexList->Add(gHistSPDESDVxN);
1749   TH2F *gHistSPDESDVyN = new TH2F("gHistSPDESDVyN",
1750                                  "Primary vertex SPD;V_{y} [cm];N_{contributors}",
1751                                  100,-10.,10.,1000,0,5000);
1752   fQAVertexList->Add(gHistSPDESDVyN);
1753   TH2F *gHistSPDESDVzN = new TH2F("gHistSPDESDVzN",
1754                                  "Primary vertex SPD;V_{z} [cm];N_{contributors}",
1755                                  100,-20.,20.,1000,0,5000);
1756   fQAVertexList->Add(gHistSPDESDVzN);
1757   TH1F *gHistSPDDiffVx = new TH1F("gHistSPDDiffVx",
1758                                   ";V_{x}(rec.) - V_{x}(true) [#mu m];Entries",
1759                                   100,-10000.,10000.);
1760   fQAVertexList->Add(gHistSPDDiffVx);
1761   TH1F *gHistSPDDiffVy = new TH1F("gHistSPDDiffVy",
1762                                   ";V_{y}(rec.) - V_{y}(true) [#mu m];Entries",
1763                                   100,-10000.,10000.);
1764   fQAVertexList->Add(gHistSPDDiffVy);
1765   TH1F *gHistSPDDiffVz = new TH1F("gHistSPDDiffVz",
1766                                   ";V_{z}(rec.) - V_{z}(true) [#mu m];Entries",
1767                                   100,-10000.,10000.);
1768   fQAVertexList->Add(gHistSPDDiffVz);
1769   TH1F *gHistSPDResolutionVx = new TH1F("gHistSPDResolutionVx",
1770                                         ";#sigma_{x} [#mu m];Entries",
1771                                         100,0.,1000.);
1772   fQAVertexList->Add(gHistSPDResolutionVx);
1773   TH1F *gHistSPDResolutionVy = new TH1F("gHistSPDResolutionVy",
1774                                         ";#sigma_{y} [#mu m];Entries",
1775                                         100,0.,1000.);
1776   fQAVertexList->Add(gHistSPDResolutionVy);
1777   TH1F *gHistSPDResolutionVz = new TH1F("gHistSPDResolutionVz",
1778                                         ";#sigma_{z} [#mu m];Entries",
1779                                         100,0.,500.);
1780   fQAVertexList->Add(gHistSPDResolutionVz);
1781   
1782   //Tracks
1783   TH1F *gHistTracksVz = new TH1F("gHistTracksVz",
1784                                  ";V_{z} (gen.) [cm];Entries",
1785                                  40,-20.,20.);
1786   fQAVertexList->Add(gHistTracksVz);
1787   //TH1F *gHistMCPrimaryMultiplicityTracks = new TH1F("gHistMCPrimaryMultiplicityTracks",
1788   //"Vertex Tracks;N_{prim. gen.};Entries",
1789   //23,xBins);
1790   //fQAVertexList->Add(gHistMCPrimaryMultiplicityTracks);
1791   TH2F *gHistTracksESDVxN = new TH2F("gHistTracksESDVxN",
1792                                      "Primary vertex Tracks;V_{x} [cm];N_{contributors}",
1793                                      100,-10.,10.,1000,0,5000);
1794   fQAVertexList->Add(gHistTracksESDVxN);
1795   TH2F *gHistTracksESDVyN = new TH2F("gHistTracksESDVyN",
1796                                     "Primary vertex Tracks;V_{y} [cm];N_{contributors}",
1797                                     100,-10.,10.,1000,0,5000);
1798   fQAVertexList->Add(gHistTracksESDVyN);
1799   TH2F *gHistTracksESDVzN = new TH2F("gHistTracksESDVzN",
1800                                     "Primary vertex Tracks;V_{z} [cm];N_{contributors}",
1801                                     100,-20.,20.,1000,0,5000);
1802   fQAVertexList->Add(gHistTracksESDVzN);
1803   TH1F *gHistTracksDiffVx = new TH1F("gHistTracksDiffVx",
1804                                      ";V_{x}(rec.) - V_{x}(true) [#mu m];Entries",
1805                                      100,-10000.,10000.);
1806   fQAVertexList->Add(gHistTracksDiffVx);
1807   TH1F *gHistTracksDiffVy = new TH1F("gHistTracksDiffVy",
1808                                      ";V_{y}(rec.) - V_{y}(true) [#mu m];Entries",
1809                                      100,-10000.,10000.);
1810   fQAVertexList->Add(gHistTracksDiffVy);
1811   TH1F *gHistTracksDiffVz = new TH1F("gHistTracksDiffVz",
1812                                      ";V_{z}(rec.) - V_{z}(true) [#mu m];Entries",
1813                                      100,-10000.,10000.);
1814   fQAVertexList->Add(gHistTracksDiffVz);
1815   TH1F *gHistTracksResolutionVx = new TH1F("gHistTracksResolutionVx",
1816                                            ";#sigma_{x} [#mu m];Entries",
1817                                            100,0.,5000.);
1818   fQAVertexList->Add(gHistTracksResolutionVx);
1819   TH1F *gHistTracksResolutionVy = new TH1F("gHistTracksResolutionVy",
1820                                            ";#sigma_{y} [#mu m];Entries",
1821                                            100,0.,5000.);
1822   fQAVertexList->Add(gHistTracksResolutionVy);
1823   TH1F *gHistTracksResolutionVz = new TH1F("gHistTracksResolutionVz",
1824                                            ";#sigma_{z} [#mu m];Entries",
1825                                            100,0.,1000.);
1826   fQAVertexList->Add(gHistTracksResolutionVz);
1827 }
1828
1829 //____________________________________________________________________//
1830 void AliProtonQAAnalysis::InitQA() {
1831   //Initializes the QA histograms
1832   //if(!fQAHistograms) 
1833   SetRunQAAnalysis();
1834
1835   //2D histograms
1836   //TDirectory *dir2D = gDirectory->mkdir("2D");
1837   //fGlobalQAList->Add(dir2D); dir2D->cd();
1838   TH2D *gHistYPtPrimaryProtonsPass = new TH2D("gHistYPtPrimaryProtonsPass",
1839                                               ";;P_{T} [GeV/c]",
1840                                               fNBinsY,fMinY,fMaxY,
1841                                               fNBinsPt,fMinPt,fMaxPt);
1842   if(fProtonAnalysisBase->GetEtaMode()) 
1843     gHistYPtPrimaryProtonsPass->GetXaxis()->SetTitle("#eta");
1844   else 
1845     gHistYPtPrimaryProtonsPass->GetXaxis()->SetTitle("y");
1846   gHistYPtPrimaryProtonsPass->SetStats(kTRUE);
1847   gHistYPtPrimaryProtonsPass->GetXaxis()->SetTitleColor(1);
1848   fQA2DList->Add(gHistYPtPrimaryProtonsPass);//y-pT of primary accepted ESD protons
1849   TH2D *gHistYPtPrimaryProtonsReject = new TH2D("gHistYPtPrimaryProtonsReject",
1850                                                 ";;P_{T} [GeV/c]",
1851                                                 fNBinsY,fMinY,fMaxY,
1852                                                 fNBinsPt,fMinPt,fMaxPt);
1853   if(fProtonAnalysisBase->GetEtaMode()) 
1854     gHistYPtPrimaryProtonsReject->GetXaxis()->SetTitle("#eta");
1855   else 
1856     gHistYPtPrimaryProtonsReject->GetXaxis()->SetTitle("y");
1857   gHistYPtPrimaryProtonsReject->SetStats(kTRUE);
1858   gHistYPtPrimaryProtonsReject->GetXaxis()->SetTitleColor(1);
1859   fQA2DList->Add(gHistYPtPrimaryProtonsReject);//y-pT of primary rejected ESD protons
1860
1861   TH2D *gHistYPtSecondaryProtonsPass = new TH2D("gHistYPtSecondaryProtonsPass",
1862                                                 ";;P_{T} [GeV/c]",
1863                                                 fNBinsY,fMinY,fMaxY,
1864                                                 fNBinsPt,fMinPt,fMaxPt);
1865   if(fProtonAnalysisBase->GetEtaMode()) 
1866     gHistYPtSecondaryProtonsPass->GetXaxis()->SetTitle("#eta");
1867   else 
1868     gHistYPtSecondaryProtonsPass->GetXaxis()->SetTitle("y");
1869   gHistYPtSecondaryProtonsPass->SetStats(kTRUE);
1870   gHistYPtSecondaryProtonsPass->GetXaxis()->SetTitleColor(1);
1871   fQA2DList->Add(gHistYPtSecondaryProtonsPass);//y-pT of secondary accepted ESD protons
1872   TH2D *gHistYPtSecondaryProtonsReject = new TH2D("gHistYPtSecondaryProtonsReject",
1873                                                   ";;P_{T} [GeV/c]",
1874                                                   fNBinsY,fMinY,fMaxY,
1875                                                   fNBinsPt,fMinPt,fMaxPt);
1876   if(fProtonAnalysisBase->GetEtaMode()) 
1877     gHistYPtSecondaryProtonsReject->GetXaxis()->SetTitle("#eta");
1878   else 
1879     gHistYPtSecondaryProtonsReject->GetXaxis()->SetTitle("y");
1880   gHistYPtSecondaryProtonsReject->SetStats(kTRUE);
1881   gHistYPtSecondaryProtonsReject->GetXaxis()->SetTitleColor(1);
1882   fQA2DList->Add(gHistYPtSecondaryProtonsReject);//y-pT of secondary rejected ESD protons
1883
1884   TH2D *gHistYPtPrimaryAntiProtonsPass = new TH2D("gHistYPtPrimaryAntiProtonsPass",
1885                                                   ";;P_{T} [GeV/c]",
1886                                                   fNBinsY,fMinY,fMaxY,
1887                                                   fNBinsPt,fMinPt,fMaxPt);
1888   if(fProtonAnalysisBase->GetEtaMode()) 
1889     gHistYPtPrimaryAntiProtonsPass->GetXaxis()->SetTitle("#eta");
1890   else 
1891     gHistYPtPrimaryAntiProtonsPass->GetXaxis()->SetTitle("y");
1892   gHistYPtPrimaryAntiProtonsPass->SetStats(kTRUE);
1893   gHistYPtPrimaryAntiProtonsPass->GetXaxis()->SetTitleColor(1);
1894   fQA2DList->Add(gHistYPtPrimaryAntiProtonsPass);//y-pT of primary accepted ESD antiprotons
1895   TH2D *gHistYPtPrimaryAntiProtonsReject = new TH2D("gHistYPtPrimaryAntiProtonsReject",
1896                                                     ";;P_{T} [GeV/c]",
1897                                                     fNBinsY,fMinY,fMaxY,
1898                                                     fNBinsPt,fMinPt,fMaxPt);
1899   if(fProtonAnalysisBase->GetEtaMode()) 
1900     gHistYPtPrimaryAntiProtonsReject->GetXaxis()->SetTitle("#eta");
1901   else 
1902     gHistYPtPrimaryAntiProtonsReject->GetXaxis()->SetTitle("y");
1903   gHistYPtPrimaryAntiProtonsReject->SetStats(kTRUE);
1904   gHistYPtPrimaryAntiProtonsReject->GetXaxis()->SetTitleColor(1);
1905   fQA2DList->Add(gHistYPtPrimaryAntiProtonsReject);//y-pT of primary rejected ESD antiprotons
1906
1907   TH2D *gHistYPtSecondaryAntiProtonsPass = new TH2D("gHistYPtSecondaryAntiProtonsPass",
1908                                                     ";;P_{T} [GeV/c]",
1909                                                     fNBinsY,fMinY,fMaxY,
1910                                                     fNBinsPt,fMinPt,fMaxPt);
1911   if(fProtonAnalysisBase->GetEtaMode()) 
1912     gHistYPtSecondaryAntiProtonsPass->GetXaxis()->SetTitle("#eta");
1913   else 
1914     gHistYPtSecondaryAntiProtonsPass->GetXaxis()->SetTitle("y");
1915   gHistYPtSecondaryAntiProtonsPass->SetStats(kTRUE);
1916   gHistYPtSecondaryAntiProtonsPass->GetXaxis()->SetTitleColor(1);
1917   fQA2DList->Add(gHistYPtSecondaryAntiProtonsPass);//y-pT of secondary accepted ESD antiprotons
1918   TH2D *gHistYPtSecondaryAntiProtonsReject = new TH2D("gHistYPtSecondaryAntiProtonsReject",
1919                                                       ";;P_{T} [GeV/c]",
1920                                                       fNBinsY,fMinY,fMaxY,
1921                                                       fNBinsPt,fMinPt,fMaxPt);
1922   if(fProtonAnalysisBase->GetEtaMode()) 
1923     gHistYPtSecondaryAntiProtonsReject->GetXaxis()->SetTitle("#eta");
1924   else 
1925     gHistYPtSecondaryAntiProtonsReject->GetXaxis()->SetTitle("y");
1926   gHistYPtSecondaryAntiProtonsReject->SetStats(kTRUE);
1927   gHistYPtSecondaryAntiProtonsReject->GetXaxis()->SetTitleColor(1);
1928   fQA2DList->Add(gHistYPtSecondaryAntiProtonsReject);//y-pT of secondary rejected ESD antiprotons
1929
1930   TH2D *gHistYPtPrimaryProtonsMC = new TH2D("gHistYPtPrimaryProtonsMC",
1931                                             ";;P_{T} [GeV/c]",
1932                                             fNBinsY,fMinY,fMaxY,
1933                                             fNBinsPt,fMinPt,fMaxPt);
1934   if(fProtonAnalysisBase->GetEtaMode()) 
1935     gHistYPtPrimaryProtonsMC->GetXaxis()->SetTitle("#eta");
1936   else 
1937     gHistYPtPrimaryProtonsMC->GetXaxis()->SetTitle("y");
1938   gHistYPtPrimaryProtonsMC->SetStats(kTRUE);
1939   gHistYPtPrimaryProtonsMC->GetXaxis()->SetTitleColor(1);
1940   fQA2DList->Add(gHistYPtPrimaryProtonsMC);//y-pT of primary MC protons
1941   TH2D *gHistYPtPrimaryAntiProtonsMC = new TH2D("gHistYPtPrimaryAntiProtonsMC",
1942                                                 ";;P_{T} [GeV/c]",
1943                                                 fNBinsY,fMinY,fMaxY,
1944                                                 fNBinsPt,fMinPt,fMaxPt);
1945   if(fProtonAnalysisBase->GetEtaMode()) 
1946     gHistYPtPrimaryAntiProtonsMC->GetXaxis()->SetTitle("#eta");
1947   else 
1948     gHistYPtPrimaryAntiProtonsMC->GetXaxis()->SetTitle("y");
1949   gHistYPtPrimaryAntiProtonsMC->SetStats(kTRUE);
1950   gHistYPtPrimaryAntiProtonsMC->GetXaxis()->SetTitleColor(1);
1951   fQA2DList->Add(gHistYPtPrimaryAntiProtonsMC);//y-pT of primary MC antiprotons
1952
1953   TH3F *gHistYPtPDGProtonsPass = new TH3F("gHistYPtPDGProtonsPass",
1954                                           ";;P_{T} [GeV/c];PDG",
1955                                           fNBinsY,fMinY,fMaxY,
1956                                           fNBinsPt,fMinPt,fMaxPt,
1957                                           14,-0.5,13.5);
1958   if(fProtonAnalysisBase->GetEtaMode()) 
1959     gHistYPtPDGProtonsPass->GetXaxis()->SetTitle("#eta");
1960   else 
1961     gHistYPtPDGProtonsPass->GetXaxis()->SetTitle("y");
1962   fQA2DList->Add(gHistYPtPDGProtonsPass);//composition of secondary protons
1963   TH3F *gHistYPtPDGAntiProtonsPass = new TH3F("gHistYPtPDGAntiProtonsPass",
1964                                               ";;P_{T} [GeV/c];PDG",
1965                                               fNBinsY,fMinY,fMaxY,
1966                                               fNBinsPt,fMinPt,fMaxPt,
1967                                               14,-0.5,13.5);
1968   if(fProtonAnalysisBase->GetEtaMode()) 
1969     gHistYPtPDGAntiProtonsPass->GetXaxis()->SetTitle("#eta");
1970   else 
1971     gHistYPtPDGAntiProtonsPass->GetXaxis()->SetTitle("y");
1972   fQA2DList->Add(gHistYPtPDGAntiProtonsPass);//composition of secondary antiprotons
1973
1974   /*gDirectory->cd("../");
1975   //protons
1976   TDirectory *dirProtons = gDirectory->mkdir("Protons");
1977   fGlobalQAList->Add(dirProtons); dirProtons->cd();*/
1978   
1979   //________________________________________________________________//
1980   /*TDirectory *dirProtonsPrimary = gDirectory->mkdir("Primaries");
1981   dirProtonsPrimary->cd();
1982   TDirectory *dirProtonsPrimaryAccepted = gDirectory->mkdir("Accepted");
1983   dirProtonsPrimaryAccepted->cd();*/
1984
1985   //Accepted primary protons
1986   TH1F *gPrimaryProtonsITSClustersPass = new TH1F("gPrimaryProtonsITSClustersPass",
1987                                             ";N_{clusters} (ITS);Entries",
1988                                             7,0,7);
1989   fQAPrimaryProtonsAcceptedList->Add(gPrimaryProtonsITSClustersPass);
1990   TH1F *gPrimaryProtonsChi2PerClusterITSPass = new TH1F("gPrimaryProtonsChi2PerClusterITSPass",
1991                                                   ";x^{2}/N_{clusters} (ITS);Entries",
1992                                                   100,0,4);
1993   fQAPrimaryProtonsAcceptedList->Add(gPrimaryProtonsChi2PerClusterITSPass);
1994   TH1F *gPrimaryProtonsTPCClustersPass = new TH1F("gPrimaryProtonsTPCClustersPass",
1995                                             ";N_{clusters} (TPC);Entries",
1996                                             100,0,200);
1997   fQAPrimaryProtonsAcceptedList->Add(gPrimaryProtonsTPCClustersPass);
1998   TH1F *gPrimaryProtonsChi2PerClusterTPCPass = new TH1F("gPrimaryProtonsChi2PerClusterTPCPass",
1999                                                   ";x^{2}/N_{clusters} (TPC);Entries",
2000                                                   100,0,4);
2001   fQAPrimaryProtonsAcceptedList->Add(gPrimaryProtonsChi2PerClusterTPCPass);
2002   TH1F *gPrimaryProtonsExtCov11Pass = new TH1F("gPrimaryProtonsExtCov11Pass",
2003                                          ";#sigma_{y} [cm];Entries",
2004                                          100,0,4);
2005   fQAPrimaryProtonsAcceptedList->Add(gPrimaryProtonsExtCov11Pass);
2006   TH1F *gPrimaryProtonsExtCov22Pass = new TH1F("gPrimaryProtonsExtCov22Pass",
2007                                          ";#sigma_{z} [cm];Entries",
2008                                          100,0,4);
2009   fQAPrimaryProtonsAcceptedList->Add(gPrimaryProtonsExtCov22Pass);
2010   TH1F *gPrimaryProtonsExtCov33Pass = new TH1F("gPrimaryProtonsExtCov33Pass",
2011                                          ";#sigma_{sin(#phi)};Entries",
2012                                          100,0,4);
2013   fQAPrimaryProtonsAcceptedList->Add(gPrimaryProtonsExtCov33Pass);
2014   TH1F *gPrimaryProtonsExtCov44Pass = new TH1F("gPrimaryProtonsExtCov44Pass",
2015                                          ";#sigma_{tan(#lambda)};Entries",
2016                                          100,0,4);
2017   fQAPrimaryProtonsAcceptedList->Add(gPrimaryProtonsExtCov44Pass);
2018   TH1F *gPrimaryProtonsExtCov55Pass = new TH1F("gPrimaryProtonsExtCov55Pass",
2019                                          ";#sigma_{1/P_{T}} [GeV/c]^{-1};Entries",
2020                                          100,0,4);
2021   fQAPrimaryProtonsAcceptedList->Add(gPrimaryProtonsExtCov55Pass);
2022   TH1F *gPrimaryProtonsSigmaToVertexPass = new TH1F("gPrimaryProtonsSigmaToVertexPass",
2023                                              ";#sigma_{Vertex};Entries",
2024                                              100,0,10);
2025   fQAPrimaryProtonsAcceptedList->Add(gPrimaryProtonsSigmaToVertexPass);
2026   TH1F *gPrimaryProtonsSigmaToVertexTPCPass = new TH1F("gPrimaryProtonsSigmaToVertexTPCPass",
2027                                              ";#sigma_{Vertex};Entries",
2028                                              100,0,10);
2029   fQAPrimaryProtonsAcceptedList->Add(gPrimaryProtonsSigmaToVertexTPCPass);
2030   TH1F *gPrimaryProtonsDCAXYPass = new TH1F("gPrimaryProtonsDCAXYPass",
2031                                              ";DCA_{xy} [cm];Entries",
2032                                              100,0,20);
2033   fQAPrimaryProtonsAcceptedList->Add(gPrimaryProtonsDCAXYPass);
2034   TH1F *gPrimaryProtonsDCAXYTPCPass = new TH1F("gPrimaryProtonsDCAXYTPCPass",
2035                                                ";DCA_{xy} [cm];Entries",
2036                                                100,0,20);
2037   fQAPrimaryProtonsAcceptedList->Add(gPrimaryProtonsDCAXYTPCPass);
2038   TH1F *gPrimaryProtonsDCAZPass = new TH1F("gPrimaryProtonsDCAZPass",
2039                                            ";DCA_{z} [cm];Entries",
2040                                            100,0,20);
2041   fQAPrimaryProtonsAcceptedList->Add(gPrimaryProtonsDCAZPass);
2042   TH1F *gPrimaryProtonsDCAZTPCPass = new TH1F("gPrimaryProtonsDCAZTPCPass",
2043                                               ";DCA_{z} [cm];Entries",
2044                                               100,0,20);
2045   fQAPrimaryProtonsAcceptedList->Add(gPrimaryProtonsDCAZTPCPass);
2046   TH1F *gPrimaryProtonsConstrainChi2Pass = new TH1F("gPrimaryProtonsConstrainChi2Pass",
2047                                                     ";Log_{10}(#chi^{2});Entries",
2048                                                     100,-10,10);
2049   fQAPrimaryProtonsAcceptedList->Add(gPrimaryProtonsConstrainChi2Pass);
2050   TH1F *gPrimaryProtonsITSRefitPass = new TH1F("gPrimaryProtonsITSRefitPass",
2051                                                "",10,-1,1);
2052   fQAPrimaryProtonsAcceptedList->Add(gPrimaryProtonsITSRefitPass);
2053   TH1F *gPrimaryProtonsTPCRefitPass = new TH1F("gPrimaryProtonsTPCRefitPass",
2054                                                "",10,-1,1);
2055   fQAPrimaryProtonsAcceptedList->Add(gPrimaryProtonsTPCRefitPass);
2056   TH1F *gPrimaryProtonsESDpidPass = new TH1F("gPrimaryProtonsESDpidPass",
2057                                              "",10,-1,1);
2058   fQAPrimaryProtonsAcceptedList->Add(gPrimaryProtonsESDpidPass);
2059   TH1F *gPrimaryProtonsTPCpidPass = new TH1F("gPrimaryProtonsTPCpidPass",
2060                                              "",10,-1,1);
2061   fQAPrimaryProtonsAcceptedList->Add(gPrimaryProtonsTPCpidPass);
2062   TH1F *gPrimaryProtonsPointOnITSLayer1Pass = new TH1F("gPrimaryProtonsPointOnITSLayer1Pass",
2063                                              "",10,-1,1);
2064   fQAPrimaryProtonsAcceptedList->Add(gPrimaryProtonsPointOnITSLayer1Pass);
2065   TH1F *gPrimaryProtonsPointOnITSLayer2Pass = new TH1F("gPrimaryProtonsPointOnITSLayer2Pass",
2066                                              "",10,-1,1);
2067   fQAPrimaryProtonsAcceptedList->Add(gPrimaryProtonsPointOnITSLayer2Pass);
2068   TH1F *gPrimaryProtonsPointOnITSLayer3Pass = new TH1F("gPrimaryProtonsPointOnITSLayer3Pass",
2069                                              "",10,-1,1);
2070   fQAPrimaryProtonsAcceptedList->Add(gPrimaryProtonsPointOnITSLayer3Pass);
2071   TH1F *gPrimaryProtonsPointOnITSLayer4Pass = new TH1F("gPrimaryProtonsPointOnITSLayer4Pass",
2072                                              "",10,-1,1);
2073   fQAPrimaryProtonsAcceptedList->Add(gPrimaryProtonsPointOnITSLayer4Pass);
2074   TH1F *gPrimaryProtonsPointOnITSLayer5Pass = new TH1F("gPrimaryProtonsPointOnITSLayer5Pass",
2075                                              "",10,-1,1);
2076   fQAPrimaryProtonsAcceptedList->Add(gPrimaryProtonsPointOnITSLayer5Pass);
2077   TH1F *gPrimaryProtonsPointOnITSLayer6Pass = new TH1F("gPrimaryProtonsPointOnITSLayer6Pass",
2078                                              "",10,-1,1);
2079   fQAPrimaryProtonsAcceptedList->Add(gPrimaryProtonsPointOnITSLayer6Pass);
2080   TH1F *gPrimaryProtonsNumberOfTPCdEdxPointsPass = new TH1F("gPrimaryProtonsNumberOfTPCdEdxPointsPass","",100,0,200);
2081   fQAPrimaryProtonsAcceptedList->Add(gPrimaryProtonsNumberOfTPCdEdxPointsPass);
2082
2083   //Rejected primary protons
2084   /*gDirectory->cd("../");
2085   TDirectory *dirProtonsPrimaryRejected = gDirectory->mkdir("Rejected");
2086   dirProtonsPrimaryRejected->cd();*/
2087
2088   TH1F *gPrimaryProtonsITSClustersReject = new TH1F("gPrimaryProtonsITSClustersReject",
2089                                                     ";N_{clusters} (ITS);Entries",
2090                                                     7,0,7);
2091   fQAPrimaryProtonsRejectedList->Add(gPrimaryProtonsITSClustersReject);
2092   TH1F *gPrimaryProtonsChi2PerClusterITSReject = new TH1F("gPrimaryProtonsChi2PerClusterITSReject",
2093                                                           ";x^{2}/N_{clusters} (ITS);Entries",
2094                                                           100,0,4);
2095   fQAPrimaryProtonsRejectedList->Add(gPrimaryProtonsChi2PerClusterITSReject);
2096   TH1F *gPrimaryProtonsTPCClustersReject = new TH1F("gPrimaryProtonsTPCClustersReject",
2097                                             ";N_{clusters} (TPC);Entries",
2098                                             100,0,200);
2099   fQAPrimaryProtonsRejectedList->Add(gPrimaryProtonsTPCClustersReject);
2100   TH1F *gPrimaryProtonsChi2PerClusterTPCReject = new TH1F("gPrimaryProtonsChi2PerClusterTPCReject",
2101                                                   ";x^{2}/N_{clusters} (TPC);Entries",
2102                                                   100,0,4);
2103   fQAPrimaryProtonsRejectedList->Add(gPrimaryProtonsChi2PerClusterTPCReject);
2104   TH1F *gPrimaryProtonsExtCov11Reject = new TH1F("gPrimaryProtonsExtCov11Reject",
2105                                          ";#sigma_{y} [cm];Entries",
2106                                          100,0,4);
2107   fQAPrimaryProtonsRejectedList->Add(gPrimaryProtonsExtCov11Reject);
2108   TH1F *gPrimaryProtonsExtCov22Reject = new TH1F("gPrimaryProtonsExtCov22Reject",
2109                                          ";#sigma_{z} [cm];Entries",
2110                                          100,0,4);
2111   fQAPrimaryProtonsRejectedList->Add(gPrimaryProtonsExtCov22Reject);
2112   TH1F *gPrimaryProtonsExtCov33Reject = new TH1F("gPrimaryProtonsExtCov33Reject",
2113                                          ";#sigma_{sin(#phi)};Entries",
2114                                          100,0,4);
2115   fQAPrimaryProtonsRejectedList->Add(gPrimaryProtonsExtCov33Reject);
2116   TH1F *gPrimaryProtonsExtCov44Reject = new TH1F("gPrimaryProtonsExtCov44Reject",
2117                                          ";#sigma_{tan(#lambda)};Entries",
2118                                          100,0,4);
2119   fQAPrimaryProtonsRejectedList->Add(gPrimaryProtonsExtCov44Reject);
2120   TH1F *gPrimaryProtonsExtCov55Reject = new TH1F("gPrimaryProtonsExtCov55Reject",
2121                                          ";#sigma_{1/P_{T}} [GeV/c]^{-1};Entries",
2122                                          100,0,4);
2123   fQAPrimaryProtonsRejectedList->Add(gPrimaryProtonsExtCov55Reject);
2124   TH1F *gPrimaryProtonsSigmaToVertexReject = new TH1F("gPrimaryProtonsSigmaToVertexReject",
2125                                              ";#sigma_{Vertex};Entries",
2126                                              100,0,10);
2127   fQAPrimaryProtonsRejectedList->Add(gPrimaryProtonsSigmaToVertexReject);
2128   TH1F *gPrimaryProtonsSigmaToVertexTPCReject = new TH1F("gPrimaryProtonsSigmaToVertexTPCReject",
2129                                              ";#sigma_{Vertex};Entries",
2130                                              100,0,10);
2131   fQAPrimaryProtonsRejectedList->Add(gPrimaryProtonsSigmaToVertexTPCReject);
2132   TH1F *gPrimaryProtonsDCAXYReject = new TH1F("gPrimaryProtonsDCAXYReject",
2133                                               ";DCA_{xy} [cm];Entries",
2134                                               100,0,20);
2135   fQAPrimaryProtonsRejectedList->Add(gPrimaryProtonsDCAXYReject);
2136   TH1F *gPrimaryProtonsDCAXYTPCReject = new TH1F("gPrimaryProtonsDCAXYTPCReject",
2137                                                  ";DCA_{xy} [cm];Entries",
2138                                                  100,0,20);
2139   fQAPrimaryProtonsRejectedList->Add(gPrimaryProtonsDCAXYTPCReject);
2140   TH1F *gPrimaryProtonsDCAZReject = new TH1F("gPrimaryProtonsDCAZReject",
2141                                              ";DCA_{z} [cm];Entries",
2142                                              100,0,20);
2143   fQAPrimaryProtonsRejectedList->Add(gPrimaryProtonsDCAZReject);
2144   TH1F *gPrimaryProtonsDCAZTPCReject = new TH1F("gPrimaryProtonsDCAZTPCReject",
2145                                                 ";DCA_{z} [cm];Entries",
2146                                                 100,0,20);
2147   fQAPrimaryProtonsRejectedList->Add(gPrimaryProtonsDCAZTPCReject);
2148   TH1F *gPrimaryProtonsConstrainChi2Reject = new TH1F("gPrimaryProtonsConstrainChi2Reject",
2149                                                     ";Log_{10}(#chi^{2});Entries",
2150                                                     100,-10,10);
2151   fQAPrimaryProtonsRejectedList->Add(gPrimaryProtonsConstrainChi2Reject);
2152   TH1F *gPrimaryProtonsITSRefitReject = new TH1F("gPrimaryProtonsITSRefitReject",
2153                                                  "",10,-1,1);
2154   fQAPrimaryProtonsRejectedList->Add(gPrimaryProtonsITSRefitReject);
2155   TH1F *gPrimaryProtonsTPCRefitReject = new TH1F("gPrimaryProtonsTPCRefitReject",
2156                                                  "",10,-1,1);
2157   fQAPrimaryProtonsRejectedList->Add(gPrimaryProtonsTPCRefitReject);
2158   TH1F *gPrimaryProtonsESDpidReject = new TH1F("gPrimaryProtonsESDpidReject",
2159                                                "",10,-1,1);
2160   fQAPrimaryProtonsRejectedList->Add(gPrimaryProtonsESDpidReject);
2161   TH1F *gPrimaryProtonsTPCpidReject = new TH1F("gPrimaryProtonsTPCpidReject",
2162                                                "",10,-1,1);
2163   fQAPrimaryProtonsRejectedList->Add(gPrimaryProtonsTPCpidReject);
2164   TH1F *gPrimaryProtonsPointOnITSLayer1Reject = new TH1F("gPrimaryProtonsPointOnITSLayer1Reject",
2165                                              "",10,-1,1);
2166   fQAPrimaryProtonsRejectedList->Add(gPrimaryProtonsPointOnITSLayer1Reject);
2167   TH1F *gPrimaryProtonsPointOnITSLayer2Reject = new TH1F("gPrimaryProtonsPointOnITSLayer2Reject",
2168                                              "",10,-1,1);
2169   fQAPrimaryProtonsRejectedList->Add(gPrimaryProtonsPointOnITSLayer2Reject);
2170   TH1F *gPrimaryProtonsPointOnITSLayer3Reject = new TH1F("gPrimaryProtonsPointOnITSLayer3Reject",
2171                                              "",10,-1,1);
2172   fQAPrimaryProtonsRejectedList->Add(gPrimaryProtonsPointOnITSLayer3Reject);
2173   TH1F *gPrimaryProtonsPointOnITSLayer4Reject = new TH1F("gPrimaryProtonsPointOnITSLayer4Reject",
2174                                              "",10,-1,1);
2175   fQAPrimaryProtonsRejectedList->Add(gPrimaryProtonsPointOnITSLayer4Reject);
2176   TH1F *gPrimaryProtonsPointOnITSLayer5Reject = new TH1F("gPrimaryProtonsPointOnITSLayer5Reject",
2177                                              "",10,-1,1);
2178   fQAPrimaryProtonsRejectedList->Add(gPrimaryProtonsPointOnITSLayer5Reject);
2179   TH1F *gPrimaryProtonsPointOnITSLayer6Reject = new TH1F("gPrimaryProtonsPointOnITSLayer6Reject",
2180                                              "",10,-1,1);
2181   fQAPrimaryProtonsRejectedList->Add(gPrimaryProtonsPointOnITSLayer6Reject);
2182   TH1F *gPrimaryProtonsNumberOfTPCdEdxPointsReject = new TH1F("gPrimaryProtonsNumberOfTPCdEdxPointsReject","",100,0,200);
2183   fQAPrimaryProtonsRejectedList->Add(gPrimaryProtonsNumberOfTPCdEdxPointsReject);
2184
2185   //________________________________________________________________//
2186   /*gDirectory->cd("../../");
2187
2188   TDirectory *dirProtonsSecondary = gDirectory->mkdir("Secondaries");
2189   dirProtonsSecondary->cd();
2190   TDirectory *dirProtonsSecondaryAccepted = gDirectory->mkdir("Accepted");
2191   dirProtonsSecondaryAccepted->cd();*/
2192
2193   //Accepted secondary protons
2194   TH1F *gSecondaryProtonsITSClustersPass = new TH1F("gSecondaryProtonsITSClustersPass",
2195                                                     ";N_{clusters} (ITS);Entries",
2196                                                     7,0,7);
2197   fQASecondaryProtonsAcceptedList->Add(gSecondaryProtonsITSClustersPass);
2198   TH1F *gSecondaryProtonsChi2PerClusterITSPass = new TH1F("gSecondaryProtonsChi2PerClusterITSPass",
2199                                                           ";x^{2}/N_{clusters} (ITS);Entries",
2200                                                           100,0,4);
2201   fQASecondaryProtonsAcceptedList->Add(gSecondaryProtonsChi2PerClusterITSPass);
2202   TH1F *gSecondaryProtonsTPCClustersPass = new TH1F("gSecondaryProtonsTPCClustersPass",
2203                                             ";N_{clusters} (TPC);Entries",
2204                                             100,0,200);
2205   fQASecondaryProtonsAcceptedList->Add(gSecondaryProtonsTPCClustersPass);
2206   TH1F *gSecondaryProtonsChi2PerClusterTPCPass = new TH1F("gSecondaryProtonsChi2PerClusterTPCPass",
2207                                                   ";x^{2}/N_{clusters} (TPC);Entries",
2208                                                   100,0,4);
2209   fQASecondaryProtonsAcceptedList->Add(gSecondaryProtonsChi2PerClusterTPCPass);
2210   TH1F *gSecondaryProtonsExtCov11Pass = new TH1F("gSecondaryProtonsExtCov11Pass",
2211                                          ";#sigma_{y} [cm];Entries",
2212                                          100,0,4);
2213   fQASecondaryProtonsAcceptedList->Add(gSecondaryProtonsExtCov11Pass);
2214   TH1F *gSecondaryProtonsExtCov22Pass = new TH1F("gSecondaryProtonsExtCov22Pass",
2215                                          ";#sigma_{z} [cm];Entries",
2216                                          100,0,4);
2217   fQASecondaryProtonsAcceptedList->Add(gSecondaryProtonsExtCov22Pass);
2218   TH1F *gSecondaryProtonsExtCov33Pass = new TH1F("gSecondaryProtonsExtCov33Pass",
2219                                          ";#sigma_{sin(#phi)};Entries",
2220                                          100,0,4);
2221   fQASecondaryProtonsAcceptedList->Add(gSecondaryProtonsExtCov33Pass);
2222   TH1F *gSecondaryProtonsExtCov44Pass = new TH1F("gSecondaryProtonsExtCov44Pass",
2223                                          ";#sigma_{tan(#lambda)};Entries",
2224                                          100,0,4);
2225   fQASecondaryProtonsAcceptedList->Add(gSecondaryProtonsExtCov44Pass);
2226   TH1F *gSecondaryProtonsExtCov55Pass = new TH1F("gSecondaryProtonsExtCov55Pass",
2227                                          ";#sigma_{1/P_{T}} [GeV/c]^{-1};Entries",
2228                                          100,0,4);
2229   fQASecondaryProtonsAcceptedList->Add(gSecondaryProtonsExtCov55Pass);
2230   TH1F *gSecondaryProtonsSigmaToVertexPass = new TH1F("gSecondaryProtonsSigmaToVertexPass",
2231                                              ";#sigma_{Vertex};Entries",
2232                                              100,0,10);
2233   fQASecondaryProtonsAcceptedList->Add(gSecondaryProtonsSigmaToVertexPass);
2234   TH1F *gSecondaryProtonsSigmaToVertexTPCPass = new TH1F("gSecondaryProtonsSigmaToVertexTPCPass",
2235                                              ";#sigma_{Vertex};Entries",
2236                                              100,0,10);
2237   fQASecondaryProtonsAcceptedList->Add(gSecondaryProtonsSigmaToVertexTPCPass);
2238   TH1F *gSecondaryProtonsDCAXYPass = new TH1F("gSecondaryProtonsDCAXYPass",
2239                                               ";DCA_{xy} [cm];Entries",
2240                                               100,0,20);
2241   fQASecondaryProtonsAcceptedList->Add(gSecondaryProtonsDCAXYPass);
2242   TH1F *gSecondaryProtonsDCAXYTPCPass = new TH1F("gSecondaryProtonsDCAXYTPCPass",
2243                                                  ";DCA_{xy} [cm];Entries",
2244                                                  100,0,20);
2245   fQASecondaryProtonsAcceptedList->Add(gSecondaryProtonsDCAXYTPCPass);
2246   TH1F *gSecondaryProtonsDCAZPass = new TH1F("gSecondaryProtonsDCAZPass",
2247                                              ";DCA_{z} [cm];Entries",
2248                                              100,0,20);
2249   fQASecondaryProtonsAcceptedList->Add(gSecondaryProtonsDCAZPass);
2250   TH1F *gSecondaryProtonsDCAZTPCPass = new TH1F("gSecondaryProtonsDCAZTPCPass",
2251                                                 ";DCA_{z} [cm];Entries",
2252                                                 100,0,20);
2253   fQASecondaryProtonsAcceptedList->Add(gSecondaryProtonsDCAZTPCPass);
2254   TH1F *gSecondaryProtonsConstrainChi2Pass = new TH1F("gSecondaryProtonsConstrainChi2Pass",
2255                                                     ";Log_{10}(#chi^{2});Entries",
2256                                                     100,-10,10);
2257   fQASecondaryProtonsAcceptedList->Add(gSecondaryProtonsConstrainChi2Pass);
2258   TH1F *gSecondaryProtonsITSRefitPass = new TH1F("gSecondaryProtonsITSRefitPass",
2259                                                  "",10,-1,1);
2260   fQASecondaryProtonsAcceptedList->Add(gSecondaryProtonsITSRefitPass);
2261   TH1F *gSecondaryProtonsTPCRefitPass = new TH1F("gSecondaryProtonsTPCRefitPass",
2262                                                  "",10,-1,1);
2263   fQASecondaryProtonsAcceptedList->Add(gSecondaryProtonsTPCRefitPass);
2264   TH1F *gSecondaryProtonsESDpidPass = new TH1F("gSecondaryProtonsESDpidPass",
2265                                                "",10,-1,1);
2266   fQASecondaryProtonsAcceptedList->Add(gSecondaryProtonsESDpidPass);
2267   TH1F *gSecondaryProtonsTPCpidPass = new TH1F("gSecondaryProtonsTPCpidPass",
2268                                                "",10,-1,1);
2269   fQASecondaryProtonsAcceptedList->Add(gSecondaryProtonsTPCpidPass);
2270   TH1F *gSecondaryProtonsPointOnITSLayer1Pass = new TH1F("gSecondaryProtonsPointOnITSLayer1Pass",
2271                                                          "",10,-1,1);
2272   fQASecondaryProtonsAcceptedList->Add(gSecondaryProtonsPointOnITSLayer1Pass);
2273   TH1F *gSecondaryProtonsPointOnITSLayer2Pass = new TH1F("gSecondaryProtonsPointOnITSLayer2Pass",
2274                                                          "",10,-1,1);
2275   fQASecondaryProtonsAcceptedList->Add(gSecondaryProtonsPointOnITSLayer2Pass);
2276   TH1F *gSecondaryProtonsPointOnITSLayer3Pass = new TH1F("gSecondaryProtonsPointOnITSLayer3Pass",
2277                                                          "",10,-1,1);
2278   fQASecondaryProtonsAcceptedList->Add(gSecondaryProtonsPointOnITSLayer3Pass);
2279   TH1F *gSecondaryProtonsPointOnITSLayer4Pass = new TH1F("gSecondaryProtonsPointOnITSLayer4Pass",
2280                                                          "",10,-1,1);
2281   fQASecondaryProtonsAcceptedList->Add(gSecondaryProtonsPointOnITSLayer4Pass);
2282   TH1F *gSecondaryProtonsPointOnITSLayer5Pass = new TH1F("gSecondaryProtonsPointOnITSLayer5Pass",
2283                                                          "",10,-1,1);
2284   fQASecondaryProtonsAcceptedList->Add(gSecondaryProtonsPointOnITSLayer5Pass);
2285   TH1F *gSecondaryProtonsPointOnITSLayer6Pass = new TH1F("gSecondaryProtonsPointOnITSLayer6Pass",
2286                                                          "",10,-1,1);
2287   fQASecondaryProtonsAcceptedList->Add(gSecondaryProtonsPointOnITSLayer6Pass);
2288   TH1F *gSecondaryProtonsNumberOfTPCdEdxPointsPass = new TH1F("gSecondaryProtonsNumberOfTPCdEdxPointsPass","",100,0,200);
2289   fQASecondaryProtonsAcceptedList->Add(gSecondaryProtonsNumberOfTPCdEdxPointsPass);
2290
2291   //Rejected secondary protons
2292   /*gDirectory->cd("../");
2293   TDirectory *dirProtonsSecondaryRejected = gDirectory->mkdir("Rejected");
2294   dirProtonsSecondaryRejected->cd();*/
2295
2296   TH1F *gSecondaryProtonsITSClustersReject = new TH1F("gSecondaryProtonsITSClustersReject",
2297                                                       ";N_{clusters} (ITS);Entries",
2298                                                       7,0,7);
2299   fQASecondaryProtonsRejectedList->Add(gSecondaryProtonsITSClustersReject);
2300   TH1F *gSecondaryProtonsChi2PerClusterITSReject = new TH1F("gSecondaryProtonsChi2PerClusterITSReject",
2301                                                             ";x^{2}/N_{clusters} (ITS);Entries",
2302                                                             100,0,4);
2303   fQASecondaryProtonsRejectedList->Add(gSecondaryProtonsChi2PerClusterITSReject);
2304   TH1F *gSecondaryProtonsTPCClustersReject = new TH1F("gSecondaryProtonsTPCClustersReject",
2305                                             ";N_{clusters} (TPC);Entries",
2306                                             100,0,200);
2307   fQASecondaryProtonsRejectedList->Add(gSecondaryProtonsTPCClustersReject);
2308   TH1F *gSecondaryProtonsChi2PerClusterTPCReject = new TH1F("gSecondaryProtonsChi2PerClusterTPCReject",
2309                                                   ";x^{2}/N_{clusters} (TPC);Entries",
2310                                                   100,0,4);
2311   fQASecondaryProtonsRejectedList->Add(gSecondaryProtonsChi2PerClusterTPCReject);
2312   TH1F *gSecondaryProtonsExtCov11Reject = new TH1F("gSecondaryProtonsExtCov11Reject",
2313                                          ";#sigma_{y} [cm];Entries",
2314                                          100,0,4);
2315   fQASecondaryProtonsRejectedList->Add(gSecondaryProtonsExtCov11Reject);
2316   TH1F *gSecondaryProtonsExtCov22Reject = new TH1F("gSecondaryProtonsExtCov22Reject",
2317                                          ";#sigma_{z} [cm];Entries",
2318                                          100,0,4);
2319   fQASecondaryProtonsRejectedList->Add(gSecondaryProtonsExtCov22Reject);
2320   TH1F *gSecondaryProtonsExtCov33Reject = new TH1F("gSecondaryProtonsExtCov33Reject",
2321                                          ";#sigma_{sin(#phi)};Entries",
2322                                          100,0,4);
2323   fQASecondaryProtonsRejectedList->Add(gSecondaryProtonsExtCov33Reject);
2324   TH1F *gSecondaryProtonsExtCov44Reject = new TH1F("gSecondaryProtonsExtCov44Reject",
2325                                          ";#sigma_{tan(#lambda)};Entries",
2326                                          100,0,4);
2327   fQASecondaryProtonsRejectedList->Add(gSecondaryProtonsExtCov44Reject);
2328   TH1F *gSecondaryProtonsExtCov55Reject = new TH1F("gSecondaryProtonsExtCov55Reject",
2329                                          ";#sigma_{1/P_{T}} [GeV/c]^{-1};Entries",
2330                                          100,0,4);
2331   fQASecondaryProtonsRejectedList->Add(gSecondaryProtonsExtCov55Reject);
2332   TH1F *gSecondaryProtonsSigmaToVertexReject = new TH1F("gSecondaryProtonsSigmaToVertexReject",
2333                                              ";#sigma_{Vertex};Entries",
2334                                              100,0,10);
2335   fQASecondaryProtonsRejectedList->Add(gSecondaryProtonsSigmaToVertexReject);
2336   TH1F *gSecondaryProtonsSigmaToVertexTPCReject = new TH1F("gSecondaryProtonsSigmaToVertexTPCReject",
2337                                                            ";#sigma_{Vertex};Entries",
2338                                                            100,0,10);
2339   fQASecondaryProtonsRejectedList->Add(gSecondaryProtonsSigmaToVertexTPCReject);
2340   TH1F *gSecondaryProtonsDCAXYReject = new TH1F("gSecondaryProtonsDCAXYReject",
2341                                                 ";DCA_{xy} [cm];Entries",
2342                                                 100,0,20);
2343   fQASecondaryProtonsRejectedList->Add(gSecondaryProtonsDCAXYReject);
2344   TH1F *gSecondaryProtonsDCAXYTPCReject = new TH1F("gSecondaryProtonsDCAXYTPCReject",
2345                                                    ";DCA_{xy} [cm];Entries",
2346                                                    100,0,20);
2347   fQASecondaryProtonsRejectedList->Add(gSecondaryProtonsDCAXYTPCReject);
2348   TH1F *gSecondaryProtonsDCAZReject = new TH1F("gSecondaryProtonsDCAZReject",
2349                                                ";DCA_{z} [cm];Entries",
2350                                                100,0,20);
2351   fQASecondaryProtonsRejectedList->Add(gSecondaryProtonsDCAZReject);
2352   TH1F *gSecondaryProtonsDCAZTPCReject = new TH1F("gSecondaryProtonsDCAZTPCReject",
2353                                                   ";DCA_{z} [cm];Entries",
2354                                                   100,0,20);
2355   fQASecondaryProtonsRejectedList->Add(gSecondaryProtonsDCAZTPCReject);
2356   TH1F *gSecondaryProtonsConstrainChi2Reject = new TH1F("gSecondaryProtonsConstrainChi2Reject",
2357                                                         ";Log_{10}(#chi^{2});Entries",
2358                                                         100,-10,10);
2359   fQASecondaryProtonsRejectedList->Add(gSecondaryProtonsConstrainChi2Reject);
2360   TH1F *gSecondaryProtonsITSRefitReject = new TH1F("gSecondaryProtonsITSRefitReject",
2361                                                    "",10,-1,1);
2362   fQASecondaryProtonsRejectedList->Add(gSecondaryProtonsITSRefitReject);
2363   TH1F *gSecondaryProtonsTPCRefitReject = new TH1F("gSecondaryProtonsTPCRefitReject",
2364                                                    "",10,-1,1);
2365   fQASecondaryProtonsRejectedList->Add(gSecondaryProtonsTPCRefitReject);
2366   TH1F *gSecondaryProtonsESDpidReject = new TH1F("gSecondaryProtonsESDpidReject",
2367                                                  "",10,-1,1);
2368   fQASecondaryProtonsRejectedList->Add(gSecondaryProtonsESDpidReject);
2369   TH1F *gSecondaryProtonsTPCpidReject = new TH1F("gSecondaryProtonsTPCpidReject",
2370                                                  "",10,-1,1);
2371   fQASecondaryProtonsRejectedList->Add(gSecondaryProtonsTPCpidReject);
2372   TH1F *gSecondaryProtonsPointOnITSLayer1Reject = new TH1F("gSecondaryProtonsPointOnITSLayer1Reject",
2373                                                            "",10,-1,1);
2374   fQASecondaryProtonsRejectedList->Add(gSecondaryProtonsPointOnITSLayer1Reject);
2375   TH1F *gSecondaryProtonsPointOnITSLayer2Reject = new TH1F("gSecondaryProtonsPointOnITSLayer2Reject",
2376                                                            "",10,-1,1);
2377   fQASecondaryProtonsRejectedList->Add(gSecondaryProtonsPointOnITSLayer2Reject);
2378   TH1F *gSecondaryProtonsPointOnITSLayer3Reject = new TH1F("gSecondaryProtonsPointOnITSLayer3Reject",
2379                                                            "",10,-1,1);
2380   fQASecondaryProtonsRejectedList->Add(gSecondaryProtonsPointOnITSLayer3Reject);
2381   TH1F *gSecondaryProtonsPointOnITSLayer4Reject = new TH1F("gSecondaryProtonsPointOnITSLayer4Reject",
2382                                                            "",10,-1,1);
2383   fQASecondaryProtonsRejectedList->Add(gSecondaryProtonsPointOnITSLayer4Reject);
2384   TH1F *gSecondaryProtonsPointOnITSLayer5Reject = new TH1F("gSecondaryProtonsPointOnITSLayer5Reject",
2385                                                            "",10,-1,1);
2386   fQASecondaryProtonsRejectedList->Add(gSecondaryProtonsPointOnITSLayer5Reject);
2387   TH1F *gSecondaryProtonsPointOnITSLayer6Reject = new TH1F("gSecondaryProtonsPointOnITSLayer6Reject",
2388                                                            "",10,-1,1);
2389   fQASecondaryProtonsRejectedList->Add(gSecondaryProtonsPointOnITSLayer6Reject);
2390   TH1F *gSecondaryProtonsNumberOfTPCdEdxPointsReject = new TH1F("gSecondaryProtonsNumberOfTPCdEdxPointsReject","",100,0,200);
2391   fQASecondaryProtonsRejectedList->Add(gSecondaryProtonsNumberOfTPCdEdxPointsReject);  
2392
2393   /*gDirectory->cd("../../../");
2394
2395   //antiprotons
2396   TDirectory *dirAntiProtons = gDirectory->mkdir("AntiProtons");
2397   fGlobalQAList->Add(dirAntiProtons); dirAntiProtons->cd();*/
2398   
2399   //________________________________________________________________//
2400   /*TDirectory *dirAntiProtonsPrimary = gDirectory->mkdir("Primaries");
2401   dirAntiProtonsPrimary->cd();
2402   TDirectory *dirAntiProtonsPrimaryAccepted = gDirectory->mkdir("Accepted");
2403   dirAntiProtonsPrimaryAccepted->cd();*/
2404   
2405   //Accepted primary antiprotons
2406   TH1F *gPrimaryAntiProtonsITSClustersPass = new TH1F("gPrimaryAntiProtonsITSClustersPass",
2407                                                       ";N_{clusters} (ITS);Entries",
2408                                                       7,0,7);
2409   fQAPrimaryAntiProtonsAcceptedList->Add(gPrimaryAntiProtonsITSClustersPass);
2410   TH1F *gPrimaryAntiProtonsChi2PerClusterITSPass = new TH1F("gPrimaryAntiProtonsChi2PerClusterITSPass",
2411                                                             ";x^{2}/N_{clusters} (ITS);Entries",
2412                                                             100,0,4);
2413   fQAPrimaryAntiProtonsAcceptedList->Add(gPrimaryAntiProtonsChi2PerClusterITSPass);
2414   TH1F *gPrimaryAntiProtonsTPCClustersPass = new TH1F("gPrimaryAntiProtonsTPCClustersPass",
2415                                                       ";N_{clusters} (TPC);Entries",
2416                                                       100,0,200);
2417   fQAPrimaryAntiProtonsAcceptedList->Add(gPrimaryAntiProtonsTPCClustersPass);
2418   TH1F *gPrimaryAntiProtonsChi2PerClusterTPCPass = new TH1F("gPrimaryAntiProtonsChi2PerClusterTPCPass",
2419                                                             ";x^{2}/N_{clusters} (TPC);Entries",
2420                                                             100,0,4);
2421   fQAPrimaryAntiProtonsAcceptedList->Add(gPrimaryAntiProtonsChi2PerClusterTPCPass);
2422   TH1F *gPrimaryAntiProtonsExtCov11Pass = new TH1F("gPrimaryAntiProtonsExtCov11Pass",
2423                                                    ";#sigma_{y} [cm];Entries",
2424                                                    100,0,4);
2425   fQAPrimaryAntiProtonsAcceptedList->Add(gPrimaryAntiProtonsExtCov11Pass);
2426   TH1F *gPrimaryAntiProtonsExtCov22Pass = new TH1F("gPrimaryAntiProtonsExtCov22Pass",
2427                                                    ";#sigma_{z} [cm];Entries",
2428                                                    100,0,4);
2429   fQAPrimaryAntiProtonsAcceptedList->Add(gPrimaryAntiProtonsExtCov22Pass);
2430   TH1F *gPrimaryAntiProtonsExtCov33Pass = new TH1F("gPrimaryAntiProtonsExtCov33Pass",
2431                                                    ";#sigma_{sin(#phi)};Entries",
2432                                                    100,0,4);
2433   fQAPrimaryAntiProtonsAcceptedList->Add(gPrimaryAntiProtonsExtCov33Pass);
2434   TH1F *gPrimaryAntiProtonsExtCov44Pass = new TH1F("gPrimaryAntiProtonsExtCov44Pass",
2435                                                    ";#sigma_{tan(#lambda)};Entries",
2436                                                    100,0,4);
2437   fQAPrimaryAntiProtonsAcceptedList->Add(gPrimaryAntiProtonsExtCov44Pass);
2438   TH1F *gPrimaryAntiProtonsExtCov55Pass = new TH1F("gPrimaryAntiProtonsExtCov55Pass",
2439                                                    ";#sigma_{1/P_{T}} [GeV/c]^{-1};Entries",
2440                                                    100,0,4);
2441   fQAPrimaryAntiProtonsAcceptedList->Add(gPrimaryAntiProtonsExtCov55Pass);
2442   TH1F *gPrimaryAntiProtonsSigmaToVertexPass = new TH1F("gPrimaryAntiProtonsSigmaToVertexPass",
2443                                                         ";#sigma_{Vertex};Entries",
2444                                                         100,0,10);
2445   fQAPrimaryAntiProtonsAcceptedList->Add(gPrimaryAntiProtonsSigmaToVertexPass);
2446   TH1F *gPrimaryAntiProtonsSigmaToVertexTPCPass = new TH1F("gPrimaryAntiProtonsSigmaToVertexTPCPass",
2447                                                            ";#sigma_{Vertex};Entries",
2448                                                            100,0,10);
2449   fQAPrimaryAntiProtonsAcceptedList->Add(gPrimaryAntiProtonsSigmaToVertexTPCPass);
2450   TH1F *gPrimaryAntiProtonsDCAXYPass = new TH1F("gPrimaryAntiProtonsDCAXYPass",
2451                                                 ";DCA_{xy} [cm];Entries",
2452                                                 100,0,20);
2453   fQAPrimaryAntiProtonsAcceptedList->Add(gPrimaryAntiProtonsDCAXYPass);
2454   TH1F *gPrimaryAntiProtonsDCAXYTPCPass = new TH1F("gPrimaryAntiProtonsDCAXYTPCPass",
2455                                                    ";DCA_{xy} [cm];Entries",
2456                                                    100,0,20);
2457   fQAPrimaryAntiProtonsAcceptedList->Add(gPrimaryAntiProtonsDCAXYTPCPass);
2458   TH1F *gPrimaryAntiProtonsDCAZPass = new TH1F("gPrimaryAntiProtonsDCAZPass",
2459                                                ";DCA_{z} [cm];Entries",
2460                                                100,0,20);
2461   fQAPrimaryAntiProtonsAcceptedList->Add(gPrimaryAntiProtonsDCAZPass);
2462   TH1F *gPrimaryAntiProtonsDCAZTPCPass = new TH1F("gPrimaryAntiProtonsDCAZTPCPass",
2463                                                   ";DCA_{z} [cm];Entries",
2464                                                   100,0,20);
2465   fQAPrimaryAntiProtonsAcceptedList->Add(gPrimaryAntiProtonsDCAZTPCPass);
2466   TH1F *gPrimaryAntiProtonsConstrainChi2Pass = new TH1F("gPrimaryAntiProtonsConstrainChi2Pass",
2467                                                         ";Log_{10}(#chi^{2});Entries",
2468                                                         100,-10,10);
2469   fQAPrimaryAntiProtonsAcceptedList->Add(gPrimaryAntiProtonsConstrainChi2Pass);
2470   TH1F *gPrimaryAntiProtonsITSRefitPass = new TH1F("gPrimaryAntiProtonsITSRefitPass",
2471                                                    "",10,-1,1);
2472   fQAPrimaryAntiProtonsAcceptedList->Add(gPrimaryAntiProtonsITSRefitPass);
2473   TH1F *gPrimaryAntiProtonsTPCRefitPass = new TH1F("gPrimaryAntiProtonsTPCRefitPass",
2474                                                    "",10,-1,1);
2475   fQAPrimaryAntiProtonsAcceptedList->Add(gPrimaryAntiProtonsTPCRefitPass);
2476   TH1F *gPrimaryAntiProtonsESDpidPass = new TH1F("gPrimaryAntiProtonsESDpidPass",
2477                                                  "",10,-1,1);
2478   fQAPrimaryAntiProtonsAcceptedList->Add(gPrimaryAntiProtonsESDpidPass);
2479   TH1F *gPrimaryAntiProtonsTPCpidPass = new TH1F("gPrimaryAntiProtonsTPCpidPass",
2480                                                  "",10,-1,1);
2481   fQAPrimaryAntiProtonsAcceptedList->Add(gPrimaryAntiProtonsTPCpidPass);
2482   TH1F *gPrimaryAntiProtonsPointOnITSLayer1Pass = new TH1F("gPrimaryAntiProtonsPointOnITSLayer1Pass",
2483                                                            "",10,-1,1);
2484   fQAPrimaryAntiProtonsAcceptedList->Add(gPrimaryAntiProtonsPointOnITSLayer1Pass);
2485   TH1F *gPrimaryAntiProtonsPointOnITSLayer2Pass = new TH1F("gPrimaryAntiProtonsPointOnITSLayer2Pass",
2486                                                            "",10,-1,1);
2487   fQAPrimaryAntiProtonsAcceptedList->Add(gPrimaryAntiProtonsPointOnITSLayer2Pass);
2488   TH1F *gPrimaryAntiProtonsPointOnITSLayer3Pass = new TH1F("gPrimaryAntiProtonsPointOnITSLayer3Pass",
2489                                                            "",10,-1,1);
2490   fQAPrimaryAntiProtonsAcceptedList->Add(gPrimaryAntiProtonsPointOnITSLayer3Pass);
2491   TH1F *gPrimaryAntiProtonsPointOnITSLayer4Pass = new TH1F("gPrimaryAntiProtonsPointOnITSLayer4Pass",
2492                                                            "",10,-1,1);
2493   fQAPrimaryAntiProtonsAcceptedList->Add(gPrimaryAntiProtonsPointOnITSLayer4Pass);
2494   TH1F *gPrimaryAntiProtonsPointOnITSLayer5Pass = new TH1F("gPrimaryAntiProtonsPointOnITSLayer5Pass",
2495                                                            "",10,-1,1);
2496   fQAPrimaryAntiProtonsAcceptedList->Add(gPrimaryAntiProtonsPointOnITSLayer5Pass);
2497   TH1F *gPrimaryAntiProtonsPointOnITSLayer6Pass = new TH1F("gPrimaryAntiProtonsPointOnITSLayer6Pass",
2498                                                            "",10,-1,1);
2499   fQAPrimaryAntiProtonsAcceptedList->Add(gPrimaryAntiProtonsPointOnITSLayer6Pass);
2500   TH1F *gPrimaryAntiProtonsNumberOfTPCdEdxPointsPass = new TH1F("gPrimaryAntiProtonsNumberOfTPCdEdxPointsPass","",100,0,200);
2501   fQAPrimaryAntiProtonsAcceptedList->Add(gPrimaryAntiProtonsNumberOfTPCdEdxPointsPass);
2502   
2503   //Rejected primary antiprotons
2504   /*gDirectory->cd("../");
2505   TDirectory *dirAntiProtonsPrimaryRejected = gDirectory->mkdir("Rejected");
2506   dirAntiProtonsPrimaryRejected->cd();*/
2507   
2508   TH1F *gPrimaryAntiProtonsITSClustersReject = new TH1F("gPrimaryAntiProtonsITSClustersReject",
2509                                                         ";N_{clusters} (ITS);Entries",
2510                                                         7,0,7);
2511   fQAPrimaryAntiProtonsRejectedList->Add(gPrimaryAntiProtonsITSClustersReject);
2512   TH1F *gPrimaryAntiProtonsChi2PerClusterITSReject = new TH1F("gPrimaryAntiProtonsChi2PerClusterITSReject",
2513                                                               ";x^{2}/N_{clusters} (ITS);Entries",
2514                                                               100,0,4);
2515   fQAPrimaryAntiProtonsRejectedList->Add(gPrimaryAntiProtonsChi2PerClusterITSReject);
2516   TH1F *gPrimaryAntiProtonsTPCClustersReject = new TH1F("gPrimaryAntiProtonsTPCClustersReject",
2517                                                         ";N_{clusters} (TPC);Entries",
2518                                                         100,0,200);
2519   fQAPrimaryAntiProtonsRejectedList->Add(gPrimaryAntiProtonsTPCClustersReject);
2520   TH1F *gPrimaryAntiProtonsChi2PerClusterTPCReject = new TH1F("gPrimaryAntiProtonsChi2PerClusterTPCReject",
2521                                                               ";x^{2}/N_{clusters} (TPC);Entries",
2522                                                               100,0,4);
2523   fQAPrimaryAntiProtonsRejectedList->Add(gPrimaryAntiProtonsChi2PerClusterTPCReject);
2524   TH1F *gPrimaryAntiProtonsExtCov11Reject = new TH1F("gPrimaryAntiProtonsExtCov11Reject",
2525                                                      ";#sigma_{y} [cm];Entries",
2526                                                      100,0,4);
2527   fQAPrimaryAntiProtonsRejectedList->Add(gPrimaryAntiProtonsExtCov11Reject);
2528   TH1F *gPrimaryAntiProtonsExtCov22Reject = new TH1F("gPrimaryAntiProtonsExtCov22Reject",
2529                                                      ";#sigma_{z} [cm];Entries",
2530                                                      100,0,4);
2531   fQAPrimaryAntiProtonsRejectedList->Add(gPrimaryAntiProtonsExtCov22Reject);
2532   TH1F *gPrimaryAntiProtonsExtCov33Reject = new TH1F("gPrimaryAntiProtonsExtCov33Reject",
2533                                                      ";#sigma_{sin(#phi)};Entries",
2534                                                      100,0,4);
2535   fQAPrimaryAntiProtonsRejectedList->Add(gPrimaryAntiProtonsExtCov33Reject);
2536   TH1F *gPrimaryAntiProtonsExtCov44Reject = new TH1F("gPrimaryAntiProtonsExtCov44Reject",
2537                                                      ";#sigma_{tan(#lambda)};Entries",
2538                                                      100,0,4);
2539   fQAPrimaryAntiProtonsRejectedList->Add(gPrimaryAntiProtonsExtCov44Reject);
2540   TH1F *gPrimaryAntiProtonsExtCov55Reject = new TH1F("gPrimaryAntiProtonsExtCov55Reject",
2541                                                      ";#sigma_{1/P_{T}} [GeV/c]^{-1};Entries",
2542                                                      100,0,4);
2543   fQAPrimaryAntiProtonsRejectedList->Add(gPrimaryAntiProtonsExtCov55Reject);
2544   TH1F *gPrimaryAntiProtonsSigmaToVertexReject = new TH1F("gPrimaryAntiProtonsSigmaToVertexReject",
2545                                                           ";#sigma_{Vertex};Entries",
2546                                                           100,0,10);
2547   fQAPrimaryAntiProtonsRejectedList->Add(gPrimaryAntiProtonsSigmaToVertexReject);
2548   TH1F *gPrimaryAntiProtonsSigmaToVertexTPCReject = new TH1F("gPrimaryAntiProtonsSigmaToVertexTPCReject",
2549                                                              ";#sigma_{Vertex};Entries",
2550                                                              100,0,10);
2551   fQAPrimaryAntiProtonsRejectedList->Add(gPrimaryAntiProtonsSigmaToVertexTPCReject);
2552   TH1F *gPrimaryAntiProtonsDCAXYReject = new TH1F("gPrimaryAntiProtonsDCAXYReject",
2553                                                   ";DCA_{xy} [cm];Entries",
2554                                                   100,0,20);
2555   fQAPrimaryAntiProtonsRejectedList->Add(gPrimaryAntiProtonsDCAXYReject);
2556   TH1F *gPrimaryAntiProtonsDCAXYTPCReject = new TH1F("gPrimaryAntiProtonsDCAXYTPCReject",
2557                                                      ";DCA_{xy} [cm];Entries",
2558                                                      100,0,20);
2559   fQAPrimaryAntiProtonsRejectedList->Add(gPrimaryAntiProtonsDCAXYTPCReject);
2560   TH1F *gPrimaryAntiProtonsDCAZReject = new TH1F("gPrimaryAntiProtonsDCAZReject",
2561                                                  ";DCA_{z} [cm];Entries",
2562                                                  100,0,20);
2563   fQAPrimaryAntiProtonsRejectedList->Add(gPrimaryAntiProtonsDCAZReject);
2564   TH1F *gPrimaryAntiProtonsDCAZTPCReject = new TH1F("gPrimaryAntiProtonsDCAZTPCReject",
2565                                                     ";DCA_{z} [cm];Entries",
2566                                                     100,0,20);
2567   fQAPrimaryAntiProtonsRejectedList->Add(gPrimaryAntiProtonsDCAZTPCReject);
2568   TH1F *gPrimaryAntiProtonsConstrainChi2Reject = new TH1F("gPrimaryAntiProtonsConstrainChi2Reject",
2569                                                           ";Log_{10}(#chi^{2});Entries",
2570                                                           100,-10,10);
2571   fQAPrimaryAntiProtonsRejectedList->Add(gPrimaryAntiProtonsConstrainChi2Reject);
2572   TH1F *gPrimaryAntiProtonsITSRefitReject = new TH1F("gPrimaryAntiProtonsITSRefitReject",
2573                                                      "",10,-1,1);
2574   fQAPrimaryAntiProtonsRejectedList->Add(gPrimaryAntiProtonsITSRefitReject);
2575   TH1F *gPrimaryAntiProtonsTPCRefitReject = new TH1F("gPrimaryAntiProtonsTPCRefitReject",
2576                                                      "",10,-1,1);
2577   fQAPrimaryAntiProtonsRejectedList->Add(gPrimaryAntiProtonsTPCRefitReject);
2578   TH1F *gPrimaryAntiProtonsESDpidReject = new TH1F("gPrimaryAntiProtonsESDpidReject",
2579                                                    "",10,-1,1);
2580   fQAPrimaryAntiProtonsRejectedList->Add(gPrimaryAntiProtonsESDpidReject);
2581   TH1F *gPrimaryAntiProtonsTPCpidReject = new TH1F("gPrimaryAntiProtonsTPCpidReject",
2582                                                    "",10,-1,1);
2583   fQAPrimaryAntiProtonsRejectedList->Add(gPrimaryAntiProtonsTPCpidReject);
2584   TH1F *gPrimaryAntiProtonsPointOnITSLayer1Reject = new TH1F("gPrimaryAntiProtonsPointOnITSLayer1Reject",
2585                                                              "",10,-1,1);
2586   fQAPrimaryAntiProtonsRejectedList->Add(gPrimaryAntiProtonsPointOnITSLayer1Reject);
2587   TH1F *gPrimaryAntiProtonsPointOnITSLayer2Reject = new TH1F("gPrimaryAntiProtonsPointOnITSLayer2Reject",
2588                                                              "",10,-1,1);
2589   fQAPrimaryAntiProtonsRejectedList->Add(gPrimaryAntiProtonsPointOnITSLayer2Reject);
2590   TH1F *gPrimaryAntiProtonsPointOnITSLayer3Reject = new TH1F("gPrimaryAntiProtonsPointOnITSLayer3Reject",
2591                                                              "",10,-1,1);
2592   fQAPrimaryAntiProtonsRejectedList->Add(gPrimaryAntiProtonsPointOnITSLayer3Reject);
2593   TH1F *gPrimaryAntiProtonsPointOnITSLayer4Reject = new TH1F("gPrimaryAntiProtonsPointOnITSLayer4Reject",
2594                                                              "",10,-1,1);
2595   fQAPrimaryAntiProtonsRejectedList->Add(gPrimaryAntiProtonsPointOnITSLayer4Reject);
2596   TH1F *gPrimaryAntiProtonsPointOnITSLayer5Reject = new TH1F("gPrimaryAntiProtonsPointOnITSLayer5Reject",
2597                                                              "",10,-1,1);
2598   fQAPrimaryAntiProtonsRejectedList->Add(gPrimaryAntiProtonsPointOnITSLayer5Reject);
2599   TH1F *gPrimaryAntiProtonsPointOnITSLayer6Reject = new TH1F("gPrimaryAntiProtonsPointOnITSLayer6Reject",
2600                                                              "",10,-1,1);
2601   fQAPrimaryAntiProtonsRejectedList->Add(gPrimaryAntiProtonsPointOnITSLayer6Reject);
2602   TH1F *gPrimaryAntiProtonsNumberOfTPCdEdxPointsReject = new TH1F("gPrimaryAntiProtonsNumberOfTPCdEdxPointsReject","",100,0,200);
2603   fQAPrimaryAntiProtonsRejectedList->Add(gPrimaryAntiProtonsNumberOfTPCdEdxPointsReject);
2604   
2605   //________________________________________________________________//
2606   /*gDirectory->cd("../../");
2607
2608   TDirectory *dirAntiProtonsSecondary = gDirectory->mkdir("Secondaries");
2609   dirAntiProtonsSecondary->cd();
2610   TDirectory *dirAntiProtonsSecondaryAccepted = gDirectory->mkdir("Accepted");
2611   dirAntiProtonsSecondaryAccepted->cd();*/
2612
2613   //Accepted secondary antiprotons
2614   TH1F *gSecondaryAntiProtonsITSClustersPass = new TH1F("gSecondaryAntiProtonsITSClustersPass",
2615                                                         ";N_{clusters} (ITS);Entries",
2616                                                         7,0,7);
2617   fQASecondaryAntiProtonsAcceptedList->Add(gSecondaryAntiProtonsITSClustersPass);
2618   TH1F *gSecondaryAntiProtonsChi2PerClusterITSPass = new TH1F("gSecondaryAntiProtonsChi2PerClusterITSPass",
2619                                                               ";x^{2}/N_{clusters} (ITS);Entries",
2620                                                               100,0,4);
2621   fQASecondaryAntiProtonsAcceptedList->Add(gSecondaryAntiProtonsChi2PerClusterITSPass);
2622   TH1F *gSecondaryAntiProtonsTPCClustersPass = new TH1F("gSecondaryAntiProtonsTPCClustersPass",
2623                                                         ";N_{clusters} (TPC);Entries",
2624                                                         100,0,200);
2625   fQASecondaryAntiProtonsAcceptedList->Add(gSecondaryAntiProtonsTPCClustersPass);
2626   TH1F *gSecondaryAntiProtonsChi2PerClusterTPCPass = new TH1F("gSecondaryAntiProtonsChi2PerClusterTPCPass",
2627                                                               ";x^{2}/N_{clusters} (TPC);Entries",
2628                                                               100,0,4);
2629   fQASecondaryAntiProtonsAcceptedList->Add(gSecondaryAntiProtonsChi2PerClusterTPCPass);
2630   TH1F *gSecondaryAntiProtonsExtCov11Pass = new TH1F("gSecondaryAntiProtonsExtCov11Pass",
2631                                                      ";#sigma_{y} [cm];Entries",
2632                                                      100,0,4);
2633   fQASecondaryAntiProtonsAcceptedList->Add(gSecondaryAntiProtonsExtCov11Pass);
2634   TH1F *gSecondaryAntiProtonsExtCov22Pass = new TH1F("gSecondaryAntiProtonsExtCov22Pass",
2635                                                      ";#sigma_{z} [cm];Entries",
2636                                                      100,0,4);
2637   fQASecondaryAntiProtonsAcceptedList->Add(gSecondaryAntiProtonsExtCov22Pass);
2638   TH1F *gSecondaryAntiProtonsExtCov33Pass = new TH1F("gSecondaryAntiProtonsExtCov33Pass",
2639                                                      ";#sigma_{sin(#phi)};Entries",
2640                                                      100,0,4);
2641   fQASecondaryAntiProtonsAcceptedList->Add(gSecondaryAntiProtonsExtCov33Pass);
2642   TH1F *gSecondaryAntiProtonsExtCov44Pass = new TH1F("gSecondaryAntiProtonsExtCov44Pass",
2643                                                      ";#sigma_{tan(#lambda)};Entries",
2644                                                      100,0,4);
2645   fQASecondaryAntiProtonsAcceptedList->Add(gSecondaryAntiProtonsExtCov44Pass);
2646   TH1F *gSecondaryAntiProtonsExtCov55Pass = new TH1F("gSecondaryAntiProtonsExtCov55Pass",
2647                                                      ";#sigma_{1/P_{T}} [GeV/c]^{-1};Entries",
2648                                                      100,0,4);
2649   fQASecondaryAntiProtonsAcceptedList->Add(gSecondaryAntiProtonsExtCov55Pass);
2650   TH1F *gSecondaryAntiProtonsSigmaToVertexPass = new TH1F("gSecondaryAntiProtonsSigmaToVertexPass",
2651                                                           ";#sigma_{Vertex};Entries",
2652                                                           100,0,10);
2653   fQASecondaryAntiProtonsAcceptedList->Add(gSecondaryAntiProtonsSigmaToVertexPass);
2654   TH1F *gSecondaryAntiProtonsSigmaToVertexTPCPass = new TH1F("gSecondaryAntiProtonsSigmaToVertexTPCPass",
2655                                                              ";#sigma_{Vertex};Entries",
2656                                                              100,0,10);
2657   fQASecondaryAntiProtonsAcceptedList->Add(gSecondaryAntiProtonsSigmaToVertexTPCPass);
2658   TH1F *gSecondaryAntiProtonsDCAXYPass = new TH1F("gSecondaryAntiProtonsDCAXYPass",
2659                                                   ";DCA_{xy} [cm];Entries",
2660                                                   100,0,20);
2661   fQASecondaryAntiProtonsAcceptedList->Add(gSecondaryAntiProtonsDCAXYPass);
2662   TH1F *gSecondaryAntiProtonsDCAXYTPCPass = new TH1F("gSecondaryAntiProtonsDCAXYTPCPass",
2663                                                      ";DCA_{xy} [cm];Entries",
2664                                                      100,0,20);
2665   fQASecondaryAntiProtonsAcceptedList->Add(gSecondaryAntiProtonsDCAXYTPCPass);
2666   TH1F *gSecondaryAntiProtonsDCAZPass = new TH1F("gSecondaryAntiProtonsDCAZPass",
2667                                                  ";DCA_{z} [cm];Entries",
2668                                                  100,0,20);
2669   fQASecondaryAntiProtonsAcceptedList->Add(gSecondaryAntiProtonsDCAZPass);
2670   TH1F *gSecondaryAntiProtonsDCAZTPCPass = new TH1F("gSecondaryAntiProtonsDCAZTPCPass",
2671                                                     ";DCA_{z} [cm];Entries",
2672                                                     100,0,20);
2673   fQASecondaryAntiProtonsAcceptedList->Add(gSecondaryAntiProtonsDCAZTPCPass);
2674   TH1F *gSecondaryAntiProtonsConstrainChi2Pass = new TH1F("gSecondaryAntiProtonsConstrainChi2Pass",
2675                                                           ";Log_{10}(#chi^{2});Entries",
2676                                                           100,-10,10);
2677   fQASecondaryAntiProtonsAcceptedList->Add(gSecondaryAntiProtonsConstrainChi2Pass);
2678   TH1F *gSecondaryAntiProtonsITSRefitPass = new TH1F("gSecondaryAntiProtonsITSRefitPass",
2679                                                      "",10,-1,1);
2680   fQASecondaryAntiProtonsAcceptedList->Add(gSecondaryAntiProtonsITSRefitPass);
2681   TH1F *gSecondaryAntiProtonsTPCRefitPass = new TH1F("gSecondaryAntiProtonsTPCRefitPass",
2682                                                      "",10,-1,1);
2683   fQASecondaryAntiProtonsAcceptedList->Add(gSecondaryAntiProtonsTPCRefitPass);
2684   TH1F *gSecondaryAntiProtonsESDpidPass = new TH1F("gSecondaryAntiProtonsESDpidPass",
2685                                                    "",10,-1,1);
2686   fQASecondaryAntiProtonsAcceptedList->Add(gSecondaryAntiProtonsESDpidPass);
2687   TH1F *gSecondaryAntiProtonsTPCpidPass = new TH1F("gSecondaryAntiProtonsTPCpidPass",
2688                                                    "",10,-1,1);
2689   fQASecondaryAntiProtonsAcceptedList->Add(gSecondaryAntiProtonsTPCpidPass);
2690   TH1F *gSecondaryAntiProtonsPointOnITSLayer1Pass = new TH1F("gSecondaryAntiProtonsPointOnITSLayer1Pass",
2691                                                              "",10,-1,1);
2692   fQASecondaryAntiProtonsAcceptedList->Add(gSecondaryAntiProtonsPointOnITSLayer1Pass);
2693   TH1F *gSecondaryAntiProtonsPointOnITSLayer2Pass = new TH1F("gSecondaryAntiProtonsPointOnITSLayer2Pass",
2694                                                              "",10,-1,1);
2695   fQASecondaryAntiProtonsAcceptedList->Add(gSecondaryAntiProtonsPointOnITSLayer2Pass);
2696   TH1F *gSecondaryAntiProtonsPointOnITSLayer3Pass = new TH1F("gSecondaryAntiProtonsPointOnITSLayer3Pass",
2697                                                              "",10,-1,1);
2698   fQASecondaryAntiProtonsAcceptedList->Add(gSecondaryAntiProtonsPointOnITSLayer3Pass);
2699   TH1F *gSecondaryAntiProtonsPointOnITSLayer4Pass = new TH1F("gSecondaryAntiProtonsPointOnITSLayer4Pass",
2700                                                              "",10,-1,1);
2701   fQASecondaryAntiProtonsAcceptedList->Add(gSecondaryAntiProtonsPointOnITSLayer4Pass);
2702   TH1F *gSecondaryAntiProtonsPointOnITSLayer5Pass = new TH1F("gSecondaryAntiProtonsPointOnITSLayer5Pass",
2703                                                              "",10,-1,1);
2704   fQASecondaryAntiProtonsAcceptedList->Add(gSecondaryAntiProtonsPointOnITSLayer5Pass);
2705   TH1F *gSecondaryAntiProtonsPointOnITSLayer6Pass = new TH1F("gSecondaryAntiProtonsPointOnITSLayer6Pass",
2706                                                              "",10,-1,1);
2707   fQASecondaryAntiProtonsAcceptedList->Add(gSecondaryAntiProtonsPointOnITSLayer6Pass);
2708   TH1F *gSecondaryAntiProtonsNumberOfTPCdEdxPointsPass = new TH1F("gSecondaryAntiProtonsNumberOfTPCdEdxPointsPass","",100,0,200);
2709   fQASecondaryAntiProtonsAcceptedList->Add(gSecondaryAntiProtonsNumberOfTPCdEdxPointsPass);
2710
2711   //Rejected secondary antiprotons
2712   /*gDirectory->cd("../");
2713   TDirectory *dirAntiProtonsSecondaryRejected = gDirectory->mkdir("Rejected");
2714   dirAntiProtonsSecondaryRejected->cd();*/
2715
2716   TH1F *gSecondaryAntiProtonsITSClustersReject = new TH1F("gSecondaryAntiProtonsITSClustersReject",
2717                                                           ";N_{clusters} (ITS);Entries",
2718                                                           7,0,7);
2719   fQASecondaryAntiProtonsRejectedList->Add(gSecondaryAntiProtonsITSClustersReject);
2720   TH1F *gSecondaryAntiProtonsChi2PerClusterITSReject = new TH1F("gSecondaryAntiProtonsChi2PerClusterITSReject",
2721                                                                 ";x^{2}/N_{clusters} (ITS);Entries",
2722                                                                 100,0,4);
2723   fQASecondaryAntiProtonsRejectedList->Add(gSecondaryAntiProtonsChi2PerClusterITSReject);
2724   TH1F *gSecondaryAntiProtonsTPCClustersReject = new TH1F("gSecondaryAntiProtonsTPCClustersReject",
2725                                                           ";N_{clusters} (TPC);Entries",
2726                                                           100,0,200);
2727   fQASecondaryAntiProtonsRejectedList->Add(gSecondaryAntiProtonsTPCClustersReject);
2728   TH1F *gSecondaryAntiProtonsChi2PerClusterTPCReject = new TH1F("gSecondaryAntiProtonsChi2PerClusterTPCReject",
2729                                                                 ";x^{2}/N_{clusters} (TPC);Entries",
2730                                                                 100,0,4);
2731   fQASecondaryAntiProtonsRejectedList->Add(gSecondaryAntiProtonsChi2PerClusterTPCReject);
2732   TH1F *gSecondaryAntiProtonsExtCov11Reject = new TH1F("gSecondaryAntiProtonsExtCov11Reject",
2733                                                        ";#sigma_{y} [cm];Entries",
2734                                                        100,0,4);
2735   fQASecondaryAntiProtonsRejectedList->Add(gSecondaryAntiProtonsExtCov11Reject);
2736   TH1F *gSecondaryAntiProtonsExtCov22Reject = new TH1F("gSecondaryAntiProtonsExtCov22Reject",
2737                                                        ";#sigma_{z} [cm];Entries",
2738                                                        100,0,4);
2739   fQASecondaryAntiProtonsRejectedList->Add(gSecondaryAntiProtonsExtCov22Reject);
2740   TH1F *gSecondaryAntiProtonsExtCov33Reject = new TH1F("gSecondaryAntiProtonsExtCov33Reject",
2741                                                        ";#sigma_{sin(#phi)};Entries",
2742                                                        100,0,4);
2743   fQASecondaryAntiProtonsRejectedList->Add(gSecondaryAntiProtonsExtCov33Reject);
2744   TH1F *gSecondaryAntiProtonsExtCov44Reject = new TH1F("gSecondaryAntiProtonsExtCov44Reject",
2745                                                        ";#sigma_{tan(#lambda)};Entries",
2746                                                        100,0,4);
2747   fQASecondaryAntiProtonsRejectedList->Add(gSecondaryAntiProtonsExtCov44Reject);
2748   TH1F *gSecondaryAntiProtonsExtCov55Reject = new TH1F("gSecondaryAntiProtonsExtCov55Reject",
2749                                                        ";#sigma_{1/P_{T}} [GeV/c]^{-1};Entries",
2750                                                        100,0,4);
2751   fQASecondaryAntiProtonsRejectedList->Add(gSecondaryAntiProtonsExtCov55Reject);
2752   TH1F *gSecondaryAntiProtonsSigmaToVertexReject = new TH1F("gSecondaryAntiProtonsSigmaToVertexReject",
2753                                                             ";#sigma_{Vertex};Entries",
2754                                                             100,0,10);
2755   fQASecondaryAntiProtonsRejectedList->Add(gSecondaryAntiProtonsSigmaToVertexReject);
2756   TH1F *gSecondaryAntiProtonsSigmaToVertexTPCReject = new TH1F("gSecondaryAntiProtonsSigmaToVertexTPCReject",
2757                                                                ";#sigma_{Vertex};Entries",
2758                                                                100,0,10);
2759   fQASecondaryAntiProtonsRejectedList->Add(gSecondaryAntiProtonsSigmaToVertexTPCReject);
2760   TH1F *gSecondaryAntiProtonsDCAXYReject = new TH1F("gSecondaryAntiProtonsDCAXYReject",
2761                                                     ";DCA_{xy} [cm];Entries",
2762                                                     100,0,20);
2763   fQASecondaryAntiProtonsRejectedList->Add(gSecondaryAntiProtonsDCAXYReject);
2764   TH1F *gSecondaryAntiProtonsDCAXYTPCReject = new TH1F("gSecondaryAntiProtonsDCAXYTPCReject",
2765                                                        ";DCA_{xy} [cm];Entries",
2766                                                        100,0,20);
2767   fQASecondaryAntiProtonsRejectedList->Add(gSecondaryAntiProtonsDCAXYTPCReject);
2768   TH1F *gSecondaryAntiProtonsDCAZReject = new TH1F("gSecondaryAntiProtonsDCAZReject",
2769                                                    ";DCA_{z} [cm];Entries",
2770                                                    100,0,20);
2771   fQASecondaryAntiProtonsRejectedList->Add(gSecondaryAntiProtonsDCAZReject);
2772   TH1F *gSecondaryAntiProtonsDCAZTPCReject = new TH1F("gSecondaryAntiProtonsDCAZTPCReject",
2773                                                       ";DCA_{z} [cm];Entries",
2774                                                       100,0,20);
2775   fQASecondaryAntiProtonsRejectedList->Add(gSecondaryAntiProtonsDCAZTPCReject);
2776   TH1F *gSecondaryAntiProtonsConstrainChi2Reject = new TH1F("gSecondaryAntiProtonsConstrainChi2Reject",
2777                                                             ";Log_{10}(#chi^{2});Entries",
2778                                                             100,-10,10);
2779   fQASecondaryAntiProtonsRejectedList->Add(gSecondaryAntiProtonsConstrainChi2Reject);
2780   TH1F *gSecondaryAntiProtonsITSRefitReject = new TH1F("gSecondaryAntiProtonsITSRefitReject",
2781                                                        "",10,-1,1);
2782   fQASecondaryAntiProtonsRejectedList->Add(gSecondaryAntiProtonsITSRefitReject);
2783   TH1F *gSecondaryAntiProtonsTPCRefitReject = new TH1F("gSecondaryAntiProtonsTPCRefitReject",
2784                                                        "",10,-1,1);
2785   fQASecondaryAntiProtonsRejectedList->Add(gSecondaryAntiProtonsTPCRefitReject);
2786   TH1F *gSecondaryAntiProtonsESDpidReject = new TH1F("gSecondaryAntiProtonsESDpidReject",
2787                                                      "",10,-1,1);
2788   fQASecondaryAntiProtonsRejectedList->Add(gSecondaryAntiProtonsESDpidReject);
2789   TH1F *gSecondaryAntiProtonsTPCpidReject = new TH1F("gSecondaryAntiProtonsTPCpidReject",
2790                                                      "",10,-1,1);
2791   fQASecondaryAntiProtonsRejectedList->Add(gSecondaryAntiProtonsTPCpidReject);
2792   TH1F *gSecondaryAntiProtonsPointOnITSLayer1Reject = new TH1F("gSecondaryAntiProtonsPointOnITSLayer1Reject",
2793                                                              "",10,-1,1);
2794   fQASecondaryAntiProtonsRejectedList->Add(gSecondaryAntiProtonsPointOnITSLayer1Reject);
2795   TH1F *gSecondaryAntiProtonsPointOnITSLayer2Reject = new TH1F("gSecondaryAntiProtonsPointOnITSLayer2Reject",
2796                                                              "",10,-1,1);
2797   fQASecondaryAntiProtonsRejectedList->Add(gSecondaryAntiProtonsPointOnITSLayer2Reject);
2798   TH1F *gSecondaryAntiProtonsPointOnITSLayer3Reject = new TH1F("gSecondaryAntiProtonsPointOnITSLayer3Reject",
2799                                                              "",10,-1,1);
2800   fQASecondaryAntiProtonsRejectedList->Add(gSecondaryAntiProtonsPointOnITSLayer3Reject);
2801   TH1F *gSecondaryAntiProtonsPointOnITSLayer4Reject = new TH1F("gSecondaryAntiProtonsPointOnITSLayer4Reject",
2802                                                              "",10,-1,1);
2803   fQASecondaryAntiProtonsRejectedList->Add(gSecondaryAntiProtonsPointOnITSLayer4Reject);
2804   TH1F *gSecondaryAntiProtonsPointOnITSLayer5Reject = new TH1F("gSecondaryAntiProtonsPointOnITSLayer5Reject",
2805                                                              "",10,-1,1);
2806   fQASecondaryAntiProtonsRejectedList->Add(gSecondaryAntiProtonsPointOnITSLayer5Reject);
2807   TH1F *gSecondaryAntiProtonsPointOnITSLayer6Reject = new TH1F("gSecondaryAntiProtonsPointOnITSLayer6Reject",
2808                                                              "",10,-1,1);
2809   fQASecondaryAntiProtonsRejectedList->Add(gSecondaryAntiProtonsPointOnITSLayer6Reject);
2810   TH1F *gSecondaryAntiProtonsNumberOfTPCdEdxPointsReject = new TH1F("gSecondaryAntiProtonsNumberOfTPCdEdxPointsReject","",100,0,200);
2811   fQASecondaryAntiProtonsRejectedList->Add(gSecondaryAntiProtonsNumberOfTPCdEdxPointsReject);
2812 }
2813
2814 //____________________________________________________________________//
2815 void AliProtonQAAnalysis::RunReconstructionEfficiencyAnalysis(AliMCEvent *const mcEvent, 
2816                                                               AliESDEvent *esd,
2817                                                               const AliESDVertex *vertex) {
2818   //Run the reconstruction efficiency code (primaries & secondaries)
2819   AliStack *stack = mcEvent->Stack();
2820
2821   Int_t nMCParticles = mcEvent->GetNumberOfTracks();
2822   Int_t nMCLabelCounter = 0;
2823   TArrayI labelMCArray(nMCParticles);
2824
2825   for (Int_t iTracks = 0; iTracks < mcEvent->GetNumberOfTracks(); iTracks++) {
2826     AliMCParticle *mcTrack = mcEvent->GetTrack(iTracks);
2827     if (!mcTrack) {
2828       Printf("ERROR: Could not receive track %d (mc loop)", iTracks);
2829       continue;
2830     }
2831     if(TMath::Abs(mcTrack->Eta()) > 1.0) continue;//acceptance
2832     if((mcTrack->Pt() > fMaxPt)||(mcTrack->Pt() < fMinPt)) continue;
2833     if(fProtonAnalysisBase->GetEtaMode()) {
2834       if((mcTrack->Eta() > fMaxY)|| (mcTrack->Eta() < fMinY)) continue;
2835     }
2836     else 
2837       if((fProtonAnalysisBase->Rapidity(mcTrack->Px(),mcTrack->Py(),mcTrack->Pz()) > fMaxY)||(fProtonAnalysisBase->Rapidity(mcTrack->Px(),mcTrack->Py(),mcTrack->Pz()) < fMinY)) continue;
2838     
2839     // Loop over Track References
2840     Bool_t labelTPC = kFALSE;
2841     AliTrackReference* trackRef = 0;
2842     for (Int_t iTrackRef = 0; iTrackRef  < mcTrack->GetNumberOfTrackReferences(); iTrackRef++) {
2843       trackRef = mcTrack->GetTrackReference(iTrackRef);
2844       if(trackRef) {
2845         Int_t detectorId = trackRef->DetectorId(); 
2846         if (detectorId == AliTrackReference::kTPC) {        
2847           labelTPC = kTRUE;
2848           break;
2849         }
2850       }      
2851     }
2852
2853     //findable tracks
2854     if (labelTPC) {
2855       TParticle* particle = mcTrack->Particle();
2856       if(!particle) continue;
2857       Int_t pdgcode = particle->GetPdgCode();
2858       if(TMath::Abs(pdgcode) != 2212) continue;
2859       
2860       labelMCArray.AddAt(iTracks,nMCLabelCounter);
2861       nMCLabelCounter += 1;
2862
2863       if(iTracks <= stack->GetNprimary()) {
2864         if(pdgcode == 2212) {
2865           if(fProtonAnalysisBase->GetEtaMode()) 
2866             ((TH2D *)(fEfficiencyList->At(0)))->Fill(particle->Eta(),
2867                                                      particle->Pt());
2868           else
2869             ((TH2D *)(fEfficiencyList->At(0)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
2870                                                                                    particle->Py(),
2871                                                                                    particle->Pz()),
2872                                                      particle->Pt());
2873         }//protons
2874         if(pdgcode == -2212) {
2875           if(fProtonAnalysisBase->GetEtaMode()) 
2876             ((TH2D *)(fEfficiencyList->At(1)))->Fill(particle->Eta(),
2877                                                      particle->Pt());
2878           else
2879             ((TH2D *)(fEfficiencyList->At(1)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
2880                                                                                    particle->Py(),
2881                                                                                    particle->Pz()),
2882                                                      particle->Pt());
2883         }//antiprotons
2884       }//primaries
2885       else {
2886         //secondaries
2887         Int_t lPartMother = -1;
2888         Int_t motherPDGCode = -1;
2889         lPartMother = particle->GetFirstMother();
2890         AliMCParticle *mcMotherTrack = mcEvent->GetTrack(lPartMother);
2891         TParticle *motherParticle = mcMotherTrack->Particle();
2892         if(motherParticle) motherPDGCode = motherParticle->GetPdgCode();
2893         
2894         if(pdgcode == 2212) {
2895           if((particle->GetUniqueID() == 4)&&(TMath::Abs(motherPDGCode) == 3122)) {
2896             if(fProtonAnalysisBase->GetEtaMode()) 
2897               ((TH2D *)(fEfficiencyList->At(2)))->Fill(particle->Eta(),
2898                                                        particle->Pt());
2899             else
2900               ((TH2D *)(fEfficiencyList->At(2)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
2901                                                                 particle->Py(),
2902                                                                 particle->Pz()),
2903                                                        particle->Pt());
2904           }//weak decays
2905           if((particle->GetUniqueID() == 13)) {
2906             if(fProtonAnalysisBase->GetEtaMode()) 
2907               ((TH2D *)(fEfficiencyList->At(4)))->Fill(particle->Eta(),
2908                                                        particle->Pt());
2909             else
2910               ((TH2D *)(fEfficiencyList->At(4)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
2911                                                                 particle->Py(),
2912                                                                 particle->Pz()),
2913                                                        particle->Pt());
2914           }//hadronic interactions
2915         }//protons
2916         if(pdgcode == -2212) {
2917           if((particle->GetUniqueID() == 4)&&(TMath::Abs(motherPDGCode) == 3122)) {
2918             if(fProtonAnalysisBase->GetEtaMode()) 
2919               ((TH2D *)(fEfficiencyList->At(3)))->Fill(particle->Eta(),
2920                                                        particle->Pt());
2921             else
2922               ((TH2D *)(fEfficiencyList->At(3)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
2923                                                                 particle->Py(),
2924                                                                 particle->Pz()),
2925                                                        particle->Pt());
2926           }//weak decays
2927           if((particle->GetUniqueID() == 13)) {
2928             if(fProtonAnalysisBase->GetEtaMode()) 
2929               ((TH2D *)(fEfficiencyList->At(5)))->Fill(particle->Eta(),
2930                                                        particle->Pt());
2931             else
2932               ((TH2D *)(fEfficiencyList->At(5)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
2933                                                                 particle->Py(),
2934                                                                 particle->Pz()),
2935                                                        particle->Pt());
2936           }//hadronic interactions
2937         }//antiprotons
2938       }//secondaries
2939     }//findable tracks
2940   }//MC track loop
2941
2942   //ESD track loop
2943   Bool_t iFound = kFALSE;
2944   Int_t mcGoods = nMCLabelCounter;
2945   for (Int_t k = 0; k < mcGoods; k++) {
2946     Int_t mcLabel = labelMCArray.At(k);
2947     iFound = kFALSE;
2948
2949     Int_t nGoodTracks = esd->GetNumberOfTracks();
2950     TArrayI labelArray(nGoodTracks);
2951     Int_t labelCounter = 0;
2952     for(Int_t iTracks = 0; iTracks < nGoodTracks; iTracks++) {
2953       AliESDtrack* track = esd->GetTrack(iTracks);
2954       if(!track) continue;
2955             
2956       //TPC only
2957       if((fProtonAnalysisBase->GetAnalysisMode()==AliProtonAnalysisBase::kTPC)||(fProtonAnalysisBase->GetAnalysisMode()==AliProtonAnalysisBase::kHybrid)) {
2958         AliExternalTrackParam *tpcTrack = (AliExternalTrackParam *)track->GetTPCInnerParam();
2959         if(!tpcTrack) continue;
2960         
2961         Int_t label = TMath::Abs(track->GetTPCLabel());
2962         if(IsLabelUsed(labelArray,label)) continue;
2963         labelArray.AddAt(label,labelCounter);
2964         labelCounter += 1;
2965         
2966         if (mcLabel != TMath::Abs(label)) continue;
2967         if(mcLabel != label) continue;
2968         
2969         TParticle *particle = stack->Particle(label);
2970         if(!particle) continue;
2971         Int_t pdgcode = particle->GetPdgCode();
2972         if(TMath::Abs(particle->Eta()) > 1.0) continue;//acceptance
2973         if((particle->Pt() > fMaxPt)||(particle->Pt() < fMinPt)) continue;
2974         if(fProtonAnalysisBase->GetEtaMode()) {
2975           if((particle->Eta() > fMaxY)|| (particle->Eta() < fMinY)) continue;
2976         }
2977         else 
2978           if((fProtonAnalysisBase->Rapidity(particle->Px(),particle->Py(),particle->Pz()) > fMaxY)||(fProtonAnalysisBase->Rapidity(particle->Px(),particle->Py(),particle->Pz()) < fMinY)) continue;
2979                 
2980         if(fUseCutsInEfficiency) 
2981           if(!fProtonAnalysisBase->IsAccepted(esd,vertex,track)) continue;
2982         
2983         //reconstructed primary (anti)protons
2984         if(pdgcode == 2212) {
2985           if(label <= stack->GetNprimary()) {
2986             if(fProtonAnalysisBase->GetEtaMode())
2987               ((TH2D *)(fEfficiencyList->At(6)))->Fill(particle->Eta(),
2988                                                        particle->Pt());
2989             else
2990               ((TH2D *)(fEfficiencyList->At(6)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
2991                                                                 particle->Py(),
2992                                                                 particle->Pz()),
2993                                                        particle->Pt());
2994           }//primaries
2995           if(label > stack->GetNprimary()) {
2996             Int_t lPartMother = -1;
2997             Int_t motherPDGCode = -1;
2998             lPartMother = particle->GetFirstMother();
2999             TParticle *motherParticle = stack->Particle(lPartMother);
3000             if(motherParticle) motherPDGCode = motherParticle->GetPdgCode();
3001             
3002             if((particle->GetUniqueID() == 4)&&(TMath::Abs(motherPDGCode) == 3122)) {
3003               if(fProtonAnalysisBase->GetEtaMode())
3004                 ((TH2D *)(fEfficiencyList->At(8)))->Fill(particle->Eta(),
3005                                                          particle->Pt());
3006               else
3007                 ((TH2D *)(fEfficiencyList->At(8)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
3008                                                                   particle->Py(),
3009                                                                   particle->Pz()),
3010                                                          particle->Pt());
3011             }//weak decays
3012             if((particle->GetUniqueID() == 13)) {
3013               if(fProtonAnalysisBase->GetEtaMode())
3014                 ((TH2D *)(fEfficiencyList->At(10)))->Fill(particle->Eta(),
3015                                                           particle->Pt());
3016               else
3017                 ((TH2D *)(fEfficiencyList->At(10)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
3018                                                                    particle->Py(),
3019                                                                    particle->Pz()),
3020                                                           particle->Pt());
3021             }//hadronic interactions
3022           }//secondaries
3023         }//initial protons
3024         if(pdgcode == -2212) {  
3025           if(label <= stack->GetNprimary()) {
3026             if(fProtonAnalysisBase->GetEtaMode())
3027               ((TH2D *)(fEfficiencyList->At(7)))->Fill(particle->Eta(),
3028                                                        particle->Pt());
3029             else
3030               ((TH2D *)(fEfficiencyList->At(7)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
3031                                                                 particle->Py(),
3032                                                                 particle->Pz()),
3033                                                        particle->Pt());
3034           }//primaries
3035           if(label > stack->GetNprimary()) {
3036             Int_t lPartMother = -1;
3037             Int_t motherPDGCode = -1;
3038             lPartMother = particle->GetFirstMother();
3039             TParticle *motherParticle = stack->Particle(lPartMother);
3040             if(motherParticle) motherPDGCode = motherParticle->GetPdgCode();
3041             
3042             if((particle->GetUniqueID() == 4)&&(TMath::Abs(motherPDGCode) == 3122)) {
3043               if(fProtonAnalysisBase->GetEtaMode())
3044                 ((TH2D *)(fEfficiencyList->At(9)))->Fill(particle->Eta(),
3045                                                          particle->Pt());
3046               else
3047                 ((TH2D *)(fEfficiencyList->At(9)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
3048                                                                   particle->Py(),
3049                                                                   particle->Pz()),
3050                                                          particle->Pt());
3051             }//weak decays
3052             if((particle->GetUniqueID() == 13)) {
3053               if(fProtonAnalysisBase->GetEtaMode())
3054                 ((TH2D *)(fEfficiencyList->At(11)))->Fill(particle->Eta(),
3055                                                           particle->Pt());
3056               else
3057                 ((TH2D *)(fEfficiencyList->At(11)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
3058                                                                    particle->Py(),
3059                                                                    particle->Pz()),
3060                                                           particle->Pt());
3061             }//hadronic interactions
3062           }//secondaries
3063         }//initial antiprotons  
3064       }//TPC only tracks
3065       else {
3066         Int_t label = TMath::Abs(track->GetLabel());
3067         if(IsLabelUsed(labelArray,label)) continue;
3068         labelArray.AddAt(label,labelCounter);
3069         labelCounter += 1;
3070         
3071         if (mcLabel != TMath::Abs(label)) continue;
3072         if(mcLabel != label) continue;
3073         
3074         TParticle *particle = stack->Particle(label);
3075         if(!particle) continue;
3076         Int_t pdgcode = particle->GetPdgCode();
3077         if(TMath::Abs(particle->Eta()) > 1.0) continue;//acceptance
3078         if((particle->Pt() > fMaxPt)||(particle->Pt() < fMinPt)) continue;
3079         if(fProtonAnalysisBase->GetEtaMode()) {
3080           if((particle->Eta() > fMaxY)|| (particle->Eta() < fMinY)) continue;
3081         }
3082         else 
3083           if((fProtonAnalysisBase->Rapidity(particle->Px(),particle->Py(),particle->Pz()) > fMaxY)||(fProtonAnalysisBase->Rapidity(particle->Px(),particle->Py(),particle->Pz()) < fMinY)) continue;
3084         
3085         //Double_t probability[5];
3086
3087         if(fUseCutsInEfficiency) 
3088           if(!fProtonAnalysisBase->IsAccepted(esd,vertex,track)) continue;
3089         
3090         //reconstructed primary (anti)protons
3091         if(pdgcode == 2212) {
3092           if(label <= stack->GetNprimary()) {
3093             if(fProtonAnalysisBase->GetEtaMode())
3094               ((TH2D *)(fEfficiencyList->At(6)))->Fill(particle->Eta(),
3095                                                        particle->Pt());
3096             else
3097               ((TH2D *)(fEfficiencyList->At(6)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
3098                                                                 particle->Py(),
3099                                                                 particle->Pz()),
3100                                                        particle->Pt());
3101           }//primaries
3102           if(label > stack->GetNprimary()) {
3103             Int_t lPartMother = -1;
3104             Int_t motherPDGCode = -1;
3105             lPartMother = particle->GetFirstMother();
3106             TParticle *motherParticle = stack->Particle(lPartMother);
3107             if(motherParticle) motherPDGCode = motherParticle->GetPdgCode();
3108             
3109             if((particle->GetUniqueID() == 4)&&(TMath::Abs(motherPDGCode) == 3122)) {
3110               if(fProtonAnalysisBase->GetEtaMode())
3111                 ((TH2D *)(fEfficiencyList->At(8)))->Fill(particle->Eta(),
3112                                                          particle->Pt());
3113               else
3114                 ((TH2D *)(fEfficiencyList->At(8)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
3115                                                                   particle->Py(),
3116                                                                   particle->Pz()),
3117                                                          particle->Pt());
3118             }//weak decays
3119             if((particle->GetUniqueID() == 13)) {
3120               if(fProtonAnalysisBase->GetEtaMode())
3121                 ((TH2D *)(fEfficiencyList->At(10)))->Fill(particle->Eta(),
3122                                                           particle->Pt());
3123               else
3124                 ((TH2D *)(fEfficiencyList->At(10)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
3125                                                                    particle->Py(),
3126                                                                    particle->Pz()),
3127                                                           particle->Pt());
3128             }//hadronic interactions
3129           }//secondaries
3130         }//initial protons
3131         if(pdgcode == -2212) {  
3132           if(label <= stack->GetNprimary()) {
3133             if(fProtonAnalysisBase->GetEtaMode())
3134               ((TH2D *)(fEfficiencyList->At(7)))->Fill(particle->Eta(),
3135                                                        particle->Pt());
3136             else
3137               ((TH2D *)(fEfficiencyList->At(7)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
3138                                                                 particle->Py(),
3139                                                                 particle->Pz()),
3140                                                        particle->Pt());
3141           }//primaries
3142           if(label > stack->GetNprimary()) {
3143             Int_t lPartMother = -1;
3144             Int_t motherPDGCode = -1;
3145             lPartMother = particle->GetFirstMother();
3146             TParticle *motherParticle = stack->Particle(lPartMother);
3147             if(motherParticle) motherPDGCode = motherParticle->GetPdgCode();
3148             
3149             if((particle->GetUniqueID() == 4)&&(TMath::Abs(motherPDGCode) == 3122)) {
3150               if(fProtonAnalysisBase->GetEtaMode())
3151                 ((TH2D *)(fEfficiencyList->At(9)))->Fill(particle->Eta(),
3152                                                          particle->Pt());
3153               else
3154                 ((TH2D *)(fEfficiencyList->At(9)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
3155                                                                   particle->Py(),
3156                                                                   particle->Pz()),
3157                                                          particle->Pt());
3158             }//weak decays
3159             if((particle->GetUniqueID() == 13)) {
3160               if(fProtonAnalysisBase->GetEtaMode())
3161                 ((TH2D *)(fEfficiencyList->At(11)))->Fill(particle->Eta(),
3162                                                           particle->Pt());
3163               else
3164                 ((TH2D *)(fEfficiencyList->At(11)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
3165                                                                    particle->Py(),
3166                                                                    particle->Pz()),
3167                                                           particle->Pt());
3168             }//hadronic interactions
3169           }//secondaries
3170         }//initial antiprotons  
3171       }//global tracking
3172     }//track loop
3173     labelArray.Reset();
3174   }//loop over findable tracks
3175
3176   labelMCArray.Reset();
3177 }
3178
3179 //____________________________________________________________________//
3180 void AliProtonQAAnalysis::RunPIDEfficiencyAnalysis(AliStack *const stack, 
3181                                                    AliESDEvent *esd,
3182                                                    const AliESDVertex *vertex) {
3183   Int_t nGoodTracks = esd->GetNumberOfTracks();
3184   TArrayI labelArray(nGoodTracks);
3185   Int_t labelCounter = 0;
3186   for(Int_t iTracks = 0; iTracks < nGoodTracks; iTracks++) {
3187     AliESDtrack* track = esd->GetTrack(iTracks);
3188     if(!track) continue;
3189     
3190     //TPC only
3191     if((fProtonAnalysisBase->GetAnalysisMode()==AliProtonAnalysisBase::kTPC)||(fProtonAnalysisBase->GetAnalysisMode()==AliProtonAnalysisBase::kHybrid)) {
3192       AliExternalTrackParam *tpcTrack = (AliExternalTrackParam *)track->GetTPCInnerParam();
3193       if(!tpcTrack) continue;
3194     }
3195         
3196     Int_t label = TMath::Abs(track->GetLabel());
3197     if(IsLabelUsed(labelArray,label)) continue;
3198     labelArray.AddAt(label,labelCounter);
3199     labelCounter += 1;
3200                 
3201     TParticle *particle = stack->Particle(label);
3202     if(!particle) continue;
3203     Int_t pdgcode = particle->GetPdgCode();
3204     
3205     Int_t nTPCpoints = track->GetTPCsignalN();
3206
3207     if(fUseCutsInEfficiency) 
3208       if(!fProtonAnalysisBase->IsAccepted(esd,vertex,track)) continue;
3209         
3210     if(TMath::Abs(pdgcode) == 2212) {
3211       if(fProtonAnalysisBase->GetEtaMode())
3212         ((TH3D *)(fEfficiencyList->At(12)))->Fill(particle->Eta(),
3213                                                   particle->Pt(),nTPCpoints);
3214       else
3215         ((TH3D *)(fEfficiencyList->At(12)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),particle->Py(),particle->Pz()),particle->Pt(),nTPCpoints);
3216     }
3217
3218     //pid
3219     if(fProtonAnalysisBase->IsProton(track)) {
3220       if(fProtonAnalysisBase->GetEtaMode())
3221         ((TH3D *)(fEfficiencyList->At(14)))->Fill(particle->Eta(),
3222                                                   particle->Pt(),nTPCpoints);
3223       else ((TH3D *)(fEfficiencyList->At(14)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),particle->Py(),particle->Pz()),particle->Pt(),nTPCpoints);
3224       if(TMath::Abs(pdgcode) == 2212) {
3225         if(fProtonAnalysisBase->GetEtaMode())
3226           ((TH3D *)(fEfficiencyList->At(13)))->Fill(particle->Eta(),
3227                                                     particle->Pt(),nTPCpoints);
3228         else
3229           ((TH3D *)(fEfficiencyList->At(13)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),particle->Py(),particle->Pz()),particle->Pt(),nTPCpoints);
3230       }//properly identified as proton
3231       else {
3232         if(fProtonAnalysisBase->GetEtaMode())
3233           ((TH3D *)(fEfficiencyList->At(15)))->Fill(particle->Eta(),
3234                                                     particle->Pt(),nTPCpoints);
3235         else
3236           ((TH3D *)(fEfficiencyList->At(15)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),particle->Py(),particle->Pz()),particle->Pt(),nTPCpoints);
3237       }//contamination
3238     }//identified as proton
3239   }//ESD track loop
3240   labelArray.Reset();
3241 }
3242
3243 //____________________________________________________________________//
3244 void AliProtonQAAnalysis::RunEfficiencyAnalysis(AliStack *const stack, 
3245                                                 AliESDEvent *esd,
3246                                                 const AliESDVertex *vertex) {
3247   //Runs the efficiency code
3248   //MC loop
3249   Int_t nMCProtons = 0, nESDProtons = 0;
3250   for(Int_t iParticle = 0; iParticle < stack->GetNtrack(); iParticle++) {
3251     TParticle *particle = stack->Particle(iParticle);
3252     if(!particle) continue;
3253
3254     if(TMath::Abs(particle->Eta()) > 1.0) continue;//acceptance
3255     if((particle->Pt() > fMaxPt)||(particle->Pt() < fMinPt)) continue;
3256     if(fProtonAnalysisBase->GetEtaMode()) {
3257       if((particle->Eta() > fMaxY)|| (particle->Eta() < fMinY)) continue;
3258     }
3259     else 
3260       if((fProtonAnalysisBase->Rapidity(particle->Px(),particle->Py(),particle->Pz()) > fMaxY)||(fProtonAnalysisBase->Rapidity(particle->Px(),particle->Py(),particle->Pz()) < fMinY)) continue;
3261
3262     Int_t pdgcode = particle->GetPdgCode();
3263     if(TMath::Abs(pdgcode) != 2212) continue;
3264
3265     if(iParticle <= stack->GetNprimary()) {
3266       if(pdgcode == 2212) {
3267         nMCProtons += 1;
3268         if(fProtonAnalysisBase->GetEtaMode()) 
3269           ((TH2D *)(fEfficiencyList->At(0)))->Fill(particle->Eta(),
3270                                                    particle->Pt());
3271         else
3272           ((TH2D *)(fEfficiencyList->At(0)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
3273                                                             particle->Py(),
3274                                                             particle->Pz()),
3275                                                    particle->Pt());
3276       }//protons
3277       if(pdgcode == -2212) {
3278         if(fProtonAnalysisBase->GetEtaMode()) 
3279           ((TH2D *)(fEfficiencyList->At(1)))->Fill(particle->Eta(),
3280                                                    particle->Pt());
3281         else
3282           ((TH2D *)(fEfficiencyList->At(1)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
3283                                                             particle->Py(),
3284                                                             particle->Pz()),
3285                                                    particle->Pt());
3286       }//antiprotons
3287     }//primaries
3288     else {
3289       //secondaries
3290       Int_t lPartMother = -1;
3291       Int_t motherPDGCode = -1;
3292       lPartMother = particle->GetFirstMother();
3293       TParticle *motherParticle = stack->Particle(lPartMother);
3294       if(motherParticle) motherPDGCode = motherParticle->GetPdgCode();
3295
3296       if(pdgcode == 2212) {
3297         if((particle->GetUniqueID() == 4)&&(TMath::Abs(motherPDGCode) == 3122)) {
3298           if(fProtonAnalysisBase->GetEtaMode()) 
3299             ((TH2D *)(fEfficiencyList->At(2)))->Fill(particle->Eta(),
3300                                                      particle->Pt());
3301           else
3302             ((TH2D *)(fEfficiencyList->At(2)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
3303                                                               particle->Py(),
3304                                                               particle->Pz()),
3305                                                      particle->Pt());
3306         }//weak decays
3307         if((particle->GetUniqueID() == 13)) {
3308           if(fProtonAnalysisBase->GetEtaMode()) 
3309             ((TH2D *)(fEfficiencyList->At(4)))->Fill(particle->Eta(),
3310                                                      particle->Pt());
3311           else
3312             ((TH2D *)(fEfficiencyList->At(4)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
3313                                                                                    particle->Py(),
3314                                                                                    particle->Pz()),
3315                                                      particle->Pt());
3316         }//hadronic interactions
3317       }//protons
3318       if(pdgcode == -2212) {
3319         if((particle->GetUniqueID() == 4)&&(TMath::Abs(motherPDGCode) == 3122)) {
3320           if(fProtonAnalysisBase->GetEtaMode()) 
3321             ((TH2D *)(fEfficiencyList->At(3)))->Fill(particle->Eta(),
3322                                                      particle->Pt());
3323           else
3324             ((TH2D *)(fEfficiencyList->At(3)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
3325                                                               particle->Py(),
3326                                                               particle->Pz()),
3327                                                      particle->Pt());
3328         }//weak decays
3329         if((particle->GetUniqueID() == 13)) {
3330           if(fProtonAnalysisBase->GetEtaMode()) 
3331             ((TH2D *)(fEfficiencyList->At(5)))->Fill(particle->Eta(),
3332                                                      particle->Pt());
3333           else
3334             ((TH2D *)(fEfficiencyList->At(5)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
3335                                                               particle->Py(),
3336                                                               particle->Pz()),
3337                                                      particle->Pt());
3338         }//hadronic interactions
3339       }//antiprotons
3340     }//secondaries
3341   
3342   }//MC loop
3343
3344   //ESD track loop
3345   Int_t nGoodTracks = esd->GetNumberOfTracks();
3346   TArrayI labelArray(nGoodTracks);
3347   Int_t labelCounter = 0;
3348   for(Int_t iTracks = 0; iTracks < nGoodTracks; iTracks++) {
3349     AliESDtrack* track = esd->GetTrack(iTracks);
3350     if(!track) continue;
3351     
3352     Int_t label = TMath::Abs(track->GetLabel());
3353     if(IsLabelUsed(labelArray,label)) continue;
3354     labelArray.AddAt(label,labelCounter);
3355     labelCounter += 1;
3356     
3357     TParticle *particle = stack->Particle(label);
3358     if(!particle) continue;
3359     Int_t pdgcode = particle->GetPdgCode();
3360     if(TMath::Abs(particle->Eta()) > 1.0) continue;//acceptance
3361     
3362     Double_t gPt = 0.0, gP = 0.0;
3363     
3364     //TPC only
3365     if((fProtonAnalysisBase->GetAnalysisMode()==AliProtonAnalysisBase::kTPC)||(fProtonAnalysisBase->GetAnalysisMode()==AliProtonAnalysisBase::kHybrid)) {
3366       AliExternalTrackParam *tpcTrack = (AliExternalTrackParam *)track->GetTPCInnerParam();
3367       if(!tpcTrack) continue;
3368       gPt = tpcTrack->Pt();
3369       gP = tpcTrack->P();
3370       
3371       if((particle->Pt() > fMaxPt)||(particle->Pt() < fMinPt)) continue;
3372       if(fProtonAnalysisBase->GetEtaMode()) {
3373         if((particle->Eta() > fMaxY)|| (particle->Eta() < fMinY)) continue;
3374       }
3375       else 
3376         if((fProtonAnalysisBase->Rapidity(particle->Px(),particle->Py(),particle->Pz()) > fMaxY)||(fProtonAnalysisBase->Rapidity(particle->Px(),particle->Py(),particle->Pz()) < fMinY)) continue;
3377       
3378       if(fUseCutsInEfficiency) 
3379         if(!fProtonAnalysisBase->IsAccepted(esd,vertex,track)) continue;
3380       
3381       //reconstructed primary (anti)protons
3382       if(pdgcode == 2212) {
3383         if(label <= stack->GetNprimary()) {
3384           nESDProtons += 1;
3385           if(fProtonAnalysisBase->GetEtaMode())
3386             ((TH2D *)(fEfficiencyList->At(6)))->Fill(particle->Eta(),
3387                                                      particle->Pt());
3388           else
3389             ((TH2D *)(fEfficiencyList->At(6)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
3390                                                               particle->Py(),
3391                                                               particle->Pz()),
3392                                                      particle->Pt());
3393         }//primaries
3394         if(label > stack->GetNprimary()) {
3395           Int_t lPartMother = -1;
3396           Int_t motherPDGCode = -1;
3397           lPartMother = particle->GetFirstMother();
3398           TParticle *motherParticle = stack->Particle(lPartMother);
3399           if(motherParticle) motherPDGCode = motherParticle->GetPdgCode();
3400           
3401           if((particle->GetUniqueID() == 4)&&(TMath::Abs(motherPDGCode) == 3122)) {
3402             if(fProtonAnalysisBase->GetEtaMode())
3403               ((TH2D *)(fEfficiencyList->At(8)))->Fill(particle->Eta(),
3404                                                        particle->Pt());
3405             else
3406               ((TH2D *)(fEfficiencyList->At(8)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
3407                                                                 particle->Py(),
3408                                                                 particle->Pz()),
3409                                                        particle->Pt());
3410           }//weak decays
3411           if((particle->GetUniqueID() == 13)) {
3412             if(fProtonAnalysisBase->GetEtaMode())
3413               ((TH2D *)(fEfficiencyList->At(10)))->Fill(particle->Eta(),
3414                                                         particle->Pt());
3415             else
3416               ((TH2D *)(fEfficiencyList->At(10)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
3417                                                                  particle->Py(),
3418                                                                  particle->Pz()),
3419                                                         particle->Pt());
3420           }//hadronic interactions
3421         }//secondaries
3422       }//initial protons
3423       if(pdgcode == -2212) {    
3424         if(label <= stack->GetNprimary()) {
3425           if(fProtonAnalysisBase->GetEtaMode())
3426             ((TH2D *)(fEfficiencyList->At(7)))->Fill(particle->Eta(),
3427                                                      particle->Pt());
3428           else
3429             ((TH2D *)(fEfficiencyList->At(7)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
3430                                                               particle->Py(),
3431                                                               particle->Pz()),
3432                                                      particle->Pt());
3433         }//primaries
3434         if(label > stack->GetNprimary()) {
3435           Int_t lPartMother = -1;
3436           Int_t motherPDGCode = -1;
3437           lPartMother = particle->GetFirstMother();
3438           TParticle *motherParticle = stack->Particle(lPartMother);
3439           if(motherParticle) motherPDGCode = motherParticle->GetPdgCode();
3440           
3441           if((particle->GetUniqueID() == 4)&&(TMath::Abs(motherPDGCode) == 3122)) {
3442             if(fProtonAnalysisBase->GetEtaMode())
3443               ((TH2D *)(fEfficiencyList->At(9)))->Fill(particle->Eta(),
3444                                                        particle->Pt());
3445             else
3446               ((TH2D *)(fEfficiencyList->At(9)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
3447                                                                 particle->Py(),
3448                                                                 particle->Pz()),
3449                                                        particle->Pt());
3450           }//weak decays
3451           if((particle->GetUniqueID() == 13)) {
3452             if(fProtonAnalysisBase->GetEtaMode())
3453               ((TH2D *)(fEfficiencyList->At(11)))->Fill(particle->Eta(),
3454                                                         particle->Pt());
3455             else
3456               ((TH2D *)(fEfficiencyList->At(11)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
3457                                                                  particle->Py(),
3458                                                                  particle->Pz()),
3459                                                         particle->Pt());
3460           }//hadronic interactions
3461         }//secondaries
3462       }//initial antiprotons
3463     }//TPC only tracks
3464     else {
3465       if((particle->Pt() > fMaxPt)||(particle->Pt() < fMinPt)) continue;
3466       if(fProtonAnalysisBase->GetEtaMode()) {
3467         if((particle->Eta() > fMaxY)|| (particle->Eta() < fMinY)) continue;
3468       }
3469       else {
3470         if((fProtonAnalysisBase->Rapidity(particle->Px(),particle->Py(),particle->Pz()) > fMaxY)||(fProtonAnalysisBase->Rapidity(particle->Px(),particle->Py(),particle->Pz()) < fMinY)) continue;
3471       }
3472       
3473       if(fUseCutsInEfficiency) 
3474         if(!fProtonAnalysisBase->IsAccepted(esd,vertex,track)) continue;
3475       
3476       //reconstructed primary (anti)protons
3477       if(pdgcode == 2212) {
3478         if(label <= stack->GetNprimary()) {
3479           nESDProtons += 1;
3480           if(fProtonAnalysisBase->GetEtaMode())
3481             ((TH2D *)(fEfficiencyList->At(6)))->Fill(particle->Eta(),
3482                                                      particle->Pt());
3483           else
3484             ((TH2D *)(fEfficiencyList->At(6)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
3485                                                               particle->Py(),
3486                                                               particle->Pz()),
3487                                                      particle->Pt());
3488         }//primaries
3489         if(label > stack->GetNprimary()) {
3490           Int_t lPartMother = -1;
3491           Int_t motherPDGCode = -1;
3492           lPartMother = particle->GetFirstMother();
3493           TParticle *motherParticle = stack->Particle(lPartMother);
3494           if(motherParticle) motherPDGCode = motherParticle->GetPdgCode();
3495           
3496           if((particle->GetUniqueID() == 4)&&(TMath::Abs(motherPDGCode) == 3122)) {
3497             if(fProtonAnalysisBase->GetEtaMode())
3498               ((TH2D *)(fEfficiencyList->At(8)))->Fill(particle->Eta(),
3499                                                        particle->Pt());
3500             else
3501               ((TH2D *)(fEfficiencyList->At(8)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
3502                                                                 particle->Py(),
3503                                                                 particle->Pz()),
3504                                                        particle->Pt());
3505           }//weak decays
3506           if((particle->GetUniqueID() == 13)) {
3507             if(fProtonAnalysisBase->GetEtaMode())
3508               ((TH2D *)(fEfficiencyList->At(10)))->Fill(particle->Eta(),
3509                                                         particle->Pt());
3510             else
3511               ((TH2D *)(fEfficiencyList->At(10)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
3512                                                                  particle->Py(),
3513                                                                  particle->Pz()),
3514                                                         particle->Pt());
3515           }//hadronic interactions
3516         }//secondaries
3517       }//initial protons
3518       if(pdgcode == -2212) {    
3519         if(fProtonAnalysisBase->GetEtaMode())
3520           ((TH2D *)(fEfficiencyList->At(12)))->Fill(particle->Eta(),
3521                                                     particle->Pt());
3522         else
3523           ((TH2D *)(fEfficiencyList->At(12)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
3524                                                              particle->Py(),
3525                                                              particle->Pz()),
3526                                                     particle->Pt());
3527         if(label <= stack->GetNprimary()) {
3528           if(fProtonAnalysisBase->GetEtaMode())
3529             ((TH2D *)(fEfficiencyList->At(7)))->Fill(particle->Eta(),
3530                                                      particle->Pt());
3531           else
3532             ((TH2D *)(fEfficiencyList->At(7)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
3533                                                               particle->Py(),
3534                                                               particle->Pz()),
3535                                                      particle->Pt());
3536         }//primaries
3537         if(label > stack->GetNprimary()) {
3538           Int_t lPartMother = -1;
3539           Int_t motherPDGCode = -1;
3540           lPartMother = particle->GetFirstMother();
3541           TParticle *motherParticle = stack->Particle(lPartMother);
3542           if(motherParticle) motherPDGCode = motherParticle->GetPdgCode();
3543           
3544           if((particle->GetUniqueID() == 4)&&(TMath::Abs(motherPDGCode) == 3122)) {
3545             if(fProtonAnalysisBase->GetEtaMode())
3546               ((TH2D *)(fEfficiencyList->At(9)))->Fill(particle->Eta(),
3547                                                        particle->Pt());
3548             else
3549               ((TH2D *)(fEfficiencyList->At(9)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
3550                                                                 particle->Py(),
3551                                                                 particle->Pz()),
3552                                                        particle->Pt());
3553           }//weak decays
3554           if((particle->GetUniqueID() == 13)) {
3555             if(fProtonAnalysisBase->GetEtaMode())
3556               ((TH2D *)(fEfficiencyList->At(11)))->Fill(particle->Eta(),
3557                                                         particle->Pt());
3558             else
3559               ((TH2D *)(fEfficiencyList->At(11)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
3560                                                                  particle->Py(),
3561                                                                  particle->Pz()),
3562                                                         particle->Pt());
3563           }//hadronic interactions
3564         }//secondaries
3565       }//initial antiprotons
3566     }//global tracking
3567   }//track loop
3568   
3569   //Printf("MC protons: %d - ESD protons: %d",nMCProtons,nESDProtons);
3570 }
3571
3572 //____________________________________________________________________//
3573 Bool_t AliProtonQAAnalysis::IsLabelUsed(TArrayI labelArray, 
3574                                         Int_t label) {
3575   //Checks if the label is used already
3576   Bool_t status = kFALSE;
3577   for(Int_t i = 0; i < labelArray.GetSize(); i++) {
3578     if(labelArray.At(i) == label)
3579       status = kTRUE;
3580   }
3581
3582   return status;
3583 }
3584
3585 //____________________________________________________________________//
3586 void AliProtonQAAnalysis::RunVertexQA(AliGenEventHeader *header,
3587                                       AliESDEvent *const esd) {
3588   //Runs the vertex QA
3589   //MC vertex
3590   TArrayF primaryVertex(3);
3591   header->PrimaryVertex(primaryVertex);
3592
3593   //Int_t nPrimaries = stack->GetNprimary();
3594   ((TH1F *)(fQAVertexList->At(0)))->Fill(primaryVertex[2]);
3595
3596   //TPC vertex
3597   const AliESDVertex *vertexTPC = esd->GetPrimaryVertexTPC();
3598   if(!vertexTPC) {
3599     Printf("ERROR: Could not retrieve the TPC vertex");
3600     return;
3601   }
3602   if(vertexTPC->GetNContributors() > 0) {
3603     ((TH1F *)(fQAVertexList->At(1)))->Fill(primaryVertex[2]);
3604     ((TH2F *)(fQAVertexList->At(2)))->Fill(vertexTPC->GetXv(),
3605                                            vertexTPC->GetNContributors());
3606     ((TH2F *)(fQAVertexList->At(3)))->Fill(vertexTPC->GetYv(),
3607                                            vertexTPC->GetNContributors());
3608     ((TH2F *)(fQAVertexList->At(4)))->Fill(vertexTPC->GetZv(),
3609                                            vertexTPC->GetNContributors());
3610     ((TH1F *)(fQAVertexList->At(5)))->Fill((vertexTPC->GetXv()-primaryVertex[0])*10000.);
3611     ((TH1F *)(fQAVertexList->At(6)))->Fill((vertexTPC->GetYv()-primaryVertex[1])*10000.);
3612     ((TH1F *)(fQAVertexList->At(7)))->Fill((vertexTPC->GetZv()-primaryVertex[2])*10000.);
3613     ((TH1F *)(fQAVertexList->At(8)))->Fill(vertexTPC->GetXRes()*10000.);
3614     ((TH1F *)(fQAVertexList->At(9)))->Fill(vertexTPC->GetYRes()*10000.);
3615     ((TH1F *)(fQAVertexList->At(10)))->Fill(vertexTPC->GetZRes()*10000.);
3616   }//TPC vertex
3617
3618   //SPD vertex
3619   const AliESDVertex *vertexSPD = esd->GetPrimaryVertexSPD();
3620   if(!vertexSPD) {
3621     Printf("ERROR: Could not retrieve the SPD vertex");
3622     return;
3623   }
3624   if(vertexSPD->GetNContributors() > 0) {
3625     ((TH1F *)(fQAVertexList->At(11)))->Fill(primaryVertex[2]);
3626     ((TH2F *)(fQAVertexList->At(12)))->Fill(vertexSPD->GetXv(),
3627                                             vertexSPD->GetNContributors());
3628     ((TH2F *)(fQAVertexList->At(13)))->Fill(vertexSPD->GetYv(),
3629                                             vertexSPD->GetNContributors());
3630     ((TH2F *)(fQAVertexList->At(14)))->Fill(vertexSPD->GetZv(),
3631                                             vertexSPD->GetNContributors());
3632     ((TH1F *)(fQAVertexList->At(15)))->Fill((vertexSPD->GetXv()-primaryVertex[0])*10000.);
3633     ((TH1F *)(fQAVertexList->At(16)))->Fill((vertexSPD->GetYv()-primaryVertex[1])*10000.);
3634     ((TH1F *)(fQAVertexList->At(17)))->Fill((vertexSPD->GetZv()-primaryVertex[2])*10000.);
3635     ((TH1F *)(fQAVertexList->At(18)))->Fill(vertexSPD->GetXRes()*10000.);
3636     ((TH1F *)(fQAVertexList->At(19)))->Fill(vertexSPD->GetYRes()*10000.);
3637     ((TH1F *)(fQAVertexList->At(20)))->Fill(vertexSPD->GetZRes()*10000.);
3638   }//SPD vertex
3639   
3640   //Tracks vertex
3641   const AliESDVertex *vertexTracks = esd->GetPrimaryVertex();
3642   if(!vertexTracks) {
3643     Printf("ERROR: Could not retrieve the Tracks vertex");
3644     return;
3645   }
3646   if(vertexTracks->GetNContributors() > 0) {
3647     ((TH1F *)(fQAVertexList->At(21)))->Fill(primaryVertex[2]);
3648     ((TH2F *)(fQAVertexList->At(22)))->Fill(vertexTracks->GetXv(),
3649                                             vertexTracks->GetNContributors());
3650     ((TH2F *)(fQAVertexList->At(23)))->Fill(vertexTracks->GetYv(),
3651                                             vertexTracks->GetNContributors());
3652     ((TH2F *)(fQAVertexList->At(24)))->Fill(vertexTracks->GetZv(),
3653                                             vertexTracks->GetNContributors());
3654     ((TH1F *)(fQAVertexList->At(25)))->Fill((vertexTracks->GetXv()-primaryVertex[0])*10000.);
3655     ((TH1F *)(fQAVertexList->At(26)))->Fill((vertexTracks->GetYv()-primaryVertex[1])*10000.);
3656     ((TH1F *)(fQAVertexList->At(27)))->Fill((vertexTracks->GetZv()-primaryVertex[2])*10000.);
3657     ((TH1F *)(fQAVertexList->At(28)))->Fill(vertexTracks->GetXRes()*10000.);
3658     ((TH1F *)(fQAVertexList->At(29)))->Fill(vertexTracks->GetYRes()*10000.);
3659     ((TH1F *)(fQAVertexList->At(30)))->Fill(vertexTracks->GetZRes()*10000.);
3660   }//Tracks vertex
3661
3662 }
3663
3664 //____________________________________________________________________//
3665 void AliProtonQAAnalysis::RunQAAnalysis(AliStack *stack, 
3666                                         AliESDEvent *esd,
3667                                         const AliESDVertex *vertex) {
3668   //Runs the QA code
3669   //MC loop
3670   for(Int_t iParticle = 0; iParticle < stack->GetNprimary(); iParticle++) {
3671     TParticle *particle = stack->Particle(iParticle);
3672     if(!particle) continue;
3673
3674     if(TMath::Abs(particle->Eta()) > 1.0) continue;//acceptance
3675     if((particle->Pt() > fMaxPt)||(particle->Pt() < fMinPt)) continue;
3676     if(fProtonAnalysisBase->GetEtaMode()) {
3677       if((particle->Eta() > fMaxY)||(particle->Eta() < fMinY)) continue;
3678     }
3679     else {
3680       if((fProtonAnalysisBase->Rapidity(particle->Px(),particle->Py(),particle->Pz()) > fMaxY)||(fProtonAnalysisBase->Rapidity(particle->Px(),particle->Py(),particle->Pz()) < fMinY)) continue;
3681     }
3682     Int_t pdgcode = particle->GetPdgCode();
3683     if(pdgcode == 2212) {
3684       if(fProtonAnalysisBase->GetEtaMode())
3685         ((TH2D *)(fQA2DList->At(8)))->Fill(particle->Eta(),
3686                                            particle->Pt());
3687       else
3688         ((TH2D *)(fQA2DList->At(8)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
3689                                                     particle->Py(),
3690                                                     particle->Pz()),
3691                                            particle->Pt());
3692     }
3693     if(pdgcode == -2212) {
3694       if(fProtonAnalysisBase->GetEtaMode())
3695         ((TH2D *)(fQA2DList->At(9)))->Fill(particle->Eta(),
3696                                            particle->Pt());
3697       else
3698         ((TH2D *)(fQA2DList->At(9)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
3699                                                     particle->Py(),
3700                                                     particle->Pz()),
3701                                            particle->Pt());
3702     }
3703   }//MC loop
3704   
3705   //ESD track loop
3706   Int_t nGoodTracks = esd->GetNumberOfTracks();
3707   TArrayI labelArray(nGoodTracks);
3708   Int_t labelCounter = 0;
3709   for(Int_t iTracks = 0; iTracks < nGoodTracks; iTracks++) {
3710     AliESDtrack* track = esd->GetTrack(iTracks);
3711     if(!track) continue;
3712     
3713     Int_t label = TMath::Abs(track->GetLabel()); 
3714     if(IsLabelUsed(labelArray,label)) continue;
3715     labelArray.AddAt(label,labelCounter);
3716     labelCounter += 1;
3717     
3718     TParticle *particle = stack->Particle(label);
3719     if(!particle) continue;
3720     if(TMath::Abs(particle->Eta()) > 1.0) continue;//acceptance
3721     
3722     AliESDtrack trackTPC;
3723     
3724     //in case it's a TPC only track relate it to the proper vertex
3725     if((fProtonAnalysisBase->GetAnalysisMode()==AliProtonAnalysisBase::kTPC)&&(!fProtonAnalysisBase->GetAnalysisMode()==AliProtonAnalysisBase::kHybrid)) {
3726       //if((fUseTPCOnly)&&(!fUseHybridTPC)) {
3727       Float_t p[2],cov[3];
3728       track->GetImpactParametersTPC(p,cov);
3729       if (p[0]==0 && p[1]==0)  
3730         track->RelateToVertexTPC(((AliESDEvent*)esd)->GetPrimaryVertexTPC(),esd->GetMagneticField(),kVeryBig);
3731       if (!track->FillTPCOnlyTrack(trackTPC)) {
3732         continue;
3733       }
3734       track = &trackTPC ;
3735     }
3736     
3737     Double_t gPt = 0.0, gP = 0.0;
3738     //Double_t probability[5];
3739     Float_t dcaXY = 0.0, dcaZ = 0.0;
3740     Double_t nSigmaToVertex = fProtonAnalysisBase->GetSigmaToVertex(track);
3741     Int_t  fIdxInt[200];
3742     Int_t nClustersITS = track->GetITSclusters(fIdxInt);
3743     Int_t nClustersTPC = track->GetTPCclusters(fIdxInt);
3744     
3745     Float_t chi2PerClusterITS = -1;
3746     if (nClustersITS!=0)
3747       chi2PerClusterITS = track->GetITSchi2()/Float_t(nClustersITS);
3748     Float_t chi2PerClusterTPC = -1;
3749     if (nClustersTPC!=0)
3750       chi2PerClusterTPC = track->GetTPCchi2()/Float_t(nClustersTPC);
3751     Double_t chi2ConstrainVertex = TMath::Log(track->GetConstrainedChi2());    
3752     Double_t extCov[15];
3753     track->GetExternalCovariance(extCov);
3754     Int_t npointsTPCdEdx = track->GetTPCsignalN();
3755
3756     //TPC only
3757     if((fProtonAnalysisBase->GetAnalysisMode()==AliProtonAnalysisBase::kTPC)||(fProtonAnalysisBase->GetAnalysisMode()==AliProtonAnalysisBase::kHybrid)) {
3758       AliExternalTrackParam *tpcTrack = (AliExternalTrackParam *)track->GetTPCInnerParam();
3759       if(!tpcTrack) continue;
3760       gPt = tpcTrack->Pt();
3761       gP = tpcTrack->P();
3762       if(fProtonAnalysisBase->GetAnalysisMode()==AliProtonAnalysisBase::kHybrid)
3763         track->GetImpactParameters(dcaXY,dcaZ);
3764       else track->GetImpactParametersTPC(dcaXY,dcaZ);
3765       
3766       //pid
3767       if(fProtonAnalysisBase->IsProton(track)) {
3768         if(!fProtonAnalysisBase->IsInPhaseSpace(track)) continue; //track outside the analyzed y-Pt
3769
3770         FillQA(stack,esd,vertex,track);
3771         if(fProtonAnalysisBase->IsAccepted(esd,vertex,track)) {
3772           if(label <= stack->GetNprimary()) {
3773             if(track->Charge() > 0) {
3774               for(Int_t iLayer = 0; iLayer < 6; iLayer++) {
3775                 if(track->HasPointOnITSLayer(iLayer))
3776                   ((TH1F *)(fAcceptedCutList->At(0)))->Fill(iLayer+1);
3777               }
3778               ((TH1F *)(fAcceptedCutList->At(4)))->Fill(nClustersITS);
3779               ((TH1F *)(fAcceptedCutList->At(8)))->Fill(chi2PerClusterITS);
3780               ((TH1F *)(fAcceptedCutList->At(12)))->Fill(chi2ConstrainVertex);
3781               ((TH1F *)(fAcceptedCutList->At(16)))->Fill(nClustersTPC);
3782               ((TH1F *)(fAcceptedCutList->At(20)))->Fill(chi2PerClusterTPC);
3783               ((TH1F *)(fAcceptedCutList->At(24)))->Fill(extCov[0]);
3784               ((TH1F *)(fAcceptedCutList->At(28)))->Fill(extCov[2]);
3785               ((TH1F *)(fAcceptedCutList->At(32)))->Fill(extCov[5]);
3786               ((TH1F *)(fAcceptedCutList->At(36)))->Fill(extCov[9]);
3787               ((TH1F *)(fAcceptedCutList->At(40)))->Fill(extCov[14]);
3788               ((TH3D *)(fAcceptedCutList->At(44)))->Fill(tpcTrack->Eta(),
3789                                                          tpcTrack->Phi()*180./TMath::Pi(),
3790                                                          nClustersTPC);
3791               ((TH3D *)(fAcceptedCutList->At(48)))->Fill(tpcTrack->Eta(),
3792                                                          tpcTrack->Phi()*180./TMath::Pi(),
3793                                                          chi2PerClusterTPC);
3794               ((TH3D *)(fAcceptedCutList->At(52)))->Fill(tpcTrack->Eta(),
3795                                                          tpcTrack->Phi()*180./TMath::Pi(),
3796                                                          npointsTPCdEdx);
3797               ((TH1D *)(fAcceptedCutList->At(56)))->Fill(npointsTPCdEdx);
3798               
3799               ((TH1F *)(fAcceptedDCAList->At(0)))->Fill(TMath::Abs(dcaXY));
3800               ((TH1F *)(fAcceptedDCAList->At(4)))->Fill(TMath::Abs(dcaZ));
3801               ((TH1F *)(fAcceptedDCAList->At(8)))->Fill(nSigmaToVertex);
3802               if(fProtonAnalysisBase->GetEtaMode())
3803                 ((TH2D *)(fQA2DList->At(0)))->Fill(tpcTrack->Eta(),gPt);
3804               else
3805                 ((TH2D *)(fQA2DList->At(0)))->Fill(fProtonAnalysisBase->Rapidity(tpcTrack->Px(),
3806                                                             tpcTrack->Py(),
3807                                                             tpcTrack->Pz()),
3808                                                    gPt);
3809             }//accepted primary protons
3810             else if(track->Charge() < 0) {
3811               for(Int_t iLayer = 0; iLayer < 6; iLayer++) {
3812                 if(track->HasPointOnITSLayer(iLayer))
3813                   ((TH1F *)(fAcceptedCutList->At(1)))->Fill(iLayer+1);
3814               }
3815               ((TH1F *)(fAcceptedCutList->At(5)))->Fill(nClustersITS);
3816               ((TH1F *)(fAcceptedCutList->At(9)))->Fill(chi2PerClusterITS);
3817               ((TH1F *)(fAcceptedCutList->At(13)))->Fill(chi2ConstrainVertex);
3818               ((TH1F *)(fAcceptedCutList->At(17)))->Fill(nClustersTPC);
3819               ((TH1F *)(fAcceptedCutList->At(21)))->Fill(chi2PerClusterTPC);
3820               ((TH1F *)(fAcceptedCutList->At(25)))->Fill(extCov[0]);
3821               ((TH1F *)(fAcceptedCutList->At(29)))->Fill(extCov[2]);
3822               ((TH1F *)(fAcceptedCutList->At(33)))->Fill(extCov[5]);
3823               ((TH1F *)(fAcceptedCutList->At(37)))->Fill(extCov[9]);
3824               ((TH1F *)(fAcceptedCutList->At(41)))->Fill(extCov[14]);
3825               ((TH3D *)(fAcceptedCutList->At(45)))->Fill(tpcTrack->Eta(),
3826                                                          tpcTrack->Phi()*180./TMath::Pi(),
3827                                                          nClustersTPC);
3828               ((TH3D *)(fAcceptedCutList->At(49)))->Fill(tpcTrack->Eta(),
3829                                                          tpcTrack->Phi()*180./TMath::Pi(),
3830                                                          chi2PerClusterTPC);
3831               ((TH3D *)(fAcceptedCutList->At(53)))->Fill(tpcTrack->Eta(),
3832                                                          tpcTrack->Phi()*180./TMath::Pi(),
3833                                                          npointsTPCdEdx);
3834               ((TH1D *)(fAcceptedCutList->At(57)))->Fill(npointsTPCdEdx);
3835               
3836               ((TH1F *)(fAcceptedDCAList->At(1)))->Fill(TMath::Abs(dcaXY));
3837               ((TH1F *)(fAcceptedDCAList->At(5)))->Fill(TMath::Abs(dcaZ));
3838               ((TH1F *)(fAcceptedDCAList->At(9)))->Fill(nSigmaToVertex);
3839               if(fProtonAnalysisBase->GetEtaMode())
3840                 ((TH2D *)(fQA2DList->At(4)))->Fill(tpcTrack->Eta(),gPt);
3841               else
3842                 ((TH2D *)(fQA2DList->At(4)))->Fill(fProtonAnalysisBase->Rapidity(tpcTrack->Px(),
3843                                                             tpcTrack->Py(),
3844                                                             tpcTrack->Pz()),
3845                                                    gPt);
3846             }//accepted primary antiprotons
3847           }//accepted primary particles
3848           else if(label > stack->GetNprimary()) {
3849             Int_t lPartMother = -1;
3850             Int_t motherPDGCode = -1;
3851             if(particle) {
3852               lPartMother = particle->GetFirstMother();
3853               TParticle *motherParticle = stack->Particle(lPartMother);
3854               if(motherParticle) motherPDGCode = motherParticle->GetPdgCode();
3855             }
3856             
3857             if(fMCProcessIdFlag)
3858               if(particle->GetUniqueID() != fMCProcessId) continue;
3859             if(fMotherParticlePDGCodeFlag)
3860               if(TMath::Abs(motherPDGCode) != fMotherParticlePDGCode) continue;
3861             
3862             if(track->Charge() > 0) {
3863               for(Int_t iLayer = 0; iLayer < 6; iLayer++) {
3864                 if(track->HasPointOnITSLayer(iLayer))
3865                   ((TH1F *)(fAcceptedCutList->At(2)))->Fill(iLayer+1);
3866               }
3867               ((TH1F *)(fAcceptedCutList->At(6)))->Fill(nClustersITS);
3868               ((TH1F *)(fAcceptedCutList->At(10)))->Fill(chi2PerClusterITS);
3869               ((TH1F *)(fAcceptedCutList->At(14)))->Fill(chi2ConstrainVertex);
3870               ((TH1F *)(fAcceptedCutList->At(18)))->Fill(nClustersTPC);
3871               ((TH1F *)(fAcceptedCutList->At(22)))->Fill(chi2PerClusterTPC);
3872               ((TH1F *)(fAcceptedCutList->At(26)))->Fill(extCov[0]);
3873               ((TH1F *)(fAcceptedCutList->At(30)))->Fill(extCov[2]);
3874               ((TH1F *)(fAcceptedCutList->At(34)))->Fill(extCov[5]);
3875               ((TH1F *)(fAcceptedCutList->At(38)))->Fill(extCov[9]);
3876               ((TH1F *)(fAcceptedCutList->At(42)))->Fill(extCov[14]);
3877               ((TH3D *)(fAcceptedCutList->At(46)))->Fill(tpcTrack->Eta(),
3878                                                          tpcTrack->Phi()*180./TMath::Pi(),
3879                                                          nClustersTPC);
3880               ((TH3D *)(fAcceptedCutList->At(50)))->Fill(tpcTrack->Eta(),
3881                                                          tpcTrack->Phi()*180./TMath::Pi(),
3882                                                          chi2PerClusterTPC);
3883               ((TH3D *)(fAcceptedCutList->At(54)))->Fill(tpcTrack->Eta(),
3884                                                          tpcTrack->Phi()*180./TMath::Pi(),
3885                                                          npointsTPCdEdx);
3886               ((TH1D *)(fAcceptedCutList->At(58)))->Fill(npointsTPCdEdx);
3887
3888               ((TH1F *)(fAcceptedDCAList->At(2)))->Fill(TMath::Abs(dcaXY));
3889               ((TH1F *)(fAcceptedDCAList->At(6)))->Fill(TMath::Abs(dcaZ));
3890               ((TH1F *)(fAcceptedDCAList->At(10)))->Fill(nSigmaToVertex);
3891               if(fProtonAnalysisBase->GetEtaMode())
3892                 ((TH2D *)(fQA2DList->At(2)))->Fill(tpcTrack->Eta(),gPt);
3893               else
3894                 ((TH2D *)(fQA2DList->At(2)))->Fill(fProtonAnalysisBase->Rapidity(tpcTrack->Px(),
3895                                                             tpcTrack->Py(),
3896                                                             tpcTrack->Pz()),
3897                                                    gPt);
3898               if(fProtonAnalysisBase->GetEtaMode())
3899               ((TH3F *)(fQA2DList->At(10)))->Fill(tpcTrack->Eta(),gPt,
3900                                                   ConvertPDGToInt(motherPDGCode));
3901               else
3902                 ((TH3F *)(fQA2DList->At(10)))->Fill(fProtonAnalysisBase->Rapidity(tpcTrack->Px(),
3903                                                              tpcTrack->Py(),
3904                                                              tpcTrack->Pz()),
3905                                                     gPt,
3906                                                     ConvertPDGToInt(motherPDGCode));
3907             }//accepted secondary protons
3908             else if(track->Charge() < 0) {
3909               for(Int_t iLayer = 0; iLayer < 6; iLayer++) {
3910                 if(track->HasPointOnITSLayer(iLayer))
3911                   ((TH1F *)(fAcceptedCutList->At(3)))->Fill(iLayer+1);
3912               }
3913               ((TH1F *)(fAcceptedCutList->At(7)))->Fill(nClustersITS);
3914               ((TH1F *)(fAcceptedCutList->At(11)))->Fill(chi2PerClusterITS);
3915               ((TH1F *)(fAcceptedCutList->At(15)))->Fill(chi2ConstrainVertex);
3916               ((TH1F *)(fAcceptedCutList->At(19)))->Fill(nClustersTPC);
3917               ((TH1F *)(fAcceptedCutList->At(23)))->Fill(chi2PerClusterTPC);
3918               ((TH1F *)(fAcceptedCutList->At(27)))->Fill(extCov[0]);
3919               ((TH1F *)(fAcceptedCutList->At(31)))->Fill(extCov[2]);
3920               ((TH1F *)(fAcceptedCutList->At(35)))->Fill(extCov[5]);
3921               ((TH1F *)(fAcceptedCutList->At(39)))->Fill(extCov[9]);
3922               ((TH1F *)(fAcceptedCutList->At(43)))->Fill(extCov[14]);
3923               ((TH3D *)(fAcceptedCutList->At(47)))->Fill(tpcTrack->Eta(),
3924                                                          tpcTrack->Phi()*180./TMath::Pi(),
3925                                                          nClustersTPC);
3926               ((TH3D *)(fAcceptedCutList->At(51)))->Fill(tpcTrack->Eta(),
3927                                                          tpcTrack->Phi()*180./TMath::Pi(),
3928                                                          chi2PerClusterTPC);
3929               ((TH3D *)(fAcceptedCutList->At(55)))->Fill(tpcTrack->Eta(),
3930                                                          tpcTrack->Phi()*180./TMath::Pi(),
3931                                                          npointsTPCdEdx);
3932               ((TH1F *)(fAcceptedCutList->At(59)))->Fill(npointsTPCdEdx);
3933
3934               ((TH1F *)(fAcceptedDCAList->At(3)))->Fill(TMath::Abs(dcaXY));
3935               ((TH1F *)(fAcceptedDCAList->At(7)))->Fill(TMath::Abs(dcaZ));
3936               ((TH1F *)(fAcceptedDCAList->At(11)))->Fill(nSigmaToVertex);
3937               if(fProtonAnalysisBase->GetEtaMode())
3938                 ((TH2D *)(fQA2DList->At(6)))->Fill(tpcTrack->Eta(),gPt);
3939               else
3940                 ((TH2D *)(fQA2DList->At(6)))->Fill(fProtonAnalysisBase->Rapidity(tpcTrack->Px(),
3941                                                             tpcTrack->Py(),
3942                                                             tpcTrack->Pz()),
3943                                                    gPt);
3944               if(fProtonAnalysisBase->GetEtaMode())
3945                 ((TH3F *)(fQA2DList->At(11)))->Fill(tpcTrack->Eta(),gPt,
3946                                                     ConvertPDGToInt(motherPDGCode));
3947               else
3948                 ((TH3F *)(fQA2DList->At(11)))->Fill(fProtonAnalysisBase->Rapidity(tpcTrack->Px(),
3949                                                              tpcTrack->Py(),
3950                                                              tpcTrack->Pz()),
3951                                                     gPt,
3952                                                     ConvertPDGToInt(motherPDGCode));
3953             }//accepted secondary antiprotons
3954           }//accepted secondary particles
3955         }//accepted - track cuts
3956         else {
3957           if(label <= stack->GetNprimary()) {
3958             if(track->Charge() > 0) {
3959               ((TH3D *)(fRejectedCutList->At(0)))->Fill(tpcTrack->Eta(),
3960                                                         tpcTrack->Phi()*180./TMath::Pi(),
3961                                                         nClustersTPC);
3962               ((TH3D *)(fRejectedCutList->At(4)))->Fill(tpcTrack->Eta(),
3963                                                         tpcTrack->Phi()*180./TMath::Pi(),
3964                                                         chi2PerClusterTPC);
3965               ((TH3D *)(fRejectedCutList->At(8)))->Fill(tpcTrack->Eta(),
3966                                                         tpcTrack->Phi()*180./TMath::Pi(),
3967                                                         npointsTPCdEdx);
3968
3969               if(fProtonAnalysisBase->GetEtaMode())
3970                 ((TH2D *)(fQA2DList->At(1)))->Fill(tpcTrack->Eta(),gPt);
3971               else
3972                 ((TH2D *)(fQA2DList->At(1)))->Fill(fProtonAnalysisBase->Rapidity(tpcTrack->Px(),
3973                                                             tpcTrack->Py(),
3974                                                             tpcTrack->Pz()),
3975                                                    gPt);
3976             }
3977             else if(track->Charge() < 0) {
3978               ((TH3D *)(fRejectedCutList->At(1)))->Fill(tpcTrack->Eta(),
3979                                                         tpcTrack->Phi()*180./TMath::Pi(),
3980                                                         nClustersTPC);
3981               ((TH3D *)(fRejectedCutList->At(5)))->Fill(tpcTrack->Eta(),
3982                                                         tpcTrack->Phi()*180./TMath::Pi(),
3983                                                         chi2PerClusterTPC);
3984               ((TH3D *)(fRejectedCutList->At(9)))->Fill(tpcTrack->Eta(),
3985                                                         tpcTrack->Phi()*180./TMath::Pi(),
3986                                                         npointsTPCdEdx);
3987               if(fProtonAnalysisBase->GetEtaMode())
3988                 ((TH2D *)(fQA2DList->At(5)))->Fill(tpcTrack->Eta(),gPt);
3989               else
3990                 ((TH2D *)(fQA2DList->At(5)))->Fill(fProtonAnalysisBase->Rapidity(tpcTrack->Px(),
3991                                                             tpcTrack->Py(),
3992                                                             tpcTrack->Pz()),
3993                                                    gPt);
3994             }
3995           }//rejected primary particles
3996           else if(label > stack->GetNprimary()) {
3997             if(track->Charge() > 0) {
3998               ((TH3D *)(fRejectedCutList->At(2)))->Fill(tpcTrack->Eta(),
3999                                                         tpcTrack->Phi()*180./TMath::Pi(),
4000                                                         nClustersTPC);
4001               ((TH3D *)(fRejectedCutList->At(6)))->Fill(tpcTrack->Eta(),
4002                                                         tpcTrack->Phi()*180./TMath::Pi(),
4003                                                         chi2PerClusterTPC);
4004               ((TH3D *)(fRejectedCutList->At(10)))->Fill(tpcTrack->Eta(),
4005                                                          tpcTrack->Phi()*180./TMath::Pi(),
4006                                                          npointsTPCdEdx);
4007               if(fProtonAnalysisBase->GetEtaMode())
4008                 ((TH2D *)(fQA2DList->At(3)))->Fill(tpcTrack->Eta(),gPt);
4009               else
4010                 ((TH2D *)(fQA2DList->At(3)))->Fill(fProtonAnalysisBase->Rapidity(tpcTrack->Px(),
4011                                                             tpcTrack->Py(),
4012                                                             tpcTrack->Pz()),
4013                                                    gPt);
4014             }
4015             else if(track->Charge() < 0) {
4016               ((TH3D *)(fRejectedCutList->At(3)))->Fill(tpcTrack->Eta(),
4017                                                         tpcTrack->Phi()*180./TMath::Pi(),
4018                                                         nClustersTPC);
4019               ((TH3D *)(fRejectedCutList->At(7)))->Fill(tpcTrack->Eta(),
4020                                                         tpcTrack->Phi()*180./TMath::Pi(),
4021                                                         chi2PerClusterTPC);
4022               ((TH3D *)(fRejectedCutList->At(11)))->Fill(tpcTrack->Eta(),
4023                                                          tpcTrack->Phi()*180./TMath::Pi(),
4024                                                          npointsTPCdEdx);
4025
4026               if(fProtonAnalysisBase->GetEtaMode())
4027                 ((TH2D *)(fQA2DList->At(7)))->Fill(tpcTrack->Eta(),gPt);
4028               else
4029                 ((TH2D *)(fQA2DList->At(7)))->Fill(fProtonAnalysisBase->Rapidity(tpcTrack->Px(),
4030                                                             tpcTrack->Py(),
4031                                                             tpcTrack->Pz()),
4032                                                    gPt);
4033             }
4034           }//rejected secondary particles
4035         }//rejected - track cuts
4036       }//proton check
4037     }//TPC only tracks
4038     //combined tracking
4039     else {
4040       gPt = track->Pt();
4041       gP = track->P();
4042       track->GetImpactParameters(dcaXY,dcaZ);
4043       
4044       //pid
4045       if(fProtonAnalysisBase->IsProton(track)) {
4046         if(!fProtonAnalysisBase->IsInPhaseSpace(track)) continue; //track outside the analyzed y-Pt
4047
4048         FillQA(stack,esd,vertex,track);
4049         if(fProtonAnalysisBase->IsAccepted(esd,vertex,track)) {
4050           if(label <= stack->GetNprimary()) {
4051             if(track->Charge() > 0) {
4052               for(Int_t iLayer = 0; iLayer < 6; iLayer++) {
4053                 if(track->HasPointOnITSLayer(iLayer))
4054                   ((TH1F *)(fAcceptedCutList->At(0)))->Fill(iLayer+1);
4055               }
4056               ((TH1F *)(fAcceptedCutList->At(4)))->Fill(nClustersITS);
4057               ((TH1F *)(fAcceptedCutList->At(8)))->Fill(chi2PerClusterITS);
4058               ((TH1F *)(fAcceptedCutList->At(12)))->Fill(chi2ConstrainVertex);
4059               ((TH1F *)(fAcceptedCutList->At(16)))->Fill(nClustersTPC);
4060               ((TH1F *)(fAcceptedCutList->At(20)))->Fill(chi2PerClusterTPC);
4061               ((TH1F *)(fAcceptedCutList->At(24)))->Fill(extCov[0]);
4062               ((TH1F *)(fAcceptedCutList->At(28)))->Fill(extCov[2]);
4063               ((TH1F *)(fAcceptedCutList->At(32)))->Fill(extCov[5]);
4064               ((TH1F *)(fAcceptedCutList->At(36)))->Fill(extCov[9]);
4065               ((TH1F *)(fAcceptedCutList->At(40)))->Fill(extCov[14]);
4066               ((TH3D *)(fAcceptedCutList->At(44)))->Fill(track->Eta(),
4067                                                          track->Phi()*180./TMath::Pi(),
4068                                                          nClustersTPC);
4069               ((TH3D *)(fAcceptedCutList->At(48)))->Fill(track->Eta(),
4070                                                          track->Phi()*180./TMath::Pi(),
4071                                                          chi2PerClusterTPC);
4072               ((TH3D *)(fAcceptedCutList->At(52)))->Fill(track->Eta(),
4073                                                          track->Phi()*180./TMath::Pi(),
4074                                                          npointsTPCdEdx);
4075               ((TH1F *)(fAcceptedCutList->At(56)))->Fill(npointsTPCdEdx);
4076               
4077               ((TH1F *)(fAcceptedDCAList->At(0)))->Fill(TMath::Abs(dcaXY));
4078               ((TH1F *)(fAcceptedDCAList->At(4)))->Fill(TMath::Abs(dcaZ));
4079               ((TH1F *)(fAcceptedDCAList->At(8)))->Fill(nSigmaToVertex);
4080               if(fProtonAnalysisBase->GetEtaMode())
4081                 ((TH2D *)(fQA2DList->At(0)))->Fill(track->Eta(),gPt);
4082               else
4083                 ((TH2D *)(fQA2DList->At(0)))->Fill(fProtonAnalysisBase->Rapidity(track->Px(),
4084                                                             track->Py(),
4085                                                             track->Pz()),
4086                                                    gPt);
4087             }
4088             else if(track->Charge() < 0) {
4089               for(Int_t iLayer = 0; iLayer < 6; iLayer++) {
4090                 if(track->HasPointOnITSLayer(iLayer))
4091                   ((TH1F *)(fAcceptedCutList->At(1)))->Fill(iLayer+1);
4092               }
4093               ((TH1F *)(fAcceptedCutList->At(5)))->Fill(nClustersITS);
4094               ((TH1F *)(fAcceptedCutList->At(9)))->Fill(chi2PerClusterITS);
4095               ((TH1F *)(fAcceptedCutList->At(13)))->Fill(chi2ConstrainVertex);
4096               ((TH1F *)(fAcceptedCutList->At(17)))->Fill(nClustersTPC);
4097               ((TH1F *)(fAcceptedCutList->At(21)))->Fill(chi2PerClusterTPC);
4098               ((TH1F *)(fAcceptedCutList->At(25)))->Fill(extCov[0]);
4099               ((TH1F *)(fAcceptedCutList->At(29)))->Fill(extCov[2]);
4100               ((TH1F *)(fAcceptedCutList->At(33)))->Fill(extCov[5]);
4101               ((TH1F *)(fAcceptedCutList->At(37)))->Fill(extCov[9]);
4102               ((TH1F *)(fAcceptedCutList->At(41)))->Fill(extCov[14]);
4103               ((TH3D *)(fAcceptedCutList->At(45)))->Fill(track->Eta(),
4104                                                          track->Phi()*180./TMath::Pi(),
4105                                                          nClustersTPC);
4106               ((TH3D *)(fAcceptedCutList->At(49)))->Fill(track->Eta(),
4107                                                          track->Phi()*180./TMath::Pi(),
4108                                                          chi2PerClusterTPC);
4109               ((TH3D *)(fAcceptedCutList->At(53)))->Fill(track->Eta(),
4110                                                          track->Phi()*180./TMath::Pi(),
4111                                                          npointsTPCdEdx);
4112               ((TH1F *)(fAcceptedCutList->At(57)))->Fill(npointsTPCdEdx);
4113               
4114               ((TH1F *)(fAcceptedDCAList->At(1)))->Fill(TMath::Abs(dcaXY));
4115               ((TH1F *)(fAcceptedDCAList->At(5)))->Fill(TMath::Abs(dcaZ));
4116               ((TH1F *)(fAcceptedDCAList->At(9)))->Fill(nSigmaToVertex);
4117               if(fProtonAnalysisBase->GetEtaMode())
4118                 ((TH2D *)(fQA2DList->At(4)))->Fill(track->Eta(),gPt);
4119               else
4120                 ((TH2D *)(fQA2DList->At(4)))->Fill(fProtonAnalysisBase->Rapidity(track->Px(),
4121                                                             track->Py(),
4122                                                             track->Pz()),
4123                                                    gPt);
4124             }
4125           }//primary particles
4126           else if(label > stack->GetNprimary()) {
4127             Int_t lPartMother = -1;
4128             Int_t motherPDGCode = -1;
4129             if(particle) {
4130               lPartMother = particle->GetFirstMother();
4131               TParticle *motherParticle = stack->Particle(lPartMother);
4132               if(motherParticle) motherPDGCode = motherParticle->GetPdgCode();
4133             }
4134             
4135             if(fMCProcessIdFlag)
4136               if(particle->GetUniqueID() != fMCProcessId) continue;
4137             if(fMotherParticlePDGCodeFlag)
4138               if(TMath::Abs(motherPDGCode) != fMotherParticlePDGCode) continue;
4139             
4140             if(track->Charge() > 0) {
4141               for(Int_t iLayer = 0; iLayer < 6; iLayer++) {
4142                 if(track->HasPointOnITSLayer(iLayer))
4143                   ((TH1F *)(fAcceptedCutList->At(2)))->Fill(iLayer+1);
4144               }
4145               ((TH1F *)(fAcceptedCutList->At(6)))->Fill(nClustersITS);
4146               ((TH1F *)(fAcceptedCutList->At(10)))->Fill(chi2PerClusterITS);
4147               ((TH1F *)(fAcceptedCutList->At(14)))->Fill(chi2ConstrainVertex);
4148               ((TH1F *)(fAcceptedCutList->At(18)))->Fill(nClustersTPC);
4149               ((TH1F *)(fAcceptedCutList->At(22)))->Fill(chi2PerClusterTPC);
4150               ((TH1F *)(fAcceptedCutList->At(26)))->Fill(extCov[0]);
4151               ((TH1F *)(fAcceptedCutList->At(30)))->Fill(extCov[2]);
4152               ((TH1F *)(fAcceptedCutList->At(34)))->Fill(extCov[5]);
4153               ((TH1F *)(fAcceptedCutList->At(38)))->Fill(extCov[9]);
4154               ((TH1F *)(fAcceptedCutList->At(42)))->Fill(extCov[14]);
4155               ((TH3D *)(fAcceptedCutList->At(46)))->Fill(track->Eta(),
4156                                                          track->Phi()*180./TMath::Pi(),
4157                                                          nClustersTPC);
4158               ((TH3D *)(fAcceptedCutList->At(50)))->Fill(track->Eta(),
4159                                                          track->Phi()*180./TMath::Pi(),
4160                                                          chi2PerClusterTPC);
4161               ((TH3D *)(fAcceptedCutList->At(54)))->Fill(track->Eta(),
4162                                                          track->Phi()*180./TMath::Pi(),
4163                                                          npointsTPCdEdx);
4164               ((TH1F *)(fAcceptedCutList->At(58)))->Fill(npointsTPCdEdx);
4165               
4166               ((TH1F *)(fAcceptedDCAList->At(2)))->Fill(TMath::Abs(dcaXY));
4167               ((TH1F *)(fAcceptedDCAList->At(6)))->Fill(TMath::Abs(dcaZ));
4168               ((TH1F *)(fAcceptedDCAList->At(10)))->Fill(nSigmaToVertex);
4169               if(fProtonAnalysisBase->GetEtaMode())
4170                 ((TH2D *)(fQA2DList->At(2)))->Fill(track->Eta(),gPt);
4171               else
4172                 ((TH2D *)(fQA2DList->At(2)))->Fill(fProtonAnalysisBase->Rapidity(track->Px(),
4173                                                             track->Py(),
4174                                                             track->Pz()),
4175                                                    gPt);
4176               if(fProtonAnalysisBase->GetEtaMode())
4177                 ((TH3F *)(fQA2DList->At(10)))->Fill(track->Eta(),gPt,
4178                                                     ConvertPDGToInt(motherPDGCode));
4179               else
4180                 ((TH3F *)(fQA2DList->At(10)))->Fill(fProtonAnalysisBase->Rapidity(track->Px(),
4181                                                              track->Py(),
4182                                                              track->Pz()),
4183                                                     gPt,
4184                                                     ConvertPDGToInt(motherPDGCode));
4185             }
4186             else if(track->Charge() < 0) {
4187               for(Int_t iLayer = 0; iLayer < 6; iLayer++) {
4188                 if(track->HasPointOnITSLayer(iLayer))
4189                   ((TH1F *)(fAcceptedCutList->At(3)))->Fill(iLayer+1);
4190               }
4191               ((TH1F *)(fAcceptedCutList->At(7)))->Fill(nClustersITS);
4192               ((TH1F *)(fAcceptedCutList->At(11)))->Fill(chi2PerClusterITS);
4193               ((TH1F *)(fAcceptedCutList->At(15)))->Fill(chi2ConstrainVertex);
4194               ((TH1F *)(fAcceptedCutList->At(19)))->Fill(nClustersTPC);
4195               ((TH1F *)(fAcceptedCutList->At(23)))->Fill(chi2PerClusterTPC);
4196               ((TH1F *)(fAcceptedCutList->At(27)))->Fill(extCov[0]);
4197               ((TH1F *)(fAcceptedCutList->At(31)))->Fill(extCov[2]);
4198               ((TH1F *)(fAcceptedCutList->At(35)))->Fill(extCov[5]);
4199               ((TH1F *)(fAcceptedCutList->At(39)))->Fill(extCov[9]);
4200               ((TH1F *)(fAcceptedCutList->At(43)))->Fill(extCov[14]);
4201               ((TH3D *)(fAcceptedCutList->At(47)))->Fill(track->Eta(),
4202                                                          track->Phi()*180./TMath::Pi(),
4203                                                          nClustersTPC);
4204               ((TH3D *)(fAcceptedCutList->At(51)))->Fill(track->Eta(),
4205                                                          track->Phi()*180./TMath::Pi(),
4206                                                          chi2PerClusterTPC);
4207               ((TH3D *)(fAcceptedCutList->At(55)))->Fill(track->Eta(),
4208                                                          track->Phi()*180./TMath::Pi(),
4209                                                          npointsTPCdEdx);
4210               ((TH1F *)(fAcceptedCutList->At(59)))->Fill(npointsTPCdEdx);
4211               
4212               ((TH1F *)(fAcceptedDCAList->At(3)))->Fill(TMath::Abs(dcaXY));
4213               ((TH1F *)(fAcceptedDCAList->At(7)))->Fill(TMath::Abs(dcaZ));
4214               ((TH1F *)(fAcceptedDCAList->At(11)))->Fill(nSigmaToVertex);
4215               if(fProtonAnalysisBase->GetEtaMode())
4216                 ((TH2D *)(fQA2DList->At(6)))->Fill(track->Eta(),gPt);
4217               else
4218                 ((TH2D *)(fQA2DList->At(6)))->Fill(fProtonAnalysisBase->Rapidity(track->Px(),
4219                                                             track->Py(),
4220                                                             track->Pz()),
4221                                                    gPt);
4222               if(fProtonAnalysisBase->GetEtaMode())
4223                 ((TH3F *)(fQA2DList->At(11)))->Fill(track->Eta(),gPt,
4224                                                     ConvertPDGToInt(motherPDGCode));
4225               else
4226                 ((TH3F *)(fQA2DList->At(11)))->Fill(fProtonAnalysisBase->Rapidity(track->Px(),
4227                                                              track->Py(),
4228                                                              track->Pz()),
4229                                                     gPt,
4230                                                     ConvertPDGToInt(motherPDGCode));
4231             }
4232           }//secondary particles
4233         }//accepted - track cuts
4234         else if(!fProtonAnalysisBase->IsAccepted(esd,vertex,track)) {
4235           if(label <= stack->GetNprimary()) {
4236             if(track->Charge() > 0) {
4237               ((TH3D *)(fRejectedCutList->At(0)))->Fill(track->Eta(),
4238                                                         track->Phi()*180./TMath::Pi(),
4239                                                         nClustersTPC);
4240               ((TH3D *)(fRejectedCutList->At(4)))->Fill(track->Eta(),
4241                                                         track->Phi()*180./TMath::Pi(),
4242                                                         chi2PerClusterTPC);
4243               ((TH3D *)(fRejectedCutList->At(8)))->Fill(track->Eta(),
4244                                                         track->Phi()*180./TMath::Pi(),
4245                                                         npointsTPCdEdx);
4246               if(fProtonAnalysisBase->GetEtaMode())
4247                 ((TH2D *)(fQA2DList->At(1)))->Fill(track->Eta(),gPt);
4248               else
4249                 ((TH2D *)(fQA2DList->At(1)))->Fill(fProtonAnalysisBase->Rapidity(track->Px(),
4250                                                             track->Py(),
4251                                                             track->Pz()),
4252                                                    gPt);
4253             }
4254             else if(track->Charge() < 0) {
4255               ((TH3D *)(fRejectedCutList->At(1)))->Fill(track->Eta(),
4256                                                         track->Phi()*180./TMath::Pi(),
4257                                                         nClustersTPC);
4258               ((TH3D *)(fRejectedCutList->At(5)))->Fill(track->Eta(),
4259                                                         track->Phi()*180./TMath::Pi(),
4260                                                         chi2PerClusterTPC);
4261               ((TH3D *)(fRejectedCutList->At(9)))->Fill(track->Eta(),
4262                                                         track->Phi()*180./TMath::Pi(),
4263                                                         npointsTPCdEdx);
4264                                                 
4265               if(fProtonAnalysisBase->GetEtaMode())
4266                 ((TH2D *)(fQA2DList->At(5)))->Fill(track->Eta(),gPt);
4267               else
4268                 ((TH2D *)(fQA2DList->At(5)))->Fill(fProtonAnalysisBase->Rapidity(track->Px(),
4269                                                             track->Py(),
4270                                                             track->Pz()),
4271                                                    gPt);
4272             }
4273           }//primary particles
4274           else if(label > stack->GetNprimary()) {
4275             if(track->Charge() > 0) {
4276               ((TH3D *)(fRejectedCutList->At(2)))->Fill(track->Eta(),
4277                                                         track->Phi()*180./TMath::Pi(),
4278                                                         nClustersTPC);
4279               ((TH3D *)(fRejectedCutList->At(6)))->Fill(track->Eta(),
4280                                                         track->Phi()*180./TMath::Pi(),
4281                                                         chi2PerClusterTPC);
4282               ((TH3D *)(fRejectedCutList->At(10)))->Fill(track->Eta(),
4283                                                         track->Phi()*180./TMath::Pi(),
4284                                                         npointsTPCdEdx);
4285               if(fProtonAnalysisBase->GetEtaMode())
4286                 ((TH2D *)(fQA2DList->At(3)))->Fill(track->Eta(),gPt);
4287               else
4288                 ((TH2D *)(fQA2DList->At(3)))->Fill(fProtonAnalysisBase->Rapidity(track->Px(),
4289                                                             track->Py(),
4290                                                             track->Pz()),
4291                                                    gPt);
4292             }
4293             else if(track->Charge() < 0) {
4294               ((TH3D *)(fRejectedCutList->At(3)))->Fill(track->Eta(),
4295                                                         track->Phi()*180./TMath::Pi(),
4296                                                         nClustersTPC);
4297               ((TH3D *)(fRejectedCutList->At(7)))->Fill(track->Eta(),
4298                                                         track->Phi()*180./TMath::Pi(),
4299                                                         chi2PerClusterTPC);
4300               ((TH3D *)(fRejectedCutList->At(11)))->Fill(track->Eta(),
4301                                                         track->Phi()*180./TMath::Pi(),
4302                                                         npointsTPCdEdx);
4303               if(fProtonAnalysisBase->GetEtaMode())
4304                 ((TH2D *)(fQA2DList->At(7)))->Fill(track->Eta(),gPt);
4305               else
4306                 ((TH2D *)(fQA2DList->At(7)))->Fill(fProtonAnalysisBase->Rapidity(track->Px(),
4307                                                             track->Py(),
4308                                                             track->Pz()),
4309                                                    gPt);
4310             }
4311           }//secondary particles
4312         }//rejected - track cuts
4313       }//proton check
4314     }//combined tracking
4315   }//track loop
4316     
4317 }
4318
4319 //____________________________________________________________________//
4320 void AliProtonQAAnalysis::InitMCAnalysis() {
4321   //MC analysis - 3D histograms: y-pT-pdg
4322   fPDGList = new TList();
4323   TH3F *gHistYPtPDGProtons = new TH3F("gHistYPtPDGProtons",
4324                                       ";;P_{T} [GeV/c];PDG",
4325                                       fNBinsY,fMinY,fMaxY,
4326                                       fNBinsPt,fMinPt,fMaxPt,
4327                                       14,-0.5,13.5);
4328   if(fProtonAnalysisBase->GetEtaMode()) 
4329     gHistYPtPDGProtons->GetXaxis()->SetTitle("#eta");
4330   else 
4331     gHistYPtPDGProtons->GetXaxis()->SetTitle("y");
4332   fPDGList->Add(gHistYPtPDGProtons);
4333   TH3F *gHistYPtPDGAntiProtons = new TH3F("gHistYPtPDGAntiProtons",
4334                                           ";;P_{T} [GeV/c];PDG",
4335                                           fNBinsY,fMinY,fMaxY,
4336                                           fNBinsPt,fMinPt,fMaxPt,
4337                                           14,-0.5,13.5);
4338   if(fProtonAnalysisBase->GetEtaMode()) 
4339     gHistYPtPDGAntiProtons->GetXaxis()->SetTitle("#eta");
4340   else 
4341     gHistYPtPDGAntiProtons->GetXaxis()->SetTitle("y");
4342   fPDGList->Add(gHistYPtPDGAntiProtons);
4343
4344   //MC processes
4345   fMCProcessesList = new TList();
4346   TH1F *gHistProtonsFromKLProcess = new TH1F("gHistProtonsFromKLProcess","",51,-0.5,50.5);
4347   fMCProcessesList->Add(gHistProtonsFromKLProcess);
4348   TH1F *gHistProtonsFromPionProcess = new TH1F("gHistProtonsFromPionProcess","",51,-0.5,50.5);
4349   fMCProcessesList->Add(gHistProtonsFromPionProcess);
4350   TH1F *gHistProtonsFromKSProcess = new TH1F("gHistProtonsFromKSProcess","",51,-0.5,50.5);
4351   fMCProcessesList->Add(gHistProtonsFromKSProcess);
4352   TH1F *gHistProtonsFromKaonProcess = new TH1F("gHistProtonsFromKaonProcess","",51,-0.5,50.5);
4353   fMCProcessesList->Add(gHistProtonsFromKaonProcess);
4354   TH1F *gHistProtonsFromNeutronProcess = new TH1F("gHistProtonsFromNeutronProcess","",51,-0.5,50.5);
4355   fMCProcessesList->Add(gHistProtonsFromNeutronProcess);
4356   TH1F *gHistProtonsFromProtonProcess = new TH1F("gHistProtonsFromProtonProcess","",51,-0.5,50.5);
4357   fMCProcessesList->Add(gHistProtonsFromProtonProcess);
4358   TH1F *gHistProtonsFromSigmaMinusProcess = new TH1F("gHistProtonsFromSigmaMinusProcess","",51,-0.5,50.5);
4359   fMCProcessesList->Add(gHistProtonsFromSigmaMinusProcess);
4360   TH1F *gHistProtonsFromLambda0Process = new TH1F("gHistProtonsFromLambda0Process","",51,-0.5,50.5);
4361   fMCProcessesList->Add(gHistProtonsFromLambda0Process);
4362   TH1F *gHistProtonsFromSigmaPlusProcess = new TH1F("gHistProtonsFromSigmaPlusProcess","",51,-0.5,50.5);
4363   fMCProcessesList->Add(gHistProtonsFromSigmaPlusProcess);
4364   TH1F *gHistProtonsFromXiMinusProcess = new TH1F("gHistProtonsFromXiMinusProcess","",51,-0.5,50.5);
4365   fMCProcessesList->Add(gHistProtonsFromXiMinusProcess);
4366   TH1F *gHistProtonsFromXi0Process = new TH1F("gHistProtonsFromXi0Process","",51,-0.5,50.5);                                        
4367   fMCProcessesList->Add(gHistProtonsFromXi0Process);
4368   TH1F *gHistProtonsFromOmegaProcess = new TH1F("gHistProtonsFromOmegaProcess","",51,-0.5,50.5); 
4369   fMCProcessesList->Add(gHistProtonsFromOmegaProcess);
4370
4371   TH1F *gHistAntiProtonsFromKLProcess = new TH1F("gHistAntiProtonsFromKLProcess","",51,-0.5,50.5); 
4372   fMCProcessesList->Add(gHistAntiProtonsFromKLProcess);
4373   TH1F *gHistAntiProtonsFromPionProcess = new TH1F("gHistAntiProtonsFromPionProcess","",51,-0.5,50.5); 
4374   fMCProcessesList->Add(gHistAntiProtonsFromPionProcess);
4375   TH1F *gHistAntiProtonsFromKSProcess = new TH1F("gHistAntiProtonsFromKSProcess","",51,-0.5,50.5); 
4376   fMCProcessesList->Add(gHistAntiProtonsFromKSProcess);
4377   TH1F *gHistAntiProtonsFromKaonProcess = new TH1F("gHistAntiProtonsFromKaonProcess","",51,-0.5,50.5); 
4378   fMCProcessesList->Add(gHistAntiProtonsFromKaonProcess);
4379   TH1F *gHistAntiProtonsFromNeutronProcess = new TH1F("gHistAntiProtonsFromNeutronProcess","",51,-0.5,50.5); 
4380   fMCProcessesList->Add(gHistAntiProtonsFromNeutronProcess);
4381   TH1F *gHistAntiProtonsFromProtonProcess = new TH1F("gHistAntiProtonsFromProtonProcess","",51,-0.5,50.5); 
4382   fMCProcessesList->Add(gHistAntiProtonsFromProtonProcess);
4383   TH1F *gHistAntiProtonsFromLambda0Process = new TH1F("gHistAntiProtonsFromLambda0Process","",51,-0.5,50.5); 
4384   fMCProcessesList->Add(gHistAntiProtonsFromLambda0Process);
4385   TH1F *gHistAntiProtonsFromSigmaPlusProcess = new TH1F("gHistAntiProtonsFromSigmaPlusProcess","",51,-0.5,50.5); 
4386   fMCProcessesList->Add(gHistAntiProtonsFromSigmaPlusProcess);
4387 }
4388
4389 //____________________________________________________________________//
4390 void AliProtonQAAnalysis::RunMCAnalysis(AliStack* const stack) {
4391   //Main analysis part - MC 
4392   for(Int_t iParticle = 0; iParticle < stack->GetNtrack(); iParticle++) {
4393     TParticle *particle = stack->Particle(iParticle);
4394     if(!particle) continue;
4395
4396     if(TMath::Abs(particle->Eta()) > 1.0) continue;//acceptance
4397     if((particle->Pt() > fMaxPt)||(particle->Pt() < fMinPt)) continue;
4398     if(fProtonAnalysisBase->GetEtaMode()) {
4399       if((particle->Eta() > fMaxY)||(particle->Eta() < fMinY)) continue;
4400     }
4401     else {
4402       if((fProtonAnalysisBase->Rapidity(particle->Px(),particle->Py(),particle->Pz()) > fMaxY)||(fProtonAnalysisBase->Rapidity(particle->Px(),particle->Py(),particle->Pz()) < fMinY)) continue;
4403     }
4404
4405     Int_t pdgcode = particle->GetPdgCode();
4406     if(pdgcode == 2212) {
4407       if(iParticle <= stack->GetNprimary()) {
4408         if(fProtonAnalysisBase->GetEtaMode())
4409           ((TH3F *)(fPDGList->At(0)))->Fill(particle->Eta(),particle->Pt(),0);
4410         else
4411           ((TH3F *)(fPDGList->At(0)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
4412                                                      particle->Py(),
4413                                                      particle->Pz()),
4414                                             particle->Pt(),0);
4415       }
4416       else if(iParticle > stack->GetNprimary()) {
4417         Int_t lPartMother = particle->GetFirstMother();
4418         TParticle *motherParticle = stack->Particle(lPartMother);
4419         if(!motherParticle) continue;
4420         Int_t motherPDGCode = motherParticle->GetPdgCode();
4421         if(fMCProcessIdFlag)
4422           if(particle->GetUniqueID() != fMCProcessId) continue;
4423         if(fMotherParticlePDGCodeFlag)
4424           if(TMath::Abs(motherPDGCode) != fMotherParticlePDGCode) continue;
4425
4426         if(fProtonAnalysisBase->GetEtaMode())
4427           ((TH3F *)(fPDGList->At(0)))->Fill(particle->Eta(),
4428                                             particle->Pt(),
4429                                             ConvertPDGToInt(motherParticle->GetPdgCode()));
4430         else
4431           ((TH3F *)(fPDGList->At(0)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
4432                                                      particle->Py(),
4433                                                      particle->Pz()),
4434                                             particle->Pt(),
4435                                             ConvertPDGToInt(motherParticle->GetPdgCode()));
4436         //processes
4437         if(TMath::Abs(motherParticle->GetPdgCode()) == 130)
4438           ((TH1F *)(fMCProcessesList->At(0)))->Fill(particle->GetUniqueID());
4439         if(TMath::Abs(motherParticle->GetPdgCode()) == 211)
4440           ((TH1F *)(fMCProcessesList->At(1)))->Fill(particle->GetUniqueID());
4441         if(TMath::Abs(motherParticle->GetPdgCode()) == 310)
4442           ((TH1F *)(fMCProcessesList->At(2)))->Fill(particle->GetUniqueID());
4443         if(TMath::Abs(motherParticle->GetPdgCode()) == 321)
4444           ((TH1F *)(fMCProcessesList->At(3)))->Fill(particle->GetUniqueID());
4445         if(TMath::Abs(motherParticle->GetPdgCode()) == 2112)
4446           ((TH1F *)(fMCProcessesList->At(4)))->Fill(particle->GetUniqueID());
4447         if(TMath::Abs(motherParticle->GetPdgCode()) == 2212)
4448           ((TH1F *)(fMCProcessesList->At(5)))->Fill(particle->GetUniqueID());
4449         if(TMath::Abs(motherParticle->GetPdgCode()) == 3112)
4450           ((TH1F *)(fMCProcessesList->At(6)))->Fill(particle->GetUniqueID());
4451         if(TMath::Abs(motherParticle->GetPdgCode()) == 3122)
4452           ((TH1F *)(fMCProcessesList->At(7)))->Fill(particle->GetUniqueID());
4453         if(TMath::Abs(motherParticle->GetPdgCode()) == 3222)
4454           ((TH1F *)(fMCProcessesList->At(8)))->Fill(particle->GetUniqueID());
4455         if(TMath::Abs(motherParticle->GetPdgCode()) == 3312)
4456           ((TH1F *)(fMCProcessesList->At(9)))->Fill(particle->GetUniqueID());
4457         if(TMath::Abs(motherParticle->GetPdgCode()) == 3322)
4458           ((TH1F *)(fMCProcessesList->At(10)))->Fill(particle->GetUniqueID());
4459         if(TMath::Abs(motherParticle->GetPdgCode()) == 3334)
4460           ((TH1F *)(fMCProcessesList->At(11)))->Fill(particle->GetUniqueID());
4461       }//secondary proton
4462     }//pdgcode of proton
4463
4464     if(pdgcode == -2212) {
4465       if(iParticle <= stack->GetNprimary()) {
4466         if(fProtonAnalysisBase->GetEtaMode())
4467           ((TH3F *)(fPDGList->At(1)))->Fill(particle->Eta(),particle->Pt(),0);
4468         else
4469           ((TH3F *)(fPDGList->At(1)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
4470                                                      particle->Py(),
4471                                                      particle->Pz()),
4472                                             particle->Pt(),0);
4473       }
4474       else if(iParticle > stack->GetNprimary()) {
4475         Int_t lPartMother = particle->GetFirstMother();
4476         TParticle *motherParticle = stack->Particle(lPartMother);
4477         if(!motherParticle) continue;
4478         Int_t motherPDGCode = motherParticle->GetPdgCode();
4479         if(fMCProcessIdFlag)
4480           if(particle->GetUniqueID() != fMCProcessId) continue;
4481         if(fMotherParticlePDGCodeFlag)
4482           if(TMath::Abs(motherPDGCode) != fMotherParticlePDGCode) continue;
4483
4484         if(fProtonAnalysisBase->GetEtaMode())
4485           ((TH3F *)(fPDGList->At(1)))->Fill(particle->Eta(),
4486                                             particle->Pt(),
4487                                             ConvertPDGToInt(motherParticle->GetPdgCode()));
4488         else
4489           ((TH3F *)(fPDGList->At(1)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
4490                                                      particle->Py(),
4491                                                      particle->Pz()),
4492                                             particle->Pt(),
4493                                             ConvertPDGToInt(motherParticle->GetPdgCode()));
4494
4495         //processes
4496         if(TMath::Abs(motherParticle->GetPdgCode()) == 130)
4497           ((TH1F *)(fMCProcessesList->At(12)))->Fill(particle->GetUniqueID());
4498         if(TMath::Abs(motherParticle->GetPdgCode()) == 211)
4499           ((TH1F *)(fMCProcessesList->At(13)))->Fill(particle->GetUniqueID());
4500         if(TMath::Abs(motherParticle->GetPdgCode()) == 310)
4501           ((TH1F *)(fMCProcessesList->At(14)))->Fill(particle->GetUniqueID());
4502         if(TMath::Abs(motherParticle->GetPdgCode()) == 321)
4503           ((TH1F *)(fMCProcessesList->At(15)))->Fill(particle->GetUniqueID());
4504         if(TMath::Abs(motherParticle->GetPdgCode()) == 2112)
4505           ((TH1F *)(fMCProcessesList->At(16)))->Fill(particle->GetUniqueID());
4506         if(TMath::Abs(motherParticle->GetPdgCode()) == 2212)
4507           ((TH1F *)(fMCProcessesList->At(17)))->Fill(particle->GetUniqueID());
4508         if(TMath::Abs(motherParticle->GetPdgCode()) == 3122)
4509           ((TH1F *)(fMCProcessesList->At(18)))->Fill(particle->GetUniqueID());
4510         if(TMath::Abs(motherParticle->GetPdgCode()) == 3222)
4511           ((TH1F *)(fMCProcessesList->At(19)))->Fill(particle->GetUniqueID());
4512       }//secondary antiproton
4513     }//pdgcode of antiproton
4514
4515   }//particle loop
4516 }
4517
4518 //____________________________________________________________________//
4519 Int_t AliProtonQAAnalysis::ConvertPDGToInt(Int_t pdgCode) const {
4520   //Converts the pdg code to an int based on the following scheme:
4521   //1: PDG code: 130 - Name: K_L0
4522   //2: PDG code: 211 - Name: pi+
4523   //3: PDG code: 310 - Name: K_S0
4524   //4: PDG code: 321 - Name: K+
4525   //5: PDG code: 2112 - Name: neutron
4526   //6: PDG code: 2212 - Name: proton
4527   //7: PDG code: 3112 - Name: Sigma-
4528   //8: PDG code: 3122 - Name: Lambda0
4529   //9: PDG code: 3222 - Name: Sigma+
4530   //10: PDG code: 3312 - Name: Xi-
4531   //11: PDG code: 3322 - Name: Xi0
4532   //12: PDG code: 3334 - Name: Omega-
4533   Int_t code = -1;
4534   switch (TMath::Abs(pdgCode)) {
4535   case 130: {
4536     code = 1;
4537     break;
4538   }
4539   case 211: {
4540     code = 2;
4541     break;
4542   }
4543   case 310: {
4544     code = 3;
4545     break;
4546   }
4547   case 321: {
4548     code = 4;
4549     break;
4550   }
4551   case 2112: {
4552     code = 5;
4553     break;
4554   }
4555   case 2212: {
4556     code = 6;
4557     break;
4558   }
4559   case 3112: {
4560     code = 7;
4561     break;
4562   }
4563   case 3122: {
4564     code = 8;
4565     break;
4566   }
4567   case 3222: {
4568     code = 9;
4569     break;
4570   }
4571   case 3312: {
4572     code = 10;
4573     break;
4574   }
4575   case 3322: {
4576     code = 11;
4577     break;
4578   }
4579   case 3334: {
4580     code = 12;
4581     break;
4582   }
4583   default: {
4584     code = -1;
4585     break;
4586   }
4587   }//switch
4588
4589   return code;
4590 }
4591
4592
4593
4594
4595
4596