]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG1/AliAnalysisTaskQASym.cxx
changes for updated AliESDtrackCuts for ITS stand alone tracks
[u/mrichter/AliRoot.git] / PWG1 / AliAnalysisTaskQASym.cxx
1 #include "TChain.h"
2 #include "TTree.h"
3 #include "TH1F.h"
4 #include "TH2F.h"
5 #include "TH3F.h"
6 #include "TCanvas.h"
7 #include "TList.h"
8 #include "TParticle.h"
9 #include "TParticlePDG.h"
10 #include "TProfile.h"
11
12 #include "AliAnalysisTask.h"
13 #include "AliAnalysisManager.h"
14
15 #include "AliESDEvent.h"
16 #include "AliLog.h"
17 #include "AliESDVertex.h"
18 #include "AliESDInputHandler.h"
19 #include "AliESDtrackCuts.h"
20 #include "AliMultiplicity.h"
21
22 #include "AliAnalysisTaskQASym.h"
23 #include "AliExternalTrackParam.h"
24 #include "AliTrackReference.h"
25 #include "AliHeader.h"
26 #include "AliGenEventHeader.h"
27 #include "AliGenDPMjetEventHeader.h"
28
29 // Analysis Task for basic QA on the ESD
30
31 // Authors: Jan Fiete Grosse-Oetringhaus, Christian Klein-Boesing,
32 //          Andreas Morsch, Eva Sicking
33
34 ClassImp(AliAnalysisTaskQASym)
35
36   //________________________________________________________________________
37   AliAnalysisTaskQASym::AliAnalysisTaskQASym(const char *name) 
38     : AliAnalysisTaskSE(name) 
39     ,fTrackType(0)
40     ,fStandAlone(0)
41     ,fLow(0)
42     ,fHigh(100000)
43     ,fFieldOn(kTRUE)
44     ,fHists(0)
45     ,fHistRECpt(0)
46     ,fEta(0)
47     ,fEtaWidth(0)
48     ,fPhiWidth(0)
49     ,fDcaWidth(0)
50     ,fPtWidth(0)
51     ,fEtaPhi(0)
52     ,fEtaPt(0)
53     ,fQPt(0)
54     ,fDca(0)
55     ,fqRec(0)
56     ,fSigmaPtHist(0)
57     
58     ,fRecPtPos(0)
59     ,fRecPtNeg(0)
60     ,fRecPhiPos(0)
61     ,fRecPhiNeg(0)
62     ,fRecEtaPos(0)
63     ,fRecEtaNeg(0)
64     ,fRecEtaPtPos(0)
65     ,fRecEtaPtNeg(0)
66     ,fRecDcaPos(0)
67     ,fRecDcaNeg(0)
68     ,fRecDcaNegInv(0)
69     ,fRecDPos(0)
70     ,fRecDNeg(0)
71     
72     
73     ,fRecQPtPosEta(0)
74     ,fRecQPtNegEta(0)
75     ,fRecPtPosEta(0)
76     ,fRecPtNegEta(0)
77     ,fRecPhiPosEta(0)
78     ,fRecPhiNegEta(0)
79     ,fRecDcaPosEta(0)
80     ,fRecDcaNegEta(0)
81     ,fRecDPosEta(0)
82     ,fRecDNegEta(0)
83     
84     ,fRecPtPosVz(0)
85     ,fRecPtNegVz(0)
86     ,fRecEtaPosVz(0)
87     ,fRecEtaNegVz(0)
88     ,fRecPhiPosVz(0)
89     ,fRecPhiNegVz(0)
90     ,fSignedDcaPosVz(0)
91     ,fSignedDcaNegVz(0)
92     ,fRecQPtPosEtaVz(0)
93     ,fRecQPtNegEtaVz(0)
94     ,fRecEtaPtPosVz(0)
95     ,fRecEtaPtNegVz(0)
96     
97     
98     ,fDeltaPhiAll(0)
99     ,fDeltaPhiLeading(0) 
100     ,fDiffDcaD(0)
101     
102     ,fPhiRec(0)
103     ,fThetaRec(0)
104     ,fNumber(0)
105     ,fNumberAfterCut(0)
106     ,fVx(0)
107     ,fVy(0)
108     ,fVz(0)
109     ,fVertexX(0)
110     ,fVertexY(0)
111     ,fVertexZ(0)
112     ,fNVertexSPD(0)
113     ,fNVertexTracks(0)
114     ,fRecDcaPosPhi(0)
115     ,fRecDcaNegPhi(0)
116     ,fRecPtPosPhi(0)
117     ,fRecPtNegPhi(0)
118     ,fRecEtaPosPhi(0)
119     ,fRecEtaNegPhi(0)
120     ,fRecQPtPhi(0)
121     ,fRecEtaPtPosPhi(0)
122     ,fRecEtaPtNegPhi(0)
123
124     ,fRecPtPosEtaPos(0)
125     ,fRecPtNegEtaPos(0)
126     ,fRecPtPosEtaNeg(0)
127     ,fRecPtNegEtaNeg(0)
128
129     ,fRec1PtPosEtaPos(0)
130     ,fRec1PtNegEtaPos(0)
131     ,fRec1PtPosEtaNeg(0)
132     ,fRec1PtNegEtaNeg(0)
133
134     ,fRecPhiPosEtaPos(0)
135     ,fRecPhiNegEtaPos(0)
136     ,fRecPhiPosEtaNeg(0)
137     ,fRecPhiNegEtaNeg(0)
138
139     ,fRecDcaPosPhiEtaPos(0)
140     ,fRecDcaNegPhiEtaPos(0) 
141     ,fRecDcaPosPhiEtaNeg(0)  
142     ,fRecDcaNegPhiEtaNeg(0)  
143
144     ,fRecDcaPosPtEtaPos(0)
145     ,fRecDcaNegPtEtaPos(0) 
146     ,fRecDcaPosPtEtaNeg(0)  
147     ,fRecDcaNegPtEtaNeg(0)  
148   
149     ,fRecPtPosPhiEtaPos(0)  
150     ,fRecPtNegPhiEtaPos(0)  
151     ,fRecPtPosPhiEtaNeg(0) 
152     ,fRecPtNegPhiEtaNeg(0) 
153
154
155 //    ,fRecDcaPhiPtPosEtaPos(0)
156 //    ,fRecDcaPhiPtNegEtaPos(0)
157 //    ,fRecDcaPhiPtPosEtaNeg(0)  
158 //    ,fRecDcaPhiPtNegEtaNeg(0)  
159
160     ,fEtavPt(0)  
161     ,fPhivPt(0) 
162  
163     ,fCompareTPCparam(0)
164
165     ,fITSlayer(0)
166     ,fITSlayerEta(0)
167     ,fITSlayerPhi(0)
168
169     ,fCuts(0)
170
171 {
172   // Constructor
173   for(Int_t i = 0;i<18;++i){
174     fRecPtTpcSector[i] = 0;
175     fRecEtaTpcSector[i] = 0;
176     fSignedDcaTpcSector[i] = 0;
177     fRecQPtTpcSector[i] = 0;
178     fRecEtaPtTpcSector[i] = 0;
179   }
180
181   for(Int_t i = 0;i< 7;++i){
182     fRecPtPosLadder[i] = 0;
183     fRecPtNegLadder[i] = 0;
184     fRecPhiPosLadder[i] = 0;
185     fRecPhiNegLadder[i] = 0;
186     fRecEtaPosLadder[i] = 0;
187     fRecEtaNegLadder[i] = 0;
188     fSignDcaPos[i] = 0;
189     fSignDcaNeg[i] = 0;
190     fSignDcaNegInv[i] = 0;
191     fPtSigmaPos[i] =0;
192     fPtSigmaNeg[i] =0;
193     fqPtRec[i] =0;
194     fDcaSigmaPos[i] =0;
195     fDcaSigmaNeg[i] =0;
196   }
197
198   for(Int_t i = 0;i< 3;i++){
199     for(Int_t j = 0;j< 2;j++){
200       fEtaBinPt[i][j]=0;
201       fPhiBinPt[i][j]=0;
202       fDcaBinPt[i][j]=0;
203       fEtaPhiBinPt[i][j]=0;
204     }
205   }
206
207   DefineOutput(1,  TList::Class()); 
208
209   
210   
211 }
212
213
214 //________________________________________________________________________
215 void AliAnalysisTaskQASym::UserCreateOutputObjects()
216 {
217   // Create histograms
218   // Called once
219
220   Bool_t oldStatus = TH1::AddDirectoryStatus();
221   TH1::AddDirectory(kFALSE);
222
223   Double_t range = 0.3;
224   Double_t pt = 20.;
225
226   fHists = new TList();
227
228   fHistRECpt   = new TH1F("fHistRECpt", 
229                           " p_{T}",
230                           200, 0., pt);
231   fEta   = new TH1F("fEta", 
232                     " #eta",
233                     200, -2., 2.);
234   fEtaWidth   = new TH1F("fEtaWidth", 
235                          " #eta",
236                          200, -2., 2.);
237   fPhiWidth   = new TH1F("fPhiWidth", 
238                          " #phi",
239                          200, 0., 2*TMath::Pi());
240   fDcaWidth   = new TH1F("fDcaWidth", 
241                          "dca",
242                          200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
243   fPtWidth   = new TH1F("fPtWidth", 
244                          "p_{T}",
245                          200, 0., pt);
246   fEtavPt   = new TH2F("fEtavPt", 
247                        " #eta -p_{T}",
248                        200, -2., 2.,
249                        100, -3, 4);
250   fPhivPt   = new TH2F("fPhivPt", 
251                        " #phi -p_{T}",
252                        200, 0, 2*TMath::Pi(),
253                        100, -3, 5);
254   fCompareTPCparam   = new TH2F("fCompareTPCparam", 
255                                 "fCompareTPCparam",
256                                 100, -1., 1.,100,-5, 5);
257
258   fITSlayer   = new TH1F("fITSlayer", 
259                          "fITSlayer",
260                          8, -1.5, 6.5);
261   fITSlayerEta   = new TH2F("fITSlayerEta", 
262                          "fITSlayerEta",
263                             8, -1.5, 6.5, 200, -2.,2.);
264   fITSlayerPhi   = new TH2F("fITSlayerPhi", 
265                             "fITSlayerPhi",
266                             8, -1.5, 6.5, 200, 0,2*TMath::Pi());
267   fEtaPhi   = new TH2F("fEtaPhi", 
268                        " #eta - #phi",
269                        200, -2., 2., 128, 0., 2. * TMath::Pi());
270   fThetaRec   = new TH1F("fThetaRec", 
271                          " #theta",
272                          180, 0., TMath::Pi());
273   fPhiRec   = new TH1F("fPhiRec", 
274                        " #phi",
275                        180, 0., 2*TMath::Pi());
276   fNumber   = new TH1F("fNumber", 
277                        "number of tracks per event",
278                        300, -0.5, 299.5);
279   fNumberAfterCut   = new TH1F("fNumberAfterCut", 
280                                "number of tracks per event after cuts",
281                                300, -0.5, 299.5);
282   fVx   = new TH1F("fVx", 
283                    "X of first track point",
284                    100, -1., 1.);
285   fVy   = new TH1F("fVy", 
286                    "Y of first track point",
287                    100, -1., 1.);
288   fVz   = new TH1F("fVz", 
289                    "Z of first track point",
290                    200, -50., 50.);
291   fVertexX   = new TH1F("fVertexX", 
292                         "X of vertex",
293                         100, -1., 1.);
294   fVertexY   = new TH1F("fVertexY", 
295                         "Y of vertex",
296                         100, -1., 1.);
297   fVertexZ   = new TH1F("fVertexZ", 
298                         "Z of vertex",
299                         200, -50., 50.);
300   fNVertexSPD   = new TH1F("fNVertexSPD", 
301                         "Number of SPD vertices",
302                         10, -0.5, 9.5);
303   fNVertexTracks   = new TH1F("fNVertexTracks", 
304                               "Number of track vertices",
305                               10, -0.5, 9.5);
306   
307   fEtaPt   = new TH1F("fEtaPt", 
308                       " #eta/p_{T} ",
309                       100, -1., 1.);
310
311   fQPt   = new TH1F("fQPt", 
312                     " charge/p_{T} ",
313                     100, -1., 1.);
314
315   fDca   = new TH1F("fDca", 
316                     " dca ",
317                     200,  -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
318
319
320   fqRec    = new TH1F("fqRec",   
321                       " charge all reconstructed particle",
322                       21, -9.5, 10.5);
323   
324   fSigmaPtHist    = new TH1F("fSigmaPtHist",   
325                          "Log_{10}(#sigma_{p_{T}})",
326                          200, -4., 8.);
327
328
329
330
331   //------------
332   for(Int_t ITSlayer_case=0;ITSlayer_case<7;ITSlayer_case++){
333
334     fSignDcaPos[ITSlayer_case]   = new TH1F(Form("fSignDcaPos%d", ITSlayer_case),  
335                                             " Signed dca", 
336                                             200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
337     fSignDcaPos[ITSlayer_case]->GetXaxis()->SetTitle("dca");
338     fSignDcaPos[ITSlayer_case]->GetYaxis()->SetTitle("");
339    
340  
341     fSignDcaNeg[ITSlayer_case]   = new TH1F(Form("fSignDcaNeg%d", ITSlayer_case),  
342                                             " Signed dcas",
343                                             200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
344     fSignDcaNeg[ITSlayer_case]->GetXaxis()->SetTitle("dca");
345     fSignDcaNeg[ITSlayer_case]->GetYaxis()->SetTitle("");
346
347     fSignDcaNegInv[ITSlayer_case]   = new TH1F(Form("fSignDcaNegInv%d", ITSlayer_case),  
348                                                " inverse Signed dca ",
349                                                200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
350     fSignDcaNegInv[ITSlayer_case]->GetXaxis()->SetTitle("-dca");
351     fSignDcaNegInv[ITSlayer_case]->GetYaxis()->SetTitle("");
352
353
354
355
356     fPtSigmaPos[ITSlayer_case]   = new TH1F(Form("fPtSigmaPos%d", ITSlayer_case),  
357                                             " #sigma_{pT} ",
358                                             208, -4., 8.);
359     fPtSigmaPos[ITSlayer_case]->GetXaxis()->SetTitle("Log_{10}(#sigma_{pT})");
360     fPtSigmaPos[ITSlayer_case]->GetYaxis()->SetTitle("");
361     
362     
363     fPtSigmaNeg[ITSlayer_case]   = new TH1F(Form("fPtSigmaNeg%d",ITSlayer_case),  
364                                             " #sigma_{pT}",
365                                             208, -4., 8.);
366     fPtSigmaNeg[ITSlayer_case]->GetXaxis()->SetTitle("Log_{10}(#sigma_{pT})");
367     fPtSigmaNeg[ITSlayer_case]->GetYaxis()->SetTitle("");
368
369
370
371
372
373     fqPtRec[ITSlayer_case]   = new TH1F(Form("fqPtRec%d",ITSlayer_case),  
374                                         "q/ p_{T}",
375                                         200, -100., 100.);
376     fqPtRec[ITSlayer_case]->GetXaxis()->SetTitle("q_{tr}/p_{T, tr} (GeV/c)");
377     fqPtRec[ITSlayer_case]->GetYaxis()->SetTitle("");
378
379   
380    
381
382
383     fDcaSigmaPos[ITSlayer_case]   = new TH2F(Form("fDcaSigmaPos%d", ITSlayer_case),  
384                                              " p_{T} shift vs #sigma_{pT} ",
385                                              200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9),200, -4., 4. );
386     fDcaSigmaPos[ITSlayer_case]->GetXaxis()->SetTitle("signed DCA)");
387     fDcaSigmaPos[ITSlayer_case]->GetYaxis()->SetTitle("log_{10}(#sigma_{pT})");
388     
389     
390     fDcaSigmaNeg[ITSlayer_case]   = new TH2F(Form("fDcaSigmaNeg%d", ITSlayer_case),  
391                                              " p_{T} shift vs #sigma_{pT} ",
392                                              200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9),200, -4., 4. );
393     fDcaSigmaNeg[ITSlayer_case]->GetXaxis()->SetTitle("signed DCA");
394     fDcaSigmaNeg[ITSlayer_case]->GetYaxis()->SetTitle("log_{10}(#sigma_{pT})");
395
396
397   }
398     
399  
400     
401   // YIELDs---------- positive and negative particles
402     
403   fRecPtPos   = new TH1F("fRecPtPos", 
404                          " p_{T}",
405                          100, 0.,pt);
406   fRecPtPos->GetXaxis()->SetTitle("p_{T} (GeV/c)");
407   fRecPtNeg   = new TH1F("fRecPtNeg", 
408                          " p_{T} ",
409                          100, 0., pt);
410   fRecPtNeg->GetXaxis()->SetTitle("p_{T} (GeV/c)");
411
412     
413   fRecPhiPos   = new TH1F("fRecPhiPos", 
414                           "#phi",
415                           361, 0., 360.);
416   fRecPhiPos->GetXaxis()->SetTitle("#phi (deg)");
417   
418   fRecPhiNeg   = new TH1F("fRecPhiNeg", 
419                           "#phi ",
420                           361, 0., 360.);
421   fRecPhiNeg->GetXaxis()->SetTitle("#phi (deg)");
422     
423   fRecEtaPos   = new TH1F("fRecEtaPos", 
424                           "#eta",
425                           200, -2., 2.);
426   fRecEtaPos->GetXaxis()->SetTitle("#eta");
427
428   fRecEtaNeg   = new TH1F("fRecEtaNeg", 
429                           "#eta",
430                           200, -2., 2.);
431   fRecEtaNeg->GetXaxis()->SetTitle("#eta");
432     
433   fRecEtaPtPos   = new TH1F("fRecEtaPtPos", 
434                             "#eta/p_{T}",
435                             200, -0.1, .1);
436   fRecEtaPtPos->GetXaxis()->SetTitle("#eta/p_{T}");
437
438   fRecEtaPtNeg   = new TH1F("fRecEtaPtNeg", 
439                             "#eta/p_{T}",
440                             200, -.1, .1);
441   fRecEtaPtNeg->GetXaxis()->SetTitle("#eta/p_{T}");
442
443   fRecDcaPos   = new TH1F("fRecDcaPos", 
444                           " dca",
445                           100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
446   fRecDcaPos->GetXaxis()->SetTitle("dca (cm)");
447   fRecDcaNeg   = new TH1F("fRecDcaNeg", 
448                           " dca",
449                           100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
450   fRecDcaNeg->GetXaxis()->SetTitle("dca (cm)");
451
452   fRecDcaNegInv   = new TH1F("fRecDcaNegInv", 
453                              " dca",
454                              100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
455   fRecDcaNegInv->GetXaxis()->SetTitle("dca (cm)");
456
457
458   fRecDPos   = new TH1F("fRecDPos", 
459                         " d",
460                         100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
461   fRecDPos->GetXaxis()->SetTitle("d (cm)");
462   fRecDNeg   = new TH1F("fRecDNeg", 
463                         "d",
464                         100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
465   fRecDNeg->GetXaxis()->SetTitle("d (cm)");
466
467
468   //  YIELDs ---------------- positive and negative eta
469     
470     
471   fRecQPtPosEta   = new TH1F("fRecQPtPosEta", 
472                              "q/p_{T}",
473                              200, -0.5, 0.5);
474   fRecQPtPosEta->GetXaxis()->SetTitle("q/p_{T} ");
475
476   fRecQPtNegEta   = new TH1F("fRecQPtNegEta", 
477                              "q/p_{T}",
478                              200, -0.5, 0.5);
479   fRecQPtNegEta->GetXaxis()->SetTitle("q/p_{T}");
480     
481   fRecPtPosEta   = new TH1F("fRecPtPosEta", 
482                             " p_{T} ",
483                             100, 0., pt);
484   fRecPtPosEta->GetXaxis()->SetTitle("p_{T} (GeV/c)");
485
486   fRecPtNegEta   = new TH1F("fRecPtNegEta", 
487                             " p_{T}",
488                             100, 0., pt);
489   fRecPtNegEta->GetXaxis()->SetTitle("p_{T} (GeV/c)");
490     
491   fRecPhiPosEta   = new TH1F("fRecPhiPosEta", 
492                              "#phi",
493                              361, 0., 360);
494   fRecPhiPosEta->GetXaxis()->SetTitle("#phi (deg)");
495
496   fRecPhiNegEta   = new TH1F("fRecPhiNegEta", 
497                              "#phi ",
498                              361, 0, 360);
499   fRecPhiNegEta->GetXaxis()->SetTitle("#phi (deg)");
500
501   fRecDcaPosEta   = new TH1F("fRecDcaPosEta", 
502                              " dca ",
503                              100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
504   fRecDcaPosEta->GetXaxis()->SetTitle("dca (cm)");
505   fRecDcaNegEta   = new TH1F("fRecDcaNegEta", 
506                              " dca",
507                              100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
508   fRecDcaNegEta->GetXaxis()->SetTitle("dca (cm)");
509
510   fRecDPosEta   = new TH1F("fRecDPosEta", 
511                            " d",
512                            100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
513   fRecDPosEta->GetXaxis()->SetTitle("d (cm)");
514   fRecDNegEta   = new TH1F("fRecDNegEta", 
515                            "d",
516                            100, -5., 5.);
517   fRecDNegEta->GetXaxis()->SetTitle("d (cm)");
518
519   fRecDcaPosPhi   = new TH2F("fRecDcaPosPhi", 
520                              " dca vs. phi",
521                              100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2);
522   fRecDcaPosPhi->GetXaxis()->SetTitle("dca (cm)");
523   fRecDcaPosPhi->GetYaxis()->SetTitle("#phi (rad.)");
524   fRecDcaNegPhi   = new TH2F("fRecDcaNegPhi", 
525                              " dca vs. phi",
526                              100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2);
527   fRecDcaNegPhi->GetXaxis()->SetTitle("dca (cm)");
528   fRecDcaNegPhi->GetYaxis()->SetTitle("#phi (rad.)");
529
530   fRecPtPosPhi   = new TH2F("fRecPtPosPhi", 
531                              " log(p_T) vs. phi",
532                              100, -2.5, 2., 180, 0, TMath::Pi()*2);
533   fRecPtPosPhi->GetXaxis()->SetTitle("log_{10}(p_{T})");
534   fRecPtPosPhi->GetYaxis()->SetTitle("#phi (rad.)");
535   fRecPtNegPhi   = new TH2F("fRecPtNegPhi", 
536                              " log(p_T) vs. phi",
537                              100,-2.5 , 2., 180, 0, TMath::Pi()*2);
538   fRecPtNegPhi->GetXaxis()->SetTitle("log_{10}(p_{T})");
539   fRecPtNegPhi->GetYaxis()->SetTitle("#phi (rad.)");
540
541   fRecEtaPosPhi   = new TH2F("fRecEtaPosPhi", 
542                              " eta vs. phi",
543                              100, -1.5, 1.5, 180, 0, TMath::Pi()*2);
544   fRecEtaPosPhi->GetXaxis()->SetTitle("#eta");
545   fRecEtaPosPhi->GetYaxis()->SetTitle("#phi (rad.)");
546   fRecEtaNegPhi   = new TH2F("fRecEtaNegPhi", 
547                              " eta vs. phi",
548                              100, -1.5, 1.5, 180, 0, TMath::Pi()*2);
549   fRecEtaNegPhi->GetXaxis()->SetTitle("#eta");
550   fRecEtaNegPhi->GetYaxis()->SetTitle("#phi (rad.)");
551
552   fRecQPtPhi   = new TH2F("fRecQPtPhi", 
553                              " charge/p_T vs. phi",
554                              100,-1. , 1., 180, 0, TMath::Pi()*2);
555   fRecQPtPhi->GetXaxis()->SetTitle("charge/p_{T}");
556   fRecQPtPhi->GetYaxis()->SetTitle("#phi (rad.)");
557
558   fRecEtaPtPosPhi   = new TH2F("fRecEtaPtPosPhi", 
559                              " eta/p_T vs. phi",
560                              100, -5, 5., 180, 0, TMath::Pi()*2);
561   fRecEtaPtPosPhi->GetXaxis()->SetTitle("#eta/p_{T}");
562   fRecEtaPtPosPhi->GetYaxis()->SetTitle("#phi (rad.)");
563   fRecEtaPtNegPhi   = new TH2F("fRecEtaPtNegPhi", 
564                              " eta/p_T vs. phi",
565                              100,-5 , 5., 180, 0, TMath::Pi()*2);
566   fRecEtaPtNegPhi->GetXaxis()->SetTitle("#eta/p_{T}");
567   fRecEtaPtNegPhi->GetYaxis()->SetTitle("#phi (rad.)");
568
569
570
571
572
573   fRecDcaPosPhiEtaPos   = new TH2F("fRecDcaPosPhiEtaPos", 
574                              " dca vs. phi",
575                              100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2);
576   fRecDcaPosPhiEtaPos->GetXaxis()->SetTitle("dca (cm)");
577   fRecDcaPosPhiEtaPos->GetYaxis()->SetTitle("#phi (rad.)");
578   fRecDcaNegPhiEtaPos   = new TH2F("fRecDcaNegPhiEtaPos", 
579                              " dca vs. phi",
580                              100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2);
581   fRecDcaNegPhiEtaPos->GetXaxis()->SetTitle("dca (cm)");
582   fRecDcaNegPhiEtaPos->GetYaxis()->SetTitle("#phi (rad.)");
583
584   fRecPtPosPhiEtaPos   = new TH2F("fRecPtPosPhiEtaPos", 
585                              " log(p_T) vs. phi",
586                              100, -2.5, 2., 180, 0, TMath::Pi()*2);
587   fRecPtPosPhiEtaPos->GetXaxis()->SetTitle("log_{10}(p_{T})");
588   fRecPtPosPhiEtaPos->GetYaxis()->SetTitle("#phi (rad.)");
589   fRecPtNegPhiEtaPos   = new TH2F("fRecPtNegPhiEtaPos", 
590                              " log(p_T) vs. phi",
591                              100,-2.5 , 2., 180, 0, TMath::Pi()*2);
592   fRecPtNegPhiEtaPos->GetXaxis()->SetTitle("log_{10}(p_{T})");
593   fRecPtNegPhiEtaPos->GetYaxis()->SetTitle("#phi (rad.)");
594
595
596   fRecDcaPosPhiEtaNeg   = new TH2F("fRecDcaPosPhiEtaNeg", 
597                              " dca vs. phi",
598                              100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2);
599   fRecDcaPosPhiEtaNeg->GetXaxis()->SetTitle("dca (cm)");
600   fRecDcaPosPhiEtaNeg->GetYaxis()->SetTitle("#phi (rad.)");
601   fRecDcaNegPhiEtaNeg   = new TH2F("fRecDcaNegPhiEtaNeg", 
602                              " dca vs. phi",
603                              100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2);
604   fRecDcaNegPhiEtaNeg->GetXaxis()->SetTitle("dca (cm)");
605   fRecDcaNegPhiEtaNeg->GetYaxis()->SetTitle("#phi (rad.)");
606
607   fRecPtPosPhiEtaNeg   = new TH2F("fRecPtPosPhiEtaNeg", 
608                              " log(p_T) vs. phi",
609                              100, -2.5, 2., 180, 0, TMath::Pi()*2);
610   fRecPtPosPhiEtaNeg->GetXaxis()->SetTitle("log_{10}(p_{T})");
611   fRecPtPosPhiEtaNeg->GetYaxis()->SetTitle("#phi (rad.)");
612   fRecPtNegPhiEtaNeg   = new TH2F("fRecPtNegPhiEtaNeg", 
613                              " log(p_T) vs. phi",
614                              100,-2.5 , 2., 180, 0, TMath::Pi()*2);
615   fRecPtNegPhiEtaNeg->GetXaxis()->SetTitle("log_{10}(p_{T})");
616   fRecPtNegPhiEtaNeg->GetYaxis()->SetTitle("#phi (rad.)");
617   
618   //new
619   fRecDcaPosPtEtaPos   = new TH2F("fRecDcaPosPtEtaPos", 
620                              " dca vs. pt",
621                              100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2);
622   fRecDcaPosPtEtaPos->GetXaxis()->SetTitle("dca (cm)");
623   fRecDcaPosPtEtaPos->GetYaxis()->SetTitle("log_{10}(p_{T})");
624
625   fRecDcaPosPtEtaNeg   = new TH2F("fRecDcaPosPtEtaNeg", 
626                              " dca vs. pt",
627                              100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2);
628   fRecDcaPosPtEtaNeg->GetXaxis()->SetTitle("dca (cm)");
629   fRecDcaPosPtEtaNeg->GetYaxis()->SetTitle("log_{10}(p_{T})");
630
631   fRecDcaNegPtEtaPos   = new TH2F("fRecDcaNegPtEtaPos", 
632                              " dca vs. pt",
633                              100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2);
634   fRecDcaNegPtEtaPos->GetXaxis()->SetTitle("dca (cm)");
635   fRecDcaNegPtEtaPos->GetYaxis()->SetTitle("log_{10}(p_{T})");
636
637   fRecDcaNegPtEtaNeg   = new TH2F("fRecDcaNegPtEtaNeg", 
638                              " dca vs. pt",
639                              100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2);
640   fRecDcaNegPtEtaNeg->GetXaxis()->SetTitle("dca (cm)");
641   fRecDcaNegPtEtaNeg->GetYaxis()->SetTitle("log_{10}(p_{T})");
642     
643
644
645   //  YIELDs ---------------- for TPC sectors
646   for(Int_t sector=0; sector<18;sector++){
647       
648
649     fRecPtTpcSector[sector]   = new TH1F(Form("fRecPtTpcSector%02d",sector), 
650                                          Form("p_{T} distribution: TPC sector %d",
651                                               sector),100, 0., pt);
652     fRecPtTpcSector[sector]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
653
654     fRecEtaTpcSector[sector]   = new TH1F(Form("fRecEtaTpcSector%02d",sector), 
655                                           Form("#eta distribution: TPC sector %d",
656                                                sector),200, -2., 2.);
657     fRecEtaTpcSector[sector]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
658      
659
660     fSignedDcaTpcSector[sector]   = new TH1F(Form("fSignedDcaTpcSector%02d",sector), 
661                                              Form("dca distribution: TPC sector %d",
662                                                   sector),200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9) );
663     fSignedDcaTpcSector[sector]->GetXaxis()->SetTitle("dca");
664
665     fRecQPtTpcSector[sector]   = new TH1F(Form("fRecQPtTpcSector%02d",sector), 
666                                           Form("Q/ p_{T} distribution: TPC sector %d",
667                                                sector),100, -1., 1.);
668     fRecQPtTpcSector[sector]->GetXaxis()->SetTitle("Q/p_{T} (GeV/c)");
669
670     fRecEtaPtTpcSector[sector]   = new TH1F(Form("fRecEtaPtTpcSector%02d",sector), 
671                                             Form("#eta/ p_{T} distribution: TPC sector %d",
672                                                  sector),100, -1., 1.);
673     fRecEtaPtTpcSector[sector]->GetXaxis()->SetTitle("#eta/p_{T} (GeV/c)");
674  
675   }
676   // YIELDS ITS ladder
677   for(Int_t i=0;i<7;i++){
678     fRecPtPosLadder[i]   = new TH1F(Form("fRecPtPosLadder%d", i), 
679                                     " p_{T} distribution",
680                                     100, 0., pt);
681     fRecPtPosLadder[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
682     fRecPtNegLadder[i]   = new TH1F(Form("fRecPtNegLadder%d",i), 
683                                     " p_{T} distribution ",
684                                     100, 0., pt);
685     fRecPtNegLadder[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
686
687
688     fRecPhiPosLadder[i]   = new TH1F(Form("fRecPhiPosLadder%d",i), 
689                                      "#phi distribution: all pos eta",
690                                      361, 0., 360);
691     fRecPhiPosLadder[i]->GetXaxis()->SetTitle("#phi (deg)");
692       
693     fRecPhiNegLadder[i]   = new TH1F(Form("fRecPhiNegLadder%d", i),
694                                      "#phi distribution: all neg eta",
695                                      361, 0, 360);
696     fRecPhiNegLadder[i]->GetXaxis()->SetTitle("#phi (deg)");
697
698
699
700     fRecEtaPosLadder[i]   = new TH1F(Form("fRecEtaPosLadder%d",i), 
701                                      "#eta distribution",
702                                      200, -2., 2.);
703     fRecEtaPosLadder[i]->GetXaxis()->SetTitle("#eta)");
704       
705     fRecEtaNegLadder[i]   = new TH1F(Form("fRecEtaNegLadder%d", i),
706                                      "#eta distribution",
707                                      200, -2., 2.);
708     fRecEtaNegLadder[i]->GetXaxis()->SetTitle("#eta");
709   }
710
711   Double_t vzmax = 15.;
712
713   fRecPtPosVz = new TH2F("fRecPtPosVz", 
714                          "p_{T} distribution vs Vz()",
715                          100, -1., 2., 200,-vzmax,vzmax);
716   fRecPtPosVz->GetXaxis()->SetTitle("log_{10}(p_{T})");
717     
718   fRecPtNegVz = new TH2F("fRecPtNegVz",
719                          "p_{T} distribution vs Vz()",
720                          100, -1., 2.,200,-vzmax,vzmax);
721   fRecPtNegVz->GetXaxis()->SetTitle("Log_{10}(p_{T})");
722     
723    
724   fRecEtaPosVz= new TH2F("fRecEtaPosVz", 
725                          "#eta distribution vs Vz()",
726                          100, -2., 2., 200,-vzmax,vzmax);
727   fRecEtaPosVz->GetXaxis()->SetTitle("#eta");
728   fRecEtaNegVz = new TH2F("fRecEtaNegVz",
729                           "#eta distribution vs Vz()",
730                           100, -2., 2.,200,-vzmax,vzmax);
731   fRecEtaNegVz->GetXaxis()->SetTitle("#eta");
732
733   fRecPhiPosVz= new TH2F("fRecPhiPosVz", 
734                          "#eta distribution vs Vz()",
735                          361, 0., 360., 200,-vzmax,vzmax);
736   fRecPhiPosVz->GetXaxis()->SetTitle("#phi (deg)");
737   fRecPhiNegVz = new TH2F("fRecPhiNegVz",
738                           "dca vs Vz()",
739                           361, 0., 360.,200,-vzmax,vzmax);
740   fRecPhiNegVz->GetXaxis()->SetTitle("#phi (deg)");
741
742   fSignedDcaPosVz= new TH2F("fSignedDcaPosVz", 
743                             "#eta distribution vs Vz()",
744                             200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200,-vzmax,vzmax);
745   fSignedDcaPosVz->GetXaxis()->SetTitle("dca (cm)");
746   fSignedDcaNegVz = new TH2F("fSignedDcaNegVz",
747                              "dca vs Vz()",
748                              200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9),200,-vzmax,vzmax);
749   fSignedDcaNegVz->GetXaxis()->SetTitle("dca (cm)");
750
751   fRecQPtPosEtaVz= new TH2F("fRecQPtPosEtaVz",
752                             " Q/p_{T} distribution vs Vz()",
753                             100, -1., 1., 200,-vzmax,vzmax);
754   fRecQPtPosEtaVz->GetXaxis()->SetTitle("Q/p_{T}");
755   fRecQPtNegEtaVz = new TH2F("fRecQPtNegEtaVz",
756                              " Q/p_{T} distribution vs Vz()",
757                              100, -1., 1.,200,-vzmax,vzmax);
758   fRecQPtNegEtaVz->GetXaxis()->SetTitle("Q/p_{T}");
759
760  
761   fRecEtaPtPosVz= new TH2F("fRecEtaPtPosVz",
762                            " #eta/p_{T} distribution vs Vz()",
763                            100, -1., 1., 200,-vzmax,vzmax);
764   fRecEtaPtPosVz->GetXaxis()->SetTitle("#eta/p_{T");
765   fRecEtaPtNegVz = new TH2F("fRecEtaPtNegVz",
766                             " #eta/p_{T} distribution vs Vz()",
767                             100, -1., 1.,200,-vzmax,vzmax);
768   fRecEtaPtNegVz->GetXaxis()->SetTitle("#eta/p_{T}");
769
770   //new
771   fDeltaPhiAll = new TH1F("fDeltaPhiAll",
772                           " #Delta #phi",200,-360,360);
773   fDeltaPhiAll->GetXaxis()->SetTitle("#Delta #phi");
774
775
776   fDeltaPhiLeading = new TH2F("fDeltaPhiLeading",
777                               " #Delta #phi",361,-360,360, 361,0, 360);
778   fDeltaPhiLeading->GetXaxis()->SetTitle("#Delta #phi (deg.)");
779   fDeltaPhiLeading->GetYaxis()->SetTitle("#phi_{leading particle} (deg.)");
780
781   fDiffDcaD    = new TH1F("fDiffDcaD",   
782                           "dca-d",
783                           200, -1., 1.);
784
785   
786   fRecPtPosEtaPos = new TH1F("fRecPtPosEtaPos",
787                              "p_{T} distribution",100,0,pt);
788   fRecPtPosEtaPos->GetXaxis()->SetTitle("p_{T} (GeV/c)");
789
790   fRecPtNegEtaPos = new TH1F("fRecPtNegEtaPos",
791                              "p_{T} distribution",100,0,pt);
792   fRecPtNegEtaPos->GetXaxis()->SetTitle("p_{T} (GeV/c)");
793
794   fRecPtPosEtaNeg = new TH1F("fRecPtPosEtaNeg",
795                              "p_{T} distribution",100,0,pt);
796   fRecPtPosEtaNeg->GetXaxis()->SetTitle("p_{T} (GeV/c)");
797
798   fRecPtNegEtaNeg = new TH1F("fRecPtNegEtaNeg",
799                              "p_{T} distribution",100,0,pt);
800   fRecPtNegEtaNeg->GetXaxis()->SetTitle("p_{T} (GeV/c)");
801
802
803
804   fRec1PtPosEtaPos = new TH1F("fRec1PtPosEtaPos",
805                              "1/p_{T} distribution",100,0,0.5);
806   fRec1PtPosEtaPos->GetXaxis()->SetTitle("p_{T} (c/GeV)");
807
808   fRec1PtNegEtaPos = new TH1F("fRec1PtNegEtaPos",
809                              "1/p_{T} distribution",100,0,0.5);
810   fRec1PtNegEtaPos->GetXaxis()->SetTitle("p_{T} (c/GeV)");
811
812   fRec1PtPosEtaNeg = new TH1F("fRec1PtPosEtaNeg",
813                              "1/p_{T} distribution",100,0,0.5);
814   fRec1PtPosEtaNeg->GetXaxis()->SetTitle("p_{T} (c/GeV)");
815
816   fRec1PtNegEtaNeg = new TH1F("fRec1PtNegEtaNeg",
817                              "1/p_{T} distribution",100,0,0.5);
818   fRec1PtNegEtaNeg->GetXaxis()->SetTitle("1/p_{T} (c/GeV)");
819
820
821  
822   fRecPhiPosEtaPos = new TH1F("fRecPhiPosEtaPos",
823                              "#phi",180,0,2*TMath::Pi());
824   fRecPhiPosEtaPos->GetXaxis()->SetTitle("#phi (rad.)");
825
826   fRecPhiNegEtaPos = new TH1F("fRecPhiNegEtaPos",
827                              "#phi",180,0,2*TMath::Pi());
828   fRecPhiNegEtaPos->GetXaxis()->SetTitle("#phi (rad.)");
829
830   fRecPhiPosEtaNeg = new TH1F("fRecPhiPosEtaNeg",
831                              "#phi",180,0,2*TMath::Pi());
832   fRecPhiPosEtaNeg->GetXaxis()->SetTitle("#phi (rad.)");
833
834   fRecPhiNegEtaNeg = new TH1F("fRecPhiNegEtaNeg",
835                              "#phi",180,0,2*TMath::Pi());
836   fRecPhiNegEtaNeg->GetXaxis()->SetTitle("#phi (rad.)");
837
838
839
840 //   fRecDcaPhiPtPosEtaPos = new TH3F("fRecDcaPhiPtPosEtaPos",
841 //                                 "#phi- p_{T} - DCA",
842 //                                 180,0,2*TMath::Pi(),
843 //                                 100,0,pt,
844 //                                 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
845 //   fRecDcaPhiPtPosEtaPos->GetXaxis()->SetTitle("#phi (rad.)");
846 //   fRecDcaPhiPtPosEtaPos->GetYaxis()->SetTitle("p_{T} (GeV/c)");
847 //   fRecDcaPhiPtPosEtaPos->GetZaxis()->SetTitle("dca (cm)");
848
849 //   fRecDcaPhiPtPosEtaNeg = new TH3F("fRecDcaPhiPtPosEtaNeg",
850 //                                 "#phi- p_{T} - DCA",
851 //                                 180,0,2*TMath::Pi(),
852 //                                 100,0,pt,
853 //                                 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
854 //   fRecDcaPhiPtPosEtaNeg->GetZaxis()->SetTitle("dca (cm)");
855 //   fRecDcaPhiPtPosEtaNeg->GetXaxis()->SetTitle("#phi (rad.)");
856 //   fRecDcaPhiPtPosEtaNeg->GetYaxis()->SetTitle("p_{T} (GeV/c)");
857
858 //   fRecDcaPhiPtNegEtaPos = new TH3F("fRecDcaPhiPtNegEtaPos",
859 //                                 "#phi- p_{T} - DCA",
860 //                                 180,0,2*TMath::Pi(),
861 //                                 100,0,pt,
862 //                                 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
863 //   fRecDcaPhiPtNegEtaPos->GetZaxis()->SetTitle("dca (cm)");
864 //   fRecDcaPhiPtNegEtaPos->GetXaxis()->SetTitle("#phi (rad.)");
865 //   fRecDcaPhiPtNegEtaPos->GetYaxis()->SetTitle("p_{T} (GeV/c)");
866
867 //   fRecDcaPhiPtNegEtaNeg = new TH3F("fRecDcaPhiPtNegEtaNeg",
868 //                                 "#phi- p_{T} - DCA",
869 //                                 180,0,2*TMath::Pi(),
870 //                                 100,0,pt,
871 //                                 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
872 //   fRecDcaPhiPtNegEtaNeg->GetZaxis()->SetTitle("dca (cm)");
873 //   fRecDcaPhiPtNegEtaNeg->GetYaxis()->SetTitle("#phi (rad.)");
874 //   fRecDcaPhiPtNegEtaNeg->GetXaxis()->SetTitle("p_{T} (GeV/c)");
875
876   TString charge[2];
877   charge[0]="Pos";
878   charge[1]="Neg";
879
880   for(Int_t i=0;i<3;i++){
881     for(Int_t j=0;j<2;j++){
882       fEtaBinPt[i][j]   = new TH1F(Form("fEtaBinPt%d%s", i, charge[j].Data()), 
883                                    "eta",
884                                    200, -2., 2.);
885       fPhiBinPt[i][j]   = new TH1F(Form("fPhiBinPt%d%s", i,charge[j].Data() ), 
886                                    "phi",
887                                    181, 0, 2*TMath::Pi());
888       fDcaBinPt[i][j]   = new TH1F(Form("fDcaBinPt%d%s", i, charge[j].Data()), 
889                                    "DCA",
890                                    200,-range*(1+Int_t(fTrackType/2)*9),
891                                    range*(1+Int_t(fTrackType/2)*9) );
892       fEtaPhiBinPt[i][j]= new TH2F(Form("fEtaPhiBinPt%d%s", i, charge[j].Data()), 
893                                       "eta-phi",
894                                       200, -2., 2., 200, 0.,2*TMath::Pi());
895     }
896   }
897
898
899   fHists->SetOwner();
900
901   fHists->Add(fHistRECpt);
902   fHists->Add(fEta);
903   fHists->Add(fEtaWidth);
904   fHists->Add(fPhiWidth);
905   fHists->Add(fDcaWidth);
906   fHists->Add(fPtWidth);
907   fHists->Add(fEtavPt);
908   fHists->Add(fPhivPt);
909   fHists->Add(fCompareTPCparam);
910   fHists->Add(fITSlayer);
911   fHists->Add(fITSlayerEta);
912   fHists->Add(fITSlayerPhi);
913   fHists->Add(fEtaPhi);
914   fHists->Add(fThetaRec);
915   fHists->Add(fPhiRec);
916   fHists->Add(fNumber);
917   fHists->Add(fNumberAfterCut);
918   fHists->Add(fVx);
919   fHists->Add(fVy);
920   fHists->Add(fVz);
921   fHists->Add(fVertexX);
922   fHists->Add(fVertexY);
923   fHists->Add(fVertexZ);
924   fHists->Add(fNVertexSPD);
925   fHists->Add(fNVertexTracks);
926
927   fHists->Add(fEtaPt);
928   fHists->Add(fQPt);
929   fHists->Add(fDca);
930
931   fHists->Add(fDeltaPhiAll);
932   fHists->Add(fDeltaPhiLeading);
933   fHists->Add(fDiffDcaD);
934
935   fHists->Add(fqRec);
936   fHists->Add(fSigmaPtHist);
937
938   fHists->Add(fRecPtPos);
939   fHists->Add(fRecPtNeg);
940   fHists->Add(fRecPhiPos);
941   fHists->Add(fRecPhiNeg);
942   fHists->Add(fRecEtaPos);
943   fHists->Add(fRecEtaNeg);
944   fHists->Add(fRecEtaPtPos);
945   fHists->Add(fRecEtaPtNeg);
946   fHists->Add(fRecDcaPos);
947   fHists->Add(fRecDcaNeg);
948   fHists->Add(fRecDcaNegInv);
949   fHists->Add(fRecDPos);
950   fHists->Add(fRecDNeg);
951
952
953   fHists->Add(fRecQPtPosEta);
954   fHists->Add(fRecQPtNegEta);
955   fHists->Add(fRecPtPosEta);
956   fHists->Add(fRecPtNegEta);
957   fHists->Add(fRecPhiPosEta);
958   fHists->Add(fRecPhiNegEta);
959   fHists->Add(fRecDcaPosEta);
960   fHists->Add(fRecDcaNegEta);
961   fHists->Add(fRecDPosEta);
962   fHists->Add(fRecDNegEta);
963
964
965   for(Int_t i=0;i<18;i++){
966     fHists->Add(fRecPtTpcSector[i]);
967     fHists->Add(fRecEtaTpcSector[i]);
968     fHists->Add(fSignedDcaTpcSector[i]);
969     fHists->Add(fRecQPtTpcSector[i]);
970     fHists->Add(fRecEtaPtTpcSector[i]);
971   }
972
973   for(Int_t i=0;i<7;i++){
974     fHists->Add(fRecPtPosLadder[i]);
975     fHists->Add(fRecPtNegLadder[i]);
976     fHists->Add(fRecPhiPosLadder[i]);
977     fHists->Add(fRecPhiNegLadder[i]);
978     fHists->Add(fRecEtaPosLadder[i]);
979     fHists->Add(fRecEtaNegLadder[i]);
980   }
981
982   fHists->Add(fRecPtPosVz);
983   fHists->Add(fRecPtNegVz);
984   fHists->Add(fRecEtaPosVz);
985   fHists->Add(fRecEtaNegVz);
986   fHists->Add(fRecPhiPosVz);
987   fHists->Add(fRecPhiNegVz);
988   fHists->Add(fSignedDcaPosVz);
989   fHists->Add(fSignedDcaNegVz);
990   fHists->Add(fRecQPtPosEtaVz);
991   fHists->Add(fRecQPtNegEtaVz);
992   fHists->Add(fRecEtaPtPosVz);
993   fHists->Add(fRecEtaPtNegVz);
994
995
996   for(Int_t i=0;i<7;i++){
997     fHists->Add(fSignDcaPos[i]);
998     fHists->Add(fSignDcaNeg[i]);
999     fHists->Add(fSignDcaNegInv[i]);
1000  
1001     fHists->Add(fPtSigmaPos[i]);
1002     fHists->Add(fPtSigmaNeg[i]);
1003     fHists->Add(fqPtRec[i]);
1004   
1005     fHists->Add(fDcaSigmaPos[i]);
1006     fHists->Add(fDcaSigmaNeg[i]);
1007  
1008
1009   } 
1010   
1011   fHists->Add(fRecDcaPosPhi);
1012   fHists->Add(fRecDcaNegPhi);   
1013   fHists->Add(fRecPtPosPhi);
1014   fHists->Add(fRecPtNegPhi);   
1015   fHists->Add(fRecEtaPosPhi);
1016   fHists->Add(fRecEtaNegPhi);  
1017   fHists->Add(fRecQPtPhi);   
1018   fHists->Add(fRecEtaPtPosPhi);
1019   fHists->Add(fRecEtaPtNegPhi);   
1020
1021   fHists->Add(fRecPtPosEtaPos);   
1022   fHists->Add(fRecPtNegEtaPos);   
1023   fHists->Add(fRecPtPosEtaNeg);   
1024   fHists->Add(fRecPtNegEtaNeg); 
1025
1026   fHists->Add(fRec1PtPosEtaPos);   
1027   fHists->Add(fRec1PtNegEtaPos);   
1028   fHists->Add(fRec1PtPosEtaNeg);   
1029   fHists->Add(fRec1PtNegEtaNeg);   
1030  
1031
1032   fHists->Add(fRecPhiPosEtaPos);   
1033   fHists->Add(fRecPhiNegEtaPos);   
1034   fHists->Add(fRecPhiPosEtaNeg);   
1035   fHists->Add(fRecPhiNegEtaNeg);   
1036
1037   fHists->Add(fRecDcaPosPhiEtaPos);
1038   fHists->Add(fRecDcaNegPhiEtaPos);   
1039   fHists->Add(fRecPtPosPhiEtaPos);
1040   fHists->Add(fRecPtNegPhiEtaPos);  
1041   fHists->Add(fRecDcaPosPhiEtaNeg);
1042   fHists->Add(fRecDcaNegPhiEtaNeg);   
1043   fHists->Add(fRecPtPosPhiEtaNeg);
1044   fHists->Add(fRecPtNegPhiEtaNeg); 
1045
1046   fHists->Add(fRecDcaPosPtEtaPos);
1047   fHists->Add(fRecDcaNegPtEtaPos);
1048   fHists->Add(fRecDcaPosPtEtaNeg);
1049   fHists->Add(fRecDcaNegPtEtaNeg);
1050
1051   //  fHists->Add(fRecDcaPhiPtPosEtaPos); 
1052   //  fHists->Add(fRecDcaPhiPtPosEtaNeg); 
1053   //  fHists->Add(fRecDcaPhiPtNegEtaPos); 
1054   //  fHists->Add(fRecDcaPhiPtNegEtaNeg); 
1055
1056   for(Int_t i=0;i<3;i++){
1057     for(Int_t j=0;j<2;j++){
1058       fHists->Add(fEtaBinPt[i][j]);
1059       fHists->Add(fPhiBinPt[i][j]);
1060       fHists->Add(fDcaBinPt[i][j]);
1061       fHists->Add(fEtaPhiBinPt[i][j]);
1062     }
1063   }
1064
1065     
1066 //   for (Int_t i=0; i<fHists->GetEntries(); ++i) {
1067 //     TH1 *h1 = dynamic_cast<TH1*>(fHists->At(i));
1068 //     if (h1){
1069 //     //  Printf("%s ",h1->GetName());
1070 //       h1->Sumw2();
1071 //     }
1072 //   }
1073
1074   TH1::AddDirectory(oldStatus);
1075 }
1076
1077 //__________________________________________________________
1078
1079 void AliAnalysisTaskQASym::UserExec(Option_t *) 
1080 {
1081   // QA of global, TPC, ITS and ITS stand alone tracks
1082   // exploiting basic symmetries
1083
1084   AliVEvent *event = InputEvent();
1085   if (!event) {
1086     Printf("ERROR: Could not retrieve event");
1087     return;
1088   }
1089
1090
1091   if(Entry()==0){
1092     AliESDEvent* esd = dynamic_cast<AliESDEvent*>(event);
1093     if(esd){
1094       Printf("We are reading from ESD");
1095     }
1096    
1097   }
1098
1099
1100
1101   if(fDebug>1)Printf("There are %d tracks in this event", event->GetNumberOfTracks());
1102
1103   
1104   Int_t   leadingTrack  =   0;
1105   Float_t leadingEnergy = -20.;
1106   Float_t leadingPhi    =   0;//TMath::Pi();
1107
1108
1109   //check vertices
1110   AliESDEvent* esd = dynamic_cast<AliESDEvent*>(event);
1111   Int_t nPileSPDVertices=1+esd->GetNumberOfPileupVerticesSPD(); // also SPD main vertex
1112   Int_t nPileTrkVertices=esd->GetNumberOfPileupVerticesTracks();
1113   fNVertexSPD->Fill(nPileSPDVertices);
1114   fNVertexTracks->Fill(nPileTrkVertices);
1115
1116   
1117   //check primary vertex
1118   const AliVVertex* vertex = event->GetPrimaryVertex();
1119   if(vertex->GetNContributors()==0) return;
1120   Float_t vx = vertex->GetX();
1121   Float_t vy = vertex->GetY();
1122   Float_t vz = vertex->GetZ();
1123   
1124   fVertexX->Fill(vx);
1125   fVertexY->Fill(vy);
1126   fVertexZ->Fill(vz);
1127
1128   if (TMath::Abs(vz) > 10.) return;
1129
1130   fNumber->Fill(event->GetNumberOfTracks());
1131
1132   AliESDtrack *tpcP = 0x0;
1133   Int_t fNTracksAccepted=0;
1134   Float_t phiArray   [event->GetNumberOfTracks()];
1135   Float_t etaArray   [event->GetNumberOfTracks()];
1136   Float_t ptArray    [event->GetNumberOfTracks()];
1137   Float_t dcaArray   [event->GetNumberOfTracks()];
1138   Int_t chargeArray[event->GetNumberOfTracks()];
1139   Bool_t acceptedArray[event->GetNumberOfTracks()];
1140
1141   for (Int_t i = 0; i < event->GetNumberOfTracks(); i++) {
1142     phiArray[i]     = 0.;
1143     etaArray[i]     = 0.;
1144     ptArray[i]      = 0.;
1145     dcaArray[i]     = 0.;
1146     chargeArray[i]  = 0;
1147     acceptedArray[i]= kFALSE;
1148     
1149   }
1150
1151
1152
1153   for (Int_t iTrack = 0; iTrack < event->GetNumberOfTracks(); iTrack++) {
1154     
1155     //prevent mem leak for TPConly track
1156     if(fTrackType==2&&tpcP){
1157       delete tpcP;
1158       tpcP = 0;
1159     }
1160
1161     AliVParticle *track = event->GetTrack(iTrack);
1162     AliESDtrack *esdtrack =  dynamic_cast<AliESDtrack*>(track);
1163     esdtrack->PropagateToDCA(event->GetPrimaryVertex(),
1164                              event->GetMagneticField(), 10000.);
1165
1166     if (!track) {
1167       Printf("ERROR: Could not receive track %d", iTrack);
1168       continue;
1169     }
1170     //__________
1171     // run Task for global tracks or ITS tracks or TPC tracks
1172     const AliExternalTrackParam *tpcPin = 0x0;
1173     Double_t phiIn=0.;
1174
1175     if(fTrackType==0){
1176       //Fill all histograms with global tracks
1177       tpcP = esdtrack;
1178       phiIn = tpcP->Phi();
1179       if (!tpcP) continue;
1180       if (!fCuts->AcceptTrack(tpcP)) continue;
1181     }
1182     else if(fTrackType==1){
1183       //Fill all histograms with ITS tracks
1184       tpcP = esdtrack;
1185       phiIn = tpcP->Phi();
1186       if (!tpcP) continue;
1187       if (!fCuts->AcceptTrack(tpcP)) continue;
1188       if(fStandAlone==kTRUE) {
1189         if(!(tpcP->GetStatus()&AliESDtrack::kITSpureSA))continue;
1190       }
1191       else if(fStandAlone==kFALSE){
1192         if(tpcP->GetStatus()&AliESDtrack::kITSpureSA)continue;
1193       }
1194     }
1195     else if(fTrackType==2){     
1196       //Fill all histograms with TPC track information
1197       tpcPin = esdtrack->GetInnerParam();
1198       if (!tpcPin) continue;
1199       phiIn=tpcPin->Phi();
1200
1201       tpcP = AliESDtrackCuts::GetTPCOnlyTrack(dynamic_cast<AliESDEvent*>(event),esdtrack->GetID());
1202       if (!tpcP) continue;
1203       if (!fCuts->AcceptTrack(tpcP)) continue;
1204       if(tpcP->GetNcls(1)>160)continue;//jacek's track cut
1205       if(tpcP->GetConstrainedChi2TPC()<0)continue; // jacek's track cut
1206     }
1207     else{
1208       Printf("ERROR: wrong track type \n");
1209       continue;
1210     }
1211     //___________
1212     //
1213   
1214
1215     fNTracksAccepted++;
1216     phiArray[iTrack]     = phiIn;
1217     etaArray[iTrack]     = tpcP->Eta();
1218     ptArray[iTrack]      = tpcP->Pt();
1219     chargeArray[iTrack]  = tpcP->Charge();
1220     acceptedArray[iTrack]= kTRUE;
1221
1222  
1223     if(tpcP->E()>leadingEnergy){
1224       leadingTrack=iTrack;
1225       leadingEnergy=tpcP->E();
1226       leadingPhi=phiIn;
1227     }
1228    
1229     
1230     fqRec->Fill(tpcP->Charge());
1231   
1232
1233     Double_t fSigmaPt = tpcP->GetSigma1Pt2();
1234     fSigmaPt= sqrt(fSigmaPt);
1235     fSigmaPt= fSigmaPt *(tpcP->Pt()*tpcP->Pt()); 
1236
1237     if(TMath::Abs(fSigmaPt) < 1.e-10) continue;
1238
1239     fSigmaPtHist->Fill(TMath::Log10(fSigmaPt));
1240  
1241
1242     // hits in ITS layer
1243     Int_t cas=-1;
1244     if(tpcP->HasPointOnITSLayer(0)) 
1245       cas=0;
1246     else if(!tpcP->HasPointOnITSLayer(0)
1247             &&  tpcP->HasPointOnITSLayer(1)) 
1248       cas=1;
1249     else if(!tpcP->HasPointOnITSLayer(0)
1250             && !tpcP->HasPointOnITSLayer(1) 
1251             &&  tpcP->HasPointOnITSLayer(2)) 
1252       cas=2;
1253     else if(!tpcP->HasPointOnITSLayer(0)
1254             && !tpcP->HasPointOnITSLayer(1) 
1255             && !tpcP->HasPointOnITSLayer(2)
1256             &&  tpcP->HasPointOnITSLayer(3)) 
1257       cas=3;
1258     else if(!tpcP->HasPointOnITSLayer(0)
1259             && !tpcP->HasPointOnITSLayer(1) 
1260             && !tpcP->HasPointOnITSLayer(2)
1261             && !tpcP->HasPointOnITSLayer(3)
1262             &&  tpcP->HasPointOnITSLayer(4)) 
1263       cas=4;
1264     else if(   !tpcP->HasPointOnITSLayer(0)
1265                && !tpcP->HasPointOnITSLayer(1)
1266                && !tpcP->HasPointOnITSLayer(2)
1267                && !tpcP->HasPointOnITSLayer(3)
1268                && !tpcP->HasPointOnITSLayer(4) 
1269                &&  tpcP->HasPointOnITSLayer(5)) 
1270       cas=5;
1271     else 
1272       cas=6;
1273   
1274    
1275    
1276     //------------------- 
1277     Float_t fXVertexCor = 0.;
1278     Float_t fYVertexCor = 0.;
1279
1280     fXVertexCor = tpcP->Xv() - vertex->GetX(); // coordinate corrected for vertex position
1281     fYVertexCor = tpcP->Yv() - vertex->GetY(); // "
1282     Double_t fSignedDca = (tpcP->Py()*fXVertexCor - tpcP->Px()*fYVertexCor)/tpcP->Pt();
1283
1284
1285     fqPtRec[cas]->Fill(tpcP->Charge()/tpcP->Pt());
1286     
1287     
1288
1289     fHistRECpt->Fill(tpcP->Pt());
1290     fEta->Fill(tpcP->Eta());
1291     fEtavPt->Fill(tpcP->Eta(), TMath::Log(tpcP->Pt()));
1292     fPhivPt->Fill(phiIn, TMath::Log(tpcP->Pt()));
1293     fEtaPhi->Fill(tpcP->Eta(), phiIn);
1294     fThetaRec->Fill(tpcP->Theta());
1295     fPhiRec->Fill(phiIn);
1296     fVx->Fill(tpcP->Xv());
1297     fVy->Fill(tpcP->Yv());
1298     fVz->Fill(tpcP->Zv());
1299   
1300
1301     fEtaPt->Fill(tpcP->Eta()/tpcP->Pt());
1302     fQPt->Fill(tpcP->Charge()/tpcP->Pt());
1303     fDca->Fill(fSignedDca);
1304     dcaArray[iTrack]=fSignedDca;
1305     fRecQPtPhi->Fill(tpcP->Charge()/tpcP->Pt(), phiIn);
1306
1307     Float_t fXY = 0.;
1308     Float_t  fZ = 0.;
1309
1310     tpcP->GetImpactParameters(fXY,fZ);
1311     fDiffDcaD->Fill(fSignedDca+fXY);
1312
1313     if(fTrackType==2) fCompareTPCparam->Fill(fZ,tpcPin->GetTgl());
1314
1315     if(fTrackType!=2){//for global and ITS tracks
1316       for(Int_t itsLayer=0;itsLayer<6;itsLayer++){
1317         if(tpcP->HasPointOnITSLayer(itsLayer)){
1318           fITSlayer->Fill(itsLayer);
1319           fITSlayerEta->Fill(itsLayer, tpcP->Eta());
1320           fITSlayerPhi->Fill(itsLayer, tpcP->Phi());
1321         }
1322       }    
1323     }
1324
1325     //for positive particles
1326     
1327     if(tpcP->Charge()>0){
1328       fRecPtPos->Fill(tpcP->Pt());
1329       fRecPtPosLadder[cas]->Fill(tpcP->Pt());
1330       fRecPtPosVz->Fill(TMath::Log10(tpcP->Pt()),tpcP->Zv());
1331       fRecPhiPos->Fill(TMath::RadToDeg()*phiIn);
1332       
1333       
1334       fRecPhiPosLadder[cas]->Fill(TMath::RadToDeg()*phiIn);
1335       fRecPhiPosVz->Fill(TMath::RadToDeg()*phiIn,tpcP->Zv());
1336       fSignedDcaPosVz->Fill(fSignedDca,tpcP->Zv());
1337
1338       fRecEtaPos->Fill(tpcP->Eta());
1339       fRecEtaPosLadder[cas]->Fill(tpcP->Eta());
1340       fRecEtaPtPos->Fill(tpcP->Eta()/tpcP->Pt());
1341       fRecEtaPosVz->Fill(tpcP->Eta(),tpcP->Zv());
1342       fRecEtaPtPosVz->Fill(tpcP->Eta()/tpcP->Pt(),tpcP->Zv());
1343      
1344       fRecDcaPos->Fill(fSignedDca);
1345       fRecDcaPosPhi->Fill(fSignedDca, phiIn);
1346       fRecPtPosPhi->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1347       fRecEtaPtPosPhi->Fill(tpcP->Eta()/tpcP->Pt(), phiIn);
1348       fRecEtaPosPhi->Fill(tpcP->Eta(), phiIn);
1349       fRecDPos->Fill(fXY);
1350       fSignDcaPos[cas]->Fill(fSignedDca);
1351     
1352      
1353       fDcaSigmaPos[cas]->Fill(fSignedDca, TMath::Log10(fSigmaPt));
1354     
1355       fPtSigmaPos[cas]->Fill(TMath::Log10(fSigmaPt));
1356       //pos eta
1357       if(tpcP->Eta()>0){
1358         fRecPtPosEtaPos->Fill(tpcP->Pt());
1359         fRec1PtPosEtaPos->Fill(1/tpcP->Pt());
1360         fRecPhiPosEtaPos->Fill(phiIn);
1361         fRecDcaPosPhiEtaPos->Fill(fSignedDca, phiIn);
1362         fRecDcaPosPtEtaPos->Fill(fSignedDca, TMath::Log10(tpcP->Pt()));
1363         fRecPtPosPhiEtaPos->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1364         //fRecDcaPhiPtPosEtaPos->Fill(phiIn, tpcP->Pt(), fSignedDca);
1365       }
1366       //neg eta
1367       else{
1368         fRecPtPosEtaNeg->Fill(tpcP->Pt());
1369         fRec1PtPosEtaNeg->Fill(1/tpcP->Pt());
1370         fRecPhiPosEtaNeg->Fill(phiIn);
1371         fRecDcaPosPhiEtaNeg->Fill(fSignedDca, phiIn);
1372         fRecDcaPosPtEtaNeg->Fill(fSignedDca, TMath::Log10(tpcP->Pt()));
1373         fRecPtPosPhiEtaNeg->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1374         //fRecDcaPhiPtPosEtaNeg->Fill(phiIn, tpcP->Pt(), fSignedDca);
1375       }
1376       
1377     }
1378     //and negative particles
1379     else {
1380       fRecPtNeg->Fill(tpcP->Pt());
1381       fRecPtNegLadder[cas]->Fill(tpcP->Pt());
1382       fRecPtNegVz->Fill(TMath::Log10(tpcP->Pt()),tpcP->Zv());
1383            
1384       fRecPhiNeg->Fill(TMath::RadToDeg()*phiIn);
1385       fRecPhiNegLadder[cas]->Fill(TMath::RadToDeg()*phiIn);
1386       fRecPhiNegVz->Fill(TMath::RadToDeg()*phiIn,tpcP->Zv());
1387       fSignedDcaNegVz->Fill(fSignedDca,tpcP->Zv());
1388       fRecEtaPtNegVz->Fill(tpcP->Eta()/tpcP->Pt(),tpcP->Zv());
1389
1390       fRecEtaNeg->Fill(tpcP->Eta());
1391       fRecEtaNegLadder[cas]->Fill(tpcP->Eta());
1392       fRecEtaPtNeg->Fill(tpcP->Eta()/tpcP->Pt());
1393       fRecEtaNegVz->Fill(tpcP->Eta(),tpcP->Zv());
1394      
1395       fRecDcaNeg->Fill(fSignedDca);
1396       fRecDcaNegInv->Fill(-fSignedDca);
1397       fRecDcaNegPhi->Fill(fSignedDca, phiIn);
1398       fRecPtNegPhi->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1399       fRecEtaNegPhi->Fill(tpcP->Eta(), phiIn);
1400       fRecEtaPtNegPhi->Fill(tpcP->Eta()/tpcP->Pt(), phiIn);
1401       fRecDNeg->Fill(fXY);
1402       fSignDcaNeg[cas]->Fill(fSignedDca);
1403       fSignDcaNegInv[cas]->Fill(-fSignedDca);
1404      
1405      
1406       fDcaSigmaNeg[cas]->Fill(fSignedDca,TMath::Log10(fSigmaPt));
1407    
1408       fPtSigmaNeg[cas]->Fill(TMath::Log10(fSigmaPt));
1409       
1410       //pos eta
1411       if(tpcP->Eta()>0){
1412         fRecPtNegEtaPos->Fill(tpcP->Pt());
1413         fRec1PtNegEtaPos->Fill(1/tpcP->Pt());
1414         fRecPhiNegEtaPos->Fill(phiIn);
1415         fRecDcaNegPhiEtaPos->Fill(fSignedDca, phiIn);
1416         fRecDcaNegPtEtaPos->Fill(fSignedDca, TMath::Log10(tpcP->Pt()));
1417         fRecPtNegPhiEtaPos->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1418         //fRecDcaPhiPtNegEtaPos->Fill(phiIn, tpcP->Pt(), fSignedDca);
1419       }
1420       //neg eta
1421       else{
1422         fRecPtNegEtaNeg->Fill(tpcP->Pt());
1423         fRec1PtNegEtaNeg->Fill(1/tpcP->Pt());
1424         fRecPhiNegEtaNeg->Fill(phiIn);
1425         fRecDcaNegPhiEtaNeg->Fill(fSignedDca, phiIn);
1426         fRecDcaNegPtEtaNeg->Fill(fSignedDca, TMath::Log10(tpcP->Pt()));
1427         fRecPtNegPhiEtaNeg->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1428         //fRecDcaPhiPtNegEtaNeg->Fill(phiIn, tpcP->Pt(), fSignedDca);
1429       }
1430
1431     }
1432     
1433
1434
1435     //all particles with positive eta
1436     if(tpcP->Eta()>0){
1437       fRecQPtPosEta->Fill(tpcP->Charge()/tpcP->Pt());
1438       fRecPtPosEta->Fill(tpcP->Pt());
1439       fRecPhiPosEta->Fill(TMath::RadToDeg()*phiIn);
1440       fRecQPtPosEtaVz->Fill(tpcP->Charge()/tpcP->Pt(),tpcP->Zv());
1441       fRecDcaPosEta->Fill(fSignedDca);
1442       fRecDPosEta->Fill(fXY);
1443     }
1444     //all particles with negative eta (and eta==0)
1445     else{
1446       fRecQPtNegEta->Fill(tpcP->Charge()/tpcP->Pt());
1447       fRecPtNegEta->Fill(tpcP->Pt());
1448       fRecPhiNegEta->Fill(TMath::RadToDeg()*phiIn);
1449       fRecQPtNegEtaVz->Fill(tpcP->Charge()/tpcP->Pt(),tpcP->Zv());
1450       fRecDcaNegEta->Fill(fSignedDca);
1451       fRecDNegEta->Fill(fXY);
1452
1453     }
1454
1455
1456     fRecPtTpcSector[Int_t(phiIn*
1457                           TMath::RadToDeg()/20)]->Fill(tpcP->Pt());
1458     fRecEtaTpcSector[Int_t(phiIn*
1459                            TMath::RadToDeg()/20)]->Fill(tpcP->Eta());
1460     fSignedDcaTpcSector[Int_t(phiIn*
1461                               TMath::RadToDeg()/20)]->Fill(fSignedDca); 
1462     fRecQPtTpcSector[Int_t(phiIn*
1463                            TMath::RadToDeg()/20)]->Fill(tpcP->Charge()/tpcP->Pt());
1464     fRecEtaPtTpcSector[Int_t(phiIn*
1465                              TMath::RadToDeg()/20)]->Fill(tpcP->Eta()/tpcP->Pt());
1466      
1467
1468
1469 //     // another track loop
1470 //     for (Int_t iTrack2 = 0; iTrack2 < event->GetNumberOfTracks(); iTrack2++) {
1471       
1472 //       if(LeadingTrack==iTrack2) continue;
1473
1474 //       AliVParticle *track2 = event->GetTrack(iTrack2);
1475 //       AliESDtrack* esdtrack2 =  dynamic_cast<AliESDtrack*>(track2);
1476 //       if (!track2) {
1477 //      Printf("ERROR: Could not receive track %d", iTrack);
1478 //      continue;
1479 //       }
1480 //       if (!fCuts->AcceptTrack(esdtrack2)) continue;
1481 //       //propagate to dca
1482 //       esdtrack2->PropagateToDCA(event->GetPrimaryVertex(),
1483 //                              event->GetMagneticField(), 10000.);
1484  
1485 //       fDeltaPhiLeading->Fill((LeadingPhi-esdtrack2->Phi())*TMath::RadToDeg(),
1486 //                           LeadingPhi*TMath::RadToDeg() );
1487
1488      
1489
1490 //     }//second track loop
1491
1492     // if(fTrackType==2) delete tpcP; // delete in case of TPCOnlyTrack
1493
1494   }//first track loop
1495
1496   fNumberAfterCut->Fill(fNTracksAccepted);
1497   
1498   //second track loop
1499  
1500   for (Int_t iT = 0; iT < event->GetNumberOfTracks(); iT++) {
1501     if(acceptedArray[iT]){
1502       if(ptArray[iT]>0.2 && ptArray[iT]<1. ){
1503         fEtaBinPt[0][Bool_t(chargeArray[iT]>0)]->Fill(etaArray[iT]);
1504         fDcaBinPt[0][Bool_t(chargeArray[iT]>0)]->Fill(dcaArray[iT]);
1505         fPhiBinPt[0][Bool_t(chargeArray[iT]>0)]->Fill(phiArray[iT]);
1506         fEtaPhiBinPt[0][Bool_t(chargeArray[iT]>0)]->Fill(etaArray[iT], phiArray[iT]);
1507       }
1508       else if(ptArray[iT]>1. && ptArray[iT]<5.){
1509         fEtaBinPt[1][Bool_t(chargeArray[iT]>0)]->Fill(etaArray[iT]);
1510         fDcaBinPt[1][Bool_t(chargeArray[iT]>0)]->Fill(dcaArray[iT]);
1511         fPhiBinPt[1][Bool_t(chargeArray[iT]>0)]->Fill(phiArray[iT]);
1512         fEtaPhiBinPt[1][Bool_t(chargeArray[iT]>0)]->Fill(etaArray[iT], phiArray[iT]);
1513       }
1514       else if (ptArray[iT]>5.){
1515         fEtaBinPt[2][Bool_t(chargeArray[iT]>0)]->Fill(etaArray[iT]);
1516         fDcaBinPt[2][Bool_t(chargeArray[iT]>0)]->Fill(dcaArray[iT]);
1517         fPhiBinPt[2][Bool_t(chargeArray[iT]>0)]->Fill(phiArray[iT]);
1518         fEtaPhiBinPt[2][Bool_t(chargeArray[iT]>0)]->Fill(etaArray[iT], phiArray[iT]);
1519       }
1520
1521       if(fNTracksAccepted>=fLow&&fNTracksAccepted<=fHigh){
1522         fEtaWidth->Fill(etaArray[iT]);
1523         fPhiWidth->Fill(phiArray[iT]);
1524         fDcaWidth->Fill(dcaArray[iT]);
1525         fPtWidth->Fill(ptArray[iT]);
1526        }
1527      }
1528   }
1529
1530
1531   //prevent mem leak for TPConly track
1532   if(fTrackType==2&&tpcP){
1533     delete tpcP;
1534     tpcP = 0;
1535   }
1536   
1537
1538   // Post output data.
1539   // PostData(1, fHistPt);
1540   PostData(1, fHists);
1541 }      
1542
1543
1544
1545
1546
1547 //________________________________________________________________________
1548 void AliAnalysisTaskQASym::Terminate(Option_t *) 
1549 {
1550
1551
1552 }  
1553
1554
1555
1556
1557