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