]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/SPECTRA/AliAnalysisChargedHadronSpectraITSTruncatedMeanTask.cxx
Added pass1 and pass2 directories
[u/mrichter/AliRoot.git] / PWG2 / SPECTRA / AliAnalysisChargedHadronSpectraITSTruncatedMeanTask.cxx
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 #include "TGraph.h"
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 #include "AliCentrality.h"
34
35    class     AliMCEventHandler;
36      class   Riostream;
37
38 using namespace std;
39 ClassImp(AliAnalysisChargedHadronSpectraITSTruncatedMeanTask)
40
41 //________________________________________________________________________
42 AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::AliAnalysisChargedHadronSpectraITSTruncatedMeanTask(const char *name) 
43 :AliAnalysisTaskSE(name),fESD(0),fCuts(0),fCutsMul(0),fMC(0),
44 fLowMultiplicity(-1),fUpMultiplicity(-1),fLowCentrality(-10.0),fUpCentrality(-10.0),
45 fYCut(100.0),fsigmacut(3.0),fnsigmaxy(7.0),fnsigmaz(5.0),fchargeCut(0.0),
46 fCorrectSDD(0),fCorrectSSD(0),fHIsettings(0),fdovertexrescuts(0),
47  fK0weight(0),flambdaweight(0),fAntilambdaweight(0),
48 fHistStats(0),fHistZVertexBeforeCut(0),fHistZVertexAfterCut(0),fHistXYVertexBeforeCut(0),fHistXYVertexAfterCut(0),
49 fHistPhiPtBeforeCuts(0),fHistPhiPtAfterCuts(0),fHistEtaPtBeforeCuts(0),fHistEtaPtAfterCuts(0),fHistDCABeforeCuts(0),fHistDCAAfterCuts(0),
50 fHistPminusTPCinPAfterCuts(0),fHistPminusTPCinPglobalAfterCuts(0),
51 fHistMydEPpositive(0),fHistMydETPCinPpositive(0),fHistMydETPCinPglobalpositive(0),
52 fHistMydEPnegative(0),fHistMydETPCinPnegative(0),fHistMydETPCinPglobalnegative(0),
53 fHistL3dEP(0),fHistL4dEP(0),fHistL5dEP(0),fHistL6dEP(0),fHistL3dETPCinP(0),
54  fHistL4dETPCinP(0),fHistL5dETPCinP(0),fHistL6dETPCinP(0),fHistwhichhasmin(0),fHistMysignalminusESD(0),
55 fHistminsignalifPionP(0),fHistminsignalifKaonP(0),fHistminsignalifProtonP(0),fHistminsignalifAntiPionP(0),fHistminsignalifAntiKaonP(0),fHistminsignalifAntiProtonP(0),
56 fDCAXYZforcleanPions(0),fDCAXYZforcleanAntiPions(0),fDCAXYZforcleanProtons(0),fDCAXYZforcleanAntiProtons(0),
57 fDCAXYZOpenforcleanPions(0),fDCAXYZOpenforcleanAntiPions(0),fDCAXYZOpenforcleanProtons(0),fDCAXYZOpenforcleanAntiProtons(0),
58 fHistNtrackwithstandardcuts(0),fHistNtrackwithITSPIDcuts(0),
59 fHistSignalinTPCKaonforstandardcuts(0),fHistSignalinTPCKaonforITSPIDcuts(0),fHistSignalinTPCAntiKaonforstandardcuts(0),fHistSignalinTPCAntiKaonforITSPIDcuts(0),
60 fHistSignalinTPCProtonforstandardcuts(0),fHistSignalinTPCProtonforITSPIDcuts(0),fHistSignalinTPCAntiProtonforstandardcuts(0),fHistSignalinTPCAntiProtonforITSPIDcuts(0),
61 fHistStandartMul(0),fHistMytrackMul(0),
62 fHistminsignalifPionPPrimary(0),fHistminsignalifKaonPPrimary(0),fHistminsignalifProtonPPrimary(0),fHistminsignalifProtonPPrimaryfake(0),
63 fHistminsignalifAntiPionPPrimary(0),fHistminsignalifAntiKaonPPrimary(0),fHistminsignalifAntiProtonPPrimary(0),fHistminsignalifAntiProtonPPrimaryfake(0),
64 fHistminsignalifPionPSecondary(0),fHistminsignalifKaonPSecondary(0),
65 fHistminsignalifProtonPSecondaryWD(0),fHistminsignalifProtonPSecondaryHI(0),fHistminsignalifProtonPSecondaryRest(0),
66 fHistminsignalifProtonPSecondaryWDfake(0),fHistminsignalifProtonPSecondaryHIfake(0),
67 fHistminsignalifAntiPionPSecondary(0),fHistminsignalifAntiKaonPSecondary(0),
68 fHistminsignalifAntiProtonPSecondaryWD(0),fHistminsignalifAntiProtonPSecondaryHI(0), fHistminsignalifAntiProtonPSecondaryRest(0),
69 fHistminsignalifAntiProtonPSecondaryWDfake(0),fHistminsignalifAntiProtonPSecondaryHIfake(0),
70 fHistminsignalifMuEPositiveP(0),fHistminsignalifMuENegativeP(0),
71 fHistminsignalifPionPrimaryfake(0),fHistminsignalifKaonPrimaryfake(0),fHistminsignalifAntiPionPrimaryfake(0),fHistminsignalifAntiKaonPrimaryfake(0),
72 fHistminsignalifPionSecondaryfake(0),fHistminsignalifKaonSecondaryfake(0),fHistminsignalifAntiPionSecondaryfake(0),fHistminsignalifAntiKaonSecondaryfake(0),
73 fHistminsignalifPionPMCPrimary(0),fHistminsignalifKaonPMCPrimary(0),fHistminsignalifProtonPMCPrimary(0),
74 fHistminsignalifAntiPionPMCPrimary(0),fHistminsignalifAntiKaonPMCPrimary(0),fHistminsignalifAntiProtonPMCPrimary(0),
75 fHistminsignalifPionPMCPrimaryBeforeEventCuts(0),fHistminsignalifKaonPMCPrimaryBeforeEventCuts(0),fHistminsignalifProtonPMCPrimaryBeforeEventCuts(0),
76 fHistminsignalifAntiPionPMCPrimaryBeforeEventCuts(0),fHistminsignalifAntiKaonPMCPrimaryBeforeEventCuts(0),fHistminsignalifAntiProtonPMCPrimaryBeforeEventCuts(0),
77 fHistminsignalifPionPMCPrimaryBeforeEventCutswithgoodZvertex(0),fHistminsignalifKaonPMCPrimaryBeforeEventCutswithgoodZvertex(0),fHistminsignalifProtonPMCPrimaryBeforeEventCutswithgoodZvertex(0),
78 fHistminsignalifAntiPionPMCPrimaryBeforeEventCutswithgoodZvertex(0),fHistminsignalifAntiKaonPMCPrimaryBeforeEventCutswithgoodZvertex(0),fHistminsignalifAntiProtonPMCPrimaryBeforeEventCutswithgoodZvertex(0),
79 fHistminsignalifPionPMCPrimaryAfterEventCutsBeforeVertexZ(0),fHistminsignalifKaonPMCPrimaryAfterEventCutsBeforeVertexZ(0),fHistminsignalifProtonPMCPrimaryAfterEventCutsBeforeVertexZ(0),
80 fHistminsignalifAntiPionPMCPrimaryAfterEventCutsBeforeVertexZ(0),fHistminsignalifAntiKaonPMCPrimaryAfterEventCutsBeforeVertexZ(0),fHistminsignalifAntiProtonPMCPrimaryAfterEventCutsBeforeVertexZ(0),
81 fDCAXYZforcleanPionsMCPrimary(0),fDCAXYZforcleanAntiPionsMCPrimary(0),fDCAXYZforcleanProtonsMCPrimary(0),fDCAXYZforcleanAntiProtonsMCPrimary(0),
82  fDCAXYZforcleanPionsWD(0),fDCAXYZforcleanAntiPionsWD(0),fDCAXYZforcleanProtonsWD(0), fDCAXYZforcleanAntiProtonsWD(0),fDCAXYZforcleanPionsHI(0),fDCAXYZforcleanAntiPionsHI(0),
83 fDCAXYZforcleanProtonsHI(0),fDCAXYZforcleanAntiProtonsHI(0),fDCAXYZforcleanPionsMEPrimary(0),fDCAXYZforcleanAntiPionsMEPrimary(0),fDCAXYZforcleanPionsMESecondary(0),fDCAXYZforcleanAntiPionsMESecondary(0),fDCAXYZforcleanPionsR(0),fDCAXYZforcleanAntiPionsR(0),fDCAXYZforcleanProtonsR(0),fDCAXYZforcleanAntiProtonsR(0),
84 fDCAXYZOpenforcleanPionsMCPrimary(0),fDCAXYZOpenforcleanAntiPionsMCPrimary(0),fDCAXYZOpenforcleanProtonsMCPrimary(0),fDCAXYZOpenforcleanAntiProtonsMCPrimary(0),
85  fDCAXYZOpenforcleanPionsWD(0),fDCAXYZOpenforcleanAntiPionsWD(0),fDCAXYZOpenforcleanProtonsWD(0), fDCAXYZOpenforcleanAntiProtonsWD(0),fDCAXYZOpenforcleanPionsHI(0),fDCAXYZOpenforcleanAntiPionsHI(0),
86 fDCAXYZOpenforcleanProtonsHI(0),fDCAXYZOpenforcleanAntiProtonsHI(0),fDCAXYZOpenforcleanPionsMEPrimary(0),fDCAXYZOpenforcleanAntiPionsMEPrimary(0),fDCAXYZOpenforcleanPionsMESecondary(0),fDCAXYZOpenforcleanAntiPionsMESecondary(0),fDCAXYZOpenforcleanPionsR(0),fDCAXYZOpenforcleanAntiPionsR(0),fDCAXYZOpenforcleanProtonsR(0),fDCAXYZOpenforcleanAntiProtonsR(0),
87 fElectronsource(0),fAntiElectronsource(0), 
88 fMuonsource(0),fAntiMuonsource(0),
89 fPionNTPCClusters(0),fAntiPionNTPCClusters(0),fKaonNTPCClusters(0),fAntiKaonNTPCClusters(0),fProtonNTPCClusters(0),fAntiProtonNTPCClusters(0),
90 fPionchi2(0),fAntiPionchi2(0),fKaonchi2(0),fAntiKaonchi2(0),fProtonchi2(0),fAntiProtonchi2(0),
91 fTracksCutmonitoring(0),fParticlesCutmonitoring(0),fVertexshift(0),fPtESDminusPtMCvPtESDafterallcuts(0),fPtESDminusPtMCvPtESDafterTPCcuts(0),fMulESDMulMCVz(0),
92 fTPCPIDCUT(0), fESDpid(0),fPrimaryElectronsMother(0),
93 flist(0)
94 {
95         //Constructor
96          fESDpid=new AliESDpid();
97         // fESDpid->GetTPCResponse().SetBetheBlochParameters(0.0283086,2.63394e+01,5.04114e-11,2.12543e+00,4.88663e+00);
98          fESDpid->GetTPCResponse().SetBetheBlochParameters(1.28949/50., 2.74095e+01, TMath::Exp(-3.21763e+01), 2.44026, 6.58800); 
99          
100         
101          
102         fCutsMul=new AliESDtrackCuts("Mul","Mul");
103         fCutsMul->SetMinNClustersTPC(70);
104         fCutsMul->SetMaxChi2PerClusterTPC(4);
105         fCutsMul->SetAcceptKinkDaughters(kFALSE);
106         fCutsMul->SetRequireTPCRefit(kTRUE);
107         // ITS
108         fCutsMul->SetRequireITSRefit(kTRUE);
109         fCutsMul->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
110                                                 AliESDtrackCuts::kAny);
111         fCutsMul->SetMaxDCAToVertexXYPtDep("0.0182+0.0350/pt^1.01");
112         
113         fCutsMul->SetMaxDCAToVertexZ(2);
114         fCutsMul->SetDCAToVertex2D(kFALSE);
115         fCutsMul->SetRequireSigmaToVertex(kFALSE);
116         
117         fCutsMul->SetEtaRange(-0.8,+0.8);
118         fCutsMul->SetPtRange(0.15, 1e10);
119          
120         fdcaxypar[0]=0.0050;
121         fdcaxypar[1]=0.0060;
122         fdcaxypar[2]=0.9;
123         
124         fdcazpar[0]=0.0146;
125         fdcazpar[1]=0.0070;
126         fdcazpar[2]=1.114758;
127         fdcazpar[3]=0.0216;
128
129         
130         
131         
132         Printf("end of AliAnalysisChargedHadronSpectraITSTruncatedMeanTask");
133          DefineOutput(1, TList::Class());
134 }
135
136
137 //________________________________________________________________________
138 void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::UserCreateOutputObjects()
139 {
140         //UserCreateOutputObject
141         Printf("AliAnalysisChargedHadronSpectraITSTruncatedMeanTask UserCreateOutputObjects");
142           flist=new TList();
143          flist->SetOwner();
144         Float_t ptmax=2.0;
145         Float_t etamax=1.0;
146         
147         Int_t netabins=100;
148         Int_t nptbins=40;
149         Double_t dcamax=3.7;
150         const  Int_t ndec=2;
151         Int_t startvalue=-1;
152         const  Int_t npredec=50;
153         Double_t tabx[ndec*npredec+1];
154         for (Int_t i=0;i<ndec;i++)
155         {
156                 for (Int_t j=0;j<npredec;j++)
157                 {
158                         tabx[npredec*i+j]=TMath::Power(10,((Double_t)i)+((Double_t)startvalue)+((Double_t)j)/((Double_t)npredec));
159                 }       
160         }
161         tabx[ndec*npredec]=TMath::Power(10,ndec+startvalue);
162         
163         const Int_t  ny=600;
164         const Double_t jump=1.5;
165         const Double_t starty=0.0; 
166         
167         
168         Int_t kPtBins=30;
169         Double_t binsPtDummy[kPtBins+1];
170         binsPtDummy[0]=0.0;
171         for(int i=1;i<=kPtBins+1;i++)
172         {
173                 if(binsPtDummy[i-1]+0.05<1.01)
174                         binsPtDummy[i]=binsPtDummy[i-1]+0.05;
175                 else
176                         binsPtDummy[i]=binsPtDummy[i-1]+0.1;    
177         } 
178         //{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};
179         
180         
181         fHistStats=new TH1F("StatsHist","StatsHist",10,-0.5,9.5);
182         fHistStats->GetXaxis()->SetBinLabel(1,"Nevents");
183         fHistStats->GetXaxis()->SetBinLabel(2,"Nevents_physics");
184         fHistStats->GetXaxis()->SetBinLabel(3,"Nevents_physics_with_good_SPD_vertex");
185         fHistStats->GetXaxis()->SetBinLabel(4,"Nevents_physics_with_good_SPD_vertex_and_|z|<10.0");
186         fHistStats->GetXaxis()->SetBinLabel(5,"N_tracks_with_3_or_4_in_SSD_SDD");
187         fHistStats->GetXaxis()->SetBinLabel(6,"N_tracks_with_3_or_4_with_goodq_in_SSD_SDD");
188         fHistStats->GetXaxis()->SetBinLabel(7,"e_in_pi");
189         fHistStats->GetXaxis()->SetBinLabel(8,"mu_in_pi");
190         fHistStats->GetXaxis()->SetBinLabel(9,"MC_event");
191         fHistStats->GetXaxis()->SetBinLabel(10,"MC_event_with_z<10.0");
192         flist->Add(fHistStats);
193         
194         fHistZVertexBeforeCut=new TH1F("HistZVertexBeforeCut","ZVertex;z[cm];N_{counts}",400,-20,20);
195         flist->Add(fHistZVertexBeforeCut);
196         fHistZVertexAfterCut=new TH1F("HistZVertexAfterCut","ZVertex;z[cm];N_{counts}",400,-20,20);
197         flist->Add(fHistZVertexAfterCut);
198         fHistXYVertexBeforeCut=new TH2F("HistXYVertexBeforeCut","XYVertex;x[cm];y[cm];N_{conuts}",100,-0.4,0.4,100,-0.4,0.4); 
199         flist->Add(fHistXYVertexBeforeCut);
200         fHistXYVertexAfterCut=new TH2F("HistXYVertexAfterCut","XYVertex;x[cm];y[cm];N_{conuts}",100,-0.4,0.4,100,-0.4,0.4); 
201         flist->Add(fHistXYVertexAfterCut);
202         
203         fHistPhiPtBeforeCuts=new  TH2F("HistPhiPtBeforeCuts",";#phi;pt[GeV/c]",70,0,2.0*TMath::Pi(),nptbins,-1.0*ptmax,ptmax);
204         flist->Add(fHistPhiPtBeforeCuts);
205         
206         fHistPhiPtAfterCuts=new  TH2F("HistPhiPtAfterCuts",";#phi;pt[GeV/c]",70,0,2.0*TMath::Pi(),nptbins,-1.0*ptmax,ptmax);
207         flist->Add(fHistPhiPtAfterCuts);
208         
209         fHistEtaPtBeforeCuts=new  TH2F("HistEtaPtBeforeCuts",";#eta;pt[GeV/c]",netabins,-1.0*etamax,etamax,nptbins,-1.0*ptmax,ptmax);//eta pt
210         flist->Add(fHistEtaPtBeforeCuts);
211         
212         fHistEtaPtAfterCuts=new  TH2F("HistEtaPtAfterCuts",";#eta;pt[GeV/c]",netabins,-1.0*etamax,etamax,nptbins,-1.0*ptmax,ptmax);//eta pt
213         flist->Add(fHistEtaPtAfterCuts);
214         
215         fHistDCABeforeCuts=new  TH2F("HistDCABeforeCut",";dcaxy[cm];dcaz[cm]",100,-1.0*dcamax,dcamax,100,-1.0*dcamax,1.0*dcamax);
216         flist->Add(fHistDCABeforeCuts);
217         
218         fHistDCAAfterCuts=new  TH2F("HistDCAAfterCut",";dcaxy[cm];dcaz[cm]",100,-1.0*dcamax,dcamax,100,-1.0*dcamax,1.0*dcamax);
219         flist->Add(fHistDCAAfterCuts);
220         
221         
222         fHistPminusTPCinPAfterCuts= new TH2F("HistPminusTPCinPVPTPCinAfterCuts",";P-PTPCin [GeV/c];PTPCin",100,-0.5,0.5,ndec*npredec,tabx); 
223         flist->Add(fHistPminusTPCinPAfterCuts);
224         
225         fHistPminusTPCinPglobalAfterCuts= new TH2F("HistPminusTPCinPVPTPCinglobalAfterCuts",";P-PTPCinglobal [GeV/c];PTPCin",100,-0.5,0.5,ndec*npredec,tabx); 
226         flist->Add(fHistPminusTPCinPglobalAfterCuts);
227         
228         fHistMydEPpositive=new TH2F("HistMydEPpositive",";P[GeV/c];dE[in 300#mum]",ndec*npredec,tabx,ny,starty,ny*jump+starty);
229         flist->Add(fHistMydEPpositive);
230                 
231         fHistMydETPCinPpositive=new TH2F("HistMydETPCinPpositive",";P[GeV/c];dE[in 300#mum]",ndec*npredec,tabx,ny,starty,ny*jump+starty);
232         flist->Add(fHistMydETPCinPpositive);
233
234         fHistMydETPCinPglobalpositive=new TH2F("HistMydETPCinPglobalpositive",";P[GeV/c];dE[in 300#mum]",ndec*npredec,tabx,ny,starty,ny*jump+starty);
235         flist->Add(fHistMydETPCinPglobalpositive);
236         
237         fHistMydEPnegative=new TH2F("HistMydEPnegative",";P[GeV/c];dE[in 300#mum]",ndec*npredec,tabx,ny,starty,ny*jump+starty);
238         flist->Add(fHistMydEPnegative);
239                 
240         fHistMydETPCinPnegative=new TH2F("HistMydETPCinPnegative",";P[GeV/c];dE[in 300#mum]",ndec*npredec,tabx,ny,starty,ny*jump+starty);
241         flist->Add(fHistMydETPCinPnegative);
242
243         fHistMydETPCinPglobalnegative=new TH2F("HistMydETPCinPglobalnegative",";P[GeV/c];dE[in 300#mum]",ndec*npredec,tabx,ny,starty,ny*jump+starty);
244         flist->Add(fHistMydETPCinPglobalnegative);
245         
246         
247         fHistL3dEP=new TH2F("HistL3dEP",";P[GeV/c];dE[in 300#mum]",ndec*npredec,tabx,ny,starty,ny*jump+starty);
248         flist->Add(fHistL3dEP);
249         
250         fHistL4dEP=new TH2F("HistL4dEP",";P[GeV/c];dE[in 300#mum]",ndec*npredec,tabx,ny,starty,ny*jump+starty);
251         flist->Add(fHistL4dEP);
252         
253         fHistL5dEP=new TH2F("HistL5dEP",";P[GeV/c];dE[in 300#mum]",ndec*npredec,tabx,ny,starty,ny*jump+starty);
254         flist->Add(fHistL5dEP);
255         
256         fHistL6dEP=new TH2F("HistL6dEP",";P[GeV/c];dE[in 300#mum]",ndec*npredec,tabx,ny,starty,ny*jump+starty);
257         flist->Add(fHistL6dEP);
258
259         fHistL3dETPCinP=new TH2F("HistL3dETPCinP",";P[GeV/c];dE[in 300#mum]",ndec*npredec,tabx,ny,starty,ny*jump+starty);
260         flist->Add(fHistL3dETPCinP);
261         
262         fHistL4dETPCinP=new TH2F("HistL4dETPCinP",";P[GeV/c];dE[in 300#mum]",ndec*npredec,tabx,ny,starty,ny*jump+starty);
263         flist->Add(fHistL4dETPCinP);
264         
265         fHistL5dETPCinP=new TH2F("HistL5dETPCinP",";P[GeV/c];dE[in 300#mum]",ndec*npredec,tabx,ny,starty,ny*jump+starty);
266         flist->Add(fHistL5dETPCinP);
267         
268         fHistL6dETPCinP=new TH2F("HistL6dETPCinP",";P[GeV/c];dE[in 300#mum]",ndec*npredec,tabx,ny,starty,ny*jump+starty);
269         flist->Add(fHistL6dETPCinP);
270         
271
272
273         fHistwhichhasmin=new TH2F("Histwhichhasmin","Histwhichhasmin;L;Q",4,-0.5,3.5,100,0,1000);
274         fHistwhichhasmin->GetXaxis()->SetBinLabel(1,"SDD1");
275         fHistwhichhasmin->GetXaxis()->SetBinLabel(2,"SDD2");
276         fHistwhichhasmin->GetXaxis()->SetBinLabel(3,"SSD1");
277         fHistwhichhasmin->GetXaxis()->SetBinLabel(4,"SSD2");
278         flist->Add(fHistwhichhasmin);
279         fHistMysignalminusESD=new TH1F("HistMysignalminus","HistMysignalminus;my-ESD;N",100,-0.2,0.2);
280         flist->Add(fHistMysignalminusESD);
281         
282          
283         fHistminsignalifPionP=new TH2F("HistminsignalifPionP",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
284         flist->Add(fHistminsignalifPionP);
285         fHistminsignalifKaonP=new TH2F("HistminsignalifKaonP",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
286         flist->Add(fHistminsignalifKaonP);
287         fHistminsignalifProtonP=new TH2F("HistminsignalifProtonP",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
288         flist->Add(fHistminsignalifProtonP);
289         
290         
291         fHistminsignalifAntiPionP=new TH2F("HistminsignalifAntiPionP",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
292         flist->Add(fHistminsignalifAntiPionP);
293         fHistminsignalifAntiKaonP=new TH2F("HistminsignalifAntiKaonP",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
294         flist->Add(fHistminsignalifAntiKaonP);
295         fHistminsignalifAntiProtonP=new TH2F("HistminsignalifAntiProtonP",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
296         flist->Add(fHistminsignalifAntiProtonP);
297         
298         Int_t kDCABins=20+2+40;
299         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};
300         
301
302         
303         
304         fDCAXYZforcleanPions=new TH3F("fDCAXYZforcleanPions",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
305         flist->Add(fDCAXYZforcleanPions);
306         fDCAXYZforcleanAntiPions=new TH3F("fDCAXYZforcleanAntiPions",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
307         flist->Add(fDCAXYZforcleanAntiPions);
308         fDCAXYZforcleanProtons=new TH3F("fDCAXYZforcleanProtons",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
309         flist->Add(fDCAXYZforcleanProtons);
310         fDCAXYZforcleanAntiProtons=new TH3F("fDCAXYZforcleanAntiProtons",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
311         flist->Add(fDCAXYZforcleanAntiProtons);
312         
313         
314         fDCAXYZOpenforcleanPions=new TH3F("fDCAXYZOpenforcleanPions",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
315         flist->Add(fDCAXYZOpenforcleanPions);
316         fDCAXYZOpenforcleanAntiPions=new TH3F("fDCAXYZOpenforcleanAntiPions",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
317         flist->Add(fDCAXYZOpenforcleanAntiPions);
318         fDCAXYZOpenforcleanProtons=new TH3F("fDCAXYZOpenforcleanProtons",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
319         flist->Add(fDCAXYZOpenforcleanProtons);
320         fDCAXYZOpenforcleanAntiProtons=new TH3F("fDCAXYZOpenforcleanAntiProtons",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
321         flist->Add(fDCAXYZOpenforcleanAntiProtons);
322         
323         fHistNtrackwithstandardcuts=new TH2F ("fHistNtrackwithstandardcuts",";Pt[GeV/c];type;counts",kPtBins,binsPtDummy,3,-0.5,2.5);
324         flist->Add(fHistNtrackwithstandardcuts);
325         fHistNtrackwithITSPIDcuts=new TH2F ("fHistNtrackwithITSPIDcuts",";Pt[GeV/c];type;counts",kPtBins,binsPtDummy,3,-0.5,2.5);
326         flist->Add(fHistNtrackwithITSPIDcuts);
327         
328         
329         fHistSignalinTPCKaonforstandardcuts= new TH2F("fHistSignalinTPCKaonforstandardcuts",";Pt[GeV/c];signal",kPtBins,binsPtDummy,100,-1.0,1.0) ;
330         flist->Add(fHistSignalinTPCKaonforstandardcuts);
331         fHistSignalinTPCKaonforITSPIDcuts= new TH2F("fHistSignalinTPCKaonforITSPIDcuts",";Pt[GeV/c];signal",kPtBins,binsPtDummy,100,-1.0,1.0) ;
332         flist->Add(fHistSignalinTPCKaonforITSPIDcuts);
333         
334         fHistSignalinTPCAntiKaonforstandardcuts= new TH2F("fHistSignalinTPCAntiKaonforstandardcuts",";Pt[GeV/c];signal",kPtBins,binsPtDummy,100,-1.0,1.0) ;
335         flist->Add(fHistSignalinTPCAntiKaonforstandardcuts);
336         fHistSignalinTPCAntiKaonforITSPIDcuts= new TH2F("fHistSignalinTPCAntiKaonforITSPIDcuts",";Pt[GeV/c];signal",kPtBins,binsPtDummy,100,-1.0,1.0) ;
337         flist->Add(fHistSignalinTPCAntiKaonforITSPIDcuts);
338         
339         fHistSignalinTPCProtonforstandardcuts= new TH2F("fHistSignalinTPCProtonforstandardcuts",";Pt[GeV/c];signal",kPtBins,binsPtDummy,100,-1.0,1.0) ;
340         flist->Add(fHistSignalinTPCProtonforstandardcuts);
341         fHistSignalinTPCProtonforITSPIDcuts= new TH2F("fHistSignalinTPCProtonforITSPIDcuts",";Pt[GeV/c];signal",kPtBins,binsPtDummy,100,-1.0,1.0) ;
342         flist->Add(fHistSignalinTPCProtonforITSPIDcuts);
343         
344         
345         fHistSignalinTPCAntiProtonforstandardcuts= new TH2F("fHistSignalinTPCAntiProtonforstandardcuts",";Pt[GeV/c];signal",kPtBins,binsPtDummy,100,-1.0,1.0) ;
346         flist->Add(fHistSignalinTPCAntiProtonforstandardcuts);
347         fHistSignalinTPCAntiProtonforITSPIDcuts= new TH2F("fHistSignalinTPCAntiProtonforITSPIDcuts",";Pt[GeV/c];signal",kPtBins,binsPtDummy,100,-1.0,1.0) ;
348         flist->Add(fHistSignalinTPCAntiProtonforITSPIDcuts);
349         
350         fPionNTPCClusters=new TH2F("fPionNTPCClusters","fPionNTPCClusters;Pt [GeV/c];NClusters",kPtBins,binsPtDummy,20,60,160);
351         flist->Add(fPionNTPCClusters);
352         fAntiPionNTPCClusters=new TH2F("fAntiPionNTPCClusters","fAntiPionNTPCClusters;Pt [GeV/c];NClusters",kPtBins,binsPtDummy,20,60,160);
353         flist->Add(fAntiPionNTPCClusters);
354         fKaonNTPCClusters=new TH2F("fKaonNTPCClusters","fKaonNTPCClusters;Pt [GeV/c];NClusters",kPtBins,binsPtDummy,20,60,160); 
355         flist->Add(fKaonNTPCClusters);
356         fAntiKaonNTPCClusters=new TH2F("fAntiKaonNTPCClusters","fAntiKaonNTPCClusters;Pt [GeV/c];NClusters",kPtBins,binsPtDummy,20,60,160);
357         flist->Add(fAntiKaonNTPCClusters);
358         fProtonNTPCClusters=new TH2F("fProtonNTPCClusters","fProtonNTPCClusters;Pt [GeV/c];NClusters",kPtBins,binsPtDummy,20,60,160); 
359         flist->Add(fProtonNTPCClusters);
360         fAntiProtonNTPCClusters=new TH2F("fAntiProtonNTPCClusters","fAntiProtonNTPCClusters;Pt [GeV/c];NClusters",kPtBins,binsPtDummy,20,60,160);
361         flist->Add(fAntiProtonNTPCClusters);
362         
363         
364         fPionchi2=new TH2F("fPionchi2","fPionchi2;Pt [GeV/c];NClusters",kPtBins,binsPtDummy,20,0,6);
365         flist->Add(fPionchi2);
366         fAntiPionchi2=new TH2F("fAntiPionchi2","fAntiPionchi2;Pt [GeV/c];NClusters",kPtBins,binsPtDummy,20,0,6);
367         flist->Add(fAntiPionchi2);
368         fKaonchi2=new TH2F("fKaonchi2","fKaonchi2;Pt [GeV/c];NClusters",kPtBins,binsPtDummy,20,0,6); 
369         flist->Add(fKaonchi2);
370         fAntiKaonchi2=new TH2F("fAntiKaonchi2","fAntiKaonchi2;Pt [GeV/c];NClusters",kPtBins,binsPtDummy,20,0,6);
371         flist->Add(fAntiKaonchi2);
372         fProtonchi2=new TH2F("fProtonchi2","fProtonchi2;Pt [GeV/c];NClusters",kPtBins,binsPtDummy,20,0,6); 
373         flist->Add(fProtonchi2);
374         fAntiProtonchi2=new TH2F("fAntiProtonchi2","fAntiProtonchi2;Pt [GeV/c];NClusters",kPtBins,binsPtDummy,20,0,6);
375         flist->Add(fAntiProtonchi2);
376         
377         if(fHIsettings)
378         {
379                 fHistStandartMul=new TH1F("fHistStandartMul",";Ntracks;counts",300,0,3000);
380                 flist->Add(fHistStandartMul);
381                 fHistMytrackMul=new TH1F("fHistMytrackMul",";Ntracks;counts",300,0,3000);
382                 flist->Add(fHistMytrackMul);
383         }
384         else
385         {
386                 fHistStandartMul=new TH1F("fHistStandartMul",";Ntracks;counts",300,0,300);
387                 flist->Add(fHistStandartMul);
388                 fHistMytrackMul=new TH1F("fHistMytrackMul",";Ntracks;counts",300,0,300);
389                 flist->Add(fHistMytrackMul);
390         }
391         fTracksCutmonitoring=new TH2F("fTracksCutmonitoring",";cut;pt[GeV/c];N_{entries}",4,0.5,4.5,kPtBins,binsPtDummy);       
392         fTracksCutmonitoring->GetXaxis()->SetBinLabel(1,"TPCin");
393         fTracksCutmonitoring->GetXaxis()->SetBinLabel(2,"standard");
394         fTracksCutmonitoring->GetXaxis()->SetBinLabel(3,"ITSpid");
395         fTracksCutmonitoring->GetXaxis()->SetBinLabel(4,"DCA");
396         flist->Add(fTracksCutmonitoring);
397         
398         if(!fMC)
399         {
400                 
401                 Printf("end of CreateOutputObjects no MC");
402                 PostData(1,flist);
403                 return;
404         }
405         
406         
407
408         fHistminsignalifPionPPrimary=new TH2F("HistminsignalifPionPPrimary",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
409         flist->Add(fHistminsignalifPionPPrimary);
410         fHistminsignalifKaonPPrimary=new TH2F("HistminsignalifKaonPPrimary",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
411         flist->Add(fHistminsignalifKaonPPrimary);
412         fHistminsignalifProtonPPrimary=new TH2F("HistminsignalifProtonPPrimary",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
413         flist->Add(fHistminsignalifProtonPPrimary);
414         fHistminsignalifProtonPPrimaryfake=new TH2F("HistminsignalifProtonPPrimaryfake",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
415         flist->Add(fHistminsignalifProtonPPrimaryfake);
416                 
417         fHistminsignalifAntiPionPPrimary=new TH2F("HistminsignalifAntiPionPPrimary",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
418         flist->Add(fHistminsignalifAntiPionPPrimary);
419         fHistminsignalifAntiKaonPPrimary=new TH2F("HistminsignalifAntiKaonPPrimary",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
420         flist->Add(fHistminsignalifAntiKaonPPrimary);
421         fHistminsignalifAntiProtonPPrimary=new TH2F("HistminsignalifAntiProtonPPrimary",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
422         flist->Add(fHistminsignalifAntiProtonPPrimary);
423         fHistminsignalifAntiProtonPPrimaryfake=new TH2F("HistminsignalifAntiProtonPPrimaryfake",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
424         flist->Add(fHistminsignalifAntiProtonPPrimaryfake);
425         
426         fHistminsignalifPionPSecondary=new TH2F("HistminsignalifPionPSecondary",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
427         flist->Add(fHistminsignalifPionPSecondary);
428         fHistminsignalifKaonPSecondary=new TH2F("HistminsignalifKaonPSecondary",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
429         flist->Add(fHistminsignalifKaonPSecondary);
430         fHistminsignalifProtonPSecondaryWD=new TH2F("HistminsignalifProtonPSecondaryWD",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
431         flist->Add(fHistminsignalifProtonPSecondaryWD);
432         fHistminsignalifProtonPSecondaryHI=new TH2F("HistminsignalifProtonPSecondaryHI",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
433         flist->Add(fHistminsignalifProtonPSecondaryHI);
434         fHistminsignalifProtonPSecondaryRest=new TH2F("HistminsignalifProtonPSecondaryRest",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
435         flist->Add(fHistminsignalifProtonPSecondaryRest);
436         fHistminsignalifProtonPSecondaryWDfake=new TH2F("HistminsignalifProtonPSecondaryWDfake",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
437         flist->Add(fHistminsignalifProtonPSecondaryWDfake);
438         fHistminsignalifProtonPSecondaryHIfake=new TH2F("HistminsignalifProtonPSecondaryHIfake",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
439         flist->Add(fHistminsignalifProtonPSecondaryHIfake);
440
441                 
442         fHistminsignalifAntiPionPSecondary=new TH2F("HistminsignalifAntiPionPSecondary",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
443         flist->Add(fHistminsignalifAntiPionPSecondary);
444         fHistminsignalifAntiKaonPSecondary=new TH2F("HistminsignalifAntiKaonPSecondary",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
445         flist->Add(fHistminsignalifAntiKaonPSecondary);
446         fHistminsignalifAntiProtonPSecondaryWD=new TH2F("HistminsignalifAntiProtonPSecondaryWD",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
447         flist->Add(fHistminsignalifAntiProtonPSecondaryWD);
448         fHistminsignalifAntiProtonPSecondaryHI=new TH2F("HistminsignalifAntiProtonPSecondaryHI",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
449         flist->Add(fHistminsignalifAntiProtonPSecondaryHI);
450         fHistminsignalifAntiProtonPSecondaryRest=new TH2F("HistminsignalifAntiProtonPSecondaryRest",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
451         flist->Add(fHistminsignalifAntiProtonPSecondaryRest);   
452         fHistminsignalifAntiProtonPSecondaryWDfake=new TH2F("HistminsignalifAntiProtonPSecondaryWDfake",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
453         flist->Add(fHistminsignalifAntiProtonPSecondaryWDfake);
454         fHistminsignalifAntiProtonPSecondaryHIfake=new TH2F("HistminsignalifAntiProtonPSecondaryHIfake",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
455         flist->Add(fHistminsignalifAntiProtonPSecondaryHIfake);
456         
457         fHistminsignalifMuEPositiveP=new TH2F("HistminsignalifMuEPositiveP",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
458         flist->Add(fHistminsignalifMuEPositiveP);
459         fHistminsignalifMuENegativeP=new TH2F("HistminsignalifMuENegativeP",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
460         flist->Add(fHistminsignalifMuENegativeP);
461         
462         
463         fHistminsignalifPionPrimaryfake=new TH2F("HistminsignalifPionPrimaryfake",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
464         flist->Add(fHistminsignalifPionPrimaryfake);
465         fHistminsignalifKaonPrimaryfake=new TH2F("HistminsignalifKaonPrimaryfake",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
466         flist->Add(fHistminsignalifKaonPrimaryfake);
467         
468         fHistminsignalifAntiPionPrimaryfake=new TH2F("HistminsignalifAntiPionPrimaryfake",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
469         flist->Add(fHistminsignalifAntiPionPrimaryfake);
470         fHistminsignalifAntiKaonPrimaryfake=new TH2F("HistminsignalifAntiKaonPrimaryfake",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
471         flist->Add(fHistminsignalifAntiKaonPrimaryfake);
472         
473         
474         fHistminsignalifPionSecondaryfake=new TH2F("HistminsignalifPionSecondaryfake",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
475         flist->Add(fHistminsignalifPionSecondaryfake);
476         fHistminsignalifKaonSecondaryfake=new TH2F("HistminsignalifKaonSecondaryfake",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
477         flist->Add(fHistminsignalifKaonSecondaryfake);
478         
479         fHistminsignalifAntiPionSecondaryfake=new TH2F("HistminsignalifAntiPionSecondaryfake",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
480         flist->Add(fHistminsignalifAntiPionSecondaryfake);
481         fHistminsignalifAntiKaonSecondaryfake=new TH2F("HistminsignalifAntiKaonSecondaryfake",";Pt[GeV/c];log(dE_real)-log(dE_fit)",kPtBins,binsPtDummy,ny,-4,4);
482         flist->Add(fHistminsignalifAntiKaonSecondaryfake);
483         
484         
485         fHistminsignalifPionPMCPrimary=new TH1F("HistminsignalifPionPMCPrimary",";Pt[GeV/c]",kPtBins,binsPtDummy);
486         flist->Add(fHistminsignalifPionPMCPrimary);
487         fHistminsignalifKaonPMCPrimary=new TH1F("HistminsignalifKaonPMCPrimary",";Pt[GeV/c]",kPtBins,binsPtDummy);
488         flist->Add(fHistminsignalifKaonPMCPrimary);
489         fHistminsignalifProtonPMCPrimary=new TH1F("HistminsignalifProtonPMCPrimary",";Pt[GeV/c]",kPtBins,binsPtDummy);
490         flist->Add(fHistminsignalifProtonPMCPrimary);
491                 
492         fHistminsignalifAntiPionPMCPrimary=new TH1F("HistminsignalifAntiPionPMCPrimary",";Pt[GeV/c]",kPtBins,binsPtDummy);
493         flist->Add(fHistminsignalifAntiPionPMCPrimary);
494         fHistminsignalifAntiKaonPMCPrimary=new TH1F("HistminsignalifAntiKaonPMCPrimary",";Pt[GeV/c]",kPtBins,binsPtDummy);
495         flist->Add(fHistminsignalifAntiKaonPMCPrimary);
496         fHistminsignalifAntiProtonPMCPrimary=new TH1F("HistminsignalifAntiProtonPMCPrimary",";Pt[GeV/c]",kPtBins,binsPtDummy);
497         flist->Add(fHistminsignalifAntiProtonPMCPrimary);
498         
499         
500         fHistminsignalifPionPMCPrimaryBeforeEventCuts=new TH1F("HistminsignalifPionPMCPrimaryBeforeEventCuts",";Pt[GeV/c]",kPtBins,binsPtDummy);
501         flist->Add(fHistminsignalifPionPMCPrimaryBeforeEventCuts);
502         fHistminsignalifKaonPMCPrimaryBeforeEventCuts=new TH1F("HistminsignalifKaonPMCPrimaryBeforeEventCuts",";Pt[GeV/c]",kPtBins,binsPtDummy);
503         flist->Add(fHistminsignalifKaonPMCPrimaryBeforeEventCuts);
504         fHistminsignalifProtonPMCPrimaryBeforeEventCuts=new TH1F("HistminsignalifProtonPMCPrimaryBeforeEventCuts",";Pt[GeV/c]",kPtBins,binsPtDummy);
505         flist->Add(fHistminsignalifProtonPMCPrimaryBeforeEventCuts);
506                 
507         fHistminsignalifAntiPionPMCPrimaryBeforeEventCuts=new TH1F("HistminsignalifAntiPionPMCPrimaryBeforeEventCuts",";Pt[GeV/c]",kPtBins,binsPtDummy);
508         flist->Add(fHistminsignalifAntiPionPMCPrimaryBeforeEventCuts);
509         fHistminsignalifAntiKaonPMCPrimaryBeforeEventCuts=new TH1F("HistminsignalifAntiKaonPMCPrimaryBeforeEventCuts",";Pt[GeV/c]",kPtBins,binsPtDummy);
510         flist->Add(fHistminsignalifAntiKaonPMCPrimaryBeforeEventCuts);
511         fHistminsignalifAntiProtonPMCPrimaryBeforeEventCuts=new TH1F("HistminsignalifAntiProtonPMCPrimaryBeforeEventCuts",";Pt[GeV/c]",kPtBins,binsPtDummy);
512         flist->Add(fHistminsignalifAntiProtonPMCPrimaryBeforeEventCuts);
513         
514         fHistminsignalifPionPMCPrimaryBeforeEventCutswithgoodZvertex=new TH1F("HistminsignalifPionPMCPrimaryBeforeEventCutswithgoodZvertex",";Pt[GeV/c]",kPtBins,binsPtDummy);
515         flist->Add(fHistminsignalifPionPMCPrimaryBeforeEventCutswithgoodZvertex);
516         fHistminsignalifKaonPMCPrimaryBeforeEventCutswithgoodZvertex=new TH1F("HistminsignalifKaonPMCPrimaryBeforeEventCutswithgoodZvertex",";Pt[GeV/c]",kPtBins,binsPtDummy);
517         flist->Add(fHistminsignalifKaonPMCPrimaryBeforeEventCutswithgoodZvertex);
518         fHistminsignalifProtonPMCPrimaryBeforeEventCutswithgoodZvertex=new TH1F("HistminsignalifProtonPMCPrimaryBeforeEventCutswithgoodZvertex",";Pt[GeV/c]",kPtBins,binsPtDummy);
519         flist->Add(fHistminsignalifProtonPMCPrimaryBeforeEventCutswithgoodZvertex);
520                 
521         fHistminsignalifAntiPionPMCPrimaryBeforeEventCutswithgoodZvertex=new TH1F("HistminsignalifAntiPionPMCPrimaryBeforeEventCutswithgoodZvertex",";Pt[GeV/c]",kPtBins,binsPtDummy);
522         flist->Add(fHistminsignalifAntiPionPMCPrimaryBeforeEventCutswithgoodZvertex);
523         fHistminsignalifAntiKaonPMCPrimaryBeforeEventCutswithgoodZvertex=new TH1F("HistminsignalifAntiKaonPMCPrimaryBeforeEventCutswithgoodZvertex",";Pt[GeV/c]",kPtBins,binsPtDummy);
524         flist->Add(fHistminsignalifAntiKaonPMCPrimaryBeforeEventCutswithgoodZvertex);
525         fHistminsignalifAntiProtonPMCPrimaryBeforeEventCutswithgoodZvertex=new TH1F("HistminsignalifAntiProtonPMCPrimaryBeforeEventCutswithgoodZvertex",";Pt[GeV/c]",kPtBins,binsPtDummy);
526         flist->Add(fHistminsignalifAntiProtonPMCPrimaryBeforeEventCutswithgoodZvertex);
527         
528         fHistminsignalifPionPMCPrimaryAfterEventCutsBeforeVertexZ=new TH1F("HistminsignalifPionPMCPrimaryAfterEventCutsBeforeVertexZ",";Pt[GeV/c]",kPtBins,binsPtDummy);
529         flist->Add(fHistminsignalifPionPMCPrimaryAfterEventCutsBeforeVertexZ);
530         fHistminsignalifKaonPMCPrimaryAfterEventCutsBeforeVertexZ=new TH1F("HistminsignalifKaonPMCPrimaryAfterEventCutsBeforeVertexZ",";Pt[GeV/c]",kPtBins,binsPtDummy);
531         flist->Add(fHistminsignalifKaonPMCPrimaryAfterEventCutsBeforeVertexZ);
532         fHistminsignalifProtonPMCPrimaryAfterEventCutsBeforeVertexZ=new TH1F("HistminsignalifProtonPMCPrimaryAfterEventCutsBeforeVertexZ",";Pt[GeV/c]",kPtBins,binsPtDummy);
533         flist->Add(fHistminsignalifProtonPMCPrimaryAfterEventCutsBeforeVertexZ);
534                 
535         fHistminsignalifAntiPionPMCPrimaryAfterEventCutsBeforeVertexZ=new TH1F("HistminsignalifAntiPionPMCPrimaryAfterEventCutsBeforeVertexZ",";Pt[GeV/c]",kPtBins,binsPtDummy);
536         flist->Add(fHistminsignalifAntiPionPMCPrimaryAfterEventCutsBeforeVertexZ);
537         fHistminsignalifAntiKaonPMCPrimaryAfterEventCutsBeforeVertexZ=new TH1F("HistminsignalifAntiKaonPMCPrimaryAfterEventCutsBeforeVertexZ",";Pt[GeV/c]",kPtBins,binsPtDummy);
538         flist->Add(fHistminsignalifAntiKaonPMCPrimaryAfterEventCutsBeforeVertexZ);
539         fHistminsignalifAntiProtonPMCPrimaryAfterEventCutsBeforeVertexZ=new TH1F("HistminsignalifAntiProtonPMCPrimaryAfterEventCutsBeforeVertexZ",";Pt[GeV/c]",kPtBins,binsPtDummy);
540         flist->Add(fHistminsignalifAntiProtonPMCPrimaryAfterEventCutsBeforeVertexZ);
541         
542         
543         
544         fDCAXYZforcleanPionsMCPrimary=new TH3F("fDCAXYZforcleanPionsMCPrimary",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
545         flist->Add(fDCAXYZforcleanPionsMCPrimary);
546         fDCAXYZforcleanAntiPionsMCPrimary=new TH3F("fDCAXYZforcleanAntiPionsMCPrimary",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
547         flist->Add(fDCAXYZforcleanAntiPionsMCPrimary);
548         fDCAXYZforcleanProtonsMCPrimary=new TH3F("fDCAXYZforcleanProtonsMCPrimary",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
549         flist->Add(fDCAXYZforcleanProtonsMCPrimary);
550         fDCAXYZforcleanAntiProtonsMCPrimary=new TH3F("fDCAXYZforcleanAntiProtonsMCPrimary",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
551         flist->Add(fDCAXYZforcleanAntiProtonsMCPrimary);
552         
553         fDCAXYZforcleanPionsWD=new TH3F("fDCAXYZforcleanPionsWD",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
554         flist->Add(fDCAXYZforcleanPionsWD);
555         fDCAXYZforcleanAntiPionsWD=new TH3F("fDCAXYZforcleanAntiPionsWD",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
556         flist->Add(fDCAXYZforcleanAntiPionsWD);
557         //Secondrary Protons weak deacy
558         
559         fDCAXYZforcleanProtonsWD=new TH3F("fDCAXYZforcleanProtonsWD",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
560         flist->Add(fDCAXYZforcleanProtonsWD);
561         fDCAXYZforcleanAntiProtonsWD=new TH3F("fDCAXYZforcleanAntiProtonsWD",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
562         flist->Add(fDCAXYZforcleanAntiProtonsWD);
563
564         fDCAXYZforcleanPionsHI=new TH3F("fDCAXYZforcleanPionsHI",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
565         flist->Add(fDCAXYZforcleanPionsHI);
566         fDCAXYZforcleanAntiPionsHI=new TH3F("fDCAXYZforcleanAntiPionsHI",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
567         flist->Add(fDCAXYZforcleanAntiPionsHI);
568         //Secondrary Protons Hadronic
569         fDCAXYZforcleanProtonsHI=new TH3F("fDCAXYZforcleanProtonsHI",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
570         flist->Add(fDCAXYZforcleanProtonsHI);
571         fDCAXYZforcleanAntiProtonsHI=new TH3F("fDCAXYZforcleanAntiProtonsHI",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
572         flist->Add(fDCAXYZforcleanAntiProtonsHI);
573         //Secondrary Pions mu el
574         fDCAXYZforcleanPionsMEPrimary=new TH3F("fDCAXYZforcleanPionsMEPrimary",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
575         flist->Add(fDCAXYZforcleanPionsMEPrimary);
576         fDCAXYZforcleanAntiPionsMEPrimary=new TH3F("fDCAXYZforcleanAntiPionsMEPrimary",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
577         flist->Add(fDCAXYZforcleanAntiPionsMEPrimary);
578         fDCAXYZforcleanPionsMESecondary=new TH3F("fDCAXYZforcleanPionsMESecondary",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
579         flist->Add(fDCAXYZforcleanPionsMESecondary);
580         fDCAXYZforcleanAntiPionsMESecondary=new TH3F("fDCAXYZforcleanAntiPionsMESecondary",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
581         flist->Add(fDCAXYZforcleanAntiPionsMESecondary);
582         
583         fDCAXYZforcleanPionsR=new TH3F("fDCAXYZforcleanPionsR",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
584         flist->Add(fDCAXYZforcleanPionsR);
585         fDCAXYZforcleanAntiPionsR=new TH3F("fDCAXYZforcleanAntiPionsR",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
586         flist->Add(fDCAXYZforcleanAntiPionsR);
587         //Secondrary Protons Hadronic
588         fDCAXYZforcleanProtonsR=new TH3F("fDCAXYZforcleanProtonsR",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
589         flist->Add(fDCAXYZforcleanProtonsR);
590         fDCAXYZforcleanAntiProtonsR=new TH3F("fDCAXYZforcleanAntiProtonsR",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
591         flist->Add(fDCAXYZforcleanAntiProtonsR);
592         
593         
594         
595         fDCAXYZOpenforcleanPionsMCPrimary=new TH3F("fDCAXYZOpenforcleanPionsMCPrimary",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
596         flist->Add(fDCAXYZOpenforcleanPionsMCPrimary);
597         fDCAXYZOpenforcleanAntiPionsMCPrimary=new TH3F("fDCAXYZOpenforcleanAntiPionsMCPrimary",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
598         flist->Add(fDCAXYZOpenforcleanAntiPionsMCPrimary);
599         fDCAXYZOpenforcleanProtonsMCPrimary=new TH3F("fDCAXYZOpenforcleanProtonsMCPrimary",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
600         flist->Add(fDCAXYZOpenforcleanProtonsMCPrimary);
601         fDCAXYZOpenforcleanAntiProtonsMCPrimary=new TH3F("fDCAXYZOpenforcleanAntiProtonsMCPrimary",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
602         flist->Add(fDCAXYZOpenforcleanAntiProtonsMCPrimary);
603         
604         fDCAXYZOpenforcleanPionsWD=new TH3F("fDCAXYZOpenforcleanPionsWD",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
605         flist->Add(fDCAXYZOpenforcleanPionsWD);
606         fDCAXYZOpenforcleanAntiPionsWD=new TH3F("fDCAXYZOpenforcleanAntiPionsWD",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
607         flist->Add(fDCAXYZOpenforcleanAntiPionsWD);
608         //Secondrary Protons weak deacy
609         
610         fDCAXYZOpenforcleanProtonsWD=new TH3F("fDCAXYZOpenforcleanProtonsWD",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
611         flist->Add(fDCAXYZOpenforcleanProtonsWD);
612         fDCAXYZOpenforcleanAntiProtonsWD=new TH3F("fDCAXYZOpenforcleanAntiProtonsWD",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
613         flist->Add(fDCAXYZOpenforcleanAntiProtonsWD);
614
615         fDCAXYZOpenforcleanPionsHI=new TH3F("fDCAXYZOpenforcleanPionsHI",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
616         flist->Add(fDCAXYZOpenforcleanPionsHI);
617         fDCAXYZOpenforcleanAntiPionsHI=new TH3F("fDCAXYZOpenforcleanAntiPionsHI",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
618         flist->Add(fDCAXYZOpenforcleanAntiPionsHI);
619         //Secondrary Protons Hadronic
620         fDCAXYZOpenforcleanProtonsHI=new TH3F("fDCAXYZOpenforcleanProtonsHI",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
621         flist->Add(fDCAXYZOpenforcleanProtonsHI);
622         fDCAXYZOpenforcleanAntiProtonsHI=new TH3F("fDCAXYZOpenforcleanAntiProtonsHI",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
623         flist->Add(fDCAXYZOpenforcleanAntiProtonsHI);
624         //Secondrary Pions mu el
625         
626         fDCAXYZOpenforcleanPionsMEPrimary=new TH3F("fDCAXYZOpenforcleanPionsMEPrimary",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
627         flist->Add(fDCAXYZOpenforcleanPionsMEPrimary);
628         fDCAXYZOpenforcleanAntiPionsMEPrimary=new TH3F("fDCAXYZOpenforcleanAntiPionsMEPrimary",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
629         flist->Add(fDCAXYZOpenforcleanAntiPionsMEPrimary);
630         fDCAXYZOpenforcleanPionsMESecondary=new TH3F("fDCAXYZOpenforcleanPionsMESecondary",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
631         flist->Add(fDCAXYZOpenforcleanPionsMESecondary);
632         fDCAXYZOpenforcleanAntiPionsMESecondary=new TH3F("fDCAXYZOpenforcleanAntiPionsMESecondary",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
633         flist->Add(fDCAXYZOpenforcleanAntiPionsMESecondary);
634         
635         fDCAXYZOpenforcleanPionsR=new TH3F("fDCAXYZOpenforcleanPionsR",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
636         flist->Add(fDCAXYZOpenforcleanPionsR);
637         fDCAXYZOpenforcleanAntiPionsR=new TH3F("fDCAXYZOpenforcleanAntiPionsR",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
638         flist->Add(fDCAXYZOpenforcleanAntiPionsR);
639         //Secondrary Protons Hadronic
640         fDCAXYZOpenforcleanProtonsR=new TH3F("fDCAXYZOpenforcleanProtonsR",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
641         flist->Add(fDCAXYZOpenforcleanProtonsR);
642         fDCAXYZOpenforcleanAntiProtonsR=new TH3F("fDCAXYZOpenforcleanAntiProtonsR",";Pt[GeV/c];dcaxy[cm];dcaz[cm]",kPtBins,binsPtDummy,kDCABins,binsDCADummy,kDCABins,binsDCADummy);
643         flist->Add(fDCAXYZOpenforcleanAntiProtonsR);
644         
645         
646         
647         fElectronsource=new TH2F("fElectronsource","electrons;Pt [GeV/c];Process",kPtBins,binsPtDummy, kMaxMCProcess,0,kMaxMCProcess);
648         flist->Add(fElectronsource);
649         fAntiElectronsource=new TH2F("fAntiElectronsource","positrons;Pt [GeV/c];Process",kPtBins,binsPtDummy, kMaxMCProcess,0,kMaxMCProcess);
650         flist->Add(fAntiElectronsource);
651         fMuonsource=new TH2F("fMuonsource","electrons;Pt [GeV/c];Process",kPtBins,binsPtDummy, kMaxMCProcess,0,kMaxMCProcess);
652         flist->Add(fMuonsource);
653          fAntiMuonsource=new TH2F("fAntiMuonsource","positrons;Pt [GeV/c];Process",kPtBins,binsPtDummy, kMaxMCProcess,0,kMaxMCProcess);
654         flist->Add(fAntiMuonsource);
655         
656         fPrimaryElectronsMother=new TH1F("fPrimaryElectronsMother",";pdg code",4990,10.5,5000.5);
657         flist->Add(fPrimaryElectronsMother);
658         
659         Double_t type[13]={-0.5,0.5,1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5,10.5,11.5};
660         Double_t cutlevel[10]={0.5,1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5};
661         
662         fParticlesCutmonitoring=new TH3F("fParticlesCutmonitoring",";particle;cut;Pt [GeV/c]",12,type,9,cutlevel,kPtBins,binsPtDummy);
663
664         fParticlesCutmonitoring->GetXaxis()->SetBinLabel(1,"pion");
665         fParticlesCutmonitoring->GetXaxis()->SetBinLabel(2,"kaon");
666         fParticlesCutmonitoring->GetXaxis()->SetBinLabel(3,"proton");
667         fParticlesCutmonitoring->GetXaxis()->SetBinLabel(4,"antipion");
668         fParticlesCutmonitoring->GetXaxis()->SetBinLabel(5,"antikaon");
669         fParticlesCutmonitoring->GetXaxis()->SetBinLabel(6,"antiproton");
670         fParticlesCutmonitoring->GetXaxis()->SetBinLabel(7,"pionfake");
671         fParticlesCutmonitoring->GetXaxis()->SetBinLabel(8,"kaonfake");
672         fParticlesCutmonitoring->GetXaxis()->SetBinLabel(9,"protonfake");
673         fParticlesCutmonitoring->GetXaxis()->SetBinLabel(10,"antipionfake");
674         fParticlesCutmonitoring->GetXaxis()->SetBinLabel(11,"antikaonfake");
675         fParticlesCutmonitoring->GetXaxis()->SetBinLabel(12,"antiprotonfake");
676         
677         fParticlesCutmonitoring->GetYaxis()->SetBinLabel(1,"TPCin");
678         fParticlesCutmonitoring->GetYaxis()->SetBinLabel(2,"TPCrefit");
679         fParticlesCutmonitoring->GetYaxis()->SetBinLabel(3,"nTPCclu");  
680         fParticlesCutmonitoring->GetYaxis()->SetBinLabel(4,"chi2");
681         fParticlesCutmonitoring->GetYaxis()->SetBinLabel(5,"ITSrefit");
682         fParticlesCutmonitoring->GetYaxis()->SetBinLabel(6,"SPDany");
683         fParticlesCutmonitoring->GetYaxis()->SetBinLabel(7,"standard");
684         fParticlesCutmonitoring->GetYaxis()->SetBinLabel(8,"ITSpid");
685         fParticlesCutmonitoring->GetYaxis()->SetBinLabel(9,"DCA");
686         flist->Add(fParticlesCutmonitoring);
687         
688         fVertexshift=new TH3F("fVertexshift",";#delta_{x};#delta_{y};#delta_{z}",50,-0.06,0.06,50,-0.06,0.06,50,-2,2);
689         flist->Add(fVertexshift);
690         
691         Double_t deltapttpc[41];
692         Double_t deltaptall[41];
693         for(int i=0;i<41;i++)
694         {
695                 deltapttpc[i]=-0.8+i*(1.6/40);
696                 deltaptall[i]=-0.2+i*(0.4/40);
697         }
698         fPtESDminusPtMCvPtESDafterallcuts= new TH3F("fPtESDminusPtMCvPtESDafterallcuts",";#delta_{PtESD-PtMC};PtESD;type",40,deltaptall,kPtBins,binsPtDummy,12,type);
699         flist->Add(fPtESDminusPtMCvPtESDafterallcuts);
700         fPtESDminusPtMCvPtESDafterallcuts->GetZaxis()->SetBinLabel(1,"pion");
701         fPtESDminusPtMCvPtESDafterallcuts->GetZaxis()->SetBinLabel(2,"kaon");
702         fPtESDminusPtMCvPtESDafterallcuts->GetZaxis()->SetBinLabel(3,"proton");
703         fPtESDminusPtMCvPtESDafterallcuts->GetZaxis()->SetBinLabel(4,"antipion");
704         fPtESDminusPtMCvPtESDafterallcuts->GetZaxis()->SetBinLabel(5,"antikaon");
705         fPtESDminusPtMCvPtESDafterallcuts->GetZaxis()->SetBinLabel(6,"antiproton");
706         fPtESDminusPtMCvPtESDafterallcuts->GetZaxis()->SetBinLabel(7,"pionfake");
707         fPtESDminusPtMCvPtESDafterallcuts->GetZaxis()->SetBinLabel(8,"kaonfake");
708         fPtESDminusPtMCvPtESDafterallcuts->GetZaxis()->SetBinLabel(9,"protonfake");
709         fPtESDminusPtMCvPtESDafterallcuts->GetZaxis()->SetBinLabel(10,"antipionfake");
710         fPtESDminusPtMCvPtESDafterallcuts->GetZaxis()->SetBinLabel(11,"antikaonfake");
711         fPtESDminusPtMCvPtESDafterallcuts->GetZaxis()->SetBinLabel(12,"antiprotonfake");
712         
713         fPtESDminusPtMCvPtESDafterTPCcuts= new TH3F("fPtESDminusPtMCvPtESDafterTPCcuts",";#delta_{PtESD-PtMC};PtESD;type",40,deltapttpc,kPtBins,binsPtDummy,12,type);
714         flist->Add(fPtESDminusPtMCvPtESDafterTPCcuts);
715         fPtESDminusPtMCvPtESDafterTPCcuts->GetZaxis()->SetBinLabel(1,"pion");
716         fPtESDminusPtMCvPtESDafterTPCcuts->GetZaxis()->SetBinLabel(2,"kaon");
717         fPtESDminusPtMCvPtESDafterTPCcuts->GetZaxis()->SetBinLabel(3,"proton");
718         fPtESDminusPtMCvPtESDafterTPCcuts->GetZaxis()->SetBinLabel(4,"antipion");
719         fPtESDminusPtMCvPtESDafterTPCcuts->GetZaxis()->SetBinLabel(5,"antikaon");
720         fPtESDminusPtMCvPtESDafterTPCcuts->GetZaxis()->SetBinLabel(6,"antiproton");
721         fPtESDminusPtMCvPtESDafterTPCcuts->GetZaxis()->SetBinLabel(7,"pionfake");
722         fPtESDminusPtMCvPtESDafterTPCcuts->GetZaxis()->SetBinLabel(8,"kaonfake");
723         fPtESDminusPtMCvPtESDafterTPCcuts->GetZaxis()->SetBinLabel(9,"protonfake");
724         fPtESDminusPtMCvPtESDafterTPCcuts->GetZaxis()->SetBinLabel(10,"antipionfake");
725         fPtESDminusPtMCvPtESDafterTPCcuts->GetZaxis()->SetBinLabel(11,"antikaonfake");
726         fPtESDminusPtMCvPtESDafterTPCcuts->GetZaxis()->SetBinLabel(12,"antiprotonfake");
727         
728         
729         fMulESDMulMCVz=new TH3F("fMulESDMulMCVz",";NtracksESD;NparticlesMC;Vrt_z ",50,0,50,100,0,100,20,-10,10);
730         flist->Add(fMulESDMulMCVz);
731         PostData(1,  flist);
732         Printf("end of CreateOutputObjects with MC");
733 }
734 //________________________________________________________________________
735 void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::LocalInit() 
736 {
737         //LocalInit
738         Printf("end of LocalInit");
739 }
740
741 //________________________________________________________________________
742 void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::UserExec(Option_t *) 
743 {
744         //UserExec
745         Bool_t isphysevent=0;
746         Bool_t isgoodvertex=0;
747         Bool_t isvxerteinZ=0;
748                 
749          fESD = dynamic_cast<AliESDEvent*> (InputEvent());
750         if (!fESD) 
751         {
752                 Printf("ERROR: fESD not available");
753                 return;
754         }
755         
756         Float_t refmultiplicity=fCutsMul->CountAcceptedTracks(fESD);
757         if(fLowMultiplicity>-1)
758         {
759                 if(refmultiplicity<fLowMultiplicity)
760                         return;
761         }
762         if(fUpMultiplicity>-1)
763         {
764                 if(refmultiplicity>fUpMultiplicity)
765                         return;
766         }
767         AliStack* stack=0x0;
768         Double_t mcXvertex=0.0;
769         Double_t mcYvertex=0.0;
770         Double_t mcZvertex=0.0;
771         
772         if(fMC)
773         {
774                 AliMCEvent* mcEvent  = (AliMCEvent*) MCEvent();
775                 //Printf("MC particles: %d", mcEvent->GetNumberOfTracks());
776                 stack = mcEvent->Stack();
777                 mcXvertex=mcEvent->GetPrimaryVertex()->GetX();
778                 mcYvertex=mcEvent->GetPrimaryVertex()->GetY();
779                 mcZvertex=mcEvent->GetPrimaryVertex()->GetZ();
780         }       
781         
782         
783         fHistStats->Fill(0);
784         //Event selection 
785         //if( ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()==0)        
786           UInt_t isSelected = 0;
787          if(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler())))
788                 isSelected=((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
789         //Printf("Mask_selection %u %u", isSelected,AliVEvent::kMB);  
790         if(!(isSelected&AliVEvent::kMB))
791         {
792                  isphysevent=0;
793                 // Printf("No phys event.........\n");
794         }       
795         else
796         {
797                  isphysevent=1;
798                  if(!fHIsettings)
799                         fHistStats->Fill(1);
800         }
801         if(isphysevent&&fHIsettings)
802         {       
803                 AliCentrality *centrality = fESD->GetCentrality();
804                 if(!(fLowCentrality<0.0)&&fUpCentrality>0.0)
805                 {
806                         if(!centrality->IsEventInCentralityClass(fLowCentrality,fUpCentrality,"V0M"))
807                                 return;
808                         else
809                                 fHistStats->Fill(1);
810                 }       
811         }
812         
813         //Good vertex   
814         const AliESDVertex *vertex = fESD->GetPrimaryVertexTracks();
815         if(isphysevent)
816         {
817           //vertex = fESD->GetPrimaryVertexTracks();
818                 if(vertex->GetNContributors()<1) 
819                 {
820                         // SPD vertex
821                         vertex = fESD->GetPrimaryVertexSPD();
822                         if(vertex->GetNContributors()<1) 
823                         {
824                                 //Printf("No good  Vertex.........\n");
825                                 isgoodvertex=0;
826                         }
827                         else
828                         {
829                                 isgoodvertex=1;
830                                 fHistStats->Fill(2);    
831                                 fHistZVertexBeforeCut->Fill(vertex ->GetZ());
832                                 fHistXYVertexBeforeCut->Fill(vertex ->GetX(),vertex ->GetY());
833                         }       
834                 }
835                 else
836                 {
837                         isgoodvertex=1; 
838                         fHistStats->Fill(2);    
839                         fHistZVertexBeforeCut->Fill(vertex ->GetZ());
840                         fHistXYVertexBeforeCut->Fill(vertex ->GetX(),vertex ->GetY()); 
841                 }
842                 if(isgoodvertex)
843                 {       
844                         if(TMath::Abs(vertex ->GetZ())>10.0)
845                         {
846                                 //Printf("No good  Z of Vertex.........\n");
847                                 isvxerteinZ=0;
848                         }
849                         else
850                                 isvxerteinZ=1;
851                 }       
852         }
853         if(fdovertexrescuts&&fMC)
854         {
855                 cout<<TMath::Abs(vertex->GetX()-mcXvertex)<<" "<<TMath::Abs(vertex->GetY()-mcYvertex)<<" "<<TMath::Abs(vertex->GetZ()-mcZvertex)<<endl;
856                 if(TMath::Abs(vertex->GetX()-mcXvertex)>0.015||TMath::Abs(vertex->GetY()-mcYvertex)>0.015||TMath::Abs(vertex->GetZ()-mcZvertex)>0.15)
857                         isvxerteinZ=0;  
858         }  
859         Int_t fMCmult=0;
860         if(stack)//Looping over MC information of all events
861         {
862                 Float_t minpt=0.0;
863                 Float_t maxpt=0.0;
864                 Float_t mineta=0.0;
865                 Float_t maxeta=0.0;
866                 
867                 fCutsMul->GetPtRange(minpt,maxpt);
868                 fCutsMul->GetEtaRange(mineta,maxeta);
869                 fHistStats->Fill(8);
870                 if(TMath::Abs(mcZvertex)<10.0)
871                         fHistStats->Fill(9);
872                 for (int imc=0;imc<stack->GetNtrack();imc++)
873                 {
874                         if(!(stack->IsPhysicalPrimary(imc)))
875                                 continue;
876                         TParticle *particleMC = stack->Particle(imc);
877                         if(!particleMC)
878                                 continue;
879                         Int_t pdgcodeMC = particleMC->GetPdgCode();
880                         if(!(pdgcodeMC==211||pdgcodeMC==-211||pdgcodeMC==321||pdgcodeMC==-321||pdgcodeMC==2212||pdgcodeMC==-2212))      
881                                 continue;
882                         if(particleMC->Pt()>minpt&&particleMC->Pt()<maxpt&&particleMC->Eta()>mineta&&particleMC->Eta()<maxeta)
883                                 fMCmult++;      
884                         if (TMath::Abs(particleMC->Y())>fYCut)
885                                 continue;
886                         if (particleMC->Pt()>2.0)
887                                 continue;
888                         //Printf("%d aa",imc);                  
889                         
890                         if(pdgcodeMC==211)      
891                                 fHistminsignalifPionPMCPrimaryBeforeEventCuts->Fill(particleMC->Pt());
892                         if(pdgcodeMC==-211)     
893                                 fHistminsignalifAntiPionPMCPrimaryBeforeEventCuts->Fill(particleMC->Pt());
894                         if(pdgcodeMC==321)
895                                 fHistminsignalifKaonPMCPrimaryBeforeEventCuts->Fill(particleMC->Pt());
896                         if(pdgcodeMC==-321)
897                                 fHistminsignalifAntiKaonPMCPrimaryBeforeEventCuts->Fill(particleMC->Pt());
898                         if(pdgcodeMC==2212)
899                                 fHistminsignalifProtonPMCPrimaryBeforeEventCuts->Fill(particleMC->Pt());
900                         if(pdgcodeMC==-2212)
901                                 fHistminsignalifAntiProtonPMCPrimaryBeforeEventCuts->Fill(particleMC->Pt());
902                         
903                         if(TMath::Abs(mcZvertex)<10.0)
904                         {               
905                                 if(pdgcodeMC==211)      
906                                         fHistminsignalifPionPMCPrimaryBeforeEventCutswithgoodZvertex->Fill(particleMC->Pt());
907                                 if(pdgcodeMC==-211)     
908                                         fHistminsignalifAntiPionPMCPrimaryBeforeEventCutswithgoodZvertex->Fill(particleMC->Pt());
909                                 if(pdgcodeMC==321)
910                                         fHistminsignalifKaonPMCPrimaryBeforeEventCutswithgoodZvertex->Fill(particleMC->Pt());
911                                 if(pdgcodeMC==-321)
912                                         fHistminsignalifAntiKaonPMCPrimaryBeforeEventCutswithgoodZvertex->Fill(particleMC->Pt());
913                                 if(pdgcodeMC==2212)
914                                         fHistminsignalifProtonPMCPrimaryBeforeEventCutswithgoodZvertex->Fill(particleMC->Pt());
915                                 if(pdgcodeMC==-2212)
916                                         fHistminsignalifAntiProtonPMCPrimaryBeforeEventCutswithgoodZvertex->Fill(particleMC->Pt());
917                         }
918                         if(!isphysevent)
919                                 continue;
920                         if(!isgoodvertex)
921                                 continue;       
922                         if(pdgcodeMC==211)      
923                                 fHistminsignalifPionPMCPrimaryAfterEventCutsBeforeVertexZ->Fill(particleMC->Pt());
924                         if(pdgcodeMC==-211)     
925                                 fHistminsignalifAntiPionPMCPrimaryAfterEventCutsBeforeVertexZ->Fill(particleMC->Pt());
926                         if(pdgcodeMC==321)
927                                 fHistminsignalifKaonPMCPrimaryAfterEventCutsBeforeVertexZ->Fill(particleMC->Pt());
928                         if(pdgcodeMC==-321)
929                                 fHistminsignalifAntiKaonPMCPrimaryAfterEventCutsBeforeVertexZ->Fill(particleMC->Pt());
930                         if(pdgcodeMC==2212)
931                                 fHistminsignalifProtonPMCPrimaryAfterEventCutsBeforeVertexZ->Fill(particleMC->Pt());
932                         if(pdgcodeMC==-2212)
933                                 fHistminsignalifAntiProtonPMCPrimaryAfterEventCutsBeforeVertexZ->Fill(particleMC->Pt());        
934                         if(!isvxerteinZ)
935                                 continue;               
936                         if(pdgcodeMC==211)      
937                         {
938                                 fHistminsignalifPionPMCPrimary->Fill(particleMC->Pt());
939                         }       
940                         if(pdgcodeMC==-211)
941                         {       
942                                 fHistminsignalifAntiPionPMCPrimary->Fill(particleMC->Pt());
943                         }               
944                         if(pdgcodeMC==321)
945                         {       
946                                 fHistminsignalifKaonPMCPrimary->Fill(particleMC->Pt());
947                         }       
948                         if(pdgcodeMC==-321)
949                         {       
950                                 fHistminsignalifAntiKaonPMCPrimary->Fill(particleMC->Pt());
951                         }       
952                         if(pdgcodeMC==2212)
953                         {       
954                                 fHistminsignalifProtonPMCPrimary->Fill(particleMC->Pt());
955                         }       
956                         if(pdgcodeMC==-2212)
957                         {       
958                                 fHistminsignalifAntiProtonPMCPrimary->Fill(particleMC->Pt());
959                         }               
960                                                         
961                 }
962         }
963         else return;
964         
965         if(!(isphysevent&&isgoodvertex&&isvxerteinZ))
966         {
967                 //Printf("No Good event.........\n");
968                 PostData(1,  flist);
969                 //Printf("end of Exec");
970                 return;
971         }
972         
973         fHistStats->Fill(3);
974                 
975         fHistZVertexAfterCut->Fill(vertex ->GetZ());
976         fHistXYVertexAfterCut->Fill(vertex ->GetX(),vertex ->GetY()); 
977         
978         if(fMC)
979         {
980                 fVertexshift->Fill(vertex->GetX()-mcXvertex,vertex->GetY()-mcYvertex,vertex->GetZ()-mcZvertex);
981                 fMulESDMulMCVz->Fill(refmultiplicity,fMCmult,vertex->GetZ());
982         }               
983         if(fCuts==0)
984         {
985                 //Printf("No CUTS Defined.........\n");
986                 PostData(1,  flist);
987                 //Printf("end of Exec");
988                 return;
989         }
990         
991         //Printf("There are %d tracks in this event", fESD->GetNumberOfTracks());
992          Int_t nTracks=fESD->GetNumberOfTracks();
993         
994         Int_t mynumberoftracks=0;
995          AliESDtrack *trackESD=0;
996          
997         const Float_t pionmass=AliPID::ParticleMass(2);
998         const Float_t kaonmass=AliPID::ParticleMass(3);
999         const Float_t protonmass=AliPID::ParticleMass(4);
1000
1001         for(int tr1=0;tr1<nTracks;tr1++)
1002         {       
1003                 
1004                 trackESD=fESD->GetTrack(tr1);   
1005                 //fHistStats->Fill(2);
1006                 
1007                 Double_t pt=trackESD->Pt()*trackESD->GetSign();
1008                 Double_t p=trackESD->P();
1009                 Double_t eta=trackESD->Eta();
1010                 Double_t phi=trackESD->Phi();
1011                 Float_t dcaxy=0.0; 
1012                 Float_t dcaz=0.0;
1013                 trackESD->GetImpactParameters(dcaxy,dcaz);
1014                 Double_t pz=trackESD->Pz();
1015                  UShort_t nTPCclusters=trackESD->GetTPCNcls();
1016                  Float_t chi2=trackESD->GetTPCchi2();
1017                  if(nTPCclusters>0)
1018                         chi2=chi2/((Float_t)nTPCclusters);
1019                 else
1020                         chi2=-1.0;
1021                 if(!trackESD->IsOn(AliESDtrack::kTPCin))
1022                         continue;                       
1023                 //Y assumtion
1024                 Float_t yforpion=0.5*TMath::Log((TMath::Sqrt(pionmass*pionmass+p*p)+pz)/(TMath::Sqrt(pionmass*pionmass+p*p)-pz));
1025                 Float_t yforkaon=0.5*TMath::Log((TMath::Sqrt(kaonmass*kaonmass+p*p)+pz)/(TMath::Sqrt(kaonmass*kaonmass+p*p)-pz));
1026                 Float_t yforproton=0.5*TMath::Log((TMath::Sqrt(protonmass*protonmass+p*p)+pz)/(TMath::Sqrt(protonmass*protonmass+p*p)-pz));
1027                 
1028                 if(TMath::Abs(yforpion)>fYCut&&TMath::Abs(yforkaon)>fYCut&&TMath::Abs(yforproton)>fYCut) //go trought one y cut
1029                         continue;
1030                 Int_t label=-1;
1031                 if(fMC)
1032                         label=trackESD->GetLabel();
1033                 //if(label<0)   
1034                 //      Printf("label %d %f %f %f %f %d %f %f\n",label,p,pt,eta,chi2,nTPCclusters,dcaxy,dcaz);  
1035                 Int_t pdgcode=0;
1036                 Int_t primary=0;
1037                 Double_t chargeMC=1.0;
1038                 Float_t etaMC=10.0;
1039                 Float_t ptMC=10.0;
1040                 Int_t   uniqueID=-1;
1041                 Int_t pdgcodefake=0;
1042                 Int_t primaryfake=0;
1043                 //TParticle *particle2=0x0;
1044                 TParticle *particle2 = stack->Particle(TMath::Abs(label));
1045
1046                 if(label>=0&&stack&&fMC)
1047                 {
1048                         primary=stack->IsPhysicalPrimary(TMath::Abs(label));
1049                         //particle2 = stack->Particle(TMath::Abs(label));
1050                         pdgcode=particle2->GetPdgCode();
1051                         chargeMC=particle2->GetPDG(0)->Charge()/3.0;
1052                         etaMC=particle2->Eta();
1053                         ptMC=particle2->Pt();
1054                         uniqueID=particle2->GetUniqueID();
1055                 }
1056                 else if(label<0&&stack&&fMC)
1057                 {
1058                         primaryfake=stack->IsPhysicalPrimary(TMath::Abs(label));
1059                         //particle2 = stack->Particle(TMath::Abs(label));
1060                         pdgcodefake=particle2->GetPdgCode();
1061                         uniqueID=particle2->GetUniqueID();
1062                         
1063                 }       
1064                 
1065                 Int_t typeParticle=-10;
1066                 if((primaryfake||primary))
1067                 {
1068                         
1069                         if((pdgcodefake==211||pdgcode==211)&&TMath::Abs(yforpion)<fYCut)
1070                                 typeParticle=0;
1071                         if((pdgcodefake==321||pdgcode==321)&&TMath::Abs(yforkaon)<fYCut)
1072                                 typeParticle=1;
1073                         if((pdgcodefake==2212||pdgcode==2212)&&TMath::Abs(yforproton)<fYCut)
1074                                 typeParticle=2;
1075                         if((pdgcodefake==-211||pdgcode==-211)&&TMath::Abs(yforpion)<fYCut)
1076                                 typeParticle=3;
1077                         if((pdgcodefake==-321||pdgcode==-321)&&TMath::Abs(yforkaon)<fYCut)
1078                                 typeParticle=4;
1079                         if((pdgcodefake==-2212||pdgcode==-2212)&&TMath::Abs(yforproton)<fYCut)
1080                                 typeParticle=5;
1081                         
1082                         if(primaryfake) 
1083                                 typeParticle+=6;
1084                 }       
1085                 
1086                 fTracksCutmonitoring->Fill(1,TMath::Abs(pt));
1087                 if(fMC)
1088                 {
1089                         fParticlesCutmonitoring->Fill(typeParticle,1,TMath::Abs(pt));   
1090                         if(trackESD->IsOn(AliESDtrack::kTPCrefit))
1091                         {
1092                                 fParticlesCutmonitoring->Fill(typeParticle,2,TMath::Abs(pt));
1093                                 if(nTPCclusters>70)
1094                                 {
1095                                         fParticlesCutmonitoring->Fill(typeParticle,3,TMath::Abs(pt));
1096                                         if(chi2<4.0)
1097                                         {
1098                                                 fParticlesCutmonitoring->Fill(typeParticle,4,TMath::Abs(pt));
1099                                                 fPtESDminusPtMCvPtESDafterTPCcuts->Fill(TMath::Abs(pt)-particle2->Pt(),TMath::Abs(pt),typeParticle);
1100                                                 if(trackESD->IsOn(AliESDtrack::kITSrefit))
1101                                                 {
1102                                                         fParticlesCutmonitoring->Fill(typeParticle,5,TMath::Abs(pt));
1103                                                         if(trackESD->HasPointOnITSLayer(0)||trackESD->HasPointOnITSLayer(1))
1104                                                         {
1105                                                                 fParticlesCutmonitoring->Fill(typeParticle,6,TMath::Abs(pt));
1106                                                         }
1107                                                 }
1108                                         }               
1109                                         
1110                                 }       
1111                         }
1112                 }       
1113                         
1114                         
1115                 fHistPhiPtBeforeCuts->Fill(phi,pt);//phi pt
1116                 fHistEtaPtBeforeCuts->Fill(eta,pt);
1117                 fHistDCABeforeCuts->Fill(dcaxy,dcaz);   
1118                 
1119                 
1120
1121                         
1122                 //standart cuts         
1123                 if(fCuts->AcceptTrack(trackESD)==kFALSE)
1124                         continue;
1125                 fTracksCutmonitoring->Fill(2,TMath::Abs(pt));   
1126                 if(fMC)
1127                         fParticlesCutmonitoring->Fill(typeParticle,7,TMath::Abs(pt));
1128                 //Tpc pid cut for debug 
1129                 Double_t pinTPC=trackESD->GetTPCInnerParam()->GetP();//momentum in primary vertex taken from TPC tracking
1130                 Double_t pinTPCglobal=trackESD->GetInnerParam()->GetP();//momentum at the inner  wall of the TPC taken from global tracking
1131                 Float_t sigKaon= fESDpid->GetTPCResponse().GetExpectedSignal(pinTPCglobal, AliPID::kKaon);
1132                 Float_t sigProton= fESDpid->GetTPCResponse().GetExpectedSignal(pinTPCglobal, AliPID::kProton);
1133                 Double_t tpcSignal =trackESD ->GetTPCsignal();
1134                 
1135                 if(fTPCPIDCUT)
1136                 {
1137                         if(fTPCPIDCUT->AcceptTrack(trackESD,fESD)==kFALSE)
1138                                 continue;
1139                 }
1140                                 
1141                 Bool_t cutDCA=SelectOnImpPar(trackESD); 
1142                 
1143                 //fHistStats->Fill(4);
1144                 Double_t tmpQESD[4]={-1.0,-1.0,-1.0,-1.0};
1145                 trackESD->GetITSdEdxSamples(tmpQESD);
1146                 if(fCorrectSDD&&fMC)
1147                         CorrectSDD(tmpQESD);    
1148                 if(fCorrectSSD&&fMC)
1149                         CorrectSSD(tmpQESD);    
1150                 Int_t nSSDSDD=0;
1151                 Int_t nSSDSDDall=0;
1152                 
1153                 
1154                 
1155                 if(TMath::Abs(yforpion)<fYCut&&cutDCA) 
1156                         fHistNtrackwithstandardcuts->Fill(TMath::Abs(pt),0);
1157                 if(TMath::Abs(yforkaon)<fYCut&&cutDCA) 
1158                 {
1159                         fHistNtrackwithstandardcuts->Fill(TMath::Abs(pt),1);
1160                         if(pt>0.0)
1161                                 fHistSignalinTPCKaonforstandardcuts->Fill(pt,(tpcSignal-sigKaon)/sigKaon);
1162                         else
1163                                 fHistSignalinTPCAntiKaonforstandardcuts->Fill(TMath::Abs(pt),(tpcSignal-sigKaon)/sigKaon);      
1164                 }
1165                 if(TMath::Abs(yforproton)<fYCut&&cutDCA) 
1166                 {
1167                         fHistNtrackwithstandardcuts->Fill(TMath::Abs(pt),2);
1168                         if(pt>0.0)
1169                                 fHistSignalinTPCProtonforstandardcuts->Fill(pt,(tpcSignal-sigProton)/sigProton);
1170                         else
1171                                 fHistSignalinTPCAntiProtonforstandardcuts->Fill(TMath::Abs(pt),(tpcSignal-sigProton)/sigProton);        
1172                 }               
1173                 
1174                         
1175                 for (int iL=0;iL<4;iL++)
1176                 {
1177                         if(tmpQESD[iL]>fchargeCut)
1178                                 nSSDSDD++;
1179                         if(tmpQESD[iL]>0.0)
1180                                 nSSDSDDall++;   
1181                 }       
1182                 if(nSSDSDDall>=3)
1183                         fHistStats->Fill(4);
1184                 //ITS PId cut
1185                 if(nSSDSDD<3)
1186                 {
1187                 //      cout<<"BAD "<<stack->Particle(TMath::Abs(trackESD->GetLabel()))->GetPdgCode()<<endl;
1188                         continue;
1189                 }       
1190                 fTracksCutmonitoring->Fill(3,TMath::Abs(pt));
1191                 if(fMC)
1192                         fParticlesCutmonitoring->Fill(typeParticle,8,TMath::Abs(pt));
1193                 if(cutDCA)
1194                 {
1195                         fTracksCutmonitoring->Fill(4,TMath::Abs(pt));
1196                         if(fMC)
1197                         {
1198                                 fParticlesCutmonitoring->Fill(typeParticle,9,TMath::Abs(pt));   
1199                                 fPtESDminusPtMCvPtESDafterallcuts->Fill(TMath::Abs(pt)-particle2->Pt(),TMath::Abs(pt),typeParticle);
1200                         }               
1201                 }
1202                 if(TMath::Abs(yforpion)<fYCut&&cutDCA) 
1203                 {
1204                         fHistNtrackwithITSPIDcuts->Fill(TMath::Abs(pt),0);
1205                         if(pt>0.0)
1206                         {
1207                                  fPionNTPCClusters->Fill(pt,nTPCclusters);
1208                                  fPionchi2->Fill(pt,chi2);
1209                         }
1210                         else
1211                         {
1212                                 fAntiPionNTPCClusters->Fill(TMath::Abs(pt),nTPCclusters);
1213                                 fAntiPionchi2->Fill(TMath::Abs(pt),chi2);
1214                         }               
1215                 }       
1216                 if(TMath::Abs(yforkaon)<fYCut&&cutDCA) 
1217                 {
1218                         fHistNtrackwithITSPIDcuts->Fill(TMath::Abs(pt),1);
1219                         if(pt>0.0)
1220                                 fHistSignalinTPCKaonforITSPIDcuts->Fill(pt,(tpcSignal-sigKaon)/sigKaon);
1221                         else
1222                                 fHistSignalinTPCAntiKaonforITSPIDcuts->Fill(TMath::Abs(pt),(tpcSignal-sigKaon)/sigKaon);        
1223                 }       
1224                 if(TMath::Abs(yforproton)<fYCut&&cutDCA) 
1225                 {
1226                         fHistNtrackwithITSPIDcuts->Fill(TMath::Abs(pt),2);
1227                         if(pt>0.0)
1228                                 fHistSignalinTPCProtonforITSPIDcuts->Fill(pt,(tpcSignal-sigProton)/sigProton);
1229                         else
1230                                 fHistSignalinTPCAntiProtonforITSPIDcuts->Fill(TMath::Abs(pt),(tpcSignal-sigProton)/sigProton);  
1231                 }
1232                 fHistStats->Fill(5);                            
1233                 fHistPhiPtAfterCuts->Fill(phi,pt);
1234                 fHistEtaPtAfterCuts->Fill(eta,pt);
1235                 fHistDCAAfterCuts->Fill(dcaxy,dcaz);
1236                 fHistPminusTPCinPAfterCuts->Fill(pinTPC-p,pinTPC);      
1237                 fHistPminusTPCinPglobalAfterCuts->Fill(pinTPC-p,pinTPCglobal);
1238                 if(tmpQESD[0]>fchargeCut)
1239                 {
1240                         fHistL3dEP->Fill(p,tmpQESD[0]);
1241                         fHistL3dETPCinP->Fill(pinTPC,tmpQESD[0]);
1242                 }       
1243                 if(tmpQESD[1]>fchargeCut)
1244                 {
1245                         fHistL4dEP->Fill(p,tmpQESD[1]);
1246                         fHistL4dETPCinP->Fill(pinTPC,tmpQESD[1]);
1247                 }       
1248                 if(tmpQESD[2]>fchargeCut)
1249                 {
1250                         fHistL5dEP->Fill(p,tmpQESD[2]);
1251                         fHistL5dETPCinP->Fill(pinTPC,tmpQESD[2]);
1252                 }
1253                 if(tmpQESD[3]>fchargeCut)
1254                 {
1255                         fHistL6dEP->Fill(p,tmpQESD[3]);
1256                         fHistL6dETPCinP->Fill(pinTPC,tmpQESD[3]);
1257                 }
1258                 Float_t myITSsignal=0.0;
1259                 Float_t minITSsignal=0.0;
1260                 Int_t whichLmin=-1;
1261                 Int_t nosignaL=-1;
1262                 if(nSSDSDD==3)
1263                 {
1264                         Double_t tmp2QESD[3];
1265                         Int_t iLnotZero=0;
1266                         for (int iL=0;iL<4;iL++)
1267                         {
1268                                 if(tmpQESD[iL]>fchargeCut)
1269                                 {
1270                                         tmp2QESD[iLnotZero]=tmpQESD[iL];
1271                                         iLnotZero++;
1272                                 }
1273                                 else
1274                                         nosignaL=iL;
1275                         }
1276                         whichLmin=TMath::LocMin(3,tmp2QESD);
1277                         if(nosignaL>-1&&nosignaL<=whichLmin)
1278                                 whichLmin++;
1279                         minITSsignal=TMath::MinElement(3,tmp2QESD);
1280                         myITSsignal=MyITSsignalusing3points(tmp2QESD);
1281                 }       
1282                 if(nSSDSDD==4)
1283                 {
1284                         myITSsignal=MyITSsignalusing4points(tmpQESD);
1285                         whichLmin=TMath::LocMin(4,tmpQESD);     
1286                         minITSsignal=TMath::MinElement(4,tmpQESD);
1287                 }               
1288         
1289                 if(whichLmin==0)
1290                         fHistwhichhasmin->Fill(0.0,tmpQESD[0]);
1291                 if(whichLmin==1)
1292                         fHistwhichhasmin->Fill(1.0,tmpQESD[1]);
1293                 if(whichLmin==2)
1294                         fHistwhichhasmin->Fill(2.0,tmpQESD[2]);
1295                 if(whichLmin==3)
1296                         fHistwhichhasmin->Fill(3.0,tmpQESD[3]);
1297                 if(pt>0.0)
1298                 {                       
1299                         fHistMydEPpositive->Fill(p,myITSsignal);
1300                         fHistMydETPCinPglobalpositive->Fill(pinTPCglobal,myITSsignal);
1301                         fHistMydETPCinPpositive->Fill(pinTPC,myITSsignal);
1302                 }
1303                 else
1304                 {
1305                         fHistMydEPnegative->Fill(p,myITSsignal);
1306                         fHistMydETPCinPglobalnegative->Fill(pinTPCglobal,myITSsignal);
1307                         fHistMydETPCinPnegative->Fill(pinTPC,myITSsignal);
1308                 }       
1309                 Float_t signaltouse=myITSsignal;        
1310                         
1311                 
1312                 Float_t itspidsignalforpions=TMath::Log(signaltouse)-TMath::Log(fESDpid->GetITSResponse().Bethe(p,pionmass,kFALSE));
1313                 Float_t itspidsignalforkaons=TMath::Log(signaltouse)-TMath::Log(fESDpid->GetITSResponse().Bethe(p,kaonmass,kFALSE));
1314                 Float_t itspidsignalforprotons=TMath::Log(signaltouse)-TMath::Log(fESDpid->GetITSResponse().Bethe(p,protonmass,kFALSE));
1315                 if(cutDCA)
1316                 {
1317                         mynumberoftracks++;
1318                         if(nSSDSDD==4)
1319                                 fHistMysignalminusESD->Fill((signaltouse-trackESD->GetITSsignal())/signaltouse);        
1320                 }
1321                 if(TMath::Abs(yforpion)<=fYCut)
1322                 {
1323                         Float_t weight=1.0;
1324                         if(fMC)
1325                                 weight=GetWeight(label,stack);  
1326                         if(pt>0.0)
1327                         {
1328                                 if(cutDCA)
1329                                 {
1330                                         if(fMC)
1331                                                 fHistminsignalifPionP->Fill(pt,itspidsignalforpions,weight);
1332                                         else
1333                                                 fHistminsignalifPionP->Fill(pt,itspidsignalforpions);
1334                                         if(itspidsignalforpions>-0.5&&itspidsignalforpions<0.2) //select on clean
1335                                         {
1336                                                 fDCAXYZforcleanPions->Fill(pt,dcaxy,dcaz);
1337                                                 if(fMC)
1338                                                 {
1339                                                         if(primary&&pdgcode==211)
1340                                                                 fDCAXYZforcleanPionsMCPrimary->Fill(pt,dcaxy,dcaz);
1341                                                         else if(!primary&&pdgcode==211&&uniqueID==kPDecay)
1342                                                                 fDCAXYZforcleanPionsWD->Fill(pt,dcaxy,dcaz);
1343                                                         else if(!primary&&pdgcode==211&&uniqueID==kPHadronic)
1344                                                                 fDCAXYZforcleanPionsHI->Fill(pt,dcaxy,dcaz);
1345                                                         else if(primary&&(pdgcode==-11||pdgcode==-13))
1346                                                                 fDCAXYZforcleanPionsMEPrimary->Fill(pt,dcaxy,dcaz);
1347                                                         else if(!primary&&(pdgcode==-11||pdgcode==-13))
1348                                                                 fDCAXYZforcleanPionsMESecondary->Fill(pt,dcaxy,dcaz);
1349                                                         else
1350                                                                 fDCAXYZforcleanPionsR->Fill(pt,dcaxy,dcaz);
1351                                         
1352                                                 }                          
1353                                         }        //select on clean
1354                                         if(primary)
1355                                         {       
1356                                                 if(pdgcode==211)
1357                                                         fHistminsignalifPionPPrimary->Fill(pt,itspidsignalforpions);
1358                                         }
1359                                         else 
1360                                         {
1361                                                 if(pdgcode==211)                                                        
1362                                                         fHistminsignalifPionPSecondary->Fill(pt,itspidsignalforpions,weight);
1363                                         //cout<<pdgcode<<" "<<  uniqueID<<"  "<<kPDecay<<" "<<kPHadronic<<endl;
1364                                         }                                               
1365                                         if(pdgcode==-11||pdgcode==-13)
1366                                         {
1367                                                 fHistminsignalifMuEPositiveP->Fill(pt,itspidsignalforpions);
1368                                                 if(!primary)
1369                                                 {
1370                                                         if(pdgcode==-11)
1371                                                         {
1372                                                                 fHistStats->Fill(6);
1373                                                                 fAntiElectronsource->Fill(pt,uniqueID);
1374                                                         }       
1375                                                         else if(pdgcode==-13)   
1376                                                         {
1377                                                                 fHistStats->Fill(7);
1378                                                                 fAntiMuonsource->Fill(pt,uniqueID);
1379                                                         }
1380                                                 }
1381                                                 else if(primary&&pdgcode==-11)
1382                                                 {
1383                                                         fPrimaryElectronsMother->Fill(stack->Particle(particle2->GetFirstMother())->GetPdgCode());
1384                                                         fAntiElectronsource->Fill(pt,0);
1385                                                 }                       
1386                                                 else if(primary&&pdgcode==-13)
1387                                                         fAntiMuonsource->Fill(pt,0);
1388                                         }
1389                                         if(pdgcodefake==211)
1390                                         {
1391                                                 if(primaryfake)
1392                                                         fHistminsignalifPionPrimaryfake->Fill(pt,itspidsignalforpions);
1393                                                 else
1394                                                         fHistminsignalifPionSecondaryfake->Fill(pt,itspidsignalforpions);       
1395                                         }       
1396                                 }                               
1397                                 if(itspidsignalforpions>-0.5&&itspidsignalforpions<0.2) //select on clean
1398                                 {
1399                                         fDCAXYZOpenforcleanPions->Fill(pt,dcaxy,dcaz);
1400                                         if(fMC)
1401                                         {
1402                                                 if(primary&&pdgcode==211)
1403                                                         fDCAXYZOpenforcleanPionsMCPrimary->Fill(pt,dcaxy,dcaz);
1404                                                 else if(!primary&&pdgcode==211&&uniqueID==kPDecay)       
1405                                                         fDCAXYZOpenforcleanPionsWD->Fill(pt,dcaxy,dcaz);
1406                                                 else if(!primary&&pdgcode==211&&uniqueID==kPHadronic)
1407                                                         fDCAXYZOpenforcleanPionsHI->Fill(pt,dcaxy,dcaz);
1408                                                 else if(primary&&(pdgcode==-11||pdgcode==-13))  
1409                                                         fDCAXYZOpenforcleanPionsMEPrimary->Fill(pt,dcaxy,dcaz);
1410                                                 else if(!primary&&(pdgcode==-11||pdgcode==-13)) 
1411                                                         fDCAXYZOpenforcleanPionsMESecondary->Fill(pt,dcaxy,dcaz);       
1412                                                 else
1413                                                         fDCAXYZOpenforcleanPionsR->Fill(pt,dcaxy,dcaz);                                 
1414                                         }                          
1415                                 }                       
1416                         }
1417                         else    
1418                         {
1419                                 if(cutDCA)
1420                                 {
1421                                         if(fMC)
1422                                                 fHistminsignalifAntiPionP->Fill(TMath::Abs(pt),itspidsignalforpions,weight);
1423                                         else    
1424                                                 fHistminsignalifAntiPionP->Fill(TMath::Abs(pt),itspidsignalforpions);
1425                                         if(itspidsignalforpions>-0.5&&itspidsignalforpions<0.2)//select on clean
1426                                         {
1427                                                 fDCAXYZforcleanAntiPions->Fill(TMath::Abs(pt),dcaxy,dcaz);
1428                                                 if(fMC)
1429                                                 {
1430                                                         if(primary&&pdgcode==-211)
1431                                                                 fDCAXYZforcleanAntiPionsMCPrimary->Fill(TMath::Abs(pt),dcaxy,dcaz);
1432                                                         else if(!primary&&pdgcode==-211&&uniqueID==kPDecay)      
1433                                                                 fDCAXYZforcleanAntiPionsWD->Fill(TMath::Abs(pt),dcaxy,dcaz);
1434                                                         else if(!primary&&pdgcode==-211&&uniqueID==kPHadronic)
1435                                                                 fDCAXYZforcleanAntiPionsHI->Fill(TMath::Abs(pt),dcaxy,dcaz);
1436                                                         else if(primary&&(pdgcode==11||pdgcode==13))    
1437                                                                 fDCAXYZforcleanAntiPionsMEPrimary->Fill(TMath::Abs(pt),dcaxy,dcaz);
1438                                                         else if(!primary&&(pdgcode==11||pdgcode==13))   
1439                                                                 fDCAXYZforcleanAntiPionsMESecondary->Fill(TMath::Abs(pt),dcaxy,dcaz);   
1440                                                         else
1441                                                                 fDCAXYZforcleanAntiPionsR->Fill(TMath::Abs(pt),dcaxy,dcaz);      
1442                                                 }                               
1443                                         }       //select on clean
1444                                         if(primary)
1445                                         {
1446                                                 if(pdgcode==-211)
1447                                                         fHistminsignalifAntiPionPPrimary->Fill(TMath::Abs(pt),itspidsignalforpions);
1448                                         }
1449                                         else 
1450                                         {
1451                                                 if(pdgcode==-211)
1452                                                         fHistminsignalifAntiPionPSecondary->Fill(TMath::Abs(pt),itspidsignalforpions,weight);
1453                                                 //cout<<pdgcode<<" "<<  uniqueID<<"  "<<kPDecay<<" "<<kPHadronic<<endl;
1454                                         }
1455                                         if(pdgcode==11||pdgcode==13)
1456                                         {
1457                                                 fHistminsignalifMuENegativeP->Fill(TMath::Abs(pt),itspidsignalforpions);        
1458                                                 if(!primary)
1459                                                 {
1460                                                         if(pdgcode==11)
1461                                                         {
1462                                                                 fHistStats->Fill(6);
1463                                                                 fElectronsource->Fill(TMath::Abs(pt),uniqueID);
1464                                                         }       
1465                                                         else if(pdgcode==13)    
1466                                                         {
1467                                                                 fHistStats->Fill(7);
1468                                                                 fMuonsource->Fill(TMath::Abs(pt),uniqueID);
1469                                                         }
1470                                                 }
1471                                                 else if(primary&&pdgcode==11)
1472                                                 {
1473                                                         fPrimaryElectronsMother->Fill(stack->Particle(particle2->GetFirstMother())->GetPdgCode());
1474                                                         fElectronsource->Fill(TMath::Abs(pt),0);
1475                                                 }       
1476                                                 else if(primary&&pdgcode==13)
1477                                                         fMuonsource->Fill(TMath::Abs(pt),0);
1478                                         }
1479                                         if(pdgcodefake==-211)
1480                                         {
1481                                                 if(primaryfake)
1482                                                         fHistminsignalifAntiPionPrimaryfake->Fill(TMath::Abs(pt),itspidsignalforpions);
1483                                                 else
1484                                                         fHistminsignalifAntiPionSecondaryfake->Fill(TMath::Abs(pt),itspidsignalforpions);       
1485                                         }       
1486                                 }                       
1487                                 if(itspidsignalforpions>-0.5&&itspidsignalforpions<0.2)//select on clean
1488                                 {
1489                                         fDCAXYZOpenforcleanAntiPions->Fill(TMath::Abs(pt),dcaxy,dcaz);
1490                                         if(fMC)
1491                                         {
1492                                                 if(primary&&pdgcode==-211)
1493                                                         fDCAXYZOpenforcleanAntiPionsMCPrimary->Fill(TMath::Abs(pt),dcaxy,dcaz);
1494                                                 else if(!primary&&pdgcode==-211&&uniqueID==kPDecay)      
1495                                                         fDCAXYZOpenforcleanAntiPionsWD->Fill(TMath::Abs(pt),dcaxy,dcaz);
1496                                                 else if(!primary&&pdgcode==-211&&uniqueID==kPHadronic)
1497                                                         fDCAXYZOpenforcleanAntiPionsHI->Fill(TMath::Abs(pt),dcaxy,dcaz);
1498                                                 else if(primary&&(pdgcode==11||pdgcode==13))    
1499                                                         fDCAXYZOpenforcleanAntiPionsMEPrimary->Fill(TMath::Abs(pt),dcaxy,dcaz);
1500                                                 else if(!primary&&(pdgcode==11||pdgcode==13))   
1501                                                         fDCAXYZOpenforcleanAntiPionsMESecondary->Fill(TMath::Abs(pt),dcaxy,dcaz);       
1502                                                 else
1503                                                         fDCAXYZOpenforcleanAntiPionsR->Fill(TMath::Abs(pt),dcaxy,dcaz);  
1504                                         }                               
1505                                 }       //sel                                                           
1506                         }       
1507                 }       
1508                 if(TMath::Abs(yforkaon)<=fYCut&&cutDCA) 
1509                 {
1510                         if(pt>0.0)
1511                         {
1512                                 fHistminsignalifKaonP->Fill(pt,itspidsignalforkaons);
1513                                 if((itspidsignalforkaons>-0.2)&&(itspidsignalforkaons<0.2))
1514                                 {
1515                                         fKaonNTPCClusters->Fill(pt,nTPCclusters);
1516                                         fKaonchi2->Fill(pt,chi2);
1517                                 }               
1518                                 if(primary)
1519                                 {
1520                                         if(pdgcode==321)
1521                                                 fHistminsignalifKaonPPrimary->Fill(pt,itspidsignalforkaons);
1522                                 }
1523                                 else 
1524                                 {
1525                                         if(pdgcode==321)
1526                                                 fHistminsignalifKaonPSecondary->Fill(pt,itspidsignalforkaons);
1527                                 }
1528                                 if(pdgcodefake==321)
1529                                 {
1530                                         if(primaryfake)
1531                                                 fHistminsignalifKaonPrimaryfake->Fill(pt,itspidsignalforkaons);
1532                                         else
1533                                                 fHistminsignalifKaonSecondaryfake->Fill(pt,itspidsignalforkaons);
1534                                 }
1535                                 
1536                                 
1537                         }       
1538                         else
1539                         {
1540                                 fHistminsignalifAntiKaonP->Fill(TMath::Abs(pt),itspidsignalforkaons);
1541                                 if((itspidsignalforkaons>-0.2)&&(itspidsignalforkaons<0.2))
1542                                 {
1543                                         fAntiKaonNTPCClusters->Fill(TMath::Abs(pt),nTPCclusters);
1544                                         fAntiKaonchi2->Fill(TMath::Abs(pt),chi2);
1545                                 }
1546                                 if(primary)
1547                                 {
1548                                         if(pdgcode==-321)
1549                                                 fHistminsignalifAntiKaonPPrimary->Fill(TMath::Abs(pt),itspidsignalforkaons);
1550                                 }
1551                                 else 
1552                                 {
1553                                         if(pdgcode==-321)
1554                                                 fHistminsignalifAntiKaonPSecondary->Fill(TMath::Abs(pt),itspidsignalforkaons);
1555                                 }       
1556                                 if(pdgcodefake==-321)
1557                                 {
1558                                         if(primaryfake)
1559                                                 fHistminsignalifAntiKaonPrimaryfake->Fill(TMath::Abs(pt),itspidsignalforkaons);
1560                                         else
1561                                                 fHistminsignalifAntiKaonSecondaryfake->Fill(TMath::Abs(pt),itspidsignalforkaons);
1562                                         
1563                                 }                               
1564                         }               
1565                 }       
1566                 if(TMath::Abs(yforproton)<=fYCut)
1567                 {       
1568                         Float_t weight=1.0;
1569                         if(fMC)
1570                                 weight=GetWeight(label,stack);  
1571                         if(pt>0.0)
1572                         {
1573                                 if(cutDCA)
1574                                 {
1575                                         if(fMC)
1576                                                 fHistminsignalifProtonP->Fill(pt,itspidsignalforprotons,weight);
1577                                         else    
1578                                                 fHistminsignalifProtonP->Fill(pt,itspidsignalforprotons);
1579                                         
1580                                         //if(((itspidsignalforprotons))>(TMath::Abs(pt)<0.45?-0.2:0.0))&&(itspidsignalforprotons))<0.2)//select on
1581                                         // clean
1582                                         if((itspidsignalforprotons>-0.2)&&(itspidsignalforprotons<0.5))
1583                                         {
1584                                                 fDCAXYZforcleanProtons->Fill(pt,dcaxy,dcaz);
1585                                                 fProtonNTPCClusters->Fill(pt,nTPCclusters);
1586                                                 fProtonchi2->Fill(pt,chi2);
1587                                                 if(fMC)
1588                                                 {       
1589                                                         if(primary&&pdgcode==2212)
1590                                                                 fDCAXYZforcleanProtonsMCPrimary->Fill(pt,dcaxy,dcaz);
1591                                                         else if(!primary&&!primaryfake&&(pdgcode==2212||pdgcodefake==2212)&&uniqueID==kPDecay)   
1592                                                                 fDCAXYZforcleanProtonsWD->Fill(pt,dcaxy,dcaz);
1593                                                         else if(!primary&&!primaryfake&&(pdgcode==2212||pdgcodefake==2212)&&uniqueID==kPHadronic)
1594                                                                 fDCAXYZforcleanProtonsHI->Fill(pt,dcaxy,dcaz);
1595                                                         else 
1596                                                                 fDCAXYZforcleanProtonsR->Fill(pt,dcaxy,dcaz);
1597                                                 }        
1598                                         }//select on clean
1599                                         if(primary)
1600                                         {
1601                                                 if(pdgcode==2212)
1602                                                         fHistminsignalifProtonPPrimary->Fill(pt,itspidsignalforprotons);
1603                                         }
1604                                         else  if(primaryfake)
1605                                         {
1606                                                 if(pdgcodefake==2212)
1607                                                         fHistminsignalifProtonPPrimaryfake->Fill(pt,itspidsignalforprotons);
1608                                         }
1609                                         else
1610                                         {
1611                                                 if(pdgcode==2212&&uniqueID==kPDecay)            
1612                                                         fHistminsignalifProtonPSecondaryWD->Fill(pt,itspidsignalforprotons,weight);
1613                                                 else if(pdgcode==2212&&uniqueID==kPHadronic)    
1614                                                         fHistminsignalifProtonPSecondaryHI->Fill(pt,itspidsignalforprotons);
1615                                                 else    if(pdgcodefake==2212&&uniqueID==kPDecay)
1616                                                         fHistminsignalifProtonPSecondaryWDfake->Fill(pt,itspidsignalforprotons,weight);
1617                                                 else if(pdgcodefake==2212&&uniqueID==kPHadronic)
1618                                                         fHistminsignalifProtonPSecondaryHIfake->Fill(pt,itspidsignalforprotons);
1619                                                 else     if(fMC)
1620                                                         fHistminsignalifProtonPSecondaryRest->Fill(pt,itspidsignalforprotons);
1621                                         }
1622                                 }
1623                                 
1624                                 if((itspidsignalforprotons>-0.2)&&(itspidsignalforprotons<0.5))
1625                                 {
1626                                         fDCAXYZOpenforcleanProtons->Fill(pt,dcaxy,dcaz);
1627                                         if(fMC)
1628                                         {       
1629                                                 if(primary&&pdgcode==2212)
1630                                                         fDCAXYZOpenforcleanProtonsMCPrimary->Fill(pt,dcaxy,dcaz);
1631                                                 else if(!primary&&!primaryfake&&(pdgcode==2212||pdgcodefake==2212)&&uniqueID==kPDecay)   
1632                                                         fDCAXYZOpenforcleanProtonsWD->Fill(pt,dcaxy,dcaz);
1633                                                 else if(!primary&&!primaryfake&&(pdgcode==2212||pdgcodefake==2212)&&uniqueID==kPHadronic)
1634                                                         fDCAXYZOpenforcleanProtonsHI->Fill(pt,dcaxy,dcaz);
1635                                                 else 
1636                                                         fDCAXYZOpenforcleanProtonsR->Fill(pt,dcaxy,dcaz);
1637                                         }        
1638                                 }//select on clean
1639                                         
1640                         }               
1641                         else
1642                         {
1643                                 if(cutDCA)
1644                                 {
1645                                         if(fMC)
1646                                                 fHistminsignalifAntiProtonP->Fill(TMath::Abs(pt),itspidsignalforprotons,weight);
1647                                         else    
1648                                                 fHistminsignalifAntiProtonP->Fill(TMath::Abs(pt),itspidsignalforprotons);
1649                                         if((itspidsignalforprotons>-0.2)&&(itspidsignalforprotons<0.5))
1650                                         {//select on clean
1651                                                 fDCAXYZforcleanAntiProtons->Fill(TMath::Abs(pt),dcaxy,dcaz);
1652                                                 
1653                                                 if(fMC)
1654                                                 {
1655                                                         if(primary&&pdgcode==-2212)
1656                                                                 fDCAXYZforcleanAntiProtonsMCPrimary->Fill(TMath::Abs(pt),dcaxy,dcaz);
1657                                                         else if(!primary&&!primaryfake&&(pdgcode==-2212||pdgcodefake==-2212)&&uniqueID==kPDecay)         
1658                                                                 fDCAXYZforcleanAntiProtonsWD->Fill(TMath::Abs(pt),dcaxy,dcaz);
1659                                                         else if(!primary&&!primaryfake&&(pdgcode==-2212||pdgcodefake==-2212)&&uniqueID==kPHadronic)
1660                                                                 fDCAXYZforcleanAntiProtonsHI->Fill(TMath::Abs(pt),dcaxy,dcaz);
1661                                                         else if(fMC)
1662                                                                 fDCAXYZforcleanAntiProtonsR->Fill(TMath::Abs(pt),dcaxy,dcaz);            
1663                                                 }  
1664                                         }//select on clean
1665                                         if(primary)
1666                                         {
1667                                                 if(pdgcode==-2212)
1668                                                         fHistminsignalifAntiProtonPPrimary->Fill(TMath::Abs(pt),itspidsignalforprotons);
1669                                         }
1670                                         else if(primaryfake)
1671                                         {
1672                                                 if(pdgcodefake==-2212)
1673                                                         fHistminsignalifAntiProtonPPrimaryfake->Fill(TMath::Abs(pt),itspidsignalforprotons);
1674                                         }
1675                                         else 
1676                                         {
1677                                                 if(pdgcode==-2212&&uniqueID==kPDecay)
1678                                                         fHistminsignalifAntiProtonPSecondaryWD->Fill(TMath::Abs(pt),itspidsignalforprotons,weight);
1679                                                 else if(pdgcode==-2212&&uniqueID==kPHadronic)   
1680                                                         fHistminsignalifAntiProtonPSecondaryHI->Fill(TMath::Abs(pt),itspidsignalforprotons);    
1681                                                 else if(pdgcodefake==-2212&&uniqueID==kPDecay)
1682                                                         fHistminsignalifAntiProtonPSecondaryWDfake->Fill(TMath::Abs(pt),itspidsignalforprotons,weight);
1683                                                 else if(pdgcodefake==-2212&&uniqueID==kPHadronic)       
1684                                                         fHistminsignalifAntiProtonPSecondaryHIfake->Fill(TMath::Abs(pt),itspidsignalforprotons);
1685                                                 else if(fMC)
1686                                                         fHistminsignalifAntiProtonPSecondaryRest->Fill(TMath::Abs(pt),itspidsignalforprotons);  
1687                                         }
1688                                 }
1689                                 if((itspidsignalforprotons>-0.2)&&(itspidsignalforprotons<0.5))
1690                                 {//select on clean
1691                                         fDCAXYZOpenforcleanAntiProtons->Fill(TMath::Abs(pt),dcaxy,dcaz);
1692                                         fAntiProtonNTPCClusters->Fill(TMath::Abs(pt),nTPCclusters);
1693                                         fAntiProtonchi2->Fill(TMath::Abs(pt),chi2);
1694                                         if(fMC)
1695                                         {
1696                                                 if(primary&&pdgcode==-2212)
1697                                                         fDCAXYZOpenforcleanAntiProtonsMCPrimary->Fill(TMath::Abs(pt),dcaxy,dcaz);
1698                                                 else if(!primary&&!primaryfake&&(pdgcode==-2212||pdgcodefake==-2212)&&uniqueID==kPDecay)         
1699                                                         fDCAXYZOpenforcleanAntiProtonsWD->Fill(TMath::Abs(pt),dcaxy,dcaz);
1700                                                 else if(!primary&&!primaryfake&&(pdgcode==-2212||pdgcodefake==-2212)&&uniqueID==kPHadronic)
1701                                                         fDCAXYZOpenforcleanAntiProtonsHI->Fill(TMath::Abs(pt),dcaxy,dcaz);
1702                                                 else if(fMC)
1703                                                         fDCAXYZOpenforcleanAntiProtonsR->Fill(TMath::Abs(pt),dcaxy,dcaz);                
1704                                         }
1705                                 }  
1706                         }               
1707                 }                       
1708         }       
1709         fHistStandartMul->Fill(refmultiplicity);
1710         fHistMytrackMul->Fill(mynumberoftracks);
1711         
1712                 
1713         // Post output data.
1714         Printf("Done..........\n");
1715         PostData(1,  flist);
1716         //Printf("....................Done!\n");
1717         //Printf("end of Exec");
1718 }      
1719
1720 //________________________________________________________________________
1721 void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::Terminate(Option_t *) 
1722 {
1723         //Terminate
1724         if(fCuts)
1725                 fCuts->Dump();
1726         Printf("YCut=%f",fYCut);
1727         Printf("nsigma=%f",fsigmacut);
1728         Printf("DCA cut xy sigma =%f  zsigma=%f", fnsigmaxy, fnsigmaz); 
1729         Printf("ChargeCut=%f ", fchargeCut);
1730         Printf("DCAxy parameters %f  %f %f",fdcaxypar[0],fdcaxypar[1],fdcaxypar[2]);
1731         Printf("DCAz parameters %f  %f %f %f",fdcazpar[0],fdcazpar[1],fdcazpar[2],fdcazpar[3]);
1732         if(fTPCPIDCUT)
1733                 fTPCPIDCUT->Dump();
1734         if(fMC)
1735                 Printf("MC On\n");
1736         if(fCorrectSDD)
1737                 Printf("correct SDD On\n");
1738         if(fCorrectSSD)
1739                 Printf("correct SSD On\n");
1740         if(fK0weight) 
1741         {
1742                 Printf("weigth for pions");
1743                 fK0weight->Print("All");
1744         }
1745         if(flambdaweight)
1746         {
1747                 Printf("weigth for protons");
1748                 flambdaweight->Print("All");
1749         }
1750         if(fAntilambdaweight)
1751         {
1752                 Printf("weigth for antiprotons");
1753                 fAntilambdaweight->Print("All");
1754         }
1755         Printf("Mul low %d Mul up %d",fLowMultiplicity, fUpMultiplicity);
1756         Printf("cent low %f cent up %f",fLowCentrality,fUpCentrality);
1757         if(fdovertexrescuts)
1758                 Printf("Veretx resolution cut");
1759         Printf("end of Terminate");
1760 }
1761 //___________________________________________________
1762 Float_t  AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::MyITSsignalusing4points(Double_t* tmpQESD) const
1763 {
1764         //dE signal in case of 4 points in ITS
1765         Int_t indexes[4]={-1,-1,-1,-1};
1766         TMath::Sort(4,tmpQESD,indexes,0);
1767         return  0.5*(tmpQESD[indexes[0]]+tmpQESD[indexes[1]]);  
1768 }
1769 //________________________________________________________
1770 Float_t  AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::MyITSsignalusing3points( Double_t* tmpQESD) const
1771 {
1772         //dE signal in case of 3 points in ITS
1773          Int_t indexes[3]={-1,-1,-1};
1774         TMath::Sort(3,tmpQESD,indexes,0);
1775         //cout<<tmpQESD[indexes[0]]<<" "<<tmpQESD[indexes[1]]<<" "<<tmpQESD[indexes[2]]<<endl;
1776         return  (tmpQESD[indexes[0]]+tmpQESD[indexes[1]]*0.5)/1.5;      
1777 }                        
1778 //____________________________________________________________________________________________________
1779   void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::SetFunctionParam( Double_t * const par)
1780   {
1781         fESDpid->GetITSResponse().SetBetheBlochParamsITSTPC(par);
1782   }
1783   //_____________________________________________________________________________________________________
1784   void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::CorrectSDD(Double_t *tmpQESD) const
1785   {
1786   //correction of SDD signal 
1787         if(tmpQESD[0]>0.0)
1788         {
1789                 tmpQESD[0]=tmpQESD[0]*3.34/5.43;
1790                 if(tmpQESD[0]<30.0)
1791                         tmpQESD[0]=-1.0;
1792         }       
1793         if(tmpQESD[1]>0.0)
1794         {
1795                 tmpQESD[1]=tmpQESD[1]*3.34/5.43;
1796                 if(tmpQESD[1]<30.0)
1797                         tmpQESD[1]=-1.0;
1798         }       
1799   }
1800     //_____________________________________________________________________________________________________
1801   void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::CorrectSSD(Double_t *tmpQESD) const
1802   {
1803          //Correction of SSD signal
1804         tmpQESD[2]=(85.0/77.0)*tmpQESD[2];
1805         tmpQESD[3]=(85.0/77.0)*tmpQESD[3];      
1806   }
1807   //_______________________________________________________________________________________________________
1808   Bool_t AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::SelectOnImpPar(AliESDtrack* t)  const
1809   {
1810         //
1811         // cut on transverse impact parameter
1812         //
1813         Float_t d0z0[2],covd0z0[3];
1814         t->GetImpactParameters(d0z0,covd0z0);
1815         Float_t sigma= fdcaxypar[0]+fdcaxypar[1]/TMath::Power(t->Pt(),fdcaxypar[2]);
1816         Float_t d0max = fnsigmaxy*sigma;
1817         //
1818         Float_t sigmaZ = fdcazpar[0]+fdcazpar[1]/TMath::Power(t->Pt(),fdcazpar[2]);
1819         if (t->Pt() > 1) 
1820                 sigmaZ = fdcazpar[3];
1821          Float_t d0maxZ = fnsigmaz*sigmaZ;
1822         //
1823         if(TMath::Abs(d0z0[0]) < d0max && TMath::Abs(d0z0[1]) < d0maxZ) //error 
1824                 return kTRUE;
1825         return kFALSE;
1826 }
1827 //__________________________________________________________________________________________________
1828     Float_t AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::GetWeight(Int_t t,AliStack* const stack) const
1829     {
1830     
1831         //Get weigth for pions protons and antiprotons
1832         if(stack->IsPhysicalPrimary(TMath::Abs(t)))
1833                 return 1.0;     
1834         TParticle *particleMC = stack->Particle(TMath::Abs(t));
1835         Int_t pdgcodeMC = particleMC->GetPdgCode();
1836         if(TMath::Abs(pdgcodeMC)!=211&&TMath::Abs(pdgcodeMC)!=2212)
1837                 return 1.0;
1838         if(!stack->IsPhysicalPrimary(TMath::Abs(particleMC->GetFirstMother())))
1839                 return 1.0;     
1840         TParticle *particleMother=stack->Particle(TMath::Abs(particleMC->GetFirstMother()));
1841         Int_t pdgcodeMother = particleMother->GetPdgCode();
1842         Float_t motherpt=particleMother-> Pt();
1843         if(TMath::Abs(pdgcodeMC)==211&&pdgcodeMother==310&&fK0weight)
1844                 return fK0weight->Eval(motherpt);
1845         else if (pdgcodeMother==3122&&flambdaweight)
1846                 return flambdaweight->Eval(motherpt);
1847         else if(pdgcodeMother==-3122&&fAntilambdaweight)
1848                 return fAntilambdaweight->Eval(motherpt);       
1849         return 1.0;     
1850     }
1851   //________________________________________________________________________________________________  
1852 void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::SetDCA2010()
1853 {
1854         //setting the DCA for 2010
1855         fdcaxypar[0]=0.0026;
1856         fdcaxypar[1]=0.005;
1857         fdcaxypar[2]=1.01;
1858         
1859         fdcazpar[0]=1000000.0;
1860         fdcazpar[1]=0.0;
1861         fdcazpar[2]=1.0;
1862         fdcazpar[3]=1000000.0;
1863 }
1864 //______________________________________________________________________________________________________________
1865 void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::SetCentralityCut(Float_t low, Float_t up)
1866 {
1867         //centrality cut setter
1868         if((up>low)&&(!(low<0.0))&&(!(up>100.0)))
1869         {
1870                 SetHImode();
1871                 fLowCentrality=low;
1872                 fUpCentrality=up;
1873         }
1874 }
1875 //_____________________________________________________________________________________________________________
1876 void AliAnalysisChargedHadronSpectraITSTruncatedMeanTask::SetMultiplicityCut(Int_t low, Int_t up)
1877 {
1878         //mulyiplicty cut setter
1879         if((!(up>low))&&low>=0&&up>=0)
1880         { 
1881                 fLowMultiplicity=-1;
1882                 fUpMultiplicity=-1;
1883         }
1884         else
1885         {
1886                 fLowMultiplicity=low;
1887                 fUpMultiplicity=up;
1888         }       
1889 }