]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG2/SPECTRA/AliAnalysisChargedHadronSpectraITSTruncatedMeanTask.cxx
Adding the charged hadron spectra task for the ITS-TPC (Marek)
[u/mrichter/AliRoot.git] / PWG2 / SPECTRA / AliAnalysisChargedHadronSpectraITSTruncatedMeanTask.cxx
CommitLineData
3a448a01 1//Class to extract data to do ITS+TPC global Spectra
2//Autor Marek Chojnacki
3//emali Marek.Chojnacki@cern.ch
4//Used on 2009 data
5//last line of comments
6
7
8#include "AliAnalysisChargedHadronSpectraITSTruncatedMeanTask.h"
9#include "AliAnalysisManager.h"
10
11#include "AliESDEvent.h"
12
13
14//#include "AliESDtrack.h"
15
16//#include "Riostream.h"
17#include "AliInputEventHandler.h"
18#include "AliStack.h"
19//#include "AliMCEventHandler.h"
20#include "AliMCEvent.h"
21
22
23#include "TH1F.h"
24#include "TH2F.h"
25#include "TMath.h"
26#include "TH3F.h"
27//#include "TMCProcess.h"
28#include "AliVEvent.h"
29
30#include "AliESDtrackCuts.h"
31//#include "AliESDpidCuts.h"
32//#include "AliESDpid.h"
33
34 class AliMCEventHandler;
35 class Riostream;
36
37using namespace std;
38ClassImp(AliAnalysisChargedHadronSpectraITSTruncatedMeanTask)
39
40//________________________________________________________________________
41AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::AliAnalysisChargedHadronSpectraITSTruncatedMeanTask(const char *name)
42:AliAnalysisTaskSE(name),fESD(0),fCuts(0),fMC(0),fYCut(100.0),fsigmacut(3.0),fnsigmaxy(7.0),fnsigmaz(5.0),fchargeCut(0.0),
43fCorrectSDD(0),fCorrectSSD(0),
44fHistStats(0),fHistPhiPtBeforeCuts(0),fHistPhiPtAfterCuts(0),fHistEtaPtBeforeCuts(0),fHistEtaPtAfterCuts(0),fHistDCABeforeCuts(0),fHistDCAAfterCuts(0),
45fHistPminusTPCinPAfterCuts(0),fHistPminusTPCinPglobalAfterCuts(0),
46fHistMydEPpositive(0),fHistMydETPCinPpositive(0),fHistMydETPCinPglobalpositive(0),
47fHistMydEPnegative(0),fHistMydETPCinPnegative(0),fHistMydETPCinPglobalnegative(0),
48fHistL3dEP(0),fHistL4dEP(0),fHistL5dEP(0),fHistL6dEP(0),fHistL3dETPCinP(0),
49 fHistL4dETPCinP(0),fHistL5dETPCinP(0),fHistL6dETPCinP(0),fHistEtaPtPions(0), fHistEtaPtKaons(0),fHistEtaPtProtons(0),fHistwhichhasmin(0),
50fHistminsignalforPionP(0),fHistminsignalforKaonP(0),fHistminsignalforProtonP(0),
51fHistminsignalifPionP(0),fHistminsignalifKaonP(0),fHistminsignalifProtonP(0),fHistminsignalifAntiPionP(0),fHistminsignalifAntiKaonP(0),fHistminsignalifAntiProtonP(0),
52fDCAXYZforcleanPions(0),fDCAXYZforcleanAntiPions(0),fDCAXYZforcleanProtons(0),fDCAXYZforcleanAntiProtons(0),
53fDCAXYZOpenforcleanPions(0),fDCAXYZOpenforcleanAntiPions(0),fDCAXYZOpenforcleanProtons(0),fDCAXYZOpenforcleanAntiProtons(0),
54fHistNtrackwithstandardcuts(0),fHistNtrackwithITSPIDcuts(0),
55fHistSignalinTPCKaonforstandardcuts(0),fHistSignalinTPCKaonforITSPIDcuts(0),fHistSignalinTPCAntiKaonforstandardcuts(0),fHistSignalinTPCAntiKaonforITSPIDcuts(0),
56fHistSignalinTPCProtonforstandardcuts(0),fHistSignalinTPCProtonforITSPIDcuts(0),fHistSignalinTPCAntiProtonforstandardcuts(0),fHistSignalinTPCAntiProtonforITSPIDcuts(0),
57fHistStandartMul(0),fHistMytrackMul(0),
58fHistEtaPtPionsMC(0),fHistEtaPtKaonsMC(0),fHistEtaPtProtonsMC(0),
59 fHistEtaPtPionsMCDET(0),fHistEtaPtKaonsMCDET(0),fHistEtaPtProtonsMCDET(0),
60 fHistEtaPtPionsCon(0),fHistEtaPtKaonsCon(0),fHistEtaPtProtonsCon(0),
61fHistEtaPtPionsConPID(0),fHistEtaPtKaonsConPID(0),fHistEtaPtProtonsConPID(0),
62fHistminsignalifPionPPrimary(0),fHistminsignalifKaonPPrimary(0),fHistminsignalifProtonPPrimary(0),fHistminsignalifProtonPPrimaryfake(0),
63fHistminsignalifAntiPionPPrimary(0),fHistminsignalifAntiKaonPPrimary(0),fHistminsignalifAntiProtonPPrimary(0),fHistminsignalifAntiProtonPPrimaryfake(0),
64fHistminsignalifPionPSecondary(0),fHistminsignalifKaonPSecondary(0),
65fHistminsignalifProtonPSecondaryWD(0),fHistminsignalifProtonPSecondaryHI(0),fHistminsignalifProtonPSecondaryRest(0),
66fHistminsignalifProtonPSecondaryWDfake(0),fHistminsignalifProtonPSecondaryHIfake(0),
67fHistminsignalifAntiPionPSecondary(0),fHistminsignalifAntiKaonPSecondary(0),
68fHistminsignalifAntiProtonPSecondaryWD(0),fHistminsignalifAntiProtonPSecondaryHI(0), fHistminsignalifAntiProtonPSecondaryRest(0),
69fHistminsignalifAntiProtonPSecondaryWDfake(0),fHistminsignalifAntiProtonPSecondaryHIfake(0),
70fHistminsignalifMuEPositiveP(0),fHistminsignalifMuENegativeP(0),
71fHistminsignalifPionPrimaryfake(0),fHistminsignalifKaonPrimaryfake(0),fHistminsignalifAntiPionPrimaryfake(0),fHistminsignalifAntiKaonPrimaryfake(0),
72fHistminsignalifPionSecondaryfake(0),fHistminsignalifKaonSecondaryfake(0),fHistminsignalifAntiPionSecondaryfake(0),fHistminsignalifAntiKaonSecondaryfake(0),
73fHistminsignalifPionPMCPrimary(0),fHistminsignalifKaonPMCPrimary(0),fHistminsignalifProtonPMCPrimary(0),
74fHistminsignalifAntiPionPMCPrimary(0),fHistminsignalifAntiKaonPMCPrimary(0),fHistminsignalifAntiProtonPMCPrimary(0),
75fHistminsignalifPionPMCPrimaryBeforeEventCuts(0),fHistminsignalifKaonPMCPrimaryBeforeEventCuts(0),fHistminsignalifProtonPMCPrimaryBeforeEventCuts(0),
76fHistminsignalifAntiPionPMCPrimaryBeforeEventCuts(0),fHistminsignalifAntiKaonPMCPrimaryBeforeEventCuts(0),fHistminsignalifAntiProtonPMCPrimaryBeforeEventCuts(0),
77fHistminsignalifPionPMCPrimaryBeforeEventCutswithgoodZvertex(0),fHistminsignalifKaonPMCPrimaryBeforeEventCutswithgoodZvertex(0),fHistminsignalifProtonPMCPrimaryBeforeEventCutswithgoodZvertex(0),
78fHistminsignalifAntiPionPMCPrimaryBeforeEventCutswithgoodZvertex(0),fHistminsignalifAntiKaonPMCPrimaryBeforeEventCutswithgoodZvertex(0),fHistminsignalifAntiProtonPMCPrimaryBeforeEventCutswithgoodZvertex(0),
79fHistminsignalifPionPMCPrimaryAfterEventCutsBeforeVertexZ(0),fHistminsignalifKaonPMCPrimaryAfterEventCutsBeforeVertexZ(0),fHistminsignalifProtonPMCPrimaryAfterEventCutsBeforeVertexZ(0),
80fHistminsignalifAntiPionPMCPrimaryAfterEventCutsBeforeVertexZ(0),fHistminsignalifAntiKaonPMCPrimaryAfterEventCutsBeforeVertexZ(0),fHistminsignalifAntiProtonPMCPrimaryAfterEventCutsBeforeVertexZ(0),
81fDCAXYZforcleanPionsMCPrimary(0),fDCAXYZforcleanAntiPionsMCPrimary(0),fDCAXYZforcleanProtonsMCPrimary(0),fDCAXYZforcleanAntiProtonsMCPrimary(0),
82 fDCAXYZforcleanPionsWD(0),fDCAXYZforcleanAntiPionsWD(0),fDCAXYZforcleanProtonsWD(0), fDCAXYZforcleanAntiProtonsWD(0),fDCAXYZforcleanPionsHI(0),fDCAXYZforcleanAntiPionsHI(0),
83fDCAXYZforcleanProtonsHI(0),fDCAXYZforcleanAntiProtonsHI(0),fDCAXYZforcleanPionsME(0),fDCAXYZforcleanAntiPionsME(0),fDCAXYZforcleanPionsR(0),fDCAXYZforcleanAntiPionsR(0),fDCAXYZforcleanProtonsR(0),fDCAXYZforcleanAntiProtonsR(0),
84fDCAXYZOpenforcleanPionsMCPrimary(0),fDCAXYZOpenforcleanAntiPionsMCPrimary(0),fDCAXYZOpenforcleanProtonsMCPrimary(0),fDCAXYZOpenforcleanAntiProtonsMCPrimary(0),
85 fDCAXYZOpenforcleanPionsWD(0),fDCAXYZOpenforcleanAntiPionsWD(0),fDCAXYZOpenforcleanProtonsWD(0), fDCAXYZOpenforcleanAntiProtonsWD(0),fDCAXYZOpenforcleanPionsHI(0),fDCAXYZOpenforcleanAntiPionsHI(0),
86fDCAXYZOpenforcleanProtonsHI(0),fDCAXYZOpenforcleanAntiProtonsHI(0),fDCAXYZOpenforcleanPionsME(0),fDCAXYZOpenforcleanAntiPionsME(0),fDCAXYZOpenforcleanPionsR(0),fDCAXYZOpenforcleanAntiPionsR(0),fDCAXYZOpenforcleanProtonsR(0),fDCAXYZOpenforcleanAntiProtonsR(0),
87fElectronsource(0),fAntiElectronsource(0),
88fMuonsource(0),fAntiMuonsource(0),
89fPionNTPCClusters(0),fAntiPionNTPCClusters(0),
90fTPCPIDCUT(0), fESDpid(0),fPrimaryElectronsMother(0),
91flist(0)
92{
93 //Constructor
94 fESDpid=new AliESDpid();
95 fESDpid->GetTPCResponse().SetBetheBlochParameters(0.0283086,2.63394e+01,5.04114e-11,2.12543e+00,4.88663e+00);
96
97
98
99
100 for(int i=0;i<2;i++){ flinearpar[i]=0.0;}
101 for(int i=0;i<5;i++){ fpar[i]=0.0;}
102 Printf("end of AliAnalysisChargedHadronSpectraITSTruncatedMeanTask");
103 DefineOutput(1, TList::Class());
104}
105
106
107//________________________________________________________________________
108void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::UserCreateOutputObjects()
109{
110 //UserCreateOutputObject
111 Printf("AliAnalysisChargedHadronSpectraITSTruncatedMeanTask UserCreateOutputObjects");
112 flist=new TList();
113 Float_t ptmax=2.0;
114 Float_t etamax=1.0;
115
116 Int_t netabins=100;
117 Int_t nptbins=40;
118 Double_t dcamax=3.7;
119 const Int_t ndec=2;
120 Int_t startvalue=-1;
121 const Int_t npredec=50;
122 Double_t tabx[ndec*npredec+1];
123 for (Int_t i=0;i<ndec;i++)
124 {
125 for (Int_t j=0;j<npredec;j++)
126 {
127 tabx[npredec*i+j]=TMath::Power(10,((Double_t)i)+((Double_t)startvalue)+((Double_t)j)/((Double_t)npredec));
128 }
129 }
130 tabx[ndec*npredec]=TMath::Power(10,ndec+startvalue);
131
132 const Int_t ny=600;
133 const Double_t jump=1.5;
134 const Double_t starty=0.0;
135
136
137 Int_t kPtBins=30;
138 Double_t binsPtDummy[kPtBins+1];
139 binsPtDummy[0]=0.0;
140 for(int i=1;i<=kPtBins+1;i++)
141 {
142 if(binsPtDummy[i-1]+0.05<1.01)
143 binsPtDummy[i]=binsPtDummy[i-1]+0.05;
144 else
145 binsPtDummy[i]=binsPtDummy[i-1]+0.1;
146 }
147 //{0., 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0};
148
149
150 fHistStats=new TH1F("StatsHist","StatsHist",10,-0.5,9.5);
151 fHistStats->GetXaxis()->SetBinLabel(1,"Nevents");
152 fHistStats->GetXaxis()->SetBinLabel(2,"Nevents_physics");
153 fHistStats->GetXaxis()->SetBinLabel(3,"Nevents_physics_with_good_SPD_vertex");
154 fHistStats->GetXaxis()->SetBinLabel(4,"Nevents_physics_with_good_SPD_vertex_and_|z|<10.0");
155 fHistStats->GetXaxis()->SetBinLabel(5,"N_tracks_with_3_or_4_in_SSD_SDD");
156 fHistStats->GetXaxis()->SetBinLabel(6,"N_tracks_with_3_or_4_with_goodq_in_SSD_SDD");
157 fHistStats->GetXaxis()->SetBinLabel(7,"e_in_pi");
158 fHistStats->GetXaxis()->SetBinLabel(8,"mu_in_pi");
159 fHistStats->GetXaxis()->SetBinLabel(9,"MC_event");
160 fHistStats->GetXaxis()->SetBinLabel(10,"MC_event_with_z<10.0");
161 flist->Add(fHistStats);
162
163
164
165 fHistPhiPtBeforeCuts=new TH2F("HistPhiPtBeforeCuts",";#phi;pt[GeV/c]",70,0,2.0*TMath::Pi(),nptbins,-1.0*ptmax,ptmax);
166 flist->Add(fHistPhiPtBeforeCuts);
167
168 fHistPhiPtAfterCuts=new TH2F("HistPhiPtAfterCuts",";#phi;pt[GeV/c]",70,0,2.0*TMath::Pi(),nptbins,-1.0*ptmax,ptmax);
169 flist->Add(fHistPhiPtAfterCuts);
170
171 fHistEtaPtBeforeCuts=new TH2F("HistEtaPtBeforeCuts",";#eta;pt[GeV/c]",netabins,-1.0*etamax,etamax,nptbins,-1.0*ptmax,ptmax);//eta pt
172 flist->Add(fHistEtaPtBeforeCuts);
173
174 fHistEtaPtAfterCuts=new TH2F("HistEtaPtAfterCuts",";#eta;pt[GeV/c]",netabins,-1.0*etamax,etamax,nptbins,-1.0*ptmax,ptmax);//eta pt
175 flist->Add(fHistEtaPtAfterCuts);
176
177 fHistDCABeforeCuts=new TH2F("HistDCABeforeCut",";dcaxy[cm];dcaz[cm]",100,-1.0*dcamax,dcamax,100,-1.0*dcamax,1.0*dcamax);
178 flist->Add(fHistDCABeforeCuts);
179
180 fHistDCAAfterCuts=new TH2F("HistDCAAfterCut",";dcaxy[cm];dcaz[cm]",100,-1.0*dcamax,dcamax,100,-1.0*dcamax,1.0*dcamax);
181 flist->Add(fHistDCAAfterCuts);
182
183
184 fHistPminusTPCinPAfterCuts= new TH2F("HistPminusTPCinPVPTPCinAfterCuts",";P-PTPCin [GeV/c];PTPCin",100,-0.5,0.5,ndec*npredec,tabx);
185 flist->Add(fHistPminusTPCinPAfterCuts);
186
187 fHistPminusTPCinPglobalAfterCuts= new TH2F("HistPminusTPCinPVPTPCinglobalAfterCuts",";P-PTPCinglobal [GeV/c];PTPCin",100,-0.5,0.5,ndec*npredec,tabx);
188 flist->Add(fHistPminusTPCinPglobalAfterCuts);
189
190 fHistMydEPpositive=new TH2F("HistMydEPpositive",";P[GeV/c];dE[in 300#mum]",ndec*npredec,tabx,ny,starty,ny*jump+starty);
191 flist->Add(fHistMydEPpositive);
192
193 fHistMydETPCinPpositive=new TH2F("HistMydETPCinPpositive",";P[GeV/c];dE[in 300#mum]",ndec*npredec,tabx,ny,starty,ny*jump+starty);
194 flist->Add(fHistMydETPCinPpositive);
195
196 fHistMydETPCinPglobalpositive=new TH2F("HistMydETPCinPglobalpositive",";P[GeV/c];dE[in 300#mum]",ndec*npredec,tabx,ny,starty,ny*jump+starty);
197 flist->Add(fHistMydETPCinPglobalpositive);
198
199 fHistMydEPnegative=new TH2F("HistMydEPnegative",";P[GeV/c];dE[in 300#mum]",ndec*npredec,tabx,ny,starty,ny*jump+starty);
200 flist->Add(fHistMydEPnegative);
201
202 fHistMydETPCinPnegative=new TH2F("HistMydETPCinPnegative",";P[GeV/c];dE[in 300#mum]",ndec*npredec,tabx,ny,starty,ny*jump+starty);
203 flist->Add(fHistMydETPCinPnegative);
204
205 fHistMydETPCinPglobalnegative=new TH2F("HistMydETPCinPglobalnegative",";P[GeV/c];dE[in 300#mum]",ndec*npredec,tabx,ny,starty,ny*jump+starty);
206 flist->Add(fHistMydETPCinPglobalnegative);
207
208
209 fHistL3dEP=new TH2F("HistL3dEP",";P[GeV/c];dE[in 300#mum]",ndec*npredec,tabx,ny,starty,ny*jump+starty);
210 flist->Add(fHistL3dEP);
211
212 fHistL4dEP=new TH2F("HistL4dEP",";P[GeV/c];dE[in 300#mum]",ndec*npredec,tabx,ny,starty,ny*jump+starty);
213 flist->Add(fHistL4dEP);
214
215 fHistL5dEP=new TH2F("HistL5dEP",";P[GeV/c];dE[in 300#mum]",ndec*npredec,tabx,ny,starty,ny*jump+starty);
216 flist->Add(fHistL5dEP);
217
218 fHistL6dEP=new TH2F("HistL6dEP",";P[GeV/c];dE[in 300#mum]",ndec*npredec,tabx,ny,starty,ny*jump+starty);
219 flist->Add(fHistL6dEP);
220
221 fHistL3dETPCinP=new TH2F("HistL3dETPCinP",";P[GeV/c];dE[in 300#mum]",ndec*npredec,tabx,ny,starty,ny*jump+starty);
222 flist->Add(fHistL3dETPCinP);
223
224 fHistL4dETPCinP=new TH2F("HistL4dETPCinP",";P[GeV/c];dE[in 300#mum]",ndec*npredec,tabx,ny,starty,ny*jump+starty);
225 flist->Add(fHistL4dETPCinP);
226
227 fHistL5dETPCinP=new TH2F("HistL5dETPCinP",";P[GeV/c];dE[in 300#mum]",ndec*npredec,tabx,ny,starty,ny*jump+starty);
228 flist->Add(fHistL5dETPCinP);
229
230 fHistL6dETPCinP=new TH2F("HistL6dETPCinP",";P[GeV/c];dE[in 300#mum]",ndec*npredec,tabx,ny,starty,ny*jump+starty);
231 flist->Add(fHistL6dETPCinP);
232
233 fHistEtaPtPions=new TH2F("HistEtaPtPions",";#eta;pt[GeV/c]",netabins,-1.0*etamax,etamax,nptbins,-1.0*ptmax,ptmax);//eta pt
234 flist->Add(fHistEtaPtPions);
235 fHistEtaPtKaons=new TH2F("HistEtaPtKaons",";#eta;pt[GeV/c]",netabins,-1.0*etamax,etamax,nptbins,-1.0*ptmax,ptmax);//eta pt
236 flist->Add(fHistEtaPtKaons);
237 fHistEtaPtProtons=new TH2F("HistEtaPtProtons",";#eta;pt[GeV/c]",netabins,-1.0*etamax,etamax,nptbins,-1.0*ptmax,ptmax);//eta pt
238 flist->Add(fHistEtaPtProtons);
239
240 fHistwhichhasmin=new TH1F("Histwhichhasmin","Histwhichhasmin",4,-0.5,3.5);
241 fHistwhichhasmin->GetXaxis()->SetBinLabel(1,"SDD1");
242 fHistwhichhasmin->GetXaxis()->SetBinLabel(2,"SDD2");
243 fHistwhichhasmin->GetXaxis()->SetBinLabel(3,"SSD1");
244 fHistwhichhasmin->GetXaxis()->SetBinLabel(4,"SSD2");
245 flist->Add(fHistwhichhasmin);
246
247
248
249 fHistminsignalforPionP=new TH2F("HistminsignalforPionP",";P[GeV/c];dE[in 300#mum]",kPtBins,binsPtDummy,ny,starty,ny*jump+starty);
250 flist->Add(fHistminsignalforPionP);
251 fHistminsignalforKaonP=new TH2F("HistminsignalforKaonP",";P[GeV/c];dE[in 300#mum]",kPtBins,binsPtDummy,ny,starty,ny*jump+starty);
252 flist->Add(fHistminsignalforKaonP);
253 fHistminsignalforProtonP=new TH2F("HistminsignalforProtonP",";P[GeV/c];dE[in 300#mum]",kPtBins,binsPtDummy,ny,starty,ny*jump+starty);
254 flist->Add(fHistminsignalforProtonP);
255
256 fHistminsignalifPionP=new TH2F("HistminsignalifPionP",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
257 flist->Add(fHistminsignalifPionP);
258 fHistminsignalifKaonP=new TH2F("HistminsignalifKaonP",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
259 flist->Add(fHistminsignalifKaonP);
260 fHistminsignalifProtonP=new TH2F("HistminsignalifProtonP",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
261 flist->Add(fHistminsignalifProtonP);
262
263
264 fHistminsignalifAntiPionP=new TH2F("HistminsignalifAntiPionP",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
265 flist->Add(fHistminsignalifAntiPionP);
266 fHistminsignalifAntiKaonP=new TH2F("HistminsignalifAntiKaonP",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
267 flist->Add(fHistminsignalifAntiKaonP);
268 fHistminsignalifAntiProtonP=new TH2F("HistminsignalifAntiProtonP",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
269 flist->Add(fHistminsignalifAntiProtonP);
270
271 Int_t kDCABins=20+2+40;
272 Double_t binsDCADummy[62+1]={-3.0,-2.7,-2.4,-2.1,-1.8,-1.5,-1.2,-0.9,-0.6,-0.3,-0.25,-0.2,-0.19,-0.18,-0.17,-0.16,-0.15,-0.14,-0.13,-0.12,-0.11,-0.10,-0.09,-0.08,-0.07,-0.06,-0.05,-0.04,-0.03,-0.02,-0.01,0.0,0.01,0.02,0.03,0.04,0.05,0.06,0.07,0.08,0.09,0.1,0.11,0.12,0.13,0.14,0.15,0.16,0.17,0.18,0.19,0.2,0.25,0.3,0.6,0.9,1.2,1.5,1.8,2.1,2.4,2.7,3.0};
273
274
275
276
277 fDCAXYZforcleanPions=new TH3F("fDCAXYZforcleanPions",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
278 flist->Add(fDCAXYZforcleanPions);
279 fDCAXYZforcleanAntiPions=new TH3F("fDCAXYZforcleanAntiPions",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
280 flist->Add(fDCAXYZforcleanAntiPions);
281 fDCAXYZforcleanProtons=new TH3F("fDCAXYZforcleanProtons",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
282 flist->Add(fDCAXYZforcleanProtons);
283 fDCAXYZforcleanAntiProtons=new TH3F("fDCAXYZforcleanAntiProtons",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
284 flist->Add(fDCAXYZforcleanAntiProtons);
285
286
287 fDCAXYZOpenforcleanPions=new TH3F("fDCAXYZOpenforcleanPions",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
288 flist->Add(fDCAXYZOpenforcleanPions);
289 fDCAXYZOpenforcleanAntiPions=new TH3F("fDCAXYZOpenforcleanAntiPions",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
290 flist->Add(fDCAXYZOpenforcleanAntiPions);
291 fDCAXYZOpenforcleanProtons=new TH3F("fDCAXYZOpenforcleanProtons",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
292 flist->Add(fDCAXYZOpenforcleanProtons);
293 fDCAXYZOpenforcleanAntiProtons=new TH3F("fDCAXYZOpenforcleanAntiProtons",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
294 flist->Add(fDCAXYZOpenforcleanAntiProtons);
295
296 fHistNtrackwithstandardcuts=new TH2F ("fHistNtrackwithstandardcuts",";Pt[GeV/c];type;counts",kPtBins,binsPtDummy,3,-0.5,2.5);
297 flist->Add(fHistNtrackwithstandardcuts);
298 fHistNtrackwithITSPIDcuts=new TH2F ("fHistNtrackwithITSPIDcuts",";Pt[GeV/c];type;counts",kPtBins,binsPtDummy,3,-0.5,2.5);
299 flist->Add(fHistNtrackwithITSPIDcuts);
300
301
302 fHistSignalinTPCKaonforstandardcuts= new TH2F("fHistSignalinTPCKaonforstandardcuts",";Pt[GeV/c];signal",kPtBins,binsPtDummy,100,-1.0,1.0) ;
303 flist->Add(fHistSignalinTPCKaonforstandardcuts);
304 fHistSignalinTPCKaonforITSPIDcuts= new TH2F("fHistSignalinTPCKaonforITSPIDcuts",";Pt[GeV/c];signal",kPtBins,binsPtDummy,100,-1.0,1.0) ;
305 flist->Add(fHistSignalinTPCKaonforITSPIDcuts);
306
307 fHistSignalinTPCAntiKaonforstandardcuts= new TH2F("fHistSignalinTPCAntiKaonforstandardcuts",";Pt[GeV/c];signal",kPtBins,binsPtDummy,100,-1.0,1.0) ;
308 flist->Add(fHistSignalinTPCAntiKaonforstandardcuts);
309 fHistSignalinTPCAntiKaonforITSPIDcuts= new TH2F("fHistSignalinTPCAntiKaonforITSPIDcuts",";Pt[GeV/c];signal",kPtBins,binsPtDummy,100,-1.0,1.0) ;
310 flist->Add(fHistSignalinTPCAntiKaonforITSPIDcuts);
311
312 fHistSignalinTPCProtonforstandardcuts= new TH2F("fHistSignalinTPCProtonforstandardcuts",";Pt[GeV/c];signal",kPtBins,binsPtDummy,100,-1.0,1.0) ;
313 flist->Add(fHistSignalinTPCProtonforstandardcuts);
314 fHistSignalinTPCProtonforITSPIDcuts= new TH2F("fHistSignalinTPCProtonforITSPIDcuts",";Pt[GeV/c];signal",kPtBins,binsPtDummy,100,-1.0,1.0) ;
315 flist->Add(fHistSignalinTPCProtonforITSPIDcuts);
316
317
318 fHistSignalinTPCAntiProtonforstandardcuts= new TH2F("fHistSignalinTPCAntiProtonforstandardcuts",";Pt[GeV/c];signal",kPtBins,binsPtDummy,100,-1.0,1.0) ;
319 flist->Add(fHistSignalinTPCAntiProtonforstandardcuts);
320 fHistSignalinTPCAntiProtonforITSPIDcuts= new TH2F("fHistSignalinTPCAntiProtonforITSPIDcuts",";Pt[GeV/c];signal",kPtBins,binsPtDummy,100,-1.0,1.0) ;
321 flist->Add(fHistSignalinTPCAntiProtonforITSPIDcuts);
322
323 fPionNTPCClusters=new TH2F("fPionNTPCClusters","fPionNTPCClusters;Pt [GeV/c];NClusters",kPtBins,binsPtDummy,20,60,160);
324 flist->Add(fPionNTPCClusters);
325 fAntiPionNTPCClusters=new TH2F("fAntiPionNTPCClusters","fAntiPionNTPCClusters;Pt [GeV/c];NClusters",kPtBins,binsPtDummy,20,60,160);
326 flist->Add(fAntiPionNTPCClusters);
327
328 fHistStandartMul=new TH1F("fHistStandartMul",";counts;Ntracks",300,0,300);
329 flist->Add(fHistStandartMul);
330 fHistMytrackMul=new TH1F("fHistMytrackMul",";counts;Ntracks",300,0,300);
331 flist->Add(fHistMytrackMul);
332
333 if(!fMC)
334 {
335
336 Printf("end of CreateOutputObjects no MC");
337 PostData(1,flist);
338 return;
339 }
340
341
342 fHistEtaPtPionsMC=new TH2F("HistEtaPtPionsMC",";#eta;pt[GeV/c]",netabins,-1.0*etamax,etamax,nptbins,-1.0*ptmax,ptmax);//eta pt
343 flist->Add(fHistEtaPtPionsMC);
344 fHistEtaPtKaonsMC=new TH2F("HistEtaPtKaonsMC",";#eta;pt[GeV/c]",netabins,-1.0*etamax,etamax,nptbins,-1.0*ptmax,ptmax);//eta pt
345 flist->Add(fHistEtaPtKaonsMC);
346 fHistEtaPtProtonsMC=new TH2F("HistEtaPtProtonsMC",";#eta;pt[GeV/c]",netabins,-1.0*etamax,etamax,nptbins,-1.0*ptmax,ptmax);//eta pt
347 flist->Add(fHistEtaPtProtonsMC);
348
349 fHistEtaPtPionsMCDET=new TH2F("HistEtaPtPionsMCDET",";#eta;pt[GeV/c]",netabins,-1.0*etamax,etamax,nptbins,-1.0*ptmax,ptmax);//eta pt
350 flist->Add(fHistEtaPtPionsMCDET);
351 fHistEtaPtKaonsMCDET=new TH2F("HistEtaPtKaonsMCDET",";#eta;pt[GeV/c]",netabins,-1.0*etamax,etamax,nptbins,-1.0*ptmax,ptmax);//eta pt
352 flist->Add(fHistEtaPtKaonsMCDET);
353 fHistEtaPtProtonsMCDET=new TH2F("HistEtaPtProtonsMCDET",";#eta;pt[GeV/c]",netabins,-1.0*etamax,etamax,nptbins,-1.0*ptmax,ptmax);//eta pt
354 flist->Add(fHistEtaPtProtonsMCDET);
355
356 fHistEtaPtPionsCon=new TH2F("HistEtaPtPionsCon",";#eta;pt[GeV/c]",netabins,-1.0*etamax,etamax,nptbins,-1.0*ptmax,ptmax);//eta pt
357 flist->Add(fHistEtaPtPionsCon);
358 fHistEtaPtKaonsCon=new TH2F("HistEtaPtKaonsCon",";#eta;pt[GeV/c]",netabins,-1.0*etamax,etamax,nptbins,-1.0*ptmax,ptmax);//eta pt
359 flist->Add(fHistEtaPtKaonsCon);
360 fHistEtaPtProtonsCon=new TH2F("HistEtaPtProtonsCon",";#eta;pt[GeV/c]",netabins,-1.0*etamax,etamax,nptbins,-1.0*ptmax,ptmax);//eta pt
361 flist->Add(fHistEtaPtProtonsCon);
362
363 fHistEtaPtPionsConPID=new TH2F("HistEtaPtPionsConPID",";#eta;pt[GeV/c]",netabins,-1.0*etamax,etamax,nptbins,-1.0*ptmax,ptmax);//eta pt
364 flist->Add(fHistEtaPtPionsConPID);
365 fHistEtaPtKaonsConPID=new TH2F("HistEtaPtKaonsConPID",";#eta;pt[GeV/c]",netabins,-1.0*etamax,etamax,nptbins,-1.0*ptmax,ptmax);//eta pt
366 flist->Add(fHistEtaPtKaonsConPID);
367 fHistEtaPtProtonsConPID=new TH2F("HistEtaPtProtonsConPID",";#eta;pt[GeV/c]",netabins,-1.0*etamax,etamax,nptbins,-1.0*ptmax,ptmax);//eta pt
368 flist->Add(fHistEtaPtProtonsConPID);
369
370 fHistminsignalifPionPPrimary=new TH2F("HistminsignalifPionPPrimary",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
371 flist->Add(fHistminsignalifPionPPrimary);
372 fHistminsignalifKaonPPrimary=new TH2F("HistminsignalifKaonPPrimary",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
373 flist->Add(fHistminsignalifKaonPPrimary);
374 fHistminsignalifProtonPPrimary=new TH2F("HistminsignalifProtonPPrimary",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
375 flist->Add(fHistminsignalifProtonPPrimary);
376 fHistminsignalifProtonPPrimaryfake=new TH2F("HistminsignalifProtonPPrimaryfake",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
377 flist->Add(fHistminsignalifProtonPPrimaryfake);
378
379 fHistminsignalifAntiPionPPrimary=new TH2F("HistminsignalifAntiPionPPrimary",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
380 flist->Add(fHistminsignalifAntiPionPPrimary);
381 fHistminsignalifAntiKaonPPrimary=new TH2F("HistminsignalifAntiKaonPPrimary",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
382 flist->Add(fHistminsignalifAntiKaonPPrimary);
383 fHistminsignalifAntiProtonPPrimary=new TH2F("HistminsignalifAntiProtonPPrimary",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
384 flist->Add(fHistminsignalifAntiProtonPPrimary);
385 fHistminsignalifAntiProtonPPrimaryfake=new TH2F("HistminsignalifAntiProtonPPrimaryfake",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
386 flist->Add(fHistminsignalifAntiProtonPPrimaryfake);
387
388 fHistminsignalifPionPSecondary=new TH2F("HistminsignalifPionPSecondary",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
389 flist->Add(fHistminsignalifPionPSecondary);
390 fHistminsignalifKaonPSecondary=new TH2F("HistminsignalifKaonPSecondary",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
391 flist->Add(fHistminsignalifKaonPSecondary);
392 fHistminsignalifProtonPSecondaryWD=new TH2F("HistminsignalifProtonPSecondaryWD",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
393 flist->Add(fHistminsignalifProtonPSecondaryWD);
394 fHistminsignalifProtonPSecondaryHI=new TH2F("HistminsignalifProtonPSecondaryHI",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
395 flist->Add(fHistminsignalifProtonPSecondaryHI);
396 fHistminsignalifProtonPSecondaryRest=new TH2F("HistminsignalifProtonPSecondaryRest",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
397 flist->Add(fHistminsignalifProtonPSecondaryRest);
398 fHistminsignalifProtonPSecondaryWDfake=new TH2F("HistminsignalifProtonPSecondaryWDfake",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
399 flist->Add(fHistminsignalifProtonPSecondaryWDfake);
400 fHistminsignalifProtonPSecondaryHIfake=new TH2F("HistminsignalifProtonPSecondaryHIfake",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
401 flist->Add(fHistminsignalifProtonPSecondaryHIfake);
402
403
404 fHistminsignalifAntiPionPSecondary=new TH2F("HistminsignalifAntiPionPSecondary",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
405 flist->Add(fHistminsignalifAntiPionPSecondary);
406 fHistminsignalifAntiKaonPSecondary=new TH2F("HistminsignalifAntiKaonPSecondary",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
407 flist->Add(fHistminsignalifAntiKaonPSecondary);
408 fHistminsignalifAntiProtonPSecondaryWD=new TH2F("HistminsignalifAntiProtonPSecondaryWD",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
409 flist->Add(fHistminsignalifAntiProtonPSecondaryWD);
410 fHistminsignalifAntiProtonPSecondaryHI=new TH2F("HistminsignalifAntiProtonPSecondaryHI",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
411 flist->Add(fHistminsignalifAntiProtonPSecondaryHI);
412 fHistminsignalifAntiProtonPSecondaryRest=new TH2F("HistminsignalifAntiProtonPSecondaryRest",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
413 flist->Add(fHistminsignalifAntiProtonPSecondaryRest);
414 fHistminsignalifAntiProtonPSecondaryWDfake=new TH2F("HistminsignalifAntiProtonPSecondaryWDfake",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
415 flist->Add(fHistminsignalifAntiProtonPSecondaryWDfake);
416 fHistminsignalifAntiProtonPSecondaryHIfake=new TH2F("HistminsignalifAntiProtonPSecondaryHIfake",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
417 flist->Add(fHistminsignalifAntiProtonPSecondaryHIfake);
418
419 fHistminsignalifMuEPositiveP=new TH2F("HistminsignalifMuEPositiveP",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
420 flist->Add(fHistminsignalifMuEPositiveP);
421 fHistminsignalifMuENegativeP=new TH2F("HistminsignalifMuENegativeP",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
422 flist->Add(fHistminsignalifMuENegativeP);
423
424
425 fHistminsignalifPionPrimaryfake=new TH2F("HistminsignalifPionPrimaryfake",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
426 flist->Add(fHistminsignalifPionPrimaryfake);
427 fHistminsignalifKaonPrimaryfake=new TH2F("HistminsignalifKaonPrimaryfake",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
428 flist->Add(fHistminsignalifKaonPrimaryfake);
429
430 fHistminsignalifAntiPionPrimaryfake=new TH2F("HistminsignalifAntiPionPrimaryfake",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
431 flist->Add(fHistminsignalifAntiPionPrimaryfake);
432 fHistminsignalifAntiKaonPrimaryfake=new TH2F("HistminsignalifAntiKaonPrimaryfake",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
433 flist->Add(fHistminsignalifAntiKaonPrimaryfake);
434
435
436 fHistminsignalifPionSecondaryfake=new TH2F("HistminsignalifPionSecondaryfake",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
437 flist->Add(fHistminsignalifPionSecondaryfake);
438 fHistminsignalifKaonSecondaryfake=new TH2F("HistminsignalifKaonSecondaryfake",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
439 flist->Add(fHistminsignalifKaonSecondaryfake);
440
441 fHistminsignalifAntiPionSecondaryfake=new TH2F("HistminsignalifAntiPionSecondaryfake",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
442 flist->Add(fHistminsignalifAntiPionSecondaryfake);
443 fHistminsignalifAntiKaonSecondaryfake=new TH2F("HistminsignalifAntiKaonSecondaryfake",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
444 flist->Add(fHistminsignalifAntiKaonSecondaryfake);
445
446
447 fHistminsignalifPionPMCPrimary=new TH1F("HistminsignalifPionPMCPrimary",";Pt[GeV/c]",kPtBins,binsPtDummy);
448 flist->Add(fHistminsignalifPionPMCPrimary);
449 fHistminsignalifKaonPMCPrimary=new TH1F("HistminsignalifKaonPMCPrimary",";Pt[GeV/c]",kPtBins,binsPtDummy);
450 flist->Add(fHistminsignalifKaonPMCPrimary);
451 fHistminsignalifProtonPMCPrimary=new TH1F("HistminsignalifProtonPMCPrimary",";Pt[GeV/c]",kPtBins,binsPtDummy);
452 flist->Add(fHistminsignalifProtonPMCPrimary);
453
454 fHistminsignalifAntiPionPMCPrimary=new TH1F("HistminsignalifAntiPionPMCPrimary",";Pt[GeV/c]",kPtBins,binsPtDummy);
455 flist->Add(fHistminsignalifAntiPionPMCPrimary);
456 fHistminsignalifAntiKaonPMCPrimary=new TH1F("HistminsignalifAntiKaonPMCPrimary",";Pt[GeV/c]",kPtBins,binsPtDummy);
457 flist->Add(fHistminsignalifAntiKaonPMCPrimary);
458 fHistminsignalifAntiProtonPMCPrimary=new TH1F("HistminsignalifAntiProtonPMCPrimary",";Pt[GeV/c]",kPtBins,binsPtDummy);
459 flist->Add(fHistminsignalifAntiProtonPMCPrimary);
460
461
462 fHistminsignalifPionPMCPrimaryBeforeEventCuts=new TH1F("HistminsignalifPionPMCPrimaryBeforeEventCuts",";Pt[GeV/c]",kPtBins,binsPtDummy);
463 flist->Add(fHistminsignalifPionPMCPrimaryBeforeEventCuts);
464 fHistminsignalifKaonPMCPrimaryBeforeEventCuts=new TH1F("HistminsignalifKaonPMCPrimaryBeforeEventCuts",";Pt[GeV/c]",kPtBins,binsPtDummy);
465 flist->Add(fHistminsignalifKaonPMCPrimaryBeforeEventCuts);
466 fHistminsignalifProtonPMCPrimaryBeforeEventCuts=new TH1F("HistminsignalifProtonPMCPrimaryBeforeEventCuts",";Pt[GeV/c]",kPtBins,binsPtDummy);
467 flist->Add(fHistminsignalifProtonPMCPrimaryBeforeEventCuts);
468
469 fHistminsignalifAntiPionPMCPrimaryBeforeEventCuts=new TH1F("HistminsignalifAntiPionPMCPrimaryBeforeEventCuts",";Pt[GeV/c]",kPtBins,binsPtDummy);
470 flist->Add(fHistminsignalifAntiPionPMCPrimaryBeforeEventCuts);
471 fHistminsignalifAntiKaonPMCPrimaryBeforeEventCuts=new TH1F("HistminsignalifAntiKaonPMCPrimaryBeforeEventCuts",";Pt[GeV/c]",kPtBins,binsPtDummy);
472 flist->Add(fHistminsignalifAntiKaonPMCPrimaryBeforeEventCuts);
473 fHistminsignalifAntiProtonPMCPrimaryBeforeEventCuts=new TH1F("HistminsignalifAntiProtonPMCPrimaryBeforeEventCuts",";Pt[GeV/c]",kPtBins,binsPtDummy);
474 flist->Add(fHistminsignalifAntiProtonPMCPrimaryBeforeEventCuts);
475
476 fHistminsignalifPionPMCPrimaryBeforeEventCutswithgoodZvertex=new TH1F("HistminsignalifPionPMCPrimaryBeforeEventCutswithgoodZvertex",";Pt[GeV/c]",kPtBins,binsPtDummy);
477 flist->Add(fHistminsignalifPionPMCPrimaryBeforeEventCutswithgoodZvertex);
478 fHistminsignalifKaonPMCPrimaryBeforeEventCutswithgoodZvertex=new TH1F("HistminsignalifKaonPMCPrimaryBeforeEventCutswithgoodZvertex",";Pt[GeV/c]",kPtBins,binsPtDummy);
479 flist->Add(fHistminsignalifKaonPMCPrimaryBeforeEventCutswithgoodZvertex);
480 fHistminsignalifProtonPMCPrimaryBeforeEventCutswithgoodZvertex=new TH1F("HistminsignalifProtonPMCPrimaryBeforeEventCutswithgoodZvertex",";Pt[GeV/c]",kPtBins,binsPtDummy);
481 flist->Add(fHistminsignalifProtonPMCPrimaryBeforeEventCutswithgoodZvertex);
482
483 fHistminsignalifAntiPionPMCPrimaryBeforeEventCutswithgoodZvertex=new TH1F("HistminsignalifAntiPionPMCPrimaryBeforeEventCutswithgoodZvertex",";Pt[GeV/c]",kPtBins,binsPtDummy);
484 flist->Add(fHistminsignalifAntiPionPMCPrimaryBeforeEventCutswithgoodZvertex);
485 fHistminsignalifAntiKaonPMCPrimaryBeforeEventCutswithgoodZvertex=new TH1F("HistminsignalifAntiKaonPMCPrimaryBeforeEventCutswithgoodZvertex",";Pt[GeV/c]",kPtBins,binsPtDummy);
486 flist->Add(fHistminsignalifAntiKaonPMCPrimaryBeforeEventCutswithgoodZvertex);
487 fHistminsignalifAntiProtonPMCPrimaryBeforeEventCutswithgoodZvertex=new TH1F("HistminsignalifAntiProtonPMCPrimaryBeforeEventCutswithgoodZvertex",";Pt[GeV/c]",kPtBins,binsPtDummy);
488 flist->Add(fHistminsignalifAntiProtonPMCPrimaryBeforeEventCutswithgoodZvertex);
489
490 fHistminsignalifPionPMCPrimaryAfterEventCutsBeforeVertexZ=new TH1F("HistminsignalifPionPMCPrimaryAfterEventCutsBeforeVertexZ",";Pt[GeV/c]",kPtBins,binsPtDummy);
491 flist->Add(fHistminsignalifPionPMCPrimaryAfterEventCutsBeforeVertexZ);
492 fHistminsignalifKaonPMCPrimaryAfterEventCutsBeforeVertexZ=new TH1F("HistminsignalifKaonPMCPrimaryAfterEventCutsBeforeVertexZ",";Pt[GeV/c]",kPtBins,binsPtDummy);
493 flist->Add(fHistminsignalifKaonPMCPrimaryAfterEventCutsBeforeVertexZ);
494 fHistminsignalifProtonPMCPrimaryAfterEventCutsBeforeVertexZ=new TH1F("HistminsignalifProtonPMCPrimaryAfterEventCutsBeforeVertexZ",";Pt[GeV/c]",kPtBins,binsPtDummy);
495 flist->Add(fHistminsignalifProtonPMCPrimaryAfterEventCutsBeforeVertexZ);
496
497 fHistminsignalifAntiPionPMCPrimaryAfterEventCutsBeforeVertexZ=new TH1F("HistminsignalifAntiPionPMCPrimaryAfterEventCutsBeforeVertexZ",";Pt[GeV/c]",kPtBins,binsPtDummy);
498 flist->Add(fHistminsignalifAntiPionPMCPrimaryAfterEventCutsBeforeVertexZ);
499 fHistminsignalifAntiKaonPMCPrimaryAfterEventCutsBeforeVertexZ=new TH1F("HistminsignalifAntiKaonPMCPrimaryAfterEventCutsBeforeVertexZ",";Pt[GeV/c]",kPtBins,binsPtDummy);
500 flist->Add(fHistminsignalifAntiKaonPMCPrimaryAfterEventCutsBeforeVertexZ);
501 fHistminsignalifAntiProtonPMCPrimaryAfterEventCutsBeforeVertexZ=new TH1F("HistminsignalifAntiProtonPMCPrimaryAfterEventCutsBeforeVertexZ",";Pt[GeV/c]",kPtBins,binsPtDummy);
502 flist->Add(fHistminsignalifAntiProtonPMCPrimaryAfterEventCutsBeforeVertexZ);
503
504
505
506 fDCAXYZforcleanPionsMCPrimary=new TH3F("fDCAXYZforcleanPionsMCPrimary",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
507 flist->Add(fDCAXYZforcleanPionsMCPrimary);
508 fDCAXYZforcleanAntiPionsMCPrimary=new TH3F("fDCAXYZforcleanAntiPionsMCPrimary",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
509 flist->Add(fDCAXYZforcleanAntiPionsMCPrimary);
510 fDCAXYZforcleanProtonsMCPrimary=new TH3F("fDCAXYZforcleanProtonsMCPrimary",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
511 flist->Add(fDCAXYZforcleanProtonsMCPrimary);
512 fDCAXYZforcleanAntiProtonsMCPrimary=new TH3F("fDCAXYZforcleanAntiProtonsMCPrimary",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
513 flist->Add(fDCAXYZforcleanAntiProtonsMCPrimary);
514
515 fDCAXYZforcleanPionsWD=new TH3F("fDCAXYZforcleanPionsWD",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
516 flist->Add(fDCAXYZforcleanPionsWD);
517 fDCAXYZforcleanAntiPionsWD=new TH3F("fDCAXYZforcleanAntiPionsWD",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
518 flist->Add(fDCAXYZforcleanAntiPionsWD);
519 //Secondrary Protons weak deacy
520
521 fDCAXYZforcleanProtonsWD=new TH3F("fDCAXYZforcleanProtonsWD",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
522 flist->Add(fDCAXYZforcleanProtonsWD);
523 fDCAXYZforcleanAntiProtonsWD=new TH3F("fDCAXYZforcleanAntiProtonsWD",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
524 flist->Add(fDCAXYZforcleanAntiProtonsWD);
525
526 fDCAXYZforcleanPionsHI=new TH3F("fDCAXYZforcleanPionsHI",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
527 flist->Add(fDCAXYZforcleanPionsHI);
528 fDCAXYZforcleanAntiPionsHI=new TH3F("fDCAXYZforcleanAntiPionsHI",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
529 flist->Add(fDCAXYZforcleanAntiPionsHI);
530 //Secondrary Protons Hadronic
531 fDCAXYZforcleanProtonsHI=new TH3F("fDCAXYZforcleanProtonsHI",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
532 flist->Add(fDCAXYZforcleanProtonsHI);
533 fDCAXYZforcleanAntiProtonsHI=new TH3F("fDCAXYZforcleanAntiProtonsHI",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
534 flist->Add(fDCAXYZforcleanAntiProtonsHI);
535 //Secondrary Pions mu el
536 fDCAXYZforcleanPionsME=new TH3F("fDCAXYZforcleanPionsME",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
537 flist->Add(fDCAXYZforcleanPionsME);
538 fDCAXYZforcleanAntiPionsME=new TH3F("fDCAXYZforcleanAntiPionsME",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
539 flist->Add(fDCAXYZforcleanAntiPionsME);
540
541 fDCAXYZforcleanPionsR=new TH3F("fDCAXYZforcleanPionsR",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
542 flist->Add(fDCAXYZforcleanPionsR);
543 fDCAXYZforcleanAntiPionsR=new TH3F("fDCAXYZforcleanAntiPionsR",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
544 flist->Add(fDCAXYZforcleanAntiPionsR);
545 //Secondrary Protons Hadronic
546 fDCAXYZforcleanProtonsR=new TH3F("fDCAXYZforcleanProtonsR",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
547 flist->Add(fDCAXYZforcleanProtonsR);
548 fDCAXYZforcleanAntiProtonsR=new TH3F("fDCAXYZforcleanAntiProtonsR",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
549 flist->Add(fDCAXYZforcleanAntiProtonsR);
550
551
552
553 fDCAXYZOpenforcleanPionsMCPrimary=new TH3F("fDCAXYZOpenforcleanPionsMCPrimary",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
554 flist->Add(fDCAXYZOpenforcleanPionsMCPrimary);
555 fDCAXYZOpenforcleanAntiPionsMCPrimary=new TH3F("fDCAXYZOpenforcleanAntiPionsMCPrimary",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
556 flist->Add(fDCAXYZOpenforcleanAntiPionsMCPrimary);
557 fDCAXYZOpenforcleanProtonsMCPrimary=new TH3F("fDCAXYZOpenforcleanProtonsMCPrimary",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
558 flist->Add(fDCAXYZOpenforcleanProtonsMCPrimary);
559 fDCAXYZOpenforcleanAntiProtonsMCPrimary=new TH3F("fDCAXYZOpenforcleanAntiProtonsMCPrimary",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
560 flist->Add(fDCAXYZOpenforcleanAntiProtonsMCPrimary);
561
562 fDCAXYZOpenforcleanPionsWD=new TH3F("fDCAXYZOpenforcleanPionsWD",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
563 flist->Add(fDCAXYZOpenforcleanPionsWD);
564 fDCAXYZOpenforcleanAntiPionsWD=new TH3F("fDCAXYZOpenforcleanAntiPionsWD",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
565 flist->Add(fDCAXYZOpenforcleanAntiPionsWD);
566 //Secondrary Protons weak deacy
567
568 fDCAXYZOpenforcleanProtonsWD=new TH3F("fDCAXYZOpenforcleanProtonsWD",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
569 flist->Add(fDCAXYZOpenforcleanProtonsWD);
570 fDCAXYZOpenforcleanAntiProtonsWD=new TH3F("fDCAXYZOpenforcleanAntiProtonsWD",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
571 flist->Add(fDCAXYZOpenforcleanAntiProtonsWD);
572
573 fDCAXYZOpenforcleanPionsHI=new TH3F("fDCAXYZOpenforcleanPionsHI",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
574 flist->Add(fDCAXYZOpenforcleanPionsHI);
575 fDCAXYZOpenforcleanAntiPionsHI=new TH3F("fDCAXYZOpenforcleanAntiPionsHI",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
576 flist->Add(fDCAXYZOpenforcleanAntiPionsHI);
577 //Secondrary Protons Hadronic
578 fDCAXYZOpenforcleanProtonsHI=new TH3F("fDCAXYZOpenforcleanProtonsHI",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
579 flist->Add(fDCAXYZOpenforcleanProtonsHI);
580 fDCAXYZOpenforcleanAntiProtonsHI=new TH3F("fDCAXYZOpenforcleanAntiProtonsHI",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
581 flist->Add(fDCAXYZOpenforcleanAntiProtonsHI);
582 //Secondrary Pions mu el
583 fDCAXYZOpenforcleanPionsME=new TH3F("fDCAXYZOpenforcleanPionsME",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
584 flist->Add(fDCAXYZOpenforcleanPionsME);
585 fDCAXYZOpenforcleanAntiPionsME=new TH3F("fDCAXYZOpenforcleanAntiPionsME",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
586 flist->Add(fDCAXYZOpenforcleanAntiPionsME);
587
588 fDCAXYZOpenforcleanPionsR=new TH3F("fDCAXYZOpenforcleanPionsR",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
589 flist->Add(fDCAXYZOpenforcleanPionsR);
590 fDCAXYZOpenforcleanAntiPionsR=new TH3F("fDCAXYZOpenforcleanAntiPionsR",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
591 flist->Add(fDCAXYZOpenforcleanAntiPionsR);
592 //Secondrary Protons Hadronic
593 fDCAXYZOpenforcleanProtonsR=new TH3F("fDCAXYZOpenforcleanProtonsR",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
594 flist->Add(fDCAXYZOpenforcleanProtonsR);
595 fDCAXYZOpenforcleanAntiProtonsR=new TH3F("fDCAXYZOpenforcleanAntiProtonsR",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
596 flist->Add(fDCAXYZOpenforcleanAntiProtonsR);
597
598
599
600 fElectronsource=new TH2F("fElectronsource","electrons;Pt [GeV/c];Process",kPtBins,binsPtDummy, kMaxMCProcess,0,kMaxMCProcess);
601 flist->Add(fElectronsource);
602 fAntiElectronsource=new TH2F("fAntiElectronsource","positrons;Pt [GeV/c];Process",kPtBins,binsPtDummy, kMaxMCProcess,0,kMaxMCProcess);
603 flist->Add(fAntiElectronsource);
604 fMuonsource=new TH2F("fMuonsource","electrons;Pt [GeV/c];Process",kPtBins,binsPtDummy, kMaxMCProcess,0,kMaxMCProcess);
605 flist->Add(fMuonsource);
606 fAntiMuonsource=new TH2F("fAntiMuonsource","positrons;Pt [GeV/c];Process",kPtBins,binsPtDummy, kMaxMCProcess,0,kMaxMCProcess);
607 flist->Add(fAntiMuonsource);
608
609 fPrimaryElectronsMother=new TH1F("fPrimaryElectronsMother",";pdg code",4990,10.5,5000.5);
610 flist->Add(fPrimaryElectronsMother);
611
612
613 PostData(1, flist);
614 Printf("end of CreateOutputObjects with MC");
615}
616//________________________________________________________________________
617void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::LocalInit()
618{
619 //LocalInit
620 Printf("end of LocalInit");
621}
622
623//________________________________________________________________________
624
625void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::UserExec(Option_t *)
626{
627 //UserExec
628 fESD = dynamic_cast<AliESDEvent*> (InputEvent());
629 if (!fESD)
630 {
631 Printf("ERROR: fESD not available");
632 return;
633 }
634 AliStack* stack=0x0;
635 Double_t mcZvertex=0.0;
636 if(fMC)
637 {
638 AliMCEvent* mcEvent = (AliMCEvent*) MCEvent();
639 Printf("MC particles: %d", mcEvent->GetNumberOfTracks());
640 stack = mcEvent->Stack();
641 mcZvertex=mcEvent->GetPrimaryVertex()->GetZ();
642 }
643
644 if(stack)//Looping over MC information of all events
645 {
646 fHistStats->Fill(8);
647 if(TMath::Abs(mcZvertex)<10.0)
648 fHistStats->Fill(9);
649 for (int imc=0;imc<stack->GetNtrack();imc++)
650 {
651 if(!(stack->IsPhysicalPrimary(imc)))
652 continue;
653 TParticle *particleMC = stack->Particle(imc);
654 if(!particleMC)
655 continue;
656 Int_t pdgcodeMC = particleMC->GetPdgCode();
657 if (TMath::Abs(particleMC->Y())>fYCut)
658 continue;
659 if (particleMC->Pt()>2.0)
660 continue;
661 if(pdgcodeMC==211)
662 fHistminsignalifPionPMCPrimaryBeforeEventCuts->Fill(particleMC->Pt());
663 if(pdgcodeMC==-211)
664 fHistminsignalifAntiPionPMCPrimaryBeforeEventCuts->Fill(particleMC->Pt());
665 if(pdgcodeMC==321)
666 fHistminsignalifKaonPMCPrimaryBeforeEventCuts->Fill(particleMC->Pt());
667 if(pdgcodeMC==-321)
668 fHistminsignalifAntiKaonPMCPrimaryBeforeEventCuts->Fill(particleMC->Pt());
669 if(pdgcodeMC==2212)
670 fHistminsignalifProtonPMCPrimaryBeforeEventCuts->Fill(particleMC->Pt());
671 if(pdgcodeMC==-2212)
672 fHistminsignalifAntiProtonPMCPrimaryBeforeEventCuts->Fill(particleMC->Pt());
673
674 if(TMath::Abs(mcZvertex)>10.0)
675 continue;
676
677 if(pdgcodeMC==211)
678 fHistminsignalifPionPMCPrimaryBeforeEventCutswithgoodZvertex->Fill(particleMC->Pt());
679 if(pdgcodeMC==-211)
680 fHistminsignalifAntiPionPMCPrimaryBeforeEventCutswithgoodZvertex->Fill(particleMC->Pt());
681 if(pdgcodeMC==321)
682 fHistminsignalifKaonPMCPrimaryBeforeEventCutswithgoodZvertex->Fill(particleMC->Pt());
683 if(pdgcodeMC==-321)
684 fHistminsignalifAntiKaonPMCPrimaryBeforeEventCutswithgoodZvertex->Fill(particleMC->Pt());
685 if(pdgcodeMC==2212)
686 fHistminsignalifProtonPMCPrimaryBeforeEventCutswithgoodZvertex->Fill(particleMC->Pt());
687 if(pdgcodeMC==-2212)
688 fHistminsignalifAntiProtonPMCPrimaryBeforeEventCutswithgoodZvertex->Fill(particleMC->Pt());
689 }
690 }
691 fHistStats->Fill(0);
692 //Event selection
693 //if( ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()==0)
694 UInt_t isSelected = 0;
695 if(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler())))
696 isSelected=((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
697 Printf("Mask_selection %d", isSelected);
698 if(!(isSelected&AliVEvent::kMB))
699 {
700 Printf("Not Physics event.........\n");
701 PostData(1, flist);
702 Printf("end of Exec");
703 return;
704 }
705 fHistStats->Fill(1);
706 //Good vertex
707 const AliESDVertex *vertex = fESD->GetPrimaryVertexTracks();
708 if(vertex->GetNContributors()<1)
709 {
710 // SPD vertex
711 vertex = fESD->GetPrimaryVertexSPD();
712 if(vertex->GetNContributors()<1)
713 {
714 Printf("No good Vertex.........\n");
715 PostData(1, flist);
716 Printf("end of Exec");
717 return;
718 }
719 }
720 if(stack)
721 {
722 for (int imc=0;imc<stack->GetNtrack();imc++)
723 {
724 if(!(stack->IsPhysicalPrimary(imc)))
725 continue;
726 TParticle *particleMC = stack->Particle(imc);
727 if(!particleMC)
728 continue;
729 Int_t pdgcodeMC = particleMC->GetPdgCode();
730 if (TMath::Abs(particleMC->Y())>fYCut)
731 continue;
732 if (particleMC->Pt()>2.0)
733 continue;
734 if(pdgcodeMC==211)
735 fHistminsignalifPionPMCPrimaryAfterEventCutsBeforeVertexZ->Fill(particleMC->Pt());
736 if(pdgcodeMC==-211)
737 fHistminsignalifAntiPionPMCPrimaryAfterEventCutsBeforeVertexZ->Fill(particleMC->Pt());
738 if(pdgcodeMC==321)
739 fHistminsignalifKaonPMCPrimaryAfterEventCutsBeforeVertexZ->Fill(particleMC->Pt());
740 if(pdgcodeMC==-321)
741 fHistminsignalifAntiKaonPMCPrimaryAfterEventCutsBeforeVertexZ->Fill(particleMC->Pt());
742 if(pdgcodeMC==2212)
743 fHistminsignalifProtonPMCPrimaryAfterEventCutsBeforeVertexZ->Fill(particleMC->Pt());
744 if(pdgcodeMC==-2212)
745 fHistminsignalifAntiProtonPMCPrimaryAfterEventCutsBeforeVertexZ->Fill(particleMC->Pt());
746 }
747 }
748 fHistStats->Fill(2);
749 if(TMath::Abs(vertex ->GetZ())>10.0)
750 {
751 Printf("No good Z of Vertex.........\n");
752 PostData(1, flist);
753 Printf("end of Exec");
754 return;
755 }
756 fHistStats->Fill(3);
757
758 if(fCuts==0)
759 {
760 Printf("No CUTS Defined.........\n");
761 PostData(1, flist);
762 Printf("end of Exec");
763 return;
764 }
765
766 Printf("There are %d tracks in this event", fESD->GetNumberOfTracks());
767 Int_t nTracks=fESD->GetNumberOfTracks();
768
769 Int_t mynumberoftracks=0;
770 AliESDtrack *trackESD=0;
771
772 const Float_t pionmass=0.13957;
773 const Float_t kaonmass=0.493677;
774 const Float_t protonmass=0.938272;
775
776 for(int tr1=0;tr1<nTracks;tr1++)
777 {
778
779 trackESD=fESD->GetTrack(tr1);
780 //fHistStats->Fill(2);
781
782 Double_t pt=trackESD->Pt()*trackESD->GetSign();
783 Double_t p=trackESD->P();
784 Double_t eta=trackESD->Eta();
785 Double_t phi=trackESD->Phi();
786 Float_t dcaxy, dcaz;
787 Double_t pz=trackESD->Pz();
788 UShort_t nTPCclusters=trackESD->GetTPCNcls();
789 fHistPhiPtBeforeCuts->Fill(phi,pt);//phi pt
790 fHistEtaPtBeforeCuts->Fill(eta,pt);
791 fHistDCABeforeCuts->Fill(dcaxy,dcaz);
792 //standart cuts
793 if(fCuts->AcceptTrack(trackESD)==kFALSE)
794 continue;
795 //Tpc pid cut for debug
796 Double_t pinTPC=trackESD->GetTPCInnerParam()->GetP();//momentum in primary vertex taken from TPC tracking
797 Double_t pinTPCglobal=trackESD->GetInnerParam()->GetP();//momentum at the inner wall of the TPC taken from global tracking
798 Float_t sigKaon = fESDpid->GetTPCResponse().GetExpectedSignal(pinTPCglobal, AliPID::kKaon);
799 Float_t sigProton = fESDpid->GetTPCResponse().GetExpectedSignal(pinTPCglobal, AliPID::kProton);
800 Double_t tpcSignal =trackESD ->GetTPCsignal();
801 trackESD->GetImpactParameters(dcaxy,dcaz);
802 if(fTPCPIDCUT)
803 {
804 if(fTPCPIDCUT->AcceptTrack(trackESD,fESD)==kFALSE)
805 continue;
806 }
807 Bool_t cutDCA=SelectOnImpPar(trackESD);
808
809 //fHistStats->Fill(4);
810 Double_t tmpQESD[4]={-1.0,-1.0,-1.0,-1.0};
811 trackESD->GetITSdEdxSamples(tmpQESD);
812 if(fCorrectSDD&&fMC)
813 CorrectSDD(tmpQESD );
814 if(fCorrectSSD&&fMC)
815 CorrectSSD(tmpQESD );
816 Int_t nSSDSDD=0;
817 Int_t nSSDSDDall=0;
818
819 //Y assumtion
820 Float_t yforpion=0.5*TMath::Log((TMath::Sqrt(pionmass*pionmass+p*p)+pz)/(TMath::Sqrt(pionmass*pionmass+p*p)-pz));
821 Float_t yforkaon=0.5*TMath::Log((TMath::Sqrt(kaonmass*kaonmass+p*p)+pz)/(TMath::Sqrt(kaonmass*kaonmass+p*p)-pz));
822 Float_t yforproton=0.5*TMath::Log((TMath::Sqrt(protonmass*protonmass+p*p)+pz)/(TMath::Sqrt(protonmass*protonmass+p*p)-pz));
823
824 if(TMath::Abs(yforpion)>fYCut&&TMath::Abs(yforkaon)>fYCut&&TMath::Abs(yforproton)>fYCut) //go trought one y cut
825 continue;
826
827 if(TMath::Abs(yforpion)<fYCut&&cutDCA)
828 fHistNtrackwithstandardcuts->Fill(TMath::Abs(pt),0);
829 if(TMath::Abs(yforkaon)<fYCut&&cutDCA)
830 {
831 fHistNtrackwithstandardcuts->Fill(TMath::Abs(pt),1);
832 if(pt>0.0)
833 fHistSignalinTPCKaonforstandardcuts->Fill(pt,(tpcSignal-sigKaon)/sigKaon);
834 else
835 fHistSignalinTPCAntiKaonforstandardcuts->Fill(TMath::Abs(pt),(tpcSignal-sigKaon)/sigKaon);
836 }
837 if(TMath::Abs(yforproton)<fYCut&&cutDCA)
838 {
839 fHistNtrackwithstandardcuts->Fill(TMath::Abs(pt),2);
840 if(pt>0.0)
841 fHistSignalinTPCProtonforstandardcuts->Fill(pt,(tpcSignal-sigProton)/sigProton);
842 else
843 fHistSignalinTPCAntiProtonforstandardcuts->Fill(TMath::Abs(pt),(tpcSignal-sigProton)/sigProton);
844 }
845
846
847 for (int iL=0;iL<4;iL++)
848 {
849 if(tmpQESD[iL]>fchargeCut)
850 nSSDSDD++;
851 if(tmpQESD[iL]>0.0)
852 nSSDSDDall++;
853 }
854 if(nSSDSDDall>=3)
855 fHistStats->Fill(4);
856 //ITS PId cut
857 if(nSSDSDD<3)
858 {
859 // cout<<"BAD "<<stack->Particle(TMath::Abs(trackESD->GetLabel()))->GetPdgCode()<<endl;
860 continue;
861 }
862 if(TMath::Abs(yforpion)<fYCut&&cutDCA)
863 {
864 fHistNtrackwithITSPIDcuts->Fill(TMath::Abs(pt),0);
865 if(pt>0.0)
866 fPionNTPCClusters->Fill(pt,nTPCclusters);
867 else
868 fAntiPionNTPCClusters->Fill(TMath::Abs(pt),nTPCclusters);
869 }
870 if(TMath::Abs(yforkaon)<fYCut&&cutDCA)
871 {
872 fHistNtrackwithITSPIDcuts->Fill(TMath::Abs(pt),1);
873 if(pt>0.0)
874 fHistSignalinTPCKaonforITSPIDcuts->Fill(pt,(tpcSignal-sigKaon)/sigKaon);
875 else
876 fHistSignalinTPCAntiKaonforITSPIDcuts->Fill(TMath::Abs(pt),(tpcSignal-sigKaon)/sigKaon);
877 }
878 if(TMath::Abs(yforproton)<fYCut&&cutDCA)
879 {
880 fHistNtrackwithITSPIDcuts->Fill(TMath::Abs(pt),2);
881 if(pt>0.0)
882 fHistSignalinTPCProtonforITSPIDcuts->Fill(pt,(tpcSignal-sigProton)/sigProton);
883 else
884 fHistSignalinTPCAntiProtonforITSPIDcuts->Fill(TMath::Abs(pt),(tpcSignal-sigProton)/sigProton);
885 }
886 fHistStats->Fill(5);
887 fHistPhiPtAfterCuts->Fill(phi,pt);
888 fHistEtaPtAfterCuts->Fill(eta,pt);
889 fHistDCAAfterCuts->Fill(dcaxy,dcaz);
890 fHistPminusTPCinPAfterCuts->Fill(pinTPC-p,pinTPC);
891 fHistPminusTPCinPglobalAfterCuts->Fill(pinTPC-p,pinTPCglobal);
892 if(tmpQESD[0]>fchargeCut)
893 {
894 fHistL3dEP->Fill(p,tmpQESD[0]);
895 fHistL3dETPCinP->Fill(pinTPC,tmpQESD[0]);
896 }
897 if(tmpQESD[1]>fchargeCut)
898 {
899 fHistL4dEP->Fill(p,tmpQESD[1]);
900 fHistL4dETPCinP->Fill(pinTPC,tmpQESD[1]);
901 }
902 if(tmpQESD[2]>fchargeCut)
903 {
904 fHistL5dEP->Fill(p,tmpQESD[2]);
905 fHistL5dETPCinP->Fill(pinTPC,tmpQESD[2]);
906 }
907 if(tmpQESD[3]>fchargeCut)
908 {
909 fHistL6dEP->Fill(p,tmpQESD[3]);
910 fHistL6dETPCinP->Fill(pinTPC,tmpQESD[3]);
911 }
912 Float_t myITSsignal=0.0;
913 Float_t minITSsignal=0.0;
914 Int_t whichLmin=-1;
915 Int_t nosignaL=-1;
916 if(nSSDSDD==3)
917 {
918 Double_t tmp2QESD[3];
919 Int_t iLnotZero=0;
920 for (int iL=0;iL<4;iL++)
921 {
922 if(tmpQESD[iL]>fchargeCut)
923 {
924 tmp2QESD[iLnotZero]=tmpQESD[iL];
925 iLnotZero++;
926 }
927 else
928 nosignaL=iL;
929 }
930 whichLmin=TMath::LocMin(3,tmp2QESD);
931 if(nosignaL>-1&&nosignaL<=whichLmin)
932 whichLmin++;
933 minITSsignal=TMath::MinElement(3,tmp2QESD);
934 myITSsignal=MyITSsignalusing3points(tmp2QESD);
935 }
936 if(nSSDSDD==4)
937 {
938 myITSsignal=MyITSsignalusing4points(tmpQESD);
939 whichLmin=TMath::LocMin(4,tmpQESD);
940 minITSsignal=TMath::MinElement(4,tmpQESD);
941 }
942
943 if(whichLmin==0)
944 fHistwhichhasmin->Fill(0);
945 if(whichLmin==1)
946 fHistwhichhasmin->Fill(1);
947 if(whichLmin==2)
948 fHistwhichhasmin->Fill(2);
949 if(whichLmin==3)
950 fHistwhichhasmin->Fill(3);
951 if(pt>0.0)
952 {
953 fHistMydEPpositive->Fill(p,myITSsignal);
954 fHistMydETPCinPglobalpositive->Fill(pinTPCglobal,myITSsignal);
955 fHistMydETPCinPpositive->Fill(pinTPC,myITSsignal);
956 }
957 else
958 {
959 fHistMydEPnegative->Fill(p,myITSsignal);
960 fHistMydETPCinPglobalnegative->Fill(pinTPCglobal,myITSsignal);
961 fHistMydETPCinPnegative->Fill(pinTPC,myITSsignal);
962 }
963 Float_t signaltouse=myITSsignal;
964
965
966 Float_t itspidsignalforpions=TMath::Log(signaltouse)-TMath::Log(BBparametrization(p/pionmass,fpar));
967 Float_t itspidsignalforkaons=TMath::Log(signaltouse)-TMath::Log(BBparametrization(p/kaonmass,fpar));
968 Float_t itspidsignalforprotons=TMath::Log(signaltouse)-TMath::Log(BBparametrization(p/protonmass,fpar));
969 if(cutDCA)
970 mynumberoftracks++;
971
972 Int_t pa= TypeofParticle(pinTPC,signaltouse);
973 Int_t label=-1;
974 if(fMC)
975 label=trackESD->GetLabel();
976 Int_t pdgcode=0;
977 Int_t primary=0;
978 Double_t chargeMC=1.0;
979 Float_t etaMC=10.0;
980 Float_t ptMC=10.0;
981 Int_t uniqueID=-1;
982 Int_t pdgcodefake=0;
983 Int_t primaryfake=0;
984
985
986 TParticle *particle2=0x0;
987
988 if(label>0&&stack&&fMC)
989 {
990 primary=stack->IsPhysicalPrimary(TMath::Abs(label));
991 particle2 = stack->Particle(TMath::Abs(label));
992 pdgcode=particle2->GetPdgCode();
993 chargeMC=particle2->GetPDG(0)->Charge()/3.0;
994 etaMC=particle2->Eta();
995 ptMC=particle2->Pt();
996 uniqueID=particle2->GetUniqueID();
997 }
998 if(label<0&&stack&&fMC)
999 {
1000 primaryfake=stack->IsPhysicalPrimary(TMath::Abs(label));
1001 particle2 = stack->Particle(TMath::Abs(label));
1002 pdgcodefake=particle2->GetPdgCode();
1003 uniqueID=particle2->GetUniqueID();
1004
1005 }
1006 if(pa==0&&TMath::Abs(yforpion)<=fYCut&&cutDCA)
1007 {
1008 fHistEtaPtPions->Fill(eta,pt);
1009 fHistminsignalforPionP->Fill(pinTPC,signaltouse);
1010 if(stack&&fMC)
1011 {
1012 if(!primary)
1013 fHistEtaPtPionsCon->Fill(etaMC,chargeMC*ptMC);
1014 if(primary&&TMath::Abs(pdgcode)!=211)
1015 fHistEtaPtPionsConPID->Fill(etaMC,chargeMC*ptMC);
1016 if(primary&&TMath::Abs(pdgcode)==211)
1017 fHistEtaPtPionsMCDET->Fill(eta,pt);
1018 }
1019 }
1020 if(pa==1&&TMath::Abs(yforkaon)<=fYCut&&cutDCA)
1021 {
1022 fHistEtaPtKaons->Fill(eta,pt);
1023 fHistminsignalforKaonP->Fill(pinTPC,signaltouse);
1024 if(stack&&fMC)
1025 {
1026 if(!primary)
1027 fHistEtaPtKaonsCon->Fill(etaMC,chargeMC*ptMC);
1028 if(primary&&TMath::Abs(pdgcode)!=321)
1029 fHistEtaPtKaonsConPID->Fill(etaMC,chargeMC*ptMC);
1030 if(primary&&TMath::Abs(pdgcode)==321)
1031 fHistEtaPtKaonsMCDET->Fill(eta,pt);
1032 }
1033 }
1034 if(pa==2&&TMath::Abs(yforproton)<=fYCut&&cutDCA)
1035 {
1036 fHistEtaPtProtons->Fill(eta,pt);
1037 fHistminsignalforProtonP->Fill(pinTPC,signaltouse);
1038 if(stack&&fMC)
1039 {
1040 if(!primary)
1041 fHistEtaPtProtonsCon->Fill(etaMC,chargeMC*ptMC);
1042 if(primary&&TMath::Abs(pdgcode)!=2212)
1043 fHistEtaPtProtonsConPID->Fill(etaMC,chargeMC*ptMC);
1044 if(primary&&TMath::Abs(pdgcode)==2212)
1045 fHistEtaPtProtonsMCDET->Fill(eta,pt);
1046 }
1047 }
1048 if(TMath::Abs(yforpion)<=fYCut)
1049 {
1050 if(pt>0.0)
1051 {
1052 if(cutDCA)
1053 {
1054 fHistminsignalifPionP->Fill(pt,itspidsignalforpions);
1055 if(TMath::Abs(itspidsignalforpions)<0.2) //select on clean
1056 {
1057 fDCAXYZforcleanPions->Fill(pt,dcaxy,dcaz);
1058 if(fMC)
1059 {
1060 if(primary&&pdgcode==211)
1061 fDCAXYZforcleanPionsMCPrimary->Fill(pt,dcaxy,dcaz);
1062 else if(!primary&&pdgcode==211&&uniqueID==kPDecay)
1063 fDCAXYZforcleanPionsWD->Fill(pt,dcaxy,dcaz);
1064 else if(!primary&&pdgcode==211&&uniqueID==kPHadronic)
1065 fDCAXYZforcleanPionsHI->Fill(pt,dcaxy,dcaz);
1066 else if(!primary&&(pdgcode==-11||pdgcode==-13))
1067 fDCAXYZforcleanPionsME->Fill(pt,dcaxy,dcaz);
1068 else
1069 fDCAXYZforcleanPionsR->Fill(pt,dcaxy,dcaz);
1070
1071 }
1072 } //select on clean
1073 if(primary)
1074 {
1075 if(pdgcode==211)
1076 fHistminsignalifPionPPrimary->Fill(pt,itspidsignalforpions);
1077 }
1078 else
1079 {
1080 if(pdgcode==211)
1081 fHistminsignalifPionPSecondary->Fill(pt,itspidsignalforpions);
1082 //cout<<pdgcode<<" "<< uniqueID<<" "<<kPDecay<<" "<<kPHadronic<<endl;
1083 }
1084 if(pdgcode==-11||pdgcode==-13)
1085 {
1086 fHistminsignalifMuEPositiveP->Fill(pt,itspidsignalforpions);
1087 if(pdgcode==-11)
1088 {
1089 fHistStats->Fill(6);
1090 fAntiElectronsource->Fill(pt,uniqueID);
1091 }
1092 else if(pdgcode==-13)
1093 {
1094 fHistStats->Fill(7);
1095 fAntiMuonsource->Fill(pt,uniqueID);
1096 }
1097 if(primary&&pdgcode==-11)
1098 fPrimaryElectronsMother->Fill(stack->Particle(particle2->GetFirstMother())->GetPdgCode());
1099 }
1100 if(pdgcodefake==211)
1101 {
1102 if(primaryfake)
1103 fHistminsignalifPionPrimaryfake->Fill(pt,itspidsignalforpions);
1104 else
1105 fHistminsignalifPionSecondaryfake->Fill(pt,itspidsignalforpions);
1106 }
1107 }
1108 if(TMath::Abs(itspidsignalforpions)<0.2) //select on clean
1109 {
1110 fDCAXYZOpenforcleanPions->Fill(pt,dcaxy,dcaz);
1111 if(fMC)
1112 {
1113 if(primary&&pdgcode==211)
1114 fDCAXYZOpenforcleanPionsMCPrimary->Fill(pt,dcaxy,dcaz);
1115 else if(!primary&&pdgcode==211&&uniqueID==kPDecay)
1116 fDCAXYZOpenforcleanPionsWD->Fill(pt,dcaxy,dcaz);
1117 else if(!primary&&pdgcode==211&&uniqueID==kPHadronic)
1118 fDCAXYZOpenforcleanPionsHI->Fill(pt,dcaxy,dcaz);
1119 else if(!primary&&(pdgcode==-11||pdgcode==-13))
1120 fDCAXYZOpenforcleanPionsME->Fill(pt,dcaxy,dcaz);
1121 else
1122 fDCAXYZOpenforcleanPionsR->Fill(pt,dcaxy,dcaz);
1123 }
1124 }
1125 }
1126 else
1127 {
1128 if(cutDCA)
1129 {
1130 fHistminsignalifAntiPionP->Fill(TMath::Abs(pt),itspidsignalforpions);
1131 if(TMath::Abs(itspidsignalforpions)<0.2)//select on clean
1132 {
1133 fDCAXYZforcleanAntiPions->Fill(TMath::Abs(pt),dcaxy,dcaz);
1134 if(fMC)
1135 {
1136 if(primary&&pdgcode==-211)
1137 fDCAXYZforcleanAntiPionsMCPrimary->Fill(TMath::Abs(pt),dcaxy,dcaz);
1138 else if(!primary&&pdgcode==-211&&uniqueID==kPDecay)
1139 fDCAXYZforcleanAntiPionsWD->Fill(TMath::Abs(pt),dcaxy,dcaz);
1140 else if(!primary&&pdgcode==-211&&uniqueID==kPHadronic)
1141 fDCAXYZforcleanAntiPionsHI->Fill(TMath::Abs(pt),dcaxy,dcaz);
1142 else if(!primary&&(pdgcode==11||pdgcode==13))
1143 fDCAXYZforcleanAntiPionsME->Fill(TMath::Abs(pt),dcaxy,dcaz);
1144 else
1145 fDCAXYZforcleanAntiPionsR->Fill(TMath::Abs(pt),dcaxy,dcaz);
1146 }
1147 } //select on clean
1148 if(primary)
1149 {
1150 if(pdgcode==-211)
1151 fHistminsignalifAntiPionPPrimary->Fill(TMath::Abs(pt),itspidsignalforpions);
1152 }
1153 else
1154 {
1155 if(pdgcode==-211)
1156 fHistminsignalifAntiPionPSecondary->Fill(TMath::Abs(pt),itspidsignalforpions);
1157 //cout<<pdgcode<<" "<< uniqueID<<" "<<kPDecay<<" "<<kPHadronic<<endl;
1158 }
1159 if(pdgcode==11||pdgcode==13)
1160 {
1161 fHistminsignalifMuENegativeP->Fill(TMath::Abs(pt),itspidsignalforpions);
1162 if(pdgcode==11)
1163 {
1164 fHistStats->Fill(6);
1165 fElectronsource->Fill(TMath::Abs(pt),uniqueID);
1166 }
1167 else if(pdgcode==13)
1168 {
1169 fHistStats->Fill(7);
1170 fMuonsource->Fill(TMath::Abs(pt),uniqueID);
1171 }
1172 if(primary&&pdgcode==11)
1173 fPrimaryElectronsMother->Fill(stack->Particle(particle2->GetFirstMother())->GetPdgCode());
1174 }
1175 if(pdgcodefake==-211)
1176 {
1177 if(primaryfake)
1178 fHistminsignalifAntiPionPrimaryfake->Fill(TMath::Abs(pt),itspidsignalforpions);
1179 else
1180 fHistminsignalifAntiPionSecondaryfake->Fill(TMath::Abs(pt),itspidsignalforpions);
1181 }
1182 }
1183 if(TMath::Abs(itspidsignalforpions)<0.2)//select on clean
1184 {
1185 fDCAXYZOpenforcleanAntiPions->Fill(TMath::Abs(pt),dcaxy,dcaz);
1186 if(fMC)
1187 {
1188 if(primary&&pdgcode==-211)
1189 fDCAXYZOpenforcleanAntiPionsMCPrimary->Fill(TMath::Abs(pt),dcaxy,dcaz);
1190 else if(!primary&&pdgcode==-211&&uniqueID==kPDecay)
1191 fDCAXYZOpenforcleanAntiPionsWD->Fill(TMath::Abs(pt),dcaxy,dcaz);
1192 else if(!primary&&pdgcode==-211&&uniqueID==kPHadronic)
1193 fDCAXYZOpenforcleanAntiPionsHI->Fill(TMath::Abs(pt),dcaxy,dcaz);
1194 else if(!primary&&(pdgcode==11||pdgcode==13))
1195 fDCAXYZOpenforcleanAntiPionsME->Fill(TMath::Abs(pt),dcaxy,dcaz);
1196 else
1197 fDCAXYZOpenforcleanAntiPionsR->Fill(TMath::Abs(pt),dcaxy,dcaz);
1198 }
1199 } //sel
1200 }
1201 }
1202 if(TMath::Abs(yforkaon)<=fYCut&&cutDCA)
1203 {
1204 if(pt>0.0)
1205 {
1206 fHistminsignalifKaonP->Fill(pt,itspidsignalforkaons);
1207 if(primary)
1208 {
1209 if(pdgcode==321)
1210 fHistminsignalifKaonPPrimary->Fill(pt,itspidsignalforkaons);
1211 }
1212 else
1213 {
1214 if(pdgcode==321)
1215 fHistminsignalifKaonPSecondary->Fill(pt,itspidsignalforkaons);
1216 }
1217 if(pdgcodefake==321)
1218 {
1219 if(primaryfake)
1220 fHistminsignalifKaonPrimaryfake->Fill(pt,itspidsignalforkaons);
1221 else
1222 fHistminsignalifKaonSecondaryfake->Fill(pt,itspidsignalforkaons);
1223 }
1224 }
1225 else
1226 {
1227 fHistminsignalifAntiKaonP->Fill(TMath::Abs(pt),itspidsignalforkaons);
1228 if(primary)
1229 {
1230 if(pdgcode==-321)
1231 fHistminsignalifAntiKaonPPrimary->Fill(TMath::Abs(pt),itspidsignalforkaons);
1232 }
1233 else
1234 {
1235 if(pdgcode==-321)
1236 fHistminsignalifAntiKaonPSecondary->Fill(TMath::Abs(pt),itspidsignalforkaons);
1237 }
1238 if(pdgcodefake==-321)
1239 {
1240 if(primaryfake)
1241 fHistminsignalifAntiKaonPrimaryfake->Fill(TMath::Abs(pt),itspidsignalforkaons);
1242 else
1243 fHistminsignalifAntiKaonSecondaryfake->Fill(TMath::Abs(pt),itspidsignalforkaons);
1244
1245 }
1246 }
1247 }
1248 if(TMath::Abs(yforproton)<=fYCut)
1249 {
1250 if(pt>0.0)
1251 {
1252 if(cutDCA)
1253 {
1254 fHistminsignalifProtonP->Fill(pt,itspidsignalforprotons);
1255
1256 //if(((itspidsignalforprotons))>(TMath::Abs(pt)<0.45?-0.2:0.0))&&(itspidsignalforprotons))<0.2)//select on
1257 // clean
1258 if((itspidsignalforprotons>-0.2)&&(itspidsignalforprotons<0.5))
1259 {
1260 fDCAXYZforcleanProtons->Fill(pt,dcaxy,dcaz);
1261 if(fMC)
1262 {
1263 if(primary&&pdgcode==2212)
1264 fDCAXYZforcleanProtonsMCPrimary->Fill(pt,dcaxy,dcaz);
1265 else if(!primary&&!primaryfake&&(pdgcode==2212||pdgcodefake==2212)&&uniqueID==kPDecay)
1266 fDCAXYZforcleanProtonsWD->Fill(pt,dcaxy,dcaz);
1267 else if(!primary&&!primaryfake&&(pdgcode==2212||pdgcodefake==2212)&&uniqueID==kPHadronic)
1268 fDCAXYZforcleanProtonsHI->Fill(pt,dcaxy,dcaz);
1269 else
1270 fDCAXYZforcleanProtonsR->Fill(pt,dcaxy,dcaz);
1271 }
1272 }//select on clean
1273 if(primary)
1274 {
1275 if(pdgcode==2212)
1276 fHistminsignalifProtonPPrimary->Fill(pt,itspidsignalforprotons);
1277 }
1278 else if(primaryfake)
1279 {
1280 if(pdgcodefake==2212)
1281 fHistminsignalifProtonPPrimaryfake->Fill(pt,itspidsignalforprotons);
1282 }
1283 else
1284 {
1285 if(pdgcode==2212&&uniqueID==kPDecay)
1286 fHistminsignalifProtonPSecondaryWD->Fill(pt,itspidsignalforprotons);
1287 else if(pdgcode==2212&&uniqueID==kPHadronic)
1288 fHistminsignalifProtonPSecondaryHI->Fill(pt,itspidsignalforprotons);
1289 else if(pdgcodefake==2212&&uniqueID==kPDecay)
1290 fHistminsignalifProtonPSecondaryWDfake->Fill(pt,itspidsignalforprotons);
1291 else if(pdgcodefake==2212&&uniqueID==kPHadronic)
1292 fHistminsignalifProtonPSecondaryHIfake->Fill(pt,itspidsignalforprotons);
1293 else if(fMC)
1294 fHistminsignalifProtonPSecondaryRest->Fill(pt,itspidsignalforprotons);
1295 }
1296 }
1297
1298 if((itspidsignalforprotons>-0.2)&&(itspidsignalforprotons<0.5))
1299 {
1300 fDCAXYZOpenforcleanProtons->Fill(pt,dcaxy,dcaz);
1301 if(fMC)
1302 {
1303 if(primary&&pdgcode==2212)
1304 fDCAXYZOpenforcleanProtonsMCPrimary->Fill(pt,dcaxy,dcaz);
1305 else if(!primary&&!primaryfake&&(pdgcode==2212||pdgcodefake==2212)&&uniqueID==kPDecay)
1306 fDCAXYZOpenforcleanProtonsWD->Fill(pt,dcaxy,dcaz);
1307 else if(!primary&&!primaryfake&&(pdgcode==2212||pdgcodefake==2212)&&uniqueID==kPHadronic)
1308 fDCAXYZOpenforcleanProtonsHI->Fill(pt,dcaxy,dcaz);
1309 else
1310 fDCAXYZOpenforcleanProtonsR->Fill(pt,dcaxy,dcaz);
1311 }
1312 }//select on clean
1313
1314 }
1315 else
1316 {
1317 if(cutDCA)
1318 {
1319 fHistminsignalifAntiProtonP->Fill(TMath::Abs(pt),itspidsignalforprotons);
1320 if((itspidsignalforprotons>-0.2)&&(itspidsignalforprotons<0.5))
1321 {//select on clean
1322 fDCAXYZforcleanAntiProtons->Fill(TMath::Abs(pt),dcaxy,dcaz);
1323 if(fMC)
1324 {
1325 if(primary&&pdgcode==-2212)
1326 fDCAXYZforcleanAntiProtonsMCPrimary->Fill(TMath::Abs(pt),dcaxy,dcaz);
1327 else if(!primary&&!primaryfake&&(pdgcode==-2212||pdgcodefake==-2212)&&uniqueID==kPDecay)
1328 fDCAXYZforcleanAntiProtonsWD->Fill(TMath::Abs(pt),dcaxy,dcaz);
1329 else if(!primary&&!primaryfake&&(pdgcode==-2212||pdgcodefake==-2212)&&uniqueID==kPHadronic)
1330 fDCAXYZforcleanAntiProtonsHI->Fill(TMath::Abs(pt),dcaxy,dcaz);
1331 else if(fMC)
1332 fDCAXYZforcleanAntiProtonsR->Fill(TMath::Abs(pt),dcaxy,dcaz);
1333 }
1334 }//select on clean
1335 if(primary)
1336 {
1337 if(pdgcode==-2212)
1338 fHistminsignalifAntiProtonPPrimary->Fill(TMath::Abs(pt),itspidsignalforprotons);
1339 }
1340 else if(primaryfake)
1341 {
1342 if(pdgcodefake==-2212)
1343 fHistminsignalifAntiProtonPPrimaryfake->Fill(TMath::Abs(pt),itspidsignalforprotons);
1344 }
1345 else
1346 {
1347 if(pdgcode==-2212&&uniqueID==kPDecay)
1348 fHistminsignalifAntiProtonPSecondaryWD->Fill(TMath::Abs(pt),itspidsignalforprotons);
1349 else if(pdgcode==-2212&&uniqueID==kPHadronic)
1350 fHistminsignalifAntiProtonPSecondaryHI->Fill(TMath::Abs(pt),itspidsignalforprotons);
1351 else if(pdgcodefake==-2212&&uniqueID==kPDecay)
1352 fHistminsignalifAntiProtonPSecondaryWDfake->Fill(TMath::Abs(pt),itspidsignalforprotons);
1353 else if(pdgcodefake==-2212&&uniqueID==kPHadronic)
1354 fHistminsignalifAntiProtonPSecondaryHIfake->Fill(TMath::Abs(pt),itspidsignalforprotons);
1355 else if(fMC)
1356 fHistminsignalifAntiProtonPSecondaryRest->Fill(TMath::Abs(pt),itspidsignalforprotons);
1357 }
1358 }
1359 if((itspidsignalforprotons>-0.2)&&(itspidsignalforprotons<0.5))
1360 {//select on clean
1361 fDCAXYZOpenforcleanAntiProtons->Fill(TMath::Abs(pt),dcaxy,dcaz);
1362 if(fMC)
1363 {
1364 if(primary&&pdgcode==-2212)
1365 fDCAXYZOpenforcleanAntiProtonsMCPrimary->Fill(TMath::Abs(pt),dcaxy,dcaz);
1366 else if(!primary&&!primaryfake&&(pdgcode==-2212||pdgcodefake==-2212)&&uniqueID==kPDecay)
1367 fDCAXYZOpenforcleanAntiProtonsWD->Fill(TMath::Abs(pt),dcaxy,dcaz);
1368 else if(!primary&&!primaryfake&&(pdgcode==-2212||pdgcodefake==-2212)&&uniqueID==kPHadronic)
1369 fDCAXYZOpenforcleanAntiProtonsHI->Fill(TMath::Abs(pt),dcaxy,dcaz);
1370 else if(fMC)
1371 fDCAXYZOpenforcleanAntiProtonsR->Fill(TMath::Abs(pt),dcaxy,dcaz);
1372 }
1373 }
1374 }
1375 }
1376 }
1377 fHistStandartMul->Fill(AliESDtrackCuts::GetReferenceMultiplicity(fESD,1));
1378 fHistMytrackMul->Fill(mynumberoftracks);
1379
1380
1381 if(stack)//Looping over MC information of all events which passed ESD cuts
1382 {
1383 for (int imc=0;imc<stack->GetNtrack();imc++)
1384 {
1385 if(!(stack->IsPhysicalPrimary(imc)))
1386 continue;
1387 TParticle *particleMC = stack->Particle(imc);
1388 if(!particleMC)
1389 continue;
1390 Int_t pdgcodeMC = particleMC->GetPdgCode();
1391 if (TMath::Abs(particleMC->Y())>fYCut)
1392 continue;
1393 if (particleMC->Pt()>2.0)
1394 continue;
1395 if(pdgcodeMC==211)
1396 {
1397 fHistEtaPtPionsMC->Fill(particleMC->Eta(),particleMC->Pt());
1398 fHistminsignalifPionPMCPrimary->Fill(particleMC->Pt());
1399 }
1400 if(pdgcodeMC==-211)
1401 {
1402 fHistEtaPtPionsMC->Fill(particleMC->Eta(),-1.0*particleMC->Pt());
1403 fHistminsignalifAntiPionPMCPrimary->Fill(particleMC->Pt());
1404 }
1405 if(pdgcodeMC==321)
1406 {
1407 fHistEtaPtKaonsMC->Fill(particleMC->Eta(),particleMC->Pt());
1408 fHistminsignalifKaonPMCPrimary->Fill(particleMC->Pt());
1409 }
1410 if(pdgcodeMC==-321)
1411 {
1412 fHistEtaPtKaonsMC->Fill(particleMC->Eta(),-1.0*particleMC->Pt());
1413 fHistminsignalifAntiKaonPMCPrimary->Fill(particleMC->Pt());
1414 }
1415 if(pdgcodeMC==2212)
1416 {
1417 fHistEtaPtProtonsMC->Fill(particleMC->Eta(),particleMC->Pt());
1418 fHistminsignalifProtonPMCPrimary->Fill(particleMC->Pt());
1419 }
1420 if(pdgcodeMC==-2212)
1421 {
1422 fHistEtaPtProtonsMC->Fill(particleMC->Eta(),-1.0*particleMC->Pt());
1423 fHistminsignalifAntiProtonPMCPrimary->Fill(particleMC->Pt());
1424 }
1425
1426 }
1427 }
1428 // Post output data.
1429 Printf("Done..........\n");
1430 PostData(1, flist);
1431 Printf("....................Done!\n");
1432 Printf("end of Exec");
1433}
1434
1435//________________________________________________________________________
1436void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::Terminate(Option_t *)
1437{
1438 //Terminate
1439 if(fCuts)
1440 fCuts->Dump();
1441 Printf("BB parameters %f %f %f %f %f",fpar[0],fpar[1],fpar[2],fpar[3],fpar[4]);
1442 Printf("linear parameters a=%f b=%f ",flinearpar[0],flinearpar[1]);
1443 Printf("YCut=%f",fYCut);
1444 Printf("nsigma=%f",fsigmacut);
1445 Printf("DCA cut xy sigma =%f zsigma=%f", fnsigmaxy, fnsigmaz);
1446 Printf("ChargeCut=%f ", fchargeCut);
1447
1448 if(fTPCPIDCUT)
1449 fTPCPIDCUT->Dump();
1450 if(fMC)
1451 Printf("MC On\n");
1452 if(fCorrectSDD)
1453 Printf("correct SDD On\n");
1454 if(fCorrectSSD)
1455 Printf("correct SSD On\n");
1456
1457
1458 Printf("end of Terminate");
1459}
1460//___________________________________________________
1461Float_t AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::MyITSsignalusing4points(Double_t* tmpQESD) const
1462{
1463 //dE signal in case of 4 points in ITS
1464 Int_t indexes[4]={-1,-1,-1,-1};
1465 TMath::Sort(4,tmpQESD,indexes,0);
1466 return 0.5*(tmpQESD[indexes[0]]+tmpQESD[indexes[1]]);
1467}
1468//________________________________________________________
1469Float_t AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::MyITSsignalusing3points( Double_t* tmpQESD) const
1470{
1471 //dE signal in case of 3 points in ITS
1472 Int_t indexes[3]={-1,-1,-1};
1473 TMath::Sort(3,tmpQESD,indexes,0);
1474 //cout<<tmpQESD[indexes[0]]<<" "<<tmpQESD[indexes[1]]<<" "<<tmpQESD[indexes[2]]<<endl;
1475 return (tmpQESD[indexes[0]]+tmpQESD[indexes[1]]*0.5)/1.5;
1476}
1477//______________________________________________________________
1478 Int_t AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::TypeofParticle(Float_t mom,Float_t signal) const
1479 {
1480 //nsigma cut show which type
1481 const Float_t pionmass=0.13957;
1482 const Float_t kaonmass=0.493677;
1483 const Float_t protonmass=0.938272;
1484 if(mom<0.15||mom>1.1)
1485 return -1;
1486 Float_t bg[3]={mom/pionmass,mom/kaonmass,mom/protonmass};
1487 Float_t nsigma[3]={4.0,4.0,4.0};
1488 for(int i=0;i<3;i++)
1489 {
1490 Float_t peak=BBparametrization(bg[i],fpar);
1491 Float_t rms= flinearpar[0]*peak+flinearpar[1];
1492 nsigma[i]=TMath::Abs((peak-signal)/rms);
1493 }
1494 Int_t pa=TMath::LocMin(3,nsigma);
1495 if(nsigma[pa]<fsigmacut)
1496 {
1497 return pa;
1498 }
1499 else
1500 return -1;
1501}
1502 //______________________________________________________________________________________
1503 Float_t AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::BBparametrization(Float_t x,const Float_t* par) const
1504{
1505 //BBparametrization
1506
1507 Float_t bg=x;
1508// cout<<"bg "<<x[0]<<endl;
1509// cout<<par[0]<<" "<<par[1]<<" "<<par[2]<<" "<<par[3]<<" "<<par[4]<<" "<<endl;
1510 Float_t beta = bg/TMath::Sqrt(1.+ bg*bg);
1511 Float_t gamma=bg/beta;
1512
1513 Float_t eff=1.0;
1514 if(bg<par[2])
1515 eff=(bg-par[3])*(bg-par[3])+par[4];
1516 else
1517 eff=(par[2]-par[3])*(par[2]-par[3])+par[4];
1518 return (par[1]+2.0*TMath::Log(gamma)-beta*beta)*(par[0]/(beta*beta))*eff;
1519
1520}
1521//____________________________________________________________________________________________________
1522 void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::SetFunctionParam( Float_t * const par)
1523 {
1524 //setter for BB parameters
1525 for(int i=0;i<5;i++)
1526 fpar[i]=par[i];
1527 }
1528 //_____________________________________________________________________________________________________
1529 void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::CorrectSDD(Double_t *tmpQESD) const
1530 {
1531 //correction of SDD signal
1532 if(tmpQESD[0]>0.0)
1533 {
1534 tmpQESD[0]=tmpQESD[0]*3.34/5.43;
1535 if(tmpQESD[0]<30.0)
1536 tmpQESD[0]=-1.0;
1537 }
1538 if(tmpQESD[1]>0.0)
1539 {
1540 tmpQESD[1]=tmpQESD[1]*3.34/5.43;
1541 if(tmpQESD[1]<30.0)
1542 tmpQESD[1]=-1.0;
1543 }
1544 }
1545 //_____________________________________________________________________________________________________
1546 void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::CorrectSSD(Double_t *tmpQESD) const
1547 {
1548 //Correction of SSD signal
1549 tmpQESD[2]=(85.0/77.0)*tmpQESD[2];
1550 tmpQESD[3]=(85.0/77.0)*tmpQESD[3];
1551 }
1552 //_______________________________________________________________________________________________________
1553 Bool_t AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::SelectOnImpPar(AliESDtrack* t) const
1554 {
1555 //
1556 // cut on transverse impact parameter
1557 //
1558 Float_t d0z0[2],covd0z0[3];
1559 t->GetImpactParameters(d0z0,covd0z0);
1560 Float_t sigma= 0.0050+0.0060/TMath::Power(t->Pt(),0.9);
1561 Float_t d0max = fnsigmaxy*sigma;
1562 //
1563 Float_t sigmaZ = 0.0146+0.0070/TMath::Power(t->Pt(),1.114758);
1564 if (t->Pt() > 1)
1565 sigmaZ = 0.0216;
1566 Float_t d0maxZ = fnsigmaz*sigmaZ;
1567 //
1568 if(TMath::Abs(d0z0[0]) < d0max && TMath::Abs(d0z0[1]) < d0maxZ) //error
1569 return kTRUE;
1570 return kFALSE;
1571}