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