]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/STRANGENESS/Hypernuclei/AliAnalysisTaskNucleiv2.cxx
.so cleanup: more gSystem->Load()
[u/mrichter/AliRoot.git] / PWGLF / STRANGENESS / Hypernuclei / AliAnalysisTaskNucleiv2.cxx
1 /**************************************************************************
2  * Contributors are not mentioned at all.                                 *
3  *                                                                        *
4  * Permission to use, copy, modify and distribute this software and its   *
5  * documentation strictly for non-commercial purposes is hereby granted   *
6  * without fee, provided that the above copyright noticxse appears in all   *
7  * copies and that both the copyright notice and this permission notice   *
8  * appear in the supporting documentation. The authors make no claims     *
9  * about the suitability of this software for any purpose. It is          *
10  * provided "as is" without express or implied warranty.                  *
11  **************************************************************************/
12 //-----------------------------------------------------------------
13 //                 AliAnalysisTaskNucleiv2 class
14 //-----------------------------------------------------------------
15
16 class TTree;
17 class TParticle;
18 class TVector3;
19
20 #include "AliAnalysisManager.h"
21 #include <AliMCEventHandler.h>
22 #include <AliMCEvent.h>
23 #include <AliStack.h>
24
25 class AliESDVertex;
26 class AliAODVertex;
27 class AliESDv0;
28 class AliAODv0; 
29 class AliCascadeVertexer;
30
31 #include <iostream>
32
33 #include "TList.h"
34 #include "TH1.h"
35 #include "TH2.h"
36 #include "TH3.h"
37 #include "TNtuple.h"
38 #include "TGraph.h"
39 #include "TF1.h"
40 #include "TCanvas.h"
41 #include "TMath.h"
42 #include "TChain.h"
43 #include "Riostream.h"
44 #include "AliLog.h"
45 #include "AliCascadeVertexer.h"
46 #include "AliESDEvent.h"
47 #include "AliESDtrack.h"
48 #include "AliExternalTrackParam.h"
49 #include "AliAODEvent.h"
50 #include "AliInputEventHandler.h"
51 #include "AliESDcascade.h"
52 #include "AliAODcascade.h"
53 #include "AliAnalysisTaskNucleiv2.h"
54 #include "AliESDtrackCuts.h"
55 #include "AliCentrality.h"
56
57 ClassImp(AliAnalysisTaskNucleiv2)
58
59 using std::cout;
60 using std::endl;
61     
62 //________________________________________________________________________
63 AliAnalysisTaskNucleiv2::AliAnalysisTaskNucleiv2() 
64 : AliAnalysisTaskSE(), 
65   fAnalysisType("ESD"), 
66   fCollidingSystems(0), 
67   fDataType("REAL"),
68   fFillNtuple(kFALSE),
69   fListHistCascade(0), 
70   fHistEventMultiplicity(0), 
71   fHistTrackMultiplicity(0),
72   fHistTrackMultiplicityCentral(0),    
73   fHistTrackMultiplicitySemiCentral(0),
74   fHistTrackMultiplicityMB(0),
75   fhBB(0),
76   fhBBDeu(0),
77   fhPtDeu(0),
78   fhTOF(0),
79   fhMassTOF(0),
80   hRPangleTPCvsCentrality(0),           //RESOLUTION Histrograms
81   hPlaneResoTPCvsCentrality(0),
82   hRPangleVZEROvsCentrality(0),
83   hRPangleVZEROAvsCentrality(0),
84   hRPangleVZEROCvsCentrality(0),
85   hPlaneResoVZEROvsCentrality(0),
86   hPlaneResoVZEROAvsCentrality(0),
87   hPlaneResoVZEROCvsCentrality(0),
88   hCosPhivsPt(0),                         
89   hSinPhivsPt(0),                         
90   hPhivsPt(0),                         
91   hAntiCosPhivsPt(0),                     
92   hAntiSinPhivsPt(0),                     
93   hAntiPhivsPt(0),                     
94   hCosDeltaPhivsPt075(0),                      
95   hSinDeltaPhivsPt075(0),                      
96   hDeltaPhivsPt075(0),                      
97   hCosDeltaPhiVZEROvsPt075(0),                        
98   hSinDeltaPhiVZEROvsPt075(0),                        
99   hDeltaPhiVZEROvsPt075(0),                 
100   hCosDeltaPhivsPt1530(0),                     
101   hSinDeltaPhivsPt1530(0),                     
102   hDeltaPhivsPt1530(0),                     
103   hCosDeltaPhiVZEROvsPt1530(0),                
104   hSinDeltaPhiVZEROvsPt1530(0),                
105   hDeltaPhiVZEROvsPt1530(0),                
106   hCosDeltaPhivsPt3050(0),                     
107   hSinDeltaPhivsPt3050(0),                     
108   hDeltaPhivsPt3050(0),                     
109   hCosDeltaPhiVZEROvsPt3050(0),                
110   hSinDeltaPhiVZEROvsPt3050(0),                
111   hDeltaPhiVZEROvsPt3050(0),                
112   hCosDeltaPhivsPt1550(0),                     
113   hSinDeltaPhivsPt1550(0),                     
114   hDeltaPhivsPt1550(0),                     
115   hCosDeltaPhiVZEROvsPt1550(0),                
116   hSinDeltaPhiVZEROvsPt1550(0),                
117   hDeltaPhiVZEROvsPt1550(0),                
118   hAntiCosDeltaPhivsPt075(0),                  
119   hAntiSinDeltaPhivsPt075(0),                  
120   hAntiDeltaPhivsPt075(0),                  
121   hAntiCosDeltaPhiVZEROvsPt075(0),             
122   hAntiSinDeltaPhiVZEROvsPt075(0),             
123   hAntiDeltaPhiVZEROvsPt075(0),             
124   hAntiCosDeltaPhivsPt1530(0),                 
125   hAntiSinDeltaPhivsPt1530(0),                 
126   hAntiDeltaPhivsPt1530(0),                 
127   hAntiCosDeltaPhiVZEROvsPt1530(0),            
128   hAntiSinDeltaPhiVZEROvsPt1530(0),            
129   hAntiDeltaPhiVZEROvsPt1530(0),            
130   hAntiCosDeltaPhivsPt3050(0),                 
131   hAntiSinDeltaPhivsPt3050(0),                 
132   hAntiDeltaPhivsPt3050(0),                 
133   hAntiCosDeltaPhiVZEROvsPt3050(0),            
134   hAntiSinDeltaPhiVZEROvsPt3050(0),            
135   hAntiDeltaPhiVZEROvsPt3050(0),            
136   hAntiCosDeltaPhivsPt1550(0),                 
137   hAntiSinDeltaPhivsPt1550(0),                 
138   hAntiDeltaPhivsPt1550(0),                 
139   hAntiCosDeltaPhiVZEROvsPt1550(0),            
140   hAntiSinDeltaPhiVZEROvsPt1550(0),            
141   hAntiDeltaPhiVZEROvsPt1550(0),     
142   fESDtrackCuts(0),
143   fPIDResponse(0),
144   fNtuple1(0),
145   tCentrality(0),
146   tTPCMomentum(0),      
147   tdEdx(0),             
148   tEta(0),              
149   tITSclustermap(0),    
150   tCharge(0),           
151   tPtCorr(0),           
152   tPhi(0),              
153   trpangleTPC(0),       
154   tPDGCode(0),          
155   tPDGCodeMum(0),       
156   tIsPrimaryTr(0),
157   fNtuple2(0) ,
158   tCentralityMC(0),
159   tPDGCodeMC(0),
160   tPDGCodeMumMC(0),
161   tIsPrimary(0),
162   tEtaMC(0),
163   tPtMC(0),
164   tYMC(0)
165 {
166   // Dummy Constructor 
167   fESDtrackCuts = new AliESDtrackCuts("AliESDtrackCuts","AliESDtrackCuts");
168   //
169   Initialize();
170 }
171
172 //________________________________________________________________________
173 AliAnalysisTaskNucleiv2::AliAnalysisTaskNucleiv2(const char *name,const char *datatype,Bool_t filltree) 
174   : AliAnalysisTaskSE(name), 
175     fAnalysisType("ESD"), 
176     fCollidingSystems(0), 
177     fDataType(datatype),
178     fFillNtuple(filltree),
179     fListHistCascade(0), 
180     fHistEventMultiplicity(0), 
181     fHistTrackMultiplicity(0),
182     fHistTrackMultiplicityCentral(0),    
183     fHistTrackMultiplicitySemiCentral(0),
184     fHistTrackMultiplicityMB(0),
185     fhBB(0),
186     fhBBDeu(0),
187     fhPtDeu(0),
188     fhTOF(0),
189     fhMassTOF(0),
190     hRPangleTPCvsCentrality(0),           //RESOLUTION Histrograms
191     hPlaneResoTPCvsCentrality(0),
192     hRPangleVZEROvsCentrality(0),
193     hRPangleVZEROAvsCentrality(0),
194     hRPangleVZEROCvsCentrality(0),
195     hPlaneResoVZEROvsCentrality(0),
196     hPlaneResoVZEROAvsCentrality(0),
197     hPlaneResoVZEROCvsCentrality(0),
198     hCosPhivsPt(0),                         
199     hSinPhivsPt(0),                         
200     hPhivsPt(0),                         
201     hAntiCosPhivsPt(0),                     
202     hAntiSinPhivsPt(0),                     
203     hAntiPhivsPt(0),                     
204     hCosDeltaPhivsPt075(0),                      
205     hSinDeltaPhivsPt075(0),                      
206     hDeltaPhivsPt075(0),                      
207     hCosDeltaPhiVZEROvsPt075(0),                              
208     hSinDeltaPhiVZEROvsPt075(0),                              
209     hDeltaPhiVZEROvsPt075(0),                 
210     hCosDeltaPhivsPt1530(0),                     
211     hSinDeltaPhivsPt1530(0),                     
212     hDeltaPhivsPt1530(0),                     
213     hCosDeltaPhiVZEROvsPt1530(0),                
214     hSinDeltaPhiVZEROvsPt1530(0),                
215     hDeltaPhiVZEROvsPt1530(0),                
216     hCosDeltaPhivsPt3050(0),                     
217     hSinDeltaPhivsPt3050(0),                     
218     hDeltaPhivsPt3050(0),                     
219     hCosDeltaPhiVZEROvsPt3050(0),                
220     hSinDeltaPhiVZEROvsPt3050(0),                
221     hDeltaPhiVZEROvsPt3050(0),                
222     hCosDeltaPhivsPt1550(0),                     
223     hSinDeltaPhivsPt1550(0),                     
224     hDeltaPhivsPt1550(0),                     
225     hCosDeltaPhiVZEROvsPt1550(0),                
226     hSinDeltaPhiVZEROvsPt1550(0),                
227     hDeltaPhiVZEROvsPt1550(0),                
228     hAntiCosDeltaPhivsPt075(0),                  
229     hAntiSinDeltaPhivsPt075(0),                  
230     hAntiDeltaPhivsPt075(0),                  
231     hAntiCosDeltaPhiVZEROvsPt075(0),             
232     hAntiSinDeltaPhiVZEROvsPt075(0),             
233     hAntiDeltaPhiVZEROvsPt075(0),             
234     hAntiCosDeltaPhivsPt1530(0),                 
235     hAntiSinDeltaPhivsPt1530(0),                 
236     hAntiDeltaPhivsPt1530(0),                 
237     hAntiCosDeltaPhiVZEROvsPt1530(0),            
238     hAntiSinDeltaPhiVZEROvsPt1530(0),            
239     hAntiDeltaPhiVZEROvsPt1530(0),            
240     hAntiCosDeltaPhivsPt3050(0),                 
241     hAntiSinDeltaPhivsPt3050(0),                 
242     hAntiDeltaPhivsPt3050(0),                 
243     hAntiCosDeltaPhiVZEROvsPt3050(0),            
244     hAntiSinDeltaPhiVZEROvsPt3050(0),            
245     hAntiDeltaPhiVZEROvsPt3050(0),            
246     hAntiCosDeltaPhivsPt1550(0),                 
247     hAntiSinDeltaPhivsPt1550(0),                 
248     hAntiDeltaPhivsPt1550(0),                 
249     hAntiCosDeltaPhiVZEROvsPt1550(0),            
250     hAntiSinDeltaPhiVZEROvsPt1550(0),            
251     hAntiDeltaPhiVZEROvsPt1550(0),     
252     fESDtrackCuts(0),
253     fPIDResponse(0),
254     fNtuple1(0),
255     tCentrality(0),
256     tTPCMomentum(0),      
257     tdEdx(0),             
258     tEta(0),              
259     tITSclustermap(0),    
260     tCharge(0),           
261     tPtCorr(0),           
262     tPhi(0),              
263     trpangleTPC(0),       
264     tPDGCode(0),          
265     tPDGCodeMum(0),       
266     tIsPrimaryTr(0),
267     fNtuple2(0) ,
268     tCentralityMC(0),
269     tPDGCodeMC(0),
270     tPDGCodeMumMC(0),
271     tIsPrimary(0),
272     tEtaMC(0),
273     tPtMC(0),
274     tYMC(0)
275     
276 {
277   // Define input and output slots here
278   // Input slot #0 works with a TChain
279   //DefineInput(0, TChain::Class());
280   // Output slot #0 writes into a TList container (Cascade)
281
282   //
283   // create track cuts
284   //
285   fESDtrackCuts = new AliESDtrackCuts("AliESDtrackCuts","AliESDtrackCuts");
286   //
287   Initialize();
288   SetDataType(datatype);
289   SetFillTree(filltree);
290
291   DefineInput(0, TChain::Class());
292   
293   DefineOutput(1, TList::Class());
294   DefineOutput(2, TTree::Class());
295   DefineOutput(3, TTree::Class());
296
297 }
298
299 void AliAnalysisTaskNucleiv2::Initialize()
300 {
301   //
302   // updating parameters in case of changes
303   //
304   fESDtrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kTRUE,kTRUE);
305   fESDtrackCuts->SetMaxDCAToVertexXY(3);
306   fESDtrackCuts->SetMaxDCAToVertexZ(2);
307   fESDtrackCuts->SetEtaRange(-0.8,0.8);
308   //
309   //
310  
311   //  Printf("Initizialize\n");
312  
313 }
314
315 //________________________________________________________________________
316 Float_t AliAnalysisTaskNucleiv2::GetPhi0Pi(Float_t phi){
317   // Sets the phi angle in the range 0-pi
318   Float_t result=phi;
319   while(result<0){
320     result=result+TMath::Pi();
321   }
322   while(result>TMath::Pi()){
323     result=result-TMath::Pi();
324   }
325    return result;
326 }
327
328
329 //==================DEFINITION OF OUTPUT OBJECTS==============================
330
331 void AliAnalysisTaskNucleiv2::UserCreateOutputObjects()
332 {
333   fListHistCascade = new TList();
334   fListHistCascade->SetOwner();  // IMPORTANT!
335
336   if(! fHistEventMultiplicity ){
337
338     fHistEventMultiplicity   = new TH1F( "fHistEventMultiplicity" , "Nb of Events" , 12 , -0.5,11.5);
339
340     fHistEventMultiplicity->GetXaxis()->SetBinLabel(1,"All Events");
341     fHistEventMultiplicity->GetXaxis()->SetBinLabel(2,"Events w/PV");
342     fHistEventMultiplicity->GetXaxis()->SetBinLabel(3,"Events w/|Vz|<10cm");
343     fHistEventMultiplicity->GetXaxis()->SetBinLabel(4,"Central Events");
344     fHistEventMultiplicity->GetXaxis()->SetBinLabel(5,"Semi-Central Events");
345     fHistEventMultiplicity->GetXaxis()->SetBinLabel(6,"MB Events");
346     //from HF
347     fHistEventMultiplicity->GetXaxis()->SetBinLabel(7,"nEventsAnal");
348     fHistEventMultiplicity->GetXaxis()->SetBinLabel(8,"nEvSelected");
349     fHistEventMultiplicity->GetXaxis()->SetBinLabel(9,"nCandidatesSelected");
350     fHistEventMultiplicity->GetXaxis()->SetBinLabel(10,"out of pt bounds");
351     fHistEventMultiplicity->GetXaxis()->SetBinLabel(11,"mismatch lab");
352     fHistEventMultiplicity->GetXaxis()->SetBinLabel(12,"non valid TPC EP");
353     fListHistCascade->Add(fHistEventMultiplicity);
354   }
355
356   if(! fHistTrackMultiplicity ){
357     fHistTrackMultiplicity  = new TH2F( "fHistTrackMultiplicity", "Nb of Tracks MB Events |Vz| < 10", 25000,0, 25000,105,-0.5,104.5);
358     fHistTrackMultiplicity->GetXaxis()->SetTitle("Number of tracks");
359     fHistTrackMultiplicity->GetYaxis()->SetTitle("Percentile");
360     fListHistCascade->Add(fHistTrackMultiplicity);
361   } 
362
363   if(! fHistTrackMultiplicityCentral ){
364     fHistTrackMultiplicityCentral  = new TH2F( "fHistTrackMultiplicityCentral", "Nb of Tracks MB Events |Vz| < 10", 25000,0, 25000,105,-0.5,104.5);
365     fHistTrackMultiplicityCentral->GetXaxis()->SetTitle("Number of tracks");
366     fHistTrackMultiplicityCentral->GetYaxis()->SetTitle("Percentile");
367     fListHistCascade->Add(fHistTrackMultiplicityCentral);
368   } 
369   if(! fHistTrackMultiplicitySemiCentral ){
370     fHistTrackMultiplicitySemiCentral  = new TH2F( "fHistTrackMultiplicitySemiCentral", "Nb of Tracks MB Events |Vz| < 10", 25000,0, 25000,105,-0.5,104.5);
371     fHistTrackMultiplicitySemiCentral->GetXaxis()->SetTitle("Number of tracks");
372     fHistTrackMultiplicitySemiCentral->GetYaxis()->SetTitle("Percentile");
373     fListHistCascade->Add(fHistTrackMultiplicitySemiCentral);
374   } 
375   if(! fHistTrackMultiplicityMB ){
376     fHistTrackMultiplicityMB  = new TH2F( "fHistTrackMultiplicityMB", "Nb of Tracks MB Events |Vz| < 10", 25000,0, 25000,105,-0.5,104.5);
377     fHistTrackMultiplicityMB->GetXaxis()->SetTitle("Number of tracks");
378     fHistTrackMultiplicityMB->GetYaxis()->SetTitle("Percentile");
379     fListHistCascade->Add(fHistTrackMultiplicityMB);
380   } 
381  
382   if(! fhBB ){
383     fhBB = new TH2F( "fhBB" , "BetheBlochTPC" , 240,-6,6,1000,0,1000);
384     fListHistCascade->Add(fhBB);
385   }
386   
387   if(! fhBBDeu ){
388     fhBBDeu = new TH2F( "fhBBDeu" , "BetheBlochTPC - Deuteron" , 240,-6,6,1000,0,1000);
389     fListHistCascade->Add(fhBBDeu);
390   }
391  
392   if(!fhPtDeu  ){
393     fhPtDeu = new TH2F( "fhPtDeu" , "pt corretto vs pt track - Deuteron" , 120,0,6,120,0,6);
394     fListHistCascade->Add(fhPtDeu);
395   }
396
397   if(! fhTOF ){
398     fhTOF = new TH2F( "fhTOF" , "Scatter Plot TOF" , 240,-6,6,1000,0,1.2);
399     fListHistCascade->Add(fhTOF);
400   }
401   if(! fhMassTOF){
402     fhMassTOF=new TH1F ("fhMassTOF","Particle Mass - TOF", 300,-5 ,5);
403     fListHistCascade->Add(fhMassTOF);
404   }
405   
406   if(!hRPangleTPCvsCentrality){
407     hRPangleTPCvsCentrality     = new TH2F("hRPangleTPCvsCentrality"    ,"hRPangleTPCvsCentrality"    ,100,0,TMath::Pi(),210,-0.5,105.5);
408     fListHistCascade->Add(hRPangleTPCvsCentrality);
409   }
410   if(!hPlaneResoTPCvsCentrality){
411     hPlaneResoTPCvsCentrality   = new TH2F("hPlaneResoTPCvsCentrality"  ,"hPlaneResoTPCvsCentrality"  ,500,-1,1,210,-0.5,105.5);
412     fListHistCascade->Add(hPlaneResoTPCvsCentrality);
413   }
414   if(!hRPangleVZEROvsCentrality){
415     hRPangleVZEROvsCentrality   = new TH2F("hRPangleVZEROvsCentrality"  ,"hRPangleVZEROvsCentrality"  ,100,0,TMath::Pi(),210,-0.5,105.5);
416     fListHistCascade->Add(hRPangleVZEROvsCentrality);
417   }
418   
419   if(!hRPangleVZEROAvsCentrality){
420     hRPangleVZEROAvsCentrality   = new TH2F("hRPangleVZEROAvsCentrality"  ,"hRPangleVZEROAvsCentrality"  ,100,0,TMath::Pi(),210,-0.5,105.5);
421     fListHistCascade->Add(hRPangleVZEROAvsCentrality);
422   }
423
424   if(!hRPangleVZEROCvsCentrality){
425     hRPangleVZEROCvsCentrality   = new TH2F("hRPangleVZEROCvsCentrality"  ,"hRPangleVZEROCvsCentrality"  ,100,0,TMath::Pi(),210,-0.5,105.5);
426     fListHistCascade->Add(hRPangleVZEROCvsCentrality);
427   }
428
429   if(!hPlaneResoVZEROvsCentrality){
430     hPlaneResoVZEROvsCentrality = new TH2F("hPlaneResoVZEROvsCentrality","hPlaneResoVZEROvsCentrality",500,-1,1,210,-0.5,105.5);
431     fListHistCascade->Add(hPlaneResoVZEROvsCentrality);
432   }
433
434   if(!hPlaneResoVZEROAvsCentrality){
435     hPlaneResoVZEROAvsCentrality = new TH2F("hPlaneResoVZEROAvsCentrality","hPlaneResoVZEROAvsCentrality",500,-1,1,210,-0.5,105.5);
436     fListHistCascade->Add(hPlaneResoVZEROAvsCentrality);
437   }
438
439   if(!hPlaneResoVZEROCvsCentrality){
440     hPlaneResoVZEROCvsCentrality = new TH2F("hPlaneResoVZEROCvsCentrality","hPlaneResoVZEROCvsCentrality",500,-1,1,210,-0.5,105.5);
441     fListHistCascade->Add(hPlaneResoVZEROCvsCentrality);
442   }
443  
444   hCosPhivsPt      = new TH2F("hCosPhivsPt","hCosPhivsPt",200,-1,1,60,0,3.0);        
445   hSinPhivsPt      = new TH2F("hSinPhivsPt","hSinPhivsPt",100, 0,1,60,0,3.0);        
446   hPhivsPt         = new TH2F("hPhivsPt","hPhivsPt"      ,36, 0,2*TMath::Pi(),60,0,3.0);
447   
448   hAntiCosPhivsPt      = new TH2F("hAntiCosPhivsPt","hAntiCosPhivsPt",200,-1,1,60,0,3.0);            
449   hAntiSinPhivsPt      = new TH2F("hAntiSinPhivsPt","hAntiSinPhivsPt",100, 0,1,60,0,3.0);            
450   hAntiPhivsPt         = new TH2F("hAntiPhivsPt","hAntiPhivsPt"      ,36, 0,2*TMath::Pi(),60,0,3.0);
451   
452
453   hCosDeltaPhivsPt075 = new TH2F("hCosDeltaPhivsPt075","hCosDeltaPhivsPt075",200,-1,1,60,0,3.0);
454   hSinDeltaPhivsPt075 = new TH2F("hSinDeltaPhivsPt075","hSinDeltaPhivsPt075",100, 0,1,60,0,3.0);
455   hDeltaPhivsPt075    = new TH2F("hDeltaPhivsPt075","hDeltaPhivsPt075"      ,36, 0,2*TMath::Pi(),60,0,3.0);
456   
457   hCosDeltaPhiVZEROvsPt075 = new TH2F("hCosDeltaPhiVZEROvsPt075","hCosDeltaPhiVZEROvsPt075",200,-1,1,60,0,3.0);       
458   hSinDeltaPhiVZEROvsPt075 = new TH2F("hSinDeltaPhiVZEROvsPt075","hSinDeltaPhiVZEROvsPt075",100, 0,1,60,0,3.0);       
459   hDeltaPhiVZEROvsPt075    = new TH2F("hDeltaPhiVZEROvsPt075","hDeltaPhiVZEROvsPt075"      ,36, 0,2*TMath::Pi(),60,0,3.0);
460
461   hCosDeltaPhivsPt1530 = new TH2F("hCosDeltaPhivsPt1530","hCosDeltaPhivsPt1530",200,-1,1,60,0,3.0);
462   hSinDeltaPhivsPt1530 = new TH2F("hSinDeltaPhivsPt1530","hSinDeltaPhivsPt1530",100, 0,1,60,0,3.0);
463   hDeltaPhivsPt1530    = new TH2F("hDeltaPhivsPt1530","hDeltaPhivsPt1530"      ,36, 0,2*TMath::Pi(),60,0,3.0);
464   
465   hCosDeltaPhiVZEROvsPt1530 = new TH2F("hCosDeltaPhiVZEROvsPt1530","hCosDeltaPhiVZEROvsPt1530",200,-1,1,60,0,3.0);            
466   hSinDeltaPhiVZEROvsPt1530 = new TH2F("hSinDeltaPhiVZEROvsPt1530","hSinDeltaPhiVZEROvsPt1530",100, 0,1,60,0,3.0);            
467   hDeltaPhiVZEROvsPt1530    = new TH2F("hDeltaPhiVZEROvsPt1530","hDeltaPhiVZEROvsPt1530"      ,36, 0,2*TMath::Pi(),60,0,3.0);
468
469   hCosDeltaPhivsPt3050 = new TH2F("hCosDeltaPhivsPt3050","hCosDeltaPhivsPt3050",200,-1,1,60,0,3.0);
470   hSinDeltaPhivsPt3050 = new TH2F("hSinDeltaPhivsPt3050","hSinDeltaPhivsPt3050",100, 0,1,60,0,3.0);
471   hDeltaPhivsPt3050    = new TH2F("hDeltaPhivsPt3050","hDeltaPhivsPt3050"      ,36, 0,2*TMath::Pi(),60,0,3.0);
472   
473   hCosDeltaPhiVZEROvsPt3050 = new TH2F("hCosDeltaPhiVZEROvsPt3050","hCosDeltaPhiVZEROvsPt3050",200,-1,1,60,0,3.0);            
474   hSinDeltaPhiVZEROvsPt3050 = new TH2F("hSinDeltaPhiVZEROvsPt3050","hSinDeltaPhiVZEROvsPt3050",100, 0,1,60,0,3.0);            
475   hDeltaPhiVZEROvsPt3050    = new TH2F("hDeltaPhiVZEROvsPt3050","hDeltaPhiVZEROvsPt3050"      ,36, 0,2*TMath::Pi(),60,0,3.0);
476
477   hCosDeltaPhivsPt1550 = new TH2F("hCosDeltaPhivsPt1550","hCosDeltaPhivsPt1550",200,-1,1,60,0,3.0);
478   hSinDeltaPhivsPt1550 = new TH2F("hSinDeltaPhivsPt1550","hSinDeltaPhivsPt1550",100, 0,1,60,0,3.0);
479   hDeltaPhivsPt1550    = new TH2F("hDeltaPhivsPt1550","hDeltaPhivsPt1550"      ,36, 0,2*TMath::Pi(),60,0,3.0);
480   
481   hCosDeltaPhiVZEROvsPt1550 = new TH2F("hCosDeltaPhiVZEROvsPt1550","hCosDeltaPhiVZEROvsPt1550",200,-1,1,60,0,3.0);            
482   hSinDeltaPhiVZEROvsPt1550 = new TH2F("hSinDeltaPhiVZEROvsPt1550","hSinDeltaPhiVZEROvsPt1550",100, 0,1,60,0,3.0);            
483   hDeltaPhiVZEROvsPt1550    = new TH2F("hDeltaPhiVZEROvsPt1550","hDeltaPhiVZEROvsPt1550"      ,36, 0,2*TMath::Pi(),60,0,3.0);
484
485   
486   hAntiCosDeltaPhivsPt075 = new TH2F("hAntiCosDeltaPhivsPt075","hAntiCosDeltaPhivsPt075",200,-1,1,60,0,3.0);
487   hAntiSinDeltaPhivsPt075 = new TH2F("hAntiSinDeltaPhivsPt075","hAntiSinDeltaPhivsPt075",100, 0,1,60,0,3.0);
488   hAntiDeltaPhivsPt075    = new TH2F("hAntiDeltaPhivsPt075","hAntiDeltaPhivsPt075"      ,36, 0,2*TMath::Pi(),60,0,3.0);
489   
490   hAntiCosDeltaPhiVZEROvsPt075 = new TH2F("hAntiCosDeltaPhiVZEROvsPt075","hAntiCosDeltaPhiVZEROvsPt075",200,-1,1,60,0,3.0);           
491   hAntiSinDeltaPhiVZEROvsPt075 = new TH2F("hAntiSinDeltaPhiVZEROvsPt075","hAntiSinDeltaPhiVZEROvsPt075",100, 0,1,60,0,3.0);           
492   hAntiDeltaPhiVZEROvsPt075    = new TH2F("hAntiDeltaPhiVZEROvsPt075","hAntiDeltaPhiVZEROvsPt075"      ,36, 0,2*TMath::Pi(),60,0,3.0);
493
494   hAntiCosDeltaPhivsPt1530 = new TH2F("hAntiCosDeltaPhivsPt1530","hAntiCosDeltaPhivsPt1530",200,-1,1,60,0,3.0);
495   hAntiSinDeltaPhivsPt1530 = new TH2F("hAntiSinDeltaPhivsPt1530","hAntiSinDeltaPhivsPt1530",100, 0,1,60,0,3.0);
496   hAntiDeltaPhivsPt1530    = new TH2F("hAntiDeltaPhivsPt1530","hAntiDeltaPhivsPt1530"      ,36, 0,2*TMath::Pi(),60,0,3.0);
497   
498   hAntiCosDeltaPhiVZEROvsPt1530 = new TH2F("hAntiCosDeltaPhiVZEROvsPt1530","hAntiCosDeltaPhiVZEROvsPt1530",200,-1,1,60,0,3.0);        
499   hAntiSinDeltaPhiVZEROvsPt1530 = new TH2F("hAntiSinDeltaPhiVZEROvsPt1530","hAntiSinDeltaPhiVZEROvsPt1530",100, 0,1,60,0,3.0);        
500   hAntiDeltaPhiVZEROvsPt1530    = new TH2F("hAntiDeltaPhiVZEROvsPt1530","hAntiDeltaPhiVZEROvsPt1530"      ,36, 0,2*TMath::Pi(),60,0,3.0);
501
502   hAntiCosDeltaPhivsPt3050 = new TH2F("hAntiCosDeltaPhivsPt3050","hAntiCosDeltaPhivsPt3050",200,-1,1,60,0,3.0);
503   hAntiSinDeltaPhivsPt3050 = new TH2F("hAntiSinDeltaPhivsPt3050","hAntiSinDeltaPhivsPt3050",100, 0,1,60,0,3.0);
504   hAntiDeltaPhivsPt3050    = new TH2F("hAntiDeltaPhivsPt3050","hAntiDeltaPhivsPt3050"      ,36, 0,2*TMath::Pi(),60,0,3.0);
505   
506   hAntiCosDeltaPhiVZEROvsPt3050 = new TH2F("hAntiCosDeltaPhiVZEROvsPt3050","hAntiCosDeltaPhiVZEROvsPt3050",200,-1,1,60,0,3.0);        
507   hAntiSinDeltaPhiVZEROvsPt3050 = new TH2F("hAntiSinDeltaPhiVZEROvsPt3050","hAntiSinDeltaPhiVZEROvsPt3050",100, 0,1,60,0,3.0);        
508   hAntiDeltaPhiVZEROvsPt3050    = new TH2F("hAntiDeltaPhiVZEROvsPt3050","hAntiDeltaPhiVZEROvsPt3050"      ,36, 0,2*TMath::Pi(),60,0,3.0);
509
510   hAntiCosDeltaPhivsPt1550 = new TH2F("hAntiCosDeltaPhivsPt1550","hAntiCosDeltaPhivsPt1550",200,-1,1,60,0,3.0);
511   hAntiSinDeltaPhivsPt1550 = new TH2F("hAntiSinDeltaPhivsPt1550","hAntiSinDeltaPhivsPt1550",100, 0,1,60,0,3.0);
512   hAntiDeltaPhivsPt1550    = new TH2F("hAntiDeltaPhivsPt1550","hAntiDeltaPhivsPt1550"      ,36, 0,2*TMath::Pi(),60,0,3.0);
513   
514   hAntiCosDeltaPhiVZEROvsPt1550 = new TH2F("hAntiCosDeltaPhiVZEROvsPt1550","hAntiCosDeltaPhiVZEROvsPt1550",200,-1,1,60,0,3.0);        
515   hAntiSinDeltaPhiVZEROvsPt1550 = new TH2F("hAntiSinDeltaPhiVZEROvsPt1550","hAntiSinDeltaPhiVZEROvsPt1550",100, 0,1,60,0,3.0);        
516   hAntiDeltaPhiVZEROvsPt1550    = new TH2F("hAntiDeltaPhiVZEROvsPt1550","hAntiDeltaPhiVZEROvsPt1550"      ,36, 0,2*TMath::Pi(),60,0,3.0);
517
518   //--------------
519   fListHistCascade->Add(hCosPhivsPt);                         
520   fListHistCascade->Add(hSinPhivsPt);                         
521   fListHistCascade->Add(hPhivsPt);                         
522   fListHistCascade->Add(hAntiCosPhivsPt);                     
523   fListHistCascade->Add(hAntiSinPhivsPt);                     
524   fListHistCascade->Add(hAntiPhivsPt);                     
525   fListHistCascade->Add(hCosDeltaPhivsPt075);                      
526   fListHistCascade->Add(hSinDeltaPhivsPt075);                      
527   fListHistCascade->Add(hDeltaPhivsPt075);                      
528   fListHistCascade->Add(hCosDeltaPhiVZEROvsPt075);                            
529   fListHistCascade->Add(hSinDeltaPhiVZEROvsPt075);                            
530   fListHistCascade->Add(hDeltaPhiVZEROvsPt075);                 
531   fListHistCascade->Add(hCosDeltaPhivsPt1530);                     
532   fListHistCascade->Add(hSinDeltaPhivsPt1530);                     
533   fListHistCascade->Add(hDeltaPhivsPt1530);                     
534   fListHistCascade->Add(hCosDeltaPhiVZEROvsPt1530);                
535   fListHistCascade->Add(hSinDeltaPhiVZEROvsPt1530);                
536   fListHistCascade->Add(hDeltaPhiVZEROvsPt1530);                
537   fListHistCascade->Add(hCosDeltaPhivsPt3050);                     
538   fListHistCascade->Add(hSinDeltaPhivsPt3050);                     
539   fListHistCascade->Add(hDeltaPhivsPt3050);                     
540   fListHistCascade->Add(hCosDeltaPhiVZEROvsPt3050);                
541   fListHistCascade->Add(hSinDeltaPhiVZEROvsPt3050);                
542   fListHistCascade->Add(hDeltaPhiVZEROvsPt3050);                
543   fListHistCascade->Add(hCosDeltaPhivsPt1550);                     
544   fListHistCascade->Add(hSinDeltaPhivsPt1550);                     
545   fListHistCascade->Add(hDeltaPhivsPt1550);                     
546   fListHistCascade->Add(hCosDeltaPhiVZEROvsPt1550);                
547   fListHistCascade->Add(hSinDeltaPhiVZEROvsPt1550);                
548   fListHistCascade->Add(hDeltaPhiVZEROvsPt1550);                
549   fListHistCascade->Add(hAntiCosDeltaPhivsPt075);                  
550   fListHistCascade->Add(hAntiSinDeltaPhivsPt075);                  
551   fListHistCascade->Add(hAntiDeltaPhivsPt075);                  
552   fListHistCascade->Add(hAntiCosDeltaPhiVZEROvsPt075);             
553   fListHistCascade->Add(hAntiSinDeltaPhiVZEROvsPt075);             
554   fListHistCascade->Add(hAntiDeltaPhiVZEROvsPt075);             
555   fListHistCascade->Add(hAntiCosDeltaPhivsPt1530);                 
556   fListHistCascade->Add(hAntiSinDeltaPhivsPt1530);                 
557   fListHistCascade->Add(hAntiDeltaPhivsPt1530);                 
558   fListHistCascade->Add(hAntiCosDeltaPhiVZEROvsPt1530);            
559   fListHistCascade->Add(hAntiSinDeltaPhiVZEROvsPt1530);            
560   fListHistCascade->Add(hAntiDeltaPhiVZEROvsPt1530);            
561   fListHistCascade->Add(hAntiCosDeltaPhivsPt3050);                 
562   fListHistCascade->Add(hAntiSinDeltaPhivsPt3050);                 
563   fListHistCascade->Add(hAntiDeltaPhivsPt3050);                 
564   fListHistCascade->Add(hAntiCosDeltaPhiVZEROvsPt3050);            
565   fListHistCascade->Add(hAntiSinDeltaPhiVZEROvsPt3050);            
566   fListHistCascade->Add(hAntiDeltaPhiVZEROvsPt3050);            
567   fListHistCascade->Add(hAntiCosDeltaPhivsPt1550);                 
568   fListHistCascade->Add(hAntiSinDeltaPhivsPt1550);                 
569   fListHistCascade->Add(hAntiDeltaPhivsPt1550);                 
570   fListHistCascade->Add(hAntiCosDeltaPhiVZEROvsPt1550);            
571   fListHistCascade->Add(hAntiSinDeltaPhiVZEROvsPt1550);            
572   fListHistCascade->Add(hAntiDeltaPhiVZEROvsPt1550);            
573
574   if(! fNtuple1 ) {
575
576     fNtuple1 = new TTree("fNtuple1","fNtuple1");
577  
578     fNtuple1->Branch("tEventNumber"  ,&tEventNumber  ,"tEventNumber[7]/D");
579     fNtuple1->Branch("tCentrality"   ,&tCentrality   ,"tCentrality/D"    );
580     fNtuple1->Branch("tVertexCoord"  ,&tVertexCoord  ,"tVertexCoord[3]/D");
581     fNtuple1->Branch("tPIDITS"       ,&tPIDITS       ,"tPIDITS[9]/D"     );
582     fNtuple1->Branch("tPIDTPC"       ,&tPIDTPC       ,"tPIDTPC[9]/D"     );
583     fNtuple1->Branch("tPIDTOF"       ,&tPIDTOF       ,"tPIDTOF[9]/D"     );
584     fNtuple1->Branch("tPulls"        ,&tPulls        ,"tPulls[2]/D"   );
585     fNtuple1->Branch("tMomentum"     ,&tMomentum     ,"tMomentum[3]/D"   );
586     fNtuple1->Branch("tTPCMomentum"  ,&tTPCMomentum  ,"tTPCMomentum/D"   );
587     fNtuple1->Branch("tdEdx"         ,&tdEdx         ,"tdEdx/D"          );
588     fNtuple1->Branch("tEta"          ,&tEta          ,"tEta/D"           );
589     fNtuple1->Branch("tDCA"          ,&tDCA          ,"tDCA[2]/D"        );
590     fNtuple1->Branch("tTracksTPC"    ,&tTracksTPC    ,"tTracksTPC[2]/D"  );
591     fNtuple1->Branch("tITSclustermap",&tITSclustermap,"tITSclustermap"   );
592     fNtuple1->Branch("tITSsample"    ,&tITSsample    ,"tITSsample[4]/D"  );
593     fNtuple1->Branch("tisTOF[2]"     ,&tisTOF        ,"tisTOF[2]/I"      );
594     fNtuple1->Branch("tTOFtrack"     ,&tTOFtrack     ,"tTOFtrack[3]/D"   );
595     fNtuple1->Branch("tCharge"       ,&tCharge       ,"tCharge/I"        );
596     fNtuple1->Branch("tPtCorr"       ,&tPtCorr       ,"tPtCorr/D"        );
597     fNtuple1->Branch("tPhi"          ,&tPhi          ,"tPhi/D"           );
598     fNtuple1->Branch("trpangleTPC"   ,&trpangleTPC   ,"trpangleTPC/D"    );
599     fNtuple1->Branch("trpangleVZERO" ,&trpangleVZERO ,"trpangleVZERO[3]/D"  );
600  
601     if(fDataType == "SIM"){
602       fNtuple1->Branch("tPDGCode"      ,&tPDGCode      ,"tPDGCode/D"       );
603       fNtuple1->Branch("tPDGCodeMum"   ,&tPDGCode      ,"tPDGCodeMum/D"    );
604       fNtuple1->Branch("tIsPrimaryTr"  ,&tIsPrimaryTr  ,"tIsPrimaryTr/D"   );
605       fNtuple1->Branch("tIsSecondaryTr",&tIsSecondaryTr,"tIsSecondaryTr[2]/D" );
606     }
607      
608   }
609
610
611   
612   
613   if(fDataType == "SIM"){
614   
615     if(! fNtuple2 ) {
616       
617       fNtuple2 = new TTree("fNtuple2","fNtuple2");
618       
619       fNtuple2->Branch("tEventNumberMC"  ,&tEventNumberMC  ,"tEventNumberMC[6]/D");
620       fNtuple2->Branch("tCentralityMC"   ,&tCentralityMC   ,"tCentralityMC/D"    );
621       fNtuple2->Branch("tVertexCoordMC"  ,&tVertexCoordMC  ,"tVertexCoordMC[3]/D");
622       fNtuple2->Branch("tMomentumMC"     ,&tMomentumMC     ,"tMomentumMC[3]/D"   );
623       fNtuple2->Branch("tPDGCodeMC"      ,&tPDGCodeMC      ,"tPDGCodeMC/D"       );
624       fNtuple2->Branch("tPDGCodeMumMC"   ,&tPDGCodeMC      ,"tPDGCodeMumMC/D"    );
625       fNtuple2->Branch("tIsPrimary"      ,&tIsPrimary      ,"tIsPrimary/D"       );
626       fNtuple2->Branch("tIsSecondary"    ,&tIsSecondary    ,"tIsSecondary[2]/D"     );
627       fNtuple2->Branch("tEtaMC"          ,&tEtaMC          ,"tEtaMC/D"         );
628       fNtuple2->Branch("tPtMC"           ,&tPtMC           ,"tPtMC/D"          );
629       fNtuple2->Branch("tYMC"            ,&tYMC            ,"tYMC/D"           );
630
631     } 
632     
633   }
634
635   PostData(1,  fListHistCascade);
636   PostData(2,  fNtuple1);
637   PostData(3,  fNtuple2);
638 }// end UserCreateOutputObjects
639
640
641 //====================== USER EXEC ========================
642
643 void AliAnalysisTaskNucleiv2::UserExec(Option_t *) 
644 {
645   // Main loop
646   // Called for EACH event
647   //  cout<<"AliAnalysisTaskNucleiv2 Starting UserExec"<<endl;
648
649   Info("AliAnalysisTaskNucleiv2","Starting UserExec");  
650   
651   AliVEvent *event = InputEvent();
652   if (!event) { Printf("ERROR: Could not retrieve event"); return; }
653   
654   AliStack *stack = 0;
655   if(fDataType == "SIM"){
656     
657     AliMCEvent *mcEvent = MCEvent();
658     if (!mcEvent) { 
659       Printf("ERROR: Could not retrieve MC event"); 
660       return; 
661     }
662     Printf("MC particles: %d", mcEvent->GetNumberOfTracks());
663     stack = mcEvent->Stack();
664     if( !stack ) { 
665       Printf( "Stack not available"); 
666       return; 
667     }
668   }
669   
670   // create pointer to event
671   
672   AliESDEvent* lESDevent = dynamic_cast<AliESDEvent*>(event);
673   if (!lESDevent) {
674     AliError("Cannot get the ESD event");
675     return;
676   }  
677
678   fHistEventMultiplicity->Fill(1);
679   fHistEventMultiplicity->Fill(7);
680   
681   //_____________________________________________________
682   //   Centrality  
683   
684   AliCentrality *centrality = lESDevent->GetCentrality();
685   Float_t percentile=centrality->GetCentralityPercentile("V0M");
686
687   Int_t TrackNumber = lESDevent->GetNumberOfTracks();
688   fHistTrackMultiplicity->Fill(TrackNumber,percentile); //tracce per evento
689   
690   //______________________________________________________
691   // PID
692   
693   AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
694   AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
695   fPIDResponse=inputHandler->GetPIDResponse(); 
696   
697   //=================================================================
698   
699   //!*********************!//
700   //!  Define variables   !//
701   //!*********************!//
702   
703   Double_t evNumber     = 0.;
704   Double_t runNumber    = 0.;
705   Double_t BCNumber     = 0.;
706   Double_t OrbitNumber  = 0.;
707   Double_t PeriodNumber = 0.;
708
709   
710   Double_t ITSsample[4];
711   for(Int_t i=0;i<4;i++)ITSsample[i]=0;
712   
713   Double_t xPrimaryVertex=0.,yPrimaryVertex=0.,zPrimaryVertex=0.;
714   Float_t impactXY=-999., impactZ=-999.;
715   Double_t pinTPC=0.,poutTPC=0.,TPCSignal=0.;
716   
717   ULong_t  status=0;
718   Bool_t   isTPC=kFALSE;
719
720     
721   // Primary vertex cut
722   
723   const AliESDVertex *vtx = lESDevent->GetPrimaryVertexTracks();
724   
725   if(vtx->GetNContributors()<1) {
726     
727     // SPD vertex cut
728     vtx = lESDevent->GetPrimaryVertexSPD();
729     
730     if(vtx->GetNContributors()<1) {
731       Info("AliAnalysisTaskHelium3Pi","No good vertex, skip event");
732       return; // NO GOOD VERTEX, SKIP EVENT 
733     }
734   }
735   
736   fHistEventMultiplicity->Fill(2); // analyzed events with PV
737   
738   xPrimaryVertex=vtx->GetX();
739   yPrimaryVertex=vtx->GetY();
740   zPrimaryVertex=vtx->GetZ();  
741
742   if(TMath::Abs(zPrimaryVertex)>10) return;
743   fHistEventMultiplicity->Fill(3);
744
745   Bool_t isSelectedCentral     = (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kCentral);
746   Bool_t isSelectedSemiCentral = (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kSemiCentral);
747   Bool_t isSelectedMB          = (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kMB);
748   
749   fHistTrackMultiplicity->Fill(TrackNumber,percentile); 
750   
751   Int_t eventtype = -999;
752   
753   //  cout<<"ET 1: "<<eventtype<<endl;
754
755   if(fDataType == "REAL"){
756    
757     if(isSelectedCentral){
758       if(percentile<0)return;
759       if(percentile>=7.5)return;
760       fHistEventMultiplicity->Fill(4);
761       fHistTrackMultiplicityCentral->Fill(TrackNumber,percentile); 
762       eventtype =1;
763     }
764     
765     if(isSelectedSemiCentral){
766       if(percentile<15)return;
767       if(percentile>=50)return;
768       fHistEventMultiplicity->Fill(5);
769       fHistTrackMultiplicitySemiCentral->Fill(TrackNumber,percentile); 
770       eventtype =2;
771     }
772     
773     if(isSelectedMB){
774       if(percentile<0)return;
775       if(percentile>=80)return;
776       fHistEventMultiplicity->Fill(6);
777       fHistTrackMultiplicityMB->Fill(TrackNumber,percentile); 
778       eventtype =3;
779     }
780     
781     //    cout<<"ET 2: "<<eventtype<<endl;
782     
783     if(eventtype!=1 && eventtype!=2 && eventtype!=3 )return;
784   }
785   
786   if(fDataType == "SIM"){
787     cout<<"Take SIM event"<<endl;
788     eventtype = -999;
789     //cout<<"ET MC: "<<eventtype<<endl;
790     if(eventtype!=-999)return;
791       
792   }
793   
794   evNumber    = lESDevent->GetEventNumberInFile();
795   runNumber   = lESDevent->GetRunNumber(); 
796   BCNumber    = lESDevent->GetBunchCrossNumber();
797   OrbitNumber = lESDevent->GetOrbitNumber();
798   PeriodNumber= lESDevent->GetPeriodNumber();
799   
800   AliEventplane *pl=lESDevent->GetEventplane();
801   
802   if(fDataType == "REAL"){
803     
804     if(!pl ){
805       AliError("AliAnalysisTaskSENucleiv2::UserExec:no eventplane! v2 analysis without eventplane not possible!\n");
806       fHistEventMultiplicity->Fill(12);
807     }
808   }
809   
810   //Event plane
811   
812   Double_t rpangleTPC    =0;
813   Double_t rpangleVZERO  =0;
814
815   Double_t rpangleeventATPC =0;
816   Double_t rpangleeventBTPC =0;
817   Double_t deltaPsiTPC      =0;
818   Double_t planeresoTPC     =0;
819
820   Double_t rpangleeventAVZERO =0;
821   Double_t rpangleeventBVZERO =0;
822   Double_t rpangleeventCVZERO =0;
823   Double_t deltaPsiVZERO      =0;
824   Double_t planeresoVZERO     =0;
825
826   //For candidate removal from TPC EP
827
828   TVector2 *qsub1=0x0;
829   TVector2 *qsub2=0x0;
830
831   rpangleTPC   = pl->GetEventplane("Q");
832   
833   if(fDataType == "REAL"){
834     if(rpangleTPC<0){
835       fHistEventMultiplicity->Fill(11);
836       return;
837     }
838   }
839   
840   //TPC resolution 
841    
842   hRPangleTPCvsCentrality->Fill(rpangleTPC,percentile);
843
844   qsub1 = pl->GetQsub1();
845   qsub2 = pl->GetQsub2();
846
847   if(fDataType == "REAL"){  
848     if(!qsub1 || !qsub2){
849       AliError("AliAnalysisTaskSENucleiv2::UserExec:no qsub1 or qsub2!\n");
850       return;
851     }
852  
853     //TPC event Plane
854     
855     rpangleeventATPC = qsub1->Phi()/2.;
856     rpangleeventBTPC = qsub2->Phi()/2.;
857     
858     deltaPsiTPC =rpangleeventATPC-rpangleeventBTPC;
859     
860     if(TMath::Abs(deltaPsiTPC)>TMath::Pi()/2.){
861       if(deltaPsiTPC>0.) deltaPsiTPC-=TMath::Pi();
862       else deltaPsiTPC +=TMath::Pi();
863     } // difference of subevents reaction plane angle cannot be bigger than phi/2
864     
865     planeresoTPC = TMath::Cos(2.*deltaPsiTPC); // reaction plane resolution
866     
867     hPlaneResoTPCvsCentrality->Fill(planeresoTPC,percentile);
868   
869     //VZERO event plane
870   
871     rpangleVZERO = GetPhi0Pi(pl->GetEventplane("V0",lESDevent,2));
872     rpangleeventBVZERO=GetPhi0Pi(pl->GetEventplane("V0A",lESDevent,2));
873     rpangleeventCVZERO=GetPhi0Pi(pl->GetEventplane("V0C",lESDevent,2));
874
875     hRPangleVZEROvsCentrality->Fill(rpangleVZERO,percentile);
876     hRPangleVZEROAvsCentrality->Fill(rpangleeventBVZERO,percentile);
877     hRPangleVZEROCvsCentrality->Fill(rpangleeventCVZERO,percentile);
878
879     //Resolution V0 : V0M - V0A
880     rpangleeventAVZERO = rpangleVZERO;
881     deltaPsiVZERO =rpangleeventAVZERO-rpangleeventBVZERO;
882
883     if(TMath::Abs(deltaPsiVZERO)>TMath::Pi()/2.){
884       if(deltaPsiVZERO>0.) deltaPsiVZERO-=TMath::Pi();
885       else deltaPsiVZERO +=TMath::Pi();
886     } // difference of subevents reaction plane angle cannot be bigger than phi/2
887   
888     planeresoVZERO = TMath::Cos(2.*deltaPsiVZERO);
889
890     hPlaneResoVZEROvsCentrality->Fill(planeresoVZERO,percentile);
891
892     //Resolution V0 : V0M - V0C
893
894     deltaPsiVZERO =rpangleeventAVZERO-rpangleeventCVZERO;
895
896     if(TMath::Abs(deltaPsiVZERO)>TMath::Pi()/2.){
897       if(deltaPsiVZERO>0.) deltaPsiVZERO-=TMath::Pi();
898       else deltaPsiVZERO +=TMath::Pi();
899     } // difference of subevents reaction plane angle cannot be bigger than phi/2
900   
901     planeresoVZERO = TMath::Cos(2.*deltaPsiVZERO);
902
903     hPlaneResoVZEROAvsCentrality->Fill(planeresoVZERO,percentile);
904     
905     //Resolution V0 : V0A - V0C
906
907     deltaPsiVZERO =rpangleeventBVZERO-rpangleeventCVZERO;
908
909     if(TMath::Abs(deltaPsiVZERO)>TMath::Pi()/2.){
910       if(deltaPsiVZERO>0.) deltaPsiVZERO-=TMath::Pi();
911       else deltaPsiVZERO +=TMath::Pi();
912     } // difference of subevents reaction plane angle cannot be bigger than phi/2
913   
914     planeresoVZERO = TMath::Cos(2.*deltaPsiVZERO);
915
916     hPlaneResoVZEROCvsCentrality->Fill(planeresoVZERO,percentile);
917   
918     //rpangleeventBVZERO
919
920     if(TMath::Abs(rpangleTPC-rpangleVZERO)>10)return;
921   
922     trpangleTPC      = rpangleTPC;
923     trpangleVZERO[0] = rpangleVZERO;
924     trpangleVZERO[1] = rpangleeventBVZERO;
925     trpangleVZERO[2] = rpangleeventCVZERO;
926   }
927   // cout<<"rpangle TPC: "<<rpangleTPC<<endl;
928   
929   Int_t isTOF=0;
930   Int_t isoutTPC=0;
931   //  cout<<"TRack number MC "<<TrackNumber<<endl;
932
933   for (Int_t j=0; j<TrackNumber; j++) { //loop on tracks
934     
935     AliESDtrack *esdtrack=lESDevent->GetTrack(j);
936     if (!fESDtrackCuts->AcceptTrack(esdtrack)) continue;
937   
938     status  = (ULong_t)esdtrack->GetStatus();
939     
940     isTPC    = (((status) & AliESDtrack::kTPCin)   != 0);
941     isTOF    = ((((status) & AliESDtrack::kTOFout) != 0) && (((status) & AliESDtrack::kTIME) != 0));
942     isoutTPC = (((status) & AliESDtrack::kTPCout)  != 0);
943     
944     TPCSignal=esdtrack->GetTPCsignal(); 
945
946     if (TPCSignal<10)continue;
947     if (TPCSignal>1000)continue;
948     if (!isTPC)continue;
949       
950     if(!esdtrack->GetTPCInnerParam())continue;
951     AliExternalTrackParam trackIn(*esdtrack->GetInnerParam()); 
952     pinTPC= trackIn.GetP(); 
953
954     fhBB->Fill(pinTPC*esdtrack->GetSign(),TPCSignal);
955
956     if(isTOF){
957       if(!esdtrack->GetOuterParam())continue;    
958       AliExternalTrackParam trackOut(*esdtrack->GetOuterParam()); 
959       poutTPC = trackOut.GetP();  
960       fhTOF->Fill(poutTPC*esdtrack->GetSign(),(esdtrack->GetIntegratedLength()/esdtrack->GetTOFsignal())/2.99792458e-2);
961     
962     }
963
964     Int_t   fIdxInt[200]; //dummy array
965     Int_t   nClustersTPC = esdtrack->GetTPCclusters(fIdxInt);
966     Float_t chi2PerClusterTPC = esdtrack->GetTPCchi2()/(Float_t)(nClustersTPC);
967
968     esdtrack->GetImpactParameters(impactXY, impactZ);
969
970     Float_t deutExp  = -999;
971     Float_t hel3Exp  = -999;
972   
973     if(fDataType == "REAL"){
974       deutExp  = AliExternalTrackParam::BetheBlochAleph(pinTPC/(0.938*2),1.45802,27.4992,4.00313e-15,2.48485,8.31768);
975       hel3Exp = 4*AliExternalTrackParam::BetheBlochAleph(2*pinTPC/(0.938*3),1.74962,27.4992,4.00313e-15,2.42485,8.31768);
976     }
977
978     if(fDataType == "SIM"){
979       Double_t parMC[5] = {1.17329, 27.4992, 4.00313e-15, 2.1204316, 4.1373729}; // NEW!!!
980       deutExp = AliExternalTrackParam::BetheBlochAleph(pinTPC/(0.938*2),parMC[0],parMC[1],parMC[2],parMC[3],parMC[4]);
981       hel3Exp = 4*AliExternalTrackParam::BetheBlochAleph(2*pinTPC/(0.938*3),parMC[0],parMC[1],parMC[2],parMC[3],parMC[4]);
982     }
983     
984     Double_t pullTPC = (TPCSignal - deutExp)/(0.07*deutExp);
985     Double_t pullTPChel3 = (TPCSignal - hel3Exp)/(0.07*hel3Exp);
986   
987     tPulls[0] = pullTPC;
988     tPulls[1] = pullTPChel3;
989
990     //Fill the tree
991
992     tEventNumber[0] = evNumber    ;
993     tEventNumber[1] = runNumber   ;
994     tEventNumber[2] = BCNumber    ;
995     tEventNumber[3] = OrbitNumber ;
996     tEventNumber[4] = PeriodNumber;
997     tEventNumber[5] = TrackNumber;
998     tEventNumber[6] = eventtype ;
999
1000     tCentrality = percentile;
1001         
1002     tVertexCoord[0] = xPrimaryVertex;
1003     tVertexCoord[1] = yPrimaryVertex;
1004     tVertexCoord[2] = zPrimaryVertex;
1005
1006     if(TMath::Abs(zPrimaryVertex)>10)continue;
1007
1008     // bbtheo = fPIDResponse->NumberOfSigmas((AliPIDResponse::EDetector)0,esdtrack,(AliPID::EParticleType) 7);
1009
1010     tPIDITS[0] = fPIDResponse->NumberOfSigmas((AliPIDResponse::EDetector)0,esdtrack,(AliPID::EParticleType) 0);
1011     tPIDITS[1] = fPIDResponse->NumberOfSigmas((AliPIDResponse::EDetector)0,esdtrack,(AliPID::EParticleType) 1);
1012     tPIDITS[2] = fPIDResponse->NumberOfSigmas((AliPIDResponse::EDetector)0,esdtrack,(AliPID::EParticleType) 2);
1013     tPIDITS[3] = fPIDResponse->NumberOfSigmas((AliPIDResponse::EDetector)0,esdtrack,(AliPID::EParticleType) 3);
1014     tPIDITS[4] = fPIDResponse->NumberOfSigmas((AliPIDResponse::EDetector)0,esdtrack,(AliPID::EParticleType) 4);
1015     tPIDITS[5] = fPIDResponse->NumberOfSigmas((AliPIDResponse::EDetector)0,esdtrack,(AliPID::EParticleType) 5);
1016     tPIDITS[6] = fPIDResponse->NumberOfSigmas((AliPIDResponse::EDetector)0,esdtrack,(AliPID::EParticleType) 6);
1017     tPIDITS[7] = fPIDResponse->NumberOfSigmas((AliPIDResponse::EDetector)0,esdtrack,(AliPID::EParticleType) 7);
1018     tPIDITS[8] = fPIDResponse->NumberOfSigmas((AliPIDResponse::EDetector)0,esdtrack,(AliPID::EParticleType) 8);
1019
1020     tPIDTPC[0] = fPIDResponse->NumberOfSigmas((AliPIDResponse::EDetector)1,esdtrack,(AliPID::EParticleType) 0);
1021     tPIDTPC[1] = fPIDResponse->NumberOfSigmas((AliPIDResponse::EDetector)1,esdtrack,(AliPID::EParticleType) 1);
1022     tPIDTPC[2] = fPIDResponse->NumberOfSigmas((AliPIDResponse::EDetector)1,esdtrack,(AliPID::EParticleType) 2);
1023     tPIDTPC[3] = fPIDResponse->NumberOfSigmas((AliPIDResponse::EDetector)1,esdtrack,(AliPID::EParticleType) 3);
1024     tPIDTPC[4] = fPIDResponse->NumberOfSigmas((AliPIDResponse::EDetector)1,esdtrack,(AliPID::EParticleType) 4);
1025     tPIDTPC[5] = fPIDResponse->NumberOfSigmas((AliPIDResponse::EDetector)1,esdtrack,(AliPID::EParticleType) 5);
1026     tPIDTPC[6] = fPIDResponse->NumberOfSigmas((AliPIDResponse::EDetector)1,esdtrack,(AliPID::EParticleType) 6);
1027     tPIDTPC[7] = fPIDResponse->NumberOfSigmas((AliPIDResponse::EDetector)1,esdtrack,(AliPID::EParticleType) 7);
1028     tPIDTPC[8] = fPIDResponse->NumberOfSigmas((AliPIDResponse::EDetector)1,esdtrack,(AliPID::EParticleType) 8);
1029
1030     tPIDTOF[0] = fPIDResponse->NumberOfSigmas((AliPIDResponse::EDetector)3,esdtrack,(AliPID::EParticleType) 0);
1031     tPIDTOF[1] = fPIDResponse->NumberOfSigmas((AliPIDResponse::EDetector)3,esdtrack,(AliPID::EParticleType) 1);
1032     tPIDTOF[2] = fPIDResponse->NumberOfSigmas((AliPIDResponse::EDetector)3,esdtrack,(AliPID::EParticleType) 2);
1033     tPIDTOF[3] = fPIDResponse->NumberOfSigmas((AliPIDResponse::EDetector)3,esdtrack,(AliPID::EParticleType) 3);
1034     tPIDTOF[4] = fPIDResponse->NumberOfSigmas((AliPIDResponse::EDetector)3,esdtrack,(AliPID::EParticleType) 4);
1035     tPIDTOF[5] = fPIDResponse->NumberOfSigmas((AliPIDResponse::EDetector)3,esdtrack,(AliPID::EParticleType) 5);
1036     tPIDTOF[6] = fPIDResponse->NumberOfSigmas((AliPIDResponse::EDetector)3,esdtrack,(AliPID::EParticleType) 6);
1037     tPIDTOF[7] = fPIDResponse->NumberOfSigmas((AliPIDResponse::EDetector)3,esdtrack,(AliPID::EParticleType) 7);
1038     tPIDTOF[8] = fPIDResponse->NumberOfSigmas((AliPIDResponse::EDetector)3,esdtrack,(AliPID::EParticleType) 8);
1039
1040     tMomentum[0] = esdtrack->Px();
1041     tMomentum[1] = esdtrack->Py();
1042     tMomentum[2] = esdtrack->Pz();
1043     
1044     tTPCMomentum = pinTPC;
1045     tEta         = esdtrack->Eta();
1046     tdEdx        = TPCSignal;
1047     tDCA[0]      = impactXY;
1048     tDCA[1]      = impactZ;
1049
1050     // if(nClustersTPC<80)
1051     //   cout<<"!!!!! TPC cls: "<<nClustersTPC<<endl;
1052
1053     tTracksTPC[0] = chi2PerClusterTPC;
1054     tTracksTPC[1] = nClustersTPC;
1055
1056     tITSclustermap = esdtrack->GetITSClusterMap();
1057     esdtrack->GetITSdEdxSamples(ITSsample);
1058     tITSsample[0] = ITSsample[0];
1059     tITSsample[1] = ITSsample[1];
1060     tITSsample[2] = ITSsample[2];
1061     tITSsample[3] = ITSsample[3];
1062
1063     tisTOF[0] = isTOF;
1064     tisTOF[1] = isoutTPC;
1065  
1066     Double_t p = esdtrack->P();
1067     Double_t tof = esdtrack->GetTOFsignal()-fPIDResponse->GetTOFResponse().GetStartTime(p);
1068
1069     tTOFtrack[0] = poutTPC;
1070     tTOFtrack[1] = tof;    //esdtrack->GetTOFsignal();         //ps = Time
1071     tTOFtrack[2] = esdtrack->GetIntegratedLength(); //cm
1072     
1073     tCharge =  esdtrack->Charge();
1074     tPhi    =  esdtrack->Phi();
1075
1076     //Corrected momentum from Alexander
1077
1078     Double_t pT = esdtrack->Pt()/(1 - 0.333303/TMath::Power(esdtrack->Pt() + 0.651111, 5.27268));
1079     tPtCorr = pT;
1080
1081     if(fDataType == "REAL"){
1082       if(pinTPC < 3. && TMath::Abs(pullTPC) < 3){
1083         if(fFillNtuple == kTRUE)
1084           fNtuple1->Fill();
1085         fhBBDeu->Fill(pinTPC*esdtrack->GetSign(),TPCSignal);
1086       }
1087       
1088       if(pinTPC < 10. && TMath::Abs(pullTPChel3) < 3){
1089         if(fFillNtuple == kTRUE)
1090           fNtuple1->Fill();
1091         fhBBDeu->Fill(pinTPC*esdtrack->GetSign(),TPCSignal);
1092       }
1093       
1094       if(TMath::Abs(pullTPC)<2){
1095         
1096         fhPtDeu->Fill(esdtrack->Pt(),pT);
1097         
1098         Float_t deltaphiTPC=2*GetPhi0Pi(tPhi-trpangleTPC);
1099         Float_t deltaphiV0 =2*GetPhi0Pi(tPhi-trpangleVZERO[0]);
1100         
1101         
1102         if(tTPCMomentum < 1.0){
1103           
1104           if(tCharge > 0){
1105             
1106             hCosPhivsPt           ->Fill(TMath::Cos(tPhi),tPtCorr);
1107             hSinPhivsPt           ->Fill(TMath::Sin(tPhi),tPtCorr);
1108             hPhivsPt              ->Fill(tPhi,tPtCorr);
1109             
1110             if(tCentrality>0 && tCentrality<7.5){
1111               hCosDeltaPhivsPt075        ->Fill(TMath::Cos(deltaphiTPC),tPtCorr);   
1112               hSinDeltaPhivsPt075        ->Fill(TMath::Sin(deltaphiTPC),tPtCorr);   
1113               hDeltaPhivsPt075           ->Fill(deltaphiTPC,tPtCorr);          
1114               hCosDeltaPhiVZEROvsPt075   ->Fill(TMath::Cos(deltaphiV0),tPtCorr);    
1115               hSinDeltaPhiVZEROvsPt075   ->Fill(TMath::Sin(deltaphiV0),tPtCorr);    
1116               hDeltaPhiVZEROvsPt075      ->Fill(deltaphiV0,tPtCorr);       
1117               
1118             }
1119             
1120             if(tCentrality>15 && tCentrality<30){
1121               hCosDeltaPhivsPt1530        ->Fill(TMath::Cos(deltaphiTPC),tPtCorr);   
1122               hSinDeltaPhivsPt1530        ->Fill(TMath::Sin(deltaphiTPC),tPtCorr);   
1123               hDeltaPhivsPt1530           ->Fill(deltaphiTPC,tPtCorr);         
1124               hCosDeltaPhiVZEROvsPt1530   ->Fill(TMath::Cos(deltaphiV0),tPtCorr);    
1125               hSinDeltaPhiVZEROvsPt1530   ->Fill(TMath::Sin(deltaphiV0),tPtCorr);    
1126               hDeltaPhiVZEROvsPt1530      ->Fill(deltaphiV0,tPtCorr);         
1127             }
1128         
1129             if(tCentrality>30 && tCentrality<50){
1130               hCosDeltaPhivsPt3050        ->Fill(TMath::Cos(deltaphiTPC),tPtCorr);   
1131               hSinDeltaPhivsPt3050        ->Fill(TMath::Sin(deltaphiTPC),tPtCorr);   
1132               hDeltaPhivsPt3050           ->Fill(deltaphiTPC,tPtCorr);         
1133               hCosDeltaPhiVZEROvsPt3050   ->Fill(TMath::Cos(deltaphiV0),tPtCorr);    
1134               hSinDeltaPhiVZEROvsPt3050   ->Fill(TMath::Sin(deltaphiV0),tPtCorr);    
1135               hDeltaPhiVZEROvsPt3050      ->Fill(deltaphiV0,tPtCorr);             
1136             }
1137             
1138             if(tCentrality>15 && tCentrality<50){
1139               hCosDeltaPhivsPt1550        ->Fill(TMath::Cos(deltaphiTPC),tPtCorr);   
1140               hSinDeltaPhivsPt1550        ->Fill(TMath::Sin(deltaphiTPC),tPtCorr);   
1141               hDeltaPhivsPt1550           ->Fill(deltaphiTPC,tPtCorr);         
1142               hCosDeltaPhiVZEROvsPt1550   ->Fill(TMath::Cos(deltaphiV0),tPtCorr);    
1143               hSinDeltaPhiVZEROvsPt1550   ->Fill(TMath::Sin(deltaphiV0),tPtCorr);    
1144               hDeltaPhiVZEROvsPt1550      ->Fill(deltaphiV0,tPtCorr); 
1145             }
1146           }
1147           
1148           if(tCharge < 0){
1149             
1150             hAntiCosPhivsPt           ->Fill(TMath::Cos(tPhi),tPtCorr);
1151             hAntiSinPhivsPt           ->Fill(TMath::Sin(tPhi),tPtCorr);
1152             hAntiPhivsPt              ->Fill(tPhi,tPtCorr);
1153             if(tCentrality>0 && tCentrality<7.5){
1154               hAntiCosDeltaPhivsPt075        ->Fill(TMath::Cos(deltaphiTPC),tPtCorr);   
1155               hAntiSinDeltaPhivsPt075        ->Fill(TMath::Sin(deltaphiTPC),tPtCorr);   
1156               hAntiDeltaPhivsPt075           ->Fill(deltaphiTPC,tPtCorr);              
1157               hAntiCosDeltaPhiVZEROvsPt075   ->Fill(TMath::Cos(deltaphiV0),tPtCorr);    
1158               hAntiSinDeltaPhiVZEROvsPt075   ->Fill(TMath::Sin(deltaphiV0),tPtCorr);    
1159               hAntiDeltaPhiVZEROvsPt075      ->Fill(deltaphiV0,tPtCorr); 
1160             }
1161
1162             if(tCentrality>15 && tCentrality<30){
1163               hAntiCosDeltaPhivsPt1530        ->Fill(TMath::Cos(deltaphiTPC),tPtCorr);   
1164               hAntiSinDeltaPhivsPt1530        ->Fill(TMath::Sin(deltaphiTPC),tPtCorr);   
1165               hAntiDeltaPhivsPt1530           ->Fill(deltaphiTPC,tPtCorr);             
1166               hAntiCosDeltaPhiVZEROvsPt1530   ->Fill(TMath::Cos(deltaphiV0),tPtCorr);    
1167               hAntiSinDeltaPhiVZEROvsPt1530   ->Fill(TMath::Sin(deltaphiV0),tPtCorr);    
1168               hAntiDeltaPhiVZEROvsPt1530      ->Fill(deltaphiV0,tPtCorr);         
1169             }
1170           
1171             if(tCentrality>30 && tCentrality<50){
1172               hAntiCosDeltaPhivsPt3050        ->Fill(TMath::Cos(deltaphiTPC),tPtCorr);   
1173               hAntiSinDeltaPhivsPt3050        ->Fill(TMath::Sin(deltaphiTPC),tPtCorr);   
1174               hAntiDeltaPhivsPt3050           ->Fill(deltaphiTPC,tPtCorr);             
1175               hAntiCosDeltaPhiVZEROvsPt3050   ->Fill(TMath::Cos(deltaphiV0),tPtCorr);    
1176               hAntiSinDeltaPhiVZEROvsPt3050   ->Fill(TMath::Sin(deltaphiV0),tPtCorr);    
1177               hAntiDeltaPhiVZEROvsPt3050      ->Fill(deltaphiV0,tPtCorr);                
1178             }
1179           
1180             if(tCentrality>15 && tCentrality<50){
1181               hAntiCosDeltaPhivsPt1550        ->Fill(TMath::Cos(deltaphiTPC),tPtCorr);   
1182               hAntiSinDeltaPhivsPt1550        ->Fill(TMath::Sin(deltaphiTPC),tPtCorr);   
1183               hAntiDeltaPhivsPt1550           ->Fill(deltaphiTPC,tPtCorr);             
1184               hAntiCosDeltaPhiVZEROvsPt1550   ->Fill(TMath::Cos(deltaphiV0),tPtCorr);    
1185               hAntiSinDeltaPhiVZEROvsPt1550   ->Fill(TMath::Sin(deltaphiV0),tPtCorr);    
1186               hAntiDeltaPhiVZEROvsPt1550      ->Fill(deltaphiV0,tPtCorr);                
1187             }
1188           
1189           }
1190           
1191         }
1192
1193         if(tTPCMomentum > 1.0 && tTPCMomentum < 3.0){
1194           if(tPIDTOF[5]>2 || tPIDTOF[5]< -2)continue;
1195         
1196           if(tCharge > 0){
1197             
1198             hCosPhivsPt           ->Fill(TMath::Cos(tPhi),tPtCorr);
1199             hSinPhivsPt           ->Fill(TMath::Sin(tPhi),tPtCorr);
1200             hPhivsPt              ->Fill(tPhi,tPtCorr);
1201             
1202             
1203             if(tCentrality>0 && tCentrality<7.5){
1204               hCosDeltaPhivsPt075        ->Fill(TMath::Cos(deltaphiTPC),tPtCorr);   
1205               hSinDeltaPhivsPt075        ->Fill(TMath::Sin(deltaphiTPC),tPtCorr);   
1206               hDeltaPhivsPt075           ->Fill(deltaphiTPC,tPtCorr);          
1207               hCosDeltaPhiVZEROvsPt075   ->Fill(TMath::Cos(deltaphiV0),tPtCorr);    
1208               hSinDeltaPhiVZEROvsPt075   ->Fill(TMath::Sin(deltaphiV0),tPtCorr);    
1209               hDeltaPhiVZEROvsPt075      ->Fill(deltaphiV0,tPtCorr);                
1210               
1211             }
1212             
1213             if(tCentrality>15 && tCentrality<30){
1214               hCosDeltaPhivsPt1530        ->Fill(TMath::Cos(deltaphiTPC),tPtCorr);   
1215               hSinDeltaPhivsPt1530        ->Fill(TMath::Sin(deltaphiTPC),tPtCorr);   
1216               hDeltaPhivsPt1530           ->Fill(deltaphiTPC,tPtCorr);         
1217               hCosDeltaPhiVZEROvsPt1530   ->Fill(TMath::Cos(deltaphiV0),tPtCorr);    
1218               hSinDeltaPhiVZEROvsPt1530   ->Fill(TMath::Sin(deltaphiV0),tPtCorr);    
1219               hDeltaPhiVZEROvsPt1530      ->Fill(deltaphiV0,tPtCorr);          
1220             }
1221         
1222             if(tCentrality>30 && tCentrality<50){
1223               hCosDeltaPhivsPt3050        ->Fill(TMath::Cos(deltaphiTPC),tPtCorr);   
1224               hSinDeltaPhivsPt3050        ->Fill(TMath::Sin(deltaphiTPC),tPtCorr);   
1225               hDeltaPhivsPt3050           ->Fill(deltaphiTPC,tPtCorr);         
1226               hCosDeltaPhiVZEROvsPt3050   ->Fill(TMath::Cos(deltaphiV0),tPtCorr);    
1227               hSinDeltaPhiVZEROvsPt3050   ->Fill(TMath::Sin(deltaphiV0),tPtCorr);    
1228               hDeltaPhiVZEROvsPt3050      ->Fill(deltaphiV0,tPtCorr);      
1229             
1230             }
1231           
1232             if(tCentrality>15 && tCentrality<50){
1233               hCosDeltaPhivsPt1550        ->Fill(TMath::Cos(deltaphiTPC),tPtCorr);   
1234               hSinDeltaPhivsPt1550        ->Fill(TMath::Sin(deltaphiTPC),tPtCorr);   
1235               hDeltaPhivsPt1550           ->Fill(deltaphiTPC,tPtCorr);         
1236               hCosDeltaPhiVZEROvsPt1550   ->Fill(TMath::Cos(deltaphiV0),tPtCorr);    
1237               hSinDeltaPhiVZEROvsPt1550   ->Fill(TMath::Sin(deltaphiV0),tPtCorr);    
1238               hDeltaPhiVZEROvsPt1550      ->Fill(deltaphiV0,tPtCorr);       
1239             }
1240           }
1241         
1242           if(tCharge < 0){
1243           
1244             hAntiCosPhivsPt           ->Fill(TMath::Cos(tPhi),tPtCorr);
1245             hAntiSinPhivsPt           ->Fill(TMath::Sin(tPhi),tPtCorr);
1246             hAntiPhivsPt              ->Fill(tPhi,tPtCorr);
1247
1248             if(tCentrality>0 && tCentrality<7.5){
1249               hAntiCosDeltaPhivsPt075        ->Fill(TMath::Cos(deltaphiTPC),tPtCorr);   
1250               hAntiSinDeltaPhivsPt075        ->Fill(TMath::Sin(deltaphiTPC),tPtCorr);   
1251               hAntiDeltaPhivsPt075           ->Fill(deltaphiTPC,tPtCorr);              
1252               hAntiCosDeltaPhiVZEROvsPt075   ->Fill(TMath::Cos(deltaphiV0),tPtCorr);    
1253               hAntiSinDeltaPhiVZEROvsPt075   ->Fill(TMath::Sin(deltaphiV0),tPtCorr);    
1254               hAntiDeltaPhiVZEROvsPt075      ->Fill(deltaphiV0,tPtCorr);                
1255
1256           
1257             }
1258
1259             if(tCentrality>15 && tCentrality<30){
1260               hAntiCosDeltaPhivsPt1530        ->Fill(TMath::Cos(deltaphiTPC),tPtCorr);   
1261               hAntiSinDeltaPhivsPt1530        ->Fill(TMath::Sin(deltaphiTPC),tPtCorr);   
1262               hAntiDeltaPhivsPt1530           ->Fill(deltaphiTPC,tPtCorr);             
1263               hAntiCosDeltaPhiVZEROvsPt1530   ->Fill(TMath::Cos(deltaphiV0),tPtCorr);    
1264               hAntiSinDeltaPhiVZEROvsPt1530   ->Fill(TMath::Sin(deltaphiV0),tPtCorr);    
1265               hAntiDeltaPhiVZEROvsPt1530      ->Fill(deltaphiV0,tPtCorr);  
1266             
1267               
1268             }
1269         
1270             if(tCentrality>30 && tCentrality<50){
1271               hAntiCosDeltaPhivsPt3050        ->Fill(TMath::Cos(deltaphiTPC),tPtCorr);   
1272               hAntiSinDeltaPhivsPt3050        ->Fill(TMath::Sin(deltaphiTPC),tPtCorr);   
1273               hAntiDeltaPhivsPt3050           ->Fill(deltaphiTPC,tPtCorr);             
1274               hAntiCosDeltaPhiVZEROvsPt3050   ->Fill(TMath::Cos(deltaphiV0),tPtCorr);    
1275               hAntiSinDeltaPhiVZEROvsPt3050   ->Fill(TMath::Sin(deltaphiV0),tPtCorr);    
1276               hAntiDeltaPhiVZEROvsPt3050      ->Fill(deltaphiV0,tPtCorr);   
1277             
1278              
1279             }
1280           
1281             if(tCentrality>15 && tCentrality<50){
1282               hAntiCosDeltaPhivsPt1550        ->Fill(TMath::Cos(deltaphiTPC),tPtCorr);   
1283               hAntiSinDeltaPhivsPt1550        ->Fill(TMath::Sin(deltaphiTPC),tPtCorr);   
1284               hAntiDeltaPhivsPt1550           ->Fill(deltaphiTPC,tPtCorr);             
1285               hAntiCosDeltaPhiVZEROvsPt1550   ->Fill(TMath::Cos(deltaphiV0),tPtCorr);    
1286               hAntiSinDeltaPhiVZEROvsPt1550   ->Fill(TMath::Sin(deltaphiV0),tPtCorr);    
1287               hAntiDeltaPhiVZEROvsPt1550      ->Fill(deltaphiV0,tPtCorr);    
1288             
1289             
1290             }
1291
1292           }
1293         
1294         }
1295
1296
1297         if(tTOFtrack[1] > 0){
1298           Double_t beta = tTOFtrack[2]/(tTOFtrack[1] * 2.99792457999999984e-02);
1299           Float_t gamma = 1/TMath::Sqrt(1 - beta*beta);
1300           fhMassTOF->Fill(poutTPC/TMath::Sqrt(gamma*gamma - 1) - 1.8756);
1301         }
1302       }
1303     }
1304         
1305     if(fDataType == "SIM"){
1306       
1307       Int_t  label = TMath::Abs(esdtrack->GetLabel());
1308       TParticle * part = stack->Particle(label);
1309       Int_t PDGCode=part->GetPdgCode();
1310
1311       Int_t motherPDG=0;
1312       
1313       Int_t mumid = part->GetFirstMother();
1314       if(mumid>-1){
1315         TParticle *mother=(TParticle*)stack->Particle(mumid);
1316         motherPDG = mother->GetPdgCode();
1317       }
1318       
1319       if( PDGCode == 1000010020 || PDGCode == -1000010020 || PDGCode == 1000020030 || PDGCode == -1000020030){
1320         
1321         tPDGCode=PDGCode;
1322         tPDGCodeMum = motherPDG;
1323
1324         tIsPrimaryTr      = stack->IsPhysicalPrimary(label);
1325         tIsSecondaryTr[0] = stack->IsSecondaryFromMaterial(label);
1326         tIsSecondaryTr[1] = stack->IsSecondaryFromWeakDecay(label);
1327
1328         fNtuple1->Fill();
1329         fhPtDeu->Fill(esdtrack->Pt(),pT);
1330         
1331         if(tTOFtrack[1] > 0){
1332           Double_t beta = tTOFtrack[2]/(tTOFtrack[1] * 2.99792457999999984e-02);
1333           Float_t gamma = 1/TMath::Sqrt(1 - beta*beta);
1334           fhMassTOF->Fill(poutTPC/TMath::Sqrt(gamma*gamma - 1) - 1.8756);
1335         }
1336       }
1337     }
1338
1339   }   //track
1340   
1341   //==END RECONSTRUCTION==
1342   
1343
1344   // MC truth
1345
1346   if(fDataType == "SIM"){
1347     
1348     for (Int_t iMC=0; iMC<stack->GetNtrack(); iMC++){
1349  
1350       const TParticle *tparticle = stack->Particle(iMC);
1351       Long_t PDGCode = tparticle->GetPdgCode();
1352       
1353       Double_t eta = tparticle->Eta();
1354       Double_t pt  = tparticle->Pt();
1355       Double_t rap = tparticle->Y();
1356       
1357       //check which particle it is 
1358       
1359       Float_t codemoth = 0;
1360       
1361       Int_t indexMoth=tparticle->GetFirstMother();
1362       
1363       if(indexMoth>=0){
1364         TParticle* moth = stack->Particle(indexMoth);
1365         codemoth = TMath::Abs(moth->GetPdgCode());
1366       }
1367        
1368       //d, 3He
1369       
1370       if( PDGCode == 1000010020 || PDGCode == -1000010020 || PDGCode == 1000020030 || PDGCode == -1000020030){
1371         
1372         tEventNumberMC[0] = evNumber    ;
1373         tEventNumberMC[1] = runNumber   ;
1374         tEventNumberMC[2] = BCNumber    ;
1375         tEventNumberMC[3] = OrbitNumber ;
1376         tEventNumberMC[4] = PeriodNumber;
1377         tEventNumberMC[5] = TrackNumber;
1378           
1379         tCentralityMC = percentile;
1380         
1381         tVertexCoordMC[0] = xPrimaryVertex;
1382         tVertexCoordMC[1] = yPrimaryVertex;
1383         tVertexCoordMC[2] = zPrimaryVertex;
1384         
1385         tVertexCoordMC[0] = tparticle->Px();
1386         tVertexCoordMC[1] = tparticle->Py();
1387         tVertexCoordMC[2] = tparticle->Pz();
1388         
1389         tPDGCodeMC = PDGCode;
1390         tPDGCodeMumMC = codemoth;
1391         tEtaMC = eta;
1392         
1393         tPtMC = pt;
1394         tYMC  = rap;
1395
1396         tIsPrimary      = stack->IsPhysicalPrimary(iMC);
1397         tIsSecondary[0] = stack->IsSecondaryFromMaterial(iMC);
1398         tIsSecondary[1] = stack->IsSecondaryFromWeakDecay(iMC);
1399
1400         
1401         fNtuple2->Fill();
1402       }
1403     }
1404     
1405    
1406     
1407   }
1408   PostData(1, fListHistCascade);
1409   PostData(2,  fNtuple1);
1410   PostData(3,  fNtuple2);
1411 } //end userexec
1412
1413
1414 //________________________________________________________________________
1415
1416 void AliAnalysisTaskNucleiv2::Terminate(Option_t *) 
1417 {
1418   // Draw result to the screen
1419   // Called once at the end of the query
1420 }
1421