]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/SPECTRA/Nuclei/masses/AliAnalysisNucleiMass.cxx
Update for He analysis
[u/mrichter/AliRoot.git] / PWGLF / SPECTRA / Nuclei / masses / AliAnalysisNucleiMass.cxx
1 #include "AliAnalysisNucleiMass.h"
2
3 // ROOT includes
4 #include <TMath.h>
5 #include "TChain.h"
6
7 // AliRoot includes
8 #include "AliInputEventHandler.h"
9 #include "AliAODEvent.h"
10 #include "AliESDEvent.h"
11 #include "AliVEvent.h"
12 #include "AliAODTrack.h"
13 #include "AliAODPid.h"
14 #include "AliCentrality.h"
15 #include "TH2F.h"
16 #include "TH2D.h"
17 #include "TH1F.h"
18 #include "TF1.h"
19 #include "TGraph.h"
20 #include "TProfile.h"
21 #include "AliESDtrackCuts.h"
22 #include "AliAnalysisManager.h"
23 #include "TFile.h"
24
25 ClassImp(AliAnalysisNucleiMass)
26
27 //_____________________________________________________________________________
28 AliAnalysisNucleiMass::AliAnalysisNucleiMass():
29   AliAnalysisTaskSE(),
30   fMC(kFALSE),
31   FilterBit(16),
32   NminTPCcluster(0),
33   DCAzCUT(100),
34   DCAxyCUT(0.1),
35   kTPCcut(kTRUE),
36   kTPC(0),
37   kTOF(0),
38   iBconf(0),
39   isSignalCheck(kTRUE),
40 //NsigmaTPCCut(2.0),
41 //MomType(1),
42   fAOD(NULL),
43   fESD(NULL),
44   fEvent(NULL),
45 //  fPIDResponse(NULL),
46 //  fmism(NULL),
47   hmism(NULL),
48   fchDist(NULL),
49   hChDist(NULL)
50 /*fBetaTofVSp(NULL),
51   fCentrality(NULL),
52   hNevent(NULL),
53   hNeventSelected(NULL),
54   hTOFSignalPion(NULL),
55   hEtaDistribution(NULL),
56   hZvertex(NULL)*/
57 {
58    // Default constructor (should not be used)
59   fList1[0]=new TList();
60   fList1[0]->SetName("results");
61   
62   fList1[1]=new TList();
63   fList1[1]->SetName("results2");
64 }
65 //______________________________________________________________________________
66 AliAnalysisNucleiMass::AliAnalysisNucleiMass(const char *name):
67   AliAnalysisTaskSE(name),
68   fMC(kFALSE),
69   FilterBit(16),
70   NminTPCcluster(0),
71   DCAzCUT(100),
72   DCAxyCUT(0.1),
73   kTPCcut(kTRUE),
74   kTPC(0),
75   kTOF(0),
76   iBconf(0),
77   isSignalCheck(kTRUE),
78   //  NsigmaTPCCut(2.0),
79   //MomType(1),
80   fAOD(NULL), 
81   fESD(NULL),
82   fEvent(NULL),
83   //fPIDResponse(NULL),
84   //fmism(NULL),
85   hmism(NULL),
86   fchDist(NULL),
87   hChDist(NULL)
88   /*fBetaTofVSp(NULL),
89   fCentrality(NULL),
90   hNevent(NULL),
91   hNeventSelected(NULL),
92   hTOFSignalPion(NULL),
93   hZvertex(NULL)*/
94 {
95   fList1[0]=new TList();
96   DefineOutput(1, TList::Class());
97   fList1[0]->SetName("results");
98   
99   fList1[1]=new TList();
100   DefineOutput(2, TList::Class());
101   fList1[1]->SetName("results2");
102 }
103 //_____________________________________________________________________________
104 AliAnalysisNucleiMass::~AliAnalysisNucleiMass()
105 {
106   if(fList1[0]) delete fList1[0];
107   if(fList1[1]) delete fList1[1];
108 }
109 //______________________________________________________________________________
110 void AliAnalysisNucleiMass::UserCreateOutputObjects()
111 {
112   
113   fmism = new TFile("$ALICE_ROOT/TOF/data/TOFmismatchDistr.root");
114   hmism = (TH1F *)fmism->Get("TOFmismDistr");
115
116   fchDist = new TFile("$ALICE_ROOT/TOF/data/TOFchannelDist.root");
117   hChDist = (TH1D *)fchDist->Get("hTOFchanDist");
118
119   for(Int_t iB=0;iB<2;iB++) {
120
121     hNevent[iB] = new TH1F("hNevent_Analyzed","Centrality(analyzed)",20,0,100);
122     
123     hNeventSelected[iB] = new TH1F("hNevent_Selected","Centrality(selected)",20,0,100);
124
125     hZvertex[iB] = new TH1F("hZvertex","Vertex distribution of selected events; z vertex (cm)",240,-30,30);
126
127     hEtaDistribution[iB][0] = new TH1F("hEtaDistribution_BeforeTRDcut","Eta distribution of the tracks_BeforeTRDcut(if there is); |#eta|",11,-0.1,1.0);
128     hEtaDistribution[iB][1] = new TH1F("hEtaDistribution_TrackAnalyzed","Eta distribution of the tracks_TrackAnalyzed; |#eta|",11,-0.1,1.0);
129
130     hTOFSignalPion[iB] = new TH1F("hTOFSignalPion","TOF signal 0.9<p_{T}<1.0; t-t_{exp}^{#pi} (ps)",1500,-1500,1500);
131
132     hNminTPCcl[iB] = new TH1F("hNminTPCcl","hNminTPCcl",300,0,300);
133    
134     hPhi[iB][0] = new TH1F("hPhi_NoTRDCut","hPhi_NoTRDCut;#phi (rad.)",90,0,6.3);//each TRD supermodule is divided for 5 (DeltaPhi(TRD)=0.35 theoretical)
135     hPhi[iB][1] = new TH1F("hPhi_kTRDin","hPhi_kTRDin;#phi (rad.)",90,0,6.3); 
136     hPhi[iB][2] = new TH1F("hPhi_kTRDout","hPhi_kTRDout;#phi (rad.)",90,0,6.3); 
137     hPhi[iB][3] = new TH1F("hPhi_kTRDin&out","hPhi_kTRDin&out;#phi (rad.)",90,0,6.3); 
138     hPhi[iB][4] = new TH1F("hPhi_NoTRD","hPhi_NoTRD;#phi (rad.)",90,0,6.3); 
139     hPhi[iB][5] = new TH1F("hPhi_TrackAnalyzed","hPhi_TrackAnalyzed;#phi (rad.)",90,0,6.3);
140
141     fEtaPhi[iB][0] = new TH2F("fEtaPhi_NoTRDCut","fEtaPhi_NoTRDCut;|#eta|;#phi (rad.)",10,0.0,1.0,90,0,6.3);
142     fEtaPhi[iB][1] = new TH2F("fEtaPhi_kTRDin","fEtaPhi_kTRDin;|#eta|;#phi (rad.)",10,0.0,1.0,90,0,6.3); 
143     fEtaPhi[iB][2] = new TH2F("fEtaPhi_kTRDout","fEtaPhi_kTRDout;|#eta|;#phi (rad.)",10,0.0,1.0,90,0,6.3); 
144     fEtaPhi[iB][3] = new TH2F("fEtaPhi_kTRDin&out","fEtaPhi_kTRDin&out;|#eta|;#phi (rad.)",10,0.0,1.0,90,0,6.3); 
145     fEtaPhi[iB][4] = new TH2F("fEtaPhi_NoTRD","fEtaPhi_NoTRD;|#eta|;#phi (rad.)",10,0.0,1.0,90,0,6.3); 
146     fEtaPhi[iB][5] = new TH2F("fEtaPhi_TrackAnalyzed","fEtaPhi_TrackAnalyzed;|#eta|;#phi (rad.)",10,0.0,1.0,90,0,6.3);
147
148     char namePart[9][30];
149     char namePart_par_TPC[9][40];
150     char namePart_title_TPC[9][120];
151     
152     char namePart_par_TOF[9][40];
153     char namePart_title_TOF[9][120];
154     
155     char namePart_par_ProfileTPC[9][40];
156     char namePart_title_ProfileTPC[9][80];
157     
158     char namePart_par_ProfileTOF[9][40];
159     char namePart_title_ProfileTOF[9][80];
160         
161     snprintf(namePart[0],20,"e");
162     snprintf(namePart[1],20,"#mu");
163     snprintf(namePart[2],20,"#pi");
164     snprintf(namePart[3],20,"K");
165     snprintf(namePart[4],20,"p");
166     snprintf(namePart[5],20,"d");
167     snprintf(namePart[6],20,"t");
168     snprintf(namePart[7],20,"He3");
169     snprintf(namePart[8],20,"He4");
170     
171     for(Int_t i=0;i<9;i++) {
172       snprintf(namePart_par_TPC[i],40,"NsigmaTPC_%s",namePart[i]);
173       snprintf(namePart_title_TPC[i],120,"NsigmaTPC_%s;p_{T} (GeV/c);n_{#sigma_{TPC}}^{%s}",namePart[i],namePart[i]);
174       
175       snprintf(namePart_par_TOF[i],40,"NsigmaTOF_%s",namePart[i]);
176       snprintf(namePart_title_TOF[i],120,"NsigmaTOF_%s;p_{T} (GeV/c);n_{#sigma_{TOF}}^{%s}",namePart[i],namePart[i]);
177       
178       snprintf(namePart_par_ProfileTPC[i],40,"hDeDxExp_%s",namePart[i]);
179       snprintf(namePart_title_ProfileTPC[i],80,"hDeDxExp_%s;p (GeV/c);dE/dx_{TPC} (a.u.)",namePart[i]);
180       
181       snprintf(namePart_par_ProfileTOF[i],40,"hBetaVsP_Exp_%s",namePart[i]);
182       snprintf(namePart_title_ProfileTOF[i],80,"hBetaVsP_Exp%s;p (GeV/c); #beta_{TOF}",namePart[i]);
183     }
184     
185     char namePart_par_TPCvsP_kTOFtrue[18][80];
186     char namePart_title_TPCvsP_kTOFtrue[18][120];
187     
188     char name[18][30];
189     
190     snprintf(name[0],20,"e^{+}");
191     snprintf(name[1],20,"#mu^{+}");
192     snprintf(name[2],20,"#pi^{+}");
193     snprintf(name[3],20,"K^{+}");
194     snprintf(name[4],20,"p");
195     snprintf(name[5],20,"d");
196     snprintf(name[6],20,"t");
197     snprintf(name[7],20,"He3");
198     snprintf(name[8],20,"He4");
199     
200     snprintf(name[9],20,"e^{-}");
201     snprintf(name[10],20,"#mu^{-}");
202     snprintf(name[11],20,"#pi^{-}");
203     snprintf(name[12],20,"K^{-}");
204     snprintf(name[13],20,"#bar{p}");
205     snprintf(name[14],20,"#bar{d}");
206     snprintf(name[15],20,"#bar{t}");
207     snprintf(name[16],20,"#bar{He3}");
208     snprintf(name[17],20,"#bar{He4}");
209     
210     for(Int_t iS=0;iS<18;iS++) {
211       snprintf(namePart_par_TPCvsP_kTOFtrue[iS],40,"NsigmaTPCvsP_kTOFout&&kTIME_%s",name[iS]);
212       snprintf(namePart_title_TPCvsP_kTOFtrue[iS],120,"NsigmaTPCvsP_kTOFout&&kTIME_%s;p (GeV/c);n_{#sigma_{TPC}}^{%s}",name[iS],name[iS]);
213      }
214  
215     char name_par_MvsP[18][60];
216     char name_title_MvsP[18][150];
217     
218     for(Int_t i=0;i<18;i++) {
219       snprintf(name_par_MvsP[i],60,"M2vsP_%s",name[i]);
220       snprintf(name_title_MvsP[i],150,"M_{TOF}^{2}_%s_2#sigma_TPCcut;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4});p/|Z| (GeV/c)",name[i]);
221     }
222     
223     char name_par_MvsP_DCAxyCut[18][60];
224     char name_title_MvsP_DCAxyCut[18][150];
225     
226     for(Int_t i=0;i<18;i++) {
227       snprintf(name_par_MvsP_DCAxyCut[i],60,"M2vsP_DCAxyCut_%s",name[i]);
228       snprintf(name_title_MvsP_DCAxyCut[i],150,"M_{TOF}^{2}_%s_2#sigma_TPCcut_DCAxyCut;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4});p/|Z| (GeV/c)",name[i]);
229     }
230     
231     if(isSignalCheck){
232       
233       fdEdxVSp[iB][0] = new TH2F("fdEdxVSp","dE/dx vs p; p/|Z| (GeV/c); dE/dx_{TPC} (a.u.)",500,0,5,2000,0,1000);
234       fdEdxVSp[iB][1] = new TH2F("fdEdxVSp_pos","dE/dx vs p positive charge; p/|Z| (GeV/c); dE/dx_{TPC} (a.u.)",500,0,5,2000,0,1000);
235       fdEdxVSp[iB][2] = new TH2F("fdEdxVSp_neg","dE/dx vs p negative charge; p/|Z| (GeV/c); dE/dx_{TPC} (a.u.)",500,0,5,2000,0,1000);
236       
237       fBetaTofVSp[iB] = new TH2F("fBetaTofVSp","#beta_{TOF} vs p; p(GeV/c); #beta_{TOF}",1000,0,5,1300,0.4,1.05);
238       
239       fM2vsP_NoTpcCut[iB][0] = new TH2F("fM2vsP_NoTpcCut","M_{TOF}^{2} vs p; M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4}); p/|Z| (GeV/c)",8000,0,10,200,0,10);
240       fM2vsP_NoTpcCut[iB][1] = new TH2F("fM2vsP_NoTpcCut_Positive","M_{TOF}^{2} vs p Pos Part; M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4}); p/|Z| (GeV/c)",8000,0,10,200,0,10);
241       fM2vsP_NoTpcCut[iB][2] = new TH2F("fM2vsP_NoTpcCut_Negative","M_{TOF}^{2} vs p Neg Part; M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4}); p/|Z| (GeV/c)",8000,0,10,200,0,10);
242       
243       fM2vsP_NoTpcCut_DCAxyCut[iB][0] = new TH2F("fM2vsP_NoTpcCut_DCAxycut","M_{TOF}^{2} vs p with DCAxy cut; M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4}); p/|Z| (GeV/c)",8000,0,10,200,0,10);
244       fM2vsP_NoTpcCut_DCAxyCut[iB][1] = new TH2F("fM2vsP_NoTpcCut_Positive_DCAxycut","M_{TOF}^{2} vs p Pos Part with DCAxy cut; M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4}); p/|Z| (GeV/c)",8000,0,10,200,0,10);
245       fM2vsP_NoTpcCut_DCAxyCut[iB][2] = new TH2F("fM2vsP_NoTpcCut_Negative_DCAxycut","M_{TOF}^{2} vs p Neg Part with DCAxy cut; M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4}); p/|Z| (GeV/c)",8000,0,10,200,0,10);
246       
247       fM2vsZ[iB][0] = new TH2F("fM2vsZ","M_{TOF}^{2} vs Z^{2} Integrated p_{T};Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",4000,-4,4,1000,0,10);
248       fM2vsZ[iB][1] = new TH2F("fM2vsZ_0.3pT0.5","M_{TOF}^{2} vs Z^{2} 0.3<pT<0.5;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",4000,-4,4,1000,0,10);
249       fM2vsZ[iB][2] = new TH2F("fM2vsZ_0.5pT1.0","M_{TOF}^{2} vs Z^{2} 0.5<pT<1.0;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",4000,-4,4,1000,0,10);
250       fM2vsZ[iB][3] = new TH2F("fM2vsZ_1.0pT1.5","M_{TOF}^{2} vs Z^{2} 1.0<pT<1.5;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",4000,-4,4,1000,0,10);
251       fM2vsZ[iB][4] = new TH2F("fM2vsZ_1.5pT2.0","M_{TOF}^{2} vs Z^{2} 1.5<pT<2.0;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",4000,-4,4,1000,0,10);
252       fM2vsZ[iB][5] = new TH2F("fM2vsZ_2.0pT2.5","M_{TOF}^{2} vs Z^{2} 2.0<pT<2.5;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",4000,-4,4,1000,0,10);
253       fM2vsZ[iB][6] = new TH2F("fM2vsZ_2.5pT3.0","M_{TOF}^{2} vs Z^{2} 2.5<pT<3.0;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",4000,-4,4,1000,0,10);
254       fM2vsZ[iB][7] = new TH2F("fM2vsZ_3.0pT3.5","M_{TOF}^{2} vs Z^{2} 3.0<pT<3.5;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",4000,-4,4,1000,0,10);
255       fM2vsZ[iB][8] = new TH2F("fM2vsZ_3.5pT4.0","M_{TOF}^{2} vs Z^{2} 3.5<pT<4.0;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",4000,-4,4,1000,0,10);
256       fM2vsZ[iB][9] = new TH2F("fM2vsZ_4.0pT4.5","M_{TOF}^{2} vs Z^{2} 4.0<pT<4.5;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",4000,-4,4,1000,0,10);
257       fM2vsZ[iB][10] = new TH2F("fM2vsZ_0.0pT1.0","M_{TOF}^{2} vs Z^{2} 2.0<pT<2.5;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",4000,-4,4,1000,0,10);
258       fM2vsZ[iB][11] = new TH2F("fM2vsZ_1.0pT2.0","M_{TOF}^{2} vs Z^{2} 2.5<pT<3.0;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",4000,-4,4,1000,0,10);
259       fM2vsZ[iB][12] = new TH2F("fM2vsZ_2.0pT3.0","M_{TOF}^{2} vs Z^{2} 3.0<pT<3.5;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",4000,-4,4,1000,0,10);
260       fM2vsZ[iB][13] = new TH2F("fM2vsZ_3.0pT4.0","M_{TOF}^{2} vs Z^{2} 3.5<pT<4.0;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",4000,-4,4,1000,0,10);
261       fM2vsZ[iB][14] = new TH2F("fM2vsZ_4.0pT4.5","M_{TOF}^{2} vs Z^{2} 4.0<pT<4.5;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",4000,-4,4,1000,0,10);
262
263       fM2vsZwithTPC[iB][0] = new TH2F("fM2vsZwithTPC","M_{TOF}^{2} vs Z^{2} Integrated p_{T} withTPCcut;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",4000,-4,4,1000,0,10);
264       fM2vsZwithTPC[iB][1] = new TH2F("fM2vsZwithTPC_0.3pT0.5","M_{TOF}^{2} vs Z^{2} 0.3<pT<0.5 withTPCcut;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",4000,-4,4,1000,0,10);
265       fM2vsZwithTPC[iB][2] = new TH2F("fM2vsZwithTPC_0.5pT1.0","M_{TOF}^{2} vs Z^{2} 0.5<pT<1.0 withTPCcut;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",4000,-4,4,1000,0,10);
266       fM2vsZwithTPC[iB][3] = new TH2F("fM2vsZwithTPC_1.0pT1.5","M_{TOF}^{2} vs Z^{2} 1.0<pT<1.5 withTPCcut;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",4000,-4,4,1000,0,10);
267       fM2vsZwithTPC[iB][4] = new TH2F("fM2vsZwithTPC_1.5pT2.0","M_{TOF}^{2} vs Z^{2} 1.5<pT<2.0 withTPCcut;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",4000,-4,4,1000,0,10);
268       fM2vsZwithTPC[iB][5] = new TH2F("fM2vsZwithTPC_2.0pT2.5","M_{TOF}^{2} vs Z^{2} 2.0<pT<2.5 withTPCcut;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",4000,-4,4,1000,0,10);
269       fM2vsZwithTPC[iB][6] = new TH2F("fM2vsZwithTPC_2.5pT3.0","M_{TOF}^{2} vs Z^{2} 2.5<pT<3.0 withTPCcut;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",4000,-4,4,1000,0,10);
270       fM2vsZwithTPC[iB][7] = new TH2F("fM2vsZwithTPC_3.0pT3.5","M_{TOF}^{2} vs Z^{2} 3.0<pT<3.5 withTPCcut;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",4000,-4,4,1000,0,10);
271       fM2vsZwithTPC[iB][8] = new TH2F("fM2vsZwithTPC_3.5pT4.0","M_{TOF}^{2} vs Z^{2} 3.5<pT<4.0 withTPCcut;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",4000,-4,4,1000,0,10);
272       fM2vsZwithTPC[iB][9] = new TH2F("fM2vsZwithTPC_4.0pT4.5","M_{TOF}^{2} vs Z^{2} 4.0<pT<4.5 withTPCcut;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",4000,-4,4,1000,0,10);
273       fM2vsZwithTPC[iB][10] = new TH2F("fM2vsZwithTPC_0.0pT1.0","M_{TOF}^{2} vs Z^{2} 2.0<pT<2.5 withTPCcut;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",4000,-4,4,1000,0,10);
274       fM2vsZwithTPC[iB][11] = new TH2F("fM2vsZwithTPC_1.0pT2.0","M_{TOF}^{2} vs Z^{2} 2.5<pT<3.0 withTPCcut;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",4000,-4,4,1000,0,10);
275       fM2vsZwithTPC[iB][12] = new TH2F("fM2vsZwithTPC_2.0pT3.0","M_{TOF}^{2} vs Z^{2} 3.0<pT<3.5 withTPCcut;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",4000,-4,4,1000,0,10);
276       fM2vsZwithTPC[iB][13] = new TH2F("fM2vsZwithTPC_3.0pT4.0","M_{TOF}^{2} vs Z^{2} 3.5<pT<4.0 withTPCcut;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",4000,-4,4,1000,0,10);
277       fM2vsZwithTPC[iB][14] = new TH2F("fM2vsZwithTPC_4.0pT4.5","M_{TOF}^{2} vs Z^{2} 4.0<pT<4.5 withTPCcut;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",4000,-4,4,1000,0,10);
278       
279       for(Int_t i=0;i<9;i++) {
280         fNsigmaTPC[iB][i] = new TH2F(namePart_par_TPC[i],namePart_title_TPC[i],125,0,5,100,-5,5);
281         fNsigmaTPC[iB][i]->GetYaxis()->CenterTitle();
282         fNsigmaTOF[iB][i] = new TH2F(namePart_par_TOF[i],namePart_title_TOF[i],125,0,5,100,-5,5);
283         fNsigmaTOF[iB][i]->GetYaxis()->CenterTitle();
284         hDeDxExp[iB][i] = new TProfile(namePart_par_ProfileTPC[i],namePart_title_ProfileTPC[i],500,0,5,0,1000,"");
285         hBetaExp[iB][i] = new TProfile(namePart_par_ProfileTOF[i],namePart_title_ProfileTOF[i],400,0,5,0.4,1.05,"");
286       }
287       
288       for(Int_t iS=0;iS<18;iS++) {
289         fNsigmaTPCvsP_kTOFtrue[iB][iS] = new TH2F(namePart_par_TPCvsP_kTOFtrue[iS],namePart_title_TPCvsP_kTOFtrue[iS],125,0,5,100,-5,5);
290         fNsigmaTPCvsP_kTOFtrue[iB][iS]->GetYaxis()->CenterTitle();
291       }
292       
293       for (Int_t i=0;i<18;i++) fM2vsP[iB][i] = new TH2F(name_par_MvsP[i],name_title_MvsP[i],8000,0,10,200,0,10);
294       
295       for (Int_t i=0;i<18;i++) fM2vsP_DCAxyCut[iB][i] = new TH2F(name_par_MvsP_DCAxyCut[i],name_title_MvsP_DCAxyCut[i],8000,0,10,200,0,10);
296       
297     }
298     
299     else{//IsSignalCheck is kFALSE
300       
301       fdEdxVSp[iB][0] = new TH2F("fdEdxVSp","dE/dx vs p; p/|Z| (GeV/c); dE/dx_{TPC} (a.u.)",1,0,5,1,0,1000);
302       fdEdxVSp[iB][1] = new TH2F("fdEdxVSp_pos","dE/dx vs p positive charge; p/|Z| (GeV/c); dE/dx_{TPC} (a.u.)",1,0,5,1,0,1000);
303       fdEdxVSp[iB][2] = new TH2F("fdEdxVSp_neg","dE/dx vs p negative charge; p/|Z| (GeV/c); dE/dx_{TPC} (a.u.)",1,0,5,1,0,1000);
304     
305       fBetaTofVSp[iB] = new TH2F("fBetaTofVSp","#beta_{TOF} vs p; p(GeV/c); #beta_{TOF}",1,0,5,1,0.4,1.05);
306       
307       fM2vsP_NoTpcCut[iB][0] = new TH2F("fM2vsP_NoTpcCut","M_{TOF}^{2} vs p; M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4}); p/|Z| (GeV/c)",1,0,10,1,0,8);//1250,...,80
308       fM2vsP_NoTpcCut[iB][1] = new TH2F("fM2vsP_NoTpcCut_Positive","M_{TOF}^{2} vs p Pos Part; M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4}); p/|Z| (GeV/c)",1,0,10,1,0,8);
309       fM2vsP_NoTpcCut[iB][2] = new TH2F("fM2vsP_NoTpcCut_Negative","M_{TOF}^{2} vs p Neg Part; M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4}); p/|Z| (GeV/c)",1,0,10,1,0,8);
310       
311       fM2vsP_NoTpcCut_DCAxyCut[iB][0] = new TH2F("fM2vsP_NoTpcCut_DCAxycut","M_{TOF}^{2} vs p with DCAxy cut; M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4}); p/|Z| (GeV/c)",1,0,10,1,0,8);
312       fM2vsP_NoTpcCut_DCAxyCut[iB][1] = new TH2F("fM2vsP_NoTpcCut_Positive_DCAxycut","M_{TOF}^{2} vs p Pos Part with DCAxy cut; M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4}); p/|Z| (GeV/c)",1,0,10,1,0,8);
313       fM2vsP_NoTpcCut_DCAxyCut[iB][2] = new TH2F("fM2vsP_NoTpcCut_Negative_DCAxycut","M_{TOF}^{2} vs p Neg Part with DCAxy cut; M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4}); p/|Z| (GeV/c)",1,0,10,1,0,8);
314
315       /*fM2vsP_NoTpcCut[iB][0] = new TH2F("fM2vsP_NoTpcCut","M_{TOF}^{2} vs p; M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4}); p/|Z| (GeV/c)",1,0,10,1,0,10);
316       fM2vsP_NoTpcCut[iB][1] = new TH2F("fM2vsP_NoTpcCut_Positive","M_{TOF}^{2} vs p Pos Part; M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4}); p/|Z| (GeV/c)",1,0,10,1,0,10);
317       fM2vsP_NoTpcCut[iB][2] = new TH2F("fM2vsP_NoTpcCut_Negative","M_{TOF}^{2} vs p Neg Part; M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4}); p/|Z| (GeV/c)",1,0,10,1,0,10);
318       
319       fM2vsP_NoTpcCut_DCAxyCut[iB][0] = new TH2F("fM2vsP_NoTpcCut_DCAxycut","M_{TOF}^{2} vs p with DCAxy cut; M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4}); p/|Z| (GeV/c)",1,0,10,1,0,10);
320       fM2vsP_NoTpcCut_DCAxyCut[iB][1] = new TH2F("fM2vsP_NoTpcCut_Positive_DCAxycut","M_{TOF}^{2} vs p Pos Part with DCAxy cut; M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4}); p/|Z| (GeV/c)",1,0,10,1,0,10);
321       fM2vsP_NoTpcCut_DCAxyCut[iB][2] = new TH2F("fM2vsP_NoTpcCut_Negative_DCAxycut","M_{TOF}^{2} vs p Neg Part with DCAxy cut; M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4}); p/|Z| (GeV/c)",1,0,10,1,0,10);*/
322       
323       fM2vsZ[iB][0] = new TH2F("fM2vsZ","M_{TOF}^{2} vs Z^{2} Integrated p_{T};Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",1,-4,4,1,0,10);
324       fM2vsZ[iB][1] = new TH2F("fM2vsZ_0.3pT0.5","M_{TOF}^{2} vs Z^{2} 0.3<pT<0.5;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",1,-4,4,1,0,10);
325       fM2vsZ[iB][2] = new TH2F("fM2vsZ_0.5pT1.0","M_{TOF}^{2} vs Z^{2} 0.5<pT<1.0;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",1,-4,4,1,0,10);
326       fM2vsZ[iB][3] = new TH2F("fM2vsZ_1.0pT1.5","M_{TOF}^{2} vs Z^{2} 1.0<pT<1.5;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",1,-4,4,1,0,10);
327       fM2vsZ[iB][4] = new TH2F("fM2vsZ_1.5pT2.0","M_{TOF}^{2} vs Z^{2} 1.5<pT<2.0;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",1,-4,4,1,0,10);
328       fM2vsZ[iB][5] = new TH2F("fM2vsZ_2.0pT2.5","M_{TOF}^{2} vs Z^{2} 2.0<pT<2.5;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",1,-4,4,1,0,10);
329       fM2vsZ[iB][6] = new TH2F("fM2vsZ_2.5pT3.0","M_{TOF}^{2} vs Z^{2} 2.5<pT<3.0;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",1,-4,4,1,0,10);
330       fM2vsZ[iB][7] = new TH2F("fM2vsZ_3.0pT3.5","M_{TOF}^{2} vs Z^{2} 3.0<pT<3.5;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",1,-4,4,1,0,10);
331       fM2vsZ[iB][8] = new TH2F("fM2vsZ_3.5pT4.0","M_{TOF}^{2} vs Z^{2} 3.5<pT<4.0;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",1,-4,4,1,0,10);
332       fM2vsZ[iB][9] = new TH2F("fM2vsZ_4.0pT4.5","M_{TOF}^{2} vs Z^{2} 4.0<pT<4.5;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",1,-4,4,1,0,10);
333       fM2vsZ[iB][10] = new TH2F("fM2vsZ_0.0pT1.0","M_{TOF}^{2} vs Z^{2} 2.0<pT<2.5;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",1,-4,4,1,0,10);
334       fM2vsZ[iB][11] = new TH2F("fM2vsZ_1.0pT2.0","M_{TOF}^{2} vs Z^{2} 2.5<pT<3.0;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",1,-4,4,1,0,10);
335       fM2vsZ[iB][12] = new TH2F("fM2vsZ_2.0pT3.0","M_{TOF}^{2} vs Z^{2} 3.0<pT<3.5;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",1,-4,4,1,0,10);
336       fM2vsZ[iB][13] = new TH2F("fM2vsZ_3.0pT4.0","M_{TOF}^{2} vs Z^{2} 3.5<pT<4.0;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",1,-4,4,1,0,10);
337       fM2vsZ[iB][14] = new TH2F("fM2vsZ_4.0pT4.5","M_{TOF}^{2} vs Z^{2} 4.0<pT<4.5;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",1,-4,4,1,0,10);
338
339       fM2vsZwithTPC[iB][0] = new TH2F("fM2vsZwithTPC","M_{TOF}^{2} vs Z^{2} Integrated p_{T} withTPCcut;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",1,-4,4,1,0,10);
340       fM2vsZwithTPC[iB][1] = new TH2F("fM2vsZwithTPC_0.3pT0.5","M_{TOF}^{2} vs Z^{2} 0.3<pT<0.5 withTPCcut;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",1,-4,4,1,0,10);
341       fM2vsZwithTPC[iB][2] = new TH2F("fM2vsZwithTPC_0.5pT1.0","M_{TOF}^{2} vs Z^{2} 0.5<pT<1.0 withTPCcut;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",1,-4,4,1,0,10);
342       fM2vsZwithTPC[iB][3] = new TH2F("fM2vsZwithTPC_1.0pT1.5","M_{TOF}^{2} vs Z^{2} 1.0<pT<1.5 withTPCcut;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",1,-4,4,1,0,10);
343       fM2vsZwithTPC[iB][4] = new TH2F("fM2vsZwithTPC_1.5pT2.0","M_{TOF}^{2} vs Z^{2} 1.5<pT<2.0 withTPCcut;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",1,-4,4,1,0,10);
344       fM2vsZwithTPC[iB][5] = new TH2F("fM2vsZwithTPC_2.0pT2.5","M_{TOF}^{2} vs Z^{2} 2.0<pT<2.5 withTPCcut;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",1,-4,4,1,0,10);
345       fM2vsZwithTPC[iB][6] = new TH2F("fM2vsZwithTPC_2.5pT3.0","M_{TOF}^{2} vs Z^{2} 2.5<pT<3.0 withTPCcut;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",1,-4,4,1,0,10);
346       fM2vsZwithTPC[iB][7] = new TH2F("fM2vsZwithTPC_3.0pT3.5","M_{TOF}^{2} vs Z^{2} 3.0<pT<3.5 withTPCcut;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",1,-4,4,1,0,10);
347       fM2vsZwithTPC[iB][8] = new TH2F("fM2vsZwithTPC_3.5pT4.0","M_{TOF}^{2} vs Z^{2} 3.5<pT<4.0 withTPCcut;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",1,-4,4,1,0,10);
348       fM2vsZwithTPC[iB][9] = new TH2F("fM2vsZwithTPC_4.0pT4.5","M_{TOF}^{2} vs Z^{2} 4.0<pT<4.5 withTPCcut;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",1,-4,4,1,0,10);
349       fM2vsZwithTPC[iB][10] = new TH2F("fM2vsZwithTPC_0.0pT1.0","M_{TOF}^{2} vs Z^{2} 2.0<pT<2.5 withTPCcut;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",1,-4,4,1,0,10);
350       fM2vsZwithTPC[iB][11] = new TH2F("fM2vsZwithTPC_1.0pT2.0","M_{TOF}^{2} vs Z^{2} 2.5<pT<3.0 withTPCcut;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",1,-4,4,1,0,10);
351       fM2vsZwithTPC[iB][12] = new TH2F("fM2vsZwithTPC_2.0pT3.0","M_{TOF}^{2} vs Z^{2} 3.0<pT<3.5 withTPCcut;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",1,-4,4,1,0,10);
352       fM2vsZwithTPC[iB][13] = new TH2F("fM2vsZwithTPC_3.0pT4.0","M_{TOF}^{2} vs Z^{2} 3.5<pT<4.0 withTPCcut;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",1,-4,4,1,0,10);
353       fM2vsZwithTPC[iB][14] = new TH2F("fM2vsZwithTPC_4.0pT4.5","M_{TOF}^{2} vs Z^{2} 4.0<pT<4.5 withTPCcut;Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",1,-4,4,1,0,10);
354       
355       for(Int_t i=0;i<9;i++) {
356         fNsigmaTPC[iB][i] = new TH2F(namePart_par_TPC[i],namePart_title_TPC[i],1,0,5,1,-5,5);
357         fNsigmaTPC[iB][i]->GetYaxis()->CenterTitle();
358         fNsigmaTOF[iB][i] = new TH2F(namePart_par_TOF[i],namePart_title_TOF[i],1,0,5,1,-5,5);
359         fNsigmaTOF[iB][i]->GetYaxis()->CenterTitle();
360         hDeDxExp[iB][i] = new TProfile(namePart_par_ProfileTPC[i],namePart_title_ProfileTPC[i],1,0,5,0,1000,"");
361         hBetaExp[iB][i] = new TProfile(namePart_par_ProfileTOF[i],namePart_title_ProfileTOF[i],1,0,5,0.4,1.05,"");
362       }
363       
364       for(Int_t iS=0;iS<18;iS++) {
365         fNsigmaTPCvsP_kTOFtrue[iB][iS] = new TH2F(namePart_par_TPCvsP_kTOFtrue[iS],namePart_title_TPCvsP_kTOFtrue[iS],1,0,5,1,-5,5);
366         fNsigmaTPCvsP_kTOFtrue[iB][iS]->GetYaxis()->CenterTitle();
367       }
368       
369       /*for (Int_t i=0;i<18;i++) fM2vsP[iB][i] = new TH2F(name_par_MvsP[i],name_title_MvsP[i],1,0,10,1,0,10);
370      
371         for (Int_t i=0;i<18;i++) fM2vsP_DCAxyCut[iB][i] = new TH2F(name_par_MvsP_DCAxyCut[i],name_title_MvsP_DCAxyCut[i],1,0,10,1,0,10);*/
372       
373       for (Int_t i=0;i<18;i++) fM2vsP[iB][i] = new TH2F(name_par_MvsP[i],name_title_MvsP[i],1000,0,6,60,0,6);//1250,0,10,80,0,8
374       
375       for (Int_t i=0;i<18;i++) fM2vsP_DCAxyCut[iB][i] = new TH2F(name_par_MvsP_DCAxyCut[i],name_title_MvsP_DCAxyCut[i],1000,0,6,60,0,6);//1250,0,10,80,0,8
376
377     }
378
379     Char_t namefEtaSpecies[18][300];
380     Char_t titlefEtaSpecies[18][300];
381     
382     for(Int_t iS=0;iS<18;iS++) {
383       sprintf(namefEtaSpecies[iS],"fEtaSpecies_kTOF_%s",name[iS]);
384       sprintf(titlefEtaSpecies[iS],"fEtaSpecies_kTOF_%s;|#eta|;p_{T} GeV/c",name[iS]);
385     }
386     
387     for(Int_t iS=0;iS<18;iS++) {
388       fEtaSpecies[iB][iS] = new TH2F(namefEtaSpecies[iS],titlefEtaSpecies[iS],10,0,1,200,0,10);
389     }
390
391     Char_t namefPhiSpecies[18][300];
392     Char_t titlefPhiSpecies[18][300];
393     
394     for(Int_t iS=0;iS<18;iS++) {
395       sprintf(namefPhiSpecies[iS],"fPhiSpecies_kTOF_%s",name[iS]);
396       sprintf(titlefPhiSpecies[iS],"fPhiSpecies_kTOF_%s;#phi (rad.);p_{T} GeV/c",name[iS]);
397     }
398     
399     for(Int_t iS=0;iS<18;iS++) {
400       fPhiSpecies[iB][iS] = new TH2F(namefPhiSpecies[iS],titlefPhiSpecies[iS],90,0,6.3,200,0,10);
401     }
402
403     Float_t binPt[nbin+1];
404     for(Int_t i=0;i<nbin+1;i++) {
405       binPt[i]=0.4+0.1*i;
406     }
407         
408     Char_t par_name_nbin[nbin][30];
409     
410     for(Int_t j=0;j<nbin;j++) {
411       snprintf(par_name_nbin[j],30,"%.1f<Pt<%.1f",binPt[j],binPt[j+1]);
412     }
413     
414     Char_t par_name_nbin_pbin[nbin][30];
415     
416     for(Int_t j=0;j<nbin;j++) {
417       snprintf(par_name_nbin_pbin[j],30,"%.1f<P<%.1f",binPt[j],binPt[j+1]);
418     }
419     
420     Char_t par_name_nbin_pTpcbin[nbin][30];
421     
422     for(Int_t j=0;j<nbin;j++) {
423       snprintf(par_name_nbin_pTpcbin[j],30,"%.1f<PTpc<%.1f",binPt[j],binPt[j+1]);
424     }
425     
426     Char_t nameDCAxy[3][18][nbin][120];
427     Char_t titleDCAxy[3][18][nbin][120];
428     
429     Char_t nameDCAz[3][18][nbin][120];
430     Char_t titleDCAz[3][18][nbin][120];
431     
432     Char_t nameM2CutDCAxy[3][18][nbin][120];
433     Char_t titleM2CutDCAxy[3][18][nbin][120];
434     
435     Char_t nameM2CutGroundDCAxy[3][18][nbin][120];
436     Char_t titleM2CutGroundDCAxy[3][18][nbin][120];
437         
438     Char_t nameM2BkgMism[3][nbin][120];
439     Char_t titleM2BkgMism[3][nbin][120];
440
441     for(Int_t iS=0;iS<18;iS++) {
442       for(Int_t j=0;j<nbin;j++) {
443         snprintf(nameDCAxy[0][iS][j],120,"hDCAxy_%s_%s",name[iS],par_name_nbin[j]);
444         snprintf(titleDCAxy[0][iS][j],120,"hDCAxy_%s_%s;DCA_{xy} (cm)",name[iS],par_name_nbin[j]);
445         
446         snprintf(nameDCAz[0][iS][j],120,"hDCAz_%s_%s",name[iS],par_name_nbin[j]);
447         snprintf(titleDCAz[0][iS][j],120,"hDCAz_%s_%s;DCA_{z} (cm)",name[iS],par_name_nbin[j]);
448         
449         snprintf(nameM2CutDCAxy[0][iS][j],120,"hM2_CutDCAxy_%s_%s",name[iS],par_name_nbin[j]);
450         snprintf(titleM2CutDCAxy[0][iS][j],120,"hM2_CutDCAxy_%s_%s;M^{2}_{TOF} (GeV^{2}/c^{4})",name[iS],par_name_nbin[j]);
451         
452         snprintf(nameM2CutGroundDCAxy[0][iS][j],120,"hM2_GroundCatDCAxy_%s_%s",name[iS],par_name_nbin[j]);
453         snprintf(titleM2CutGroundDCAxy[0][iS][j],120,"hM2_GroundCatDCAxy_%s_%s;M^{2}_{TOF} (GeV^{2}/c^{4})",name[iS],par_name_nbin[j]);
454
455
456         snprintf(nameDCAxy[1][iS][j],120,"hDCAxy_pbin_%s_%s",name[iS],par_name_nbin_pbin[j]);
457         snprintf(titleDCAxy[1][iS][j],120,"hDCAxy_pbin_%s_%s;DCA_{xy} (cm)",name[iS],par_name_nbin_pbin[j]);
458         
459         snprintf(nameDCAz[1][iS][j],120,"hDCAz_pbin_%s_%s",name[iS],par_name_nbin_pbin[j]);
460         snprintf(titleDCAz[1][iS][j],120,"hDCAz_pbin_%s_%s;DCA_{z} (cm)",name[iS],par_name_nbin_pbin[j]);
461         
462         snprintf(nameM2CutDCAxy[1][iS][j],120,"hM2_pbin_CutDCAxy_%s_%s",name[iS],par_name_nbin_pbin[j]);
463         snprintf(titleM2CutDCAxy[1][iS][j],120,"hM2_pbin_CutDCAxy_%s_%s;M^{2}_{TOF} (GeV^{2}/c^{4})",name[iS],par_name_nbin_pbin[j]);
464         
465         snprintf(nameM2CutGroundDCAxy[1][iS][j],120,"hM2_pbin_GroundCatDCAxy_%s_%s",name[iS],par_name_nbin_pbin[j]);
466         snprintf(titleM2CutGroundDCAxy[1][iS][j],120,"hM2_pbin_GroundCatDCAxy_%s_%s;M^{2}_{TOF} (GeV^{2}/c^{4})",name[iS],par_name_nbin_pbin[j]);
467       
468
469         snprintf(nameDCAxy[2][iS][j],120,"hDCAxy_pTpcbin_%s_%s",name[iS],par_name_nbin_pTpcbin[j]);
470         snprintf(titleDCAxy[2][iS][j],120,"hDCAxy_pbin_%s_%s;DCA_{xy} (cm)",name[iS],par_name_nbin_pTpcbin[j]);
471         
472         snprintf(nameDCAz[2][iS][j],120,"hDCAz_pTpcbin_%s_%s",name[iS],par_name_nbin_pTpcbin[j]);
473         snprintf(titleDCAz[2][iS][j],120,"hDCAz_pTpcbin_%s_%s;DCA_{z} (cm)",name[iS],par_name_nbin_pTpcbin[j]);
474         
475         snprintf(nameM2CutDCAxy[2][iS][j],120,"hM2_pTpcbin_CutDCAxy_%s_%s",name[iS],par_name_nbin_pTpcbin[j]);
476         snprintf(titleM2CutDCAxy[2][iS][j],120,"hM2_pTpcbin_CutDCAxy_%s_%s;M^{2}_{TOF} (GeV^{2}/c^{4})",name[iS],par_name_nbin_pTpcbin[j]);
477         
478         snprintf(nameM2CutGroundDCAxy[2][iS][j],120,"hM2_pTpcbin_GroundCatDCAxy_%s_%s",name[iS],par_name_nbin_pTpcbin[j]);
479         snprintf(titleM2CutGroundDCAxy[2][iS][j],120,"hM2_pTpcbin_GroundCatDCAxy_%s_%s;M^{2}_{TOF} (GeV^{2}/c^{4})",name[iS],par_name_nbin_pTpcbin[j]);
480       }
481     }
482     
483     for(Int_t j=0;j<nbin;j++) {
484       snprintf(nameM2BkgMism[0][j],120,"hM2_BkgMism_%s",par_name_nbin[j]);
485       snprintf(titleM2BkgMism[0][j],120,"hM2_BkgMism_%s;M^{2}_{TOF} (GeV^{2}/c^{4})",par_name_nbin[j]);
486
487       snprintf(nameM2BkgMism[1][j],120,"hM2_pbin_BkgMism_%s",par_name_nbin_pbin[j]);
488       snprintf(titleM2BkgMism[1][j],120,"hM2_pbin_BkgMism_%s;M^{2}_{TOF} (GeV^{2}/c^{4})",par_name_nbin_pbin[j]);
489
490       snprintf(nameM2BkgMism[2][j],120,"hM2_pTpcbin_BkgMism_%s",par_name_nbin_pTpcbin[j]);
491       snprintf(titleM2BkgMism[2][j],120,"hM2_pTpcbin_BkgMism_%s;M^{2}_{TOF} (GeV^{2}/c^{4})",par_name_nbin_pTpcbin[j]);
492     }
493
494     for(Int_t iS=0;iS<18;iS++) {
495       for(Int_t j=0;j<nbin;j++) {
496         hDCAxy[iB][iS][j] = new TH1D(nameDCAxy[0][iS][j],titleDCAxy[0][iS][j],875,-3.5,3.5);//125 bins
497         hDCAxy[iB][iS][j]->GetXaxis()->CenterTitle();
498         hDCAz[iB][iS][j] = new TH1D(nameDCAz[0][iS][j],titleDCAz[0][iS][j],875,-3.5,3.5);//125 bins
499         hDCAz[iB][iS][j]->GetXaxis()->CenterTitle();
500         
501         hDCAxy_pbin[iB][iS][j] = new TH1D(nameDCAxy[1][iS][j],titleDCAxy[1][iS][j],875,-3.5,3.5);//125 bins
502         hDCAxy_pbin[iB][iS][j]->GetXaxis()->CenterTitle();
503         hDCAz_pbin[iB][iS][j] = new TH1D(nameDCAz[1][iS][j],titleDCAz[1][iS][j],875,-3.5,3.5);//125 bins
504         hDCAz_pbin[iB][iS][j]->GetXaxis()->CenterTitle();
505         
506         hDCAxy_pTpcbin[iB][iS][j] = new TH1D(nameDCAxy[2][iS][j],titleDCAxy[2][iS][j],875,-3.5,3.5);//125 bins
507         hDCAxy_pTpcbin[iB][iS][j]->GetXaxis()->CenterTitle();
508         hDCAz_pTpcbin[iB][iS][j] = new TH1D(nameDCAz[2][iS][j],titleDCAz[2][iS][j],875,-3.5,3.5);//125 bins
509         hDCAz_pTpcbin[iB][iS][j]->GetXaxis()->CenterTitle();
510       }
511     }
512
513     for(Int_t iBinMom=0;iBinMom<3;iBinMom++) {
514       for(Int_t j=0;j<nbin;j++) {
515         hM2BkgMism[iB][iBinMom][j]=new TH1D(nameM2BkgMism[iBinMom][j],titleM2BkgMism[iBinMom][j],500,0,6);//125 bins
516         hM2BkgMism[iB][iBinMom][j]->GetXaxis()->CenterTitle();
517       }
518     }
519     
520     const Int_t BinM2pT[9]={1,1,600,250,500,500,1000,400,600};
521     const Float_t RangeM2min[9]={0.0,0.0,-0.1,0.0,0.0,0.0,0.0,0.0,0.0};
522     const Float_t RangeM2max[9]={1.0,1.0,0.5,2.0,4.0,6.0,12.0,4.0,6.0};
523     
524     
525
526     for(Int_t iSp=0;iSp<9;iSp++) {
527       for(Int_t j=0;j<nbin;j++) {
528         hM2CutDCAxy[iB][iSp][j] = new TH1D(nameM2CutDCAxy[0][iSp][j],titleM2CutDCAxy[0][iSp][j],BinM2pT[iSp],RangeM2min[iSp],RangeM2max[iSp]);
529         hM2CutGroundDCAxy[iB][iSp][j] = new TH1D(nameM2CutGroundDCAxy[0][iSp][j],titleM2CutGroundDCAxy[0][iSp][j],BinM2pT[iSp],RangeM2min[iSp],RangeM2max[iSp]);
530         hM2CutDCAxy[iB][iSp+9][j] = new TH1D(nameM2CutDCAxy[0][iSp+9][j],titleM2CutDCAxy[0][iSp+9][j],BinM2pT[iSp],RangeM2min[iSp],RangeM2max[iSp]);
531         hM2CutGroundDCAxy[iB][iSp+9][j] = new TH1D(nameM2CutGroundDCAxy[0][iSp+9][j],titleM2CutGroundDCAxy[0][iSp+9][j],BinM2pT[iSp],RangeM2min[iSp],RangeM2max[iSp]);
532         
533         hM2CutDCAxy_pbin[iB][iSp][j] = new TH1D(nameM2CutDCAxy[1][iSp][j],titleM2CutDCAxy[1][iSp][j],BinM2pT[iSp],RangeM2min[iSp],RangeM2max[iSp]);
534         hM2CutGroundDCAxy_pbin[iB][iSp][j] = new TH1D(nameM2CutGroundDCAxy[1][iSp][j],titleM2CutGroundDCAxy[1][iSp][j],BinM2pT[iSp],RangeM2min[iSp],RangeM2max[iSp]);
535         hM2CutDCAxy_pbin[iB][iSp+9][j] = new TH1D(nameM2CutDCAxy[1][iSp+9][j],titleM2CutDCAxy[1][iSp+9][j],BinM2pT[iSp],RangeM2min[iSp],RangeM2max[iSp]);
536         hM2CutGroundDCAxy_pbin[iB][iSp+9][j] = new TH1D(nameM2CutGroundDCAxy[1][iSp+9][j],titleM2CutGroundDCAxy[1][iSp+9][j],BinM2pT[iSp],RangeM2min[iSp],RangeM2max[iSp]);
537         
538         hM2CutDCAxy_pTpcbin[iB][iSp][j] = new TH1D(nameM2CutDCAxy[2][iSp][j],titleM2CutDCAxy[2][iSp][j],BinM2pT[iSp],RangeM2min[iSp],RangeM2max[iSp]);
539         hM2CutGroundDCAxy_pTpcbin[iB][iSp][j] = new TH1D(nameM2CutGroundDCAxy[2][iSp][j],titleM2CutGroundDCAxy[2][iSp][j],BinM2pT[iSp],RangeM2min[iSp],RangeM2max[iSp]);
540         hM2CutDCAxy_pTpcbin[iB][iSp+9][j] = new TH1D(nameM2CutDCAxy[2][iSp+9][j],titleM2CutDCAxy[2][iSp+9][j],BinM2pT[iSp],RangeM2min[iSp],RangeM2max[iSp]);
541         hM2CutGroundDCAxy_pTpcbin[iB][iSp+9][j] = new TH1D(nameM2CutGroundDCAxy[2][iSp+9][j],titleM2CutGroundDCAxy[2][iSp+9][j],BinM2pT[iSp],RangeM2min[iSp],RangeM2max[iSp]);
542       }
543     }
544     
545     fList1[iB]->Add(hNeventSelected[iB]);
546     fList1[iB]->Add(hNevent[iB]);
547     fList1[iB]->Add(hZvertex[iB]);
548     fList1[iB]->Add(hNminTPCcl[iB]);
549     fList1[iB]->Add(hTOFSignalPion[iB]);
550     for(Int_t i=0;i<2;i++)fList1[iB]->Add(hEtaDistribution[iB][i]);
551     for(Int_t i=0;i<6;i++) fList1[iB]->Add(hPhi[iB][i]);
552     for(Int_t i=0;i<6;i++) fList1[iB]->Add(fEtaPhi[iB][i]);
553     for(Int_t iS=0;iS<18;iS++) fList1[iB]->Add(fEtaSpecies[iB][iS]);
554     for(Int_t iS=0;iS<18;iS++) fList1[iB]->Add(fPhiSpecies[iB][iS]);
555
556     for(Int_t iS=0;iS<18;iS++) fList1[iB]->Add(fNsigmaTPCvsP_kTOFtrue[iB][iS]);
557     
558     for(Int_t i=0;i<3;i++) fList1[iB]->Add(fdEdxVSp[iB][i]);
559     for(Int_t i=0;i<9;i++) fList1[iB]->Add(hDeDxExp[iB][i]);
560     fList1[iB]->Add(fBetaTofVSp[iB]);
561     for(Int_t i=0;i<9;i++) fList1[iB]->Add(hBetaExp[iB][i]);
562     for(Int_t i=0;i<9;i++) fList1[iB]->Add(fNsigmaTPC[iB][i]);
563     for(Int_t i=0;i<9;i++) fList1[iB]->Add(fNsigmaTOF[iB][i]);
564     
565     for(Int_t i=0;i<15;i++) fList1[iB]->Add(fM2vsZ[iB][i]);
566     for(Int_t i=0;i<15;i++) fList1[iB]->Add(fM2vsZwithTPC[iB][i]);
567     
568     for(Int_t i=0;i<3;i++) fList1[iB]->Add(fM2vsP_NoTpcCut[iB][i]);
569     for(Int_t i=3;i<6;i++) {//for(Int_t i=0;i<18;i++)
570       fList1[iB]->Add(fM2vsP[iB][i]);
571       fList1[iB]->Add(fM2vsP[iB][i+9]);//via-^
572     }
573
574     for(Int_t i=0;i<3;i++) fList1[iB]->Add(fM2vsP_NoTpcCut_DCAxyCut[iB][i]);
575     for(Int_t i=3;i<6;i++) {//for(Int_t i=0;i<18;i++)
576       fList1[iB]->Add(fM2vsP_DCAxyCut[iB][i]);
577       fList1[iB]->Add(fM2vsP_DCAxyCut[iB][i+9]);//via-^
578     }    
579
580     if(MomType & 1) {
581       for(Int_t iSp=3;iSp<6;iSp++) {//for(Int_t iSp=2;iSp<9;iSp++)
582         for(Int_t j=0;j<nbin;j++) {
583           fList1[iB]->Add(hDCAxy[iB][iSp][j]);
584           fList1[iB]->Add(hDCAz[iB][iSp][j]);
585           fList1[iB]->Add(hM2CutDCAxy[iB][iSp][j]);
586           fList1[iB]->Add(hM2CutGroundDCAxy[iB][iSp][j]);
587           fList1[iB]->Add(hDCAxy[iB][iSp+9][j]);
588           fList1[iB]->Add(hDCAz[iB][iSp+9][j]);
589           fList1[iB]->Add(hM2CutDCAxy[iB][iSp+9][j]);
590           fList1[iB]->Add(hM2CutGroundDCAxy[iB][iSp+9][j]);
591         }
592       }
593       for(Int_t j=0;j<nbin;j++) {//3he
594         
595         fList1[iB]->Add(hDCAxy[iB][7][j]);
596         fList1[iB]->Add(hDCAz[iB][7][j]);
597         fList1[iB]->Add(hM2CutDCAxy[iB][7][j]);
598         fList1[iB]->Add(hM2CutGroundDCAxy[iB][7][j]);
599         fList1[iB]->Add(hDCAxy[iB][7+9][j]);
600         fList1[iB]->Add(hDCAz[iB][7+9][j]);
601         fList1[iB]->Add(hM2CutDCAxy[iB][7+9][j]);
602         fList1[iB]->Add(hM2CutGroundDCAxy[iB][7+9][j]);
603
604       }
605     }
606     if(MomType & 2) {
607       for(Int_t iSp=3;iSp<6;iSp++) {//for(Int_t iSp=2;iSp<9;iSp++)
608         for(Int_t j=0;j<nbin;j++) {
609           fList1[iB]->Add(hDCAxy_pbin[iB][iSp][j]);
610           fList1[iB]->Add(hDCAz_pbin[iB][iSp][j]);
611           fList1[iB]->Add(hM2CutDCAxy_pbin[iB][iSp][j]);
612           fList1[iB]->Add(hM2CutGroundDCAxy_pbin[iB][iSp][j]);
613           fList1[iB]->Add(hDCAxy_pbin[iB][iSp+9][j]);
614           fList1[iB]->Add(hDCAz_pbin[iB][iSp+9][j]);
615           fList1[iB]->Add(hM2CutDCAxy_pbin[iB][iSp+9][j]);
616           fList1[iB]->Add(hM2CutGroundDCAxy_pbin[iB][iSp+9][j]);
617         }
618       }
619       for(Int_t j=0;j<nbin;j++) {//3he
620           fList1[iB]->Add(hDCAxy_pbin[iB][7][j]);
621           fList1[iB]->Add(hDCAz_pbin[iB][7][j]);
622           fList1[iB]->Add(hM2CutDCAxy_pbin[iB][7][j]);
623           fList1[iB]->Add(hM2CutGroundDCAxy_pbin[iB][7][j]);
624           fList1[iB]->Add(hDCAxy_pbin[iB][7+9][j]);
625           fList1[iB]->Add(hDCAz_pbin[iB][7+9][j]);
626           fList1[iB]->Add(hM2CutDCAxy_pbin[iB][7+9][j]);
627           fList1[iB]->Add(hM2CutGroundDCAxy_pbin[iB][7+9][j]);
628       }
629     }
630     if(MomType & 4) {
631       for(Int_t iSp=3;iSp<6;iSp++) {//for(Int_t iSp=2;iSp<9;iSp++)
632         for(Int_t j=0;j<nbin;j++) {
633           fList1[iB]->Add(hDCAxy_pTpcbin[iB][iSp][j]);
634           fList1[iB]->Add(hDCAz_pTpcbin[iB][iSp][j]);
635           fList1[iB]->Add(hM2CutDCAxy_pTpcbin[iB][iSp][j]);
636           fList1[iB]->Add(hM2CutGroundDCAxy_pTpcbin[iB][iSp][j]);
637           fList1[iB]->Add(hDCAxy_pTpcbin[iB][iSp+9][j]);
638           fList1[iB]->Add(hDCAz_pTpcbin[iB][iSp+9][j]);
639           fList1[iB]->Add(hM2CutDCAxy_pTpcbin[iB][iSp+9][j]);
640           fList1[iB]->Add(hM2CutGroundDCAxy_pTpcbin[iB][iSp+9][j]);
641         }
642       }
643       for(Int_t j=0;j<nbin;j++) {//3he
644           fList1[iB]->Add(hDCAxy_pTpcbin[iB][7][j]);
645           fList1[iB]->Add(hDCAz_pTpcbin[iB][7][j]);
646           fList1[iB]->Add(hM2CutDCAxy_pTpcbin[iB][7][j]);
647           fList1[iB]->Add(hM2CutGroundDCAxy_pTpcbin[iB][7][j]);
648           fList1[iB]->Add(hDCAxy_pTpcbin[iB][7+9][j]);
649           fList1[iB]->Add(hDCAz_pTpcbin[iB][7+9][j]);
650           fList1[iB]->Add(hM2CutDCAxy_pTpcbin[iB][7+9][j]);
651           fList1[iB]->Add(hM2CutGroundDCAxy_pTpcbin[iB][7+9][j]);
652       }
653     }
654     
655     if(MomType & 1) {
656       for(Int_t j=0;j<nbin;j++) {
657         fList1[iB]->Add(hM2BkgMism[iB][0][j]);
658       }
659     }
660     if(MomType & 2) {
661       for(Int_t j=0;j<nbin;j++) {
662         fList1[iB]->Add(hM2BkgMism[iB][1][j]);
663       }
664     }
665     if(MomType & 4) {
666       for(Int_t j=0;j<nbin;j++) {
667         fList1[iB]->Add(hM2BkgMism[iB][2][j]);
668       }
669     }
670
671     // Post output data.
672     PostData(1, fList1[0]);
673     PostData(2, fList1[1]);
674   }//close the iB loop
675 }
676 //______________________________________________________________________________
677 void AliAnalysisNucleiMass::UserExec(Option_t *) 
678 {
679   // Main loop
680   // Called for each event
681   
682   fAOD = dynamic_cast<AliAODEvent*>(InputEvent());
683   fESD = dynamic_cast<AliESDEvent*>(InputEvent());
684   if(!fAOD && !fESD){
685     Printf("%s:%d AODEvent and ESDEvent not found in Input Manager",(char*)__FILE__,__LINE__);
686     return;
687   }
688   
689   if(fESD) fEvent = fESD;
690   else fEvent = fAOD;
691
692   AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
693   AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
694   fPIDResponse=inputHandler->GetPIDResponse(); // data member di tipo "const AliPIDResponse *fPIDResponse;"
695
696   //Centrality
697   Float_t v0Centr  = -10.;
698   //Float_t trkCentr  = -10.;
699   AliCentrality *centrality = fEvent->GetCentrality();
700   if (centrality){
701     v0Centr  = centrality->GetCentralityPercentile("V0M"); // VZERO
702     //trkCentr = centrality->GetCentralityPercentile("TRK"); // TPC
703   }
704   
705   Double_t fBfield=fEvent->GetMagneticField();
706   if(fBfield<0.0) iBconf=0;//B--
707   else iBconf=1;//B++
708
709   hNeventSelected[iBconf]->Fill(v0Centr);//selected events
710
711   //const AliAODVertex* vtxEVENT = (AliAODVertex*) fEvent->GetPrimaryVertex();
712   
713   const AliVVertex* vtxEVENT = fEvent->GetPrimaryVertex();
714
715   Float_t zvtx = 10000.0;
716
717   if(vtxEVENT->GetNContributors()>0)
718     zvtx = vtxEVENT->GetZ();
719   
720    hZvertex[iBconf]->Fill(zvtx);
721     
722   if(TMath::Abs(zvtx) < 10.0){ // consistency cut on centrality selection AND d(zPrimaryVertez;NominalPointInteraction)<10cm
723     
724     //Bool_t isTrack=1;
725     
726     Int_t nTracks = fEvent->GetNumberOfTracks();
727     
728     if(v0Centr>=fCentrality[0] && v0Centr<=fCentrality[1]) {//window cut centrality open
729       
730       hNevent[iBconf]->Fill(v0Centr);//analyzed events
731                   
732       for(Int_t iT = 0; iT < nTracks; iT++) { // loop on the tracks
733         AliVTrack* track = (AliVTrack *) fEvent->GetTrack(iT);
734         
735         if (!track){
736           continue;
737         }
738         
739         Bool_t trkFlag = 0;
740         trkFlag = ((AliAODTrack *) track)->TestFilterBit(FilterBit);
741         //TestFilterBit(16) -- Standard Cuts with very loose DCA: GetStandardITSTPCTrackCuts2011(kFALSE) && SetMaxDCAToVertexXY(2.4) && SetMaxDCAToVertexZ(3.2) && SetDCaToVertex2D(kTRUE)
742         //TestFilterBit(32) (STARDARD) -- Standard Cuts with very tight DCA cut ( 7sigma^primaries: 7*(0.0015+0.0050/pt^1.1) ) : GetStandardITSTPCTrackCuts2011(). 
743                 
744         Int_t NTpcCls=track->GetTPCNcls();
745         if(NTpcCls>NminTPCcluster) kTPC=kTRUE;
746         else kTPC=kFALSE;
747         
748         Float_t etaAbs = TMath::Abs(track->Eta());
749                 
750         //if(etaAbs<EtaLimit[0] && etaAbs>EtaLimit[1]) continue;
751       
752         if(etaAbs<EtaLimit[0]) continue;
753         if(etaAbs>EtaLimit[1]) continue;
754
755         if ((track->Pt() < 0.2) || !trkFlag || !kTPC){
756           continue;
757         }       
758         
759         Float_t phi= track->Phi();
760         hPhi[iBconf][0]->Fill(phi);
761         fEtaPhi[iBconf][0]->Fill(etaAbs,phi);
762
763         Int_t iTRDtemp=1;
764         if(kTRDana) {//TRD analysis
765           if((track->GetStatus() & AliVTrack::kTRDin) && (track->GetStatus() & AliVTrack::kTRDout)) {
766             iTRDtemp=4;//YES TRD
767           }
768           else if (!(track->GetStatus() & AliVTrack::kTRDin) && !(track->GetStatus() & AliVTrack::kTRDout)){
769             iTRDtemp=2;//NO TRD
770           }
771         }
772         else {//NO TRD analysis
773           iTRDtemp=1;
774         }
775         
776         if(track->GetStatus() & AliVTrack::kTRDin) {
777           hPhi[iBconf][1]->Fill(phi);
778           fEtaPhi[iBconf][1]->Fill(etaAbs,phi);
779         }
780         
781         if(track->GetStatus() & AliVTrack::kTRDout) {
782           hPhi[iBconf][2]->Fill(phi);
783           fEtaPhi[iBconf][2]->Fill(etaAbs,phi);
784         }
785         if((track->GetStatus() & AliVTrack::kTRDin) && (track->GetStatus() & AliVTrack::kTRDout)) {
786             //YES TRD
787             hPhi[iBconf][3]->Fill(phi);
788             fEtaPhi[iBconf][3]->Fill(etaAbs,phi);
789         }
790         else if (!(track->GetStatus() & AliVTrack::kTRDin) && !(track->GetStatus() & AliVTrack::kTRDout)){
791             //NO TRD
792             hPhi[iBconf][4]->Fill(phi);
793             fEtaPhi[iBconf][4]->Fill(etaAbs,phi);
794         }       
795
796         hEtaDistribution[iBconf][0]->Fill(etaAbs);
797
798         if(!(iTRDtemp & iTRD)) {
799           continue;
800         }
801         
802         hNminTPCcl[iBconf]->Fill(NTpcCls);
803
804         Double_t b[2] = {-99., -99.};
805         Double_t bCov[3] = {-99., -99., -99.};
806         if (!track->PropagateToDCA(fEvent->GetPrimaryVertex(), fEvent->GetMagneticField(), 100., b, bCov))
807           continue;
808         
809         //Float_t etaAbs = TMath::Abs(track->Eta());
810         Float_t charge = (Float_t)track->Charge();
811         Float_t p = track->P();
812         Float_t pt = track->Pt();
813         Float_t dedx = track->GetTPCsignal();
814         Float_t tof  = track->GetTOFsignal()-fPIDResponse->GetTOFResponse().GetStartTime(p);
815         Float_t pTPC = track->GetTPCmomentum();
816         Float_t beta = 0.0;
817         Float_t M2 = 1000.0;
818         Float_t M = 1000.0;
819         Float_t Z2 = 1000.0;
820         Float_t DCAxy = b[0];
821         Float_t DCAz = b[1];
822         
823         hEtaDistribution[iBconf][1]->Fill(etaAbs);
824
825         hPhi[iBconf][5]->Fill(phi);
826         fEtaPhi[iBconf][5]->Fill(etaAbs,phi);
827
828         if(TMath::Abs(DCAz)>DCAzCUT)//CUT ON DCAz
829           continue;
830         
831         Bool_t kTpcPure;
832         kTpcPure = track->GetTPCsignal()>10;
833         if(kTpcPure==kFALSE) continue;
834         
835         kTOF = (track->GetStatus() & AliVTrack::kTOFout) && (track->GetStatus() & AliVTrack::kTIME);
836
837         Float_t nsigmaTPC[9];
838         Float_t nsigmaTOF[9];
839         
840         Double_t expdedx[9];
841         
842         for(Int_t iS=0;iS < 9;iS++){ //TPC expected signal
843           expdedx[iS] = fPIDResponse->GetTPCResponse().GetExpectedSignal(track, (AliPID::EParticleType) iS, AliTPCPIDResponse::kdEdxDefault, kTRUE);
844         }
845         
846         for(Int_t iS=0;iS < 9;iS++){
847           nsigmaTPC[iS] = fPIDResponse->NumberOfSigmasTPC(track,(AliPID::EParticleType) iS);
848           fNsigmaTPC[iBconf][iS]->Fill(pt,nsigmaTPC[iS]);
849           hDeDxExp[iBconf][iS]->Fill(pTPC,expdedx[iS]);
850         }
851         fdEdxVSp[iBconf][0]->Fill(pTPC,dedx);
852         if(charge>0) fdEdxVSp[iBconf][1]->Fill(pTPC,dedx);
853         else fdEdxVSp[iBconf][2]->Fill(pTPC,dedx);
854         
855         Float_t massOverZ[9] = {0.000511,0.105658,0.139570,0.493677,0.938272,1.877837,2.817402,1.408701,1.877837};
856         
857         Double_t exptimes[9]; // TOF expected times
858         track->GetIntegratedTimes(exptimes);
859         exptimes[5] = exptimes[0] / p * massOverZ[5] * TMath::Sqrt(1+p*p/massOverZ[5]/massOverZ[5]);
860         exptimes[6] = exptimes[0] / p * massOverZ[6] * TMath::Sqrt(1+p*p/massOverZ[6]/massOverZ[6]);
861         exptimes[7] = exptimes[0] / p * massOverZ[7] * TMath::Sqrt(1+p*p/massOverZ[7]/massOverZ[7]);
862         exptimes[8] = exptimes[0] / p * massOverZ[8] * TMath::Sqrt(1+p*p/massOverZ[8]/massOverZ[8]);
863         
864         beta=exptimes[0];//expected times of the electron (it will be diveded for the T.o.f.)
865         
866         if(kTOF) {
867           for(Int_t iS=0;iS < 9;iS++){
868             nsigmaTOF[iS] = fPIDResponse->NumberOfSigmasTOF(track,(AliPID::EParticleType) iS);
869             fNsigmaTOF[iBconf][iS]->Fill(pt,nsigmaTOF[iS]);
870             hBetaExp[iBconf][iS]->Fill(p,beta/exptimes[iS]);
871           }
872           if(pt>0.9 && pt<1.0) hTOFSignalPion[iBconf]->Fill(tof-exptimes[2]);
873           beta=beta/tof;
874           fBetaTofVSp[iBconf]->Fill(p,beta);
875         }
876         
877         Int_t stdFlagPid[9] = {1,2,4,8,16,32,64,128,256};//e,#mu,#pi,K,p,d,t,3He,4He
878         Int_t FlagPid = 0;
879
880         Float_t binPt[nbin+1];
881         for(Int_t i=0;i<nbin+1;i++) {
882           binPt[i]=0.4+i*0.1;
883         }
884         
885         //M2 background distribution from mismatch (START):
886
887         //Hit channel in the TOF: 
888         Int_t channel = (Int_t)(4334.09-4758.36*etaAbs-1989.71*etaAbs*etaAbs+1957.62*etaAbs*etaAbs*etaAbs);
889         
890         // get distance
891         channel = channel % 8736;
892         Float_t distIP = hChDist->GetBinContent(channel);
893         
894         // generate random time
895         Float_t timeRandom = hmism->GetRandom() + distIP*3.35655419905265973e+00; 
896         Float_t betaRandom = 1.0;
897         Float_t M2Random = 1000.0;
898         
899         if(kTOF) {
900           betaRandom=exptimes[0];
901           if(timeRandom!=0.0)betaRandom=betaRandom/timeRandom;
902           M2Random = (p*p*(1-betaRandom*betaRandom))/(betaRandom*betaRandom);
903           if(MomType & 1) {
904             for(Int_t j=0;j<nbin;j++) {
905               if(pt>binPt[j] && pt<binPt[j+1]) {
906                 hM2BkgMism[iBconf][0][j]->Fill(M2Random);
907                 break;
908               }
909             }
910           }
911           if(MomType & 2) {
912             for(Int_t j=0;j<nbin;j++) {
913               if(p>binPt[j] && p<binPt[j+1]) {
914                 hM2BkgMism[iBconf][1][j]->Fill(M2Random);
915                 break;
916               }
917               }
918           }
919           if(MomType & 4) {
920             for(Int_t j=0;j<nbin;j++) {
921               if(pTPC>binPt[j] && pTPC<binPt[j+1]) {
922                 hM2BkgMism[iBconf][2][j]->Fill(M2Random);
923                 break;
924               }
925             }     
926           }
927         }               
928         //M2 background distribution from mismatch (FINISH).
929
930         Float_t binCutPt[10] = {0.3,0.5,1.0,1.5,2.0,2.5,3.0,3.5,4.0,4.5};
931
932         Float_t binCutLargePt[6] = {0.0,1.0,2.0,3.0,4.0,5.0};
933
934         if(kTOF) {
935           
936           M2 = (p*p*(1-beta*beta))/(beta*beta);
937           
938           fM2vsP_NoTpcCut[iBconf][0]->Fill(M2,p);
939           if(TMath::Abs(DCAxy)<DCAxyCUT) fM2vsP_NoTpcCut_DCAxyCut[iBconf][0]->Fill(M2,p);
940           
941           if(M2>0.0) {
942             M=TMath::Sqrt(M2);
943             Z2 = TMath::Power(dedx/fPIDResponse->GetTPCResponse().GetExpectedSignal(pTPC*massOverZ[4]/M, AliPID::kProton),0.862);
944             fM2vsZ[iBconf][0]->Fill(charge*TMath::Sqrt(Z2),M2);
945             
946             for(Int_t i=0;i<9;i++) {
947               if(pt>binCutPt[i] && pt<binCutPt[i+1]){
948                 fM2vsZ[iBconf][i+1]->Fill(charge*TMath::Sqrt(Z2),M2);
949                 break;
950               }
951             }
952             for(Int_t i=0;i<5;i++) {
953               if(pt>binCutLargePt[i] && pt<binCutLargePt[i+1]){
954                 fM2vsZ[iBconf][10+i]->Fill(charge*TMath::Sqrt(Z2),M2);
955                 break;          
956               }       
957             }
958           }
959           
960           if(charge>0) {
961             fM2vsP_NoTpcCut[iBconf][1]->Fill(M2,p);
962             if(TMath::Abs(DCAxy)<DCAxyCUT) fM2vsP_NoTpcCut_DCAxyCut[iBconf][1]->Fill(M2,p);
963             for(Int_t iS=0;iS<9;iS++){
964               fNsigmaTPCvsP_kTOFtrue[iBconf][iS]->Fill(p,nsigmaTPC[iS]);
965             }
966           }
967           else {//else charge<0
968             fM2vsP_NoTpcCut[iBconf][2]->Fill(M2,p);
969             if(TMath::Abs(DCAxy)<DCAxyCUT) fM2vsP_NoTpcCut_DCAxyCut[iBconf][2]->Fill(M2,p);
970             
971             for(Int_t iS=0;iS < 9;iS++){
972               fNsigmaTPCvsP_kTOFtrue[iBconf][iS+9]->Fill(p,nsigmaTPC[iS]);
973             }
974           }
975           
976           for(Int_t iS=0;iS<9;iS++) {
977             if(TMath::Abs(nsigmaTPC[iS])<NsigmaTPCCut) {
978               FlagPid += ((Int_t)TMath::Power(2,iS));
979             }
980           }
981                  
982           if(M2>0.0) {
983             for(Int_t iS=0;iS<9;iS++) {
984               if(FlagPid & stdFlagPid[iS]) {
985                 fM2vsZwithTPC[iBconf][0]->Fill(charge*TMath::Sqrt(Z2),M2);
986                 for(Int_t i=0;i<9;i++) {
987                   if(pt>binCutPt[i] && pt<binCutPt[i+1]) {
988                     fM2vsZwithTPC[iBconf][i+1]->Fill(charge*TMath::Sqrt(Z2),M2);
989                     break;
990                   }
991                 }
992                 for(Int_t i=0;i<5;i++) {
993                   if(pt>binCutLargePt[i] && pt<binCutLargePt[i+1]){
994                     fM2vsZwithTPC[iBconf][10+i]->Fill(charge*TMath::Sqrt(Z2),M2);
995                     break;              
996                   }           
997                 }
998               }
999             }
1000           }       
1001           
1002           for(Int_t iS=0;iS<9;iS++) {
1003             if(FlagPid & stdFlagPid[iS] || !kTPCcut) {
1004               if(charge>0) {
1005                 fEtaSpecies[iBconf][iS]->Fill(etaAbs,pt);
1006                 fPhiSpecies[iBconf][iS]->Fill(phi,pt);
1007                 fM2vsP[iBconf][iS]->Fill(M2,p);
1008                 if(TMath::Abs(DCAxy)<DCAxyCUT) {
1009                   fM2vsP_DCAxyCut[iBconf][iS]->Fill(M2,p);
1010                 }
1011                 if(MomType & 1) {
1012                   for(Int_t j=0;j<nbin;j++) {
1013                     if(pt>binPt[j] && pt<binPt[j+1]) {
1014                       hDCAxy[iBconf][iS][j]->Fill(DCAxy);
1015                       hDCAxy[iBconf][iS][j]->Fill(-DCAxy);
1016                       hDCAz[iBconf][iS][j]->Fill(DCAz);
1017                       hDCAz[iBconf][iS][j]->Fill(-DCAz);
1018                       if(TMath::Abs(DCAxy)<DCAxyCUT) {
1019                         hM2CutDCAxy[iBconf][iS][j]->Fill(M2);
1020                       }
1021                       if(TMath::Abs(DCAxy+0.5)<DCAxyCUT) hM2CutGroundDCAxy[iBconf][iS][j]->Fill(M2);
1022                       break;
1023                     }
1024                   }
1025                 }
1026                 if(MomType & 2) {
1027                   for(Int_t j=0;j<nbin;j++) {
1028                     if(p>binPt[j] && p<binPt[j+1]) {
1029                       hDCAxy_pbin[iBconf][iS][j]->Fill(DCAxy);
1030                       hDCAxy_pbin[iBconf][iS][j]->Fill(-DCAxy);
1031                       hDCAz_pbin[iBconf][iS][j]->Fill(DCAz);
1032                       hDCAz_pbin[iBconf][iS][j]->Fill(-DCAz);
1033                       if(TMath::Abs(DCAxy)<DCAxyCUT) {
1034                         hM2CutDCAxy_pbin[iBconf][iS][j]->Fill(M2);
1035                       }
1036                       if(TMath::Abs(DCAxy+0.5)<DCAxyCUT) hM2CutGroundDCAxy_pbin[iBconf][iS][j]->Fill(M2);
1037                       break;
1038                     }
1039                   }
1040                 }
1041                 if(MomType & 4) {
1042                   for(Int_t j=0;j<nbin;j++) {
1043                     if(pTPC>binPt[j] && pTPC<binPt[j+1]) {
1044                       hDCAxy_pTpcbin[iBconf][iS][j]->Fill(DCAxy);
1045                       hDCAxy_pTpcbin[iBconf][iS][j]->Fill(-DCAxy);
1046                       hDCAz_pTpcbin[iBconf][iS][j]->Fill(DCAz);
1047                       hDCAz_pTpcbin[iBconf][iS][j]->Fill(-DCAz);
1048                       if(TMath::Abs(DCAxy)<DCAxyCUT) {
1049                         hM2CutDCAxy_pTpcbin[iBconf][iS][j]->Fill(M2);
1050                       }
1051                       if(TMath::Abs(DCAxy+0.5)<DCAxyCUT) hM2CutGroundDCAxy_pTpcbin[iBconf][iS][j]->Fill(M2);
1052                       break;
1053                     }
1054                   }
1055                 }
1056               }
1057               else {//if(charge<0)
1058                 fM2vsP[iBconf][iS+9]->Fill(M2,p);
1059                 fEtaSpecies[iBconf][iS+9]->Fill(etaAbs,pt);
1060                 fPhiSpecies[iBconf][iS+9]->Fill(phi,pt);
1061                 if(TMath::Abs(DCAxy)<DCAxyCUT) {
1062                   fM2vsP_DCAxyCut[iBconf][iS+9]->Fill(M2,p);
1063                 }
1064                 if(MomType & 1) {
1065                   for(Int_t j=0;j<nbin;j++) {
1066                     if(pt>binPt[j] && pt<binPt[j+1]) {
1067                       hDCAxy[iBconf][iS+9][j]->Fill(DCAxy);
1068                       hDCAxy[iBconf][iS+9][j]->Fill(-DCAxy);
1069                       hDCAz[iBconf][iS+9][j]->Fill(DCAz);
1070                       hDCAz[iBconf][iS+9][j]->Fill(-DCAz);
1071                       if(TMath::Abs(DCAxy)<DCAxyCUT) {
1072                         hM2CutDCAxy[iBconf][iS+9][j]->Fill(M2);
1073                       }
1074                       if(TMath::Abs(DCAxy+0.5)<DCAxyCUT) hM2CutGroundDCAxy[iBconf][iS+9][j]->Fill(M2);
1075                       break;
1076                     }
1077                   }
1078                 }
1079                 if(MomType & 2) {
1080                   for(Int_t j=0;j<nbin;j++) {
1081                     if(p>binPt[j] && p<binPt[j+1]) {
1082                       hDCAxy_pbin[iBconf][iS+9][j]->Fill(DCAxy);
1083                       hDCAxy_pbin[iBconf][iS+9][j]->Fill(-DCAxy);
1084                       hDCAz_pbin[iBconf][iS+9][j]->Fill(DCAz);
1085                       hDCAz_pbin[iBconf][iS+9][j]->Fill(-DCAz);
1086                       if(TMath::Abs(DCAxy)<DCAxyCUT) {
1087                         hM2CutDCAxy_pbin[iBconf][iS+9][j]->Fill(M2);
1088                       }
1089                       if(TMath::Abs(DCAxy+0.5)<DCAxyCUT) hM2CutGroundDCAxy_pbin[iBconf][iS+9][j]->Fill(M2);
1090                       break;
1091                     }
1092                   }
1093                 }
1094                 if(MomType & 4) {
1095                   for(Int_t j=0;j<nbin;j++) {
1096                     if(pTPC>binPt[j] && pTPC<binPt[j+1]) {
1097                       hDCAxy_pTpcbin[iBconf][iS+9][j]->Fill(DCAxy);
1098                       hDCAxy_pTpcbin[iBconf][iS+9][j]->Fill(-DCAxy);
1099                       hDCAz_pTpcbin[iBconf][iS+9][j]->Fill(DCAz);
1100                       hDCAz_pTpcbin[iBconf][iS+9][j]->Fill(-DCAz);
1101                       if(TMath::Abs(DCAxy)<DCAxyCUT) {
1102                         hM2CutDCAxy_pTpcbin[iBconf][iS+9][j]->Fill(M2);
1103                       }
1104                       if(TMath::Abs(DCAxy+0.5)<DCAxyCUT) hM2CutGroundDCAxy_pTpcbin[iBconf][iS+9][j]->Fill(M2);
1105                       break;
1106                     }
1107                   }
1108                 }
1109               }
1110             }
1111           }
1112         }// close (KTOF request)
1113         
1114         
1115       } // end track loop
1116       
1117     } //window cut centrality close
1118     
1119   }  
1120   
1121 }
1122
1123 //_____________________________________________________________________________
1124 void AliAnalysisNucleiMass::Terminate(Option_t *)
1125
1126   // Terminate loop
1127   Printf("Terminate()");
1128 }