]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG1/AliAnalysisTaskQASym.cxx
Additional forward declaration
[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   PostData(1, fHists);
1076
1077 }
1078
1079 //__________________________________________________________
1080
1081 void AliAnalysisTaskQASym::UserExec(Option_t *) 
1082 {
1083   // QA of global, TPC, ITS and ITS stand alone tracks
1084   // exploiting basic symmetries
1085
1086   AliVEvent *event = InputEvent();
1087   if (!event) {
1088     Printf("ERROR: Could not retrieve event");
1089     return;
1090   }
1091
1092
1093   if(Entry()==0){
1094     AliESDEvent* esd = dynamic_cast<AliESDEvent*>(event);
1095     if(esd){
1096       Printf("We are reading from ESD");
1097     }
1098    
1099   }
1100
1101
1102
1103   if(fDebug>1)Printf("There are %d tracks in this event", event->GetNumberOfTracks());
1104
1105   
1106   Int_t   leadingTrack  =   0;
1107   Float_t leadingEnergy = -20.;
1108   Float_t leadingPhi    =   0;//TMath::Pi();
1109
1110
1111   //check vertices
1112   AliESDEvent* esd = dynamic_cast<AliESDEvent*>(event);
1113   Int_t nPileSPDVertices=1+esd->GetNumberOfPileupVerticesSPD(); // also SPD main vertex
1114   Int_t nPileTrkVertices=esd->GetNumberOfPileupVerticesTracks();
1115   fNVertexSPD->Fill(nPileSPDVertices);
1116   fNVertexTracks->Fill(nPileTrkVertices);
1117
1118   
1119   //check primary vertex
1120   const AliVVertex* vertex = event->GetPrimaryVertex();
1121   if(vertex->GetNContributors()==0) return;
1122   Float_t vx = vertex->GetX();
1123   Float_t vy = vertex->GetY();
1124   Float_t vz = vertex->GetZ();
1125   
1126   fVertexX->Fill(vx);
1127   fVertexY->Fill(vy);
1128   fVertexZ->Fill(vz);
1129
1130   if (TMath::Abs(vz) > 10.) return;
1131
1132   fNumber->Fill(event->GetNumberOfTracks());
1133
1134   AliESDtrack *tpcP = 0x0;
1135   Int_t fNTracksAccepted=0;
1136   Float_t phiArray   [event->GetNumberOfTracks()];
1137   Float_t etaArray   [event->GetNumberOfTracks()];
1138   Float_t ptArray    [event->GetNumberOfTracks()];
1139   Float_t dcaArray   [event->GetNumberOfTracks()];
1140   Int_t chargeArray[event->GetNumberOfTracks()];
1141   Bool_t acceptedArray[event->GetNumberOfTracks()];
1142
1143   for (Int_t i = 0; i < event->GetNumberOfTracks(); i++) {
1144     phiArray[i]     = 0.;
1145     etaArray[i]     = 0.;
1146     ptArray[i]      = 0.;
1147     dcaArray[i]     = 0.;
1148     chargeArray[i]  = 0;
1149     acceptedArray[i]= kFALSE;
1150     
1151   }
1152
1153
1154
1155   for (Int_t iTrack = 0; iTrack < event->GetNumberOfTracks(); iTrack++) {
1156     
1157     //prevent mem leak for TPConly track
1158     if(fTrackType==2&&tpcP){
1159       delete tpcP;
1160       tpcP = 0;
1161     }
1162
1163     AliVParticle *track = event->GetTrack(iTrack);
1164     AliESDtrack *esdtrack =  dynamic_cast<AliESDtrack*>(track);
1165     esdtrack->PropagateToDCA(event->GetPrimaryVertex(),
1166                              event->GetMagneticField(), 10000.);
1167
1168     if (!track) {
1169       Printf("ERROR: Could not receive track %d", iTrack);
1170       continue;
1171     }
1172     //__________
1173     // run Task for global tracks or ITS tracks or TPC tracks
1174     const AliExternalTrackParam *tpcPin = 0x0;
1175     Double_t phiIn=0.;
1176
1177     if(fTrackType==0){
1178       //Fill all histograms with global tracks
1179       tpcP = esdtrack;
1180       phiIn = tpcP->Phi();
1181       if (!tpcP) continue;
1182       if (!fCuts->AcceptTrack(tpcP)) continue;
1183     }
1184     else if(fTrackType==1){
1185       //Fill all histograms with ITS tracks
1186       tpcP = esdtrack;
1187       phiIn = tpcP->Phi();
1188       if (!tpcP) continue;
1189       if (!fCuts->AcceptTrack(tpcP)) continue;
1190       if(fStandAlone==kTRUE) {
1191         if(!(tpcP->GetStatus()&AliESDtrack::kITSpureSA))continue;
1192       }
1193       else if(fStandAlone==kFALSE){
1194         if(tpcP->GetStatus()&AliESDtrack::kITSpureSA)continue;
1195       }
1196     }
1197     else if(fTrackType==2){     
1198       //Fill all histograms with TPC track information
1199       tpcPin = esdtrack->GetInnerParam();
1200       if (!tpcPin) continue;
1201       phiIn=tpcPin->Phi();
1202
1203       tpcP = AliESDtrackCuts::GetTPCOnlyTrack(dynamic_cast<AliESDEvent*>(event),esdtrack->GetID());
1204       if (!tpcP) continue;
1205       if (!fCuts->AcceptTrack(tpcP)) continue;
1206       if(tpcP->GetNcls(1)>160)continue;//jacek's track cut
1207       if(tpcP->GetConstrainedChi2TPC()<0)continue; // jacek's track cut
1208     }
1209     else{
1210       Printf("ERROR: wrong track type \n");
1211       continue;
1212     }
1213     //___________
1214     //
1215   
1216
1217     fNTracksAccepted++;
1218     phiArray[iTrack]     = phiIn;
1219     etaArray[iTrack]     = tpcP->Eta();
1220     ptArray[iTrack]      = tpcP->Pt();
1221     chargeArray[iTrack]  = tpcP->Charge();
1222     acceptedArray[iTrack]= kTRUE;
1223
1224  
1225     if(tpcP->E()>leadingEnergy){
1226       leadingTrack=iTrack;
1227       leadingEnergy=tpcP->E();
1228       leadingPhi=phiIn;
1229     }
1230    
1231     
1232     fqRec->Fill(tpcP->Charge());
1233   
1234
1235     Double_t fSigmaPt = tpcP->GetSigma1Pt2();
1236     fSigmaPt= sqrt(fSigmaPt);
1237     fSigmaPt= fSigmaPt *(tpcP->Pt()*tpcP->Pt()); 
1238
1239     if(TMath::Abs(fSigmaPt) < 1.e-10) continue;
1240
1241     fSigmaPtHist->Fill(TMath::Log10(fSigmaPt));
1242  
1243
1244     // hits in ITS layer
1245     Int_t cas=-1;
1246     if(tpcP->HasPointOnITSLayer(0)) 
1247       cas=0;
1248     else if(!tpcP->HasPointOnITSLayer(0)
1249             &&  tpcP->HasPointOnITSLayer(1)) 
1250       cas=1;
1251     else if(!tpcP->HasPointOnITSLayer(0)
1252             && !tpcP->HasPointOnITSLayer(1) 
1253             &&  tpcP->HasPointOnITSLayer(2)) 
1254       cas=2;
1255     else if(!tpcP->HasPointOnITSLayer(0)
1256             && !tpcP->HasPointOnITSLayer(1) 
1257             && !tpcP->HasPointOnITSLayer(2)
1258             &&  tpcP->HasPointOnITSLayer(3)) 
1259       cas=3;
1260     else if(!tpcP->HasPointOnITSLayer(0)
1261             && !tpcP->HasPointOnITSLayer(1) 
1262             && !tpcP->HasPointOnITSLayer(2)
1263             && !tpcP->HasPointOnITSLayer(3)
1264             &&  tpcP->HasPointOnITSLayer(4)) 
1265       cas=4;
1266     else if(   !tpcP->HasPointOnITSLayer(0)
1267                && !tpcP->HasPointOnITSLayer(1)
1268                && !tpcP->HasPointOnITSLayer(2)
1269                && !tpcP->HasPointOnITSLayer(3)
1270                && !tpcP->HasPointOnITSLayer(4) 
1271                &&  tpcP->HasPointOnITSLayer(5)) 
1272       cas=5;
1273     else 
1274       cas=6;
1275   
1276    
1277    
1278     //------------------- 
1279     Float_t fXVertexCor = 0.;
1280     Float_t fYVertexCor = 0.;
1281
1282     fXVertexCor = tpcP->Xv() - vertex->GetX(); // coordinate corrected for vertex position
1283     fYVertexCor = tpcP->Yv() - vertex->GetY(); // "
1284     Double_t fSignedDca = (tpcP->Py()*fXVertexCor - tpcP->Px()*fYVertexCor)/tpcP->Pt();
1285
1286
1287     fqPtRec[cas]->Fill(tpcP->Charge()/tpcP->Pt());
1288     
1289     
1290
1291     fHistRECpt->Fill(tpcP->Pt());
1292     fEta->Fill(tpcP->Eta());
1293     fEtavPt->Fill(tpcP->Eta(), TMath::Log(tpcP->Pt()));
1294     fPhivPt->Fill(phiIn, TMath::Log(tpcP->Pt()));
1295     fEtaPhi->Fill(tpcP->Eta(), phiIn);
1296     fThetaRec->Fill(tpcP->Theta());
1297     fPhiRec->Fill(phiIn);
1298     fVx->Fill(tpcP->Xv());
1299     fVy->Fill(tpcP->Yv());
1300     fVz->Fill(tpcP->Zv());
1301   
1302
1303     fEtaPt->Fill(tpcP->Eta()/tpcP->Pt());
1304     fQPt->Fill(tpcP->Charge()/tpcP->Pt());
1305     fDca->Fill(fSignedDca);
1306     dcaArray[iTrack]=fSignedDca;
1307     fRecQPtPhi->Fill(tpcP->Charge()/tpcP->Pt(), phiIn);
1308
1309     Float_t fXY = 0.;
1310     Float_t  fZ = 0.;
1311
1312     tpcP->GetImpactParameters(fXY,fZ);
1313     fDiffDcaD->Fill(fSignedDca+fXY);
1314
1315     if(fTrackType==2) fCompareTPCparam->Fill(fZ,tpcPin->GetTgl());
1316
1317     if(fTrackType!=2){//for global and ITS tracks
1318       for(Int_t itsLayer=0;itsLayer<6;itsLayer++){
1319         if(tpcP->HasPointOnITSLayer(itsLayer)){
1320           fITSlayer->Fill(itsLayer);
1321           fITSlayerEta->Fill(itsLayer, tpcP->Eta());
1322           fITSlayerPhi->Fill(itsLayer, tpcP->Phi());
1323         }
1324       }    
1325     }
1326
1327     //for positive particles
1328     
1329     if(tpcP->Charge()>0){
1330       fRecPtPos->Fill(tpcP->Pt());
1331       fRecPtPosLadder[cas]->Fill(tpcP->Pt());
1332       fRecPtPosVz->Fill(TMath::Log10(tpcP->Pt()),tpcP->Zv());
1333       fRecPhiPos->Fill(TMath::RadToDeg()*phiIn);
1334       
1335       
1336       fRecPhiPosLadder[cas]->Fill(TMath::RadToDeg()*phiIn);
1337       fRecPhiPosVz->Fill(TMath::RadToDeg()*phiIn,tpcP->Zv());
1338       fSignedDcaPosVz->Fill(fSignedDca,tpcP->Zv());
1339
1340       fRecEtaPos->Fill(tpcP->Eta());
1341       fRecEtaPosLadder[cas]->Fill(tpcP->Eta());
1342       fRecEtaPtPos->Fill(tpcP->Eta()/tpcP->Pt());
1343       fRecEtaPosVz->Fill(tpcP->Eta(),tpcP->Zv());
1344       fRecEtaPtPosVz->Fill(tpcP->Eta()/tpcP->Pt(),tpcP->Zv());
1345      
1346       fRecDcaPos->Fill(fSignedDca);
1347       fRecDcaPosPhi->Fill(fSignedDca, phiIn);
1348       fRecPtPosPhi->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1349       fRecEtaPtPosPhi->Fill(tpcP->Eta()/tpcP->Pt(), phiIn);
1350       fRecEtaPosPhi->Fill(tpcP->Eta(), phiIn);
1351       fRecDPos->Fill(fXY);
1352       fSignDcaPos[cas]->Fill(fSignedDca);
1353     
1354      
1355       fDcaSigmaPos[cas]->Fill(fSignedDca, TMath::Log10(fSigmaPt));
1356     
1357       fPtSigmaPos[cas]->Fill(TMath::Log10(fSigmaPt));
1358       //pos eta
1359       if(tpcP->Eta()>0){
1360         fRecPtPosEtaPos->Fill(tpcP->Pt());
1361         fRec1PtPosEtaPos->Fill(1/tpcP->Pt());
1362         fRecPhiPosEtaPos->Fill(phiIn);
1363         fRecDcaPosPhiEtaPos->Fill(fSignedDca, phiIn);
1364         fRecDcaPosPtEtaPos->Fill(fSignedDca, TMath::Log10(tpcP->Pt()));
1365         fRecPtPosPhiEtaPos->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1366         //fRecDcaPhiPtPosEtaPos->Fill(phiIn, tpcP->Pt(), fSignedDca);
1367       }
1368       //neg eta
1369       else{
1370         fRecPtPosEtaNeg->Fill(tpcP->Pt());
1371         fRec1PtPosEtaNeg->Fill(1/tpcP->Pt());
1372         fRecPhiPosEtaNeg->Fill(phiIn);
1373         fRecDcaPosPhiEtaNeg->Fill(fSignedDca, phiIn);
1374         fRecDcaPosPtEtaNeg->Fill(fSignedDca, TMath::Log10(tpcP->Pt()));
1375         fRecPtPosPhiEtaNeg->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1376         //fRecDcaPhiPtPosEtaNeg->Fill(phiIn, tpcP->Pt(), fSignedDca);
1377       }
1378       
1379     }
1380     //and negative particles
1381     else {
1382       fRecPtNeg->Fill(tpcP->Pt());
1383       fRecPtNegLadder[cas]->Fill(tpcP->Pt());
1384       fRecPtNegVz->Fill(TMath::Log10(tpcP->Pt()),tpcP->Zv());
1385            
1386       fRecPhiNeg->Fill(TMath::RadToDeg()*phiIn);
1387       fRecPhiNegLadder[cas]->Fill(TMath::RadToDeg()*phiIn);
1388       fRecPhiNegVz->Fill(TMath::RadToDeg()*phiIn,tpcP->Zv());
1389       fSignedDcaNegVz->Fill(fSignedDca,tpcP->Zv());
1390       fRecEtaPtNegVz->Fill(tpcP->Eta()/tpcP->Pt(),tpcP->Zv());
1391
1392       fRecEtaNeg->Fill(tpcP->Eta());
1393       fRecEtaNegLadder[cas]->Fill(tpcP->Eta());
1394       fRecEtaPtNeg->Fill(tpcP->Eta()/tpcP->Pt());
1395       fRecEtaNegVz->Fill(tpcP->Eta(),tpcP->Zv());
1396      
1397       fRecDcaNeg->Fill(fSignedDca);
1398       fRecDcaNegInv->Fill(-fSignedDca);
1399       fRecDcaNegPhi->Fill(fSignedDca, phiIn);
1400       fRecPtNegPhi->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1401       fRecEtaNegPhi->Fill(tpcP->Eta(), phiIn);
1402       fRecEtaPtNegPhi->Fill(tpcP->Eta()/tpcP->Pt(), phiIn);
1403       fRecDNeg->Fill(fXY);
1404       fSignDcaNeg[cas]->Fill(fSignedDca);
1405       fSignDcaNegInv[cas]->Fill(-fSignedDca);
1406      
1407      
1408       fDcaSigmaNeg[cas]->Fill(fSignedDca,TMath::Log10(fSigmaPt));
1409    
1410       fPtSigmaNeg[cas]->Fill(TMath::Log10(fSigmaPt));
1411       
1412       //pos eta
1413       if(tpcP->Eta()>0){
1414         fRecPtNegEtaPos->Fill(tpcP->Pt());
1415         fRec1PtNegEtaPos->Fill(1/tpcP->Pt());
1416         fRecPhiNegEtaPos->Fill(phiIn);
1417         fRecDcaNegPhiEtaPos->Fill(fSignedDca, phiIn);
1418         fRecDcaNegPtEtaPos->Fill(fSignedDca, TMath::Log10(tpcP->Pt()));
1419         fRecPtNegPhiEtaPos->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1420         //fRecDcaPhiPtNegEtaPos->Fill(phiIn, tpcP->Pt(), fSignedDca);
1421       }
1422       //neg eta
1423       else{
1424         fRecPtNegEtaNeg->Fill(tpcP->Pt());
1425         fRec1PtNegEtaNeg->Fill(1/tpcP->Pt());
1426         fRecPhiNegEtaNeg->Fill(phiIn);
1427         fRecDcaNegPhiEtaNeg->Fill(fSignedDca, phiIn);
1428         fRecDcaNegPtEtaNeg->Fill(fSignedDca, TMath::Log10(tpcP->Pt()));
1429         fRecPtNegPhiEtaNeg->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1430         //fRecDcaPhiPtNegEtaNeg->Fill(phiIn, tpcP->Pt(), fSignedDca);
1431       }
1432
1433     }
1434     
1435
1436
1437     //all particles with positive eta
1438     if(tpcP->Eta()>0){
1439       fRecQPtPosEta->Fill(tpcP->Charge()/tpcP->Pt());
1440       fRecPtPosEta->Fill(tpcP->Pt());
1441       fRecPhiPosEta->Fill(TMath::RadToDeg()*phiIn);
1442       fRecQPtPosEtaVz->Fill(tpcP->Charge()/tpcP->Pt(),tpcP->Zv());
1443       fRecDcaPosEta->Fill(fSignedDca);
1444       fRecDPosEta->Fill(fXY);
1445     }
1446     //all particles with negative eta (and eta==0)
1447     else{
1448       fRecQPtNegEta->Fill(tpcP->Charge()/tpcP->Pt());
1449       fRecPtNegEta->Fill(tpcP->Pt());
1450       fRecPhiNegEta->Fill(TMath::RadToDeg()*phiIn);
1451       fRecQPtNegEtaVz->Fill(tpcP->Charge()/tpcP->Pt(),tpcP->Zv());
1452       fRecDcaNegEta->Fill(fSignedDca);
1453       fRecDNegEta->Fill(fXY);
1454
1455     }
1456
1457
1458     fRecPtTpcSector[Int_t(phiIn*
1459                           TMath::RadToDeg()/20)]->Fill(tpcP->Pt());
1460     fRecEtaTpcSector[Int_t(phiIn*
1461                            TMath::RadToDeg()/20)]->Fill(tpcP->Eta());
1462     fSignedDcaTpcSector[Int_t(phiIn*
1463                               TMath::RadToDeg()/20)]->Fill(fSignedDca); 
1464     fRecQPtTpcSector[Int_t(phiIn*
1465                            TMath::RadToDeg()/20)]->Fill(tpcP->Charge()/tpcP->Pt());
1466     fRecEtaPtTpcSector[Int_t(phiIn*
1467                              TMath::RadToDeg()/20)]->Fill(tpcP->Eta()/tpcP->Pt());
1468      
1469
1470
1471 //     // another track loop
1472 //     for (Int_t iTrack2 = 0; iTrack2 < event->GetNumberOfTracks(); iTrack2++) {
1473       
1474 //       if(LeadingTrack==iTrack2) continue;
1475
1476 //       AliVParticle *track2 = event->GetTrack(iTrack2);
1477 //       AliESDtrack* esdtrack2 =  dynamic_cast<AliESDtrack*>(track2);
1478 //       if (!track2) {
1479 //      Printf("ERROR: Could not receive track %d", iTrack);
1480 //      continue;
1481 //       }
1482 //       if (!fCuts->AcceptTrack(esdtrack2)) continue;
1483 //       //propagate to dca
1484 //       esdtrack2->PropagateToDCA(event->GetPrimaryVertex(),
1485 //                              event->GetMagneticField(), 10000.);
1486  
1487 //       fDeltaPhiLeading->Fill((LeadingPhi-esdtrack2->Phi())*TMath::RadToDeg(),
1488 //                           LeadingPhi*TMath::RadToDeg() );
1489
1490      
1491
1492 //     }//second track loop
1493
1494     // if(fTrackType==2) delete tpcP; // delete in case of TPCOnlyTrack
1495
1496   }//first track loop
1497
1498   fNumberAfterCut->Fill(fNTracksAccepted);
1499   
1500   //second track loop
1501  
1502   for (Int_t iT = 0; iT < event->GetNumberOfTracks(); iT++) {
1503     if(acceptedArray[iT]){
1504       if(ptArray[iT]>0.2 && ptArray[iT]<1. ){
1505         fEtaBinPt[0][Bool_t(chargeArray[iT]>0)]->Fill(etaArray[iT]);
1506         fDcaBinPt[0][Bool_t(chargeArray[iT]>0)]->Fill(dcaArray[iT]);
1507         fPhiBinPt[0][Bool_t(chargeArray[iT]>0)]->Fill(phiArray[iT]);
1508         fEtaPhiBinPt[0][Bool_t(chargeArray[iT]>0)]->Fill(etaArray[iT], phiArray[iT]);
1509       }
1510       else if(ptArray[iT]>1. && ptArray[iT]<5.){
1511         fEtaBinPt[1][Bool_t(chargeArray[iT]>0)]->Fill(etaArray[iT]);
1512         fDcaBinPt[1][Bool_t(chargeArray[iT]>0)]->Fill(dcaArray[iT]);
1513         fPhiBinPt[1][Bool_t(chargeArray[iT]>0)]->Fill(phiArray[iT]);
1514         fEtaPhiBinPt[1][Bool_t(chargeArray[iT]>0)]->Fill(etaArray[iT], phiArray[iT]);
1515       }
1516       else if (ptArray[iT]>5.){
1517         fEtaBinPt[2][Bool_t(chargeArray[iT]>0)]->Fill(etaArray[iT]);
1518         fDcaBinPt[2][Bool_t(chargeArray[iT]>0)]->Fill(dcaArray[iT]);
1519         fPhiBinPt[2][Bool_t(chargeArray[iT]>0)]->Fill(phiArray[iT]);
1520         fEtaPhiBinPt[2][Bool_t(chargeArray[iT]>0)]->Fill(etaArray[iT], phiArray[iT]);
1521       }
1522
1523       if(fNTracksAccepted>=fLow&&fNTracksAccepted<=fHigh){
1524         fEtaWidth->Fill(etaArray[iT]);
1525         fPhiWidth->Fill(phiArray[iT]);
1526         fDcaWidth->Fill(dcaArray[iT]);
1527         fPtWidth->Fill(ptArray[iT]);
1528        }
1529      }
1530   }
1531
1532
1533   //prevent mem leak for TPConly track
1534   if(fTrackType==2&&tpcP){
1535     delete tpcP;
1536     tpcP = 0;
1537   }
1538   
1539
1540   // Post output data.
1541   // PostData(1, fHistPt);
1542   PostData(1, fHists);
1543 }      
1544
1545
1546
1547
1548
1549 //________________________________________________________________________
1550 void AliAnalysisTaskQASym::Terminate(Option_t *) 
1551 {
1552
1553
1554 }  
1555
1556
1557
1558
1559